diff --git a/Cargo.lock b/Cargo.lock index 964162a4..0b6a1377 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5024,7 +5024,7 @@ checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" dependencies = [ "bincode", "serde_core", - "solana-address 2.2.0", + "solana-address 2.6.0", "solana-program-error", "solana-program-memory", ] @@ -5094,14 +5094,14 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" dependencies = [ - "solana-address 2.2.0", + "solana-address 2.6.0", ] [[package]] name = "solana-address" -version = "2.2.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c5d02824391b072dc5cd0aaa85fb0af9784a21d23286a767994d1e8a322131" +checksum = "f1384b52c435a750cc9c538760fc7bb472fd78e65a9900a2d07312c5bb335b72" dependencies = [ "borsh", "bytemuck", @@ -5120,7 +5120,7 @@ dependencies = [ "solana-program-error", "solana-sanitize", "solana-sha256-hasher", - "wincode 0.4.4", + "wincode", ] [[package]] @@ -5704,7 +5704,7 @@ checksum = "f5e7b0ba210593ba8ddd39d6d234d81795d1671cebf3026baa10d5dc23ac42f0" dependencies = [ "serde", "serde_derive", - "solana-hash 4.2.0", + "solana-hash 4.3.0", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -5742,7 +5742,7 @@ checksum = "0eb265ff95e28eceda117e2e3d2d2a611ecbbfe911dfeeeecd1521814540ffab" dependencies = [ "serde", "serde_derive", - "solana-hash 4.2.0", + "solana-hash 4.3.0", "solana-instruction", "solana-nonce", "solana-pubkey 4.2.0", @@ -5880,14 +5880,14 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" dependencies = [ - "solana-hash 4.2.0", + "solana-hash 4.3.0", ] [[package]] name = "solana-hash" -version = "4.2.0" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8064ea1d591ec791be95245058ca40f4f5345d390c200069d0f79bbf55bfae55" +checksum = "f1b113239362cee7093bfb250467138f079a2a03673181dc15bff6ccd677912d" dependencies = [ "borsh", "bytemuck", @@ -5897,7 +5897,7 @@ dependencies = [ "serde_derive", "solana-atomic-u64", "solana-sanitize", - "wincode 0.4.4", + "wincode", ] [[package]] @@ -5977,7 +5977,7 @@ dependencies = [ "five8", "five8_core", "rand 0.9.2", - "solana-address 2.2.0", + "solana-address 2.6.0", "solana-derivation-path", "solana-seed-derivable", "solana-seed-phrase", @@ -6094,8 +6094,8 @@ dependencies = [ "lazy_static", "serde", "serde_derive", - "solana-address 2.2.0", - "solana-hash 4.2.0", + "solana-address 2.6.0", + "solana-hash 4.3.0", "solana-instruction", "solana-sanitize", "solana-sdk-ids", @@ -6458,7 +6458,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" dependencies = [ "rand 0.9.2", - "solana-address 2.2.0", + "solana-address 2.6.0", ] [[package]] @@ -6865,7 +6865,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" dependencies = [ - "solana-address 2.2.0", + "solana-address 2.6.0", ] [[package]] @@ -7046,7 +7046,7 @@ dependencies = [ "serde-big-array", "serde_derive", "solana-sanitize", - "wincode 0.5.1", + "wincode", ] [[package]] @@ -7167,6 +7167,7 @@ dependencies = [ "strum 0.28.0", "strum_macros 0.28.0", "test-case", + "wincode", ] [[package]] @@ -7396,7 +7397,7 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-address 2.2.0", + "solana-address 2.6.0", "solana-instruction", "solana-msg", "solana-program-error", @@ -7460,7 +7461,7 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.2.0", + "solana-hash 4.3.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", @@ -7494,7 +7495,7 @@ dependencies = [ "solana-fee-calculator", "solana-frozen-abi", "solana-frozen-abi-macro", - "solana-hash 4.2.0", + "solana-hash 4.3.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", @@ -7515,7 +7516,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" dependencies = [ - "solana-address 2.2.0", + "solana-address 2.6.0", "solana-sdk-ids", ] @@ -7608,8 +7609,8 @@ dependencies = [ "bincode", "serde", "serde_derive", - "solana-address 2.2.0", - "solana-hash 4.2.0", + "solana-address 2.6.0", + "solana-hash 4.3.0", "solana-instruction", "solana-instruction-error", "solana-message", @@ -7802,7 +7803,7 @@ dependencies = [ "serde_derive", "serde_with", "solana-clock", - "solana-hash 4.2.0", + "solana-hash 4.3.0", "solana-instruction", "solana-instruction-error", "solana-pubkey 4.2.0", @@ -9190,22 +9191,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "wincode" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "466e67917609b2d40a838a5b972d1a6237c9749600cb8de8f65559b90d48485b" -dependencies = [ - "pastey", - "proc-macro2", - "quote", - "thiserror 2.0.18", - "wincode-derive", -] - -[[package]] -name = "wincode" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a61f8f0a55eb6cae5d7b7ad2eca536a944deb9722a948525181069064ecd1abc" +checksum = "b2f42dd20febad683d07044c5f543e57f822512ebebaf2c827705c99a0ad4575" dependencies = [ "pastey", "proc-macro2", diff --git a/interface/Cargo.toml b/interface/Cargo.toml index 86bdc371..2457d053 100644 --- a/interface/Cargo.toml +++ b/interface/Cargo.toml @@ -33,6 +33,7 @@ solana-pubkey = { version = "4.2.0", default-features = false } solana-system-interface = "3.0.0" solana-sysvar = { version = "4.0.0", optional = true } solana-sysvar-id = { version = "3.1.0", optional = true } +wincode = { version = "0.5.2", features = ["derive"], optional = true } [target.'cfg(not(target_os = "solana"))'.dependencies] serde_json = { version = "1.0", optional = true } @@ -82,3 +83,4 @@ frozen-abi = [ ] serde = ["dep:serde", "dep:serde_derive", "solana-pubkey/serde", "solana-sysvar/serde"] sysvar = ["dep:solana-sysvar", "dep:solana-sysvar-id"] +wincode = ["dep:wincode", "solana-pubkey/wincode"] diff --git a/interface/src/error.rs b/interface/src/error.rs index 84aae406..2256376e 100644 --- a/interface/src/error.rs +++ b/interface/src/error.rs @@ -13,6 +13,7 @@ use { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] pub enum StakeError { // 0 /// Not enough credits to redeem. diff --git a/interface/src/stake_flags.rs b/interface/src/stake_flags.rs index 05ad9053..14d35236 100644 --- a/interface/src/stake_flags.rs +++ b/interface/src/stake_flags.rs @@ -2,6 +2,7 @@ use borsh::{BorshDeserialize, BorshSchema, BorshSerialize}; /// Additional flags for stake state. +#[repr(transparent)] #[cfg_attr(feature = "codama", derive(codama_macros::CodamaType))] #[derive(Copy, PartialEq, Eq, Clone, PartialOrd, Ord, Hash, Debug)] #[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))] @@ -14,6 +15,7 @@ use borsh::{BorshDeserialize, BorshSchema, BorshSerialize}; feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] pub struct StakeFlags { bits: u8, } diff --git a/interface/src/stake_history.rs b/interface/src/stake_history.rs index 508dd1d5..2763d4c8 100644 --- a/interface/src/stake_history.rs +++ b/interface/src/stake_history.rs @@ -13,6 +13,7 @@ pub const MAX_ENTRIES: usize = 512; // it should never take as many as 512 epoch feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] #[derive(Debug, PartialEq, Eq, Default, Clone)] pub struct StakeHistoryEntry { pub effective: u64, // effective stake at this epoch @@ -62,6 +63,7 @@ impl std::ops::Add for StakeHistoryEntry { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] #[derive(Debug, PartialEq, Eq, Default, Clone)] pub struct StakeHistory(Vec<(Epoch, StakeHistoryEntry)>); diff --git a/interface/src/state.rs b/interface/src/state.rs index 9f25ce9a..e7fe0310 100644 --- a/interface/src/state.rs +++ b/interface/src/state.rs @@ -158,6 +158,7 @@ impl StakeState { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] #[allow(clippy::large_enum_variant)] pub enum StakeStateV2 { #[default] @@ -282,11 +283,13 @@ impl StakeStateV2 { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] pub enum StakeAuthorize { Staker, Withdrawer, } +#[repr(C)] #[cfg_attr(feature = "codama", derive(CodamaType))] #[derive(Default, Debug, PartialEq, Eq, Clone, Copy)] #[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))] @@ -299,6 +302,7 @@ pub enum StakeAuthorize { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] pub struct Lockup { /// `UnixTimestamp` at which this stake will allow withdrawal, unless the /// transaction is signed by the custodian @@ -319,6 +323,7 @@ impl Lockup { } } +#[repr(C)] #[cfg_attr(feature = "codama", derive(CodamaType))] #[derive(Default, Debug, PartialEq, Eq, Clone, Copy)] #[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))] @@ -331,6 +336,7 @@ impl Lockup { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] pub struct Authorized { pub staker: Pubkey, pub withdrawer: Pubkey, @@ -402,6 +408,7 @@ impl Authorized { } } +#[repr(C)] #[cfg_attr(feature = "codama", derive(CodamaType))] #[derive(Default, Debug, PartialEq, Eq, Clone, Copy)] #[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))] @@ -414,6 +421,7 @@ impl Authorized { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] pub struct Meta { #[deprecated( since = "3.0.1", @@ -462,6 +470,7 @@ impl Meta { } } +#[repr(C)] #[cfg_attr(feature = "codama", derive(CodamaType))] #[derive(Debug, PartialEq, Clone, Copy)] #[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))] @@ -474,6 +483,7 @@ impl Meta { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] pub struct Delegation { /// to whom the stake is delegated pub voter_pubkey: Pubkey, @@ -702,6 +712,7 @@ impl Delegation { } } +#[repr(C)] #[cfg_attr(feature = "codama", derive(CodamaType))] #[derive(Debug, Default, PartialEq, Clone, Copy)] #[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))] @@ -714,6 +725,7 @@ impl Delegation { feature = "serde", derive(serde_derive::Deserialize, serde_derive::Serialize) )] +#[cfg_attr(feature = "wincode", derive(wincode::SchemaRead, wincode::SchemaWrite))] pub struct Stake { pub delegation: Delegation, /// credits observed is credits from vote account state when delegated or redeemed