feature: add new token program feature (#18780)
* feature: add new token program feature * Fixup test * Update to spl-token v3.2.0 * Update Cargo.lock + fmt * Update token program version in fetch-spl.sh * Bump associated token program to 1.0.3 * Add aToken so
This commit is contained in:
@ -22,9 +22,9 @@ solana-account-decoder = { path = "../account-decoder", version = "=1.8.0" }
|
||||
solana-sdk = { path = "../sdk", version = "=1.8.0" }
|
||||
solana-runtime = { path = "../runtime", version = "=1.8.0" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "=1.8.0" }
|
||||
spl-associated-token-account-v1-0 = { package = "spl-associated-token-account", version = "=1.0.2", features = ["no-entrypoint"] }
|
||||
spl-associated-token-account-v1-0 = { package = "spl-associated-token-account", version = "=1.0.3", features = ["no-entrypoint"] }
|
||||
spl-memo = { version = "=3.0.1", features = ["no-entrypoint"] }
|
||||
spl-token-v2-0 = { package = "spl-token", version = "=3.1.1", features = ["no-entrypoint"] }
|
||||
spl-token-v2-0 = { package = "spl-token", version = "=3.2.0", features = ["no-entrypoint"] }
|
||||
thiserror = "1.0"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
|
@ -372,6 +372,15 @@ pub fn parse_token(
|
||||
info: value,
|
||||
})
|
||||
}
|
||||
TokenInstruction::SyncNative => {
|
||||
check_num_token_accounts(&instruction.accounts, 1)?;
|
||||
Ok(ParsedInstructionEnum {
|
||||
instruction_type: "syncNative".to_string(),
|
||||
info: json!({
|
||||
"account": account_keys[instruction.accounts[0] as usize].to_string(),
|
||||
}),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -930,7 +939,7 @@ mod test {
|
||||
}
|
||||
);
|
||||
|
||||
// Test Approve2, incl multisig
|
||||
// Test ApproveChecked, incl multisig
|
||||
let approve_ix = approve_checked(
|
||||
&spl_token_v2_0::id(),
|
||||
&convert_pubkey(keys[1]),
|
||||
@ -996,7 +1005,7 @@ mod test {
|
||||
}
|
||||
);
|
||||
|
||||
// Test MintTo2
|
||||
// Test MintToChecked
|
||||
let mint_to_ix = mint_to_checked(
|
||||
&spl_token_v2_0::id(),
|
||||
&convert_pubkey(keys[1]),
|
||||
@ -1027,7 +1036,7 @@ mod test {
|
||||
}
|
||||
);
|
||||
|
||||
// Test Burn2
|
||||
// Test BurnChecked
|
||||
let burn_ix = burn_checked(
|
||||
&spl_token_v2_0::id(),
|
||||
&convert_pubkey(keys[1]),
|
||||
@ -1057,6 +1066,20 @@ mod test {
|
||||
})
|
||||
}
|
||||
);
|
||||
|
||||
// Test SyncNative
|
||||
let sync_native_ix = sync_native(&spl_token_v2_0::id(), &convert_pubkey(keys[0])).unwrap();
|
||||
let message = Message::new(&[sync_native_ix], None);
|
||||
let compiled_instruction = convert_compiled_instruction(&message.instructions[0]);
|
||||
assert_eq!(
|
||||
parse_token(&compiled_instruction, &keys).unwrap(),
|
||||
ParsedInstructionEnum {
|
||||
instruction_type: "syncNative".to_string(),
|
||||
info: json!({
|
||||
"account": keys[0].to_string(),
|
||||
})
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -1421,5 +1444,14 @@ mod test {
|
||||
compiled_instruction.accounts =
|
||||
compiled_instruction.accounts[0..compiled_instruction.accounts.len() - 1].to_vec();
|
||||
assert!(parse_token(&compiled_instruction, &keys).is_err());
|
||||
|
||||
// Test SyncNative
|
||||
let sync_native_ix = sync_native(&spl_token_v2_0::id(), &convert_pubkey(keys[0])).unwrap();
|
||||
let message = Message::new(&[sync_native_ix], None);
|
||||
let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]);
|
||||
assert!(parse_token(&compiled_instruction, &[]).is_err());
|
||||
compiled_instruction.accounts =
|
||||
compiled_instruction.accounts[0..compiled_instruction.accounts.len() - 1].to_vec();
|
||||
assert!(parse_token(&compiled_instruction, &keys).is_err());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user