From 2b49402c81ff759e1e51c7b4ac706b04eed500ed Mon Sep 17 00:00:00 2001 From: hana <81144685+2501babe@users.noreply.github.com> Date: Fri, 13 Mar 2026 04:10:03 -0700 Subject: [PATCH] program: update to stake interface v3 --- Cargo.lock | 23 +++++++++++++++++++++-- program/Cargo.toml | 2 +- program/src/processor.rs | 13 +++++++++++-- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 52284032..6ac40ba8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6717,7 +6717,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f912ae679b683365348dea482dbd9468d22ff258b554fd36e3d3683c2122e3" dependencies = [ - "borsh", "num-traits", "serde", "serde_derive", @@ -6767,6 +6766,26 @@ dependencies = [ "test-case", ] +[[package]] +name = "solana-stake-interface" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49eb5c77484214c3484921e2cdda79d185373118b5458c1b2df0f1a04c3bc30" +dependencies = [ + "borsh", + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "solana-cpi", + "solana-instruction", + "solana-program-error", + "solana-pubkey 4.1.0", + "solana-system-interface 3.0.0", + "solana-sysvar 4.0.0", + "solana-sysvar-id", +] + [[package]] name = "solana-stake-program" version = "3.0.10" @@ -6829,7 +6848,7 @@ dependencies = [ "solana-sdk-ids", "solana-signature", "solana-signer", - "solana-stake-interface 2.0.1", + "solana-stake-interface 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "solana-svm-log-collector", "solana-system-interface 2.0.0", "solana-sysvar 3.0.0", diff --git a/program/Cargo.toml b/program/Cargo.toml index 55f4244d..0052f799 100644 --- a/program/Cargo.toml +++ b/program/Cargo.toml @@ -19,7 +19,7 @@ solana-program-entrypoint = "3.0.0" solana-program-error = "3.0.0" solana-pubkey = "3.0.0" solana-rent = "3.0.0" -solana-stake-interface = { version = "2", features = ["bincode", "borsh", "sysvar"] } +solana-stake-interface = { version = "3", features = ["bincode", "borsh", "sysvar"] } solana-sysvar = "3.0.0" solana-sysvar-id = "3.1.0" solana-vote-interface = { version = "4.0.4", features = ["bincode"] } diff --git a/program/src/processor.rs b/program/src/processor.rs index a5599b4c..c6dc4eca 100644 --- a/program/src/processor.rs +++ b/program/src/processor.rs @@ -147,6 +147,7 @@ fn do_initialize( let stake_state = StakeStateV2::Initialized(Meta { authorized, lockup, + #[allow(deprecated)] rent_exempt_reserve: PSEUDO_RENT_EXEMPT_RESERVE, }); @@ -543,8 +544,12 @@ impl Processor { let is_active_or_activating = source_status.effective > 0 || source_status.activating > 0; + // `rent_exempt_reserve` is now static, but some old accounts have nonstandard values let mut dest_meta = source_meta; - dest_meta.rent_exempt_reserve = PSEUDO_RENT_EXEMPT_RESERVE; + #[allow(deprecated)] + { + dest_meta.rent_exempt_reserve = PSEUDO_RENT_EXEMPT_RESERVE; + } (is_active_or_activating, Some(dest_meta)) } @@ -554,8 +559,12 @@ impl Processor { .check(&signers, StakeAuthorize::Staker) .map_err(to_program_error)?; + // `rent_exempt_reserve` is now static, but some old accounts have nonstandard values let mut dest_meta = source_meta; - dest_meta.rent_exempt_reserve = PSEUDO_RENT_EXEMPT_RESERVE; + #[allow(deprecated)] + { + dest_meta.rent_exempt_reserve = PSEUDO_RENT_EXEMPT_RESERVE; + } (false, Some(dest_meta)) }