diff --git a/Cargo.lock b/Cargo.lock index a6c001fe0..08e2d8134 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3613,7 +3613,7 @@ dependencies = [ [[package]] name = "helium-lib" version = "0.1.1" -source = "git+https://github.com/helium/helium-wallet-rs.git?branch=master#0a865a2cb5f4a537b055095f093169225eff8ae2" +source = "git+https://github.com/helium/helium-wallet-rs.git?branch=master#380abfefde653602de39807eb1ea2b104c7ad87f" dependencies = [ "anchor-client", "anchor-spl", @@ -7177,9 +7177,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4973213a11c2e1b924b36e0c6688682b5aa4623f8d4eeaa1204c32cee524e6d6" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -7202,9 +7202,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909f4553d0b31bb5b97533a6b64cc321a4eace9112d6efbabcf4408ea1b3f1db" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -7219,9 +7219,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cc431df6cc1dd964134fa4ec7df765d3af3fae9c2148f96a3c4fb500290633" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", @@ -7252,9 +7252,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e38b040d3a42e8f7d80c4a86bb0d49d7aed663b56b0fe0ae135d2d145fb7ae3a" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -7266,9 +7266,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae02622c63943485f0af3d0896626eaf6478e734f0b6bc61c7cc5320963c6e75" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", @@ -7288,9 +7288,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4867f66e9527fa44451c861c1dc6d9b2a7c7a668d7c6a297cdefbe39f4395b33" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -7313,9 +7313,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168f24d97347b85f05192df58d6be3e3047a4aadc4001bc1b9e711a5ec878eea" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", @@ -7325,9 +7325,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0511082fc62f2d086520fff5aa1917c389d8c840930c08ad255ae05952c08a2" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -7336,9 +7336,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55a3df105431d25f86f2a7da0cbbde5f54c1f0782ca59367ea4a8037bc6797" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -7346,9 +7346,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddec097ed7572804389195128dbd57958b427829153c6cd8ec3343c86fe3cd22" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -7361,9 +7361,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258fa7c29fb7605b8d2ed89aa0d43c640d14f4147ad1f5b3fdad19a1ac145ca5" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -7383,9 +7383,9 @@ dependencies = [ [[package]] name = "solana-perf" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca422edcf16a6e64003ca118575ea641f7b750f14a0ad28c71dd84f33dcb912a" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -7412,9 +7412,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc5a636dc75e5c25651e34f7a36afc9ae60d38166687c5b0375abb580ac81a2" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -7467,9 +7467,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf373c3da0387f47fee4c5ed2465a9628b9db026a62211a692a9285aa9251544" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -7495,9 +7495,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b9abc76168d19927561db6a3685b98752bd0961b4ce4f8b7f85ee12238c017" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -7520,9 +7520,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7952c5306a0be5f5276448cd20246b31265bfa884f29a077a24303c6a16aeb34" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -7547,9 +7547,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4fa0cc66f8e73d769bca2ede3012ba2ef8ab67963e832808665369f2cf81743" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -7557,9 +7557,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "289803796d4ff7b4699504d3ab9e9d9c5205ea3892b2ebe397b377494dbd75d4" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -7576,9 +7576,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb55a08018776a62ecff52139fbcdab1a7baa4e8f077202be58156e8dde4d5f" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -7602,9 +7602,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a8403038f4d6ab65bc7e7afb3afe8d9824c592232553c5cef55cf3de36025d" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -7624,9 +7624,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4caca735caf76d51c074c3bacbfe38094bf7f92cfbe7b5b13f3bc4946e64f889" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -7637,9 +7637,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df43d3a1e1637397ab43cbc216a5a8f977ec8a3cc3f3ae8c3851c83a3255dbcf" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -7692,9 +7692,9 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c76414183a325038ff020b22c07d1e9d2da0703ddc0244acfed37ee2921d96" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", @@ -7711,9 +7711,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-streamer" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad1bdb955ec6d23a1dbf87e403ff3e610d68616275693125a893d7ed4b2d323" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", @@ -7744,9 +7744,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc301310ba0755c449a8800136f67f8ad14419b366404629894cd10021495360" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -7759,9 +7759,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb887bd5078ff015e103e9ee54a6713380590efa8ff1804b3a653f07188928c6" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", @@ -7783,9 +7783,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0cdfdf63192fb60de094fae8e81159e4e3e9aac9659fe3f9ef0e707023fb32" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", @@ -7808,9 +7808,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea0d6d8d66e36371577f51c4d1d6192a66f1fa4efe7161a36d94677640dcadb" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -7823,9 +7823,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f4c2f531c22ce806b211118be8928a791425f97de4592371fb57b246ed33e34" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version 0.4.0", @@ -7839,9 +7839,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d8a6486017e71a3714a8e1a635e17209135cc20535ba9808ccf106d80ff6e8b" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -7861,9 +7861,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.17" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513407f88394e437b4ff5aad892bc5bf51a655ae2401e6e63549734d3695c46f" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -7890,9 +7890,9 @@ dependencies = [ [[package]] name = "solana_rbpf" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3" +checksum = "da5d083187e3b3f453e140f292c09186881da8a02a7b5e27f645ee26de3d9cc5" dependencies = [ "byteorder", "combine", diff --git a/Cargo.toml b/Cargo.toml index 70e7d76b0..1119de245 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,9 +74,9 @@ helium-proto = { git = "https://github.com/helium/proto", branch = "master", fea "services", ] } beacon = { git = "https://github.com/helium/proto", branch = "master" } -solana-client = "1.18" -solana-sdk = "1.18" -solana-program = "1.18" +solana-client = "1.18.26" +solana-sdk = "1.18.26" +solana-program = "1.18.26" spl-token = "3.5.0" reqwest = { version = "0", default-features = false, features = [ "gzip", diff --git a/mobile_packet_verifier/src/lib.rs b/mobile_packet_verifier/src/lib.rs index 629ff83f4..129886805 100644 --- a/mobile_packet_verifier/src/lib.rs +++ b/mobile_packet_verifier/src/lib.rs @@ -11,6 +11,7 @@ pub mod event_ids; pub mod pending_burns; pub mod pending_txns; pub mod settings; +pub mod test_burn; const BYTES_PER_DC: u64 = 20_000; diff --git a/mobile_packet_verifier/src/main.rs b/mobile_packet_verifier/src/main.rs index ede970221..1d9c39dde 100644 --- a/mobile_packet_verifier/src/main.rs +++ b/mobile_packet_verifier/src/main.rs @@ -1,6 +1,6 @@ use anyhow::Result; use clap::Parser; -use mobile_packet_verifier::{daemon, settings::Settings}; +use mobile_packet_verifier::{daemon, settings::Settings, test_burn}; use std::path::PathBuf; #[derive(clap::Parser)] @@ -28,12 +28,14 @@ impl Cli { #[derive(clap::Subcommand)] pub enum Cmd { Server(daemon::Cmd), + TestBurn(test_burn::Cmd), } impl Cmd { async fn run(self, settings: Settings) -> Result<()> { match self { Self::Server(cmd) => cmd.run(&settings).await, + Self::TestBurn(cmd) => cmd.run(&settings).await, } } } diff --git a/mobile_packet_verifier/src/test_burn.rs b/mobile_packet_verifier/src/test_burn.rs new file mode 100644 index 000000000..f1002a28a --- /dev/null +++ b/mobile_packet_verifier/src/test_burn.rs @@ -0,0 +1,78 @@ +use std::str::FromStr; + +use crate::settings::Settings; +use anyhow::{bail, Context, Result}; +use helium_crypto::PublicKeyBinary; +use solana::{ + burn::{SolanaNetwork, SolanaRpc}, + sender::{SenderError, SenderResult, TxnStore}, + Transaction, +}; + +#[derive(Debug, clap::Args)] +pub struct Cmd { + /// Router key from which to burn delegated DC from. + payer: String, + /// Use a dummy TxnStore for sending + #[arg(long)] + use_txn_store: bool, +} + +impl Cmd { + pub async fn run(self, settings: &Settings) -> Result<()> { + let Some(ref solana_settings) = settings.solana else { + bail!("Missing solana section in settings"); + }; + let solana = SolanaRpc::new(solana_settings, solana::SubDao::Mobile).await?; + + let payer = PublicKeyBinary::from_str(&self.payer).context("Payer -> PublicKeyBinary")?; + let txn = solana + .make_burn_transaction(&payer, 1) + .await + .context("making burn txn")?; + + if self.use_txn_store { + println!("sending with txn store..."); + let store = DummyTxnStore; + let res = solana.submit_transaction(&txn, &store).await; + println!("txn store: {res:?}"); + } else { + println!("sending with send_and_confirm_transaction"); + let res = solana.provider.send_and_confirm_transaction(&txn).await; + println!("send_and_confirm_transaction: {res:?}"); + } + + Ok(()) + } +} + +struct DummyTxnStore; + +#[async_trait::async_trait] +impl TxnStore for DummyTxnStore { + async fn on_prepared(&self, txn: &Transaction) -> SenderResult<()> { + let signature = txn.get_signature(); + println!("prepared... {signature}"); + Ok(()) + } + + async fn on_sent(&self, txn: &Transaction) { + let signature = txn.get_signature(); + println!("sent... {signature}"); + } + + async fn on_sent_retry(&self, txn: &Transaction, attempt: usize) { + let signature = txn.get_signature(); + println!("retrying ({attempt})... {signature}"); + } + + async fn on_finalized(&self, txn: &Transaction) { + let signature = txn.get_signature(); + println!("finalized... {signature}"); + } + + async fn on_error(&self, txn: &Transaction, err: SenderError) { + let signature = txn.get_signature(); + println!("txn error: {signature}\n{err:?}"); + } +} diff --git a/solana/src/burn.rs b/solana/src/burn.rs index bafbbbaa6..b86aa54da 100644 --- a/solana/src/burn.rs +++ b/solana/src/burn.rs @@ -58,7 +58,7 @@ impl Settings { pub struct SolanaRpc { sub_dao: SubDao, - provider: client::SolanaRpcClient, + pub provider: client::SolanaRpcClient, keypair: Keypair, payers_to_monitor: Vec, transaction_opts: TransactionOpts,