diff --git a/Cargo.lock b/Cargo.lock index 09445173..9ba06533 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -360,6 +360,15 @@ dependencies = [ "libc", ] +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anstream" version = "0.6.18" @@ -1049,6 +1058,21 @@ dependencies = [ "inout", ] +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap", + "unicode-width 0.1.14", + "vec_map", +] + [[package]] name = "clap" version = "4.5.28" @@ -1059,6 +1083,15 @@ dependencies = [ "clap_derive", ] +[[package]] +name = "clap-markdown" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2a2617956a06d4885b490697b5307ebb09fec10b088afc18c81762d848c2339" +dependencies = [ + "clap 4.5.28", +] + [[package]] name = "clap_builder" version = "4.5.27" @@ -1068,7 +1101,7 @@ dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim", + "strsim 0.11.1", ] [[package]] @@ -1136,7 +1169,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width", + "unicode-width 0.2.0", "windows-sys 0.59.0", ] @@ -1332,7 +1365,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.11.1", "syn 2.0.98", ] @@ -1408,6 +1441,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "dialoguer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + [[package]] name = "difflib" version = "0.4.0" @@ -1452,6 +1497,16 @@ dependencies = [ "dirs-sys", ] +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs-sys" version = "0.3.7" @@ -1463,6 +1518,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -2076,6 +2142,19 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hidapi" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b876ecf37e86b359573c16c8366bc3eba52b689884a0fc42ba3f67203d2a8b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "pkg-config", + "windows-sys 0.48.0", +] + [[package]] name = "histogram" version = "0.6.9" @@ -2430,7 +2509,7 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", "web-time", ] @@ -2526,6 +2605,43 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "jito-restaking-cli" +version = "1.0.1" +dependencies = [ + "anyhow", + "base64 0.22.1", + "borsh 0.10.4", + "bytemuck", + "chrono", + "clap 4.5.28", + "clap-markdown", + "env_logger 0.10.2", + "jito-bytemuck", + "jito-jsm-core", + "jito-restaking-client 0.0.5 (git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a)", + "jito-restaking-client-common 0.0.5 (git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a)", + "jito-restaking-core", + "jito-vault-client 0.0.5 (git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a)", + "jito-vault-core", + "jito-vault-sdk", + "log", + "serde", + "serde_json", + "solana-account-decoder", + "solana-cli-config", + "solana-program", + "solana-remote-wallet", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "spl-associated-token-account", + "spl-token", + "thiserror 1.0.69", + "tokio", + "uriparse", +] + [[package]] name = "jito-restaking-client" version = "0.0.5" @@ -2533,7 +2649,7 @@ dependencies = [ "anchor-lang", "borsh 0.10.4", "bytemuck", - "jito-restaking-client-common", + "jito-restaking-client-common 0.0.5", "num-derive", "num-traits", "serde", @@ -2542,9 +2658,31 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "jito-restaking-client" +version = "0.0.5" +source = "git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a#bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "jito-restaking-client-common 0.0.5 (git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a)", + "num-derive", + "num-traits", + "serde", + "serde_with", + "solana-program", + "thiserror 1.0.69", +] + +[[package]] +name = "jito-restaking-client-common" +version = "0.0.5" + [[package]] name = "jito-restaking-client-common" version = "0.0.5" +source = "git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a#bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a" [[package]] name = "jito-restaking-core" @@ -2628,7 +2766,7 @@ name = "jito-shank-cli" version = "0.0.5" dependencies = [ "anyhow", - "clap", + "clap 4.5.28", "env_logger 0.10.2", "envfile", "log", @@ -2643,7 +2781,24 @@ dependencies = [ "anchor-lang", "borsh 0.10.4", "bytemuck", - "jito-restaking-client-common", + "jito-restaking-client-common 0.0.5", + "num-derive", + "num-traits", + "serde", + "serde_with", + "solana-program", + "thiserror 1.0.69", +] + +[[package]] +name = "jito-vault-client" +version = "0.0.5" +source = "git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a#bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a" +dependencies = [ + "anchor-lang", + "borsh 0.10.4", + "bytemuck", + "jito-restaking-client-common 0.0.5 (git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a)", "num-derive", "num-traits", "serde", @@ -2676,16 +2831,17 @@ version = "0.0.5" dependencies = [ "anyhow", "base64 0.22.1", - "clap", + "bincode", + "clap 4.5.28", "dotenvy", "env_logger 0.10.2", "futures", "jito-account-traits-derive", "jito-bytemuck", "jito-jsm-core", - "jito-restaking-client", + "jito-restaking-client 0.0.5 (git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a)", "jito-restaking-core", - "jito-vault-client", + "jito-vault-client 0.0.5 (git+https://github.com/jito-foundation/restaking.git?rev=bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a)", "jito-vault-core", "jito-vault-sdk", "log", @@ -3373,6 +3529,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pbkdf2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +dependencies = [ + "crypto-mac", +] + [[package]] name = "pbkdf2" version = "0.11.0" @@ -3600,7 +3765,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash", + "rustc-hash 2.1.0", "rustls 0.23.22", "socket2", "thiserror 2.0.11", @@ -3618,7 +3783,7 @@ dependencies = [ "getrandom 0.2.15", "rand 0.8.5", "ring", - "rustc-hash", + "rustc-hash 2.1.0", "rustls 0.23.22", "rustls-pki-types", "rustls-platform-verifier", @@ -3883,12 +4048,39 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rpassword" +version = "7.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.59.0", +] + +[[package]] +name = "rtoolbox" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "rustc-demangle" version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc-hash" version = "2.1.0" @@ -4169,6 +4361,7 @@ version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ + "indexmap 2.7.1", "itoa", "memchr", "ryu", @@ -4226,6 +4419,19 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.7.1", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "sha1" version = "0.10.6" @@ -4341,6 +4547,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + [[package]] name = "shellexpand" version = "2.1.2" @@ -4844,6 +5056,51 @@ dependencies = [ "solana-vote-program", ] +[[package]] +name = "solana-clap-utils" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65d599be9bb385d0299d781693992038be2cdfef436fd423526f2786e09a6654" +dependencies = [ + "chrono", + "clap 2.34.0", + "rpassword", + "solana-clock", + "solana-cluster-type", + "solana-commitment-config", + "solana-derivation-path", + "solana-hash", + "solana-keypair", + "solana-message", + "solana-native-token", + "solana-presigner", + "solana-pubkey", + "solana-remote-wallet", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "thiserror 2.0.11", + "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-cli-config" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b1c2a6082108ed6665306987253d6fd8cb1f4d1e5c5ea627676f53c63697aa" +dependencies = [ + "dirs-next", + "lazy_static", + "serde", + "serde_derive", + "serde_yaml", + "solana-clap-utils", + "solana-commitment-config", + "url", +] + [[package]] name = "solana-client" version = "2.2.7" @@ -6107,6 +6364,30 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "solana-remote-wallet" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bece1535da0bc9c7febc7cffbfe6dd6a24aa2c2b4e6b05e30329661e9252d64" +dependencies = [ + "console", + "dialoguer", + "hidapi", + "log", + "num-derive", + "num-traits", + "parking_lot", + "qstring", + "semver", + "solana-derivation-path", + "solana-offchain-message", + "solana-pubkey", + "solana-signature", + "solana-signer", + "thiserror 2.0.11", + "uriparse", +] + [[package]] name = "solana-rent" version = "2.2.1" @@ -6546,7 +6827,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" dependencies = [ "hmac 0.12.1", - "pbkdf2", + "pbkdf2 0.11.0", "sha2 0.10.8", ] @@ -7775,6 +8056,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + [[package]] name = "strsim" version = "0.11.1" @@ -8004,6 +8291,15 @@ dependencies = [ "test-case-core", ] +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width 0.1.14", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -8085,6 +8381,25 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-bip39" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" +dependencies = [ + "anyhow", + "hmac 0.8.1", + "once_cell", + "pbkdf2 0.4.0", + "rand 0.7.3", + "rustc-hash 1.1.0", + "sha2 0.9.9", + "thiserror 1.0.69", + "unicode-normalization", + "wasm-bindgen", + "zeroize", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -8370,12 +8685,27 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-segmentation" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + [[package]] name = "unicode-width" version = "0.2.0" @@ -8413,6 +8743,12 @@ dependencies = [ "void", ] +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "untrusted" version = "0.9.0" @@ -8476,6 +8812,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + [[package]] name = "version_check" version = "0.9.5" diff --git a/Cargo.toml b/Cargo.toml index 8b4e71e8..62f084d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ members = [ "account_traits_derive", "bytemuck", + "cli", "clients/rust/common", "clients/rust/restaking_client", "clients/rust/vault_client", @@ -34,6 +35,7 @@ anyhow = "1.0.86" assert_matches = "1.5.0" base64 = "0.22.1" borsh = { version = "0.10.3" } +bincode = "1.3" bytemuck = { version = "1.16.3", features = ["derive", "min_const_generics"] } cfg-if = "1.0.0" chrono = "0.4.38" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index f6d3126c..48ecfe09 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -24,10 +24,10 @@ clap-markdown = { workspace = true } env_logger = { workspace = true } jito-bytemuck = { workspace = true } jito-jsm-core = { workspace = true } -jito-restaking-client = { workspace = true, features = ["serde"] } -jito-restaking-client-common = { workspace = true } +jito-restaking-client = { git = "https://github.com/jito-foundation/restaking.git", rev = "bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a", features = ["serde"] } +jito-restaking-client-common = { git = "https://github.com/jito-foundation/restaking.git", rev = "bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a" } jito-restaking-core = { workspace = true } -jito-vault-client = { workspace = true, features = ["serde"] } +jito-vault-client = { git = "https://github.com/jito-foundation/restaking.git", rev = "bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a", features = ["serde"] } jito-vault-core = { workspace = true } jito-vault-sdk = { workspace = true } log = { workspace = true } diff --git a/cli/src/vault_handler.rs b/cli/src/vault_handler.rs index dffeebca..797ab1a9 100644 --- a/cli/src/vault_handler.rs +++ b/cli/src/vault_handler.rs @@ -16,12 +16,12 @@ use jito_vault_client::{ CreateTokenMetadataBuilder, DelegateTokenAccountBuilder, EnqueueWithdrawalBuilder, InitializeConfigBuilder, InitializeVaultBuilder, InitializeVaultNcnTicketBuilder, InitializeVaultOperatorDelegationBuilder, InitializeVaultUpdateStateTrackerBuilder, - MintToBuilder, SetAdminBuilder, SetConfigAdminBuilder, SetConfigSecondaryAdminBuilder, - SetDepositCapacityBuilder, SetFeesBuilder, SetIsPausedBuilder, SetProgramFeeBuilder, - SetProgramFeeWalletBuilder, SetSecondaryAdminBuilder, UpdateTokenMetadataBuilder, - UpdateVaultBalanceBuilder, WarmupVaultNcnTicketBuilder, + MintToBuilder, SetAdminBuilder, SetConfigAdminBuilder, SetDepositCapacityBuilder, + SetFeesBuilder, SetIsPausedBuilder, SetProgramFeeBuilder, SetProgramFeeWalletBuilder, + SetSecondaryAdminBuilder, UpdateTokenMetadataBuilder, UpdateVaultBalanceBuilder, + WarmupVaultNcnTicketBuilder, }, - types::{ConfigAdminRole, VaultAdminRole, WithdrawalAllocationMethod}, + types::{VaultAdminRole, WithdrawalAllocationMethod}, }; use jito_vault_core::{ burn_vault::BurnVault, config::Config, vault::Vault, vault_ncn_ticket::VaultNcnTicket, @@ -128,12 +128,13 @@ impl VaultCliHandler { VaultCommands::Config { action: ConfigActions::SetSecondaryAdmin { - new_admin, - set_fee_admin, + new_admin: _, + set_fee_admin: _, }, } => { - self.set_config_secondary_admin(&new_admin, set_fee_admin) - .await + unimplemented!() + // self.set_config_secondary_admin(&new_admin, set_fee_admin) + // .await } VaultCommands::Config { action: ConfigActions::SetProgramFee { new_fee_bps }, @@ -1797,51 +1798,51 @@ impl VaultCliHandler { Ok(()) } - /// Sets the secondary admin roles for Config - /// - /// This function allows assigning a new administrator to various administrative roles - /// for Config. Multiple roles can be assigned in a single call by enabling the - /// corresponding boolean flags. - #[allow(clippy::future_not_send)] - async fn set_config_secondary_admin( - &self, - new_admin: &Pubkey, - set_fee_admin: bool, - ) -> Result<()> { - let signer = self.signer()?; - - let config_address = Config::find_program_address(&self.vault_program_id).0; - - let mut roles: Vec = vec![]; - if set_fee_admin { - roles.push(ConfigAdminRole::FeeAdmin); - } - - for role in roles.iter() { - let mut ix_builder = SetConfigSecondaryAdminBuilder::new(); - ix_builder - .config(config_address) - .admin(signer.pubkey()) - .new_admin(*new_admin) - .config_admin_role(*role); - let mut ix = ix_builder.instruction(); - ix.program_id = self.vault_program_id; - - info!("Setting {:?} Admin to {} for Config", role, new_admin); - - self.process_transaction(&[ix], &signer.pubkey(), &[signer]) - .await?; - } - - if !self.print_tx { - let account = self - .get_account::(&config_address) - .await?; - info!("{}", account.pretty_display()); - } - - Ok(()) - } + // Sets the secondary admin roles for Config + // + // This function allows assigning a new administrator to various administrative roles + // for Config. Multiple roles can be assigned in a single call by enabling the + // corresponding boolean flags. + // #[allow(clippy::future_not_send)] + // async fn set_config_secondary_admin( + // &self, + // new_admin: &Pubkey, + // set_fee_admin: bool, + // ) -> Result<()> { + // let signer = self.signer()?; + + // let config_address = Config::find_program_address(&self.vault_program_id).0; + + // let mut roles: Vec = vec![]; + // if set_fee_admin { + // roles.push(ConfigAdminRole::FeeAdmin); + // } + + // for role in roles.iter() { + // let mut ix_builder = SetConfigSecondaryAdminBuilder::new(); + // ix_builder + // .config(config_address) + // .admin(signer.pubkey()) + // .new_admin(*new_admin) + // .config_admin_role(*role); + // let mut ix = ix_builder.instruction(); + // ix.program_id = self.vault_program_id; + + // info!("Setting {:?} Admin to {} for Config", role, new_admin); + + // self.process_transaction(&[ix], &signer.pubkey(), &[signer]) + // .await?; + // } + + // if !self.print_tx { + // let account = self + // .get_account::(&config_address) + // .await?; + // info!("{}", account.pretty_display()); + // } + + // Ok(()) + // } /// Set the fees for Vault /// diff --git a/crankers/Cargo.toml b/crankers/Cargo.toml index 71d66d68..477f328d 100644 --- a/crankers/Cargo.toml +++ b/crankers/Cargo.toml @@ -16,6 +16,7 @@ path = "src/bin/main.rs" [dependencies] anyhow = { workspace = true } base64 = { workspace = true } +bincode = { workspace = true } clap = { workspace = true } dotenvy = { workspace = true } env_logger = { workspace = true } @@ -23,9 +24,9 @@ futures = { workspace = true } jito-account-traits-derive = { workspace = true } jito-bytemuck = { workspace = true } jito-jsm-core = { workspace = true } -jito-restaking-client = { workspace = true } +jito-restaking-client = { git = "https://github.com/jito-foundation/restaking.git", rev = "bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a", features = ["serde"] } jito-restaking-core = { workspace = true } -jito-vault-client = { workspace = true } +jito-vault-client = { git = "https://github.com/jito-foundation/restaking.git", rev = "bbc5abe64d5bbbeab1d6f33f5a63a97cc3b9638a", features = ["serde"] } jito-vault-core = { workspace = true } jito-vault-sdk = { workspace = true } log = { workspace = true } diff --git a/crankers/README.md b/crankers/README.md index 41289ec8..abe324fb 100644 --- a/crankers/README.md +++ b/crankers/README.md @@ -23,10 +23,10 @@ To run the cranker with a specific vault and restaking program: ```bash cargo run -p jito-vault-cranker -- \ --keypair-path \ - --rpc-url + --rpc-url \ --vault-program-id "Vau1t6sLNxnzB7ZDsef8TLbPLfyZMYXH8WTNqUdm9g8" \ - --restaking-program-id "RestkWeAVL8fRGgzhfeoqFhsqKRchg6aa1XrcH96z4Q" - --crank-interval 300 + --restaking-program-id "RestkWeAVL8fRGgzhfeoqFhsqKRchg6aa1XrcH96z4Q" \ + --crank-interval 300 \ --priority-fees 10000 ``` diff --git a/crankers/src/vault_handler.rs b/crankers/src/vault_handler.rs index 5b07e99b..3a78afa8 100644 --- a/crankers/src/vault_handler.rs +++ b/crankers/src/vault_handler.rs @@ -176,7 +176,6 @@ impl VaultHandler { ) -> anyhow::Result> { let mut transactions = Vec::new(); let mut current_batch = Vec::new(); - let compute_budget_ix = ComputeBudgetInstruction::set_compute_unit_price(self.priority_fees); @@ -194,13 +193,21 @@ impl VaultHandler { blockhash, ); - let tx_size = test_tx.signatures.len() + test_tx.message_data().len(); + let tx_size = bincode::serialize(&test_tx)?.len(); + + if tx_size > max_size { + // If current_batch is empty, this single instruction is too large + if current_batch.is_empty() { + anyhow::bail!( + "Single instruction exceeds max transaction size: {} > {}", + tx_size, + max_size + ); + } - if tx_size > max_size && !current_batch.is_empty() { - // Finalize current batch + // Finalize current batch without the new instruction let mut final_batch = vec![compute_budget_ix.clone()]; final_batch.extend(current_batch.clone()); - let blockhash = get_latest_blockhash_with_retry(&self.get_rpc_client()).await?; let tx = Transaction::new_signed_with_payer( &final_batch, @@ -221,7 +228,6 @@ impl VaultHandler { if !current_batch.is_empty() { let mut final_batch = vec![compute_budget_ix]; final_batch.extend(current_batch); - let blockhash = get_latest_blockhash_with_retry(&self.get_rpc_client()).await?; let tx = Transaction::new_signed_with_payer( &final_batch, @@ -388,8 +394,8 @@ impl VaultHandler { .await?; } else { let context = format!( - "Cranking failed to update all operators for vault: {vault}, tracker: {tracker_pubkey}" - ); + "Cranking failed to update all operators for vault: {vault}, tracker: {tracker_pubkey}" + ); return Err(anyhow::anyhow!(context)); }