Skip to content
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,571 changes: 2,322 additions & 2,249 deletions Cargo.lock

Large diffs are not rendered by default.

26 changes: 14 additions & 12 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ members = [
]

[workspace.metadata.cli]
solana = "3.1.8"
solana = "4.1.0"

# Specify Rust toolchains for rustfmt, clippy, and build.
# Any unprovided toolchains default to stable.
Expand Down Expand Up @@ -57,38 +57,40 @@ serde_with = "3.21.0"
serial_test = "3.5.0"
solana-account = "3.4.0"
solana-account-info = "3.1.1"
solana-clap-v3-utils = { version = "3.1.11", features = ["agave-unstable-api"] }
solana-cli-config = { version = "3.1.11", features = ["agave-unstable-api"] }
solana-cli-output = { version = "3.1.11", features = ["agave-unstable-api"] }
solana-client = { version = "3.1.11", features = ["agave-unstable-api"] }
solana-clap-v3-utils = { version = "4.1.0", features = ["agave-unstable-api"] }
solana-cli-config = { version = "4.1.0", features = ["agave-unstable-api"] }
solana-cli-output = { version = "4.1.0", features = ["agave-unstable-api"] }
solana-client = { version = "4.1.0", features = ["agave-unstable-api"] }
solana-commitment-config = "3.1.1"
solana-cpi = "3.1.0"
solana-hash = "4.4.0"
solana-instruction = "3.0.0"
solana-keypair = "3.0.0"
solana-msg = "3.1.0"
solana-nullable = "1.0.0"
solana-presigner = "3.0.0"
solana-program-entrypoint = "3.1.1"
solana-program-error = "3.0.1"
solana-program-option = "3.1.0"
solana-program-pack = "3.1.0"
solana-pubkey = "4.2.0"
solana-remote-wallet = { version = "3.1.11", features = ["agave-unstable-api"] }
solana-remote-wallet = { version = "4.1.0", features = ["agave-unstable-api"] }
solana-rent = "3.0.0"
solana-sdk-ids = "3.1.0"
solana-signature = "3.1.0"
solana-signer = "3.0.0"
solana-system-interface = { version = "3.0.0", features = ["bincode"] }
solana-sysvar = "3.0.0"
solana-test-validator = { version = "3.1.11", features = ["agave-unstable-api"] }
solana-transaction = "3.0.0"
solana-zk-sdk = "4.0.0"
solana-test-validator = { version = "4.1.0", features = ["agave-unstable-api"] }
solana-transaction = "4.0.0"
solana-zero-copy = "1.0.0"
solana-zk-sdk-pod = "0.1.2"
spl-associated-token-account-interface = "2.0.0"
spl-pod = "0.7.3"
spl-tlv-account-resolution = "0.11.1"
spl-token = { version = "9.0.0", features = ["no-entrypoint"] }
spl-token-2022 = { version = "10.0.0", features = ["no-entrypoint"] }
spl-token-metadata-interface = "0.8.0"
spl-token-2022 = { version = "11.0.0", features = ["no-entrypoint"] }
spl-token-2022-interface = "3.0.0"
spl-token-metadata-interface = "1.0.0"
spl-token-wrap = { version = "1.0.0", path = "program", features = ["no-entrypoint"] }
spl-transfer-hook-interface = "2.1.0"
spl-type-length-value = "0.9.1"
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
RUST_TOOLCHAIN_NIGHTLY = nightly-2026-01-22
SOLANA_CLI_VERSION = 3.1.8
SOLANA_CLI_VERSION = 4.1.0

nightly = +${RUST_TOOLCHAIN_NIGHTLY}

Expand Down
5 changes: 3 additions & 2 deletions clients/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ spl-associated-token-account-interface = { workspace = true }
spl-token = { workspace = true }
spl-token-metadata-interface = { workspace = true }
spl-token-wrap = { workspace = true }
spl-token-2022 = { workspace = true }
spl-token-2022-interface = { workspace = true }
tokio = { workspace = true }

[dev-dependencies]
Expand All @@ -43,9 +43,10 @@ libtest-mimic = { workspace = true }
serde_json = { workspace = true }
serial_test = { workspace = true }
solana-keypair = { workspace = true }
solana-nullable = { workspace = true }
solana-sdk-ids = { workspace = true }
solana-test-validator = { workspace = true }
spl-pod = { workspace = true }
solana-zk-sdk-pod = { workspace = true }
tempfile = { workspace = true }

[[bin]]
Expand Down
2 changes: 1 addition & 1 deletion clients/cli/src/close_stuck_escrow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ pub async fn command_close_stuck_escrow(

// CloseStuckEscrow only works with spl-token-2022 unwrapped mints due to
// extension requirements
if unwrapped_token_program != spl_token_2022::id() {
if unwrapped_token_program != spl_token_2022_interface::id() {
return Err(format!(
"CloseStuckEscrow only works with spl-token-2022 unwrapped mints. Unwrapped mint {} \
uses program {}",
Expand Down
6 changes: 3 additions & 3 deletions clients/cli/src/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use {
solana_pubkey::Pubkey,
solana_signature::Signature,
solana_transaction::Transaction,
spl_token_2022::{
spl_token_2022_interface::{
extension::{PodStateWithExtensions, StateWithExtensions},
pod::PodAccount,
state::Mint,
Expand All @@ -27,7 +27,7 @@ fn parse_address(path: &str, name: &str) -> Result<Pubkey, String> {

pub fn parse_token_program(value: &str) -> Result<Pubkey, String> {
let pubkey = parse_pubkey(value)?;
if pubkey == spl_token::id() || pubkey == spl_token_2022::id() {
if pubkey == spl_token::id() || pubkey == spl_token_2022_interface::id() {
Ok(pubkey)
} else {
Err("Invalid token program. Must be spl-token or spl-token-2022".to_string())
Expand Down Expand Up @@ -102,7 +102,7 @@ pub async fn assert_mint_account(
.map_err(|e| format!("Failed to fetch account {}: {}", account_key, e))?;

let owner = account_info.owner;
if owner != spl_token::id() && owner != spl_token_2022::id() {
if owner != spl_token::id() && owner != spl_token_2022_interface::id() {
return Err(format!(
"Account {} is not owned by a token program. Owner: {}",
account_key, owner
Expand Down
2 changes: 1 addition & 1 deletion clients/cli/src/create_mint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ pub async fn command_create_mint(config: &Config, args: CreateMintArgs) -> Comma
Err(_) => 0,
};

let mint_size = if args.wrapped_token_program == spl_token_2022::id() {
let mint_size = if args.wrapped_token_program == spl_token_2022_interface::id() {
DefaultToken2022Customizer::get_token_2022_mint_space()?
} else {
spl_token::state::Mint::LEN
Expand Down
7 changes: 4 additions & 3 deletions clients/cli/src/sync_metadata_to_token2022.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use {
solana_signature::Signature,
solana_signer::Signer,
solana_transaction::Transaction,
spl_token_2022::{
spl_token_2022_interface::{
extension::{
metadata_pointer::MetadataPointer, BaseStateWithExtensions, PodStateWithExtensions,
},
Expand Down Expand Up @@ -114,7 +114,8 @@ pub async fn command_sync_metadata_to_token2022(
) -> CommandResult {
let payer = config.fee_payer()?;

let wrapped_mint = get_wrapped_mint_address(&args.unwrapped_mint, &spl_token_2022::id());
let wrapped_mint =
get_wrapped_mint_address(&args.unwrapped_mint, &spl_token_2022_interface::id());
let wrapped_mint_authority = get_wrapped_mint_authority(&wrapped_mint);

let source_metadata = if let Some(metadata_account) = args.metadata_account {
Expand Down Expand Up @@ -172,7 +173,7 @@ pub async fn resolve_source_metadata_account(
return Ok(metaplex_pda);
}

if owner == spl_token_2022::id() {
if owner == spl_token_2022_interface::id() {
let mint_state = PodStateWithExtensions::<PodMint>::unpack(&acct.data)?;

let resolved = match mint_state.get_extension::<MetadataPointer>() {
Expand Down
17 changes: 9 additions & 8 deletions clients/cli/tests/common/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use {
solana_transaction::Transaction,
spl_associated_token_account_interface::address::get_associated_token_address_with_program_id,
spl_token::{self, state::Mint as SplTokenMint},
spl_token_2022::instruction::initialize_mint,
spl_token_2022_interface::instruction::initialize_mint,
std::{error::Error, path::PathBuf, process::Command, sync::Arc},
tempfile::NamedTempFile,
};
Expand Down Expand Up @@ -247,7 +247,7 @@ pub async fn create_token_account(
account_size as u64,
token_program,
),
spl_token_2022::instruction::initialize_account(
spl_token_2022_interface::instruction::initialize_account(
token_program,
&token_account.pubkey(),
mint,
Expand Down Expand Up @@ -323,12 +323,13 @@ pub async fn create_test_multisig(
token_program,
);

let initialize_multisig_instruction = spl_token_2022::instruction::initialize_multisig(
token_program,
&multisig_pubkey,
&multisig_member_pubkeys,
2,
)?;
let initialize_multisig_instruction =
spl_token_2022_interface::instruction::initialize_multisig(
token_program,
&multisig_pubkey,
&multisig_member_pubkeys,
2,
)?;
let mut transaction = Transaction::new_with_payer(
&[create_account_instruction, initialize_multisig_instruction],
Some(&env.payer.pubkey()),
Expand Down
14 changes: 7 additions & 7 deletions clients/cli/tests/common/test_close_stuck_escrow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use {
solana_signer::Signer,
solana_system_interface::instruction::create_account,
solana_transaction::Transaction,
spl_token_2022::{
spl_token_2022_interface::{
extension::{transfer_fee::instruction::initialize_transfer_fee_config, ExtensionType},
instruction::{initialize_mint2, initialize_mint_close_authority},
pod::PodMint,
Expand All @@ -19,7 +19,7 @@ use {
pub async fn test_only_token_2022_allowed(env: &TestEnv) {
// Create unwrapped mint with spl-token (not spl-token-2022)
let unwrapped_token_program = spl_token::id();
let wrapped_token_program = spl_token_2022::id();
let wrapped_token_program = spl_token_2022_interface::id();
let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program).await;

let output = Command::new(TOKEN_WRAP_CLI_BIN)
Expand All @@ -41,8 +41,8 @@ pub async fn test_only_token_2022_allowed(env: &TestEnv) {

pub async fn test_create_mint_close_stuck_escrow_fails(env: &TestEnv) {
// 1. Create unwrapped mint with spl-token-2022
let unwrapped_token_program = spl_token_2022::id();
let wrapped_token_program = spl_token_2022::id();
let unwrapped_token_program = spl_token_2022_interface::id();
let wrapped_token_program = spl_token_2022_interface::id();
let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program).await;

// 2. Create wrapped mint
Expand Down Expand Up @@ -76,8 +76,8 @@ pub async fn test_create_mint_close_stuck_escrow_fails(env: &TestEnv) {
}

pub async fn test_successful_close(env: &TestEnv) {
let unwrapped_token_program = spl_token_2022::id();
let wrapped_token_program = spl_token_2022::id();
let unwrapped_token_program = spl_token_2022_interface::id();
let wrapped_token_program = spl_token_2022_interface::id();
let close_authority = env.payer.pubkey();
let unwrapped_mint_keypair = Keypair::new();
let unwrapped_mint = unwrapped_mint_keypair.pubkey();
Expand Down Expand Up @@ -143,7 +143,7 @@ pub async fn test_successful_close(env: &TestEnv) {

// 4. Close the unwrapped mint
let blockhash = env.rpc_client.get_latest_blockhash().await.unwrap();
let close_ix = spl_token_2022::instruction::close_account(
let close_ix = spl_token_2022_interface::instruction::close_account(
&unwrapped_token_program,
&unwrapped_mint,
&env.payer.pubkey(),
Expand Down
14 changes: 8 additions & 6 deletions clients/cli/tests/common/test_confidential_transfers.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
use {
crate::common::helpers::{create_unwrapped_mint, execute_create_mint, TestEnv},
spl_pod::optional_keys::{OptionalNonZeroElGamalPubkey, OptionalNonZeroPubkey},
spl_token_2022::{
solana_nullable::MaybeNull,
solana_pubkey::Pubkey,
solana_zk_sdk_pod::encryption::elgamal::PodElGamalPubkey,
spl_token_2022_interface::{
extension::{
confidential_transfer::ConfidentialTransferMint, BaseStateWithExtensions,
PodStateWithExtensions,
Expand All @@ -11,8 +13,8 @@ use {
};

pub async fn test_confidential_transfer_with_wrap_and_deposit(env: &TestEnv) {
let unwrapped_token_program = spl_token_2022::id();
let wrapped_token_program = spl_token_2022::id();
let unwrapped_token_program = spl_token_2022_interface::id();
let wrapped_token_program = spl_token_2022_interface::id();
let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program).await;

execute_create_mint(env, &unwrapped_mint, &wrapped_token_program).await;
Expand All @@ -31,10 +33,10 @@ pub async fn test_confidential_transfer_with_wrap_and_deposit(env: &TestEnv) {
.get_extension::<ConfidentialTransferMint>()
.unwrap();

assert_eq!(ct_mint.authority, OptionalNonZeroPubkey::default());
assert_eq!(ct_mint.authority, MaybeNull::<Pubkey>::default());
assert!(bool::from(ct_mint.auto_approve_new_accounts));
assert_eq!(
ct_mint.auditor_elgamal_pubkey,
OptionalNonZeroElGamalPubkey::default()
MaybeNull::<PodElGamalPubkey>::default()
);
}
18 changes: 9 additions & 9 deletions clients/cli/tests/common/test_create_escrow_account.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use {
solana_signer::Signer,
solana_transaction::Transaction,
spl_token::{self},
spl_token_2022::{
spl_token_2022_interface::{
extension::PodStateWithExtensions,
pod::PodAccount,
{self},
Expand Down Expand Up @@ -58,7 +58,7 @@ async fn assert_escrow_creation(

pub async fn test_create_ata_escrow_account_for_spl_token_mint(env: &TestEnv) {
let unwrapped_token_program_id = spl_token::id();
let wrapped_token_program_id = spl_token_2022::id();
let wrapped_token_program_id = spl_token_2022_interface::id();

let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program_id).await;

Expand Down Expand Up @@ -94,7 +94,7 @@ pub async fn test_create_ata_escrow_account_for_spl_token_mint(env: &TestEnv) {
}

pub async fn test_create_ata_escrow_account_for_token2022_mint(env: &TestEnv) {
let unwrapped_token_program_id = spl_token_2022::id();
let unwrapped_token_program_id = spl_token_2022_interface::id();
let wrapped_token_program_id = spl_token::id();

let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program_id).await;
Expand Down Expand Up @@ -132,7 +132,7 @@ pub async fn test_create_ata_escrow_account_for_token2022_mint(env: &TestEnv) {

pub async fn test_create_escrow_account_with_signer(env: &TestEnv) {
let unwrapped_token_program_id = spl_token::id();
let wrapped_token_program_id = spl_token_2022::id();
let wrapped_token_program_id = spl_token_2022_interface::id();

let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program_id).await;

Expand Down Expand Up @@ -182,7 +182,7 @@ pub async fn test_create_escrow_account_with_signer(env: &TestEnv) {

pub async fn test_create_escrow_account_signer_idempotent(env: &TestEnv) {
let unwrapped_token_program_id = spl_token::id();
let wrapped_token_program_id = spl_token_2022::id();
let wrapped_token_program_id = spl_token_2022_interface::id();

let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program_id).await;

Expand Down Expand Up @@ -228,7 +228,7 @@ pub async fn test_create_escrow_account_signer_idempotent(env: &TestEnv) {

pub async fn test_create_escrow_account_ata_idempotent(env: &TestEnv) {
let unwrapped_token_program_id = spl_token::id();
let wrapped_token_program_id = spl_token_2022::id();
let wrapped_token_program_id = spl_token_2022_interface::id();

let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program_id).await;

Expand Down Expand Up @@ -278,7 +278,7 @@ pub async fn test_create_escrow_account_with_wrong_mint_owner(env: &TestEnv) {
"-C",
&env.config_file_path,
&keypair.pubkey().to_string(),
&spl_token_2022::id().to_string(),
&spl_token_2022_interface::id().to_string(),
])
.output()
.unwrap();
Expand All @@ -292,7 +292,7 @@ pub async fn test_create_escrow_account_with_wrong_account_type(env: &TestEnv) {
let keypair = Keypair::new();

// note no data in account
create_account(env, &keypair, &spl_token_2022::id()).await;
create_account(env, &keypair, &spl_token_2022_interface::id()).await;

let mut command = Command::new(TOKEN_WRAP_CLI_BIN);
let output = command
Expand All @@ -301,7 +301,7 @@ pub async fn test_create_escrow_account_with_wrong_account_type(env: &TestEnv) {
"-C",
&env.config_file_path,
&keypair.pubkey().to_string(),
&spl_token_2022::id().to_string(),
&spl_token_2022_interface::id().to_string(),
])
.output()
.unwrap();
Expand Down
4 changes: 2 additions & 2 deletions clients/cli/tests/common/test_create_mint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use {
solana_program_pack::Pack,
solana_pubkey::Pubkey,
spl_token::{self, state::Mint as SplTokenMint},
spl_token_2022::{
spl_token_2022_interface::{
extension::{
confidential_transfer::ConfidentialTransferMint, metadata_pointer::MetadataPointer,
BaseStateWithExtensions, PodStateWithExtensions,
Expand All @@ -18,7 +18,7 @@ use {

pub async fn test_create_mint(env: &TestEnv) {
let unwrapped_token_program = spl_token::id();
let wrapped_token_program = spl_token_2022::id();
let wrapped_token_program = spl_token_2022_interface::id();
let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program).await;
execute_create_mint(env, &unwrapped_mint, &wrapped_token_program).await;

Expand Down
2 changes: 1 addition & 1 deletion clients/cli/tests/common/test_pdas.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use {
};

pub async fn test_pdas(env: &TestEnv) {
let unwrapped_token_program = spl_token_2022::id();
let unwrapped_token_program = spl_token_2022_interface::id();
let wrapped_token_program = spl_token::id();

let unwrapped_mint = create_unwrapped_mint(env, &unwrapped_token_program).await;
Expand Down
Loading
Loading