From be5f9a9fa062b9238e1d3e8f437ce4ce4d4e1a90 Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 26 Dec 2024 23:24:23 -0500 Subject: [PATCH] icepick workflow sol generate-nonce-account --- Cargo.lock | 959 ++++++++++++++------ crates/builtins/icepick-internal/src/lib.rs | 16 + crates/by-chain/icepick-solana/Cargo.toml | 4 + crates/by-chain/icepick-solana/src/lib.rs | 322 ++++++- crates/icepick/src/cli/workflow.rs | 2 + icepick.toml | 55 ++ 6 files changed, 1057 insertions(+), 301 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a1d2e7..007b2dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,16 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + [[package]] name = "addr2line" version = "0.24.2" @@ -65,6 +75,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -80,6 +99,21 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "0.6.18" @@ -131,9 +165,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "ark-bn254" @@ -270,6 +304,12 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + [[package]] name = "async-compression" version = "0.4.18" @@ -292,7 +332,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -372,9 +412,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" dependencies = [ "arrayref", "arrayvec", @@ -445,7 +485,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -518,22 +558,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.20.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -544,15 +584,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cc" -version = "1.2.1" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" dependencies = [ "jobserver", "libc", @@ -579,16 +619,22 @@ checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", ] [[package]] @@ -603,9 +649,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -613,9 +659,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -632,14 +678,14 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "colorchoice" @@ -728,18 +774,18 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" @@ -828,7 +874,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -852,7 +898,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -863,7 +909,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -921,7 +967,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -1052,7 +1098,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -1194,7 +1240,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -1331,9 +1377,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -1341,12 +1387,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hmac" version = "0.8.1" @@ -1413,9 +1453,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -1449,6 +1489,29 @@ dependencies = [ "tokio-rustls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "icepick" version = "0.1.0" @@ -1487,15 +1550,19 @@ name = "icepick-solana" version = "0.1.0" dependencies = [ "base64 0.22.1", + "bincode", + "bs58", "ed25519-dalek 1.0.1", "icepick-module", "serde", "serde_json", "solana-rpc-client", "solana-sdk", - "spl-associated-token-account", - "spl-token", - "spl-token-2022", + "solana-transaction-status", + "solana-transaction-status-client-types", + "spl-associated-token-account 6.0.0", + "spl-token 7.0.0", + "spl-token-2022 6.0.0", "thiserror 2.0.9", ] @@ -1614,7 +1681,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -1646,12 +1713,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.1", + "hashbrown 0.15.2", ] [[package]] @@ -1695,9 +1762,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jobserver" @@ -1710,10 +1777,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1833,9 +1901,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.164" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libsecp256k1" @@ -1961,20 +2029,19 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", @@ -2033,7 +2100,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -2095,14 +2162,14 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -2142,7 +2209,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -2289,9 +2356,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -2307,9 +2374,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -2387,13 +2454,42 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + [[package]] name = "reqwest" version = "0.11.27" @@ -2567,15 +2663,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "serde" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] @@ -2591,20 +2687,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa", "memchr", @@ -2635,9 +2731,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ "serde", "serde_derive", @@ -2646,14 +2742,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -2743,9 +2839,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -2753,9 +2849,9 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba603776de1d249aee5b79ce668a7895edb78a038cd7a6060cee8b22f65eed65" +checksum = "71d6ef82dab153c60b1da169126d8eca1b62bbf4026f95a45a71897f3e9a0224" dependencies = [ "bincode", "serde", @@ -2766,10 +2862,36 @@ dependencies = [ ] [[package]] -name = "solana-account-decoder-client-types" -version = "2.1.1" +name = "solana-account-decoder" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc3bed812b951286cd60a637cd8f46811131b7a974e5f4077583beb5302e97d7" +checksum = "377daf04565dddcc1bd97de7a346918931d467233aeadce992d8f0ed38c51a3c" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "bs58", + "bv", + "lazy_static", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder-client-types", + "solana-config-program", + "solana-sdk", + "spl-token 6.0.0", + "spl-token-2022 4.0.0", + "spl-token-group-interface 0.3.0", + "spl-token-metadata-interface 0.4.0", + "thiserror 1.0.69", + "zstd", +] + +[[package]] +name = "solana-account-decoder-client-types" +version = "2.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82c3a45e569bca5640b620e5f82e11103fb8a338c1f53c02dc305ea15c67de98" dependencies = [ "base64 0.22.1", "bs58", @@ -2783,9 +2905,9 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213a2c582fadaa92c84dbc7b1002a3c78d10cfed67a9a2795fae783ff3680f90" +checksum = "8378a48833ee7f828e20a63e93a6cdaef1313a8fd8f71a90b243df83295987b1" dependencies = [ "bincode", "serde", @@ -2796,18 +2918,18 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d7c8911028e3dd8f2cabe4471f10f64841644d2139fede5cb50eaac87c7e9e6" +checksum = "bc6f9da603778bbee6402ee2526a3b219b85497c10e49f9c7c112ed8836f46d3" dependencies = [ "parking_lot", ] [[package]] name = "solana-bincode" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3e4413097a51248c1c8cd24d6a6934272d677be54ad56b876999c335831dfc" +checksum = "eb75b5d25ae05cfddb8b9b53512f17c18c29e3c92b7a848f39598473e6bf6484" dependencies = [ "bincode", "serde", @@ -2816,9 +2938,9 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53774bd2752cb40d7e4e2a45d83d2b20212dbfb108850f69f4bd86933cad8f86" +checksum = "6df7c5b61b4ed3961cbaef5f38c58d1ee9a2268cbe607c67a54083b7b02d6276" dependencies = [ "ark-bn254", "ark-ec", @@ -2831,9 +2953,9 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cfbaf3130c77c18399a51fa3c4e31db15d5c7a5fa2a0a024a378db21287e209" +checksum = "055c45b7aae61c8c7b26a537f7a8387cc8a10036081ddfd7170a7a9b4d924ffd" dependencies = [ "borsh 0.10.4", "borsh 1.5.3", @@ -2841,9 +2963,9 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a76c3f2dd8234264d738d30d032e083ceeb07b5a3168a5b129aafa437af1270" +checksum = "e5d6af32497acc6bb09d8150ea6f53df25dbad713991741999d46688beaf944e" dependencies = [ "serde", "serde_derive", @@ -2853,18 +2975,34 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355c155665d4366fe037071aa0a9950a95b663983c4e3cd4a202d1da62b5b590" +checksum = "8fbc816c5b85021103c2a09cee40fb1c07d265144284c604f480b5b8a1fc1e50" dependencies = [ "solana-sdk", ] [[package]] -name = "solana-cpi" -version = "2.1.1" +name = "solana-config-program" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a4d6df3dc4b5ccb24782e0f869f9ec279d6bde5326bb62ad830330e4e0d97e4" +checksum = "def13861ad090a81b72f216e5b6fbdb47eaa09e2a24b134d87f44aad356c5d33" +dependencies = [ + "bincode", + "chrono", + "serde", + "serde_derive", + "solana-log-collector", + "solana-program-runtime", + "solana-sdk", + "solana-short-vec", +] + +[[package]] +name = "solana-cpi" +version = "2.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b06ac8e2ebf8a5b8a54645b721f92f5d7a6d116550bbf1817167cc48abeb1" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -2876,9 +3014,9 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e5ba4b41a9dbe44ced90ef703670e01db50c9f8f71b632740b58285b2ed4ac" +checksum = "5344c8fb488fdf37845765c802f01198db010b16f4b4113dcb122549e303153f" dependencies = [ "bytemuck", "bytemuck_derive", @@ -2889,24 +3027,24 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a644cc267f15bc9b02fb97d9573869cd7f4bd654dc5c1eac1495bc7dd1acb074" +checksum = "99f2fe3170045ae27951ae476a0c88a40130b242736f033ba5e353cd6f816b8e" dependencies = [ "num-traits", ] [[package]] name = "solana-define-syscall" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49d4c912636ef11caeca0c097d020060f0021bf2d45707c0d15811cc0ca1db78" +checksum = "14a80d323dbe8866aaefb40e3c11564d82f77894d193fa66583e793f3d845723" [[package]] name = "solana-derivation-path" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fb8b0b1bed3b31561689b4fda9b04657f14fd5292a272d75730ef30267a767" +checksum = "dff423e05929ec73c0997aa0d4aeae7a7bb52ccabc23699ceaa1f2ae854a5fa4" dependencies = [ "derivation-path", "qstring", @@ -2915,9 +3053,9 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a005abde2c87c2fef95bafbe1c91a1e255d9ba27e8fd692603f3ccee66bd8c4c" +checksum = "276fda33b7de27df41e3043f344e517d5e85ab345d2f2aa2425d1011bac570c4" dependencies = [ "serde", "serde_derive", @@ -2927,9 +3065,9 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d49a6896c1a8a64831ee9f09cfc17850e9c6714c7b4207acd80534b62c7ed3d" +checksum = "155ef7ddcf7b75ef92d992839bd00ac4ee02bdfe0fa4d95daf0534b830b1bc0e" dependencies = [ "lazy_static", "solana-clock", @@ -2941,9 +3079,9 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211959a60a1ff7d0ab839c8d63025fcffff9ed6ed345b396679c3d2a197ce2bf" +checksum = "abc0371153eda80024109800051b87bab11f056fae260ca477a50875aaffdfde" dependencies = [ "log", "serde", @@ -2952,9 +3090,9 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6631c9888f0adfa287d7a09e669eea80017a655807352789f2b5056c0abd353a" +checksum = "7067f2bd1e9c3f28153484f03e44bf8dc73cededa6bc132e40de9bfc667b8534" dependencies = [ "borsh 1.5.3", "bs58", @@ -2970,9 +3108,9 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e374da5f22af540c2ceed1e1e8ddb7bf5fc975775de3f7da88febe8484ba035" +checksum = "e4e27906f90ba8df331903292a499cc776e70ee29995da4bf5a81b54d27edefa" dependencies = [ "serde", "serde_derive", @@ -2980,9 +3118,9 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ca93a47c700c1c2667719243adff8f1ea7c330db1dba77718e92d2b0b13dd4" +checksum = "85b58f0f8965285c9a045945a4089030914d7198484e4754b087d4217afeff7c" dependencies = [ "bytemuck", "solana-pubkey", @@ -2990,9 +3128,9 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7398f745301e979ae0b7c9b54927f6fa471d063d4d65d49c3b392778f575692" +checksum = "7dbf607aff88e4f17079a33d34517b7f379d752dfa0496a94cea798a91e6f6ee" dependencies = [ "bincode", "borsh 1.5.3", @@ -3008,9 +3146,9 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8974782a4eeb5205c61d1e0b4c716f375ff11ed55b16a7837752cc50d5f7414" +checksum = "38f2ee9af7a2815137c60d77cb930c26480bc802b55e00d9e230e81fd308062e" dependencies = [ "serde", "serde_derive", @@ -3020,24 +3158,24 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406637a4c492b0c7baf20b8c85b81be5dae0f056c783a473f7d9b74bd9330b14" +checksum = "4adf7c3c024afb504796bace240776f9fc5a2287fa32269ee7071058cdd36378" dependencies = [ "log", ] [[package]] name = "solana-measure" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e269de29bf061aefb4d71cb6d79fa1dbe714eca39e5c4726d73b38c12e375269" +checksum = "dcad4cf5c745ecc15fab2840a5bd35489bf467790359316b66950a8cf62c2a04" [[package]] name = "solana-metrics" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4c28a324036908829d4c7ba0b4fd9b1c20666fa11440efd796a88714a028f3" +checksum = "85f54610e313cad7a251ee8fbac5a43cbba66cdf5a92353a4945743b0e50678d" dependencies = [ "crossbeam-channel", "gethostname", @@ -3050,24 +3188,24 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa324c0dabbbb43365e072a0bbc8285fbd2106ead49f9a69d654981adffaf4d6" +checksum = "406cd9c6ed9d4d036da00c958f0f98edb248c08eb596975011a30063ac3aa902" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56baf987d7700eb58dd7b522af5281cc40fdfc790290a17c16ec0b037f31084b" +checksum = "08ef55ad8dcc8c5f21e2bbbc7298fa59550269e8bdf2c6976c4de626ea8a0069" [[package]] name = "solana-packet" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374b5e4ea5c79e831ac822a81944b9bc9769606fbfa0aa532ad1e0d348302aaf" +checksum = "dfac9266a6cb79d0d37a7ae1a9944559caa286d93005773bf8005583ffcd652c" dependencies = [ "bincode", "bitflags 2.6.0", @@ -3079,9 +3217,9 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d49afd1a3f61933e858f0c39ba633880df4bf27c7dd5ca0c91ffd9785c889090" +checksum = "ba5a85f003d72bcc94cd394dcbef150bb18ccd03bd5fee6b6e8927bb0fbbe26d" dependencies = [ "num-traits", "solana-decode-error", @@ -3089,9 +3227,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02871dca5b8a09d8c97e3c8223ecf7e2f9be357df55730c2cad735f44354ac9" +checksum = "99c693c5c392bacc44e7a86baa18069eb966d88afbc9040219ca000e873fb02e" dependencies = [ "base64 0.22.1", "bincode", @@ -3162,9 +3300,9 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2231a596d871922e3e96e7bd6fec3c1abb72a3f15dea90e004dfd42cd4ad13" +checksum = "9e0696f51a4386f92f4e1807059bd2b649c207688b9249df332d0fd5ecac240c" dependencies = [ "solana-account-info", "solana-msg", @@ -3174,9 +3312,9 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02256ba0287dd14b84ae8e56b93f56d69aba330c5eb5e356de40e9ed37d6471" +checksum = "7bd557d10df4380234f5b4a5971a0cae29eedcc42ebe4bbe926a21ff31912e99" dependencies = [ "borsh 1.5.3", "num-traits", @@ -3190,9 +3328,9 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e8df1bb4b18fd92b0d2edac26660ffb9062d41e80da83722f174aeda1c1ba4" +checksum = "ef71296a3fa6ebaa38ae522bea71af82b7deeea170e459efa3c539b8f14e0155" dependencies = [ "num-traits", "solana-define-syscall", @@ -3200,24 +3338,24 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b67473cc913ec7f7438e73512a940d94e17c6248df6e2eff2c11a4fe685db1e" +checksum = "506908720b9b1660f2087d9c6f45ba208fa67a0f34658804517324ef65fd432b" [[package]] name = "solana-program-pack" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca6983f71f7bb2480e2a310e5ff99269414da1bf33bfd2828e25afdd0a16307" +checksum = "21820c32999ce24532fb12d6188daeffa27eb88a366505a4a0553857729aae52" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34fe4e7d87854259c3262bf4182457de08ecf00d0624e3b2d403641809e0e7b" +checksum = "e77e2768067a37a8d20cd98f10e8ac653077171adc15d4acbee01aa253b95051" dependencies = [ "base64 0.22.1", "bincode", @@ -3245,9 +3383,9 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e820ad0abe44b6c41878a0d655e678d535d32da1e67828e41684fc57f06918" +checksum = "c46701a845b731f2ffcf002c4bb08968434b9cf5e576cdd705259421074d1764" dependencies = [ "borsh 0.10.4", "borsh 1.5.3", @@ -3272,9 +3410,9 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d71c2a454e30cd4b190e57e95b8e89f339bfdab582c2d8443d83a0a020e175" +checksum = "05a4d15fe63d0e9a9551adfecfec495e3d50ba0bc4705001010c724fe84f65d8" dependencies = [ "serde", "serde_derive", @@ -3284,9 +3422,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3b38da01a7cef6bd08163834e311d67d7023dfa7afa4a2b33263a148fbb029" +checksum = "f9a8da03038ea6390bf23c4584a8ff026038179b23618ab791ce27114ca64fff" dependencies = [ "async-trait", "base64 0.22.1", @@ -3310,9 +3448,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4dc021107a7eda25bd263239609974390de2bbf07568ec87eaa64772988615" +checksum = "00156cc75b95b5a0f0cf1ec48fa9fce878364fe7900c40a87c8cad91647b3af0" dependencies = [ "anyhow", "base64 0.22.1", @@ -3334,15 +3472,15 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e7bf74043d11d90e478a8fc2993fc34d332721c5958810a7dc49c9d5e9e086f" +checksum = "3b8c536460c84ec7cbcce45d8a68ab1c12c99933cfeb0cb332567e67a27eea2f" [[package]] name = "solana-sdk" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336579d2332cb16af892b0bbf0afcca14072e19421c3770de27167d4c186e9ab" +checksum = "70bf67076763533f4b43210ad2b966672b8d8b1c837f69987bb780e6c4e6d549" dependencies = [ "bincode", "bitflags 2.6.0", @@ -3404,21 +3542,21 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffc7208fe8f6c36fdeec03eb3b8e7aa5e637c7992012d9c68e354605bcdc387" +checksum = "24c160cb22c3671fe2e0fd7c3630701cfccae308174d8d31d7fc93386c3cc381" dependencies = [ "bs58", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] name = "solana-secp256k1-recover" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8901b7befaa3864619392ef7302afce5d9769231acda2490b159009c83e21ab" +checksum = "3ece1b12237c7755a2070ab1d309a236b506041dd1d7927c7053b04cd3203728" dependencies = [ "borsh 1.5.3", "libsecp256k1", @@ -3428,9 +3566,9 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "991361e609e8c8e21b2e7bccc8b329e6b7b0788e883b59f0e12a43181fe1675f" +checksum = "298640939d73b9229445f611d5db91bb53edf860f211911e9abc3b666799b12e" dependencies = [ "bytemuck", "openssl", @@ -3448,18 +3586,18 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-serde-varint" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a43dacb52deca3af4a72a88b1a533506b75ff7d9428fc0f8ebe2ebd38f0190b" +checksum = "0ef862fbe970f90d0e024c6dfca71f25210ec9a52c0e62d94249aae10bda8e97" dependencies = [ "serde", ] [[package]] name = "solana-serialize-utils" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1335151f8519df13183a7c913764cbfef8afaae282dc7196c1a30cc3ef8c2869" +checksum = "a6f1cdaa53aea6fa76dbacd1504e307c4d9665edd50d6d2c5154cd1f88caa1d2" dependencies = [ "solana-instruction", "solana-pubkey", @@ -3468,9 +3606,9 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c49345545ea5144954b065aea76ea527766b3475402dc8278b91f6ffbb425975" +checksum = "4806e0ffeeb460968219b6a20176b1dc616089e84de1cd37e50cf7f01e295ad9" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -3479,18 +3617,18 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7f15694e7c7bc31ac0946163a56fdeb73c66fa5601f3b4ca2dc5703b975e31" +checksum = "824dee0886a8504a62a0c06bf95928d43cec0b077992d2b543e0f898775a4931" dependencies = [ "serde", ] [[package]] name = "solana-signature" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea56a4cca29f0785f72aed81ada27d03e0be408cb570f68a8f99665bb8ccd7b5" +checksum = "29cb6cae156bc2c80ae34b2b365cf460be974cf5c68799e7024615f88f54aed4" dependencies = [ "bs58", "ed25519-dalek 1.0.1", @@ -3503,9 +3641,9 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "861fadc8ece3779402ad16042fe60556fdb9fd5b94d624a1e70e35044db04a21" +checksum = "409010900f8c357c6cb7bec25014f96e7a0826ca47c915f61f94358b01df9f68" dependencies = [ "serde", "serde_derive", @@ -3515,9 +3653,9 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ec1680dd1e71b236472e4f55218e3829b1e8e23f2216437b9a482307b8caa4a" +checksum = "82dfd06c84fa3baea6686178b34be9f9485849045ba401c5d0e8eee2eaf485ab" dependencies = [ "bv", "serde", @@ -3527,9 +3665,9 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36bffd885d1e90782076e1e624c32b29862316c85a5f80dd255878935e49c73b" +checksum = "6d1629426668b0c503ce86e2fad9ed6d9d525efa958365e6b890397af491c545" dependencies = [ "solana-instruction", "solana-pubkey", @@ -3537,18 +3675,18 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "393366deb64dfaaaf6f9bc49a7bde1271642eaa2a5ed461f20d393cefd6919e8" +checksum = "a9ec6dbb5d57e773722824069d1b2283e552f0363b1be39aa177b1d77b51ea6e" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-timings" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579860d65f40f387b27743de5343f86e4d0c57084a411f8720dbc9fbbb03554d" +checksum = "c3e757afc3d9bc9b5b9cf1bea1bacd30dbbf32aa6d61e02b45afe0a861ae80f7" dependencies = [ "eager", "enum-iterator", @@ -3557,9 +3695,9 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fdf1f0647266cf4477de798dc04adf5d82b37229732384a2b8453a6e57ea0d" +checksum = "832ead1987e67eb4cd9a742b8e778169966d600955a39efa50b83a6bb3dec6d3" dependencies = [ "serde", "serde_derive", @@ -3568,10 +3706,38 @@ dependencies = [ ] [[package]] -name = "solana-transaction-status-client-types" -version = "2.1.1" +name = "solana-transaction-status" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3309730bccbccc5a9b1dba39cf6c534e4a6ea4c38c0c24420826521154fe0e8c" +checksum = "f5d2b88c8e10b47f0cf72bd98e9b6fa1d645ef74e101d8797e37d44a9c75ba10" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "borsh 1.5.3", + "bs58", + "lazy_static", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "solana-transaction-status-client-types", + "spl-associated-token-account 4.0.0", + "spl-memo 5.0.0", + "spl-token 6.0.0", + "spl-token-2022 4.0.0", + "spl-token-group-interface 0.3.0", + "spl-token-metadata-interface 0.4.0", + "thiserror 1.0.69", +] + +[[package]] +name = "solana-transaction-status-client-types" +version = "2.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbc1cbda2dd0e7de457af792c708e940dcf82991fc57f10390b62667fc5dd29" dependencies = [ "base64 0.22.1", "bincode", @@ -3587,9 +3753,9 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3945da294527fcfd9e0250caf8385c2fc13ca304578a1383b795ed04b26b793f" +checksum = "a8ae015d075feeeca8ecf4fe2a7f1b8a1bd8c3002354af260c56f580bee5b737" dependencies = [ "lazy_static", "rand 0.8.5", @@ -3597,9 +3763,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c35d603cba4fe62b3025c3b1e6fb849f6c623a47e89822f082b35eb591db277" +checksum = "9c6e31a55156877e3f8da59dc6428976952fefee9f27d09d77a40dad3bd8aa86" dependencies = [ "semver", "serde", @@ -3611,9 +3777,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aab9b7a774ff00ec509245aa1be4ce6a4eb71498072ee30a5df11e34fb3d83" +checksum = "9f83d18727d801e3ef5d8c29a66f9632ecd8e9f069a2891a6f730df0f2b1db82" dependencies = [ "itertools 0.12.1", "log", @@ -3625,9 +3791,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6abc1ea08c4dc8b676375a46cfbe96f57d39eedfe5ed4e9e6947db63fdac017" +checksum = "16362e21cdee5b7a55a353f1d6adae59149dab696998ad85fda151ee621aad00" dependencies = [ "bincode", "log", @@ -3645,9 +3811,9 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.1" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13efd21dfbfd0e54125a6ed29bcc4b79b84b33eeb0a331580a3927e0cee96c0" +checksum = "ab1ed794c1cc420e984204c495535293a124aa9befc342441a861648c04df9d3" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -3675,6 +3841,38 @@ dependencies = [ "zeroize", ] +[[package]] +name = "solana-zk-token-sdk" +version = "2.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c738deb869af7fffa26a189022edc8b3dfb9789f53fc604ca4f5d25aa326170" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "byteorder", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "lazy_static", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-curve25519", + "solana-derivation-path", + "solana-program", + "solana-sdk", + "subtle", + "thiserror 1.0.69", + "zeroize", +] + [[package]] name = "solana_rbpf" version = "0.8.5" @@ -3709,6 +3907,22 @@ dependencies = [ "der", ] +[[package]] +name = "spl-associated-token-account" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68034596cf4804880d265f834af1ff2f821ad5293e41fa0f8f59086c181fc38e" +dependencies = [ + "assert_matches", + "borsh 1.5.3", + "num-derive", + "num-traits", + "solana-program", + "spl-token 6.0.0", + "spl-token-2022 4.0.0", + "thiserror 1.0.69", +] + [[package]] name = "spl-associated-token-account" version = "6.0.0" @@ -3720,8 +3934,8 @@ dependencies = [ "num-traits", "solana-program", "spl-associated-token-account-client", - "spl-token", - "spl-token-2022", + "spl-token 7.0.0", + "spl-token-2022 6.0.0", "thiserror 1.0.69", ] @@ -3737,9 +3951,20 @@ dependencies = [ [[package]] name = "spl-discriminator" -version = "0.4.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a20542d4c8264856d205c0090512f374dbf7b3124479a3d93ab6184ae3631aa" +checksum = "a38ea8b6dedb7065887f12d62ed62c1743aa70749e8558f963609793f6fb12bc" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" dependencies = [ "bytemuck", "solana-program-error", @@ -3755,7 +3980,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -3767,7 +3992,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.87", + "syn 2.0.92", "thiserror 1.0.69", ] @@ -3780,10 +4005,19 @@ dependencies = [ "bytemuck", "solana-program", "solana-zk-sdk", - "spl-pod", + "spl-pod 0.5.0", "spl-token-confidential-transfer-proof-extraction", ] +[[package]] +name = "spl-memo" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0dba2f2bb6419523405d21c301a32c9f9568354d4742552e7972af801f4bdb3" +dependencies = [ + "solana-program", +] + [[package]] name = "spl-memo" version = "6.0.0" @@ -3798,6 +4032,20 @@ dependencies = [ "solana-pubkey", ] +[[package]] +name = "spl-pod" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c704c88fc457fa649ba3aabe195c79d885c3f26709efaddc453c8de352c90b87" +dependencies = [ + "borsh 1.5.3", + "bytemuck", + "bytemuck_derive", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error 0.5.0", +] + [[package]] name = "spl-pod" version = "0.5.0" @@ -3818,6 +4066,19 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "spl-program-error" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7b28bed65356558133751cc32b48a7a5ddfc59ac4e941314630bbed1ac10532" +dependencies = [ + "num-derive", + "num-traits", + "solana-program", + "spl-program-error-derive", + "thiserror 1.0.69", +] + [[package]] name = "spl-program-error" version = "0.6.0" @@ -3840,7 +4101,21 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.87", + "syn 2.0.92", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37a75a5f0fcc58126693ed78a17042e9dc53f07e357d6be91789f7d62aff61a4" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.3.0", + "spl-pod 0.3.1", + "spl-program-error 0.5.0", + "spl-type-length-value 0.5.0", ] [[package]] @@ -3858,10 +4133,25 @@ dependencies = [ "solana-msg", "solana-program-error", "solana-pubkey", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", + "spl-discriminator 0.4.1", + "spl-pod 0.5.0", + "spl-program-error 0.6.0", + "spl-type-length-value 0.7.0", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-token" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a0f06ac7f23dc0984931b1fe309468f14ea58e32660439c1cef19456f5d0e3" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program", "thiserror 1.0.69", ] @@ -3880,6 +4170,30 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "spl-token-2022" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c10f3483e48679619c76598d4e4aebb955bc49b0a5cc63323afbf44135c9bf" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo 5.0.0", + "spl-pod 0.3.1", + "spl-token 6.0.0", + "spl-token-group-interface 0.3.0", + "spl-token-metadata-interface 0.4.0", + "spl-transfer-hook-interface 0.7.0", + "spl-type-length-value 0.5.0", + "thiserror 1.0.69", +] + [[package]] name = "spl-token-2022" version = "6.0.0" @@ -3895,16 +4209,16 @@ dependencies = [ "solana-security-txt", "solana-zk-sdk", "spl-elgamal-registry", - "spl-memo", - "spl-pod", - "spl-token", + "spl-memo 6.0.0", + "spl-pod 0.5.0", + "spl-token 7.0.0", "spl-token-confidential-transfer-ciphertext-arithmetic", "spl-token-confidential-transfer-proof-extraction", "spl-token-confidential-transfer-proof-generation", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface", - "spl-type-length-value", + "spl-token-group-interface 0.5.0", + "spl-token-metadata-interface 0.6.0", + "spl-transfer-hook-interface 0.9.0", + "spl-type-length-value 0.7.0", "thiserror 1.0.69", ] @@ -3930,7 +4244,7 @@ dependencies = [ "solana-curve25519", "solana-program", "solana-zk-sdk", - "spl-pod", + "spl-pod 0.5.0", "thiserror 1.0.69", ] @@ -3945,6 +4259,19 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "spl-token-group-interface" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8752b85a5ecc1d9f3a43bce3dd9a6a053673aacf5deb513d1cbb88d3534ffd" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.3.0", + "spl-pod 0.3.1", + "spl-program-error 0.5.0", +] + [[package]] name = "spl-token-group-interface" version = "0.5.0" @@ -3959,11 +4286,25 @@ dependencies = [ "solana-msg", "solana-program-error", "solana-pubkey", - "spl-discriminator", - "spl-pod", + "spl-discriminator 0.4.1", + "spl-pod 0.5.0", "thiserror 1.0.69", ] +[[package]] +name = "spl-token-metadata-interface" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6c2318ddff97e006ed9b1291ebec0750a78547f870f62a69c56fe3b46a5d8fc" +dependencies = [ + "borsh 1.5.3", + "solana-program", + "spl-discriminator 0.3.0", + "spl-pod 0.3.1", + "spl-program-error 0.5.0", + "spl-type-length-value 0.5.0", +] + [[package]] name = "spl-token-metadata-interface" version = "0.6.0" @@ -3979,12 +4320,28 @@ dependencies = [ "solana-msg", "solana-program-error", "solana-pubkey", - "spl-discriminator", - "spl-pod", - "spl-type-length-value", + "spl-discriminator 0.4.1", + "spl-pod 0.5.0", + "spl-type-length-value 0.7.0", "thiserror 1.0.69", ] +[[package]] +name = "spl-transfer-hook-interface" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a110f33d941275d9f868b96daaa993f1e73b6806cc8836e43075b4d3ad8338a7" +dependencies = [ + "arrayref", + "bytemuck", + "solana-program", + "spl-discriminator 0.3.0", + "spl-pod 0.3.1", + "spl-program-error 0.5.0", + "spl-tlv-account-resolution 0.7.0", + "spl-type-length-value 0.5.0", +] + [[package]] name = "spl-transfer-hook-interface" version = "0.9.0" @@ -4002,14 +4359,27 @@ dependencies = [ "solana-msg", "solana-program-error", "solana-pubkey", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-tlv-account-resolution", - "spl-type-length-value", + "spl-discriminator 0.4.1", + "spl-pod 0.5.0", + "spl-program-error 0.6.0", + "spl-tlv-account-resolution 0.9.0", + "spl-type-length-value 0.7.0", "thiserror 1.0.69", ] +[[package]] +name = "spl-type-length-value" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdcd73ec187bc409464c60759232e309f83b52a18a9c5610bf281c9c6432918c" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.3.0", + "spl-pod 0.3.1", + "spl-program-error 0.5.0", +] + [[package]] name = "spl-type-length-value" version = "0.7.0" @@ -4023,8 +4393,8 @@ dependencies = [ "solana-decode-error", "solana-msg", "solana-program-error", - "spl-discriminator", - "spl-pod", + "spl-discriminator 0.4.1", + "spl-pod 0.5.0", "thiserror 1.0.69", ] @@ -4059,9 +4429,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "70ae51629bf965c5c098cc9e87908a3df5301051a9e087d6f9bef5c9771ed126" dependencies = [ "proc-macro2", "quote", @@ -4082,7 +4452,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -4141,7 +4511,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -4152,7 +4522,7 @@ checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -4167,9 +4537,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -4182,9 +4552,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -4206,7 +4576,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -4221,9 +4591,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -4283,9 +4653,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-core", @@ -4314,15 +4684,15 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicase" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "universal-hash" @@ -4429,9 +4799,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -4440,36 +4810,36 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4477,28 +4847,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -4532,6 +4902,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -4731,7 +5110,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", "synstructure", ] @@ -4753,7 +5132,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -4773,7 +5152,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", "synstructure", ] @@ -4794,7 +5173,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] @@ -4816,7 +5195,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.92", ] [[package]] diff --git a/crates/builtins/icepick-internal/src/lib.rs b/crates/builtins/icepick-internal/src/lib.rs index 7e87a47..b3724b7 100644 --- a/crates/builtins/icepick-internal/src/lib.rs +++ b/crates/builtins/icepick-internal/src/lib.rs @@ -29,6 +29,11 @@ pub enum Request { #[serde(flatten)] values: serde_json::Value, }, + + Cat { + #[serde(flatten)] + values: serde_json::Value, + }, } #[derive(thiserror::Error, Debug)] @@ -58,6 +63,12 @@ impl Module for Internal { description: "Save data from a JSON file.".to_string(), arguments: vec![filename.clone()], }, + icepick_module::help::Operation { + name: "cat".to_string(), + description: "Return all inputs. Usable in workflows to sum up all desired outputs" + .to_string(), + arguments: vec![], + }, ] } @@ -100,6 +111,11 @@ impl Module for Internal { "blob": {}, })) } + Request::Cat { values } => { + Ok(serde_json::json!({ + "blob": values, + })) + } } } } diff --git a/crates/by-chain/icepick-solana/Cargo.toml b/crates/by-chain/icepick-solana/Cargo.toml index c9d2de3..5ca6197 100644 --- a/crates/by-chain/icepick-solana/Cargo.toml +++ b/crates/by-chain/icepick-solana/Cargo.toml @@ -5,12 +5,16 @@ edition = "2021" [dependencies] base64 = "0.22.1" +bincode = "1.3.3" +bs58 = "0.5.1" ed25519-dalek = "=1.0.1" icepick-module = { version = "0.1.0", path = "../../icepick-module" } serde = { workspace = true, features = ["derive"] } serde_json.workspace = true solana-rpc-client = { version = "2.1.1", default-features = false } solana-sdk = { version = "2.1.1" } +solana-transaction-status = "2.1.1" +solana-transaction-status-client-types = "2.1.1" spl-associated-token-account = "6.0.0" spl-token = "7.0.0" spl-token-2022 = "6.0.0" diff --git a/crates/by-chain/icepick-solana/src/lib.rs b/crates/by-chain/icepick-solana/src/lib.rs index b2a38dc..5e02f98 100644 --- a/crates/by-chain/icepick-solana/src/lib.rs +++ b/crates/by-chain/icepick-solana/src/lib.rs @@ -63,12 +63,36 @@ use icepick_module::{ Module, }; use serde::{Deserialize, Serialize}; -use solana_sdk::signer::Signer; -use std::str::FromStr; +use solana_sdk::{ + pubkey::Pubkey, + signer::{keypair::Keypair, Signer}, + system_instruction, +}; +use std::{collections::HashSet, str::FromStr}; // How does this not exist in solana_sdk. const LAMPORTS_PER_SOL: u64 = 1_000_000_000; +fn get_account( + account_index: impl Into>, + account_keys: &[String], + instruction_keys: &[u8], +) -> Pubkey { + let instruction_index: usize = account_index + .into() + .expect("account index did not exist") + .into(); + let account_index: usize = instruction_keys + .get(instruction_index) + .copied() + .unwrap_or_else(|| panic!("instruction account {instruction_index} did not exist")) + .into(); + let account_string = account_keys + .get(account_index) + .unwrap_or_else(|| panic!("account at index {account_index} did not exist")); + Pubkey::from_str(account_string).expect("could not parse account from string") +} + #[derive(thiserror::Error, Debug)] pub enum Error {} @@ -118,11 +142,31 @@ pub struct GenerateWallet { #[derive(Serialize, Deserialize, Debug)] pub struct GetWalletAddress {} +#[derive(Serialize, Deserialize, Debug)] +pub struct AwaitFunds { + address: String, + lamports: String, + cluster: Option, +} + #[derive(Serialize, Deserialize, Debug)] pub struct GetTokenInfo { token: String, } +#[derive(Serialize, Deserialize, Debug)] +pub struct CreateNonceAccountAndSigningKey { + authorization_address: String, + from_account: Option, + from_address: String, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct FindNonceAccounts { + authorization_address: String, + cluster: Option, +} + #[derive(Serialize, Deserialize, Debug)] pub struct Transfer { amount: String, @@ -158,6 +202,8 @@ pub struct TransferToken { pub struct Sign { blockhash: String, transaction: solana_sdk::transaction::Transaction, + #[serde(default)] + signing_keys: Vec<[u8; Keypair::SECRET_KEY_LENGTH]>, } #[derive(Serialize, Deserialize, Debug)] @@ -182,7 +228,10 @@ pub enum Operation { GetBlockhash(GetBlockhash), GenerateWallet(GenerateWallet), GetWalletAddress(GetWalletAddress), + AwaitFunds(AwaitFunds), GetTokenInfo(GetTokenInfo), + CreateNonceAccountAndSigningKey(CreateNonceAccountAndSigningKey), + FindNonceAccounts(FindNonceAccounts), Transfer(Transfer), CreateTokenAccount(CreateTokenAccount), TransferToken(TransferToken), @@ -193,14 +242,13 @@ pub enum Operation { pub struct Solana; impl Solana { - fn keypair_from_bytes(given_bytes: [u8; 32]) -> solana_sdk::signer::keypair::Keypair { + fn keypair_from_bytes(given_bytes: [u8; 32]) -> Keypair { use ed25519_dalek::{PublicKey, SecretKey}; let secret_key = SecretKey::from_bytes(&given_bytes).expect("key should be 32 bytes"); let mut bytes = [0u8; 64]; bytes[..32].clone_from_slice(&given_bytes); bytes[32..].clone_from_slice(PublicKey::from(&secret_key).as_bytes()); - solana_sdk::signer::keypair::Keypair::from_bytes(&bytes) - .expect("solana sdk should expect 64 bytes") + Keypair::from_bytes(&bytes).expect("solana sdk should expect 64 bytes") } } @@ -265,6 +313,19 @@ impl Module for Solana { description: "Get the address for a given wallet.".to_string(), arguments: vec![], }, + icepick_module::help::Operation { + name: "await-funds".to_string(), + description: "Await a minimum amount of funds in an account".to_string(), + arguments: vec![Argument { + name: "address".to_string(), + description: "The address to monitor".to_string(), + r#type: ArgumentType::Required, + }, Argument { + name: "amount".to_string(), + description: "The amount of lamports to await".to_string(), + r#type: ArgumentType::Required, + }], + }, icepick_module::help::Operation { name: "get-token-info".to_string(), description: "Get the address for a given token.".to_string(), @@ -274,6 +335,31 @@ impl Module for Solana { r#type: ArgumentType::Required, }], }, + icepick_module::help::Operation { + name: "create-nonce-account-and-signing-key".to_string(), + description: "Create a nonce account for signing durable transactions".to_string(), + arguments: vec![ + account.clone(), + from_address.clone(), + Argument { + name: "authorization_address".to_string(), + description: "The account authorized to use and advance the nonce.".to_string(), + r#type: ArgumentType::Required, + }, + ], + }, + icepick_module::help::Operation { + name: "find-nonce-accounts".to_string(), + description: "Find all nonce accounts for an authorized address".to_string(), + arguments: vec![ + cluster.clone(), + Argument { + name: "authorization_address".to_string(), + description: "The account authorized to use and advance nonces.".to_string(), + r#type: ArgumentType::Required, + }, + ], + }, icepick_module::help::Operation { name: "transfer".to_string(), description: "Transfer SOL from a Keyfork wallet to an external wallet." @@ -418,6 +504,51 @@ impl Module for Solana { } })) } + Operation::AwaitFunds(AwaitFunds { + address, + lamports, + cluster, + }) => { + let cluster = cluster.unwrap_or(Cluster::MainnetBeta); + let cluster_url = format!("https://api.{cluster}.solana.com"); + let client = solana_rpc_client::rpc_client::RpcClient::new(cluster_url); + let account_pk = Pubkey::from_str(&address).unwrap(); + let minimum_balance = u64::from_str(&lamports).unwrap(); + + let sleep = || { + std::thread::sleep(std::time::Duration::from_secs(10)); + }; + + let account_balance = loop { + let account = match client.get_account(&account_pk) { + Ok(account) => account, + Err(_) => { + eprintln!("Waiting for account to be created and funded: {account_pk}"); + sleep(); + continue; + } + }; + let account_size = account.data.len(); + let rent = client + .get_minimum_balance_for_rent_exemption(account_size) + .unwrap(); + let balance = account.lamports; + if balance + .checked_sub(rent) + .is_some_and(|bal| bal > minimum_balance) + { + break balance; + } + eprintln!("Waiting for {minimum_balance} + rent ({rent}) in {account_pk}"); + sleep(); + }; + + Ok(serde_json::json!({ + "blob": { + "lamports": account_balance, + }, + })) + } Operation::GetTokenInfo(GetTokenInfo { token }) => { let values = match token.as_str() { // Only exists on devnet @@ -443,6 +574,176 @@ impl Module for Solana { }), }) } + Operation::CreateNonceAccountAndSigningKey(CreateNonceAccountAndSigningKey { + authorization_address, + from_account, + from_address, + }) => { + // NOTE: Since this transaction is meant to be run on an online system with a + // freshly generated mnemonic, only designed to live to make the nonce account, we + // are going to assume we're not using a separate fee payer. It's a stretch having + // a `--from-account` option, really, but it is probably to be expected given the + // `from-address` variable. In truth, we will likely have the account randomly + // generated using `generate-wallet | get-wallet-address`. + + // NOTE: new() calls generate() which requires CryptoRng. By default, + // this uses OsRng, which sources from getrandom() if available, which pulls from + // /dev/urandom, or sources from `/dev/urandom` directly. + let keypair = Keypair::new(); + + let from_pk = Pubkey::from_str(&from_address).unwrap(); + let authorization_pk = Pubkey::from_str(&authorization_address).unwrap(); + + let instructions = system_instruction::create_nonce_account( + &from_pk, + &keypair.pubkey(), + &authorization_pk, + // just above the approximate rent necessary for a nonce account + 1500000, + ); + + let message = solana_sdk::message::Message::new(&instructions, None); + let transaction = solana_sdk::transaction::Transaction::new_unsigned(message); + let from_account = from_account + .and_then(|a| u32::from_str(&a).ok()) + .unwrap_or(0); + let requested_accounts = vec![from_account | 1 << 31]; + + Ok(serde_json::json!({ + "blob": { + "nonce_pubkey": keypair.pubkey().to_string(), + "nonce_privkey": [keypair.secret().to_bytes()], + "transaction": transaction, + }, + "derivation_accounts": requested_accounts, + })) + } + Operation::FindNonceAccounts(FindNonceAccounts { + authorization_address, + cluster, + }) => { + use solana_sdk::{ + instruction::CompiledInstruction, system_instruction::SystemInstruction, + }; + use solana_transaction_status_client_types::{ + EncodedConfirmedTransactionWithStatusMeta, EncodedTransaction, + EncodedTransactionWithStatusMeta, UiMessage, UiRawMessage, UiTransaction, + }; + + let cluster = cluster.unwrap_or(Cluster::MainnetBeta); + let cluster_url = format!("https://api.{cluster}.solana.com"); + let client = solana_rpc_client::rpc_client::RpcClient::new(cluster_url); + + let authorized_pk = Pubkey::from_str(&authorization_address).unwrap(); + + let mut nonced_accounts: HashSet = HashSet::new(); + + let transaction_statuses = + client.get_signatures_for_address(&authorized_pk).unwrap(); + + for status in transaction_statuses + /*.iter().rev()*/ + { + let signature = solana_sdk::signature::Signature::from_str(&status.signature) + .expect("cluster provided invalid signature"); + let transaction = client + .get_transaction_with_config(&signature, Default::default()) + .unwrap(); + let EncodedConfirmedTransactionWithStatusMeta { + slot: _, + block_time: _, + transaction: + EncodedTransactionWithStatusMeta { + meta: _, + version: _, + transaction: + EncodedTransaction::Json(UiTransaction { + signatures: _, + message: + UiMessage::Raw(UiRawMessage { + header: _, + account_keys, + recent_blockhash: _, + address_table_lookups: _, + instructions, + }), + }), + }, + }: EncodedConfirmedTransactionWithStatusMeta = transaction + else { + eprintln!("Unable to destructure transaction"); + continue; + }; + // search for program based on the following: + // * program is SystemProgram + // * instruction is + for ui_instruction in &instructions { + let instruction = CompiledInstruction { + program_id_index: ui_instruction.program_id_index, + accounts: ui_instruction.accounts.clone(), + data: bs58::decode(ui_instruction.data.as_bytes()) + .into_vec() + .unwrap(), + }; + let program_pk = account_keys + .get(instruction.program_id_index as usize) + .map(|k| &**k) + .map(Pubkey::from_str) + .transpose() + .ok() + .flatten() + .expect("could not get program key from transaction"); + if solana_sdk::system_program::check_id(&program_pk) { + let parsed_instruction: SystemInstruction = + bincode::deserialize(&instruction.data).unwrap(); + match parsed_instruction { + SystemInstruction::InitializeNonceAccount(pubkey) => { + // [Nonce, RecentBlockhashes, Rent] + // Argument is new authority + let nonce_account = + get_account(0, &account_keys, &instruction.accounts); + if authorized_pk == pubkey { + nonced_accounts.insert(nonce_account); + } + } + SystemInstruction::AuthorizeNonceAccount(pubkey) => { + // [Nonce, Authority] + // Argument is new authority + let nonce_account = + get_account(0, &account_keys, &instruction.accounts); + let authorizing_pk = + get_account(1, &account_keys, &instruction.accounts); + if authorized_pk == pubkey { + // we are given it + nonced_accounts.insert(nonce_account); + } else if authorizing_pk == pubkey { + // we are giving it + nonced_accounts.remove(&nonce_account); + } + } + SystemInstruction::WithdrawNonceAccount(_lamports) => { + // [Nonce, Recipient, RecentBlockhashes, Rent, Authority] + // Because the nonce account will be deleted due to nonpayment + // of rent, we do not re-insert into created accounts. + let nonce_account = + get_account(0, &account_keys, &instruction.accounts); + nonced_accounts.remove(&nonce_account); + } + _ => {} + } + } + } + } + let nonced_accounts = nonced_accounts + .iter() + .map(|account| account.to_string()) + .collect::>(); + Ok(serde_json::json!({ + "blob": { + "nonced_accounts": nonced_accounts, + } + })) + } Operation::Transfer(Transfer { amount, from_account, @@ -458,7 +759,6 @@ impl Module for Solana { let amount = f64::from_str(&amount).expect("float amount"); let amount: u64 = (amount * LAMPORTS_PER_SOL as f64) as u64; - use solana_sdk::pubkey::Pubkey; let to_pk = Pubkey::from_str(&to_address).unwrap(); let from_pk = Pubkey::from_str(&from_address).unwrap(); let payer_account_and_pk = { @@ -479,8 +779,7 @@ impl Module for Solana { _ => panic!("Invalid combination of fee_payer and fee_payer_address"), } }; - let instruction = - solana_sdk::system_instruction::transfer(&from_pk, &to_pk, amount); + let instruction = system_instruction::transfer(&from_pk, &to_pk, amount); let message = solana_sdk::message::Message::new( &[instruction], payer_account_and_pk.map(|v| v.1).as_ref(), @@ -508,9 +807,9 @@ impl Module for Solana { token_address, }) => { // TODO: allow changing derivation account of funder_address - use sata::instruction::create_associated_token_account; - use solana_sdk::pubkey::Pubkey; use spl_associated_token_account as sata; + + use sata::instruction::create_associated_token_account; use spl_token::ID as TOKEN_ID; let funder_address = funder_address.unwrap_or_else(|| wallet_address.clone()); let funder_pubkey = Pubkey::from_str(&funder_address).unwrap(); @@ -550,7 +849,6 @@ impl Module for Solana { let decimals = u8::from_str(&decimals).expect("decimals"); let amount: u64 = (amount * 10u64.pow(decimals as u32) as f64) as u64; - use solana_sdk::pubkey::Pubkey; use spl_associated_token_account::get_associated_token_address; let to_pk = Pubkey::from_str(&to_address).unwrap(); let from_pk = Pubkey::from_str(&from_address).unwrap(); @@ -629,11 +927,13 @@ impl Module for Solana { Operation::Sign(Sign { blockhash, mut transaction, + signing_keys, }) => { let keys = request .derived_keys .unwrap_or_default() .iter() + .chain(&signing_keys) .map(|k| Self::keypair_from_bytes(*k)) .collect::>(); diff --git a/crates/icepick/src/cli/workflow.rs b/crates/icepick/src/cli/workflow.rs index 35c0bae..bd1e350 100644 --- a/crates/icepick/src/cli/workflow.rs +++ b/crates/icepick/src/cli/workflow.rs @@ -12,6 +12,8 @@ use super::{derive_keys, get_command, Commands, ModuleConfig, Operation}; #[derive(Serialize, Deserialize, Clone, Debug)] pub struct Workflow { pub name: String, + + #[serde(default)] pub inputs: Vec, #[serde(rename = "step")] diff --git a/icepick.toml b/icepick.toml index 1882329..a4e7b04 100644 --- a/icepick.toml +++ b/icepick.toml @@ -107,3 +107,58 @@ outputs = { transaction = "transaction" } type = "sol-broadcast" inputs = { cluster = "cluster", transaction = "transaction" } outputs = { status = "status", url = "url" } + +[[module.workflow]] +name = "generate-nonce-account" +inputs = ["cluster", "authorization_address"] + +[[module.workflow.step]] +type = "sol-generate-wallet" + +[[module.workflow.step]] +type = "sol-get-wallet-address" +outputs = { pubkey = "wallet_pubkey" } + +[[module.workflow.step]] +type = "sol-await-funds" +inputs = { address = "wallet_pubkey", cluster = "cluster" } +# enough to cover two signatures and the 1_500_000 approx. rent fee +values = { lamports = "1510000" } + +[[module.workflow.step]] +type = "sol-get-blockhash" +inputs = { cluster = "cluster" } +outputs = { blockhash = "blockhash" } + +[[module.workflow.step]] +type = "sol-create-nonce-account-and-signing-key" + +[module.workflow.step.inputs] +from_address = "wallet_pubkey" +authorization_address = "authorization_address" + +[module.workflow.step.outputs] +transaction = "unsigned_transaction" +nonce_pubkey = "nonce_pubkey" +nonce_privkey = "private_keys" + +[[module.workflow.step]] +type = "sol-sign" + +[module.workflow.step.inputs] +blockhash = "blockhash" +signing_keys = "private_keys" +transaction = "unsigned_transaction" + +[module.workflow.step.outputs] +transaction = "signed_transaction" + +[[module.workflow.step]] +type = "sol-broadcast" +inputs = { cluster = "cluster", transaction = "signed_transaction" } +outputs = { status = "status", url = "url" } + +[[module.workflow.step]] +type = "internal-cat" +inputs = { status = "status", url = "url", nonce_account = "nonce_pubkey" } +outputs = { status = "status", url = "url", nonce_account = "nonce_account" }