diff --git a/Cargo.lock b/Cargo.lock index cd42cb7..b54d108 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10046,6 +10046,21 @@ dependencies = [ "solana-pubkey 3.0.0", ] +[[package]] +name = "spl-list-view" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e598e5d5f99fcc4ff25c4677465743a9b2d7e42fcc9492b982f04fbefab792" +dependencies = [ + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "num_enum", + "solana-program-error", + "solana-zero-copy", + "thiserror 2.0.20", +] + [[package]] name = "spl-memo-interface" version = "2.0.0" @@ -10058,9 +10073,9 @@ dependencies = [ [[package]] name = "spl-pod" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f9c6e142cdf1e7e77f480053ec9f0ce989890768ddf91f619b50f39d1b456f5" +checksum = "4efaa79ec81a614ae4263c92481ba1444d01e5e1efcdaf92b7f48a5b1b3e282d" dependencies = [ "borsh", "bytemuck", @@ -10126,9 +10141,9 @@ dependencies = [ [[package]] name = "spl-tlv-account-resolution" -version = "0.11.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82f0396f16089ebebdbe3684af88e13dc613fae2ece6c6df0aa697c121e7ba9b" +checksum = "4378fa824c41a21856eb5347fbff48bc613456179de02ba51f667bce9acb18f6" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -10140,8 +10155,8 @@ dependencies = [ "solana-program-error", "solana-pubkey 3.0.0", "spl-discriminator", + "spl-list-view", "spl-pod", - "spl-program-error", "spl-type-length-value", "thiserror 2.0.20", ] @@ -10458,7 +10473,7 @@ dependencies = [ "solana-sha256-hasher", "solana-system-interface 3.0.0", "spl-discriminator", - "spl-pod", + "spl-list-view", "spl-program-error", "spl-tlv-account-resolution", "spl-type-length-value", diff --git a/clients/cli/Cargo.toml b/clients/cli/Cargo.toml index 59d3b7e..08c43cf 100644 --- a/clients/cli/Cargo.toml +++ b/clients/cli/Cargo.toml @@ -25,7 +25,7 @@ solana-signature = "3.0.0" solana-signer = "3.0.0" solana-system-interface = "3" solana-transaction = "3.0.0" -spl-tlv-account-resolution = { version = "0.11.0", features = ["serde-traits"] } +spl-tlv-account-resolution = { version = "0.11.3", features = ["serde-traits"] } spl-transfer-hook-interface = { version = "2.0.0", path = "../../interface" } strum = "0.28" strum_macros = "0.28" diff --git a/interface/Cargo.toml b/interface/Cargo.toml index 9de4131..5ba7071 100644 --- a/interface/Cargo.toml +++ b/interface/Cargo.toml @@ -23,10 +23,10 @@ solana-pubkey = { version = "4.2.0", features = ["curve25519"] } solana-sdk-ids = "3.0.0" solana-system-interface = "3.0.0" spl-discriminator = "0.5.1" +spl-list-view = "0.1.1" spl-program-error = "0.8.0" -spl-tlv-account-resolution = "0.11.0" +spl-tlv-account-resolution = "0.11.3" spl-type-length-value = "0.9.1" -spl-pod = "0.7.3" thiserror = "2.0" [lib] diff --git a/interface/src/instruction.rs b/interface/src/instruction.rs index 7263768..ad0b482 100644 --- a/interface/src/instruction.rs +++ b/interface/src/instruction.rs @@ -5,7 +5,7 @@ use { solana_program_error::ProgramError, solana_pubkey::Pubkey, spl_discriminator::{ArrayDiscriminator, SplDiscriminate}, - spl_pod::{bytemuck::pod_slice_to_bytes, list::ListView}, + spl_list_view::ListView, spl_tlv_account_resolution::account::ExtraAccountMeta, std::convert::TryInto, }; @@ -129,7 +129,7 @@ impl TransferHookInstruction { InitializeExtraAccountMetaListInstruction::SPL_DISCRIMINATOR_SLICE, ); buf.extend_from_slice(&(extra_account_metas.len() as u32).to_le_bytes()); - buf.extend_from_slice(pod_slice_to_bytes(extra_account_metas)); + buf.extend_from_slice(bytemuck::cast_slice(extra_account_metas)); } Self::UpdateExtraAccountMetaList { extra_account_metas, @@ -138,7 +138,7 @@ impl TransferHookInstruction { UpdateExtraAccountMetaListInstruction::SPL_DISCRIMINATOR_SLICE, ); buf.extend_from_slice(&(extra_account_metas.len() as u32).to_le_bytes()); - buf.extend_from_slice(pod_slice_to_bytes(extra_account_metas)); + buf.extend_from_slice(bytemuck::cast_slice(extra_account_metas)); } }; buf @@ -252,9 +252,7 @@ pub fn update_extra_account_meta_list( #[cfg(test)] mod test { - use { - super::*, crate::NAMESPACE, solana_sha256_hasher::hashv, spl_pod::bytemuck::pod_from_bytes, - }; + use {super::*, crate::NAMESPACE, solana_sha256_hasher::hashv}; #[test] fn system_program_id() { @@ -291,7 +289,7 @@ mod test { 0, // is_writable ]; let extra_account_metas = - vec![*pod_from_bytes::(extra_meta_bytes).unwrap()]; + vec![*bytemuck::try_from_bytes::(extra_meta_bytes).unwrap()]; let check = TransferHookInstruction::InitializeExtraAccountMetaList { extra_account_metas, }; diff --git a/interface/src/offchain.rs b/interface/src/offchain.rs index 46e078e..a21039d 100644 --- a/interface/src/offchain.rs +++ b/interface/src/offchain.rs @@ -247,8 +247,8 @@ mod tests { AccountMeta::new_readonly(mint, false), AccountMeta::new(destination, false), AccountMeta::new_readonly(authority, true), - AccountMeta::new_readonly(EXTRA_META_1, true), - AccountMeta::new_readonly(EXTRA_META_2, true), + AccountMeta::new_readonly(EXTRA_META_1, false), + AccountMeta::new_readonly(EXTRA_META_2, false), AccountMeta::new(extra_meta_3_pubkey, false), AccountMeta::new(extra_meta_4_pubkey, false), AccountMeta::new_readonly(PROGRAM_ID, false), diff --git a/interface/src/onchain.rs b/interface/src/onchain.rs index 4d73815..b4ce34e 100644 --- a/interface/src/onchain.rs +++ b/interface/src/onchain.rs @@ -480,8 +480,8 @@ mod tests { AccountMeta::new_readonly(mint_pubkey, false), AccountMeta::new(destination_pubkey, false), AccountMeta::new_readonly(authority_pubkey, true), - AccountMeta::new_readonly(EXTRA_META_1, true), - AccountMeta::new_readonly(EXTRA_META_2, true), + AccountMeta::new_readonly(EXTRA_META_1, false), + AccountMeta::new_readonly(EXTRA_META_2, false), AccountMeta::new(extra_meta_3_pubkey, false), AccountMeta::new(extra_meta_4_pubkey, false), AccountMeta::new_readonly(validate_state_pubkey, false), diff --git a/program/Cargo.toml b/program/Cargo.toml index 6d377f3..8bc90ca 100644 --- a/program/Cargo.toml +++ b/program/Cargo.toml @@ -23,7 +23,7 @@ solana-program-entrypoint = "3.0.0" solana-program-error = "3.0.1" solana-pubkey = "4.2.0" solana-system-interface = { version = "3", features = ["bincode"] } -spl-tlv-account-resolution = "0.11.0" +spl-tlv-account-resolution = "0.11.3" spl-token-2022-interface = "2.0.0" spl-transfer-hook-interface = { version = "2.0.0", path = "../interface" } spl-type-length-value = "0.9.1"