Skip to content
This repository was archived by the owner on Jan 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 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 account-decoder/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ solana-config-program = { path = "../programs/config", version = "1.3.6" }
solana-sdk = { path = "../sdk", version = "1.3.6" }
solana-stake-program = { path = "../programs/stake", version = "1.3.6" }
solana-vote-program = { path = "../programs/vote", version = "1.3.6" }
spl-token-v2-0 = { package = "spl-token", version = "2.0.1", features = ["skip-no-mangle"] }
spl-token-v2-0 = { package = "spl-token", version = "2.0.2", features = ["skip-no-mangle"] }
thiserror = "1.0"

[package.metadata.docs.rs]
Expand Down
18 changes: 9 additions & 9 deletions account-decoder/src/parse_token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use spl_token_v2_0::{
solana_sdk::pubkey::Pubkey as SplTokenPubkey,
state::{Account, AccountState, Mint, Multisig},
};
use std::{mem::size_of, str::FromStr};
use std::str::FromStr;

// A helper function to convert spl_token_v2_0::id() as spl_sdk::pubkey::Pubkey to
// solana_sdk::pubkey::Pubkey
Expand All @@ -27,7 +27,7 @@ pub fn parse_token(
data: &[u8],
mint_decimals: Option<u8>,
) -> Result<TokenAccountType, ParseAccountError> {
if data.len() == size_of::<Account>() {
if data.len() == Account::get_packed_len() {
let account = Account::unpack(data)
.map_err(|_| ParseAccountError::AccountNotParsable(ParsableAccount::SplToken))?;
let decimals = mint_decimals.ok_or_else(|| {
Expand Down Expand Up @@ -62,7 +62,7 @@ pub fn parse_token(
COption::None => None,
},
}))
} else if data.len() == size_of::<Mint>() {
} else if data.len() == Mint::get_packed_len() {
let mint = Mint::unpack(data)
.map_err(|_| ParseAccountError::AccountNotParsable(ParsableAccount::SplToken))?;
Ok(TokenAccountType::Mint(UiMint {
Expand All @@ -78,7 +78,7 @@ pub fn parse_token(
COption::None => None,
},
}))
} else if data.len() == size_of::<Multisig>() {
} else if data.len() == Multisig::get_packed_len() {
let multisig = Multisig::unpack(data)
.map_err(|_| ParseAccountError::AccountNotParsable(ParsableAccount::SplToken))?;
Ok(TokenAccountType::Multisig(UiMultisig {
Expand Down Expand Up @@ -186,7 +186,7 @@ pub struct UiMultisig {
}

pub fn get_token_account_mint(data: &[u8]) -> Option<Pubkey> {
if data.len() == size_of::<Account>() {
if data.len() == Account::get_packed_len() {
Some(Pubkey::new(&data[0..32]))
} else {
None
Expand All @@ -201,7 +201,7 @@ mod test {
fn test_parse_token() {
let mint_pubkey = SplTokenPubkey::new(&[2; 32]);
let owner_pubkey = SplTokenPubkey::new(&[3; 32]);
let mut account_data = [0; size_of::<Account>()];
let mut account_data = vec![0; Account::get_packed_len()];
Account::unpack_unchecked_mut(&mut account_data, &mut |account: &mut Account| {
account.mint = mint_pubkey;
account.owner = owner_pubkey;
Expand Down Expand Up @@ -233,7 +233,7 @@ mod test {
}),
);

let mut mint_data = [0; size_of::<Mint>()];
let mut mint_data = vec![0; Mint::get_packed_len()];
Mint::unpack_unchecked_mut(&mut mint_data, &mut |mint: &mut Mint| {
mint.mint_authority = COption::Some(owner_pubkey);
mint.supply = 42;
Expand All @@ -258,7 +258,7 @@ mod test {
let signer1 = SplTokenPubkey::new(&[1; 32]);
let signer2 = SplTokenPubkey::new(&[2; 32]);
let signer3 = SplTokenPubkey::new(&[3; 32]);
let mut multisig_data = [0; size_of::<Multisig>()];
let mut multisig_data = vec![0; Multisig::get_packed_len()];
let mut signers = [SplTokenPubkey::default(); 11];
signers[0] = signer1;
signers[1] = signer2;
Expand Down Expand Up @@ -292,7 +292,7 @@ mod test {
#[test]
fn test_get_token_account_mint() {
let mint_pubkey = SplTokenPubkey::new(&[2; 32]);
let mut account_data = [0; size_of::<Account>()];
let mut account_data = vec![0; Account::get_packed_len()];
Account::unpack_unchecked_mut(&mut account_data, &mut |account: &mut Account| {
account.mint = mint_pubkey;
Ok(())
Expand Down
2 changes: 1 addition & 1 deletion core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ solana-transaction-status = { path = "../transaction-status", version = "1.3.6"
solana-version = { path = "../version", version = "1.3.6" }
solana-vote-program = { path = "../programs/vote", version = "1.3.6" }
solana-vote-signer = { path = "../vote-signer", version = "1.3.6" }
spl-token-v2-0 = { package = "spl-token", version = "2.0.1", features = ["skip-no-mangle"] }
spl-token-v2-0 = { package = "spl-token", version = "2.0.2", features = ["skip-no-mangle"] }
tempfile = "3.1.0"
thiserror = "1.0"
tokio_01 = { version = "0.1", package = "tokio" }
Expand Down
25 changes: 12 additions & 13 deletions core/src/rpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ use spl_token_v2_0::{
use std::{
cmp::{max, min},
collections::{HashMap, HashSet},
mem::size_of,
net::SocketAddr,
str::FromStr,
sync::{
Expand Down Expand Up @@ -1085,7 +1084,7 @@ impl JsonRpcRequestProcessor {
encoding: None,
}),
// Filter on Token Account state
RpcFilterType::DataSize(size_of::<TokenAccount>() as u64),
RpcFilterType::DataSize(TokenAccount::get_packed_len() as u64),
];
let mut token_balances: Vec<RpcTokenAccountBalance> =
get_filtered_program_accounts(&bank, &mint_owner, filters)
Expand Down Expand Up @@ -1133,7 +1132,7 @@ impl JsonRpcRequestProcessor {
encoding: None,
}),
// Filter on Token Account state
RpcFilterType::DataSize(size_of::<TokenAccount>() as u64),
RpcFilterType::DataSize(TokenAccount::get_packed_len() as u64),
];
if let Some(mint) = mint {
// Optional filter on Mint address
Expand Down Expand Up @@ -1192,7 +1191,7 @@ impl JsonRpcRequestProcessor {
encoding: None,
}),
// Filter on Token Account state
RpcFilterType::DataSize(size_of::<TokenAccount>() as u64),
RpcFilterType::DataSize(TokenAccount::get_packed_len() as u64),
];
if let Some(mint) = mint {
// Optional filter on Mint address
Expand Down Expand Up @@ -4748,7 +4747,7 @@ pub mod tests {
fn test_token_rpcs() {
let RpcHandler { io, meta, bank, .. } = start_rpc_handler_with_tx(&Pubkey::new_rand());

let mut account_data = [0; size_of::<TokenAccount>()];
let mut account_data = vec![0; TokenAccount::get_packed_len()];
let mint = SplTokenPubkey::new(&[2; 32]);
let owner = SplTokenPubkey::new(&[3; 32]);
let delegate = SplTokenPubkey::new(&[4; 32]);
Expand Down Expand Up @@ -4776,7 +4775,7 @@ pub mod tests {
bank.store_account(&token_account_pubkey, &token_account);

// Add the mint
let mut mint_data = [0; size_of::<Mint>()];
let mut mint_data = vec![0; Mint::get_packed_len()];
Mint::unpack_unchecked_mut(&mut mint_data, &mut |mint: &mut Mint| {
*mint = Mint {
mint_authority: COption::Some(owner),
Expand Down Expand Up @@ -4850,7 +4849,7 @@ pub mod tests {
bank.store_account(&other_token_account_pubkey, &token_account);

// Add another token account with the same owner and delegate but different mint
let mut account_data = [0; size_of::<TokenAccount>()];
let mut account_data = vec![0; TokenAccount::get_packed_len()];
let new_mint = SplTokenPubkey::new(&[5; 32]);
TokenAccount::unpack_unchecked_mut(&mut account_data, &mut |account: &mut TokenAccount| {
*account = TokenAccount {
Expand Down Expand Up @@ -5059,7 +5058,7 @@ pub mod tests {
assert!(accounts.is_empty());

// Add new_mint, and another token account on new_mint with different balance
let mut mint_data = [0; size_of::<Mint>()];
let mut mint_data = vec![0; Mint::get_packed_len()];
Mint::unpack_unchecked_mut(&mut mint_data, &mut |mint: &mut Mint| {
*mint = Mint {
mint_authority: COption::Some(owner),
Expand All @@ -5081,7 +5080,7 @@ pub mod tests {
&Pubkey::from_str(&new_mint.to_string()).unwrap(),
&mint_account,
);
let mut account_data = [0; size_of::<TokenAccount>()];
let mut account_data = vec![0; TokenAccount::get_packed_len()];
TokenAccount::unpack_unchecked_mut(&mut account_data, &mut |account: &mut TokenAccount| {
*account = TokenAccount {
mint: new_mint,
Expand Down Expand Up @@ -5142,7 +5141,7 @@ pub mod tests {
fn test_token_parsing() {
let RpcHandler { io, meta, bank, .. } = start_rpc_handler_with_tx(&Pubkey::new_rand());

let mut account_data = [0; size_of::<TokenAccount>()];
let mut account_data = vec![0; TokenAccount::get_packed_len()];
let mint = SplTokenPubkey::new(&[2; 32]);
let owner = SplTokenPubkey::new(&[3; 32]);
let delegate = SplTokenPubkey::new(&[4; 32]);
Expand Down Expand Up @@ -5170,7 +5169,7 @@ pub mod tests {
bank.store_account(&token_account_pubkey, &token_account);

// Add the mint
let mut mint_data = [0; size_of::<Mint>()];
let mut mint_data = vec![0; Mint::get_packed_len()];
Mint::unpack_unchecked_mut(&mut mint_data, &mut |mint: &mut Mint| {
*mint = Mint {
mint_authority: COption::Some(owner),
Expand Down Expand Up @@ -5201,7 +5200,7 @@ pub mod tests {
result["result"]["value"]["data"],
json!({
"program": "spl-token",
"space": 176,
"space": TokenAccount::get_packed_len(),
"parsed": {
"type": "account",
"info": {
Expand Down Expand Up @@ -5243,7 +5242,7 @@ pub mod tests {
result["result"]["value"]["data"],
json!({
"program": "spl-token",
"space": 88,
"space": Mint::get_packed_len(),
"parsed": {
"type": "mint",
"info": {
Expand Down
2 changes: 1 addition & 1 deletion transaction-status/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ solana-sdk = { path = "../sdk", version = "1.3.6" }
solana-stake-program = { path = "../programs/stake", version = "1.3.6" }
solana-vote-program = { path = "../programs/vote", version = "1.3.6" }
spl-memo-v1-0 = { package = "spl-memo", version = "1.0.7", features = ["skip-no-mangle"] }
spl-token-v2-0 = { package = "spl-token", version = "2.0.1", features = ["skip-no-mangle"] }
spl-token-v2-0 = { package = "spl-token", version = "2.0.2", features = ["skip-no-mangle"] }
serde = "1.0.112"
serde_derive = "1.0.103"
serde_json = "1.0.56"
Expand Down