Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Eclipse features #195

Closed
wants to merge 93 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
2524c1b
Token extensions Indexing support
niks3089 Feb 20, 2024
0b5a545
fix: register token extensions parser with program transform. add int…
kespinola Mar 29, 2024
5663708
feat: add getTokenAccount rpc method and implement logic
Nagaprasadvr Nov 7, 2024
d1855e0
WIP : token extensions
Nagaprasadvr Nov 7, 2024
db11fd6
chore: cleanup
Nagaprasadvr Nov 11, 2024
c22c4c2
fix: token extensions integration tests
Nagaprasadvr Nov 11, 2024
08a7ba1
change is_non_fungible condition checks
Nagaprasadvr Nov 12, 2024
5beadaa
add tests for token_accounts indexing
Nagaprasadvr Nov 12, 2024
2b3a482
chore: cleanup
Nagaprasadvr Nov 12, 2024
76cd8a7
chore: cleanup
Nagaprasadvr Nov 12, 2024
e1e4243
WIP : getNFTEditions
Nagaprasadvr Nov 14, 2024
5c5e3a2
fix : fetch logic
Nagaprasadvr Nov 14, 2024
12faa87
WIP : getNFTEditions
Nagaprasadvr Nov 14, 2024
ab179cd
WIP : showFungible
Nagaprasadvr Nov 14, 2024
2de5bc0
chore: cleanup
Nagaprasadvr Nov 15, 2024
bf501bd
fix mint address insertion to asset_v1_account_attachments table
Nagaprasadvr Nov 15, 2024
fa44e23
chore: cleanup
Nagaprasadvr Nov 15, 2024
9d035b0
optional display collection metadata in rpc responce
AhzamAkhtar Nov 15, 2024
2ac226a
WIP : handle token inscriptions
Nagaprasadvr Nov 18, 2024
634c52c
add token inscriptions to asset account attachments
Nagaprasadvr Nov 19, 2024
53c1cb3
chore: cleanup
Nagaprasadvr Nov 19, 2024
6d708a6
resolve comments
Nagaprasadvr Nov 20, 2024
6aa175d
fix tests and snapshots
Nagaprasadvr Nov 20, 2024
bb2f67e
add more scenarios
Nagaprasadvr Nov 20, 2024
45cefbc
add integration tests for showFungible
Nagaprasadvr Nov 21, 2024
4dd0fc7
resolve comments
Nagaprasadvr Nov 21, 2024
f22f980
add integration tests and cleanup
Nagaprasadvr Nov 22, 2024
af4a4a7
test snapshot added
AhzamAkhtar Nov 23, 2024
18c0e3b
grouping query improved
AhzamAkhtar Nov 23, 2024
98c4177
removed duplicacy and extra mapping to inject None
AhzamAkhtar Nov 24, 2024
9ca68a1
add remaining extensions
Nagaprasadvr Nov 27, 2024
47c4e78
resolve comments
Nagaprasadvr Nov 27, 2024
fc78fa4
resolve commenst and add token_accounts for indexing in test fixtures
Nagaprasadvr Nov 28, 2024
8d592c7
resolve comments and fix fixtures
Nagaprasadvr Nov 28, 2024
4816e51
resolve comments and fix fixtures
Nagaprasadvr Nov 28, 2024
b007795
duplicate results for same assetIds in getAssets bug fixed
AhzamAkhtar Nov 29, 2024
e242316
improvments added
AhzamAkhtar Dec 3, 2024
dc2849f
unnecessary generic removed
AhzamAkhtar Dec 4, 2024
e547cd5
chore : add checks for getTokenAccounts and cover more scenarios for …
Nagaprasadvr Dec 6, 2024
2c483c5
chore : resolve comments
Nagaprasadvr Dec 9, 2024
7fc3e51
removed unnecessary operations if asset is empty
AhzamAkhtar Dec 9, 2024
81f004b
Merge branch 'das-39-add-gettokenaccounts-support-to-das-api-main' of…
Nagaprasadvr Dec 17, 2024
4d823bd
merge token-accounts branch
Nagaprasadvr Dec 17, 2024
83f42cc
Merge branch 'das-50-add-getnfteditions-rpc-method-to-das' of github.…
Nagaprasadvr Dec 17, 2024
de7e432
Merge branch 'das-46-show-fungibles-rpc-option' of github.com:rpcpool…
Nagaprasadvr Dec 17, 2024
42d2955
Merge branch 'das-44-show-collection-metadata-request-parameters' of …
Nagaprasadvr Dec 17, 2024
1100d4a
merge show_collection_metadata_option pr
Nagaprasadvr Dec 17, 2024
79b7e79
Merge branch 'das-index-token-inscriptions' of github.com:rpcpool/dig…
Nagaprasadvr Dec 17, 2024
3f166a4
merge token_inscriptions pr
Nagaprasadvr Dec 17, 2024
6df1c66
merge show_collection_metadata after test improvments added
AhzamAkhtar Dec 17, 2024
48f891a
Enable indexing Merkle trees on other SVMs (#211)
danenbm Oct 30, 2024
bcad3ad
Search asset token type filter added
AhzamAkhtar Nov 15, 2024
2187046
Token type class filter improved
AhzamAkhtar Nov 16, 2024
8966891
removed specification_asset_class from SearchAssetQuery cause we now …
AhzamAkhtar Nov 18, 2024
cdd7f6b
test file added for token_type_filter
AhzamAkhtar Nov 22, 2024
4af136a
tests snapshots added
AhzamAkhtar Nov 23, 2024
126f76e
Merge branch 'das-38-rebase-stale-te-branch' of github.com:rpcpool/di…
Nagaprasadvr Dec 17, 2024
e7ad2c9
fix tests and added snapshot for search_assets with token_type fungible
AhzamAkhtar Dec 17, 2024
b14c856
fix and merge token extensions and fungibles
Nagaprasadvr Dec 18, 2024
f4def43
Merge branch 'das-58-check-coverage-for-all-token-extensions' of gith…
Nagaprasadvr Dec 20, 2024
50243af
no pubkey validation for group_key bug fixed
AhzamAkhtar Dec 2, 2024
c4b42e0
fix and merge
Nagaprasadvr Dec 20, 2024
b23836e
search_assets rpc call skipping fungible_tokens bug resolved
AhzamAkhtar Dec 20, 2024
36888fd
Merge branch 'das-60-in-get-assets-remove-duplicate-results-for-same-…
Nagaprasadvr Dec 23, 2024
4c04118
fix and merge
Nagaprasadvr Dec 23, 2024
88c175e
Merge branch 'das-51-search-asset-token-type-filter' into eclipse-build
AhzamAkhtar Dec 23, 2024
eedcafe
not able to search for fungible asset for owner_address in search_ass…
AhzamAkhtar Dec 23, 2024
b2b397a
fixed search asset compatibility issues
AhzamAkhtar Dec 23, 2024
5c65a16
Merge branch 'das-71-avoid-unnecessary-operations-if-asset-is-empty' …
Nagaprasadvr Dec 23, 2024
09c8d01
Merge branch 'eclipse-build' of github.com:rpcpool/digital-asset-rpc-…
Nagaprasadvr Dec 23, 2024
ec8e3c1
fix and merge
Nagaprasadvr Dec 23, 2024
4a7d300
owner_type and token_typenot be used together feature added and test …
AhzamAkhtar Dec 23, 2024
7222a2f
Merge branch 'das-51-search-asset-token-type-filter' into eclipse-build
AhzamAkhtar Dec 23, 2024
4549aa1
fungible assets not showing when token_type is set to all bug fixed
AhzamAkhtar Dec 23, 2024
6ddd5c9
search_asset skipping fungible when token_type is set to ALL bug fixed
AhzamAkhtar Dec 23, 2024
82b21ed
Merge branch 'triton-build' into eclipse-build
kespinola Dec 23, 2024
00b4dec
fix tests
Nagaprasadvr Dec 24, 2024
e29bd42
cleanup
Nagaprasadvr Dec 24, 2024
5b19b6c
show_zero_balance_filter_option feature branch merged
AhzamAkhtar Dec 24, 2024
1a4e5f7
GetAssetByOwner skipping fungible-assets when using show_fungible opt…
AhzamAkhtar Dec 26, 2024
a213893
Added coverage to show token_info in other rpc calls (#200)
AhzamAkhtar Dec 26, 2024
497ef03
pull indexing fungibles and token extensions branch
Nagaprasadvr Dec 27, 2024
6625889
fix tests
Nagaprasadvr Dec 27, 2024
e58d0d9
Merge branch 'das-46-show-fungibles-rpc-option' of github.com:rpcpool…
Nagaprasadvr Dec 27, 2024
325ca23
fix and merge
Nagaprasadvr Dec 27, 2024
abb275f
Merge branch 'triton-build' into eclipse-build
kespinola Dec 30, 2024
1427645
remove showing token_acc data inside asset data
Nagaprasadvr Dec 30, 2024
c612f8f
upgrade rust to 1.79
kespinola Dec 30, 2024
7301267
Address clippy
kespinola Dec 30, 2024
0313303
add token-inscription program id to example config
Nagaprasadvr Dec 31, 2024
f2262c4
Merge branch 'das-index-token-inscriptions' of github.com:rpcpool/dig…
Nagaprasadvr Dec 31, 2024
4afc6cd
update rust version to 1.83 for building tests (#204)
Nagaprasadvr Dec 31, 2024
0b7e00a
fix docker versions to 1.83 (#205)
Nagaprasadvr Jan 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Api.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
FROM das-api/builder AS files
FROM rust:1.75-slim-bullseye
FROM rust:1.83-slim-bullseye
ARG APP=/usr/src/app
RUN apt update \
&& apt install -y curl ca-certificates tzdata \
Expand Down
5 changes: 2 additions & 3 deletions Builder.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
FROM rust:1.75-bullseye AS builder
FROM rust:1.83-bullseye AS builder
RUN apt-get update -y && \
apt-get install -y build-essential make git

RUN mkdir /rust
RUN mkdir /rust/bins
COPY Cargo.toml /rust
COPY core /rust/core
COPY backfill /rust/backfill
COPY das_api /rust/das_api
COPY digital_asset_types /rust/digital_asset_types
COPY integration_tests /rust/integration_tests
Expand All @@ -21,6 +20,6 @@ WORKDIR /rust
RUN --mount=type=cache,target=/rust/target,id=das-rust \
cargo build --release --bins && cp `find /rust/target/release -maxdepth 1 -type f | sed 's/^\.\///' | grep -v "\." ` /rust/bins

FROM rust:1.75-slim-bullseye as final
FROM rust:1.83-slim-bullseye as final
COPY --from=builder /rust/bins /das/
CMD echo "Built the DAS API bins!"
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Ingest.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
FROM das-api/builder AS files
FROM rust:1.75-slim-bullseye
FROM rust:1.83-slim-bullseye
ARG APP=/usr/src/app
RUN apt update \
&& apt install -y curl ca-certificates tzdata \
Expand Down
2 changes: 1 addition & 1 deletion Load.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
FROM das-api/builder AS files
FROM rust:1.75-slim-bullseye
FROM rust:1.83-slim-bullseye
ARG APP=/usr/src/app
RUN apt update \
&& apt install -y curl ca-certificates tzdata \
Expand Down
2 changes: 1 addition & 1 deletion Migrator.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM das-api/builder AS files

FROM rust:1.75-bullseye
FROM rust:1.83-bullseye
COPY init.sql /init.sql
ENV INIT_FILE_PATH=/init.sql
COPY --from=files /das/migration /bins/migration
Expand Down
2 changes: 1 addition & 1 deletion Proxy.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM rust:1.75-bullseye AS builder
FROM rust:1.83-bullseye AS builder
RUN cargo install wasm-pack

RUN mkdir /rust
Expand Down
2 changes: 1 addition & 1 deletion blockbuster/src/instruction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pub struct InstructionBundle<'a> {
pub slot: u64,
}

impl<'a> Default for InstructionBundle<'a> {
impl Default for InstructionBundle<'_> {
fn default() -> Self {
InstructionBundle {
txn_id: "",
Expand Down
3 changes: 3 additions & 0 deletions blockbuster/src/programs/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ use bubblegum::BubblegumInstruction;
use mpl_core_program::MplCoreAccountState;
use token_account::TokenProgramAccount;
use token_extensions::TokenExtensionsProgramAccount;
use token_inscriptions::TokenInscriptionAccount;
use token_metadata::TokenMetadataAccountState;

pub mod bubblegum;
pub mod mpl_core_program;
pub mod token_account;
pub mod token_extensions;
pub mod token_inscriptions;
pub mod token_metadata;

// Note: `ProgramParseResult` used to contain the following variants that have been deprecated and
Expand All @@ -30,5 +32,6 @@ pub enum ProgramParseResult<'a> {
TokenMetadata(&'a TokenMetadataAccountState),
TokenProgramAccount(&'a TokenProgramAccount),
TokenExtensionsProgramAccount(&'a TokenExtensionsProgramAccount),
TokenInscriptionAccount(&'a TokenInscriptionAccount),
Unknown,
}
19 changes: 1 addition & 18 deletions blockbuster/src/programs/token_extensions/extension.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ use spl_token_2022::extension::{
default_account_state::DefaultAccountState,
group_member_pointer::GroupMemberPointer,
group_pointer::GroupPointer,
immutable_owner::ImmutableOwner,
interest_bearing_mint::{BasisPoints, InterestBearingConfig},
memo_transfer::MemoTransfer,
metadata_pointer::MetadataPointer,
Expand Down Expand Up @@ -77,9 +76,6 @@ pub struct ShadowDefaultAccountState {
pub state: PodAccountState,
}

#[derive(Clone, Copy, Debug, Default, PartialEq, Zeroable, Serialize, Deserialize)]
pub struct ShadowImmutableOwner;

#[derive(Clone, Copy, Debug, Default, PartialEq, Zeroable, Serialize, Deserialize)]
pub struct ShadowInterestBearingConfig {
pub rate_authority: OptionalNonZeroPubkey,
Expand All @@ -97,20 +93,16 @@ pub struct ShadowMemoTransfer {

#[derive(Clone, Copy, Debug, Default, PartialEq, Zeroable, Serialize, Deserialize)]
pub struct ShadowMetadataPointer {
pub authority: OptionalNonZeroPubkey,
pub metadata_address: OptionalNonZeroPubkey,
}

#[derive(Clone, Copy, Debug, Default, PartialEq, Zeroable, Serialize, Deserialize)]
pub struct ShadowGroupMemberPointer {
pub authority: OptionalNonZeroPubkey,
pub member_address: OptionalNonZeroPubkey,
}

#[derive(Clone, Copy, Debug, Default, PartialEq, Zeroable, Serialize, Deserialize)]
pub struct ShadowGroupPointer {
/// Authority that can set the group address
pub authority: OptionalNonZeroPubkey,
/// Account address that holds the group
pub group_address: OptionalNonZeroPubkey,
}
Expand Down Expand Up @@ -233,7 +225,7 @@ impl Serialize for ShadowAeCiphertext {
}
}

impl<'de> Visitor<'de> for ShadowElGamalCiphertextVisitor {
impl Visitor<'_> for ShadowElGamalCiphertextVisitor {
type Value = ShadowElGamalCiphertext;

fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
Expand Down Expand Up @@ -348,12 +340,6 @@ impl From<DefaultAccountState> for ShadowDefaultAccountState {
}
}

impl From<ImmutableOwner> for ShadowImmutableOwner {
fn from(_: ImmutableOwner) -> Self {
ShadowImmutableOwner
}
}

impl From<ConfidentialTransferFeeAmount> for ShadowConfidentialTransferFeeAmount {
fn from(original: ConfidentialTransferFeeAmount) -> Self {
ShadowConfidentialTransferFeeAmount {
Expand Down Expand Up @@ -381,7 +367,6 @@ impl From<MemoTransfer> for ShadowMemoTransfer {
impl From<MetadataPointer> for ShadowMetadataPointer {
fn from(original: MetadataPointer) -> Self {
ShadowMetadataPointer {
authority: original.authority,
metadata_address: original.metadata_address,
}
}
Expand All @@ -390,7 +375,6 @@ impl From<MetadataPointer> for ShadowMetadataPointer {
impl From<GroupPointer> for ShadowGroupPointer {
fn from(original: GroupPointer) -> Self {
ShadowGroupPointer {
authority: original.authority,
group_address: original.group_address,
}
}
Expand Down Expand Up @@ -420,7 +404,6 @@ impl From<TokenGroupMember> for ShadowTokenGroupMember {
impl From<GroupMemberPointer> for ShadowGroupMemberPointer {
fn from(original: GroupMemberPointer) -> Self {
ShadowGroupMemberPointer {
authority: original.authority,
member_address: original.member_address,
}
}
Expand Down
70 changes: 63 additions & 7 deletions blockbuster/src/programs/token_extensions/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use crate::{
program_handler::{ParseResult, ProgramParser},
programs::ProgramParseResult,
};

use serde::{Deserialize, Serialize};
use solana_sdk::{pubkey::Pubkey, pubkeys};
use spl_token_2022::{
Expand All @@ -14,10 +15,12 @@ use spl_token_2022::{
default_account_state::DefaultAccountState,
group_member_pointer::GroupMemberPointer,
group_pointer::GroupPointer,
immutable_owner::ImmutableOwner,
interest_bearing_mint::InterestBearingConfig,
memo_transfer::MemoTransfer,
metadata_pointer::MetadataPointer,
mint_close_authority::MintCloseAuthority,
non_transferable::{NonTransferable, NonTransferableAccount},
permanent_delegate::PermanentDelegate,
transfer_fee::{TransferFeeAmount, TransferFeeConfig},
transfer_hook::TransferHook,
Expand All @@ -41,7 +44,6 @@ use self::extension::{
pub struct MintAccountExtensions {
pub default_account_state: Option<ShadowDefaultAccountState>,
pub confidential_transfer_mint: Option<ShadowConfidentialTransferMint>,
pub confidential_transfer_account: Option<ShadowConfidentialTransferAccount>,
pub confidential_transfer_fee_config: Option<ShadowConfidentialTransferFeeConfig>,
pub interest_bearing_config: Option<ShadowInterestBearingConfig>,
pub transfer_fee_config: Option<ShadowTransferFeeConfig>,
Expand All @@ -54,6 +56,29 @@ pub struct MintAccountExtensions {
pub token_group: Option<ShadowTokenGroup>,
pub group_member_pointer: Option<ShadowGroupMemberPointer>,
pub token_group_member: Option<ShadowTokenGroupMember>,
// TODO : add this when spl-token-2022 is updated
// pub scaled_ui_amount: Option<ShadowScaledUiAmount>,
pub non_transferable: Option<bool>,
pub immutable_owner: Option<bool>,
}

impl MintAccountExtensions {
pub fn is_some(&self) -> bool {
self.default_account_state.is_some()
|| self.confidential_transfer_mint.is_some()
|| self.confidential_transfer_fee_config.is_some()
|| self.interest_bearing_config.is_some()
|| self.transfer_fee_config.is_some()
|| self.mint_close_authority.is_some()
|| self.permanent_delegate.is_some()
|| self.metadata_pointer.is_some()
|| self.metadata.is_some()
|| self.transfer_hook.is_some()
|| self.group_pointer.is_some()
|| self.token_group.is_some()
|| self.group_member_pointer.is_some()
|| self.token_group_member.is_some()
}
}

#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
Expand All @@ -62,6 +87,17 @@ pub struct TokenAccountExtensions {
pub cpi_guard: Option<ShadowCpiGuard>,
pub memo_transfer: Option<ShadowMemoTransfer>,
pub transfer_fee_amount: Option<ShadowTransferFeeAmount>,
pub immutable_owner: Option<bool>,
pub non_transferable_account: Option<bool>,
}

impl TokenAccountExtensions {
pub fn is_some(&self) -> bool {
self.confidential_transfer.is_some()
|| self.cpi_guard.is_some()
|| self.memo_transfer.is_some()
|| self.transfer_fee_amount.is_some()
}
}
#[derive(Debug, PartialEq)]
pub struct TokenAccount {
Expand Down Expand Up @@ -134,6 +170,16 @@ impl ProgramParser for Token2022AccountParser {
let cpi_guard = account.get_extension::<CpiGuard>().ok().copied();
let memo_transfer = account.get_extension::<MemoTransfer>().ok().copied();
let transfer_fee_amount = account.get_extension::<TransferFeeAmount>().ok().copied();
let immutable_owner = account
.get_extension::<ImmutableOwner>()
.ok()
.copied()
.map(|_| true);
let non_transferable_account = account
.get_extension::<NonTransferableAccount>()
.ok()
.copied()
.map(|_| true);

// Create a structured account with extensions
let structured_account = TokenAccount {
Expand All @@ -144,6 +190,8 @@ impl ProgramParser for Token2022AccountParser {
cpi_guard: cpi_guard.map(ShadowCpiGuard::from),
memo_transfer: memo_transfer.map(ShadowMemoTransfer::from),
transfer_fee_amount: transfer_fee_amount.map(ShadowTransferFeeAmount::from),
immutable_owner,
non_transferable_account,
},
};

Expand All @@ -153,10 +201,7 @@ impl ProgramParser for Token2022AccountParser {
.get_extension::<ConfidentialTransferMint>()
.ok()
.copied();
let confidential_transfer_account = mint
.get_extension::<ConfidentialTransferAccount>()
.ok()
.copied();

let confidential_transfer_fee_config = mint
.get_extension::<ConfidentialTransferFeeConfig>()
.ok()
Expand All @@ -174,14 +219,23 @@ impl ProgramParser for Token2022AccountParser {
let group_member_pointer = mint.get_extension::<GroupMemberPointer>().ok().copied();
let token_group_member = mint.get_extension::<TokenGroupMember>().ok().copied();
let transfer_hook = mint.get_extension::<TransferHook>().ok().copied();
let non_transferable = mint
.get_extension::<NonTransferable>()
.ok()
.copied()
.map(|_| true);

let immutable_owner = mint
.get_extension::<ImmutableOwner>()
.ok()
.copied()
.map(|_| true);

let structured_mint = MintAccount {
account: mint.base,
extensions: MintAccountExtensions {
confidential_transfer_mint: confidential_transfer_mint
.map(ShadowConfidentialTransferMint::from),
confidential_transfer_account: confidential_transfer_account
.map(ShadowConfidentialTransferAccount::from),
confidential_transfer_fee_config: confidential_transfer_fee_config
.map(ShadowConfidentialTransferFeeConfig::from),
default_account_state: default_account_state
Expand All @@ -198,6 +252,8 @@ impl ProgramParser for Token2022AccountParser {
token_group: token_group.map(ShadowTokenGroup::from),
group_member_pointer: group_member_pointer.map(ShadowGroupMemberPointer::from),
token_group_member: token_group_member.map(ShadowTokenGroupMember::from),
non_transferable,
immutable_owner,
},
};
result = TokenExtensionsProgramAccount::MintAccount(structured_mint);
Expand Down
Loading