diff --git a/.github/actions/setup-solana/action.yml b/.github/actions/setup-solana/action.yml index 5fe2a9869..271edc7a5 100644 --- a/.github/actions/setup-solana/action.yml +++ b/.github/actions/setup-solana/action.yml @@ -7,7 +7,7 @@ runs: - name: Install Solana Test Validator shell: "bash" run: | - sh -c "$(curl -sSfL https://release.anza.xyz/v2.2.20/install)" + sh -c "$(curl -sSfL https://release.anza.xyz/v3.1.5/install)" echo "$HOME/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH - name: Ensure Solana Test Validator is Installed diff --git a/.github/workflows/ci-lint.yml b/.github/workflows/ci-lint.yml index 7a83a1ade..700f71742 100644 --- a/.github/workflows/ci-lint.yml +++ b/.github/workflows/ci-lint.yml @@ -22,7 +22,7 @@ jobs: - uses: ./magicblock-validator/.github/actions/setup-build-env with: build_cache_key_name: "magicblock-validator-ci-lint-v002" - rust_toolchain_release: "1.91.1" + rust_toolchain_release: "1.94.1" github_access_token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci-test-integration.yml b/.github/workflows/ci-test-integration.yml index 7201b47aa..0d7729e5f 100644 --- a/.github/workflows/ci-test-integration.yml +++ b/.github/workflows/ci-test-integration.yml @@ -23,7 +23,7 @@ jobs: - uses: ./magicblock-validator/.github/actions/setup-build-env with: build_cache_key_name: "magicblock-validator-ci-test-integration-${{ github.ref_name }}-${{ hashFiles('magicblock-validator/Cargo.lock') }}" - rust_toolchain_release: "1.91.1" + rust_toolchain_release: "1.94.1" github_access_token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }} @@ -64,7 +64,7 @@ jobs: - uses: ./magicblock-validator/.github/actions/setup-build-env with: build_cache_key_name: "magicblock-validator-ci-test-integration-${{ github.ref_name }}-${{ hashFiles('magicblock-validator/Cargo.lock') }}" - rust_toolchain_release: "1.91.1" + rust_toolchain_release: "1.94.1" github_access_token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci-test-unit.yml b/.github/workflows/ci-test-unit.yml index 26770ae90..c75a7ae7a 100644 --- a/.github/workflows/ci-test-unit.yml +++ b/.github/workflows/ci-test-unit.yml @@ -22,7 +22,7 @@ jobs: - uses: ./magicblock-validator/.github/actions/setup-build-env with: build_cache_key_name: "magicblock-validator-ci-test-unit-v001" - rust_toolchain_release: "1.91.1" + rust_toolchain_release: "1.94.1" github_access_token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml index c17dba76a..39565937e 100644 --- a/.github/workflows/publish-packages.yml +++ b/.github/workflows/publish-packages.yml @@ -59,7 +59,7 @@ jobs: - uses: ./magicblock-validator/.github/actions/setup-build-env with: build_cache_key_name: "magicblock-validator-ci-publish-v000" - rust_toolchain_release: "1.85.0" + rust_toolchain_release: "1.94.1" github_access_token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/Cargo.lock b/Cargo.lock index 0f4b83fe9..bab081d30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -30,7 +30,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "generic-array", ] @@ -42,7 +42,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -60,27 +60,118 @@ dependencies = [ "zeroize", ] +[[package]] +name = "agave-feature-set" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6200f3b8cfbe5992fde00d443f60e62a79d2d8f6a658af1ffb7c4f0baa3c7028" +dependencies = [ + "ahash 0.8.12", + "solana-epoch-schedule", + "solana-hash 3.1.0", + "solana-pubkey 3.0.0", + "solana-sha256-hasher 3.1.0", + "solana-svm-feature-set", +] + [[package]] name = "agave-geyser-plugin-interface" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df63ffb691b27f0253e893d083126cbe98a6b1ace29108992310f323f1ac50b0" +checksum = "2d93caf9e6dd35ba4193fe778c1e52ee69433ba53b9eaeebc00c7bcd4d699081" dependencies = [ "log", "solana-clock", + "solana-hash 3.1.0", "solana-signature", "solana-transaction", "solana-transaction-status", "thiserror 2.0.18", ] +[[package]] +name = "agave-precompiles" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0fa80ea1037091eff64931fc53b6a89f153f5a88c33035cedfa79265b985cb" +dependencies = [ + "agave-feature-set", + "bincode", + "digest 0.10.7", + "ed25519-dalek 1.0.1", + "libsecp256k1", + "openssl", + "sha3", + "solana-ed25519-program", + "solana-message", + "solana-precompile-error", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "agave-reserved-account-keys" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3998a6ec388df954d8f78eeaf73ff487b50a8bdaebd48c8573af22c7b6db72" +dependencies = [ + "agave-feature-set", + "solana-pubkey 3.0.0", + "solana-sdk-ids", +] + +[[package]] +name = "agave-syscalls" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5212f0b24fc37d4c844ae25b563d0cf5587d092912820c40f88d4b9b301148f8" +dependencies = [ + "bincode", + "libsecp256k1", + "num-traits", + "solana-account", + "solana-account-info", + "solana-big-mod-exp", + "solana-blake3-hasher", + "solana-bn254", + "solana-clock", + "solana-cpi", + "solana-curve25519", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keccak-hasher", + "solana-loader-v3-interface", + "solana-poseidon", + "solana-program-entrypoint", + "solana-program-runtime", + "solana-pubkey 3.0.0", + "solana-sbpf", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher 3.1.0", + "solana-stable-layout", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", + "solana-svm-type-overrides", + "solana-sysvar", + "solana-sysvar-id", + "solana-transaction-context", + "thiserror 2.0.18", +] + [[package]] name = "ahash" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "once_cell", "version_check", ] @@ -100,9 +191,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -137,20 +228,11 @@ dependencies = [ "libc", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -163,15 +245,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -198,15 +280,18 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "arc-swap" -version = "1.7.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +dependencies = [ + "rustversion", +] [[package]] name = "ark-bn254" @@ -214,9 +299,20 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" dependencies = [ - "ark-ec", - "ark-ff", - "ark-std", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", ] [[package]] @@ -225,10 +321,10 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", - "ark-poly", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", @@ -236,16 +332,37 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash 0.8.12", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + [[package]] name = "ark-ff" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest 0.10.7", "itertools 0.10.5", @@ -256,6 +373,26 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -266,6 +403,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -279,27 +426,68 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash 0.8.12", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + [[package]] name = "ark-serialize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "ark-serialize-derive", - "ark-std", + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", ] @@ -315,6 +503,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -325,6 +524,16 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + [[package]] name = "arrayref" version = "0.3.9" @@ -351,13 +560,12 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-compression" -version = "0.4.36" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ec5f6c2f8bc326c994cb9e241cc257ddaba9afa8555a43cffbb5dd86efaa37" +checksum = "d0f9ee0f6e02ffd7ad5816e9464499fba7b3effd01123b515c41d1697c43dad1" dependencies = [ "compression-codecs", "compression-core", - "futures-core", "pin-project-lite", "tokio", ] @@ -410,17 +618,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.5.0" @@ -458,18 +655,18 @@ dependencies = [ "rustversion", "serde", "sync_wrapper 1.0.2", - "tower 0.5.2", + "tower 0.5.3", "tower-layer", "tower-service", ] [[package]] name = "axum" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ - "axum-core 0.5.5", + "axum-core 0.5.6", "bytes", "futures-util", "http 1.4.0", @@ -483,7 +680,7 @@ dependencies = [ "pin-project-lite", "serde_core", "sync_wrapper 1.0.2", - "tower 0.5.2", + "tower 0.5.3", "tower-layer", "tower-service", ] @@ -510,9 +707,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", @@ -526,6 +723,12 @@ dependencies = [ "tower-service", ] +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.12.3" @@ -544,6 +747,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + [[package]] name = "bincode" version = "1.3.3" @@ -559,7 +768,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cexpr", "clang-sys", "itertools 0.12.1", @@ -579,14 +788,14 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cexpr", "clang-sys", "itertools 0.13.0", "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "shlex", "syn 2.0.117", ] @@ -599,12 +808,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -dependencies = [ - "serde_core", -] +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "bitvec" @@ -620,16 +826,17 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.2" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +checksum = "4d2d5991425dfd0785aed03aedcf0b321d61975c9b5b3689c774a2610ae0b51e" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", - "digest 0.10.7", + "cpufeatures 0.3.0", + "digest 0.11.2", ] [[package]] @@ -651,73 +858,38 @@ dependencies = [ ] [[package]] -name = "borsh" -version = "0.10.4" +name = "block-buffer" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" dependencies = [ - "borsh-derive 0.10.4", - "hashbrown 0.13.2", + "hybrid-array", ] [[package]] name = "borsh" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" dependencies = [ - "borsh-derive 1.6.0", + "borsh-derive", + "bytes", "cfg_aliases", ] [[package]] name = "borsh-derive" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" dependencies = [ "once_cell", - "proc-macro-crate 3.4.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "borsh-derive-internal" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "brotli" version = "8.0.2" @@ -750,9 +922,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bv" @@ -814,9 +986,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "bzip2-sys" @@ -845,9 +1017,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.56" +version = "1.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" dependencies = [ "find-msvc-tools", "jobserver", @@ -889,9 +1061,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", "js-sys", @@ -907,7 +1079,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "inout", ] @@ -924,24 +1096,9 @@ dependencies = [ [[package]] name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "ansi_term", - "atty", - "bitflags 1.3.2", - "strsim 0.8.0", - "textwrap", - "unicode-width 0.1.14", - "vec_map", -] - -[[package]] -name = "clap" -version = "4.5.53" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -949,23 +1106,23 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.53" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.1", + "strsim", ] [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.117", @@ -973,15 +1130,21 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.6" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + +[[package]] +name = "cmov" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746" [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" @@ -1012,9 +1175,9 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.35" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f7ac3e5b97fdce45e8922fb05cae2c37f7bbd63d30dd94821dacfd8f3f2bf2" +checksum = "eb7b51a7d9c967fc26773061ba86150f19c50c0d65c887cb1fbe295fd16619b7" dependencies = [ "brotli", "compression-core", @@ -1030,15 +1193,14 @@ checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" [[package]] name = "console" -version = "0.15.11" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" dependencies = [ "encode_unicode", "libc", - "once_cell", "unicode-width 0.2.0", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1048,9 +1210,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8599749b6667e2f0c910c1d0dff6901163ff698a52d5a39720f61b5be4b20d3" dependencies = [ "futures-core", - "prost 0.14.1", - "prost-types 0.14.1", - "tonic 0.14.2", + "prost 0.14.3", + "prost-types 0.14.3", + "tonic 0.14.5", "tonic-prost", "tracing-core", ] @@ -1068,39 +1230,19 @@ dependencies = [ "hdrhistogram", "humantime", "hyper-util", - "prost 0.14.1", - "prost-types 0.14.1", + "prost 0.14.3", + "prost-types 0.14.3", "serde", "serde_json", "thread_local", "tokio", "tokio-stream", - "tonic 0.14.2", + "tonic 0.14.5", "tracing", "tracing-core", "tracing-subscriber", ] -[[package]] -name = "console_error_panic_hook" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" -dependencies = [ - "cfg-if", - "wasm-bindgen", -] - -[[package]] -name = "console_log" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" -dependencies = [ - "log", - "web-sys", -] - [[package]] name = "const-crypto" version = "0.3.0" @@ -1111,11 +1253,17 @@ dependencies = [ "sha2-const-stable", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "convert_case" @@ -1170,6 +1318,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -1200,7 +1357,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "crossterm_winapi", "mio", "parking_lot", @@ -1225,6 +1382,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.7" @@ -1236,6 +1405,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" +dependencies = [ + "hybrid-array", +] + [[package]] name = "crypto-mac" version = "0.8.0" @@ -1277,6 +1455,15 @@ dependencies = [ "cipher", ] +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", +] + [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -1297,7 +1484,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", @@ -1349,7 +1536,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim 0.11.1", + "strsim", "syn 2.0.117", ] @@ -1362,7 +1549,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim 0.11.1", + "strsim", "syn 2.0.117", ] @@ -1396,15 +1583,25 @@ checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04" [[package]] name = "data-encoding" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] [[package]] name = "deranged" -version = "0.5.5" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", "serde_core", @@ -1429,18 +1626,18 @@ dependencies = [ [[package]] name = "derive_more" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ "convert_case", "proc-macro2", @@ -1466,10 +1663,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "crypto-common", + "const-oid", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c" +dependencies = [ + "block-buffer 0.12.0", + "crypto-common 0.2.1", + "ctutils", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1508,13 +1717,37 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature 2.2.0", + "spki", +] + [[package]] name = "ed25519" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "signature", + "signature 1.6.4", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature 2.2.0", ] [[package]] @@ -1524,31 +1757,77 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ "curve25519-dalek 3.2.0", - "ed25519", + "ed25519 1.5.3", "rand 0.7.3", "serde", "sha2 0.9.9", "zeroize", ] +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", + "rand_core 0.6.4", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + [[package]] name = "ed25519-dalek-bip32" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +checksum = "6b49a684b133c4980d7ee783936af771516011c8cd15f429dbda77245e282f03" dependencies = [ "derivation-path", - "ed25519-dalek", + "ed25519-dalek 2.2.0", "hmac 0.12.1", "sha2 0.10.9", ] +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "either" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "encode_unicode" version = "1.0.0" @@ -1585,16 +1864,23 @@ dependencies = [ ] [[package]] -name = "env_logger" -version = "0.9.3" +name = "enum-ordinalize" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -1627,18 +1913,18 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastrand" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "faststr" -version = "0.2.32" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baec6a0289d7f1fe5665586ef7340af82e3037207bef60f5785e57569776f0c8" +checksum = "1ca7d44d22004409a61c393afb3369c8f7bb74abcae49fe249ee01dcc3002113" dependencies = [ "bytes", - "rkyv 0.8.12", + "rkyv 0.8.15", "serde", "simdutf8", ] @@ -1652,7 +1938,7 @@ dependencies = [ "base64 0.21.7", "bytes", "http-body-util", - "hyper 1.8.1", + "hyper 1.9.0", "hyper-util", "pin-project", "rand 0.8.5", @@ -1670,7 +1956,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix 1.1.2", + "rustix 1.1.4", "windows-sys 0.59.0", ] @@ -1680,6 +1966,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "fiat-crypto" version = "0.2.9" @@ -1695,7 +1991,7 @@ dependencies = [ "atomic", "pear", "serde", - "toml 0.8.23", + "toml", "uncased", "version_check", ] @@ -1717,13 +2013,22 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core 0.1.2", +] + [[package]] name = "five8" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" dependencies = [ - "five8_core", + "five8_core 1.0.0", ] [[package]] @@ -1732,7 +2037,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" dependencies = [ - "five8_core", + "five8_core 0.1.2", ] [[package]] @@ -1741,7 +2046,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" dependencies = [ - "five8_core", + "five8_core 1.0.0", ] [[package]] @@ -1750,21 +2055,33 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" +[[package]] +name = "five8_core" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "059c31d7d36c43fe39d89e55711858b4da8be7eb6dabac23c7289b1a19489406" + [[package]] name = "fixedbitset" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" -version = "1.1.5" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", - "libz-rs-sys", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -1835,9 +2152,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -1850,9 +2167,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -1860,15 +2177,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -1877,15 +2194,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", @@ -1894,21 +2211,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -1918,7 +2235,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -1930,6 +2246,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1937,10 +2254,10 @@ name = "genx" version = "0.0.0" dependencies = [ "base64 0.21.7", - "clap 4.5.53", + "clap", "magicblock-accounts-db", "solana-commitment-config", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "sonic-rs", "tempfile", @@ -1963,17 +2280,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -1987,11 +2302,26 @@ name = "getrandom" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", "wasip2", + "wasip3", ] [[package]] @@ -2020,9 +2350,20 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "guinea" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "magicblock-magic-program-api", @@ -2042,7 +2383,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.12.1", + "indexmap 2.14.0", "slab", "tokio", "tokio-util", @@ -2051,9 +2392,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -2061,7 +2402,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.4.0", - "indexmap 2.12.1", + "indexmap 2.14.0", "slab", "tokio", "tokio-util", @@ -2070,9 +2411,9 @@ dependencies = [ [[package]] name = "hash32" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" dependencies = [ "byteorder", ] @@ -2097,9 +2438,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -2117,13 +2458,19 @@ dependencies = [ "foldhash 0.2.0", ] +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + [[package]] name = "hashlink" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.5", ] [[package]] @@ -2139,21 +2486,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -2162,8 +2494,8 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "helius-laserstream" -version = "0.1.2" -source = "git+https://github.com/magicblock-labs/laserstream-sdk?branch=v0.2.2-magicblock%2Bconn-fix#fe205cb2b85864d1821027d663813d66160285dc" +version = "0.1.5" +source = "git+https://github.com/magicblock-labs/laserstream-sdk?branch=v0.2.8%2Bconn-fix#1355272a831cd31dcc4b440fd5f60fb3dbf01e51" dependencies = [ "async-stream", "bs58", @@ -2171,10 +2503,12 @@ dependencies = [ "futures", "futures-channel", "futures-util", + "laserstream-core-client", + "laserstream-core-proto", "prost 0.12.6", "prost-types 0.12.6", "rand 0.8.5", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "sha2 0.10.9", @@ -2187,17 +2521,6 @@ dependencies = [ "tracing-subscriber", "url", "uuid", - "yellowstone-grpc-client", - "yellowstone-grpc-proto", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", ] [[package]] @@ -2242,15 +2565,6 @@ dependencies = [ "hmac 0.8.1", ] -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "http" version = "0.2.12" @@ -2334,6 +2648,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hybrid-array" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "0.14.32" @@ -2360,22 +2683,21 @@ dependencies = [ [[package]] name = "hyper" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", - "h2 0.4.12", + "h2 0.4.13", "http 1.4.0", "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -2395,13 +2717,29 @@ dependencies = [ "tokio-rustls 0.24.1", ] +[[package]] +name = "hyper-rustls" +version = "0.27.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2b52f86d1d4bc0d6b4e6826d960b1b333217e07d36b882dca570a5e1c48895b" +dependencies = [ + "http 1.4.0", + "hyper 1.9.0", + "hyper-util", + "rustls 0.23.38", + "tokio", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.6", +] + [[package]] name = "hyper-timeout" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.8.1", + "hyper 1.9.0", "hyper-util", "pin-project-lite", "tokio", @@ -2422,31 +2760,51 @@ dependencies = [ ] [[package]] -name = "hyper-util" -version = "0.1.19" +name = "hyper-tls" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "hyper 1.8.1", - "libc", - "pin-project-lite", - "socket2 0.6.1", + "http-body-util", + "hyper 1.9.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "hyper 1.9.0", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.3", + "system-configuration 0.7.0", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2468,12 +2826,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -2481,9 +2840,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -2494,9 +2853,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -2508,15 +2867,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -2528,15 +2887,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -2547,6 +2906,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -2587,26 +2952,26 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.0", "serde", "serde_core", ] [[package]] name = "indicatif" -version = "0.17.11" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb" dependencies = [ "console", - "number_prefix", "portable-atomic", "unicode-width 0.2.0", + "unit-prefix", "web-time", ] @@ -2636,9 +3001,9 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357b7205c6cd18dd2c86ed312d1e70add149aea98e7ef72b9fdf0270e555c11d" +checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971" dependencies = [ "darling 0.23.0", "indoc", @@ -2649,9 +3014,19 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "iri-string" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" @@ -2707,9 +3082,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jobserver" @@ -2723,10 +3098,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -2746,13 +3123,27 @@ dependencies = [ "serde_json", ] +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2 0.10.9", + "signature 2.2.0", +] + [[package]] name = "keccak" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -2769,6 +3160,48 @@ dependencies = [ "serde_json", ] +[[package]] +name = "laserstream-core-client" +version = "9.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a10e9612cbda65acb13fd482c9cc0c988ab25fb8864f2befe304d3ba7807f9f5" +dependencies = [ + "bytes", + "futures", + "laserstream-core-proto", + "thiserror 1.0.69", + "tonic 0.14.5", + "tonic-health", +] + +[[package]] +name = "laserstream-core-proto" +version = "9.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12d5ab2767a78aea87aeee99c7e62a241319a7976711e3f02f8b33844e33c03" +dependencies = [ + "anyhow", + "bincode", + "prost 0.14.3", + "prost-types 0.14.3", + "protobuf-src", + "solana-account", + "solana-account-decoder", + "solana-clock", + "solana-hash 3.1.0", + "solana-message", + "solana-pubkey 3.0.0", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-transaction-status", + "tonic 0.14.5", + "tonic-build 0.14.5", + "tonic-prost", + "tonic-prost-build", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -2781,10 +3214,17 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "ledger-stats" version = "0.0.0" dependencies = [ + "clap", "magicblock-accounts-db", "magicblock-core", "magicblock-ledger", @@ -2793,18 +3233,16 @@ dependencies = [ "solana-account", "solana-clock", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-transaction-status", - "structopt", - "tabular", ] [[package]] name = "libc" -version = "0.2.178" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "libflate" @@ -2842,13 +3280,14 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "libc", - "redox_syscall 0.7.0", + "plain", + "redox_syscall 0.7.4", ] [[package]] @@ -2930,9 +3369,9 @@ dependencies = [ [[package]] name = "libsodium-sys-stable" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5d23f4a051a13cf1085b2c5a050d4d890d80c754534cc4247eff525fa5283d" +checksum = "72b04bf6da2c98b727af37ab62cb505f4d751b975b034a9b9ad491d333b0564e" dependencies = [ "cc", "libc", @@ -2956,20 +3395,11 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "libz-rs-sys" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10501e7805cee23da17c7790e59df2870c0d4043ec6d03f67d31e2b53e77415" -dependencies = [ - "zlib-rs", -] - [[package]] name = "libz-sys" -version = "1.1.23" +version = "1.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" +checksum = "fc3a226e576f50782b3305c5ccf458698f92798987f551c6a02efe8276721e22" dependencies = [ "cc", "pkg-config", @@ -2982,8 +3412,20 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" dependencies = [ - "ark-bn254", - "ark-ff", + "ark-bn254 0.4.0", + "ark-ff 0.4.2", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-poseidon" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a1ccadd0bb5a32c196da536fd72c59183de24a055f6bf0513bf845fefab862" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", "num-bigint 0.4.6", "thiserror 1.0.69", ] @@ -2996,15 +3438,15 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "lmdb-rkv" @@ -3050,18 +3492,24 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.5", ] [[package]] name = "lru" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" +checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "lz4-sys" version = "1.11.1+lz4-1.10.0" @@ -3074,22 +3522,22 @@ dependencies = [ [[package]] name = "magic-domain-program" -version = "0.2.0" -source = "git+https://github.com/magicblock-labs/magic-domain-program.git?rev=cffcfeb#cffcfeb8290697dbc63b19ef48e6bc8cd844f10f" +version = "0.3.0" +source = "git+https://github.com/magicblock-labs/magic-domain-program.git?rev=335a22#335a22ba5aa7b8c4bc84d5053444c74c3b05cdac" dependencies = [ - "borsh 1.6.0", + "borsh", "bytemuck_derive", "solana-program", - "solana-system-interface 2.0.0", + "solana-system-interface 3.2.0", ] [[package]] name = "magicblock-account-cloner" -version = "0.8.8" +version = "0.9.0" dependencies = [ "async-trait", "bincode", - "lru 0.16.2", + "lru 0.16.3", "magicblock-accounts-db", "magicblock-chainlink", "magicblock-committor-service", @@ -3099,26 +3547,26 @@ dependencies = [ "magicblock-magic-program-api", "magicblock-program", "magicblock-rpc-client", - "rand 0.9.2", + "rand 0.9.3", "solana-account", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-signature", "solana-signer", "solana-sysvar", "solana-transaction", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] [[package]] name = "magicblock-accounts" -version = "0.8.8" +version = "0.9.0" dependencies = [ "async-trait", "magicblock-account-cloner", @@ -3128,11 +3576,11 @@ dependencies = [ "magicblock-core", "magicblock-metrics", "magicblock-program", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash 3.1.0", + "solana-pubkey 3.0.0", "solana-transaction", "solana-transaction-error", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util", "tracing", @@ -3141,17 +3589,17 @@ dependencies = [ [[package]] name = "magicblock-accounts-db" -version = "0.8.8" +version = "0.9.0" dependencies = [ "lmdb-rkv", "magicblock-config", - "memmap2 0.9.9", + "memmap2", "parking_lot", "reflink-copy", "solana-account", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "tempfile", - "thiserror 1.0.69", + "thiserror 2.0.18", "tracing", "tracing-subscriber", "twox-hash", @@ -3159,8 +3607,9 @@ dependencies = [ [[package]] name = "magicblock-aperture" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", "agave-geyser-plugin-interface", "arc-swap", "base64 0.21.7", @@ -3169,7 +3618,7 @@ dependencies = [ "fastwebsockets", "futures", "http-body-util", - "hyper 1.8.1", + "hyper 1.9.0", "hyper-util", "libloading", "magicblock-account-cloner", @@ -3181,19 +3630,16 @@ dependencies = [ "magicblock-metrics", "magicblock-version", "parking_lot", - "rand 0.9.2", - "reqwest", + "rand 0.9.3", + "reqwest 0.12.28", "scc", "serde", "solana-account", "solana-account-decoder", - "solana-compute-budget-instruction", - "solana-feature-set", - "solana-fee", "solana-fee-structure", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-pubsub-client", "solana-rpc-client", "solana-rpc-client-api", @@ -3204,7 +3650,7 @@ dependencies = [ "solana-transaction-status", "sonic-rs", "test-kit", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util", "tracing", @@ -3212,10 +3658,11 @@ dependencies = [ [[package]] name = "magicblock-api" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", "anyhow", - "borsh 1.6.0", + "borsh", "fd-lock", "magic-domain-program", "magicblock-account-cloner", @@ -3241,27 +3688,28 @@ dependencies = [ "solana-clock", "solana-commitment-config", "solana-feature-gate-interface", - "solana-feature-set", "solana-fee-calculator", - "solana-genesis-config", - "solana-hash 2.2.1", - "solana-inline-spl", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-message", "solana-native-token", "solana-program", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-rpc-client", - "solana-sha256-hasher 2.2.1", + "solana-sdk-ids", + "solana-sha256-hasher 3.1.0", "solana-signature", "solana-signer", "solana-system-program", "solana-sysvar", "solana-transaction", "solana-transaction-error", - "thiserror 1.0.69", + "spl-token-interface", + "thiserror 2.0.18", "tokio", "tokio-util", "tracing", @@ -3269,16 +3717,17 @@ dependencies = [ [[package]] name = "magicblock-chainlink" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", "arc-swap", "assert_matches", "async-trait", "bincode", - "borsh 1.6.0", + "borsh", "futures-util", "helius-laserstream", - "lru 0.16.2", + "lru 0.16.3", "magicblock-accounts-db", "magicblock-chainlink", "magicblock-config", @@ -3294,60 +3743,61 @@ dependencies = [ "solana-address-lookup-table-interface", "solana-clock", "solana-commitment-config", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-loader-v3-interface", "solana-loader-v4-interface", "solana-message", "solana-program", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-pubsub-client", + "solana-rent 3.1.0", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk-ids", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", - "solana-sysvar", + "solana-system-interface 3.2.0", "solana-transaction", "solana-transaction-error", - "spl-token", - "spl-token-2022 7.0.0", - "thiserror 1.0.69", + "spl-token-2022-interface", + "spl-token-interface", + "thiserror 2.0.18", "tokio", "tokio-stream", "tokio-util", - "tonic 0.12.3", + "tonic 0.14.5", "tracing", "url", ] [[package]] name = "magicblock-committor-program" -version = "0.8.8" +version = "0.9.0" dependencies = [ - "borsh 1.6.0", + "borsh", "paste", "solana-account", + "solana-account-info", "solana-program", - "solana-pubkey 2.2.1", - "thiserror 1.0.69", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-system-interface 3.2.0", + "thiserror 2.0.18", ] [[package]] name = "magicblock-committor-service" -version = "0.8.8" +version = "0.9.0" dependencies = [ "async-trait", "base64 0.21.7", "bincode", - "borsh 1.6.0", - "dyn-clone", + "borsh", "futures-util", "lazy_static", - "lru 0.16.2", + "lru 0.16.3", "magicblock-committor-program", "magicblock-core", "magicblock-delegation-program-api", @@ -3355,7 +3805,7 @@ dependencies = [ "magicblock-program", "magicblock-rpc-client", "magicblock-table-mania", - "rand 0.9.2", + "rand 0.9.3", "rusqlite", "serde_json", "solana-account", @@ -3363,12 +3813,12 @@ dependencies = [ "solana-address-lookup-table-interface", "solana-commitment-config", "solana-compute-budget-interface", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-message", "solana-program", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", @@ -3380,7 +3830,7 @@ dependencies = [ "static_assertions", "tempfile", "test-kit", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util", "tracing", @@ -3390,9 +3840,9 @@ dependencies = [ [[package]] name = "magicblock-config" -version = "0.8.8" +version = "0.9.0" dependencies = [ - "clap 4.5.53", + "clap", "derive_more", "figment", "humantime-serde", @@ -3401,16 +3851,16 @@ dependencies = [ "serde_with", "serial_test", "solana-keypair", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signer", "tempfile", - "toml 0.8.23", + "toml", "url", ] [[package]] name = "magicblock-core" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "console-subscriber", @@ -3420,16 +3870,17 @@ dependencies = [ "solana-account", "solana-account-decoder", "solana-clock", - "solana-hash 2.2.1", + "solana-hash 3.1.0", + "solana-message", "solana-program", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-transaction", "solana-transaction-context", "solana-transaction-error", "solana-transaction-status-client-types", - "spl-token", - "spl-token-2022 7.0.0", + "spl-token-2022-interface", + "spl-token-interface", "tokio", "tracing", "tracing-log", @@ -3439,11 +3890,10 @@ dependencies = [ [[package]] name = "magicblock-delegation-program-api" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8447309107c033ed0b5416c485b64f281a2e49c28adee03d14899fe58301187" +source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b#25386a7c1d406d06b8d07a4d5b0fd37d5e74213b" dependencies = [ "bincode", - "borsh 1.6.0", + "borsh", "bytemuck", "const-crypto", "libsodium-rs", @@ -3454,19 +3904,22 @@ dependencies = [ "pinocchio-system", "rkyv 0.7.46", "serde", - "solana-address 2.2.0", - "solana-instruction 3.2.0", + "solana-address 2.6.0", + "solana-instruction", + "solana-loader-v3-interface", "solana-program", "solana-sdk", + "solana-sdk-ids", "solana-sha256-hasher 3.1.0", + "solana-system-interface 2.0.0", "static_assertions", - "strum 0.27.2", + "strum 0.28.0", "thiserror 2.0.18", ] [[package]] name = "magicblock-ledger" -version = "0.8.8" +version = "0.9.0" dependencies = [ "arc-swap", "bincode", @@ -3478,22 +3931,21 @@ dependencies = [ "magicblock-metrics", "num-format", "num_cpus", - "prost 0.11.9", + "prost 0.14.3", "rocksdb", - "scc", "serde", "solana-account-decoder", "solana-clock", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", - "solana-measure", "solana-message", "solana-metrics", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-signer", "solana-storage-proto", + "solana-svm-measure", "solana-system-transaction", "solana-transaction", "solana-transaction-context", @@ -3501,7 +3953,7 @@ dependencies = [ "solana-transaction-status", "tempfile", "test-kit", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util", "tracing", @@ -3509,7 +3961,7 @@ dependencies = [ [[package]] name = "magicblock-magic-program-api" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "const-crypto", @@ -3520,10 +3972,10 @@ dependencies = [ [[package]] name = "magicblock-metrics" -version = "0.8.8" +version = "0.9.0" dependencies = [ "http-body-util", - "hyper 1.8.1", + "hyper 1.9.0", "hyper-util", "lazy_static", "prometheus", @@ -3535,8 +3987,11 @@ dependencies = [ [[package]] name = "magicblock-processor" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", + "agave-precompiles", + "agave-syscalls", "bincode", "guinea", "magicblock-accounts-db", @@ -3546,27 +4001,31 @@ dependencies = [ "magicblock-metrics", "magicblock-program", "parking_lot", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "serde", "solana-account", "solana-bpf-loader-program", + "solana-compute-budget", "solana-compute-budget-program", - "solana-feature-set", - "solana-fee", + "solana-feature-gate-interface", "solana-fee-structure", + "solana-instruction", "solana-keypair", + "solana-loader-v3-interface", "solana-loader-v4-program", + "solana-precompile-error", "solana-program", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent-collector", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-signature", "solana-signer", "solana-svm", + "solana-svm-callback", "solana-svm-transaction", "solana-system-program", "solana-transaction", + "solana-transaction-context", "solana-transaction-error", "solana-transaction-status", "solana-zk-elgamal-proof-program", @@ -3578,7 +4037,7 @@ dependencies = [ [[package]] name = "magicblock-program" -version = "0.8.8" +version = "0.9.0" dependencies = [ "assert_matches", "bincode", @@ -3589,104 +4048,104 @@ dependencies = [ "num-derive", "num-traits", "parking_lot", - "rand 0.9.2", + "rand 0.9.3", "serde", "serial_test", "solana-account", "solana-account-info", "solana-clock", "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-log-collector", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-seed-derivable", "solana-signature", "solana-signer", + "solana-svm-log-collector", "solana-sysvar", "solana-transaction", "solana-transaction-context", "test-kit", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "magicblock-rpc-client" -version = "0.8.8" +version = "0.9.0" dependencies = [ "solana-account", "solana-account-decoder-client-types", "solana-address-lookup-table-interface", "solana-clock", "solana-commitment-config", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-transaction-error", "solana-transaction-status-client-types", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] [[package]] name = "magicblock-services" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "futures-util", "magicblock-core", "magicblock-magic-program-api", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-signature", "solana-signer", "solana-transaction", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] [[package]] name = "magicblock-table-mania" -version = "0.8.8" +version = "0.9.0" dependencies = [ - "ed25519-dalek", + "ed25519-dalek 1.0.1", "magicblock-metrics", "magicblock-rpc-client", - "rand 0.9.2", + "rand 0.9.3", "sha3", "solana-address-lookup-table-interface", "solana-clock", "solana-commitment-config", "solana-compute-budget-interface", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-signer", "solana-slot-hashes", "solana-transaction", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] [[package]] name = "magicblock-task-scheduler" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "chrono", @@ -3696,15 +4155,15 @@ dependencies = [ "magicblock-ledger", "magicblock-program", "rusqlite", - "solana-instruction 2.2.1", + "solana-instruction", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-transaction", "solana-transaction-error", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util", "tracing", @@ -3712,15 +4171,15 @@ dependencies = [ [[package]] name = "magicblock-tui-client" -version = "0.8.8" +version = "0.9.0" dependencies = [ "chrono", - "clap 4.5.53", + "clap", "crossterm", "futures-util", "percent-encoding", "ratatui", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "solana-pubsub-client", @@ -3734,7 +4193,7 @@ dependencies = [ [[package]] name = "magicblock-validator" -version = "0.8.8" +version = "0.9.0" dependencies = [ "console-subscriber", "magicblock-api", @@ -3750,7 +4209,7 @@ dependencies = [ [[package]] name = "magicblock-validator-admin" -version = "0.8.8" +version = "0.9.0" dependencies = [ "magicblock-delegation-program-api", "magicblock-program", @@ -3767,16 +4226,16 @@ dependencies = [ [[package]] name = "magicblock-version" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", "git-version", "rustc_version", "semver", "serde", - "solana-feature-set", "solana-frozen-abi-macro", "solana-rpc-client-api", - "solana-sanitize 2.2.1", + "solana-sanitize 3.0.1", ] [[package]] @@ -3802,24 +4261,15 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "memmap2" -version = "0.5.10" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memmap2" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [ "libc", ] @@ -3851,16 +4301,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3869,9 +4309,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "minisign-verify" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e856fdd13623a2f5f2f54676a4ee49502a96a80ef4a62bcedd23d52427c44d43" +checksum = "22f9645cb765ea72b8111f36c522475d2daa0d22c957a9826437e97534bc4e9e" [[package]] name = "miniz_oxide" @@ -3885,9 +4325,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", "log", @@ -3897,9 +4337,9 @@ dependencies = [ [[package]] name = "multimap" -version = "0.8.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" [[package]] name = "munge" @@ -3927,14 +4367,14 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "native-tls" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" dependencies = [ "libc", "log", @@ -3942,7 +4382,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework 2.11.1", + "security-framework", "security-framework-sys", "tempfile", ] @@ -4013,9 +4453,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-derive" @@ -4085,15 +4525,15 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.5.2", + "hermit-abi", "libc", ] [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -4101,27 +4541,21 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -4137,11 +4571,11 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.75" +version = "0.10.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +checksum = "bfe4646e360ec77dff7dde40ed3d6c5fee52d156ef4a62f53973d38294dad87f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cfg-if", "foreign-types", "libc", @@ -4163,18 +4597,28 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "openssl-src" +version = "300.6.0+3.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8e8cbfd3a4a8c8f089147fd7aaa33cf8c7450c4d09f8f80698a0cf093abeff4" +dependencies = [ + "cc", +] [[package]] name = "openssl-sys" -version = "0.9.111" +version = "0.9.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +checksum = "ad2f2c0eba47118757e4c6d2bff2838f3e0523380021356e7875e858372ce644" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] @@ -4267,24 +4711,35 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", - "indexmap 2.12.1", + "fixedbitset 0.4.2", + "indexmap 2.14.0", +] + +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset 0.5.7", + "hashbrown 0.15.5", + "indexmap 2.14.0", ] [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", @@ -4293,21 +4748,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pinocchio" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" +checksum = "b8afe4f39c0e25cc471b35b89963312791a5162d45a86578cbeaad9e5e7d1b3b" [[package]] name = "pinocchio" @@ -4316,10 +4765,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06810dac15a4ef83d3dabdb4f2f22fb39c9adff669cd2781da4f716510a647c" dependencies = [ "solana-account-view", - "solana-address 2.2.0", + "solana-address 2.6.0", "solana-define-syscall 4.0.1", "solana-instruction-view", - "solana-program-error 3.0.0", + "solana-program-error", ] [[package]] @@ -4349,7 +4798,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" dependencies = [ "five8_const 0.1.4", - "pinocchio 0.9.2", + "pinocchio 0.9.3", "sha2-const-stable", ] @@ -4360,14 +4809,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24044a0815753862b558e179e78f03f7344cb755de48617a09d7d23b50883b6c" dependencies = [ "pinocchio 0.10.2", - "solana-address 2.2.0", + "solana-address 2.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", ] [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plain" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "polyval" @@ -4376,22 +4841,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "opaque-debug", "universal-hash", ] [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] @@ -4413,25 +4878,15 @@ dependencies = [ [[package]] name = "pretty-hex" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbc83ee4a840062f368f9096d80077a9841ec117e17e7f700df81958f1451254" - -[[package]] -name = "prettyplease" -version = "0.1.25" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" -dependencies = [ - "proc-macro2", - "syn 1.0.109", -] +checksum = "9a65843dfefbafd3c879c683306959a6de478443ffe9c9adf02f5976432402d7" [[package]] name = "prettyplease" -version = "0.2.36" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", "syn 2.0.117", @@ -4439,44 +4894,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml 0.5.11", -] - -[[package]] -name = "proc-macro-crate" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit 0.23.9", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "toml_edit 0.25.11+spec-1.1.0", ] [[package]] @@ -4516,16 +4938,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "prost" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" -dependencies = [ - "bytes", - "prost-derive 0.11.9", -] - [[package]] name = "prost" version = "0.12.6" @@ -4543,39 +4955,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", - "prost-derive 0.13.5", ] [[package]] name = "prost" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", - "prost-derive 0.14.1", -] - -[[package]] -name = "prost-build" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" -dependencies = [ - "bytes", - "heck 0.4.1", - "itertools 0.10.5", - "lazy_static", - "log", - "multimap", - "petgraph", - "prettyplease 0.1.25", - "prost 0.11.9", - "prost-types 0.11.9", - "regex", - "syn 1.0.109", - "tempfile", - "which", + "prost-derive 0.14.3", ] [[package]] @@ -4585,13 +4974,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", - "heck 0.5.0", + "heck", "itertools 0.12.1", "log", "multimap", "once_cell", - "petgraph", - "prettyplease 0.2.36", + "petgraph 0.6.5", + "prettyplease", "prost 0.12.6", "prost-types 0.12.6", "regex", @@ -4601,37 +4990,25 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ - "heck 0.5.0", + "heck", "itertools 0.14.0", "log", "multimap", - "once_cell", - "petgraph", - "prettyplease 0.2.36", - "prost 0.13.5", - "prost-types 0.13.5", + "petgraph 0.8.3", + "prettyplease", + "prost 0.14.3", + "prost-types 0.14.3", + "pulldown-cmark", + "pulldown-cmark-to-cmark", "regex", "syn 2.0.117", "tempfile", ] -[[package]] -name = "prost-derive" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" -dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "prost-derive" version = "0.12.6" @@ -4647,22 +5024,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "prost-derive" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", "itertools 0.14.0", @@ -4671,15 +5035,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "prost-types" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" -dependencies = [ - "prost 0.11.9", -] - [[package]] name = "prost-types" version = "0.12.6" @@ -4691,20 +5046,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" -dependencies = [ - "prost 0.13.5", -] - -[[package]] -name = "prost-types" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9b4db3d6da204ed77bb26ba83b6122a73aeb2e87e25fbf7ad2e84c4ccbf8f72" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ - "prost 0.14.1", + "prost 0.14.3", ] [[package]] @@ -4762,6 +5108,26 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "pulldown-cmark" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c3a14896dfa883796f1cb410461aef38810ea05f2b2c33c5aded3649095fdad" +dependencies = [ + "bitflags 2.11.0", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90" +dependencies = [ + "pulldown-cmark", +] + [[package]] name = "qstring" version = "0.7.2" @@ -4782,11 +5148,66 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.2", + "rustls 0.23.38", + "socket2 0.6.3", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.3", + "ring", + "rustc-hash 2.1.2", + "rustls 0.23.38", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.3", + "tracing", + "windows-sys 0.60.2", +] + [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -4797,6 +5218,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radium" version = "0.7.0" @@ -4838,12 +5265,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "7ec095654a25171c2124e9e3393a930bddbffdc939556c914957a4c3e0a87166" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -4873,7 +5300,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -4891,14 +5318,14 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ "getrandom 0.3.4", ] @@ -4918,7 +5345,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cassowary", "compact_str", "crossterm", @@ -4939,16 +5366,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] name = "redox_syscall" -version = "0.7.0" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] @@ -4973,21 +5400,21 @@ dependencies = [ [[package]] name = "reflink-copy" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bbed272e39c47a095a5242218a67412a220006842558b03fe2935e8f3d7b92" +checksum = "13362233b147e57674c37b802d216b7c5e3dcccbed8967c84f0d8d223868ae27" dependencies = [ "cfg-if", "libc", - "rustix 1.1.2", + "rustix 1.1.4", "windows", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -4997,9 +5424,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -5008,9 +5435,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "rend" @@ -5043,13 +5470,12 @@ dependencies = [ "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32", - "hyper-rustls", - "hyper-tls", + "hyper-rustls 0.24.2", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", "mime", - "mime_guess", "native-tls", "once_cell", "percent-encoding", @@ -5060,7 +5486,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration", + "system-configuration 0.5.1", "tokio", "tokio-native-tls", "tokio-rustls 0.24.1", @@ -5074,19 +5500,75 @@ dependencies = [ "winreg", ] +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.9.0", + "hyper-rustls 0.27.8", + "hyper-tls 0.6.0", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.38", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.4", + "tower 0.5.3", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.6", +] + [[package]] name = "reqwest-middleware" -version = "0.2.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a735987236a8e238bf0296c7e351b999c188ccc11477f311b82b55c93984216" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" dependencies = [ "anyhow", "async-trait", - "http 0.2.12", - "reqwest", + "http 1.4.0", + "reqwest 0.12.28", "serde", - "task-local-extensions", "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", ] [[package]] @@ -5097,7 +5579,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -5123,18 +5605,18 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a640b26f007713818e9a9b65d34da1cf58538207b052916a83d80e43f3ffa4" +checksum = "1a30e631b7f4a03dee9056b8ef6982e8ba371dd5bedb74d3ec86df4499132c70" dependencies = [ "bytes", - "hashbrown 0.15.2", - "indexmap 2.12.1", + "hashbrown 0.16.1", + "indexmap 2.14.0", "munge", "ptr_meta 0.3.1", "rancor", "rend 0.5.3", - "rkyv_derive 0.8.12", + "rkyv_derive 0.8.15", "tinyvec", "uuid", ] @@ -5152,9 +5634,9 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" +checksum = "8100bb34c0a1d0f907143db3149e6b4eea3c33b9ee8b189720168e818303986f" dependencies = [ "proc-macro2", "quote", @@ -5182,7 +5664,7 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -5192,9 +5674,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" [[package]] name = "rustc-hash" @@ -5204,9 +5686,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc_version" @@ -5223,7 +5705,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -5232,14 +5714,14 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] @@ -5257,29 +5739,29 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.35" +version = "0.23.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21" dependencies = [ "log", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.8", + "rustls-webpki 0.103.11", "subtle", "zeroize", ] [[package]] name = "rustls-native-certs" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework", ] [[package]] @@ -5302,10 +5784,11 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" dependencies = [ + "web-time", "zeroize", ] @@ -5321,9 +5804,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.8" +version = "0.103.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +checksum = "20a6af516fea4b20eccceaf166e8aa666ac996208e8a644ce3ef5aa783bc7cd4" dependencies = [ "ring", "rustls-pki-types", @@ -5338,9 +5821,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "scc" @@ -5353,9 +5836,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -5374,9 +5857,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" dependencies = [ "dyn-clone", "ref-cast", @@ -5413,25 +5896,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] -name = "security-framework" -version = "2.11.1" +name = "sec1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "bitflags 2.10.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", ] [[package]] name = "security-framework" -version = "3.3.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -5440,9 +5924,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -5450,9 +5934,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" @@ -5505,15 +5989,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -5539,17 +6023,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.12.1", + "indexmap 2.14.0", "schemars 0.9.0", - "schemars 1.1.0", + "schemars 1.2.1", "serde_core", "serde_json", "serde_with_macros", @@ -5558,11 +6042,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", "syn 2.0.117", @@ -5570,11 +6054,12 @@ dependencies = [ [[package]] name = "serial_test" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +checksum = "911bd979bf1070a3f3aa7b691a3b3e9968f339ceeec89e08c280a8a22207a32f" dependencies = [ - "futures", + "futures-executor", + "futures-util", "log", "once_cell", "parking_lot", @@ -5584,9 +6069,9 @@ dependencies = [ [[package]] name = "serial_test_derive" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +checksum = "0a7d91949b85b0d2fb687445e448b40d322b6b3e4af6b44a29b21d9a5f33e6d9" dependencies = [ "proc-macro2", "quote", @@ -5600,7 +6085,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -5612,7 +6097,7 @@ checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.9.0", "opaque-debug", ] @@ -5624,7 +6109,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -5682,10 +6167,11 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -5695,11 +6181,21 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] name = "simdutf8" @@ -5715,9 +6211,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" @@ -5737,66 +6233,68 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "solana-account" -version = "2.2.1" -source = "git+https://github.com/magicblock-labs/solana-account.git?rev=3ff1b2ea#3ff1b2eaf16fd8b82dd8e625673df9798b07db22" +version = "3.4.0" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" dependencies = [ "bincode", "qualifier_attr", "serde", "serde_bytes", - "serde_derive", "solana-account-info", "solana-clock", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-sysvar", ] [[package]] name = "solana-account-decoder" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c472eebf9ec7ee72c8d25e990a2eaf6b0b783619ef84d7954c408d6442ad5e57" +checksum = "8dbde78ccf7c3e14bc5ab230da1dfadfc2dc84b860cd2ffa39d0fd3030f7df4a" dependencies = [ "Inflector", "base64 0.22.1", "bincode", "bs58", "bv", - "lazy_static", "serde", - "serde_derive", "serde_json", "solana-account", "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", "solana-clock", - "solana-config-program", + "solana-config-interface", "solana-epoch-schedule", "solana-fee-calculator", - "solana-instruction 2.2.1", + "solana-instruction", + "solana-loader-v3-interface", "solana-nonce", - "solana-program", + "solana-program-option", "solana-program-pack", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", "solana-slot-hashes", "solana-slot-history", + "solana-stake-interface", "solana-sysvar", - "spl-token", - "spl-token-2022 7.0.0", + "solana-vote-interface", + "spl-generic-token", + "spl-token-2022-interface", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.18", "zstd", @@ -5804,31 +6302,30 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3485b583fcc58b5fa121fa0b4acb90061671fb1a9769493e8b4ad586581f47" +checksum = "22302265956e8f403cb0721bef0a79137dc1a9a25c95d732d101877629510700" dependencies = [ "base64 0.22.1", "bs58", "serde", - "serde_derive", "serde_json", "solana-account", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "zstd", ] [[package]] name = "solana-account-info" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c17d606a298a205fae325489fbed88ee6dc4463c111672172327e741c8905d" +checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" dependencies = [ "bincode", - "serde", - "solana-program-error 2.2.2", + "serde_core", + "solana-address 2.6.0", + "solana-program-error", "solana-program-memory", - "solana-pubkey 2.2.1", ] [[package]] @@ -5837,8 +6334,8 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37ca34c37f92ee341b73d5ce7c8ef5bb38e9a87955b4bd343c63fa18b149215" dependencies = [ - "solana-address 2.2.0", - "solana-program-error 3.0.0", + "solana-address 2.6.0", + "solana-program-error", ] [[package]] @@ -5847,27 +6344,29 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" dependencies = [ - "solana-address 2.2.0", + "solana-address 2.6.0", ] [[package]] name = "solana-address" -version = "2.2.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c5d02824391b072dc5cd0aaa85fb0af9784a21d23286a767994d1e8a322131" +checksum = "f1384b52c435a750cc9c538760fc7bb472fd78e65a9900a2d07312c5bb335b72" dependencies = [ - "borsh 1.6.0", + "borsh", "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "five8", + "five8 1.0.0", "five8_const 1.0.0", + "rand 0.9.3", "serde", "serde_derive", "sha2-const-stable", "solana-atomic-u64 3.0.1", "solana-define-syscall 5.0.0", - "solana-program-error 3.0.0", + "solana-nullable", + "solana-program-error", "solana-sanitize 3.0.1", "solana-sha256-hasher 3.1.0", "wincode", @@ -5875,46 +6374,22 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-interface" -version = "2.2.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" +checksum = "115b4f773acc4f3f3cb986b0d335e9845c0368c82b0940410935bc11ae065578" dependencies = [ "bincode", "bytemuck", "serde", "serde_derive", "solana-clock", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey 4.2.0", "solana-sdk-ids", "solana-slot-hashes", ] -[[package]] -name = "solana-address-lookup-table-program" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c758a82a60e5fcc93b3ee00615b0e244295aa8b2308475ea2b48f4900862a2e0" -dependencies = [ - "bincode", - "bytemuck", - "log", - "num-derive", - "num-traits", - "solana-address-lookup-table-interface", - "solana-bincode", - "solana-clock", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-log-collector", - "solana-packet", - "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-system-interface 1.0.0", - "solana-transaction-context", - "thiserror 2.0.18", -] - [[package]] name = "solana-atomic-u64" version = "2.2.1" @@ -5935,161 +6410,95 @@ dependencies = [ [[package]] name = "solana-big-mod-exp" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" +checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" dependencies = [ "num-bigint 0.4.6", "num-traits", - "solana-define-syscall 2.2.1", + "solana-define-syscall 3.0.0", ] [[package]] name = "solana-bincode" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" +checksum = "278a1a5bad62cd9da89ac8d4b7ec444e83caa8ae96aa656dfc27684b28d49a5d" dependencies = [ "bincode", - "serde", - "solana-instruction 2.2.1", + "serde_core", + "solana-instruction-error", ] [[package]] name = "solana-blake3-hasher" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" +checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" dependencies = [ "blake3", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", - "solana-sanitize 2.2.1", + "solana-define-syscall 4.0.1", + "solana-hash 4.3.0", ] [[package]] name = "solana-bn254" -version = "2.2.1" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9abc69625158faaab02347370b91c0d8e0fe347bf9287239f0fbe8f5864d91da" +checksum = "62ff13a8867fcc7b0f1114764e1bf6191b4551dcaf93729ddc676cd4ec6abc9f" dependencies = [ - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", "bytemuck", - "solana-define-syscall 2.2.1", + "solana-define-syscall 5.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-borsh" -version = "2.2.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" +checksum = "c04abbae16f57178a163125805637b8a076175bb5c0002fb04f4792bea901cf7" dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", + "borsh", ] [[package]] name = "solana-bpf-loader-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cbc2581d0f39cd7698e46baa06fc5e8928b323a85ed3a4fdbdfe0d7ea9fc152" +checksum = "044a6c5327755992853454ea5ec495edd987dab53a6f9029e695bf0d43ab55dc" dependencies = [ + "agave-syscalls", "bincode", - "libsecp256k1", "qualifier_attr", - "scopeguard", "solana-account", - "solana-account-info", - "solana-big-mod-exp", "solana-bincode", - "solana-blake3-hasher", - "solana-bn254", "solana-clock", - "solana-compute-budget", - "solana-cpi", - "solana-curve25519", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keccak-hasher", + "solana-instruction", "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", "solana-packet", - "solana-poseidon", - "solana-precompiles", "solana-program-entrypoint", - "solana-program-memory", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sbpf", "solana-sdk-ids", - "solana-secp256k1-recover", - "solana-sha256-hasher 2.2.1", - "solana-stable-layout", - "solana-system-interface 1.0.0", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-type-overrides", + "solana-system-interface 2.0.0", "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", -] - -[[package]] -name = "solana-builtins-default-costs" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4ee734c35b736e632aa3b1367f933d93ee7b4129dd1e20ca942205d4834054e" -dependencies = [ - "ahash 0.8.12", - "lazy_static", - "log", - "qualifier_attr", - "solana-address-lookup-table-program", - "solana-bpf-loader-program", - "solana-compute-budget-program", - "solana-config-program", - "solana-feature-set", - "solana-loader-v4-program", - "solana-pubkey 2.2.1", - "solana-sdk-ids", - "solana-stake-program", - "solana-system-program", - "solana-vote-program", -] - -[[package]] -name = "solana-client-traits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" -dependencies = [ - "solana-account", - "solana-commitment-config", - "solana-epoch-info", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keypair", - "solana-message", - "solana-pubkey 2.2.1", - "solana-signature", - "solana-signer", - "solana-system-interface 1.0.0", - "solana-transaction", - "solana-transaction-error", ] [[package]] name = "solana-clock" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c2177a1b9fe8326004f1151a5acd124420b737811080b1035df31349e4d892" +checksum = "95cf11109c3b6115cc510f1e31f06fdd52f504271bc24ef5f1249fbbcae5f9f3" dependencies = [ "serde", "serde_derive", @@ -6104,16 +6513,14 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" dependencies = [ - "serde", - "serde_derive", - "solana-hash 2.2.1", + "solana-hash 2.3.0", ] [[package]] name = "solana-commitment-config" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" +checksum = "1517aa49dcfa9cb793ef90e7aac81346d62ca4a546bb1a754030a033e3972e1c" dependencies = [ "serde", "serde_derive", @@ -6121,124 +6528,89 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab40b24943ca51f1214fcf7979807640ea82a8387745f864cf3cd93d1337b01" +checksum = "55267bed68ed018f6b2fd5e2f7ae694cbcb1a9bfd98b749803e94be7b5f08774" dependencies = [ "solana-fee-structure", - "solana-program-entrypoint", -] - -[[package]] -name = "solana-compute-budget-instruction" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6ef2a514cde8dce77495aefd23671dc46f638f504765910424436bc745dc04" -dependencies = [ - "log", - "solana-borsh", - "solana-builtins-default-costs", - "solana-compute-budget", - "solana-compute-budget-interface", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-packet", - "solana-pubkey 2.2.1", - "solana-sdk-ids", - "solana-svm-transaction", - "solana-transaction-error", - "thiserror 2.0.18", + "solana-program-runtime", ] [[package]] name = "solana-compute-budget-interface" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5df17b195d312b66dccdde9beec6709766d8230cb4718c4c08854f780d0309" +checksum = "8292c436b269ad23cecc8b24f7da3ab07ca111661e25e00ce0e1d22771951ab9" dependencies = [ - "borsh 1.6.0", - "serde", - "serde_derive", - "solana-instruction 2.2.1", + "solana-instruction", "solana-sdk-ids", ] [[package]] name = "solana-compute-budget-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba922073c64647fe62f032787d34d50a8152533b5a5c85608ae1b2afb00ab63" +checksum = "bcc87532d1ca1b871204cdb103514182bd9460cea403c16f22ca49e1ba063ea1" dependencies = [ - "qualifier_attr", "solana-program-runtime", ] [[package]] -name = "solana-config-program" -version = "2.2.1" +name = "solana-config-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab5647203179631940e0659a635e5d3f514ba60f6457251f8f8fbf3830e56b0" +checksum = "63e401ae56aed512821cc7a0adaa412ff97fecd2dff4602be7b1330d2daec0c4" dependencies = [ "bincode", - "chrono", "serde", "serde_derive", "solana-account", - "solana-bincode", - "solana-instruction 2.2.1", - "solana-log-collector", - "solana-packet", - "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-short-vec", - "solana-stake-interface", - "solana-system-interface 1.0.0", - "solana-transaction-context", + "solana-system-interface 2.0.0", ] [[package]] name = "solana-cpi" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" +checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" dependencies = [ "solana-account-info", - "solana-define-syscall 2.2.1", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-define-syscall 4.0.1", + "solana-instruction", + "solana-program-error", + "solana-pubkey 4.2.0", "solana-stable-layout", ] [[package]] name = "solana-curve25519" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f213e3a853a23814dee39d730cd3a5583b7b1e6b37b2cd4d940bbe62df7acc16" +checksum = "2eb091ac9c1e4d51c3cd1893444aee607cd1b0173c4ba0b557f8960844f44a1b" dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "solana-define-syscall 2.2.1", + "solana-define-syscall 3.0.0", "subtle", "thiserror 2.0.18", ] [[package]] -name = "solana-decode-error" +name = "solana-define-syscall" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" -dependencies = [ - "num-traits", -] +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" [[package]] name = "solana-define-syscall" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf784bb2cb3e02cac9801813c30187344228d2ae952534902108f6150573a33d" +checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" [[package]] name = "solana-define-syscall" @@ -6254,9 +6626,9 @@ checksum = "03aacdd7a61e2109887a7a7f046caebafce97ddf1150f33722eeac04f9039c73" [[package]] name = "solana-derivation-path" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b" +checksum = "ff71743072690fdbdfcdc37700ae1cb77485aaad49019473a81aee099b1e0b8c" dependencies = [ "derivation-path", "qstring", @@ -6265,24 +6637,21 @@ dependencies = [ [[package]] name = "solana-ed25519-program" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +checksum = "e1419197f1c06abf760043f6d64ba9d79a03ad5a43f18c7586471937122094da" dependencies = [ "bytemuck", "bytemuck_derive", - "ed25519-dalek", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-precompile-error", + "solana-instruction", "solana-sdk-ids", ] [[package]] name = "solana-epoch-info" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" +checksum = "e093c84f6ece620a6b10cd036574b0cd51944231ab32d81f80f76d54aba833e6" dependencies = [ "serde", "serde_derive", @@ -6290,13 +6659,13 @@ dependencies = [ [[package]] name = "solana-epoch-rewards" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" +checksum = "f5e7b0ba210593ba8ddd39d6d234d81795d1671cebf3026baa10d5dc23ac42f0" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", + "solana-hash 4.3.0", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -6304,20 +6673,20 @@ dependencies = [ [[package]] name = "solana-epoch-rewards-hasher" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" +checksum = "1ee8beac9bff4db9225e57d532d169b0be5e447f1e6601a2f50f27a01bf5518f" dependencies = [ "siphasher", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", + "solana-address 2.6.0", + "solana-hash 4.3.0", ] [[package]] name = "solana-epoch-schedule" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" +checksum = "9ce264b7b42322325947c4136a09460bf5c73d9aa8262c9b0a2064be63ba8639" dependencies = [ "serde", "serde_derive", @@ -6326,159 +6695,102 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-epoch-stake" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "027e6d0b9e7daac5b2ac7c3f9ca1b727861121d9ef05084cf435ff736051e7c2" +dependencies = [ + "solana-define-syscall 5.0.0", + "solana-pubkey 4.2.0", +] + [[package]] name = "solana-example-mocks" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" +checksum = "978855d164845c1b0235d4b4d101cadc55373fffaf0b5b6cfa2194d25b2ed658" dependencies = [ "serde", "serde_derive", "solana-address-lookup-table-interface", "solana-clock", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keccak-hasher", "solana-message", "solana-nonce", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-interface 1.0.0", + "solana-system-interface 2.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-feature-gate-interface" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9c7fbf3e58b64a667c5f35e90af580538a95daea7001ff7806c0662d301bdf" +checksum = "75ca9b5cbb6f500f7fd73db5bd95640f71a83f04d6121a0e59a43b202dca2731" dependencies = [ "bincode", "serde", "serde_derive", "solana-account", "solana-account-info", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-instruction", + "solana-program-error", + "solana-pubkey 4.2.0", + "solana-rent 4.2.0", "solana-sdk-ids", - "solana-system-interface 1.0.0", + "solana-system-interface 3.2.0", ] [[package]] -name = "solana-feature-set" -version = "2.2.1" +name = "solana-fee-calculator" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e1d3b52b4a014efeaaab67f14e40af3972a4be61c523d612860db8e3145529" +checksum = "57e8add96b5741573e9f7529c4bb7719cfcfa999c3847a68cdfaef0cb6adf567" dependencies = [ - "ahash 0.8.12", - "lazy_static", - "solana-epoch-schedule", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", - "solana-sha256-hasher 2.2.1", + "log", + "serde", + "serde_derive", ] [[package]] -name = "solana-fee" -version = "2.2.1" +name = "solana-fee-structure" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee323b500b445d45624ad99a08b12b37c9964ac12debf2cde9ddfad9b06e0073" +checksum = "5e2abdb1223eea8ec64136f39cb1ffcf257e00f915c957c35c0dd9e3f4e700b0" dependencies = [ - "solana-feature-set", - "solana-fee-structure", - "solana-svm-transaction", -] - -[[package]] -name = "solana-fee-calculator" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d" -dependencies = [ - "log", - "serde", - "serde_derive", -] - -[[package]] -name = "solana-fee-structure" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f45f94a88efdb512805563181dfa1c85c60a21b6e6d602bf24a2ea88f9399d6e" -dependencies = [ - "serde", - "serde_derive", - "solana-message", - "solana-native-token", + "serde", + "serde_derive", ] [[package]] name = "solana-frozen-abi-macro" -version = "2.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83f88a126213cbcb57672c5e70ddb9791eff9b480e9f39fe9285fd2abca66fa" +checksum = "5b04663357817fddb4755c6359005038c12e110ab04d1ac5048482551f95b160" dependencies = [ "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "solana-genesis-config" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968dabd2b92d57131473eddbd475339da530e14f54397386abf303de3a2595a2" -dependencies = [ - "bincode", - "chrono", - "memmap2 0.5.10", - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-cluster-type", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-inflation", - "solana-keypair", - "solana-logger", - "solana-native-token", - "solana-poh-config", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher 2.2.1", - "solana-shred-version", - "solana-signer", - "solana-time-utils", -] - [[package]] name = "solana-hard-forks" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" -dependencies = [ - "serde", - "serde_derive", -] +checksum = "52fd9cc610fd0782f09482527cb7b4f41ec22071303742718b7b57fc43bb236b" [[package]] name = "solana-hash" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7bcb14392900fe02e4e34e90234fbf0c673d4e327888410ba99fa2ba0f4e99" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" dependencies = [ - "borsh 1.6.0", - "bs58", - "bytemuck", - "bytemuck_derive", + "five8 0.2.1", "js-sys", - "serde", - "serde_derive", "solana-atomic-u64 2.2.1", "solana-sanitize 2.2.1", "wasm-bindgen", @@ -6486,70 +6798,65 @@ dependencies = [ [[package]] name = "solana-hash" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8064ea1d591ec791be95245058ca40f4f5345d390c200069d0f79bbf55bfae55" - -[[package]] -name = "solana-inflation" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" dependencies = [ - "serde", - "serde_derive", + "solana-hash 4.3.0", ] [[package]] -name = "solana-inline-spl" -version = "2.2.1" +name = "solana-hash" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "951545bd7d0ab4a878cfc7375ac9f1a475cb6936626677b2ba1d25e7b9f3910b" +checksum = "f1b113239362cee7093bfb250467138f079a2a03673181dc15bff6ccd677912d" dependencies = [ + "borsh", "bytemuck", - "solana-pubkey 2.2.1", + "bytemuck_derive", + "five8 1.0.0", + "serde", + "serde_derive", + "solana-atomic-u64 3.0.1", + "solana-sanitize 3.0.1", + "wincode", ] [[package]] -name = "solana-instruction" -version = "2.2.1" +name = "solana-inflation" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce496a475e5062ba5de97215ab39d9c358f9c9df4bb7f3a45a1f1a8bd9065ed" +checksum = "f762559c5f962727efdcb03c61f5cf6c5364645695978fb145d25c88bbacdada" dependencies = [ - "bincode", - "borsh 1.6.0", - "getrandom 0.2.16", - "js-sys", - "num-traits", "serde", "serde_derive", - "solana-define-syscall 2.2.1", - "solana-pubkey 2.2.1", - "wasm-bindgen", ] [[package]] name = "solana-instruction" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a6d22d0a6fdf345be294bb9afdcd40c296cdc095e64e7ceaa3bb3c2f608c1c" +checksum = "37ebb0ffd19263051bc3f683fcc086134b8ff23af894dcb63f7563c7137b42f1" dependencies = [ "bincode", - "borsh 1.6.0", + "borsh", "serde", + "serde_derive", "solana-define-syscall 5.0.0", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", ] [[package]] name = "solana-instruction-error" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3d048edaaeef5a3dc8c01853e585539a74417e4c2d43a9e2c161270045b838" +checksum = "a0b188842592fdf6cb96f55263ae1bf11713ab5114401d1d5a881ed7cc41bef6" dependencies = [ "num-traits", - "solana-program-error 3.0.0", + "serde", + "serde_derive", + "solana-program-error", ] [[package]] @@ -6559,23 +6866,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60147e4d0a4620013df40bf30a86dd299203ff12fcb8b593cd51014fce0875d8" dependencies = [ "solana-account-view", - "solana-address 2.2.0", + "solana-address 2.6.0", "solana-define-syscall 4.0.1", - "solana-program-error 3.0.0", + "solana-program-error", ] [[package]] name = "solana-instructions-sysvar" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427f2d0d6dc0bb49f16cef5e7f975180d2e80aab9bdd3b2af68e2d029ec63f43" +checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "solana-account-info", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", + "solana-instruction", + "solana-instruction-error", + "solana-program-error", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", "solana-sdk-ids", "solana-serialize-utils", "solana-sysvar-id", @@ -6583,40 +6891,39 @@ dependencies = [ [[package]] name = "solana-keccak-hasher" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" +checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" dependencies = [ "sha3", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", - "solana-sanitize 2.2.1", + "solana-define-syscall 4.0.1", + "solana-hash 4.3.0", ] [[package]] name = "solana-keypair" -version = "2.2.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dbb7042c2e0c561afa07242b2099d55c57bd1b1da3b6476932197d84e15e3e4" +checksum = "263d614c12aa267a3278703175fd6440552ca61bc960b5a02a4482720c53438b" dependencies = [ - "bs58", - "ed25519-dalek", + "ed25519-dalek 2.2.0", "ed25519-dalek-bip32", - "rand 0.7.3", + "five8 1.0.0", + "five8_core 1.0.0", + "rand 0.9.3", + "solana-address 2.6.0", "solana-derivation-path", - "solana-pubkey 2.2.1", "solana-seed-derivable", "solana-seed-phrase", "solana-signature", "solana-signer", - "wasm-bindgen", ] [[package]] name = "solana-last-restart-slot" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" +checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" dependencies = [ "serde", "serde_derive", @@ -6627,152 +6934,108 @@ dependencies = [ [[package]] name = "solana-loader-v2-interface" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654" +checksum = "1e4a6f0ad4fd9c30679bfee2ce3ea6a449cac38049f210480b751f65676dfe82" dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", ] [[package]] name = "solana-loader-v3-interface" -version = "3.0.0" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4be76cfa9afd84ca2f35ebc09f0da0f0092935ccdac0595d98447f259538c2" +checksum = "2e0538d4dbc9022e01616f1c58f2db98ece739c5d5ed4a2ef8737a953e76a2d4" dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 4.2.0", "solana-sdk-ids", - "solana-system-interface 1.0.0", + "solana-system-interface 3.2.0", ] [[package]] name = "solana-loader-v4-interface" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +checksum = "e4c948b33ff81fa89699911b207059e493defdba9647eaf18f23abdf3674e0fb" dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-interface 1.0.0", + "solana-system-interface 2.0.0", ] [[package]] name = "solana-loader-v4-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b24999844b09096c79567c1298617efe084860149d875b702ef76e2faa2462" +checksum = "1e88b98ba6b408fe6fcf180784fc378d07ae63100c7dd413ff97474b6de30c5d" dependencies = [ "log", - "qualifier_attr", "solana-account", "solana-bincode", "solana-bpf-loader-program", - "solana-compute-budget", - "solana-instruction 2.2.1", + "solana-instruction", "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sbpf", "solana-sdk-ids", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-type-overrides", "solana-transaction-context", - "solana-type-overrides", ] -[[package]] -name = "solana-log-collector" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa28cd428e0af919d2fafd31c646835622abfd7ed4dba4df68e3c00f461bc66" -dependencies = [ - "log", -] - -[[package]] -name = "solana-logger" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" -dependencies = [ - "env_logger", - "lazy_static", - "libc", - "log", - "signal-hook", -] - -[[package]] -name = "solana-measure" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fced2cfeff80f0214af86bc27bc6e798465a45b70329c3b468bb75957c082" - [[package]] name = "solana-message" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "268486ba8a294ed22a4d7c1ec05f540c3dbe71cfa7c6c54b6d4d13668d895678" +checksum = "0448b1fd891c5f46491e5dc7d9986385ba3c852c340db2911dd29faa01d2b08d" dependencies = [ "bincode", "blake3", "lazy_static", "serde", "serde_derive", - "solana-bincode", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", + "solana-address 2.6.0", + "solana-hash 4.3.0", + "solana-instruction", + "solana-sanitize 3.0.1", "solana-sdk-ids", "solana-short-vec", - "solana-system-interface 1.0.0", "solana-transaction-error", - "wasm-bindgen", ] [[package]] name = "solana-metrics" -version = "2.2.1" +version = "2.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89db46736ae1929db9629d779485052647117f3fcc190755519853b705f6dba5" +checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" dependencies = [ "crossbeam-channel", "gethostname", - "lazy_static", "log", - "reqwest", - "solana-clock", + "reqwest 0.12.28", "solana-cluster-type", - "solana-sha256-hasher 2.2.1", - "solana-time-utils", + "solana-sha256-hasher 2.3.0", + "solana-time-utils 2.2.1", "thiserror 2.0.18", ] -[[package]] -name = "solana-msg" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" -dependencies = [ - "solana-define-syscall 2.2.1", -] - [[package]] name = "solana-msg" version = "3.1.0" @@ -6784,369 +7047,278 @@ dependencies = [ [[package]] name = "solana-native-token" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e9de00960197412e4be3902a6cd35e60817c511137aca6c34c66cd5d4017ec" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" [[package]] name = "solana-nonce" -version = "2.2.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" +checksum = "d95dbc9f2e33b6c10e231df15cb2a3bff9ea7eab6347f9e316fe75c97fd67bbb" dependencies = [ "serde", "serde_derive", "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-hash 4.3.0", + "solana-pubkey 4.2.0", + "solana-sha256-hasher 3.1.0", ] [[package]] name = "solana-nonce-account" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +checksum = "805fd25b29e5a1a0e6c3dd6320c9da80f275fbe4ff6e392617c303a2085c435e" dependencies = [ "solana-account", - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-nonce", "solana-sdk-ids", ] +[[package]] +name = "solana-nullable" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da028344c595c7416769ff648d206de7962571291a4cea24c38a60b6f40d53bb" +dependencies = [ + "bytemuck", +] + [[package]] name = "solana-offchain-message" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +checksum = "f6e2a1141a673f72a05cf406b99e4b2b8a457792b7c01afa07b3f00d4e2de393" dependencies = [ "num_enum", - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-packet", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", + "solana-sha256-hasher 3.1.0", "solana-signature", "solana-signer", ] [[package]] name = "solana-packet" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" -dependencies = [ - "bincode", - "bitflags 2.10.0", - "cfg_eval", - "serde", - "serde_derive", - "serde_with", -] - -[[package]] -name = "solana-poh-config" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +checksum = "6edf2f25743c95229ac0fdc32f8f5893ef738dbf332c669e9861d33ddb0f469d" dependencies = [ - "serde", - "serde_derive", + "bitflags 2.11.0", ] [[package]] name = "solana-poseidon" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad1ea160d08dc423c35021fa3e437a5783eb256f5ab8bc3024e27db913acf42" +checksum = "a44739c6c9f717fd057f7c16fba65fdd3628d4918c61c399520e6f4fba5ad854" dependencies = [ - "ark-bn254", - "light-poseidon", - "solana-define-syscall 2.2.1", + "ark-bn254 0.4.0", + "ark-bn254 0.5.0", + "light-poseidon 0.2.0", + "light-poseidon 0.4.0", + "solana-define-syscall 3.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-precompile-error" -version = "2.2.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +checksum = "cafcd950de74c6c39d55dc8ca108bbb007799842ab370ef26cf45a34453c31e1" dependencies = [ "num-traits", - "solana-decode-error", -] - -[[package]] -name = "solana-precompiles" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a460ab805ec063802105b463ecb5eb02c3ffe469e67a967eea8a6e778e0bc06" -dependencies = [ - "lazy_static", - "solana-ed25519-program", - "solana-feature-set", - "solana-message", - "solana-precompile-error", - "solana-pubkey 2.2.1", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", ] [[package]] name = "solana-presigner" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +checksum = "0f704eaf825be3180832445b9e4983b875340696e8e7239bf2d535b0f86c14a2" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-signer", ] [[package]] name = "solana-program" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "586469467e93ceb79048f8d8e3a619bf61d05396ee7de95cb40280301a589d05" +checksum = "91b12305dd81045d705f427acd0435a2e46444b65367d7179d7bdcfc3bc5f5eb" dependencies = [ - "bincode", - "blake3", - "borsh 0.10.4", - "borsh 1.6.0", - "bs58", - "bytemuck", - "console_error_panic_hook", - "console_log", - "getrandom 0.2.16", - "lazy_static", - "log", "memoffset", - "num-bigint 0.4.6", - "num-derive", - "num-traits", - "rand 0.8.5", - "serde", - "serde_bytes", - "serde_derive", "solana-account-info", - "solana-address-lookup-table-interface", - "solana-atomic-u64 2.2.1", "solana-big-mod-exp", - "solana-bincode", "solana-blake3-hasher", "solana-borsh", "solana-clock", "solana-cpi", - "solana-decode-error", - "solana-define-syscall 2.2.1", + "solana-define-syscall 3.0.0", "solana-epoch-rewards", "solana-epoch-schedule", + "solana-epoch-stake", "solana-example-mocks", - "solana-feature-gate-interface", "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", + "solana-instruction-error", "solana-instructions-sysvar", "solana-keccak-hasher", "solana-last-restart-slot", - "solana-loader-v2-interface", - "solana-loader-v3-interface", - "solana-loader-v4-interface", - "solana-message", - "solana-msg 2.2.1", + "solana-msg", "solana-native-token", - "solana-nonce", "solana-program-entrypoint", - "solana-program-error 2.2.2", + "solana-program-error", "solana-program-memory", "solana-program-option", "solana-program-pack", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sanitize 2.2.1", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", - "solana-sdk-macro", "solana-secp256k1-recover", "solana-serde-varint", "solana-serialize-utils", - "solana-sha256-hasher 2.2.1", + "solana-sha256-hasher 3.1.0", "solana-short-vec", "solana-slot-hashes", "solana-slot-history", "solana-stable-layout", - "solana-stake-interface", - "solana-system-interface 1.0.0", "solana-sysvar", "solana-sysvar-id", - "solana-vote-interface", - "thiserror 2.0.18", - "wasm-bindgen", ] [[package]] name = "solana-program-entrypoint" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473ffe73c68d93e9f2aa726ad2985fe52760052709aaab188100a42c618060ec" +checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" dependencies = [ "solana-account-info", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-define-syscall 4.0.1", + "solana-program-error", + "solana-pubkey 4.2.0", ] [[package]] name = "solana-program-error" -version = "2.2.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +checksum = "4f04fa578707b3612b095f0c8e19b66a1233f7c42ca8082fcb3b745afcc0add6" dependencies = [ - "borsh 1.6.0", - "num-traits", + "borsh", "serde", "serde_derive", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-pubkey 2.2.1", ] -[[package]] -name = "solana-program-error" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" - [[package]] name = "solana-program-memory" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b0268f6c89825fb634a34bd0c3b8fdaeaecfc3728be1d622a8ee6dd577b60d4" +checksum = "4068648649653c2c50546e9a7fb761791b5ab0cda054c771bb5808d3a4b9eb52" dependencies = [ - "num-traits", - "solana-define-syscall 2.2.1", + "solana-define-syscall 4.0.1", ] [[package]] name = "solana-program-option" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" +checksum = "7a88006a9b8594088cec9027ab77caaaa258a2aaa2083d3f086c44b42e50aeab" [[package]] name = "solana-program-pack" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" +checksum = "3d7701cb15b90667ae1c89ef4ac35a59c61e66ce58ddee13d729472af7f41d59" dependencies = [ - "solana-program-error 2.2.2", + "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c3d36fed5548b1a8625eb071df6031a95aa69f884e29bf244821e53c49372bc" +version = "3.1.12" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" dependencies = [ "base64 0.22.1", "bincode", - "enum-iterator", "itertools 0.12.1", "log", "percentage", "rand 0.8.5", "serde", "solana-account", + "solana-account-info", "solana-clock", - "solana-compute-budget", "solana-epoch-rewards", "solana-epoch-schedule", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-fee-structure", + "solana-hash 3.1.0", + "solana-instruction", "solana-last-restart-slot", - "solana-log-collector", - "solana-measure", - "solana-metrics", - "solana-precompiles", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-loader-v3-interface", + "solana-program-entrypoint", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sbpf", "solana-sdk-ids", "solana-slot-hashes", "solana-stable-layout", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", + "solana-svm-transaction", + "solana-svm-type-overrides", + "solana-system-interface 2.0.0", "solana-sysvar", "solana-sysvar-id", - "solana-timings", "solana-transaction-context", - "solana-type-overrides", "thiserror 2.0.18", ] -[[package]] -name = "solana-pubkey" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40db1ff5a0f8aea2c158d78ab5f2cf897848964251d1df42fef78efd3c85b863" -dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", - "bs58", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8_const 0.1.4", - "getrandom 0.2.16", - "js-sys", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "solana-atomic-u64 2.2.1", - "solana-decode-error", - "solana-define-syscall 2.2.1", - "solana-sanitize 2.2.1", - "solana-sha256-hasher 2.2.1", - "wasm-bindgen", -] - [[package]] name = "solana-pubkey" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" dependencies = [ + "rand 0.8.5", "solana-address 1.1.0", ] [[package]] name = "solana-pubkey" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b06bd918d60111ee1f97de817113e2040ca0cedb740099ee8d646233f6b906c" +checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" dependencies = [ - "solana-address 2.2.0", + "solana-address 2.6.0", ] [[package]] name = "solana-pubsub-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd251d37c932105a684415db44bee52e75ad818dfecbf963a605289b5aaecc5" +checksum = "1109810209e87785ec378ed7ce50c83bb4a7dc26fa6a992299534c11e0c21b9c" dependencies = [ "crossbeam-channel", "futures-util", + "http 0.2.12", "log", - "reqwest", "semver", "serde", - "serde_derive", "serde_json", "solana-account-decoder-client-types", "solana-clock", - "solana-pubkey 2.2.1", - "solana-rpc-client-api", + "solana-pubkey 3.0.0", + "solana-rpc-client-types", "solana-signature", "thiserror 2.0.18", "tokio", @@ -7156,20 +7328,11 @@ dependencies = [ "url", ] -[[package]] -name = "solana-quic-definitions" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" -dependencies = [ - "solana-keypair", -] - [[package]] name = "solana-rent" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" +checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" dependencies = [ "serde", "serde_derive", @@ -7179,49 +7342,19 @@ dependencies = [ ] [[package]] -name = "solana-rent-collector" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-epoch-schedule", - "solana-genesis-config", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sdk-ids", -] - -[[package]] -name = "solana-rent-debits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" -dependencies = [ - "solana-pubkey 2.2.1", - "solana-reward-info", -] - -[[package]] -name = "solana-reserved-account-keys" -version = "2.2.1" +name = "solana-rent" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b293f4246626c0e0a991531f08848a713ada965612e99dc510963f04d12cae7" +checksum = "f9809b081e99bc142ce803bcd7ee18306759ce3b30a96a9da3f6f41c45e50ef0" dependencies = [ - "lazy_static", - "solana-feature-set", - "solana-pubkey 2.2.1", - "solana-sdk-ids", + "solana-sdk-macro", ] [[package]] name = "solana-reward-info" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" +checksum = "82be7946105c2ee6be9f9ee7bd18a068b558389221d29efa92b906476102bfcc" dependencies = [ "serde", "serde_derive", @@ -7229,70 +7362,89 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb874b757d9d3c646f031132b20d43538309060a32d02b4aebb0f8fc2cd159a" +checksum = "e4cc64e78e25d5545c8c275c697168b331cf074983a9eff2ec67de2d8c584854" dependencies = [ "async-trait", "base64 0.22.1", "bincode", "bs58", + "futures", "indicatif", "log", - "reqwest", + "reqwest 0.12.28", "reqwest-middleware", "semver", "serde", - "serde_derive", "serde_json", "solana-account", + "solana-account-decoder", "solana-account-decoder-client-types", "solana-clock", "solana-commitment-config", "solana-epoch-info", "solana-epoch-schedule", "solana-feature-gate-interface", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client-api", "solana-signature", "solana-transaction", "solana-transaction-error", "solana-transaction-status-client-types", "solana-version", + "solana-vote-interface", "tokio", ] [[package]] name = "solana-rpc-client-api" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7105452c4f039fd2c07e6fda811ff23bd270c99f91ac160308f02701eb19043" +checksum = "657c1d331d8b0611327bbf3bf342d3b98ad7743a74cc59ddfcce2925a0d818fc" dependencies = [ "anyhow", - "base64 0.22.1", - "bs58", "jsonrpc-core", - "reqwest", + "reqwest 0.12.28", "reqwest-middleware", + "serde", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-rpc-client-types", + "solana-signer", + "solana-transaction-error", + "solana-transaction-status-client-types", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-rpc-client-types" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727f7cc8e29432b7efad120558a883629332a72c9853f0506b0453a9f11be51a" +dependencies = [ + "base64 0.22.1", + "bs58", "semver", "serde", - "serde_derive", "serde_json", "solana-account", "solana-account-decoder-client-types", + "solana-address 1.1.0", "solana-clock", "solana-commitment-config", "solana-fee-calculator", "solana-inflation", - "solana-inline-spl", - "solana-pubkey 2.2.1", - "solana-signer", + "solana-reward-info", + "solana-transaction", "solana-transaction-error", "solana-transaction-status-client-types", "solana-version", + "spl-generic-token", "thiserror 2.0.18", ] @@ -7310,9 +7462,9 @@ checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" [[package]] name = "solana-sbpf" -version = "0.10.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a3ce7a0f4d6830124ceb2c263c36d1ee39444ec70146eb49b939e557e72b96" +checksum = "b15b079e08471a9dbfe1e48b2c7439c85aa2a055cbd54eddd8bd257b0a7dbb29" dependencies = [ "byteorder", "combine", @@ -7321,63 +7473,34 @@ dependencies = [ "log", "rand 0.8.5", "rustc-demangle", - "thiserror 1.0.69", + "thiserror 2.0.18", "winapi", ] [[package]] name = "solana-sdk" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4808e8d7f3c931657e615042d4176b423e66f64dc99e3dc3c735a197e512029b" +checksum = "3f03df7969f5e723ad31b6c9eadccc209037ac4caa34d8dc259316b05c11e82b" dependencies = [ "bincode", "bs58", - "getrandom 0.1.16", - "js-sys", "serde", - "serde_json", "solana-account", - "solana-bn254", - "solana-client-traits", - "solana-cluster-type", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-decode-error", - "solana-derivation-path", - "solana-ed25519-program", "solana-epoch-info", "solana-epoch-rewards-hasher", - "solana-feature-set", "solana-fee-structure", - "solana-genesis-config", - "solana-hard-forks", "solana-inflation", - "solana-instruction 2.2.1", "solana-keypair", "solana-message", - "solana-native-token", - "solana-nonce-account", "solana-offchain-message", - "solana-packet", - "solana-poh-config", - "solana-precompile-error", - "solana-precompiles", "solana-presigner", "solana-program", "solana-program-memory", - "solana-pubkey 2.2.1", - "solana-quic-definitions", - "solana-rent-collector", - "solana-rent-debits", - "solana-reserved-account-keys", - "solana-reward-info", - "solana-sanitize 2.2.1", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", "solana-sdk-ids", "solana-sdk-macro", - "solana-secp256k1-program", - "solana-secp256k1-recover", - "solana-secp256r1-program", "solana-seed-derivable", "solana-seed-phrase", "solana-serde", @@ -7386,30 +7509,26 @@ dependencies = [ "solana-shred-version", "solana-signature", "solana-signer", - "solana-system-transaction", - "solana-time-utils", + "solana-time-utils 3.0.0", "solana-transaction", - "solana-transaction-context", "solana-transaction-error", - "solana-validator-exit", "thiserror 2.0.18", - "wasm-bindgen", ] [[package]] name = "solana-sdk-ids" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" dependencies = [ - "solana-pubkey 2.2.1", + "solana-address 2.6.0", ] [[package]] name = "solana-sdk-macro" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" +checksum = "8765316242300c48242d84a41614cb3388229ec353ba464f6fe62a733e41806f" dependencies = [ "bs58", "proc-macro2", @@ -7419,71 +7538,55 @@ dependencies = [ [[package]] name = "solana-secp256k1-program" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0a1caa972414cc78122c32bdae65ac5fe89df7db598585a5cde19d16a20280a" +checksum = "ad4cf8232f7aef9ff2dd95d701f63e3c11909dec2400def5c361be29d24291e7" dependencies = [ - "bincode", "digest 0.10.7", - "libsecp256k1", + "k256", "serde", "serde_derive", "sha3", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-precompile-error", - "solana-sdk-ids", + "solana-signature", ] [[package]] name = "solana-secp256k1-recover" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +checksum = "e7c5f18893d62e6c73117dcba48f8f5e3266d90e5ec3d0a0a90f9785adac36c1" dependencies = [ - "borsh 1.6.0", - "libsecp256k1", - "solana-define-syscall 2.2.1", + "k256", + "solana-define-syscall 5.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-secp256r1-program" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf903cbdc36a161533812f90acfccdb434ed48982bd5dd71f3217930572c4a80" +checksum = "445d8e12592631d76fc4dc57858bae66c9fd7cc838c306c62a472547fc9d0ce6" dependencies = [ "bytemuck", "openssl", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-precompile-error", + "solana-instruction", "solana-sdk-ids", ] -[[package]] -name = "solana-security-txt" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" -dependencies = [ - "hashbrown 0.15.2", -] - [[package]] name = "solana-seed-derivable" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" +checksum = "ff7bdb72758e3bec33ed0e2658a920f1f35dfb9ed576b951d20d63cb61ecd95c" dependencies = [ "solana-derivation-path", ] [[package]] name = "solana-seed-phrase" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" +checksum = "dc905b200a95f2ea9146e43f2a7181e3aeb55de6bc12afb36462d00a3c7310de" dependencies = [ "hmac 0.12.1", "pbkdf2", @@ -7492,42 +7595,42 @@ dependencies = [ [[package]] name = "solana-serde" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +checksum = "709a93cab694c70f40b279d497639788fc2ccbcf9b4aa32273d4b361322c02dd" dependencies = [ "serde", ] [[package]] name = "solana-serde-varint" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc07d00200d82e6def2f7f7a45738e3406b17fe54a18adcf0defa16a97ccadb" +checksum = "950e5b83e839dc0f92c66afc124bb8f40e89bc90f0579e8ec5499296d27f54e3" dependencies = [ "serde", ] [[package]] name = "solana-serialize-utils" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" +checksum = "5d7cc401931d178472358e6b78dc72d031dc08f752d7410f0e8bd259dd6f02fa" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-sanitize 3.0.1", ] [[package]] name = "solana-sha256-hasher" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0037386961c0d633421f53560ad7c80675c0447cba4d1bb66d60974dd486c7ea" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" dependencies = [ "sha2 0.10.9", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", ] [[package]] @@ -7538,73 +7641,74 @@ checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" dependencies = [ "sha2 0.10.9", "solana-define-syscall 4.0.1", - "solana-hash 4.2.0", + "solana-hash 4.3.0", ] [[package]] name = "solana-short-vec" -version = "2.2.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" +checksum = "de3bd991c2cc415291c86bb0b6b4d53e93d13bb40344e4c5a2884e0e4f5fa93f" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "solana-shred-version" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +checksum = "d6c79722e299d957958bf33695f7cd1ef6724ff55563c60fd9e3e24487cccde2" dependencies = [ "solana-hard-forks", - "solana-hash 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-hash 4.3.0", + "solana-sha256-hasher 3.1.0", ] [[package]] name = "solana-signature" -version = "2.2.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d251c8f3dc015f320b4161daac7f108156c837428e5a8cc61136d25beb11d6" +checksum = "e7a73c6e97cc2108be0adf6a6ea326434f8398df9d7eed81da2a4548b69e971c" dependencies = [ - "bs58", - "ed25519-dalek", - "rand 0.8.5", + "ed25519-dalek 2.2.0", + "five8 1.0.0", + "rand 0.9.3", "serde", "serde-big-array", "serde_derive", - "solana-sanitize 2.2.1", + "solana-sanitize 3.0.1", + "wincode", ] [[package]] name = "solana-signer" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-transaction-error", ] [[package]] name = "solana-slot-hashes" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" +checksum = "2585f70191623887329dfb5078da3a00e15e3980ea67f42c2e10b07028419f43" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", + "solana-hash 4.3.0", "solana-sdk-ids", "solana-sysvar-id", ] [[package]] name = "solana-slot-history" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" dependencies = [ "bv", "serde", @@ -7615,232 +7719,241 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" +checksum = "c9f6a291ba063a37780af29e7db14bdd3dc447584d8ba5b3fc4b88e2bbc982fa" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 4.2.0", ] [[package]] name = "solana-stake-interface" -version = "1.2.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" +checksum = "b9bc26191b533f9a6e5a14cca05174119819ced680a80febff2f5051a713f0db" dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", "num-traits", "serde", "serde_derive", "solana-clock", "solana-cpi", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-system-interface 1.0.0", - "solana-sysvar-id", -] - -[[package]] -name = "solana-stake-program" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dabc713c25ff999424ec68ac4572f2ff6bfd6317922c7864435ccaf9c76504a8" -dependencies = [ - "bincode", - "log", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-config-program", - "solana-feature-set", - "solana-genesis-config", - "solana-instruction 2.2.1", - "solana-log-collector", - "solana-native-token", - "solana-packet", - "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sdk-ids", - "solana-stake-interface", + "solana-instruction", + "solana-program-error", + "solana-pubkey 3.0.0", + "solana-system-interface 2.0.0", "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", - "solana-vote-interface", + "solana-sysvar-id", ] [[package]] name = "solana-storage-proto" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "bs58", "enum-iterator", - "prost 0.11.9", + "prost 0.14.3", "protobuf-src", "serde", "solana-account-decoder", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-transaction", - "solana-transaction-context", "solana-transaction-error", "solana-transaction-status", - "tonic-build 0.9.2", + "tonic-prost-build", ] [[package]] name = "solana-svm" -version = "2.2.1" -source = "git+https://github.com/magicblock-labs/magicblock-svm.git?rev=5ea30a7#5ea30a72161ce920f3272cee8957fec090167470" +version = "3.1.12" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" dependencies = [ "ahash 0.8.12", "log", "percentage", "qualifier_attr", "serde", - "serde_derive", "solana-account", - "solana-bpf-loader-program", "solana-clock", - "solana-compute-budget", - "solana-compute-budget-instruction", - "solana-feature-set", "solana-fee-structure", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-instructions-sysvar", + "solana-loader-v3-interface", + "solana-loader-v4-interface", "solana-loader-v4-program", - "solana-log-collector", - "solana-measure", "solana-message", "solana-nonce", "solana-nonce-account", - "solana-precompiles", - "solana-program", + "solana-program-entrypoint", + "solana-program-pack", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-rent-debits", - "solana-reserved-account-keys", - "solana-sdk", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", - "solana-svm-rent-collector", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", "solana-svm-transaction", - "solana-timings", + "solana-svm-type-overrides", + "solana-system-interface 2.0.0", + "solana-sysvar-id", "solana-transaction-context", "solana-transaction-error", - "solana-type-overrides", + "spl-generic-token", "thiserror 2.0.18", ] [[package]] -name = "solana-svm-rent-collector" -version = "2.2.1" +name = "solana-svm-callback" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa59aea7bfbadb4be9704a6f99c86dbdf48d6204c9291df79ecd6a4f1cc90b59" +checksum = "cb521c7f62db21661267a933f0d311a76b2b744a766b46f5a9a9395ce70f687c" dependencies = [ - "solana-sdk", + "solana-account", + "solana-clock", + "solana-precompile-error", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-svm-feature-set" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08924d3b4918008d75a5807e73af8eb9f1c409067c772de518d1dd67dd4c03de" + +[[package]] +name = "solana-svm-log-collector" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26c071b3e4e9b2f19f15659abc74bd7fcc40cec6d60c1f6024384ff78cb49d40" +dependencies = [ + "log", +] + +[[package]] +name = "solana-svm-measure" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e4f9972c93d50eaa299fadf1bee9de2055d47eef26af589dcefb487f22e71d" + +[[package]] +name = "solana-svm-timings" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c65d4887002f8105f8e49253d0956292c55d66a1a3ee3594e7f90e682ed9521" +dependencies = [ + "eager", + "enum-iterator", + "solana-pubkey 3.0.0", ] [[package]] name = "solana-svm-transaction" -version = "2.2.1" +version = "3.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc4392f0eed412141a376e99dfb052069b96f13697a9abb335504babe29387a" +checksum = "6ba32fc24c9dc52ebefb481f2c971149a9624fe071803e9e19fa3bebbc0971ce" dependencies = [ - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-signature", "solana-transaction", ] +[[package]] +name = "solana-svm-type-overrides" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa888be46794b88f130508f694e989fb8802c823b9048acd4d0240e9818502fe" +dependencies = [ + "rand 0.8.5", +] + [[package]] name = "solana-system-interface" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" dependencies = [ - "js-sys", "num-traits", "serde", "serde_derive", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "wasm-bindgen", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey 3.0.0", ] [[package]] name = "solana-system-interface" -version = "2.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" +checksum = "55b54965bf0b76fa8e2b35376583efddd4d916618cfe595bf48c7d7b55a9e628" dependencies = [ "num-traits", "serde", "serde_derive", - "solana-instruction 3.2.0", - "solana-msg 3.1.0", - "solana-program-error 3.0.0", - "solana-pubkey 3.0.0", + "solana-address 2.6.0", + "solana-instruction", + "solana-msg", + "solana-program-error", ] [[package]] name = "solana-system-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c8f684977e4439031b3a27b954ab05a6bdf697d581692aaf8888cf92b73b9e" +checksum = "578e44e2abb14c34efbc0074f9009132f12ff66cc3ab1a7715d24b6801bb7f32" dependencies = [ "bincode", "log", "serde", - "serde_derive", "solana-account", "solana-bincode", - "solana-instruction 2.2.1", - "solana-log-collector", + "solana-fee-calculator", + "solana-instruction", "solana-nonce", "solana-nonce-account", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-interface 1.0.0", + "solana-svm-log-collector", + "solana-svm-type-overrides", + "solana-system-interface 2.0.0", "solana-sysvar", "solana-transaction-context", - "solana-type-overrides", ] [[package]] name = "solana-system-transaction" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" +checksum = "a31b5699ec533621515e714f1533ee6b3b0e71c463301d919eb59b8c1e249d30" dependencies = [ - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signer", - "solana-system-interface 1.0.0", + "solana-system-interface 2.0.0", "solana-transaction", ] [[package]] name = "solana-sysvar" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf6b44740d7f0c9f375d045c165bc0aab4a90658f92d6835aeb0649afaeaff9a" +checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" dependencies = [ "base64 0.22.1", "bincode", @@ -7851,35 +7964,32 @@ dependencies = [ "serde_derive", "solana-account-info", "solana-clock", - "solana-define-syscall 2.2.1", + "solana-define-syscall 4.0.1", "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar", + "solana-hash 4.3.0", + "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", - "solana-program-error 2.2.2", + "solana-program-error", "solana-program-memory", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sanitize 2.2.1", + "solana-pubkey 4.2.0", + "solana-rent 3.1.0", "solana-sdk-ids", "solana-sdk-macro", "solana-slot-hashes", "solana-slot-history", - "solana-stake-interface", "solana-sysvar-id", ] [[package]] name = "solana-sysvar-id" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" dependencies = [ - "solana-pubkey 2.2.1", + "solana-address 2.6.0", "solana-sdk-ids", ] @@ -7890,128 +8000,121 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" [[package]] -name = "solana-timings" -version = "2.2.1" +name = "solana-time-utils" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49d9eabdce318cb07c60a23f1cc367b43e177c79225b5c2a081869ad182172ad" -dependencies = [ - "eager", - "enum-iterator", - "solana-pubkey 2.2.1", -] +checksum = "0ced92c60aa76ec4780a9d93f3bd64dfa916e1b998eacc6f1c110f3f444f02c9" [[package]] name = "solana-transaction" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "753b3e9afed170e4cfc0ea1e87b5dfdc6d4a50270869414edd24c6ea1f529b29" +checksum = "96697cff5075a028265324255efed226099f6d761ca67342b230d09f72cc48d2" dependencies = [ "bincode", "serde", "serde_derive", - "solana-bincode", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keypair", + "solana-address 2.6.0", + "solana-hash 4.3.0", + "solana-instruction", + "solana-instruction-error", "solana-message", - "solana-precompiles", - "solana-pubkey 2.2.1", - "solana-reserved-account-keys", - "solana-sanitize 2.2.1", + "solana-sanitize 3.0.1", "solana-sdk-ids", "solana-short-vec", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", "solana-transaction-error", - "wasm-bindgen", ] [[package]] name = "solana-transaction-context" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5022de04cbba05377f68bf848c8c1322ead733f88a657bf792bb40f3257b8218" +version = "3.1.12" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" dependencies = [ "bincode", + "qualifier_attr", "serde", - "serde_derive", "solana-account", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-signature", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sbpf", + "solana-sdk-ids", ] [[package]] name = "solana-transaction-error" -version = "2.2.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" +checksum = "4a2165ad25b694c654d5395fc7a049452a192376e4c96a7fad05580f6ba5ba1c" dependencies = [ "serde", "serde_derive", - "solana-instruction 2.2.1", - "solana-sanitize 2.2.1", + "solana-instruction-error", + "solana-sanitize 3.0.1", ] [[package]] name = "solana-transaction-status" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64f739fb4230787b010aa4a49d3feda8b53aac145a9bc3ac2dd44337c6ecb544" +checksum = "ef168e7c707af72fff96175767f54917572adccbccddcbc4aa0d946021266173" dependencies = [ "Inflector", + "agave-reserved-account-keys", "base64 0.22.1", "bincode", - "borsh 1.6.0", + "borsh", "bs58", - "lazy_static", "log", "serde", - "serde_derive", "serde_json", "solana-account-decoder", + "solana-address-lookup-table-interface", "solana-clock", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-loader-v2-interface", + "solana-loader-v3-interface", "solana-message", - "solana-program", - "solana-pubkey 2.2.1", - "solana-reserved-account-keys", + "solana-program-option", + "solana-pubkey 3.0.0", "solana-reward-info", "solana-sdk-ids", "solana-signature", - "solana-system-interface 1.0.0", + "solana-stake-interface", + "solana-system-interface 2.0.0", "solana-transaction", "solana-transaction-error", "solana-transaction-status-client-types", - "spl-associated-token-account", - "spl-memo", - "spl-token", - "spl-token-2022 7.0.0", + "solana-vote-interface", + "spl-associated-token-account-interface", + "spl-memo-interface", + "spl-token-2022-interface", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.18", ] [[package]] name = "solana-transaction-status-client-types" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5ac91c8f0465c566164044ad7b3d18d15dfabab1b8b4a4a01cb83c047efdaae" +checksum = "cf6050ff0021c138fd522283a743b8a62e39e9710590c17873ec232054dbc03a" dependencies = [ "base64 0.22.1", "bincode", "bs58", "serde", - "serde_derive", "serde_json", "solana-account-decoder-client-types", "solana-commitment-config", + "solana-instruction", "solana-message", + "solana-pubkey 3.0.0", "solana-reward-info", "solana-signature", "solana-transaction", @@ -8020,114 +8123,79 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "solana-type-overrides" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39dc2e501edfea7ce1cec2fe2a2428aedfea1cc9c31747931e0d90d5c57b020" -dependencies = [ - "lazy_static", - "rand 0.8.5", -] - -[[package]] -name = "solana-validator-exit" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" - [[package]] name = "solana-version" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f60a01e2721bfd2e094b465440ae461d75acd363e9653565a73d2c586becb3b" +checksum = "f697aacc5aa4ac5534abdde8a91afdcf18c24d28bd52768e8001445dbda078db" dependencies = [ + "agave-feature-set", + "rand 0.8.5", "semver", "serde", - "serde_derive", - "solana-feature-set", - "solana-sanitize 2.2.1", + "solana-sanitize 3.0.1", "solana-serde-varint", ] [[package]] name = "solana-vote-interface" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4507bb9d071fb81cfcf676f12fba3db4098f764524ef0b5567d671a81d41f3e" -dependencies = [ - "bincode", - "num-derive", - "num-traits", - "serde", - "serde_derive", - "solana-clock", - "solana-decode-error", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sdk-ids", - "solana-serde-varint", - "solana-serialize-utils", - "solana-short-vec", - "solana-system-interface 1.0.0", -] - -[[package]] -name = "solana-vote-program" -version = "2.2.1" +version = "4.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab654bb2622d85b2ca0c36cb89c99fa1286268e0d784efec03a3d42e9c6a55f4" +checksum = "db6e123e16bfdd7a81d71b4c4699e0b29580b619f4cd2ef5b6aae1eb85e8979f" dependencies = [ "bincode", - "log", + "cfg_eval", "num-derive", "num-traits", "serde", "serde_derive", - "solana-account", - "solana-bincode", + "serde_with", "solana-clock", - "solana-epoch-schedule", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keypair", - "solana-packet", - "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sdk-ids", - "solana-signer", - "solana-slot-hashes", - "solana-transaction", - "solana-transaction-context", - "solana-vote-interface", - "thiserror 2.0.18", + "solana-hash 3.1.0", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sdk-ids", + "solana-serde-varint", + "solana-serialize-utils", + "solana-short-vec", + "solana-system-interface 2.0.0", +] + +[[package]] +name = "solana-zero-copy" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a91404c7de468dd80658cdb5d894ec803d1092ea6e2bfdf84eee6f07559c0d" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", ] [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d241af6328b3e0e20695bb705c850119ec5881b386c338783b8c8bc79e76c65" +checksum = "cee65de587e6fe912668903e62f3f40c02a834f21967a18cc6c71f550c51a639" dependencies = [ + "agave-feature-set", "bytemuck", "num-derive", "num-traits", - "solana-instruction 2.2.1", - "solana-log-collector", + "solana-instruction", "solana-program-runtime", "solana-sdk-ids", + "solana-svm-log-collector", "solana-zk-sdk", ] [[package]] name = "solana-zk-sdk" -version = "2.2.1" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8318220b73552a2765c6545a4be04fc87fe21b6dd0cb8c2b545a66121bf5b8a" +checksum = "9602bcb1f7af15caef92b91132ec2347e1c51a72ecdbefdaefa3eac4b8711475" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -8135,9 +8203,9 @@ dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", + "getrandom 0.2.17", "itertools 0.12.1", "js-sys", - "lazy_static", "merlin", "num-derive", "num-traits", @@ -8147,8 +8215,8 @@ dependencies = [ "serde_json", "sha3", "solana-derivation-path", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-seed-derivable", "solana-seed-phrase", @@ -8162,18 +8230,18 @@ dependencies = [ [[package]] name = "sonic-number" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a74044c092f4f43ca7a6cfd62854cf9fb5ac8502b131347c990bf22bef1dfe" +checksum = "3775c3390edf958191f1ab1e8c5c188907feebd0f3ce1604cb621f72961dbf32" dependencies = [ "cfg-if", ] [[package]] name = "sonic-rs" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4425ea8d66ec950e0a8f2ef52c766cc3d68d661d9a0845c353c40833179fd866" +checksum = "d971cc77a245ccf1756dbd1a87c3e7f709c0191464096510d43eec056d0f2c4f" dependencies = [ "ahash 0.8.12", "bumpalo", @@ -8182,19 +8250,19 @@ dependencies = [ "faststr", "itoa", "ref-cast", - "ryu", "serde", "simdutf8", "sonic-number", "sonic-simd", "thiserror 2.0.18", + "zmij", ] [[package]] name = "sonic-simd" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5707edbfb34a40c9f2a55fa09a49101d9fec4e0cc171ce386086bd9616f34257" +checksum = "f99e664ecd2d85a68c87e3c7a3cfe691f647ea9e835de984aba4d54a41f817d4" dependencies = [ "cfg-if", ] @@ -8209,40 +8277,35 @@ dependencies = [ ] [[package]] -name = "spl-associated-token-account" -version = "6.0.0" +name = "spki" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76fee7d65013667032d499adc3c895e286197a35a0d3a4643c80e7fd3e9969e3" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ - "borsh 1.6.0", - "num-derive", - "num-traits", - "solana-program", - "spl-associated-token-account-client", - "spl-token", - "spl-token-2022 6.0.0", - "thiserror 1.0.69", + "base64ct", + "der", ] [[package]] -name = "spl-associated-token-account-client" +name = "spl-associated-token-account-interface" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb" +checksum = "e6433917b60441d68d99a17e121d9db0ea15a9a69c0e5afa34649cf5ba12612f" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "borsh", + "solana-instruction", + "solana-pubkey 3.0.0", ] [[package]] name = "spl-discriminator" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" +checksum = "e597c5ff9ed7c74a54dbc47bae2f06e4db8c98f4356ad280200dc11878266db1" dependencies = [ "bytemuck", - "solana-program-error 2.2.2", - "solana-sha256-hasher 2.2.1", + "solana-program-error", + "solana-sha256-hasher 3.1.0", "spl-discriminator-derive", ] @@ -8271,191 +8334,88 @@ dependencies = [ ] [[package]] -name = "spl-elgamal-registry" -version = "0.1.1" +name = "spl-generic-token" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" +checksum = "233df81b75ab99b42f002b5cdd6e65a7505ffa930624f7096a7580a56765e9cf" dependencies = [ "bytemuck", - "solana-program", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction", + "solana-pubkey 3.0.0", ] [[package]] -name = "spl-memo" -version = "6.0.0" +name = "spl-memo-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb" +checksum = "3d4e2aedd58f858337fa609af5ad7100d4a243fdaf6a40d6eb4c28c5f19505d3" dependencies = [ - "solana-account-info", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-entrypoint", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", ] [[package]] name = "spl-pod" -version = "0.5.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" +checksum = "2f9c6e142cdf1e7e77f480053ec9f0ce989890768ddf91f619b50f39d1b456f5" dependencies = [ - "borsh 1.6.0", + "borsh", "bytemuck", "bytemuck_derive", "num-derive", "num-traits", - "solana-decode-error", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", + "num_enum", + "solana-program-error", "solana-program-option", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", + "solana-zero-copy", "solana-zk-sdk", "thiserror 2.0.18", ] [[package]] -name = "spl-program-error" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" -dependencies = [ - "num-derive", - "num-traits", - "solana-program", - "spl-program-error-derive", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.117", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd99ff1e9ed2ab86e3fd582850d47a739fec1be9f4661cba1782d3a0f26805f3" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-account-info", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed320a6c934128d4f7e54fe00e16b8aeaecf215799d060ae14f93378da6dc834" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-2022" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b27f7405010ef816587c944536b0eafbcc35206ab6ba0f2ca79f1d28e488f4f" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-sdk", - "spl-elgamal-registry", - "spl-memo", - "spl-pod", - "spl-token", - "spl-token-confidential-transfer-ciphertext-arithmetic", - "spl-token-confidential-transfer-proof-extraction", - "spl-token-confidential-transfer-proof-generation 0.2.0", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface", - "spl-type-length-value", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-2022" -version = "7.0.0" +name = "spl-token-2022-interface" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" +checksum = "2fcd81188211f4b3c8a5eba7fd534c7142f9dd026123b3472492782cc72f4dc6" dependencies = [ "arrayref", "bytemuck", "num-derive", "num-traits", "num_enum", - "solana-program", - "solana-security-txt", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-sdk-ids", "solana-zk-sdk", - "spl-elgamal-registry", - "spl-memo", "spl-pod", - "spl-token", - "spl-token-confidential-transfer-ciphertext-arithmetic", "spl-token-confidential-transfer-proof-extraction", - "spl-token-confidential-transfer-proof-generation 0.3.0", + "spl-token-confidential-transfer-proof-generation", "spl-token-group-interface", "spl-token-metadata-interface", - "spl-transfer-hook-interface", "spl-type-length-value", "thiserror 2.0.18", ] -[[package]] -name = "spl-token-confidential-transfer-ciphertext-arithmetic" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170378693c5516090f6d37ae9bad2b9b6125069be68d9acd4865bbe9fc8499fd" -dependencies = [ - "base64 0.22.1", - "bytemuck", - "solana-curve25519", - "solana-zk-sdk", -] - [[package]] name = "spl-token-confidential-transfer-proof-extraction" -version = "0.2.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" +checksum = "879a9ebad0d77383d3ea71e7de50503554961ff0f4ef6cbca39ad126e6f6da3a" dependencies = [ "bytemuck", + "solana-account-info", "solana-curve25519", - "solana-program", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey 3.0.0", + "solana-sdk-ids", "solana-zk-sdk", "spl-pod", "thiserror 2.0.18", @@ -8463,20 +8423,9 @@ dependencies = [ [[package]] name = "spl-token-confidential-transfer-proof-generation" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8627184782eec1894de8ea26129c61303f1f0adeed65c20e0b10bc584f09356d" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.3.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" +checksum = "a0cd59fce3dc00f563c6fa364d67c3f200d278eae681f4dc250240afcfe044b1" dependencies = [ "curve25519-dalek 4.1.3", "solana-zk-sdk", @@ -8485,85 +8434,77 @@ dependencies = [ [[package]] name = "spl-token-group-interface" -version = "0.5.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d595667ed72dbfed8c251708f406d7c2814a3fa6879893b323d56a10bedfc799" +checksum = "841cbd6f2322d02719be4da1affedbe6495b1048b7b985ec9796032564026e22" dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "num_enum", + "solana-address 2.6.0", + "solana-instruction", + "solana-nullable", + "solana-program-error", + "solana-zero-copy", "spl-discriminator", - "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] -name = "spl-token-metadata-interface" -version = "0.6.0" +name = "spl-token-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb" +checksum = "8c564ac05a7c8d8b12e988a37d82695b5ba4db376d07ea98bc4882c81f96c7f3" dependencies = [ - "borsh 1.6.0", + "arrayref", + "bytemuck", "num-derive", "num-traits", - "solana-borsh", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "spl-discriminator", - "spl-pod", - "spl-type-length-value", - "thiserror 1.0.69", + "num_enum", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "thiserror 2.0.18", ] [[package]] -name = "spl-transfer-hook-interface" -version = "0.9.0" +name = "spl-token-metadata-interface" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa7503d52107c33c88e845e1351565050362c2314036ddf19a36cd25137c043" +checksum = "9c467c7c3bd056f8fe60119e7ec34ddd6f23052c2fa8f1f51999098063b72676" dependencies = [ - "arrayref", - "bytemuck", + "borsh", "num-derive", "num-traits", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-borsh", + "solana-instruction", + "solana-program-error", + "solana-pubkey 3.0.0", "spl-discriminator", "spl-pod", - "spl-program-error", - "spl-tlv-account-resolution", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "spl-type-length-value" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba70ef09b13af616a4c987797870122863cba03acc4284f226a4473b043923f9" +checksum = "2504631748c48d2a937414d64a12dcac4588d34bd07d355d648619c189d29435" dependencies = [ "bytemuck", "num-derive", "num-traits", + "num_enum", "solana-account-info", - "solana-decode-error", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", + "solana-program-error", + "solana-zero-copy", "spl-discriminator", - "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -8578,42 +8519,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "structopt" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" -dependencies = [ - "clap 2.34.0", - "lazy_static", - "structopt-derive", -] - -[[package]] -name = "structopt-derive" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" -dependencies = [ - "heck 0.3.3", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "strum" version = "0.26.3" @@ -8625,11 +8536,11 @@ dependencies = [ [[package]] name = "strum" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ - "strum_macros 0.27.2", + "strum_macros 0.28.0", ] [[package]] @@ -8638,7 +8549,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -8647,11 +8558,11 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.117", @@ -8696,6 +8607,9 @@ name = "sync_wrapper" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -8716,7 +8630,18 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", - "system-configuration-sys", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.9.4", + "system-configuration-sys 0.6.0", ] [[package]] @@ -8730,12 +8655,13 @@ dependencies = [ ] [[package]] -name = "tabular" -version = "0.2.0" +name = "system-configuration-sys" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a2882c514780a1973df90de9d68adcd8871bacc9a6331c3f28e6d2ff91a3d1" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ - "unicode-width 0.1.14", + "core-foundation-sys", + "libc", ] [[package]] @@ -8746,49 +8672,31 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973" dependencies = [ "filetime", "libc", "xattr", ] -[[package]] -name = "task-local-extensions" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8" -dependencies = [ - "pin-utils", -] - [[package]] name = "tempfile" -version = "3.23.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.2", "once_cell", - "rustix 1.1.2", + "rustix 1.1.4", "windows-sys 0.61.2", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "test-kit" -version = "0.8.8" +version = "0.9.0" dependencies = [ "guinea", "magicblock-accounts-db", @@ -8796,7 +8704,7 @@ dependencies = [ "magicblock-ledger", "magicblock-processor", "solana-account", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", "solana-program", "solana-rpc-client", @@ -8811,15 +8719,6 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width 0.1.14", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -8871,30 +8770,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.44" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.24" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -8902,9 +8801,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -8912,9 +8811,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -8927,9 +8826,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.48.0" +version = "1.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c" dependencies = [ "bytes", "libc", @@ -8937,7 +8836,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.1", + "socket2 0.6.3", "tokio-macros", "tracing", "windows-sys 0.61.2", @@ -8945,9 +8844,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", @@ -8980,62 +8879,55 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.35", + "rustls 0.23.38", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", "tokio", + "tokio-util", ] [[package]] name = "tokio-tungstenite" -version = "0.20.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", - "rustls 0.21.12", + "rustls 0.23.38", + "rustls-pki-types", "tokio", - "tokio-rustls 0.24.1", + "tokio-rustls 0.26.4", "tungstenite", - "webpki-roots 0.25.4", + "webpki-roots 0.26.11", ] [[package]] name = "tokio-util" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", "futures-util", - "hashbrown 0.15.2", + "hashbrown 0.15.5", "pin-project-lite", "slab", "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.23" @@ -9059,9 +8951,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] @@ -9072,33 +8964,33 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.14.0", "serde", "serde_spanned", "toml_datetime 0.6.11", "toml_write", - "winnow", + "winnow 0.7.15", ] [[package]] name = "toml_edit" -version = "0.23.9" +version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ - "indexmap 2.12.1", - "toml_datetime 0.7.3", + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow", + "winnow 1.0.1", ] [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.1", ] [[package]] @@ -9119,17 +9011,16 @@ dependencies = [ "base64 0.22.1", "bytes", "flate2", - "h2 0.4.12", + "h2 0.4.13", "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.9.0", "hyper-timeout", "hyper-util", "percent-encoding", "pin-project", "prost 0.13.5", - "rustls-native-certs", "rustls-pemfile 2.2.0", "socket2 0.5.10", "tokio", @@ -9144,44 +9035,35 @@ dependencies = [ [[package]] name = "tonic" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" dependencies = [ "async-trait", - "axum 0.8.7", + "axum 0.8.8", "base64 0.22.1", "bytes", - "h2 0.4.12", + "flate2", + "h2 0.4.13", "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.9.0", "hyper-timeout", "hyper-util", "percent-encoding", "pin-project", - "socket2 0.6.1", + "rustls-native-certs", + "socket2 0.6.3", "sync_wrapper 1.0.2", "tokio", + "tokio-rustls 0.26.4", "tokio-stream", - "tower 0.5.2", + "tower 0.5.3", "tower-layer", "tower-service", "tracing", -] - -[[package]] -name = "tonic-build" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" -dependencies = [ - "prettyplease 0.1.25", - "proc-macro2", - "prost-build 0.11.9", - "quote", - "syn 1.0.109", + "zstd", ] [[package]] @@ -9190,7 +9072,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d021fc044c18582b9a2408cd0dd05b1596e3ecdb5c4df822bb0183545683889" dependencies = [ - "prettyplease 0.2.36", + "prettyplease", "proc-macro2", "prost-build 0.12.6", "quote", @@ -9199,40 +9081,54 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +checksum = "1882ac3bf5ef12877d7ed57aad87e75154c11931c2ba7e6cde5e22d63522c734" dependencies = [ - "prettyplease 0.2.36", + "prettyplease", "proc-macro2", - "prost-build 0.13.5", - "prost-types 0.13.5", "quote", "syn 2.0.117", ] [[package]] name = "tonic-health" -version = "0.12.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eaf34ddb812120f5c601162d5429933c9b527d901ab0e7f930d3147e33a09b2" +checksum = "f4ff0636fef47afb3ec02818f5bceb4377b8abb9d6a386aeade18bd6212f8eb7" dependencies = [ - "async-stream", - "prost 0.13.5", + "prost 0.14.3", "tokio", "tokio-stream", - "tonic 0.12.3", + "tonic 0.14.5", + "tonic-prost", ] [[package]] name = "tonic-prost" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" dependencies = [ "bytes", - "prost 0.14.1", - "tonic 0.14.2", + "prost 0.14.3", + "tonic 0.14.5", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3144df636917574672e93d0f56d7edec49f90305749c668df5101751bb8f95a" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build 0.14.3", + "prost-types 0.14.3", + "quote", + "syn 2.0.117", + "tempfile", + "tonic-build 0.14.5", ] [[package]] @@ -9257,13 +9153,13 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", - "indexmap 2.12.1", + "indexmap 2.14.0", "pin-project-lite", "slab", "sync_wrapper 1.0.2", @@ -9274,6 +9170,29 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.11.0", + "bytes", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "iri-string", + "pin-project-lite", + "tokio", + "tokio-util", + "tower 0.5.3", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -9288,9 +9207,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -9310,9 +9229,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -9331,9 +9250,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -9356,23 +9275,22 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.20.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ - "byteorder", "bytes", "data-encoding", - "http 0.2.12", + "http 1.4.0", "httparse", "log", - "rand 0.8.5", - "rustls 0.21.12", + "rand 0.9.3", + "rustls 0.23.38", + "rustls-pki-types", "sha1", - "thiserror 1.0.69", - "url", + "thiserror 2.0.18", "utf-8", - "webpki-roots 0.24.0", + "webpki-roots 0.26.11", ] [[package]] @@ -9404,21 +9322,21 @@ dependencies = [ [[package]] name = "unicase" -version = "2.8.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-truncate" @@ -9449,13 +9367,19 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unit-prefix" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" + [[package]] name = "universal-hash" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "subtle", ] @@ -9476,22 +9400,22 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc97a28575b85cfedf2a7e7d3cc64b3e11bd8ac766666318003abbacc7a21fc" +checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0" dependencies = [ "base64 0.22.1", "log", "percent-encoding", "ureq-proto", - "utf-8", + "utf8-zero", ] [[package]] name = "ureq-proto" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f" +checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c" dependencies = [ "base64 0.22.1", "http 1.4.0", @@ -9511,14 +9435,15 @@ dependencies = [ [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -9527,6 +9452,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8-zero" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -9541,11 +9472,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.19.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.2", "js-sys", "wasm-bindgen", ] @@ -9562,12 +9493,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version_check" version = "0.9.5" @@ -9603,18 +9528,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" dependencies = [ "cfg-if", "once_cell", @@ -9625,23 +9559,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -9649,9 +9579,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" dependencies = [ "bumpalo", "proc-macro2", @@ -9662,18 +9592,52 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.14.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] + [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" dependencies = [ "js-sys", "wasm-bindgen", @@ -9691,29 +9655,26 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.24.0" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" -dependencies = [ - "rustls-webpki 0.101.7", -] +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.25.4" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.6", +] [[package]] -name = "which" -version = "4.4.2" +name = "webpki-roots" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", + "rustls-pki-types", ] [[package]] @@ -9732,15 +9693,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -9749,9 +9701,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "wincode" -version = "0.4.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "466e67917609b2d40a838a5b972d1a6237c9749600cb8de8f65559b90d48485b" +checksum = "a61f8f0a55eb6cae5d7b7ad2eca536a944deb9722a948525181069064ecd1abc" dependencies = [ "pastey", "proc-macro2", @@ -9762,9 +9714,9 @@ dependencies = [ [[package]] name = "wincode-derive" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a7a568eda854acc9945ed136a9d50b8c6d31911584624958808ae96eee3912" +checksum = "fca057fc9a13dd19cdb64ef558635d43c42667c0afa1ae7915ea1fa66993fd1a" dependencies = [ "darling 0.21.3", "proc-macro2", @@ -9855,6 +9807,17 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + [[package]] name = "windows-result" version = "0.4.1" @@ -10115,9 +10078,18 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" dependencies = [ "memchr", ] @@ -10134,15 +10106,97 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap 2.14.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap 2.14.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.14.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "wyz" @@ -10160,7 +10214,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.2", + "rustix 1.1.4", ] [[package]] @@ -10169,51 +10223,11 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" -[[package]] -name = "yellowstone-grpc-client" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a311e4e4cc77ead180f6d89234b7c760f85b5d4917e6798b937b1d299de34d" -dependencies = [ - "bytes", - "futures", - "thiserror 1.0.69", - "tonic 0.12.3", - "tonic-health", - "yellowstone-grpc-proto", -] - -[[package]] -name = "yellowstone-grpc-proto" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec3b1c61e97383dc6f7c66240243c8981c16ba519c8bdf0310560db2a18876d" -dependencies = [ - "anyhow", - "bincode", - "prost 0.13.5", - "prost-types 0.13.5", - "protobuf-src", - "solana-account", - "solana-account-decoder", - "solana-clock", - "solana-hash 2.2.1", - "solana-message", - "solana-pubkey 2.2.1", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-transaction-status", - "tonic 0.12.3", - "tonic-build 0.12.3", -] - [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -10222,9 +10236,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", @@ -10234,18 +10248,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.31" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.31" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", @@ -10254,18 +10268,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", @@ -10284,9 +10298,9 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", @@ -10295,9 +10309,9 @@ dependencies = [ [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -10306,9 +10320,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -10317,9 +10331,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", @@ -10328,13 +10342,13 @@ dependencies = [ [[package]] name = "zip" -version = "7.2.0" +version = "8.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e33efc22a0650c311c2ef19115ce232583abbe80850bc8b66509ebef02de0" +checksum = "dcab981e19633ebcf0b001ddd37dd802996098bc1864f90b7c5d970ce76c1d59" dependencies = [ "crc32fast", "flate2", - "indexmap 2.12.1", + "indexmap 2.14.0", "memchr", "typed-path", "zopfli", @@ -10342,9 +10356,15 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.5.5" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" + +[[package]] +name = "zmij" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zopfli" diff --git a/Cargo.toml b/Cargo.toml index 89bcb9877..77c913027 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,54 +1,56 @@ [profile.release-with-debug] -inherits = "release" debug = true +inherits = "release" split-debuginfo = "packed" [workspace] members = [ - "magicblock-account-cloner", - "magicblock-accounts", - "magicblock-accounts-db", - "magicblock-api", - "magicblock-chainlink", - "magicblock-committor-program", - "magicblock-committor-service", - "magicblock-config", - "magicblock-core", - "magicblock-aperture", - "magicblock-magic-program-api", - "magicblock-ledger", - "magicblock-metrics", - "magicblock-processor", - "magicblock-rpc-client", - "magicblock-services", - "magicblock-table-mania", - "magicblock-task-scheduler", - "magicblock-validator", - "magicblock-validator-admin", - "magicblock-version", - "programs/guinea", - "programs/magicblock", - "test-kit", - "tools/genx", - "tools/keypair-base58", - "tools/ledger-stats", - "tools/magicblock-tui-client", + "magicblock-account-cloner", + "magicblock-accounts", + "magicblock-accounts-db", + "magicblock-aperture", + "magicblock-api", + "magicblock-chainlink", + "magicblock-committor-program", + "magicblock-committor-service", + "magicblock-config", + "magicblock-core", + "magicblock-ledger", + "magicblock-magic-program-api", + "magicblock-metrics", + "magicblock-processor", + "magicblock-rpc-client", + "magicblock-services", + "magicblock-table-mania", + "magicblock-task-scheduler", + "magicblock-validator", + "magicblock-validator-admin", + "magicblock-version", + "programs/guinea", + "programs/magicblock", + "test-kit", + "tools/genx", + "tools/keypair-base58", + "tools/ledger-stats", + "tools/magicblock-tui-client" ] # This prevents a Travis CI error when building for Windows. resolver = "2" [workspace.package] -# Solana Version (2.2.x) -version = "0.8.8" +# Solana 3.x versions authors = ["MagicBlock Maintainers "] -repository = "https://github.com/magicblock-labs/ephemeral-validator" +edition = "2021" homepage = "https://www.magicblock.xyz" license = "Business Source License 1.1" -edition = "2021" +repository = "https://github.com/magicblock-labs/ephemeral-validator" +version = "0.9.0" [workspace.dependencies] -agave-geyser-plugin-interface = { version = "2.2" } +agave-geyser-plugin-interface = { version = "3.1" } +agave-precompiles = { version = "3.1" } +agave-syscalls = { version = "3.1" } anyhow = "1.0.86" arc-swap = { version = "1.7" } assert_matches = "1.5.0" @@ -62,7 +64,6 @@ chrono = "0.4" clap = "4.5.40" console-subscriber = "0.5.0" derive_more = "2.0" -dyn-clone = "1.0.20" ed25519-dalek = "1.0.1" enum-iterator = "1.5.0" fastwebsockets = "0.10" @@ -74,7 +75,7 @@ futures = "0.3" futures-util = "0.3.30" git-version = "0.3.9" guinea = { path = "./programs/guinea" } -helius-laserstream = { git = "https://github.com/magicblock-labs/laserstream-sdk", branch = "v0.2.2-magicblock+conn-fix" } +helius-laserstream = { git = "https://github.com/magicblock-labs/laserstream-sdk", branch = "v0.2.8+conn-fix" } http-body-util = "0.1.3" humantime = { version = "1.1", package = "humantime-serde" } hyper = "1.6.0" @@ -83,14 +84,12 @@ isocountry = "0.3.2" itertools = "0.14" json = { package = "sonic-rs", version = "0.5.3" } lazy_static = "1.4.0" -libloading = "0.8" libc = "0.2.153" +libloading = "0.8" # Only used in magicblock-ledger for solana_metrics::datapoint_info! log = { version = "0.4.20" } lru = "0.16.0" -magic-domain-program = { git = "https://github.com/magicblock-labs/magic-domain-program.git", rev = "cffcfeb", default-features = false, features = [ - "modular-sdk", -] } +magic-domain-program = { git = "https://github.com/magicblock-labs/magic-domain-program.git", rev = "335a22", default-features = false } magicblock-account-cloner = { path = "./magicblock-account-cloner" } magicblock-accounts = { path = "./magicblock-accounts" } magicblock-accounts-db = { path = "./magicblock-accounts-db" } @@ -98,12 +97,12 @@ magicblock-aperture = { path = "./magicblock-aperture" } magicblock-api = { path = "./magicblock-api" } magicblock-chainlink = { path = "./magicblock-chainlink" } magicblock-committor-program = { path = "./magicblock-committor-program", features = [ - "no-entrypoint", + "no-entrypoint" ] } magicblock-committor-service = { path = "./magicblock-committor-service" } magicblock-config = { path = "./magicblock-config" } magicblock-core = { path = "./magicblock-core" } -magicblock-delegation-program-api = { version = "0.3.0" } +magicblock-delegation-program-api = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "25386a7c1d406d06b8d07a4d5b0fd37d5e74213b" } magicblock-ledger = { path = "./magicblock-ledger" } magicblock-magic-program-api = { path = "./magicblock-magic-program-api" } magicblock-metrics = { path = "./magicblock-metrics" } @@ -124,15 +123,15 @@ num_cpus = "1.16.0" parking_lot = "0.12" paste = "1.0" prometheus = "0.13.4" -# Needs to match https://crates.io/crates/solana-storage-bigtable/2.1.13/dependencies -prost = "0.11.9" +# Keep in sync with `solana-storage-proto` codegen. +prost = "0.14" protobuf-src = "1.1" rand = "0.9" -reqwest = "0.11" +reqwest = "0.12" # bundled sqlite 3.44 rusqlite = { version = "0.37.0", features = ["bundled"] } -rustc_version = "0.4" rustc-hash = "2.1" +rustc_version = "0.4" scc = "2.4" semver = "1.0.22" serde = "1.0.217" @@ -140,92 +139,90 @@ serde_json = "1.0" serde_with = "3.16" serial_test = "3.2" sha3 = "0.10.8" -solana-account = { git = "https://github.com/magicblock-labs/solana-account.git", rev = "3ff1b2ea" } -solana-account-decoder = { version = "2.2" } -solana-account-decoder-client-types = { version = "2.2" } -solana-account-info = { version = "2.2" } -solana-address-lookup-table-interface = { version = "2.2" } -solana-address-lookup-table-program = { version = "2.2" } -solana-bpf-loader-program = { version = "2.2" } -solana-clock = { version = "2.2" } -solana-commitment-config = { version = "2.2" } -solana-compute-budget-instruction = { version = "2.2" } -solana-compute-budget-interface = { version = "2.2" } -solana-compute-budget-program = { version = "2.2" } -solana-feature-gate-interface = { version = "2.2" } -solana-feature-set = { version = "2.2" } -solana-fee = { version = "2.2" } -solana-fee-calculator = { version = "2.2" } -solana-fee-structure = { version = "2.2" } -solana-frozen-abi-macro = { version = "2.2" } -solana-genesis-config = { version = "2.2" } -solana-hash = { version = "2.2" } -solana-inline-spl = { version = "2.2" } -solana-instruction = { version = "2.2" } -solana-keypair = { version = "2.2" } -solana-loader-v3-interface = { version = "3.0" } -solana-loader-v4-interface = { version = "2.0" } -solana-loader-v4-program = { version = "2.2" } -solana-log-collector = { version = "2.2" } -solana-measure = { version = "2.2" } -solana-message = { version = "2.2" } -solana-metrics = { version = "2.2" } -solana-native-token = { version = "2.2" } -solana-program = "2.2" -solana-program-runtime = { version = "2.2" } -solana-pubkey = { version = "2.2" } -solana-pubsub-client = { version = "2.2" } -solana-rent = { version = "2.2" } -solana-rent-collector = { version = "2.2" } -solana-rpc-client = { version = "2.2" } -solana-rpc-client-api = { version = "2.2" } -solana-sanitize = { version = "2.2" } -solana-sdk-ids = { version = "2.2" } -solana-seed-derivable = { version = "2.2" } -solana-sha256-hasher = { version = "2.2" } -solana-signature = { version = "2.2" } -solana-signer = { version = "2.2" } -solana-slot-hashes = { version = "2.2" } +solana-account = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } +solana-account-decoder = { version = "3.1" } +solana-account-decoder-client-types = { version = "3.1" } +solana-account-info = { version = "3.1" } +solana-address-lookup-table-interface = { version = "3.0" } +solana-bpf-loader-program = { version = "3.1" } +solana-clock = { version = "3.0" } +solana-commitment-config = { version = "3.1" } +solana-compute-budget = { version = "3.1" } +solana-compute-budget-interface = { version = "3.0" } +solana-compute-budget-program = { version = "3.1" } +solana-feature-gate-interface = { version = "3.1" } +solana-feature-set = { package = "agave-feature-set", version = "3.1" } +solana-fee-calculator = { version = "3.1" } +solana-fee-structure = { version = "3.0" } +solana-frozen-abi-macro = { version = "3.0" } +solana-hash = { version = "3.1" } +solana-instruction = { version = "3.0" } +solana-keypair = { version = "3.1.0" } +solana-loader-v3-interface = { version = "6.1.0" } +solana-loader-v4-interface = { version = "3.1" } +solana-loader-v4-program = { version = "3.1" } +solana-log-collector = { package = "solana-svm-log-collector", version = "3.1" } +solana-measure = { package = "solana-svm-measure", version = "3.1" } +solana-message = { version = "3.0" } +solana-metrics = { version = "2.3.13" } +solana-native-token = { version = "3.0" } +solana-precompile-error = "3.0" +solana-program = "3.0" +solana-program-option = { version = "3.0" } +solana-program-pack = { version = "3.0" } +solana-program-runtime = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } +solana-pubkey = { version = "3.0" } +solana-pubsub-client = { version = "3.1" } +solana-rent = { version = "3.0" } +solana-rpc-client = { version = "3.1" } +solana-rpc-client-api = { version = "3.1" } +solana-sanitize = { version = "3.0" } +solana-sdk-ids = { version = "3.0" } +solana-seed-derivable = { version = "3.0" } +solana-sha256-hasher = { version = "3.1" } +solana-signature = { version = "3.1" } +solana-signer = { version = "3.0" } +solana-slot-hashes = { version = "3.0" } solana-storage-proto = { path = "storage-proto" } -solana-svm-transaction = { version = "2.2" } -solana-system-interface = { version = "1.0" } -solana-system-program = { version = "2.2" } -solana-system-transaction = { version = "2.2" } -solana-sysvar = { version = "2.2" } -solana-timings = "2.2" -solana-transaction = { version = "2.2" } -solana-transaction-context = { version = "2.2", features = ["serde"] } -solana-transaction-error = { version = "2.2" } -solana-transaction-status = { version = "2.2" } -solana-transaction-status-client-types = "2.2" -solana-zk-elgamal-proof-program = { version = "2.2" } +solana-svm-callback = { version = "3.1" } +solana-svm-transaction = { version = "3.1" } +solana-system-interface = { version = "3.1" } +solana-system-program = { version = "3.1" } +solana-system-transaction = { version = "3.0" } +solana-sysvar = { version = "3.0" } +solana-timings = { package = "solana-svm-timings", version = "3.1" } +solana-transaction = { version = "3.0" } +solana-transaction-context = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3", features = [ + "dev-context-only-utils" +] } +solana-transaction-error = { version = "3.0" } +solana-transaction-status = { version = "3.1" } +solana-transaction-status-client-types = "3.1" +solana-zk-elgamal-proof-program = { version = "3.0" } static_assertions = "1.1.0" tempfile = "3.10.1" test-kit = { path = "./test-kit" } -thiserror = "1.0.57" +thiserror = "2" tokio = "1.0" tokio-stream = "0.1.15" tokio-util = "0.7.10" toml = "0.8.13" -tonic = "0.12" -tonic-build = "0.9.2" +tonic = "0.14" +tonic-prost-build = "0.14" tracing = "0.1" tracing-log = { version = "0.2", features = ["log-tracer"] } tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] } -twox-hash = { version = "2.1", default-features = false, features = [ - "xxhash3_64", - "alloc", -] } +twox-hash = { version = "2.1", default-features = false, features = ["alloc", "xxhash3_64"] } url = "2.5.0" # SPL Token crates used across the workspace -spl-token = "7.0" -spl-token-2022 = "7.0" +spl-token = { package = "spl-token-interface", version = "2.0" } +spl-token-2022 = { package = "spl-token-2022-interface", version = "2.1" } [workspace.dependencies.solana-svm] -git = "https://github.com/magicblock-labs/magicblock-svm.git" -rev = "5ea30a7" +branch = "v3" features = ["dev-context-only-utils"] +git = "https://github.com/magicblock-labs/magicblock-svm.git" [workspace.dependencies.rocksdb] # Avoid the vendored bzip2 within rocksdb-sys that can cause linker conflicts @@ -236,11 +233,13 @@ version = "0.22.0" # some solana dependencies have solana-storage-proto as dependency # we need to patch them with our version, because they use protobuf-src v1.1.0 # and we use protobuf-src v2.1.1. Otherwise compilation fails -solana-account = { git = "https://github.com/magicblock-labs/solana-account.git", rev = "3ff1b2ea" } +solana-account = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } +solana-program-runtime = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } solana-storage-proto = { path = "./storage-proto" } -solana-svm = { git = "https://github.com/magicblock-labs/magicblock-svm.git", rev = "5ea30a7" } +solana-svm = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } +solana-transaction-context = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } # Fork is used to enable `disable_manual_compaction` usage # Fork is based on commit d4e9e16 of rocksdb (parent commit of 0.23.0 release) # without patching update isn't possible due to conflict with solana deps -rocksdb = { git = "https://github.com/magicblock-labs/rust-rocksdb.git", rev = "6d975197" } libsodium-rs = { git = "https://github.com/jedisct1/libsodium-rs.git", rev = "0397a6c5785233f9f2ac91f3eedc3cceb74e0060" } +rocksdb = { git = "https://github.com/magicblock-labs/rust-rocksdb.git", rev = "6d975197" } diff --git a/config.example.toml b/config.example.toml index 10dd068eb..82f9e75b0 100644 --- a/config.example.toml +++ b/config.example.toml @@ -227,15 +227,10 @@ reset = false # Env: MBV_CHAINLINK__PREPARE_LOOKUP_TABLES prepare-lookup-tables = false -# Amount of lamports to automatically airdrop to empty feepayer accounts on startup. -# Default: 0 -# Env: MBV_CHAINLINK__AUTO_AIRDROP_LAMPORTS -auto-airdrop-lamports = 0 - # Maximum number of accounts to monitor for price updates. -# Default: 0 +# Default: 5000 # Env: MBV_CHAINLINK__MAX_MONITORED_ACCOUNTS -max-monitored-accounts = 1000 +max-monitored-accounts = 5000 # When true, confined accounts are removed during accounts bank reset. # Default: false diff --git a/magicblock-accounts-db/src/lib.rs b/magicblock-accounts-db/src/lib.rs index f2826bc80..71dd62d8e 100644 --- a/magicblock-accounts-db/src/lib.rs +++ b/magicblock-accounts-db/src/lib.rs @@ -175,9 +175,10 @@ impl AccountsDb { self.index.remove(pubkey, txn!())?; return Ok(()); } + let owner_changed = account.owner_changed(); match account { AccountSharedData::Borrowed(acc) => { - if acc.owner_changed() { + if owner_changed { self.index .ensure_correct_owner(pubkey, account.owner(), txn!()) .log_err(|| "Failed to update owner index")?; @@ -387,7 +388,7 @@ impl AccountsDb { let _locked = self.write_lock.write(); let mut hasher = xxhash3_64::Hasher::new(); for (pubkey, acc) in self.iter_all() { - let Some(borrowed) = acc.as_borrowed() else { + let AccountSharedData::Borrowed(borrowed) = &acc else { continue; }; hasher.write(pubkey.as_ref()); diff --git a/magicblock-aperture/Cargo.toml b/magicblock-aperture/Cargo.toml index 9bec106ca..fe71f4359 100644 --- a/magicblock-aperture/Cargo.toml +++ b/magicblock-aperture/Cargo.toml @@ -41,9 +41,7 @@ magicblock-version = { workspace = true } agave-geyser-plugin-interface = { workspace = true } solana-account = { workspace = true } solana-account-decoder = { workspace = true } -solana-compute-budget-instruction = { workspace = true } solana-feature-set = { workspace = true } -solana-fee = { workspace = true } solana-fee-structure = { workspace = true } solana-keypair = { workspace = true } solana-message = { workspace = true } @@ -61,8 +59,8 @@ base64 = { workspace = true } bincode = { workspace = true } bs58 = { workspace = true } json = { workspace = true } -tracing = { workspace = true } serde = { workspace = true } +tracing = { workspace = true } thiserror = { workspace = true } [dev-dependencies] diff --git a/magicblock-aperture/src/geyser.rs b/magicblock-aperture/src/geyser.rs index ba2c47e71..1b10f03eb 100644 --- a/magicblock-aperture/src/geyser.rs +++ b/magicblock-aperture/src/geyser.rs @@ -3,7 +3,7 @@ use std::{fs, path::PathBuf}; use agave_geyser_plugin_interface::geyser_plugin_interface::{ GeyserPlugin, GeyserPluginError, ReplicaAccountInfoV3, ReplicaAccountInfoVersions, ReplicaBlockInfoV4, ReplicaBlockInfoVersions, - ReplicaTransactionInfoV2, ReplicaTransactionInfoVersions, SlotStatus, + ReplicaTransactionInfoV3, ReplicaTransactionInfoVersions, SlotStatus, }; use json::{JsonValueTrait, Value}; use libloading::{Library, Symbol}; @@ -12,7 +12,6 @@ use magicblock_core::link::{ transactions::TransactionStatus, }; use solana_account::ReadableAccount; -use solana_transaction_status::RewardsAndNumPartitions; const ENTRYPOINT_SYMBOL: &[u8] = b"_create_plugin"; #[allow(improper_ctypes_definitions)] @@ -133,10 +132,12 @@ impl GeyserPluginManager { ) -> Result<(), GeyserPluginError> { check_if_enabled!(self); let slot = txn.slot; - let txn = ReplicaTransactionInfoV2 { + let versioned = txn.txn.to_versioned_transaction(); + let txn = ReplicaTransactionInfoV3 { signature: txn.txn.signature(), + message_hash: txn.txn.message_hash(), is_vote: false, - transaction: &txn.txn, + transaction: &versioned, transaction_status_meta: &txn.meta, index: txn.index as usize, }; @@ -144,7 +145,7 @@ impl GeyserPluginManager { if !plugin.transaction_notifications_enabled() { continue; } - let txn = ReplicaTransactionInfoVersions::V0_0_2(&txn); + let txn = ReplicaTransactionInfoVersions::V0_0_3(&txn); plugin.notify_transaction(txn, slot)?; } Ok(()) @@ -155,15 +156,17 @@ impl GeyserPluginManager { block: &BlockUpdate, ) -> Result<(), GeyserPluginError> { check_if_enabled!(self); + let blockhash = block.hash.to_string(); + let rewards = solana_transaction_status::RewardsAndNumPartitions { + rewards: Vec::new(), + num_partitions: None, + }; let block = ReplicaBlockInfoV4 { slot: block.meta.slot, parent_slot: block.meta.slot.saturating_sub(1), - blockhash: &block.hash.to_string(), + blockhash: &blockhash, block_height: Some(block.meta.slot), - rewards: &RewardsAndNumPartitions { - rewards: Vec::new(), - num_partitions: None, - }, + rewards: &rewards, block_time: Some(block.meta.time), // TODO(bmuddha): register proper values with the new ledger parent_blockhash: "11111111111111111111111111111111", diff --git a/magicblock-aperture/src/requests/http/get_fee_for_message.rs b/magicblock-aperture/src/requests/http/get_fee_for_message.rs index a6d844aa4..53dab14f4 100644 --- a/magicblock-aperture/src/requests/http/get_fee_for_message.rs +++ b/magicblock-aperture/src/requests/http/get_fee_for_message.rs @@ -1,6 +1,4 @@ use base64::{prelude::BASE64_STANDARD, Engine}; -use solana_compute_budget_instruction::instructions_processor::process_compute_budget_instructions; -use solana_fee_structure::FeeBudgetLimits; use solana_message::{ SanitizedMessage, SanitizedVersionedMessage, SimpleAddressLoader, VersionedMessage, @@ -12,8 +10,7 @@ impl HttpDispatcher { /// Handles the `getFeeForMessage` RPC request. /// /// Calculates the estimated fee for a given transaction message. The calculation - /// accounts for the number of signatures, the validator's base fee, and any - /// prioritization fee requested via `ComputeBudget` instructions within the message. + /// accounts for the number of signatures, the validator's base fee pub(crate) fn get_fee_for_message( &self, request: &mut JsonRequest, @@ -40,25 +37,23 @@ impl HttpDispatcher { ) .map_err(RpcError::transaction_verification)?; - // Process any compute budget instructions to determine prioritization fee - let budget = process_compute_budget_instructions( - sanitized_message - .program_instructions_iter() - .map(|(k, i)| (k, i.into())), - &self.context.featureset, - ) - .map(FeeBudgetLimits::from)?; - - // Calculate the final fee. - let fee = solana_fee::calculate_fee( - &sanitized_message, - self.context.base_fee == 0, - self.context.base_fee, - budget.prioritization_fee, - self.context.featureset.as_ref().into(), - ); + let fee = signature_fee(&sanitized_message, self.context.base_fee); let slot = self.blocks.block_height(); Ok(ResponsePayload::encode(&request.id, fee, slot)) } } + +fn signature_fee( + message: &SanitizedMessage, + lamports_per_signature: u64, +) -> u64 { + if lamports_per_signature == 0 { + return 0; + } + + message + .get_signature_details() + .total_signatures() + .saturating_mul(lamports_per_signature) +} diff --git a/magicblock-aperture/src/requests/http/simulate_transaction.rs b/magicblock-aperture/src/requests/http/simulate_transaction.rs index edd88d38a..9d55479a6 100644 --- a/magicblock-aperture/src/requests/http/simulate_transaction.rs +++ b/magicblock-aperture/src/requests/http/simulate_transaction.rs @@ -69,7 +69,6 @@ impl HttpDispatcher { return_data, inner_instructions: recorded_inner_instructions, } = result; - let result_err = result.as_ref().err().cloned(); let accounts = if let Some(config_accounts) = accounts_config { let accounts_encoding = config_accounts .encoding @@ -89,7 +88,7 @@ impl HttpDispatcher { ))); } - if result_err.is_some() { + if result.is_err() { Some(vec![None; config_accounts.addresses.len()]) } else { let pubkeys = config_accounts @@ -153,13 +152,20 @@ impl HttpDispatcher { }); let result = RpcSimulateTransactionResult { - err: result_err, logs, accounts, units_consumed: Some(units_consumed), return_data: return_data.map(Into::into), + err: result.err().map(Into::into), + loaded_accounts_data_size: None, inner_instructions, replacement_blockhash, + fee: None, + pre_balances: None, + post_balances: None, + pre_token_balances: None, + post_token_balances: None, + loaded_addresses: None, }; let slot = self.blocks.block_height(); diff --git a/magicblock-api/Cargo.toml b/magicblock-api/Cargo.toml index 79bacd067..ba314a6ce 100644 --- a/magicblock-api/Cargo.toml +++ b/magicblock-api/Cargo.toml @@ -13,8 +13,8 @@ borsh = "1.5.3" fd-lock = { workspace = true } tracing = { workspace = true } -magic-domain-program = { workspace = true } magicblock-delegation-program-api = { workspace = true } +magic-domain-program = { workspace = true } magicblock-account-cloner = { workspace = true } magicblock-accounts = { workspace = true } magicblock-accounts-db = { workspace = true } @@ -38,14 +38,15 @@ solana-account = { workspace = true } solana-clock = { workspace = true } solana-commitment-config = { workspace = true } solana-feature-set = { workspace = true } -solana-genesis-config = { workspace = true } solana-hash = { workspace = true } -solana-inline-spl = { workspace = true } solana-instruction = { workspace = true } solana-keypair = { workspace = true } solana-program = { workspace = true } +solana-program-option = { workspace = true } +solana-program-pack = { workspace = true } solana-pubkey = { workspace = true } solana-rpc-client = { workspace = true } +solana-sdk-ids = { workspace = true } solana-sha256-hasher = { workspace = true } solana-signature = { workspace = true } solana-signer = { workspace = true } @@ -58,6 +59,7 @@ solana-fee-calculator = { workspace = true } solana-feature-gate-interface = { workspace = true } solana-message = { workspace = true } solana-native-token = { workspace = true } +spl-token = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true } tokio-util = { workspace = true } diff --git a/magicblock-api/src/domain_registry_manager.rs b/magicblock-api/src/domain_registry_manager.rs index 1f356f469..242f28f8f 100644 --- a/magicblock-api/src/domain_registry_manager.rs +++ b/magicblock-api/src/domain_registry_manager.rs @@ -12,12 +12,13 @@ use solana_account::ReadableAccount; use solana_commitment_config::CommitmentConfig; use solana_instruction::{AccountMeta, Instruction}; use solana_keypair::Keypair; -use solana_program::system_program; use solana_pubkey::Pubkey; use solana_rpc_client::rpc_client::RpcClient; +use solana_sdk_ids::system_program; use solana_signer::Signer; use solana_transaction::Transaction; use tracing::info; + pub struct DomainRegistryManager { client: RpcClient, } diff --git a/magicblock-api/src/fund_account.rs b/magicblock-api/src/fund_account.rs index 3e9e4e2f0..02fc75665 100644 --- a/magicblock-api/src/fund_account.rs +++ b/magicblock-api/src/fund_account.rs @@ -41,7 +41,7 @@ pub(crate) fn init_validator_identity( ) { fund_account(accountsdb, validator_id, u64::MAX / 2); let mut authority = accountsdb.get_account(validator_id).unwrap(); - authority.as_borrowed_mut().unwrap().set_privileged(true); + authority.set_privileged(true); let _ = accountsdb.insert_account(validator_id, &authority); } diff --git a/magicblock-api/src/genesis_utils.rs b/magicblock-api/src/genesis_utils.rs index c931df0fd..ad0cfb703 100644 --- a/magicblock-api/src/genesis_utils.rs +++ b/magicblock-api/src/genesis_utils.rs @@ -1,131 +1,59 @@ -// NOTE: from runtime/src/genesis_utils.rs -// heavily updated to remove vote + stake related code as well as cluster type (defaulting to mainnet) -use std::time::UNIX_EPOCH; - use solana_account::{Account, AccountSharedData}; -use solana_clock::UnixTimestamp; -use solana_feature_gate_interface::{create_account, Feature}; -use solana_feature_set::FeatureSet; -use solana_fee_calculator::FeeRateGovernor; -use solana_genesis_config::{ClusterType, GenesisConfig}; use solana_keypair::Keypair; use solana_native_token::LAMPORTS_PER_SOL; +use solana_program_option::COption; +use solana_program_pack::Pack; use solana_pubkey::Pubkey; -use solana_rent::Rent; use solana_signer::Signer; +use spl_token::{native_mint, state::Mint}; // Default amount received by the validator const VALIDATOR_LAMPORTS: u64 = u64::MAX / 2; pub struct GenesisConfigInfo { - pub genesis_config: GenesisConfig, + pub accounts: Vec<(Pubkey, AccountSharedData)>, pub validator_pubkey: Pubkey, } pub fn create_genesis_config_with_leader( mint_lamports: u64, validator_pubkey: &Pubkey, - lamports_per_signature: u64, ) -> GenesisConfigInfo { let mint_keypair = Keypair::new(); - - let genesis_config = create_genesis_config_with_leader_ex( - mint_lamports, - &mint_keypair.pubkey(), - validator_pubkey, - VALIDATOR_LAMPORTS, - FeeRateGovernor { - target_lamports_per_signature: 0, - lamports_per_signature, - target_signatures_per_slot: 0, - ..FeeRateGovernor::default() - }, - Rent::default(), - vec![], - ); + let token_program = spl_token::id(); + let native_mint = native_mint::id(); + let mut native_mint_data = [0; Mint::LEN]; + Mint { + mint_authority: COption::None, + supply: 0, + decimals: native_mint::DECIMALS, + is_initialized: true, + freeze_authority: COption::None, + } + .pack_into_slice(&mut native_mint_data); + let accounts = vec![ + ( + mint_keypair.pubkey(), + AccountSharedData::new(mint_lamports, 0, &Pubkey::default()), + ), + ( + *validator_pubkey, + AccountSharedData::new(VALIDATOR_LAMPORTS, 0, &Pubkey::default()), + ), + ( + native_mint, + AccountSharedData::from(Account { + owner: token_program, + data: native_mint_data.to_vec(), + lamports: LAMPORTS_PER_SOL, + executable: false, + rent_epoch: 1, + }), + ), + ]; GenesisConfigInfo { - genesis_config, + accounts, validator_pubkey: *validator_pubkey, } } - -pub fn activate_all_features(genesis_config: &mut GenesisConfig) { - // Activate all features at genesis in development mode - for feature_id in FeatureSet::default().inactive { - activate_feature(genesis_config, feature_id); - } -} - -pub fn activate_feature( - genesis_config: &mut GenesisConfig, - feature_id: Pubkey, -) { - genesis_config.accounts.insert( - feature_id, - Account::from(create_account( - &Feature { - activated_at: Some(0), - }, - std::cmp::max( - genesis_config.rent.minimum_balance(Feature::size_of()), - 1, - ), - )), - ); -} - -#[allow(clippy::too_many_arguments)] -pub fn create_genesis_config_with_leader_ex( - mint_lamports: u64, - mint_pubkey: &Pubkey, - validator_pubkey: &Pubkey, - validator_lamports: u64, - fee_rate_governor: FeeRateGovernor, - rent: Rent, - mut initial_accounts: Vec<(Pubkey, AccountSharedData)>, -) -> GenesisConfig { - initial_accounts.push(( - *mint_pubkey, - AccountSharedData::new(mint_lamports, 0, &Pubkey::default()), - )); - initial_accounts.push(( - *validator_pubkey, - AccountSharedData::new(validator_lamports, 0, &Pubkey::default()), - )); - - // Note that zero lamports for validator stake will result in stake account - // not being stored in accounts-db but still cached in bank stakes. This - // causes discrepancy between cached stakes accounts in bank and - // accounts-db which in particular will break snapshots test. - let native_mint_account = AccountSharedData::from(Account { - owner: solana_inline_spl::token::id(), - data: solana_inline_spl::token::native_mint::ACCOUNT_DATA.to_vec(), - lamports: LAMPORTS_PER_SOL, - executable: false, - rent_epoch: 1, - }); - initial_accounts.push(( - solana_inline_spl::token::native_mint::id(), - native_mint_account, - )); - - let mut genesis_config = GenesisConfig { - accounts: initial_accounts - .iter() - .cloned() - .map(|(key, account)| (key, Account::from(account))) - .collect(), - fee_rate_governor, - rent, - cluster_type: ClusterType::MainnetBeta, - creation_time: UNIX_EPOCH.elapsed().unwrap().as_secs() as UnixTimestamp, - ..GenesisConfig::default() - }; - - if genesis_config.cluster_type == ClusterType::Development { - activate_all_features(&mut genesis_config); - } - - genesis_config -} diff --git a/magicblock-api/src/magic_validator.rs b/magicblock-api/src/magic_validator.rs index 9e90a872c..95f91a345 100644 --- a/magicblock-api/src/magic_validator.rs +++ b/magicblock-api/src/magic_validator.rs @@ -149,13 +149,9 @@ impl MagicValidator { let validator_pubkey = identity_keypair.pubkey(); let GenesisConfigInfo { - genesis_config, + accounts: genesis_accounts, validator_pubkey, - } = create_genesis_config_with_leader( - u64::MAX, - &validator_pubkey, - config.validator.basefee, - ); + } = create_genesis_config_with_leader(u64::MAX, &validator_pubkey); let step_start = Instant::now(); let (ledger, last_slot) = @@ -178,11 +174,11 @@ impl MagicValidator { let accountsdb = AccountsDb::new(&config.accountsdb, &config.storage, last_slot)?; log_timing("startup", "accountsdb_init", step_start); - for (pubkey, account) in genesis_config.accounts { + for (pubkey, account) in genesis_accounts { if accountsdb.get_account(&pubkey).is_some() { continue; } - let _ = accountsdb.insert_account(&pubkey, &account.into()); + let _ = accountsdb.insert_account(&pubkey, &account); } let exit = Arc::::default(); @@ -297,18 +293,17 @@ impl MagicValidator { config.validator.replication_mode, ReplicationMode::Standalone ); + let svm_env = build_svm_env(&accountsdb, latest_block.blockhash, 0); + let feature_set = svm_env.feature_set.clone(); let txn_scheduler_state = TransactionSchedulerState { accountsdb: accountsdb.clone(), ledger: ledger.clone(), transaction_status_tx: validator_channels.transaction_status, txn_to_process_rx: validator_channels.transaction_to_process, account_update_tx: validator_channels.account_update, - environment: build_svm_env(&accountsdb, latest_block.blockhash, 0), + environment: svm_env.environment, + feature_set: feature_set.clone(), tasks_tx: validator_channels.tasks_service, - is_auto_airdrop_lamports_enabled: config - .chainlink - .auto_airdrop_lamports - > 0, shutdown: token.clone(), mode_rx, }; @@ -322,7 +317,7 @@ impl MagicValidator { identity: validator_pubkey, faucet, base_fee, - featureset: txn_scheduler_state.environment.feature_set.clone(), + featureset: Arc::new(feature_set), blocktime: config.ledger.block_time_ms(), }; // We dedicate half of the available resources to the execution @@ -652,7 +647,7 @@ impl MagicValidator { Ok(()) } - #[instrument(skip(self, config), fields(identity = %self.identity))] + #[instrument(skip(self), fields(identity = %self.identity))] async fn register_validator_on_chain( &self, config: &ChainOperationConfig, @@ -665,7 +660,7 @@ impl MagicValidator { block_time_ms: self.config.ledger.block_time_ms() as u16, base_fee: self.config.validator.basefee as u16, features: FeaturesSet::default(), - load_average: 0, // not implemented + load_average: 0, country_code, addr: config.fqdn.to_string(), }); @@ -676,19 +671,18 @@ impl MagicValidator { validator_info, ) .map_err(|err| { - ApiError::FailedToRegisterValidatorOnChain(format!("{:?}", err)) + ApiError::FailedToRegisterValidatorOnChain(err.to_string()) }) } fn unregister_validator_on_chain(&self) -> ApiResult<()> { let validator_keypair = validator_authority(); - DomainRegistryManager::handle_unregistration_static( self.config.rpc_url(), &validator_keypair, ) .map_err(|err| { - ApiError::FailedToUnregisterValidatorOnChain(format!("{err:#}")) + ApiError::FailedToUnregisterValidatorOnChain(err.to_string()) }) .inspect(|_| info!("Unregistered validator on chain")) } diff --git a/magicblock-chainlink/Cargo.toml b/magicblock-chainlink/Cargo.toml index 1c4c4148f..b3276a98f 100644 --- a/magicblock-chainlink/Cargo.toml +++ b/magicblock-chainlink/Cargo.toml @@ -1,7 +1,7 @@ [package] +edition.workspace = true name = "magicblock-chainlink" version.workspace = true -edition.workspace = true [dependencies] arc-swap = "1.7" @@ -10,48 +10,48 @@ bincode = { workspace = true } borsh = { workspace = true } futures-util = { workspace = true } helius-laserstream = { workspace = true } -tracing = { workspace = true } lru = { workspace = true } magicblock-accounts-db = { workspace = true } magicblock-config = { workspace = true } magicblock-core = { workspace = true } -parking_lot = { workspace = true } +magicblock-delegation-program-api = { workspace = true } magicblock-magic-program-api = { workspace = true } magicblock-metrics = { workspace = true } -magicblock-delegation-program-api = { workspace = true } +parking_lot = { workspace = true } +scc = { workspace = true } solana-account = { workspace = true } solana-account-decoder = { workspace = true } solana-account-decoder-client-types = { workspace = true } solana-address-lookup-table-interface = { workspace = true } +solana-clock = { workspace = true } solana-commitment-config = { workspace = true } solana-feature-set = { workspace = true } +solana-hash = { workspace = true } solana-instruction = { workspace = true } solana-keypair = { workspace = true } solana-loader-v3-interface = { workspace = true, features = ["serde"] } solana-loader-v4-interface = { workspace = true, features = ["serde"] } +solana-message = { workspace = true } solana-program = { workspace = true } solana-pubkey = { workspace = true } solana-pubsub-client = { workspace = true } +solana-rent = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-sdk-ids = { workspace = true } -scc = { workspace = true } solana-signature = { workspace = true } solana-signer = { workspace = true } -solana-system-interface = { workspace = true } +solana-system-interface = { workspace = true, features = ["bincode"] } solana-transaction = { workspace = true } solana-transaction-error = { workspace = true } spl-token = { workspace = true } spl-token-2022 = { workspace = true } -solana-clock = { workspace = true } -solana-hash = { workspace = true } -solana-sysvar = { workspace = true } -solana-message = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["full"] } tokio-stream = { workspace = true } tokio-util = { workspace = true } tonic = { workspace = true } +tracing = { workspace = true } url = { workspace = true } [dev-dependencies] diff --git a/magicblock-chainlink/src/chainlink/blacklisted_accounts.rs b/magicblock-chainlink/src/chainlink/blacklisted_accounts.rs index 3bf3b3732..8f36a38b0 100644 --- a/magicblock-chainlink/src/chainlink/blacklisted_accounts.rs +++ b/magicblock-chainlink/src/chainlink/blacklisted_accounts.rs @@ -6,9 +6,8 @@ use solana_sdk_ids::{ address_lookup_table, bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, compute_budget, config, ed25519_program, incinerator, loader_v4, native_loader, secp256k1_program, stake, - system_program, vote, zk_elgamal_proof_program, + system_program, sysvar, vote, zk_elgamal_proof_program, }; -use solana_sysvar; pub fn blacklisted_accounts( validator_id: &Pubkey, @@ -38,19 +37,19 @@ pub fn blacklisted_accounts( pub fn sysvar_accounts() -> HashSet { let mut blacklisted_sysvars = HashSet::new(); - blacklisted_sysvars.insert(solana_sdk_ids::sysvar::ID); - blacklisted_sysvars.insert(solana_sysvar::clock::ID); - blacklisted_sysvars.insert(solana_sysvar::epoch_rewards::ID); - blacklisted_sysvars.insert(solana_sysvar::epoch_schedule::ID); - blacklisted_sysvars.insert(solana_sysvar::fees::ID); - blacklisted_sysvars.insert(solana_sdk_ids::sysvar::instructions::ID); - blacklisted_sysvars.insert(solana_sysvar::last_restart_slot::ID); - blacklisted_sysvars.insert(solana_sysvar::recent_blockhashes::ID); - blacklisted_sysvars.insert(solana_sysvar::rent::ID); - blacklisted_sysvars.insert(solana_sysvar::rewards::ID); - blacklisted_sysvars.insert(solana_sysvar::slot_hashes::ID); - blacklisted_sysvars.insert(solana_sysvar::slot_history::ID); - blacklisted_sysvars.insert(solana_sysvar::stake_history::ID); + blacklisted_sysvars.insert(sysvar::ID); + blacklisted_sysvars.insert(sysvar::clock::ID); + blacklisted_sysvars.insert(sysvar::epoch_rewards::ID); + blacklisted_sysvars.insert(sysvar::epoch_schedule::ID); + blacklisted_sysvars.insert(sysvar::instructions::ID); + blacklisted_sysvars.insert(sysvar::fees::ID); + blacklisted_sysvars.insert(sysvar::last_restart_slot::ID); + blacklisted_sysvars.insert(sysvar::recent_blockhashes::ID); + blacklisted_sysvars.insert(sysvar::rent::ID); + blacklisted_sysvars.insert(sysvar::rewards::ID); + blacklisted_sysvars.insert(sysvar::slot_hashes::ID); + blacklisted_sysvars.insert(sysvar::slot_history::ID); + blacklisted_sysvars.insert(sysvar::stake_history::ID); blacklisted_sysvars } diff --git a/magicblock-chainlink/src/chainlink/mod.rs b/magicblock-chainlink/src/chainlink/mod.rs index a65dbe7da..2fe098d41 100644 --- a/magicblock-chainlink/src/chainlink/mod.rs +++ b/magicblock-chainlink/src/chainlink/mod.rs @@ -63,9 +63,6 @@ pub struct Chainlink< validator_id: Pubkey, faucet_id: Pubkey, - /// If > 0, automatically airdrop this many lamports to feepayers when they are new/empty - auto_airdrop_lamports: u64, - /// If true, remove confined accounts during bank reset remove_confined_accounts: bool, } @@ -98,7 +95,6 @@ impl removed_accounts_sub, validator_id: validator_pubkey, faucet_id: faucet_pubkey, - auto_airdrop_lamports: config.auto_airdrop_lamports, remove_confined_accounts: config.remove_confined_accounts, }) } @@ -356,33 +352,6 @@ impl ) .await?; - // Best-effort auto airdrop for fee payer if configured - if self.auto_airdrop_lamports > 0 { - if let Some(fetch_cloner) = self.fetch_cloner() { - let lamports = self - .accounts_bank - .get_account(feepayer) - .map(|a| a.lamports()) - .unwrap_or(0); - - if lamports == 0 { - if let Err(err) = fetch_cloner - .airdrop_account_if_empty( - *feepayer, - self.auto_airdrop_lamports, - ) - .await - { - warn!( - feepayer = %feepayer, - error = %err, - "Auto airdrop for feepayer failed" - ); - } - } - } - } - Ok(res) } diff --git a/magicblock-chainlink/src/lib.rs b/magicblock-chainlink/src/lib.rs index 1be32d4f9..f01c669c2 100644 --- a/magicblock-chainlink/src/lib.rs +++ b/magicblock-chainlink/src/lib.rs @@ -1,3 +1,4 @@ +#![allow(deprecated)] #![allow(clippy::result_large_err)] pub mod accounts_bank; pub mod chainlink; diff --git a/magicblock-chainlink/src/remote_account_provider/chain_pubsub_actor.rs b/magicblock-chainlink/src/remote_account_provider/chain_pubsub_actor.rs index f42c4eedd..e807bae87 100644 --- a/magicblock-chainlink/src/remote_account_provider/chain_pubsub_actor.rs +++ b/magicblock-chainlink/src/remote_account_provider/chain_pubsub_actor.rs @@ -21,7 +21,7 @@ use solana_rpc_client_api::{ config::{RpcAccountInfoConfig, RpcProgramAccountsConfig}, response::Response as RpcResponse, }; -use solana_sysvar::clock; +use solana_sdk_ids::sysvar::clock; use tokio::{ sync::{mpsc, oneshot}, time::Duration, diff --git a/magicblock-chainlink/src/remote_account_provider/mod.rs b/magicblock-chainlink/src/remote_account_provider/mod.rs index 449547361..a6ec4d314 100644 --- a/magicblock-chainlink/src/remote_account_provider/mod.rs +++ b/magicblock-chainlink/src/remote_account_provider/mod.rs @@ -31,7 +31,7 @@ use solana_rpc_client_api::{ custom_error::JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED, request::RpcError, }; -use solana_sysvar::clock; +use solana_sdk_ids::sysvar::clock; use tokio::{ sync::{mpsc, oneshot}, task, time, @@ -1166,7 +1166,7 @@ impl RemoteAccountProvider { break (slot, value); } } - Ok(Err(err)) => match err.kind { + Ok(Err(err)) => match *err.kind { ErrorKind::RpcError(rpc_err) => { match rpc_err { RpcError::ForUser(ref rpc_user_err) => { diff --git a/magicblock-chainlink/src/remote_account_provider/program_account.rs b/magicblock-chainlink/src/remote_account_provider/program_account.rs index 6b998cdb7..761b6e017 100644 --- a/magicblock-chainlink/src/remote_account_provider/program_account.rs +++ b/magicblock-chainlink/src/remote_account_provider/program_account.rs @@ -1,5 +1,4 @@ -#![allow(unused)] -use std::{fmt, sync::Arc}; +use std::fmt; use solana_account::{AccountSharedData, ReadableAccount}; use solana_instruction::{AccountMeta, Instruction}; @@ -12,14 +11,12 @@ use solana_loader_v4_interface::{ state::{LoaderV4State, LoaderV4Status}, }; use solana_pubkey::{pubkey, Pubkey}; -use solana_system_interface::instruction as system_instruction; -use solana_sysvar::rent::Rent; +use solana_rent::Rent; use tracing::*; use crate::{ cloner::errors::ClonerResult, remote_account_provider::{ - ChainPubsubClient, ChainRpcClient, RemoteAccountProvider, RemoteAccountProviderError, RemoteAccountProviderResult, }, }; @@ -147,7 +144,6 @@ impl LoadedProgram { program_id, authority, program_data, - loader, .. } = self; let five_slots_ago = ephem_slot.saturating_sub(5).max(1); @@ -166,7 +162,6 @@ impl LoadedProgram { let post_deploy_state_data = state_data_v4(&post_deploy_loader_state, &program_data)?; - let size = pre_deploy_state_data.len(); let deploy_instruction = { let loader_instruction = LoaderInstructionV4::Deploy; diff --git a/magicblock-chainlink/src/testing/eatas.rs b/magicblock-chainlink/src/testing/eatas.rs index ebf9e22b2..ac3f64e93 100644 --- a/magicblock-chainlink/src/testing/eatas.rs +++ b/magicblock-chainlink/src/testing/eatas.rs @@ -4,7 +4,7 @@ pub use magicblock_core::token_programs::{ use solana_account::Account; use solana_program::{program_option::COption, program_pack::Pack}; use solana_pubkey::Pubkey; -use solana_sysvar::rent::Rent; +use solana_rent::Rent; use spl_token::state::{Account as SplAccount, AccountState}; /// Creates a test ATA (Associated Token Account) with initialized state and zero balance. diff --git a/magicblock-chainlink/src/testing/rpc_client_mock.rs b/magicblock-chainlink/src/testing/rpc_client_mock.rs index 64439e610..405daee08 100644 --- a/magicblock-chainlink/src/testing/rpc_client_mock.rs +++ b/magicblock-chainlink/src/testing/rpc_client_mock.rs @@ -11,6 +11,7 @@ use std::{ use async_trait::async_trait; #[cfg(any(test, feature = "dev-context"))] use solana_account::Account; +use solana_clock::Clock; #[cfg(any(test, feature = "dev-context"))] use solana_commitment_config::CommitmentConfig; #[cfg(any(test, feature = "dev-context"))] @@ -22,7 +23,6 @@ use solana_rpc_client_api::{ config::RpcAccountInfoConfig, response::{Response, RpcResponseContext, RpcResult}, }; -use solana_sysvar::clock; #[cfg(any(test, feature = "dev-context"))] use tracing::*; @@ -34,7 +34,7 @@ pub struct ChainRpcClientMockBuilder { commitment: CommitmentConfig, accounts: HashMap, current_slot: u64, - clock_sysvar: Option, + clock_sysvar: Option, } #[cfg(any(test, feature = "dev-context"))] @@ -74,7 +74,7 @@ impl ChainRpcClientMockBuilder { } pub fn clock_sysvar_for_slot(mut self, slot: u64) -> Self { - self.clock_sysvar.replace(clock::Clock { + self.clock_sysvar.replace(Clock { slot, ..Default::default() }); @@ -174,17 +174,19 @@ impl ChainRpcClientMock { self.set_clock_sysvar_with(slot, 0, 0); } - pub fn set_clock_sysvar(&self, clock: clock::Clock) { + pub fn set_clock_sysvar(&self, clock: Clock) { + use solana_program::sysvar::SysvarId; + trace!(clock = ?clock, "Setting clock sysvar"); let clock_data = bincode::serialize(&clock).unwrap(); let account = Account { lamports: 1_000_000_000, data: clock_data, - owner: clock::id(), + owner: Clock::id(), ..Default::default() }; - self.add_account(clock::id(), account); - self.account_override_slot(&clock::id(), clock.slot); + self.add_account(Clock::id(), account); + self.account_override_slot(&Clock::id(), clock.slot); } pub fn set_clock_sysvar_with( @@ -199,7 +201,7 @@ impl ChainRpcClientMock { leader_schedule_epoch = leader_schedule_epoch, "Adding clock sysvar" ); - let clock = clock::Clock { + let clock = Clock { slot, epoch, leader_schedule_epoch, diff --git a/magicblock-committor-program/Cargo.toml b/magicblock-committor-program/Cargo.toml index fc15d118f..b02727ba6 100644 --- a/magicblock-committor-program/Cargo.toml +++ b/magicblock-committor-program/Cargo.toml @@ -11,8 +11,11 @@ edition.workspace = true borsh = { workspace = true } paste = { workspace = true } solana-account = { workspace = true } +solana-account-info = { workspace = true } solana-program = { workspace = true } solana-pubkey = { workspace = true } +solana-sdk-ids = { workspace = true } +solana-system-interface = { workspace = true, features = ["bincode"] } thiserror = { workspace = true } [dev-dependencies] diff --git a/magicblock-committor-program/src/instruction_builder/init_buffer.rs b/magicblock-committor-program/src/instruction_builder/init_buffer.rs index 04c5a1c08..2d1d612f6 100644 --- a/magicblock-committor-program/src/instruction_builder/init_buffer.rs +++ b/magicblock-committor-program/src/instruction_builder/init_buffer.rs @@ -1,8 +1,6 @@ -use solana_program::{ - instruction::{AccountMeta, Instruction}, - system_program, -}; +use solana_program::instruction::{AccountMeta, Instruction}; use solana_pubkey::Pubkey; +use solana_sdk_ids::system_program; use crate::{instruction::CommittorInstruction, pdas}; diff --git a/magicblock-committor-program/src/processor.rs b/magicblock-committor-program/src/processor.rs index bc3e6637b..1b279d853 100644 --- a/magicblock-committor-program/src/processor.rs +++ b/magicblock-committor-program/src/processor.rs @@ -1,10 +1,11 @@ use borsh::{to_vec, BorshDeserialize}; +use solana_account_info::AccountInfo; use solana_program::{ - account_info::AccountInfo, entrypoint::ProgramResult, log::sol_log_64, msg, - program::invoke_signed, program_error::ProgramError, system_instruction, - sysvar::Sysvar, + entrypoint::ProgramResult, log::sol_log_64, msg, program::invoke_signed, + program_error::ProgramError, sysvar::Sysvar, }; use solana_pubkey::Pubkey; +use solana_system_interface::instruction as system_instruction; use crate::{ consts, @@ -257,7 +258,7 @@ fn process_realloc_buffer( // Doing this as needed increases the cost for each realloc to 4,959 CUs. // Reallocing without any rent check/increase uses only 4,025 CUs // and does not require the system program to be provided. - buffer_account_info.realloc(next_alloc_size as usize, true)?; + buffer_account_info.resize(next_alloc_size as usize)?; Ok(()) } diff --git a/magicblock-committor-program/src/utils/account.rs b/magicblock-committor-program/src/utils/account.rs index cdae0e96f..698b3d014 100644 --- a/magicblock-committor-program/src/utils/account.rs +++ b/magicblock-committor-program/src/utils/account.rs @@ -1,6 +1,6 @@ +use solana_account_info::AccountInfo; use solana_program::{ - account_info::AccountInfo, entrypoint::ProgramResult, msg, - program_error::ProgramError, + entrypoint::ProgramResult, msg, program_error::ProgramError, }; pub fn close_and_refund_authority( @@ -11,7 +11,7 @@ pub fn close_and_refund_authority( // the account around in an instruction that is appended as part of this // transaction // https://www.helius.dev/blog/a-hitchhikers-guide-to-solana-program-security - account.realloc(0, false)?; + account.resize(0)?; // Transfer all lamports to authority **authority.lamports.borrow_mut() = authority diff --git a/magicblock-committor-service/Cargo.toml b/magicblock-committor-service/Cargo.toml index 60a68d2a1..11eec877e 100644 --- a/magicblock-committor-service/Cargo.toml +++ b/magicblock-committor-service/Cargo.toml @@ -15,7 +15,6 @@ async-trait = { workspace = true } base64 = { workspace = true } bincode = { workspace = true } borsh = { workspace = true } -dyn-clone = { workspace = true } futures-util = { workspace = true } tracing = { workspace = true } lru = { workspace = true } diff --git a/magicblock-committor-service/src/intent_executor/error.rs b/magicblock-committor-service/src/intent_executor/error.rs index 8b774a168..b0229ed95 100644 --- a/magicblock-committor-service/src/intent_executor/error.rs +++ b/magicblock-committor-service/src/intent_executor/error.rs @@ -136,20 +136,20 @@ impl metrics::LabelValue for IntentExecutorError { /// Those are the errors that may occur during Commit/Finalize stages on Base layer #[derive(thiserror::Error, Debug)] pub enum TransactionStrategyExecutionError { - #[error("User supplied actions are ill-formed: {0}. {:?}", .1)] + #[error("User supplied actions are ill-formed: {0}. {1:?}")] ActionsError(#[source] TransactionError, Option), - #[error("Invalid undelegation: {0}. {:?}", .1)] + #[error("Invalid undelegation: {0}. {1:?}")] UndelegationError(#[source] TransactionError, Option), - #[error("Accounts committed with an invalid Commit id: {0}. {:?}", .1)] + #[error("Accounts committed with an invalid Commit id: {0}. {1:?}")] CommitIDError(#[source] TransactionError, Option), - #[error("Max instruction trace length exceeded: {0}. {:?}", .1)] + #[error("Max instruction trace length exceeded: {0}. {1:?}")] CpiLimitError(#[source] TransactionError, Option), - #[error("Loaded accounts data size exceeded: {0}. {:?}", .1)] + #[error("Loaded accounts data size exceeded: {0}. {1:?}")] LoadedAccountsDataSizeExceeded( #[source] TransactionError, Option, ), - #[error("Unfinalized account error: {0}, {:?}", .1)] + #[error("Unfinalized account error: {0}, {1:?}")] UnfinalizedAccountError(#[source] TransactionError, Option), #[error("InternalError: {0}")] InternalError(#[from] InternalError), diff --git a/magicblock-committor-service/src/intent_executor/task_info_fetcher.rs b/magicblock-committor-service/src/intent_executor/task_info_fetcher.rs index 0e4607c02..25c93d79f 100644 --- a/magicblock-committor-service/src/intent_executor/task_info_fetcher.rs +++ b/magicblock-committor-service/src/intent_executor/task_info_fetcher.rs @@ -669,7 +669,7 @@ impl TaskInfoFetcherError { return Self::MagicBlockRpcClientError(Box::new(orig)); }; - match &err.kind { + match &*err.kind { ErrorKind::RpcError(rpc_err) => match rpc_err { RpcError::ForUser(msg) if msg.contains(MIN_CONTEXT_SLOT_MSG1) => { diff --git a/magicblock-committor-service/src/tasks/task_strategist.rs b/magicblock-committor-service/src/tasks/task_strategist.rs index 5dae9ec6e..eeba22ac5 100644 --- a/magicblock-committor-service/src/tasks/task_strategist.rs +++ b/magicblock-committor-service/src/tasks/task_strategist.rs @@ -464,6 +464,7 @@ pub enum TaskStrategistError { pub type TaskStrategistResult = Result; #[cfg(test)] +#[allow(deprecated)] mod tests { use std::{collections::HashMap, sync::Arc}; @@ -472,9 +473,7 @@ mod tests { BaseAction, ProgramArgs, }; use solana_account::Account; - use solana_program::system_program; use solana_pubkey::Pubkey; - use solana_system_program::id as system_program_id; use super::*; use crate::{ @@ -542,9 +541,7 @@ mod tests { account: Account { lamports: 1000, data: vec![1; data_size], - owner: system_program::id(), - executable: false, - rent_epoch: 0, + ..Default::default() }, remote_slot: Default::default(), }; @@ -604,7 +601,7 @@ mod tests { fn create_test_undelegate_task() -> UndelegateTask { UndelegateTask { delegated_account: Pubkey::new_unique(), - owner_program: system_program_id(), + owner_program: Pubkey::default(), rent_reimbursement: Pubkey::new_unique(), } } diff --git a/magicblock-committor-service/src/transaction_preparator/delivery_preparator.rs b/magicblock-committor-service/src/transaction_preparator/delivery_preparator.rs index 6add62858..484c3bd92 100644 --- a/magicblock-committor-service/src/transaction_preparator/delivery_preparator.rs +++ b/magicblock-committor-service/src/transaction_preparator/delivery_preparator.rs @@ -43,6 +43,8 @@ pub struct DeliveryPreparator { compute_budget_config: ComputeBudgetConfig, } +const MAX_PARALLEL_BUFFER_SENDS: usize = 8; + impl DeliveryPreparator { pub fn new( rpc_client: MagicblockRpcClient, @@ -240,11 +242,14 @@ impl DeliveryPreparator { .await?; // Reallocs can be performed in parallel - let preparation_futs = - preparation_instructions.iter().skip(1).map(|instructions| { + for batch in + preparation_instructions[1..].chunks(MAX_PARALLEL_BUFFER_SENDS) + { + let preparation_futs = batch.iter().map(|instructions| { self.send_ixs_with_retry(instructions, authority, 5) }); - try_join_all(preparation_futs).await?; + try_join_all(preparation_futs).await?; + } Ok(()) } @@ -288,10 +293,13 @@ impl DeliveryPreparator { }) .collect::>(); - let fut_iter = chunks_write_instructions.iter().map(|instructions| { - self.send_ixs_with_retry(instructions.as_slice(), authority, 5) - }); - try_join_all(fut_iter).await?; + for batch in chunks_write_instructions.chunks(MAX_PARALLEL_BUFFER_SENDS) + { + let fut_iter = batch.iter().map(|instructions| { + self.send_ixs_with_retry(instructions.as_slice(), authority, 5) + }); + try_join_all(fut_iter).await?; + } Ok(()) } diff --git a/magicblock-config/src/config/chain.rs b/magicblock-config/src/config/chain.rs index 8c0bb08bd..f9096ef21 100644 --- a/magicblock-config/src/config/chain.rs +++ b/magicblock-config/src/config/chain.rs @@ -52,9 +52,6 @@ pub struct ChainLinkConfig { /// If true, initializes address lookup tables for oracle accounts. pub prepare_lookup_tables: bool, - /// Amount of lamports to automatically airdrop to feepayer accounts on clone. - pub auto_airdrop_lamports: u64, - /// The maximum number of non-delegated accounts to track simultaneously for /// updates. pub max_monitored_accounts: usize, @@ -77,7 +74,6 @@ impl Default for ChainLinkConfig { fn default() -> Self { Self { prepare_lookup_tables: false, - auto_airdrop_lamports: 0, max_monitored_accounts: consts::DEFAULT_MAX_MONITORED_ACCOUNTS, remove_confined_accounts: false, allowed_programs: None, diff --git a/magicblock-config/src/tests.rs b/magicblock-config/src/tests.rs index 12266ce9c..067c786b7 100644 --- a/magicblock-config/src/tests.rs +++ b/magicblock-config/src/tests.rs @@ -433,8 +433,7 @@ fn test_example_config_full_coverage() { // 9. Chainlink (Cloning) // ======================================================================== assert!(!config.chainlink.prepare_lookup_tables); - assert_eq!(config.chainlink.auto_airdrop_lamports, 0); - assert_eq!(config.chainlink.max_monitored_accounts, 1000); + assert_eq!(config.chainlink.max_monitored_accounts, 5000); // ======================================================================== // 10. Aperture @@ -515,7 +514,6 @@ fn test_env_vars_full_coverage() { EnvVarGuard::new("MBV_LEDGER__RESET", "true"), // --- Chainlink --- EnvVarGuard::new("MBV_CHAINLINK__PREPARE_LOOKUP_TABLES", "true"), - EnvVarGuard::new("MBV_CHAINLINK__AUTO_AIRDROP_LAMPORTS", "555"), EnvVarGuard::new("MBV_CHAINLINK__MAX_MONITORED_ACCOUNTS", "123"), EnvVarGuard::new("MBV_CHAINLINK__RESUBSCRIPTION_DELAY", "150ms"), // --- Task Scheduler --- @@ -579,7 +577,6 @@ fn test_env_vars_full_coverage() { // Chainlink assert!(config.chainlink.prepare_lookup_tables); - assert_eq!(config.chainlink.auto_airdrop_lamports, 555); assert_eq!(config.chainlink.max_monitored_accounts, 123); assert_eq!( config.chainlink.resubscription_delay, diff --git a/magicblock-core/Cargo.toml b/magicblock-core/Cargo.toml index a4bc901dc..eda52b85a 100644 --- a/magicblock-core/Cargo.toml +++ b/magicblock-core/Cargo.toml @@ -19,6 +19,7 @@ solana-account = { workspace = true } solana-account-decoder = { workspace = true } solana-clock = { workspace = true } solana-hash = { workspace = true } +solana-message = { workspace = true } solana-program = { workspace = true } solana-pubkey = { workspace = true } solana-signature = { workspace = true } @@ -35,4 +36,4 @@ tracing-subscriber = { workspace = true, features = ["time"] } tracing-log = { workspace = true } [features] -tokio-console = ["console-subscriber", "tokio/tracing"] \ No newline at end of file +tokio-console = ["console-subscriber", "tokio/tracing"] diff --git a/magicblock-core/src/intent.rs b/magicblock-core/src/intent.rs index 40c4ed2e4..d66b0b1fd 100644 --- a/magicblock-core/src/intent.rs +++ b/magicblock-core/src/intent.rs @@ -1,5 +1,3 @@ -use std::cell::RefCell; - use magicblock_magic_program_api::args::ShortAccountMeta; use serde::{Deserialize, Serialize}; use solana_account::{Account, AccountSharedData}; @@ -7,7 +5,7 @@ use solana_pubkey::Pubkey; use crate::token_programs::try_remap_ata_to_eata; -pub type CommittedAccountRef<'a> = (Pubkey, &'a RefCell); +pub type CommittedAccountRef = (Pubkey, AccountSharedData); #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct CommittedAccount { @@ -16,13 +14,12 @@ pub struct CommittedAccount { pub remote_slot: u64, } -impl<'a> From> for CommittedAccount { - fn from(value: CommittedAccountRef<'a>) -> Self { - let account = value.1.borrow(); - let remote_slot = account.remote_slot(); +impl From for CommittedAccount { + fn from(value: CommittedAccountRef) -> Self { + let remote_slot = value.1.remote_slot(); Self { pubkey: value.0, - account: account.to_owned().into(), + account: value.1.into(), remote_slot, } } diff --git a/magicblock-core/src/link/transactions.rs b/magicblock-core/src/link/transactions.rs index 5a06e0752..21d3f943f 100644 --- a/magicblock-core/src/link/transactions.rs +++ b/magicblock-core/src/link/transactions.rs @@ -2,7 +2,7 @@ use flume::{Receiver as MpmcReceiver, Sender as MpmcSender}; use magicblock_magic_program_api::args::TaskRequest; use serde::Serialize; use solana_account::AccountSharedData; -use solana_program::message::{ +use solana_message::{ inner_instruction::InnerInstructionsList, SimpleAddressLoader, }; use solana_pubkey::Pubkey; diff --git a/magicblock-ledger/Cargo.toml b/magicblock-ledger/Cargo.toml index 7f776df88..8922d7514 100644 --- a/magicblock-ledger/Cargo.toml +++ b/magicblock-ledger/Cargo.toml @@ -21,18 +21,16 @@ prost = { workspace = true } serde = { workspace = true } magicblock-core = { workspace = true } magicblock-metrics = { workspace = true } -scc = { workspace = true } solana-account-decoder = { workspace = true } -solana-measure = { workspace = true } +solana-measure = { workspace = true, features = ["agave-unstable-api"] } solana-metrics = { workspace = true } solana-storage-proto = { workspace = true } -solana-transaction-status = { workspace = true } +solana-transaction-status = { workspace = true, features = ["agave-unstable-api"] } solana-clock = { workspace = true } solana-hash = { workspace = true } solana-pubkey = { workspace = true } solana-signature = { workspace = true, features = ["rand"] } solana-signer = { workspace = true } -solana-keypair = { workspace = true } solana-instruction = { workspace = true } solana-transaction = { workspace = true, features = ["blake3", "verify"] } solana-transaction-error = { workspace = true } @@ -45,6 +43,7 @@ rocksdb = { workspace = true } [dev-dependencies] tempfile = { workspace = true } +solana-keypair = { workspace = true } solana-system-transaction = { workspace = true } test-kit = { workspace = true } diff --git a/magicblock-ledger/src/store/api.rs b/magicblock-ledger/src/store/api.rs index bb9573da3..56ababf4b 100644 --- a/magicblock-ledger/src/store/api.rs +++ b/magicblock-ledger/src/store/api.rs @@ -1543,6 +1543,7 @@ mod tests { loaded_addresses: Default::default(), return_data: Some(test_return_data.clone()), compute_units_consumed: compute_units_consumed_1, + cost_units: None, }, writable_keys, readonly_keys, diff --git a/magicblock-magic-program-api/Cargo.toml b/magicblock-magic-program-api/Cargo.toml index 8fc338050..9224218e5 100644 --- a/magicblock-magic-program-api/Cargo.toml +++ b/magicblock-magic-program-api/Cargo.toml @@ -9,10 +9,8 @@ homepage.workspace = true edition.workspace = true [dependencies] -solana-program = ">=1.16, <3.0.0" -solana-signature = { workspace = true, default-features = false, features = [ - "serde", -] } +solana-program = { workspace = true } +solana-signature = { workspace = true, features = ["serde"] } bincode = "^1.3.3" serde = { version = "^1.0.228", features = ["derive"] } const-crypto = "0.3.0" diff --git a/magicblock-processor/Cargo.toml b/magicblock-processor/Cargo.toml index 60c8a38c3..1e279082e 100644 --- a/magicblock-processor/Cargo.toml +++ b/magicblock-processor/Cargo.toml @@ -8,6 +8,8 @@ license.workspace = true edition.workspace = true [dependencies] +agave-precompiles = { workspace = true, features = ["agave-unstable-api"] } +agave-syscalls = { workspace = true } bincode = { workspace = true } tracing = { workspace = true } parking_lot = { workspace = true } @@ -24,19 +26,24 @@ magicblock-program = { workspace = true } solana-account = { workspace = true } solana-bpf-loader-program = { workspace = true } solana-compute-budget-program = { workspace = true } +solana-compute-budget = { workspace = true } +solana-feature-gate-interface = { workspace = true, features = ["bincode"] } solana-feature-set = { workspace = true } -solana-fee = { workspace = true } solana-fee-structure = { workspace = true } +solana-instruction = { workspace = true } +solana-loader-v3-interface = { workspace = true } solana-loader-v4-program = { workspace = true } solana-program = { workspace = true } solana-program-runtime = { workspace = true } +solana-precompile-error = { workspace = true } solana-pubkey = { workspace = true } -solana-rent-collector = { workspace = true } solana-sdk-ids = { workspace = true } solana-svm = { workspace = true } +solana-svm-callback = { workspace = true } solana-svm-transaction = { workspace = true } solana-system-program = { workspace = true } solana-transaction = { workspace = true } +solana-transaction-context = { workspace = true } solana-transaction-error = { workspace = true } solana-transaction-status = { workspace = true } solana-zk-elgamal-proof-program = { workspace = true } diff --git a/magicblock-processor/src/executor/callback.rs b/magicblock-processor/src/executor/callback.rs index 9db7b2c06..19cd95e76 100644 --- a/magicblock-processor/src/executor/callback.rs +++ b/magicblock-processor/src/executor/callback.rs @@ -1,59 +1,44 @@ use magicblock_accounts_db::traits::AccountsBank; -use solana_account::{AccountSharedData, WritableAccount}; -use solana_feature_set::FeatureSet; -use solana_fee::FeeFeatures; -use solana_fee_structure::FeeDetails; +use solana_account::AccountSharedData; +use solana_precompile_error::PrecompileError; use solana_pubkey::Pubkey; -use solana_sdk_ids::native_loader; use solana_svm::transaction_processing_callback::TransactionProcessingCallback; -use solana_svm_transaction::svm_message::SVMMessage; +use solana_svm_callback::InvokeContextCallback; use super::TransactionExecutor; -/// Required implementation to use the executor within the SVM. -impl TransactionProcessingCallback for TransactionExecutor { - fn account_matches_owners( - &self, - account: &Pubkey, - owners: &[Pubkey], - ) -> Option { - self.accountsdb.account_matches_owners(account, owners) +impl InvokeContextCallback for TransactionExecutor { + fn is_precompile(&self, program_id: &Pubkey) -> bool { + agave_precompiles::is_precompile(program_id, |feature_id| { + self.feature_set.is_active(feature_id) + }) } - fn get_account_shared_data( + fn process_precompile( &self, - pubkey: &Pubkey, - ) -> Option { - self.accountsdb.get_account(pubkey) - } - - fn add_builtin_account(&self, name: &str, program_id: &Pubkey) { - if self.accountsdb.contains_account(program_id) { - return; - } + program_id: &Pubkey, + data: &[u8], + instruction_datas: Vec<&[u8]>, + ) -> Result<(), PrecompileError> { + let Some(precompile) = + agave_precompiles::get_precompile(program_id, |feature_id| { + self.feature_set.is_active(feature_id) + }) + else { + return Err(PrecompileError::InvalidPublicKey); + }; - // Create a placeholder executable account for the builtin. - let mut account = - AccountSharedData::new(1, name.len(), &native_loader::ID); - account.set_data_from_slice(name.as_bytes()); - account.set_executable(true); - - let _ = self.accountsdb.insert_account(program_id, &account); + precompile.verify(data, &instruction_datas, &self.feature_set) } +} - fn calculate_fee( +impl TransactionProcessingCallback for TransactionExecutor { + fn get_account_shared_data( &self, - message: &impl SVMMessage, - lamports_per_signature: u64, - prioritization_fee: u64, - feature_set: &FeatureSet, - ) -> FeeDetails { - solana_fee::calculate_fee_details( - message, - lamports_per_signature == 0, // has_fee_waiver - lamports_per_signature, - prioritization_fee, - FeeFeatures::from(feature_set), - ) + pubkey: &Pubkey, + ) -> Option<(AccountSharedData, u64)> { + self.accountsdb + .get_account(pubkey) + .map(|account| (account, self.accountsdb.slot())) } } diff --git a/magicblock-processor/src/executor/mod.rs b/magicblock-processor/src/executor/mod.rs index e9eb98e6b..1024f9172 100644 --- a/magicblock-processor/src/executor/mod.rs +++ b/magicblock-processor/src/executor/mod.rs @@ -17,6 +17,7 @@ use magicblock_core::{ }; use magicblock_ledger::{LatestBlock, LatestBlockInner, Ledger}; use parking_lot::RwLockReadGuard; +use solana_feature_set::FeatureSet; use solana_program::slot_hashes::SlotHashes; use solana_program_runtime::loaded_programs::{ BlockRelation, ForkGraph, ProgramCache, ProgramCacheEntry, @@ -63,7 +64,8 @@ pub(super) struct TransactionExecutor { // SVM Components processor: TransactionBatchProcessor, config: Box>, - environment: TransactionProcessingEnvironment<'static>, + environment: TransactionProcessingEnvironment, + feature_set: FeatureSet, // Channels rx: Receiver, @@ -71,9 +73,6 @@ pub(super) struct TransactionExecutor { accounts_tx: AccountUpdateTx, tasks_tx: ScheduledTasksTx, ready_tx: Sender, - - // Config - is_auto_airdrop_lamports_enabled: bool, } impl TransactionExecutor { @@ -85,14 +84,15 @@ impl TransactionExecutor { programs_cache: Arc>>, ) -> Self { let slot = state.accountsdb.slot(); - let mut processor = TransactionBatchProcessor::new_uninitialized( - slot, - Default::default(), - true, - ); + let mut processor = + TransactionBatchProcessor::new_uninitialized(slot, 0); // Use global program cache to share compilation results across executors - processor.program_cache = programs_cache; + processor.global_program_cache = programs_cache; + processor.environments = state + .environment + .program_runtime_environments_for_execution + .clone(); // Enable recording for accurate fee/unit usage tracking let config = Box::new(TransactionProcessingConfig { @@ -111,14 +111,13 @@ impl TransactionExecutor { ledger: state.ledger.clone(), config, block: state.ledger.latest_block().clone(), - environment: state.environment.clone(), + environment: copy_env(&state.environment), + feature_set: state.feature_set.clone(), rx, ready_tx, accounts_tx: state.account_update_tx.clone(), transaction_tx: state.transaction_status_tx.clone(), tasks_tx: state.tasks_tx.clone(), - is_auto_airdrop_lamports_enabled: state - .is_auto_airdrop_lamports_enabled, }; this.processor.fill_missing_sysvar_cache_entries(&this); @@ -132,12 +131,7 @@ impl TransactionExecutor { builtin.name.len(), builtin.entrypoint, ); - self.processor.add_builtin( - self, - builtin.program_id, - builtin.name, - entry, - ); + self.processor.add_builtin(builtin.program_id, entry); } } @@ -226,5 +220,23 @@ impl ForkGraph for SimpleForkGraph { // Concrete types used here are Send. unsafe impl Send for TransactionExecutor {} +fn copy_env( + env: &TransactionProcessingEnvironment, +) -> TransactionProcessingEnvironment { + TransactionProcessingEnvironment { + blockhash: env.blockhash, + blockhash_lamports_per_signature: env.blockhash_lamports_per_signature, + epoch_total_stake: env.epoch_total_stake, + feature_set: env.feature_set, + program_runtime_environments_for_execution: env + .program_runtime_environments_for_execution + .clone(), + program_runtime_environments_for_deployment: env + .program_runtime_environments_for_deployment + .clone(), + rent: env.rent.clone(), + } +} + mod callback; mod processing; diff --git a/magicblock-processor/src/executor/processing.rs b/magicblock-processor/src/executor/processing.rs index 2e630d071..ffd3062d3 100644 --- a/magicblock-processor/src/executor/processing.rs +++ b/magicblock-processor/src/executor/processing.rs @@ -13,10 +13,15 @@ use magicblock_core::{ use magicblock_metrics::metrics::{ FAILED_TRANSACTIONS_COUNT, TRANSACTION_COUNT, }; +use solana_account::AccountSharedData; +use solana_compute_budget::compute_budget_limits::ComputeBudgetLimits; +use solana_fee_structure::FeeDetails; +use solana_program_runtime::execution_budget::SVMTransactionExecutionAndFeeBudgetLimits; use solana_pubkey::Pubkey; use solana_svm::{ - account_loader::{AccountsBalances, CheckedTransactionDetails}, + account_loader::CheckedTransactionDetails, rollback_accounts::RollbackAccounts, + transaction_balances::BalanceCollector, transaction_processing_result::{ ProcessedTransaction, TransactionProcessingResult, }, @@ -169,11 +174,9 @@ impl super::TransactionExecutor { fn process( &self, txn: &[SanitizedTransaction; 1], - ) -> (TransactionProcessingResult, AccountsBalances) { - let checked = CheckedTransactionDetails::new( - None, - self.environment.fee_lamports_per_signature, - ); + ) -> (TransactionProcessingResult, Option) { + let limits = self.compute_budget_limits(&txn[0]); + let checked = CheckedTransactionDetails::new(None, limits); let mut output = self.processor.load_and_execute_sanitized_transactions( self, @@ -192,7 +195,7 @@ impl super::TransactionExecutor { self.verify_account_states(processed); } - (result, output.balances) + (result, output.balance_collector) } /// Common handler for transaction failures (load error or commit error). @@ -228,8 +231,10 @@ impl super::TransactionExecutor { &self, txn: IndexedTransaction, result: ProcessedTransaction, - balances: AccountsBalances, + balances: Option, ) -> Result<(), Box> { + let (pre_balances, post_balances) = + transaction_balances(&txn, balances); let meta = match result { ProcessedTransaction::Executed(executed) => TransactionStatusMeta { fee: executed.loaded_transaction.fee_details.total_fee(), @@ -237,8 +242,8 @@ impl super::TransactionExecutor { executed.execution_details.executed_units, ), status: executed.execution_details.status, - pre_balances: balances.pre, - post_balances: balances.post, + pre_balances, + post_balances, log_messages: executed.execution_details.log_messages, loaded_addresses: txn.get_loaded_addresses(), return_data: executed.execution_details.return_data, @@ -252,8 +257,8 @@ impl super::TransactionExecutor { ProcessedTransaction::FeesOnly(fo) => TransactionStatusMeta { fee: fo.fee_details.total_fee(), status: Err(fo.load_error), - pre_balances: balances.pre, - post_balances: balances.post, + pre_balances, + post_balances, loaded_addresses: txn.get_loaded_addresses(), ..Default::default() }, @@ -346,27 +351,24 @@ impl super::TransactionExecutor { let accounts = match result { ProcessedTransaction::Executed(executed) => { if succeeded && !executed.programs_modified_by_tx.is_empty() { - self.processor - .program_cache - .write() - .unwrap() - .merge(&executed.programs_modified_by_tx); + self.processor.global_program_cache.write().unwrap().merge( + &self.processor.environments, + &executed.programs_modified_by_tx, + ); } if !succeeded { - // Only charge fee payer on failure &executed.loaded_transaction.accounts[..1] } else { &executed.loaded_transaction.accounts } } ProcessedTransaction::FeesOnly(fo) => { - if let RollbackAccounts::FeePayerOnly { fee_payer_account } = + if let RollbackAccounts::FeePayerOnly { fee_payer: account } = &fo.rollback_accounts { - // Temporary slice construction to match expected type return self.insert_and_notify( - &[(fee_payer, fee_payer_account.clone())], + &[(fee_payer, account.1.clone())], notify, false, ); @@ -385,14 +387,14 @@ impl super::TransactionExecutor { fn insert_and_notify( &self, - accounts: &[(Pubkey, solana_account::AccountSharedData)], + accounts: &[(Pubkey, AccountSharedData)], notify: bool, privileged: bool, ) -> AccountsDbResult<()> { // Filter: Persist only dirty or privileged accounts let to_commit = accounts .iter() - .filter(|(_, acc)| acc.is_dirty() || privileged); + .filter(|(_, acc)| privileged || acc.is_dirty()); self.accountsdb.insert_batch(to_commit)?; @@ -400,7 +402,6 @@ impl super::TransactionExecutor { return Ok(()); } - // Notify downstream for (pubkey, account) in accounts { let update = AccountWithSlot { slot: self.processor.slot, @@ -430,39 +431,13 @@ impl super::TransactionExecutor { .log_messages .get_or_insert_default(); - // 1. Gasless Mode Integrity Check - // In gasless mode, non-delegated fee payers must NOT be modified (drained). - if self.environment.fee_lamports_per_signature == 0 { - let lamports_changed = fee_payer_acc - .as_borrowed() - .map(|a| a.lamports_changed()) - .unwrap_or(true); // Owned/resized implies changed - - if !self.is_auto_airdrop_lamports_enabled - && lamports_changed - && !fee_payer_acc.delegated() - { - executed.execution_details.status = - Err(TransactionError::InvalidAccountForFee); - logs.push( - "Feepayer balance has been illegally modified".into(), - ); - return; - } - } - - // 2. Confined Account Integrity Check + // Confined Account Integrity Check // Confined accounts must not have their lamport balance changed. for (pubkey, acc) in &txn.accounts { if !acc.confined() { continue; } - let lamports_changed = acc - .as_borrowed() - .map(|a| a.lamports_changed()) - .unwrap_or(true); - - if lamports_changed { + if acc.lamports_changed() { executed.execution_details.status = Err(TransactionError::UnbalancedTransaction); logs.push(format!( @@ -472,4 +447,47 @@ impl super::TransactionExecutor { } } } + + fn compute_budget_limits( + &self, + txn: &SanitizedTransaction, + ) -> SVMTransactionExecutionAndFeeBudgetLimits { + let limits = ComputeBudgetLimits::default(); + let signature_fee = signature_fee( + txn, + self.environment.blockhash_lamports_per_signature, + ); + let fee_details = FeeDetails::new(signature_fee, 0); + + limits.get_compute_budget_and_limits( + limits.loaded_accounts_bytes, + fee_details, + false, + ) + } +} + +fn transaction_balances( + txn: &IndexedTransaction, + balances: Option, +) -> (Vec, Vec) { + let count = txn.message().account_keys().len(); + let Some(balances) = balances else { + return (vec![0; count], vec![0; count]); + }; + + let (mut pre, mut post, _, _) = balances.into_vecs(); + ( + pre.pop().unwrap_or_else(|| vec![0; count]), + post.pop().unwrap_or_else(|| vec![0; count]), + ) +} + +fn signature_fee( + txn: &SanitizedTransaction, + lamports_per_signature: u64, +) -> u64 { + txn.message() + .num_transaction_signatures() + .saturating_mul(lamports_per_signature) } diff --git a/magicblock-processor/src/lib.rs b/magicblock-processor/src/lib.rs index 69a64a108..a23051cc5 100644 --- a/magicblock-processor/src/lib.rs +++ b/magicblock-processor/src/lib.rs @@ -1,6 +1,15 @@ +#![allow(deprecated)] + +use std::sync::Arc; + +use agave_syscalls::{ + create_program_runtime_environment_v1, + create_program_runtime_environment_v2, +}; use magicblock_accounts_db::{traits::AccountsBank, AccountsDb}; use magicblock_core::link::blocks::BlockHash; use solana_account::{AccountSharedData, WritableAccount}; +use solana_feature_gate_interface::state::Feature; use solana_feature_set::{ curve25519_restrict_msm_length, curve25519_syscall_enabled, disable_rent_fees_collection, ed25519_program_enabled, @@ -8,21 +17,30 @@ use solana_feature_set::{ enable_transaction_loading_failure_fees, get_sysvar_syscall_enabled, secp256k1_program_enabled, FeatureSet, }; -use solana_program::{feature, pubkey::Pubkey}; -#[allow(deprecated)] -use solana_rent_collector::RentCollector; +use solana_program::{pubkey::Pubkey, rent::Rent}; +use solana_program_runtime::{ + execution_budget::SVMTransactionExecutionBudget, + loaded_programs::ProgramRuntimeEnvironments, + solana_sbpf::program::BuiltinProgram, +}; use solana_sdk_ids::{ ed25519_program, native_loader, secp256k1_program, secp256r1_program, }; use solana_svm::transaction_processor::TransactionProcessingEnvironment; use tracing::error; -/// Initialize an SVM environment for transaction processing. +/// Transaction processing environment plus the exact active Agave feature set. +pub struct SvmEnv { + pub environment: TransactionProcessingEnvironment, + pub feature_set: FeatureSet, +} + +/// Initialize an SVM environment for transaction processing and retain the active feature set. pub fn build_svm_env( accountsdb: &AccountsDb, blockhash: BlockHash, fee_per_signature: u64, -) -> TransactionProcessingEnvironment<'static> { +) -> SvmEnv { let mut feature_set = FeatureSet::default(); // Activate features relevant to ER operations: @@ -46,25 +64,48 @@ pub fn build_svm_env( // Persist active features to AccountsDb if they don't already exist. // This ensures programs checking for these features find them. - for (id, &slot) in &feature_set.active { + for (id, &slot) in feature_set.active() { ensure_feature_account(accountsdb, id, Some(slot)); } ensure_precompile_account(accountsdb, &ed25519_program::ID); ensure_precompile_account(accountsdb, &secp256k1_program::ID); ensure_precompile_account(accountsdb, &secp256r1_program::ID); + ensure_builtin_accounts(accountsdb); - // Initialize static RentCollector (leaked for 'static lifetime as it never changes). - #[allow(deprecated)] - let rent_collector = Box::leak(Box::new(RentCollector::default())); + let budget = SVMTransactionExecutionBudget::new_with_defaults(false); + let runtime_features = feature_set.runtime_features(); + let runtime_v1 = create_program_runtime_environment_v1( + &runtime_features, + &budget, + false, + false, + ) + .map(Into::into) + .unwrap_or_else(|_| { + Arc::new(BuiltinProgram::new_loader(Default::default())) + }); + let runtime_v2 = + create_program_runtime_environment_v2(&budget, false).into(); + let runtime_environments = ProgramRuntimeEnvironments { + program_runtime_v1: runtime_v1, + program_runtime_v2: runtime_v2, + }; - TransactionProcessingEnvironment { + let environment = TransactionProcessingEnvironment { blockhash, blockhash_lamports_per_signature: fee_per_signature, - feature_set: feature_set.into(), - fee_lamports_per_signature: fee_per_signature, - rent_collector: Some(rent_collector), + feature_set: runtime_features, epoch_total_stake: 0, + program_runtime_environments_for_execution: runtime_environments + .clone(), + program_runtime_environments_for_deployment: runtime_environments, + rent: Rent::default(), + }; + + SvmEnv { + environment, + feature_set, } } @@ -78,11 +119,8 @@ fn ensure_feature_account( return; } - let feature = feature::Feature { activated_at }; - let Ok(account) = AccountSharedData::new_data(1, &feature, &feature::id()) - else { - return; - }; + let feature = Feature { activated_at }; + let account = solana_feature_gate_interface::create_account(&feature, 1); let _ = accountsdb.insert_account(id, &account); } @@ -98,6 +136,25 @@ fn ensure_precompile_account(accountsdb: &AccountsDb, id: &Pubkey) { } } +fn ensure_builtin_accounts(accountsdb: &AccountsDb) { + for builtin in builtins::BUILTINS { + if accountsdb.get_account(&builtin.program_id).is_some() { + continue; + } + + let mut account = AccountSharedData::new(1, 0, &native_loader::ID); + account.set_executable(true); + if let Err(err) = + accountsdb.insert_account(&builtin.program_id, &account) + { + error!( + "Failed to insert builtin account {}: {:?}", + builtin.program_id, err + ); + } + } +} + mod builtins; mod executor; pub mod loader; diff --git a/magicblock-processor/src/loader.rs b/magicblock-processor/src/loader.rs index b7e6096b4..3a096cf2e 100644 --- a/magicblock-processor/src/loader.rs +++ b/magicblock-processor/src/loader.rs @@ -2,11 +2,10 @@ use std::{error::Error, path::PathBuf}; use magicblock_accounts_db::AccountsDb; use solana_account::{AccountSharedData, WritableAccount}; -use solana_program::{ - bpf_loader_upgradeable::{self, UpgradeableLoaderState}, - rent::Rent, -}; +use solana_loader_v3_interface::state::UpgradeableLoaderState; +use solana_program::rent::Rent; use solana_pubkey::Pubkey; +use solana_sdk_ids::bpf_loader_upgradeable; use tracing::debug; const UPGRADEABLE_LOADER_ID: Pubkey = bpf_loader_upgradeable::ID; @@ -43,6 +42,7 @@ fn add_program( slot: 0, upgrade_authority_address: Some(Pubkey::default()), })?; + data.resize(UpgradeableLoaderState::size_of_programdata_metadata(), 0); data.extend_from_slice(elf); let mut account = AccountSharedData::new( diff --git a/magicblock-processor/src/scheduler/mod.rs b/magicblock-processor/src/scheduler/mod.rs index d3c180f8d..389b626b7 100644 --- a/magicblock-processor/src/scheduler/mod.rs +++ b/magicblock-processor/src/scheduler/mod.rs @@ -237,7 +237,7 @@ impl TransactionScheduler { self.index = 0; // Prune stale programs and re-root to new slot - cache.prune(block.slot, 0); + cache.prune(block.slot, None); cache.latest_root_slot = block.slot; // Update Clock sysvar diff --git a/magicblock-processor/src/scheduler/state.rs b/magicblock-processor/src/scheduler/state.rs index 95d9618d5..f513c02a1 100644 --- a/magicblock-processor/src/scheduler/state.rs +++ b/magicblock-processor/src/scheduler/state.rs @@ -16,19 +16,14 @@ use magicblock_core::link::{ use magicblock_ledger::Ledger; use serde::Serialize; use solana_account::AccountSharedData; -use solana_bpf_loader_program::syscalls::{ - create_program_runtime_environment_v1, - create_program_runtime_environment_v2, -}; +use solana_feature_set::FeatureSet; use solana_program::{ clock::DEFAULT_SLOTS_PER_EPOCH, epoch_schedule::EpochSchedule, slot_hashes::{SlotHashes, MAX_ENTRIES}, sysvar, }; -use solana_program_runtime::{ - loaded_programs::ProgramCache, solana_sbpf::program::BuiltinProgram, -}; +use solana_program_runtime::loaded_programs::ProgramCache; use solana_pubkey::Pubkey; use solana_svm::transaction_processor::TransactionProcessingEnvironment; use tokio::sync::mpsc::Receiver; @@ -44,7 +39,8 @@ pub struct TransactionSchedulerState { // === Global State Handles === pub accountsdb: Arc, pub ledger: Arc, - pub environment: TransactionProcessingEnvironment<'static>, + pub environment: TransactionProcessingEnvironment, + pub feature_set: FeatureSet, // === Communication Channels === pub txn_to_process_rx: TransactionToProcessRx, @@ -52,8 +48,6 @@ pub struct TransactionSchedulerState { pub transaction_status_tx: TransactionStatusTx, pub tasks_tx: ScheduledTasksTx, - // === Configuration === - pub is_auto_airdrop_lamports_enabled: bool, pub shutdown: CancellationToken, /// Receives mode transition commands (Primary or Replica) at runtime. pub mode_rx: Receiver, @@ -72,24 +66,8 @@ impl TransactionSchedulerState { FORK_GRAPH.get_or_init(|| Arc::new(RwLock::new(SimpleForkGraph))), ); - let runtime_v1 = create_program_runtime_environment_v1( - &self.environment.feature_set, - &Default::default(), - false, - false, - ) - .map(Into::into) - .unwrap_or_else(|_| { - Arc::new(BuiltinProgram::new_loader(Default::default())) - }); - - let runtime_v2 = - create_program_runtime_environment_v2(&Default::default(), false); - - let mut cache = ProgramCache::new(self.accountsdb.slot(), 0); + let mut cache = ProgramCache::new(self.accountsdb.slot()); cache.set_fork_graph(forkgraph); - cache.environments.program_runtime_v1 = runtime_v1; - cache.environments.program_runtime_v2 = runtime_v2.into(); Arc::new(RwLock::new(cache)) } @@ -111,14 +89,7 @@ impl TransactionSchedulerState { let epoch_schedule = EpochSchedule::new(DEFAULT_SLOTS_PER_EPOCH); self.ensure_sysvar(&sysvar::epoch_schedule::ID, &epoch_schedule); - let rent = self - .environment - .rent_collector - .as_ref() - .map(|rc| rc.get_rent()); - if let Some(rent) = rent { - self.ensure_sysvar(&sysvar::rent::ID, rent); - } + self.ensure_sysvar(&sysvar::rent::ID, &self.environment.rent); } /// Helper to serialize and insert a sysvar if it doesn't exist. diff --git a/magicblock-processor/tests/fees.rs b/magicblock-processor/tests/fees.rs index a3c4e068a..3a149110f 100644 --- a/magicblock-processor/tests/fees.rs +++ b/magicblock-processor/tests/fees.rs @@ -1,4 +1,4 @@ -use std::{collections::HashSet, time::Duration}; +use std::time::Duration; use guinea::GuineaInstruction; use solana_account::{ReadableAccount, WritableAccount}; @@ -8,25 +8,12 @@ use solana_program::{ native_token::LAMPORTS_PER_SOL, rent::Rent, }; -use solana_pubkey::Pubkey; use solana_transaction_error::TransactionError; use test_kit::{ExecutionTestEnv, Signer}; -pub const DELEGATION_PROGRAM_ID: Pubkey = - Pubkey::from_str_const("DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh"); - const BASE_FEE: u64 = ExecutionTestEnv::BASE_FEE; const TIMEOUT: Duration = Duration::from_millis(100); -/// Derives the ephemeral balance PDA for a given payer. -fn derive_ephemeral_pda(payer: &Pubkey) -> Pubkey { - Pubkey::find_program_address( - &[b"balance", payer.as_ref(), &[0]], - &DELEGATION_PROGRAM_ID, - ) - .0 -} - /// Helper to setup a guinea instruction with a new account. fn setup_guinea_ix( env: &ExecutionTestEnv, @@ -116,44 +103,6 @@ async fn test_non_delegated_payer_rejection() { ); } -#[tokio::test] -async fn test_escrowed_payer_success() { - let env = ExecutionTestEnv::new(); - let mut payer = env.get_payer(); - // Ensure primary payer cannot pay standard fee to force escrow usage logic check - payer.set_lamports(BASE_FEE - 1); - payer.set_delegated(false); - let escrow = derive_ephemeral_pda(&payer.pubkey); - payer.commit(); - - env.fund_account(escrow, LAMPORTS_PER_SOL); - let initial_escrow_bal = env.get_account(escrow).lamports(); - - let ix = setup_guinea_ix(&env, GuineaInstruction::PrintSizes); - let txn = env.build_transaction(&[ix]); - - env.execute_transaction(txn) - .await - .expect("Escrow transaction failed"); - - assert_eq!( - env.get_account(escrow).lamports(), - initial_escrow_bal - BASE_FEE, - "Escrow should pay fee" - ); - - // Verify updates - let mut updates = HashSet::new(); - while let Ok(acc) = env.dispatch.account_update.try_recv() { - updates.insert(acc.account.pubkey); - } - assert!(updates.contains(&escrow), "Escrow update missing"); - assert!( - !updates.contains(&env.get_payer().pubkey), - "Primary payer update unexpected" - ); -} - #[tokio::test] async fn test_fee_charged_for_failed_transaction() { let env = ExecutionTestEnv::new(); @@ -184,42 +133,6 @@ async fn test_fee_charged_for_failed_transaction() { ); } -#[tokio::test] -async fn test_escrow_charged_for_failed_transaction() { - let env = ExecutionTestEnv::new(); - let mut payer = env.get_payer(); - payer.set_lamports(0); - payer.set_delegated(false); - let escrow = derive_ephemeral_pda(&payer.pubkey); - payer.commit(); - - env.fund_account(escrow, LAMPORTS_PER_SOL); - let initial_escrow_bal = env.get_account(escrow).lamports(); - - // Setup failing instruction (write to empty account) - let ix = setup_guinea_ix(&env, GuineaInstruction::WriteByteToData(42)); - let mut acc = env.get_account(ix.accounts[0].pubkey); - acc.set_data(vec![]); - env.accountsdb - .insert_account(&ix.accounts[0].pubkey, &acc) - .unwrap(); - - let txn = env.build_transaction(&[ix]); - env.transaction_scheduler.schedule(txn).await.unwrap(); - - let status = env - .dispatch - .transaction_status - .recv_timeout(TIMEOUT) - .unwrap(); - assert!(status.meta.status.is_err(), "Transaction should fail"); - assert_eq!( - env.get_account(escrow).lamports(), - initial_escrow_bal - BASE_FEE, - "Escrow should be charged on failure" - ); -} - #[tokio::test] async fn test_transaction_gasless_mode() { let env = ExecutionTestEnv::new_with_config(0, 1, false); diff --git a/magicblock-processor/tests/security.rs b/magicblock-processor/tests/security.rs index dcb043ff2..a3ce0a391 100644 --- a/magicblock-processor/tests/security.rs +++ b/magicblock-processor/tests/security.rs @@ -39,7 +39,7 @@ async fn test_gasless_undelegated_feepayer_modification_fails() { } // 2. Execute Transfer (Payer -> Recipient) - let recipient = env.create_account(100); + let recipient = env.create_account(LAMPORTS_PER_SOL); let ix = transfer_ix(env.get_payer().pubkey, recipient.pubkey(), 1000); let txn = env.build_transaction(&[ix]); diff --git a/magicblock-rpc-client/src/lib.rs b/magicblock-rpc-client/src/lib.rs index 573d94e10..4cd9b2dbb 100644 --- a/magicblock-rpc-client/src/lib.rs +++ b/magicblock-rpc-client/src/lib.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + pub mod utils; use std::{ diff --git a/magicblock-rpc-client/src/utils.rs b/magicblock-rpc-client/src/utils.rs index 9ee2279d4..93acbb6e8 100644 --- a/magicblock-rpc-client/src/utils.rs +++ b/magicblock-rpc-client/src/utils.rs @@ -147,14 +147,16 @@ pub fn try_map_client_error( where TxMap: TransactionErrorMapper, { - match err.kind { + match *err.kind { ErrorKind::TransactionError(transaction_err) => { transaction_error_mapper .try_map(transaction_err, None) .map_err(|transaction_err| { Box::new(solana_rpc_client_api::client_error::Error { request: err.request, - kind: ErrorKind::TransactionError(transaction_err), + kind: Box::new(ErrorKind::TransactionError( + transaction_err, + )), }) }) } @@ -167,7 +169,7 @@ where | ErrorKind::Io(_)) => { Err(Box::new(solana_rpc_client_api::client_error::Error { request: err.request, - kind: err_kind, + kind: Box::new(err_kind), })) } } @@ -206,7 +208,7 @@ pub fn decide_rpc_error_flow( pub fn decide_rpc_native_flow( err: &solana_rpc_client_api::client_error::Error, ) -> ControlFlow<(), Duration> { - match &err.kind { + match &*err.kind { // Retry IO errors ErrorKind::Io(_) => ControlFlow::Continue(Duration::from_millis(500)), // Retry 5xx server errors diff --git a/magicblock-table-mania/src/derive_keypair.rs b/magicblock-table-mania/src/derive_keypair.rs index f32d0289a..1b2ae83a1 100644 --- a/magicblock-table-mania/src/derive_keypair.rs +++ b/magicblock-table-mania/src/derive_keypair.rs @@ -1,4 +1,4 @@ -use ed25519_dalek::{PublicKey, SecretKey}; +use ed25519_dalek::SecretKey; use solana_clock::Slot; use solana_keypair::Keypair; use solana_signer::Signer; @@ -29,16 +29,10 @@ fn derive_insecure(message: &[u8]) -> Keypair { let hash = ::digest(message); let seed = &hash.as_slice()[0..32]; - // Create a keypair using the seed bytes let secret = SecretKey::from_bytes(seed).unwrap(); - let public = PublicKey::from(&secret); - - // Convert to Solana Keypair format - let mut keypair_bytes = [0u8; 64]; - keypair_bytes[0..32].copy_from_slice(secret.as_bytes()); - keypair_bytes[32..64].copy_from_slice(&public.to_bytes()); - - Keypair::from_bytes(&keypair_bytes).unwrap() + let mut secret_bytes = [0u8; Keypair::SECRET_KEY_LENGTH]; + secret_bytes.copy_from_slice(secret.as_bytes()); + Keypair::new_from_array(secret_bytes) } #[cfg(test)] diff --git a/programs/guinea/src/lib.rs b/programs/guinea/src/lib.rs index 91856f086..b62b2c853 100644 --- a/programs/guinea/src/lib.rs +++ b/programs/guinea/src/lib.rs @@ -88,7 +88,7 @@ fn resize_account( let feepayer_balance = feepayer.try_lamports()? as i64; **feepayer.try_borrow_mut_lamports()? = (feepayer_balance - delta) as u64; - account.realloc(size, false)?; + account.resize(size)?; Ok(()) } diff --git a/programs/magicblock/src/clone_account/common.rs b/programs/magicblock/src/clone_account/common.rs index ab87fb6c9..06a1c1ce5 100644 --- a/programs/magicblock/src/clone_account/common.rs +++ b/programs/magicblock/src/clone_account/common.rs @@ -1,15 +1,18 @@ //! Shared utilities for clone account and mutate account instruction processing. -use std::{cell::RefCell, collections::HashSet}; +use std::collections::HashSet; use magicblock_magic_program_api::instruction::AccountCloneFields; -use solana_account::{AccountSharedData, ReadableAccount, WritableAccount}; +use solana_account::{ReadableAccount, WritableAccount}; use solana_instruction::error::InstructionError; use solana_loader_v4_interface::state::LoaderV4State; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; use solana_pubkey::Pubkey; -use solana_transaction_context::TransactionContext; +use solana_transaction_context::{ + transaction_accounts::{AccountRefMut, TransactionAccountViewMut}, + TransactionContext, +}; use crate::{ errors::MagicBlockProgramError, validator::effective_validator_authority_id, @@ -75,21 +78,14 @@ pub fn validate_and_get_index( Err(InstructionError::InvalidArgument) } -/// Returns true if account is ephemeral (exists locally on ER only). -pub fn is_ephemeral(account: &RefCell) -> bool { - account.borrow().ephemeral() -} - /// Validates that a delegated account is undelegating (mutation allowed). pub fn validate_not_delegated( - account: &RefCell, + acc: &TransactionAccountViewMut<'_>, pubkey: &Pubkey, invoke_context: &InvokeContext, ) -> Result<(), InstructionError> { - let (is_delegated, is_undelegating) = { - let acc = account.borrow(); - (acc.delegated(), acc.undelegating()) - }; + let (is_delegated, is_undelegating) = + { (acc.delegated(), acc.undelegating()) }; if is_delegated && !is_undelegating { ic_msg!( invoke_context, @@ -103,11 +99,11 @@ pub fn validate_not_delegated( /// Validates that the account can be mutated (not ephemeral, not active delegated). pub fn validate_mutable( - account: &RefCell, + account: &TransactionAccountViewMut, pubkey: &Pubkey, invoke_context: &InvokeContext, ) -> Result<(), InstructionError> { - if is_ephemeral(account) { + if account.ephemeral() { ic_msg!( invoke_context, "Account {} is ephemeral and cannot be mutated", @@ -121,7 +117,7 @@ pub fn validate_mutable( /// Validates that incoming remote_slot is not older than current. /// Skips check if incoming_remote_slot is None. pub fn validate_remote_slot( - account: &RefCell, + account: &mut TransactionAccountViewMut<'_>, pubkey: &Pubkey, incoming_remote_slot: Option, invoke_context: &InvokeContext, @@ -129,7 +125,7 @@ pub fn validate_remote_slot( let Some(incoming) = incoming_remote_slot else { return Ok(()); }; - let current = account.borrow().remote_slot(); + let current = account.remote_slot(); if incoming < current { ic_msg!( @@ -153,13 +149,13 @@ pub fn validate_remote_slot( /// Adjusts validator authority lamports by delta. /// Positive delta = debit, negative delta = credit. pub fn adjust_authority_lamports( - auth_acc: &RefCell, + auth_acc: &mut TransactionAccountViewMut, delta: i64, ) -> Result<(), InstructionError> { if delta == 0 { return Ok(()); } - let auth_lamports = auth_acc.borrow().lamports(); + let auth_lamports = auth_acc.lamports(); let adjusted = if delta > 0 { auth_lamports .checked_sub(delta as u64) @@ -169,14 +165,13 @@ pub fn adjust_authority_lamports( .checked_add(delta.unsigned_abs()) .ok_or(InstructionError::ArithmeticOverflow)? }; - auth_acc.borrow_mut().set_lamports(adjusted); + auth_acc.set_lamports(adjusted); Ok(()) } /// Closes a buffer/temporary account by resetting it to default state. /// The account will be removed from accountsdb due to the ephemeral flag. -pub fn close_buffer_account(account: &RefCell) { - let mut acc = account.borrow_mut(); +pub fn close_buffer_account(mut acc: AccountRefMut<'_>) { acc.set_lamports(0); acc.resize(0, 0); // Setting ephemeral flag on empty account, forces @@ -210,7 +205,7 @@ pub fn minimum_balance( /// Sets account fields from AccountCloneFields and data. pub fn set_account_from_fields( invoke_context: &InvokeContext, - account: &RefCell, + mut acc: AccountRefMut<'_>, data: &[u8], fields: &AccountCloneFields, ) -> Result<(), InstructionError> { @@ -225,7 +220,6 @@ pub fn set_account_from_fields( fields.remote_slot, data.len() ); - let mut acc = account.borrow_mut(); ic_msg!( invoke_context, "dest account state: lamports={}, owner={}, executable={}, delegated={}, undelegating={} confined={}, remote_slot={}, data_len={}", diff --git a/programs/magicblock/src/clone_account/process_cleanup.rs b/programs/magicblock/src/clone_account/process_cleanup.rs index a2a3d94bc..45c235355 100644 --- a/programs/magicblock/src/clone_account/process_cleanup.rs +++ b/programs/magicblock/src/clone_account/process_cleanup.rs @@ -41,7 +41,7 @@ pub(crate) fn process_cleanup_partial_clone( } let ctx = transaction_context.get_current_instruction_context()?; - let auth_acc = transaction_context.get_account_at_index( + let mut auth_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(0)?, )?; @@ -52,7 +52,7 @@ pub(crate) fn process_cleanup_partial_clone( "CleanupPartialClone", invoke_context, )?; - let account = transaction_context.get_account_at_index(tx_idx)?; + let account = transaction_context.accounts().try_borrow_mut(tx_idx)?; ic_msg!( invoke_context, @@ -60,12 +60,12 @@ pub(crate) fn process_cleanup_partial_clone( pubkey ); - let current_lamports = account.borrow().lamports(); + let current_lamports = account.lamports(); let lamports_delta = -(current_lamports as i64); close_buffer_account(account); - adjust_authority_lamports(auth_acc, lamports_delta)?; + adjust_authority_lamports(&mut auth_acc, lamports_delta)?; remove_pending_clone(&pubkey); Ok(()) } diff --git a/programs/magicblock/src/clone_account/process_clone.rs b/programs/magicblock/src/clone_account/process_clone.rs index f1efb6166..578dbd490 100644 --- a/programs/magicblock/src/clone_account/process_clone.rs +++ b/programs/magicblock/src/clone_account/process_clone.rs @@ -31,7 +31,7 @@ pub(crate) fn process_clone_account( validate_authority(signers, invoke_context)?; let ctx = transaction_context.get_current_instruction_context()?; - let auth_acc = transaction_context.get_account_at_index( + let mut auth_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(0)?, )?; @@ -42,13 +42,13 @@ pub(crate) fn process_clone_account( "CloneAccount", invoke_context, )?; - let account = transaction_context.get_account_at_index(tx_idx)?; + let mut account = transaction_context.accounts().try_borrow_mut(tx_idx)?; // Prevent overwriting ephemeral or active delegated accounts - validate_mutable(account, &pubkey, invoke_context)?; + validate_mutable(&account, &pubkey, invoke_context)?; // Prevent stale updates from overwriting fresher data validate_remote_slot( - account, + &mut account, &pubkey, Some(fields.remote_slot), invoke_context, @@ -73,11 +73,11 @@ pub(crate) fn process_clone_account( ); } - let current_lamports = account.borrow().lamports(); + let current_lamports = account.lamports(); let lamports_delta = fields.lamports as i64 - current_lamports as i64; set_account_from_fields(invoke_context, account, &data, &fields)?; - adjust_authority_lamports(auth_acc, lamports_delta)?; + adjust_authority_lamports(&mut auth_acc, lamports_delta)?; Ok(()) } diff --git a/programs/magicblock/src/clone_account/process_clone_continue.rs b/programs/magicblock/src/clone_account/process_clone_continue.rs index de8b7cf12..7c8df9937 100644 --- a/programs/magicblock/src/clone_account/process_clone_continue.rs +++ b/programs/magicblock/src/clone_account/process_clone_continue.rs @@ -51,8 +51,6 @@ pub(crate) fn process_clone_account_continue( "CloneAccountContinue", invoke_context, )?; - let account = transaction_context.get_account_at_index(tx_idx)?; - ic_msg!( invoke_context, "CloneAccountContinue: '{}' offset={} len={} is_last={}", @@ -64,7 +62,7 @@ pub(crate) fn process_clone_account_continue( // Write data at offset { - let mut acc = account.borrow_mut(); + let mut acc = transaction_context.accounts().try_borrow_mut(tx_idx)?; let account_data = acc.data_as_mut_slice(); let start = offset as usize; let end = start + data.len(); diff --git a/programs/magicblock/src/clone_account/process_clone_init.rs b/programs/magicblock/src/clone_account/process_clone_init.rs index a6c90f007..0092a3747 100644 --- a/programs/magicblock/src/clone_account/process_clone_init.rs +++ b/programs/magicblock/src/clone_account/process_clone_init.rs @@ -60,7 +60,7 @@ pub(crate) fn process_clone_account_init( } let ctx = transaction_context.get_current_instruction_context()?; - let auth_acc = transaction_context.get_account_at_index( + let mut auth_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(0)?, )?; @@ -71,13 +71,13 @@ pub(crate) fn process_clone_account_init( "CloneAccountInit", invoke_context, )?; - let account = transaction_context.get_account_at_index(tx_idx)?; + let mut account = transaction_context.accounts().try_borrow_mut(tx_idx)?; // Prevent overwriting ephemeral or active delegated accounts - validate_mutable(account, &pubkey, invoke_context)?; + validate_mutable(&account, &pubkey, invoke_context)?; // Prevent stale updates from overwriting fresher data validate_remote_slot( - account, + &mut account, &pubkey, Some(fields.remote_slot), invoke_context, @@ -98,7 +98,7 @@ pub(crate) fn process_clone_account_init( ); } - let current_lamports = account.borrow().lamports(); + let current_lamports = account.lamports(); let lamports_delta = fields.lamports as i64 - current_lamports as i64; // Pre-allocate full buffer and copy initial chunk @@ -107,7 +107,7 @@ pub(crate) fn process_clone_account_init( set_account_from_fields(invoke_context, account, &data, &fields)?; - adjust_authority_lamports(auth_acc, lamports_delta)?; + adjust_authority_lamports(&mut auth_acc, lamports_delta)?; add_pending_clone(pubkey); Ok(()) } diff --git a/programs/magicblock/src/clone_account/process_evict.rs b/programs/magicblock/src/clone_account/process_evict.rs index c03a8499c..6e32dfffd 100644 --- a/programs/magicblock/src/clone_account/process_evict.rs +++ b/programs/magicblock/src/clone_account/process_evict.rs @@ -27,10 +27,9 @@ pub(crate) fn process_evict_account( "EvictAccount", invoke_context, )?; - let account = transaction_context.get_account_at_index(tx_idx)?; + let mut acc = transaction_context.accounts().try_borrow_mut(tx_idx)?; { - let acc = account.borrow(); if acc.delegated() || acc.undelegating() { ic_msg!( invoke_context, @@ -44,19 +43,18 @@ pub(crate) fn process_evict_account( } } - let evicted_lamports = account.borrow().lamports(); + let evicted_lamports = acc.lamports(); if evicted_lamports > 0 { let delta = i64::try_from(evicted_lamports) .map_err(|_| InstructionError::ArithmeticOverflow)?; let ctx = transaction_context.get_current_instruction_context()?; - let auth_acc = transaction_context.get_account_at_index( + let mut auth_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(0)?, )?; - adjust_authority_lamports(auth_acc, -delta)?; + adjust_authority_lamports(&mut auth_acc, -delta)?; } { - let mut acc = account.borrow_mut(); acc.set_lamports(0); acc.set_owner(Pubkey::default()); acc.resize(0, 0); diff --git a/programs/magicblock/src/clone_account/process_finalize_buffer.rs b/programs/magicblock/src/clone_account/process_finalize_buffer.rs index 47bcd2eb9..5df332929 100644 --- a/programs/magicblock/src/clone_account/process_finalize_buffer.rs +++ b/programs/magicblock/src/clone_account/process_finalize_buffer.rs @@ -49,19 +49,19 @@ pub(crate) fn process_finalize_program_from_buffer( validate_authority(signers, invoke_context)?; let ctx = transaction_context.get_current_instruction_context()?; - let auth_acc = transaction_context.get_account_at_index( + let mut auth_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(0)?, )?; - let prog_acc = transaction_context.get_account_at_index( + let mut prog_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(1)?, )?; - let buf_acc = transaction_context.get_account_at_index( + let buf_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(2)?, )?; - let buf_data = buf_acc.borrow().data().to_vec(); - let buf_lamports = buf_acc.borrow().lamports(); - let prog_current_lamports = prog_acc.borrow().lamports(); + let buf_data = buf_acc.data().to_vec(); + let buf_lamports = buf_acc.lamports(); + let prog_current_lamports = prog_acc.lamports(); let deploy_slot = get_deploy_slot(invoke_context); @@ -89,19 +89,18 @@ pub(crate) fn process_finalize_program_from_buffer( // Set up program account { - let mut prog = prog_acc.borrow_mut(); - prog.set_lamports(prog_lamports); - prog.set_owner(loader_v4::id()); - prog.set_executable(true); - prog.set_data_from_slice(&program_data); - prog.set_remote_slot(remote_slot); - prog.set_undelegating(false); + prog_acc.set_lamports(prog_lamports); + prog_acc.set_owner(loader_v4::id()); + prog_acc.set_executable(true); + prog_acc.set_data_from_slice(&program_data); + prog_acc.set_remote_slot(remote_slot); + prog_acc.set_undelegating(false); } // Close buffer account close_buffer_account(buf_acc); - adjust_authority_lamports(auth_acc, lamports_delta)?; + adjust_authority_lamports(&mut auth_acc, lamports_delta)?; Ok(()) } diff --git a/programs/magicblock/src/clone_account/process_finalize_v1_buffer.rs b/programs/magicblock/src/clone_account/process_finalize_v1_buffer.rs index 88acd6f6a..b0de5ef4c 100644 --- a/programs/magicblock/src/clone_account/process_finalize_v1_buffer.rs +++ b/programs/magicblock/src/clone_account/process_finalize_v1_buffer.rs @@ -60,16 +60,16 @@ pub(crate) fn process_finalize_v1_program_from_buffer( validate_authority(signers, invoke_context)?; let ctx = transaction_context.get_current_instruction_context()?; - let auth_acc = transaction_context.get_account_at_index( + let mut auth_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(0)?, )?; - let prog_acc = transaction_context.get_account_at_index( + let mut prog_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(1)?, )?; - let data_acc = transaction_context.get_account_at_index( + let mut data_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(2)?, )?; - let buf_acc = transaction_context.get_account_at_index( + let buf_acc = transaction_context.accounts().try_borrow_mut( ctx.get_index_of_instruction_account_in_transaction(3)?, )?; @@ -77,7 +77,7 @@ pub(crate) fn process_finalize_v1_program_from_buffer( ctx.get_index_of_instruction_account_in_transaction(2)?, )?; - let elf_data = buf_acc.borrow().data().to_vec(); + let elf_data = buf_acc.data().to_vec(); let deploy_slot = get_deploy_slot(invoke_context); @@ -116,38 +116,36 @@ pub(crate) fn process_finalize_v1_program_from_buffer( let prog_lamports = minimum_balance(invoke_context, program_content.len())?.max(1); - let prog_current = prog_acc.borrow().lamports(); - let data_current = data_acc.borrow().lamports(); - let buf_current = buf_acc.borrow().lamports(); + let prog_current = prog_acc.lamports(); + let data_current = data_acc.lamports(); + let buf_current = buf_acc.lamports(); let lamports_delta = (prog_lamports as i64 - prog_current as i64) + (data_lamports as i64 - data_current as i64) - buf_current as i64; // Set up program_data account { - let mut acc = data_acc.borrow_mut(); - acc.set_lamports(data_lamports); - acc.set_owner(bpf_loader_upgradeable::id()); - acc.set_executable(false); - acc.set_data_from_slice(&program_data_content); - acc.set_remote_slot(remote_slot); - acc.set_undelegating(false); + data_acc.set_lamports(data_lamports); + data_acc.set_owner(bpf_loader_upgradeable::id()); + data_acc.set_executable(false); + data_acc.set_data_from_slice(&program_data_content); + data_acc.set_remote_slot(remote_slot); + data_acc.set_undelegating(false); } // Set up program account (executable) { - let mut acc = prog_acc.borrow_mut(); - acc.set_lamports(prog_lamports); - acc.set_owner(bpf_loader_upgradeable::id()); - acc.set_executable(true); - acc.set_data_from_slice(&program_content); - acc.set_remote_slot(remote_slot); - acc.set_undelegating(false); + prog_acc.set_lamports(prog_lamports); + prog_acc.set_owner(bpf_loader_upgradeable::id()); + prog_acc.set_executable(true); + prog_acc.set_data_from_slice(&program_content); + prog_acc.set_remote_slot(remote_slot); + prog_acc.set_undelegating(false); } // Close buffer account close_buffer_account(buf_acc); - adjust_authority_lamports(auth_acc, lamports_delta)?; + adjust_authority_lamports(&mut auth_acc, lamports_delta)?; Ok(()) } diff --git a/programs/magicblock/src/clone_account/process_set_authority.rs b/programs/magicblock/src/clone_account/process_set_authority.rs index 522d84f22..021be2925 100644 --- a/programs/magicblock/src/clone_account/process_set_authority.rs +++ b/programs/magicblock/src/clone_account/process_set_authority.rs @@ -28,25 +28,21 @@ pub(crate) fn process_set_program_authority( let ctx = transaction_context.get_current_instruction_context()?; let idx = ctx.get_index_of_instruction_account_in_transaction(1)?; - let account = transaction_context.get_account_at_index(idx)?; + let mut account = transaction_context.accounts().try_borrow_mut(idx)?; let key = *transaction_context.get_key_of_account_at_index(idx)?; // Verify loader v4 ownership - { - let acc = account.borrow(); - if acc.owner() != &loader_v4::id() { - ic_msg!( - invoke_context, - "SetProgramAuthority: {} not owned by loader_v4", - key - ); - return Err(InstructionError::InvalidAccountOwner); - } + if account.owner() != &loader_v4::id() { + ic_msg!( + invoke_context, + "SetProgramAuthority: {} not owned by loader_v4", + key + ); + return Err(InstructionError::InvalidAccountOwner); } // Update authority in header - let mut acc = account.borrow_mut(); - let data = acc.data(); + let data = account.data().to_vec(); let header_size = LoaderV4State::program_data_offset(); if data.len() < header_size { @@ -68,7 +64,7 @@ pub(crate) fn process_set_program_authority( status: current.status, }; - acc.data_as_mut_slice()[..header_size] + account.data_as_mut_slice()[..header_size] .copy_from_slice(loader_v4_state_to_bytes(&new_state)); ic_msg!( diff --git a/programs/magicblock/src/ephemeral_accounts/mod.rs b/programs/magicblock/src/ephemeral_accounts/mod.rs index ff6151b02..abe115294 100644 --- a/programs/magicblock/src/ephemeral_accounts/mod.rs +++ b/programs/magicblock/src/ephemeral_accounts/mod.rs @@ -8,8 +8,6 @@ mod process_create; mod process_resize; mod validation; -use std::cell::RefCell; - use magicblock_magic_program_api::EPHEMERAL_RENT_PER_BYTE; pub(crate) use process_close::process_close_ephemeral_account; pub(crate) use process_create::process_create_ephemeral_account; @@ -18,7 +16,7 @@ use solana_account::{AccountSharedData, ReadableAccount}; use solana_instruction::error::InstructionError; use solana_transaction_context::TransactionContext; -use crate::utils::accounts; +use crate::utils::accounts::{self, InstructionAccount}; // ----- Account indices shared by validation and processors ----- @@ -46,10 +44,10 @@ fn rent_for(data_len: u32) -> Result { /// Returns the data length of an ephemeral account as a `u32`. fn get_ephemeral_data_len( - ephemeral: &RefCell, + ephemeral: &InstructionAccount<'_, '_>, ) -> Result { ephemeral - .borrow() + .borrow()? .data() .len() .try_into() diff --git a/programs/magicblock/src/ephemeral_accounts/process_close.rs b/programs/magicblock/src/ephemeral_accounts/process_close.rs index 1cab8e3e6..eb53b0aa0 100644 --- a/programs/magicblock/src/ephemeral_accounts/process_close.rs +++ b/programs/magicblock/src/ephemeral_accounts/process_close.rs @@ -21,12 +21,12 @@ pub(crate) fn process_close_ephemeral_account( let ephemeral = validate_existing_ephemeral(transaction_context, &caller_program_id)?; - let data_len = get_ephemeral_data_len(ephemeral)?; + let data_len = get_ephemeral_data_len(&ephemeral)?; let refund = rent_for(data_len)?; transfer_rent(transaction_context, -(refund as i64))?; // Reset account to empty state - let mut acc = ephemeral.borrow_mut(); + let mut acc = ephemeral.borrow_mut()?; acc.set_lamports(0); acc.set_owner(system_program::id()); acc.resize(0, 0); diff --git a/programs/magicblock/src/ephemeral_accounts/process_create.rs b/programs/magicblock/src/ephemeral_accounts/process_create.rs index e6958296d..660029907 100644 --- a/programs/magicblock/src/ephemeral_accounts/process_create.rs +++ b/programs/magicblock/src/ephemeral_accounts/process_create.rs @@ -33,7 +33,7 @@ pub(crate) fn process_create_ephemeral_account( transfer_rent(transaction_context, rent as i64)?; // Initialize ephemeral account - let mut acc = ephemeral.borrow_mut(); + let mut acc = ephemeral.borrow_mut()?; acc.set_lamports(0); acc.set_owner(caller_program_id); acc.resize(data_len as usize, 0); diff --git a/programs/magicblock/src/ephemeral_accounts/process_resize.rs b/programs/magicblock/src/ephemeral_accounts/process_resize.rs index 9481d8d4b..d072aa29d 100644 --- a/programs/magicblock/src/ephemeral_accounts/process_resize.rs +++ b/programs/magicblock/src/ephemeral_accounts/process_resize.rs @@ -25,14 +25,14 @@ pub(crate) fn process_resize_ephemeral_account( let ephemeral = validate_existing_ephemeral(transaction_context, &caller_program_id)?; - let old_len = get_ephemeral_data_len(ephemeral)?; + let old_len = get_ephemeral_data_len(&ephemeral)?; let new_rent = rent_for(new_data_len)?; let old_rent = rent_for(old_len)?; let delta = new_rent as i64 - old_rent as i64; transfer_rent(transaction_context, delta)?; - ephemeral.borrow_mut().resize(new_data_len as usize, 0); + ephemeral.borrow_mut()?.resize(new_data_len as usize, 0); ic_msg!( invoke_context, diff --git a/programs/magicblock/src/ephemeral_accounts/validation.rs b/programs/magicblock/src/ephemeral_accounts/validation.rs index a8d153ebd..5c37d4441 100644 --- a/programs/magicblock/src/ephemeral_accounts/validation.rs +++ b/programs/magicblock/src/ephemeral_accounts/validation.rs @@ -1,9 +1,7 @@ //! Validation helpers for ephemeral account instructions. -use std::cell::RefCell; - use magicblock_magic_program_api::EPHEMERAL_VAULT_PUBKEY; -use solana_account::{AccountSharedData, ReadableAccount}; +use solana_account::ReadableAccount; use solana_instruction::error::InstructionError; use solana_pubkey::Pubkey; use solana_sdk_ids::system_program; @@ -11,7 +9,8 @@ use solana_transaction_context::TransactionContext; use super::{EPHEMERAL_IDX, SPONSOR_IDX, VAULT_IDX}; use crate::utils::{ - accounts, instruction_context_frames::InstructionContextFrames, + accounts::{self, InstructionAccount}, + instruction_context_frames::InstructionContextFrames, }; /// Returns the program ID of the CPI caller. @@ -19,7 +18,7 @@ use crate::utils::{ /// Fails with [`InstructionError::IncorrectProgramId`] when invoked /// outside of CPI, so this implicitly rejects direct top-level calls. fn get_caller_program_id( - tc: &TransactionContext, + tc: &TransactionContext<'_>, ) -> Result { let frames = InstructionContextFrames::try_from(tc)?; frames @@ -30,7 +29,9 @@ fn get_caller_program_id( /// Validates that the sponsor account is a signer. /// PDAs may satisfy this via `invoke_signed`. -fn validate_sponsor(tc: &TransactionContext) -> Result<(), InstructionError> { +fn validate_sponsor( + tc: &TransactionContext<'_>, +) -> Result<(), InstructionError> { let ix_ctx = tc.get_current_instruction_context()?; if !ix_ctx.is_instruction_account_signer(SPONSOR_IDX)? { return Err(InstructionError::MissingRequiredSignature); @@ -39,7 +40,7 @@ fn validate_sponsor(tc: &TransactionContext) -> Result<(), InstructionError> { } /// Validates the vault account matches the expected pubkey. -fn validate_vault(tc: &TransactionContext) -> Result<(), InstructionError> { +fn validate_vault(tc: &TransactionContext<'_>) -> Result<(), InstructionError> { let vault_pubkey = accounts::get_instruction_pubkey_with_idx(tc, VAULT_IDX)?; if *vault_pubkey != EPHEMERAL_VAULT_PUBKEY { @@ -55,7 +56,7 @@ fn validate_vault(tc: &TransactionContext) -> Result<(), InstructionError> { /// Checks CPI context, sponsor signature, and vault identity. /// Returns the caller program ID on success. pub(super) fn validate_common( - tc: &TransactionContext, + tc: &TransactionContext<'_>, ) -> Result { let caller_program_id = get_caller_program_id(tc)?; validate_sponsor(tc)?; @@ -66,7 +67,7 @@ pub(super) fn validate_common( /// Validates that the ephemeral account is a signer (prevents pubkey squatting). /// Only required for account creation. pub(super) fn validate_ephemeral_signer( - tc: &TransactionContext, + tc: &TransactionContext<'_>, ) -> Result<(), InstructionError> { let ix_ctx = tc.get_current_instruction_context()?; if !ix_ctx.is_instruction_account_signer(EPHEMERAL_IDX)? { @@ -78,12 +79,12 @@ pub(super) fn validate_ephemeral_signer( /// Validates that the account at [`EPHEMERAL_IDX`] is an empty system-owned /// account (0 lamports, system program owner). Returns the account for /// initialization. -pub(super) fn validate_new_ephemeral( - tc: &TransactionContext, -) -> Result<&RefCell, InstructionError> { +pub(super) fn validate_new_ephemeral<'a, 'ix_data>( + tc: &'a TransactionContext<'ix_data>, +) -> Result, InstructionError> { let ephemeral = accounts::get_instruction_account_with_idx(tc, EPHEMERAL_IDX)?; - let acc = ephemeral.borrow(); + let acc = ephemeral.borrow()?; if acc.lamports() != 0 || *acc.owner() != system_program::ID { return Err(InstructionError::InvalidAccountData); } @@ -93,21 +94,21 @@ pub(super) fn validate_new_ephemeral( /// Validates an existing ephemeral account is marked ephemeral and owned by /// the caller program. Returns the account for further operations. -pub(super) fn validate_existing_ephemeral<'a>( - tc: &'a TransactionContext, +pub(super) fn validate_existing_ephemeral<'a, 'ix_data>( + tc: &'a TransactionContext<'ix_data>, caller_program_id: &Pubkey, -) -> Result<&'a RefCell, InstructionError> { +) -> Result, InstructionError> { let ephemeral = accounts::get_instruction_account_with_idx(tc, EPHEMERAL_IDX)?; + let ep_ref = ephemeral.borrow()?; - let acc = ephemeral.borrow(); - if !acc.ephemeral() { + if !ep_ref.ephemeral() { return Err(InstructionError::InvalidAccountData); } - if acc.owner() != caller_program_id { + if ep_ref.owner() != caller_program_id { return Err(InstructionError::InvalidAccountOwner); } - drop(acc); + drop(ep_ref); Ok(ephemeral) } diff --git a/programs/magicblock/src/lib.rs b/programs/magicblock/src/lib.rs index 255b9bbb2..684e1c067 100644 --- a/programs/magicblock/src/lib.rs +++ b/programs/magicblock/src/lib.rs @@ -6,7 +6,6 @@ pub mod magic_sys; mod mutate_accounts; mod schedule_task; mod schedule_transactions; -mod toggle_executable_check; pub use magic_context::MagicContext; pub mod magic_scheduled_base_intent; pub mod magicblock_processor; diff --git a/programs/magicblock/src/magic_context.rs b/programs/magicblock/src/magic_context.rs index 84a0e1619..51d819db0 100644 --- a/programs/magicblock/src/magic_context.rs +++ b/programs/magicblock/src/magic_context.rs @@ -1,8 +1,8 @@ -use std::mem; +use std::{io::Cursor, mem}; use magicblock_magic_program_api::MAGIC_CONTEXT_SIZE; use serde::{Deserialize, Serialize}; -use solana_account::{AccountSharedData, ReadableAccount}; +use solana_instruction::error::InstructionError; use crate::magic_scheduled_base_intent::ScheduledIntentBundle; @@ -15,16 +15,30 @@ pub struct MagicContext { impl MagicContext { pub const SIZE: usize = MAGIC_CONTEXT_SIZE; pub const ZERO: [u8; Self::SIZE] = [0; Self::SIZE]; - pub(crate) fn deserialize( - data: &AccountSharedData, - ) -> Result { - if data.data().is_empty() { + + pub(crate) fn deserialize(data: &[u8]) -> Result { + if data.is_empty() || is_zeroed(data) { Ok(Self::default()) } else { - data.deserialize_data() + bincode::deserialize_from(Cursor::new(data)) } } + pub(crate) fn write_to( + &self, + data: &mut [u8], + ) -> Result<(), InstructionError> { + let size = bincode::serialized_size(self) + .map_err(|_| InstructionError::GenericError)?; + if size > data.len() as u64 { + return Err(InstructionError::AccountDataTooSmall); + } + + data.fill(0); + bincode::serialize_into(&mut &mut data[..], self) + .map_err(|_| InstructionError::GenericError) + } + pub(crate) fn next_intent_id(&mut self) -> u64 { let output = self.intent_id; self.intent_id = self.intent_id.wrapping_add(1); @@ -46,11 +60,19 @@ impl MagicContext { } pub fn has_scheduled_commits(data: &[u8]) -> bool { - // Currently we only store a vec of scheduled commits in the MagicContext - // The first 8 bytes contain the length of the vec - // This works even if the length is actually stored as a u32 - // since we zero out the entire context whenever we update the vec - !is_zeroed(&data[8..16]) + const LEN_OFF: usize = mem::size_of::(); + const LEN_END: usize = LEN_OFF + mem::size_of::(); + + if is_zeroed(data) { + return false; + } + + let Some(raw_len) = data.get(LEN_OFF..LEN_END) else { + return false; + }; + let mut len = [0; mem::size_of::()]; + len.copy_from_slice(raw_len); + u64::from_le_bytes(len) != 0 } } @@ -65,3 +87,31 @@ fn is_zeroed(buf: &[u8]) -> bool { && chunks.remainder() == &ZEROS[..chunks.remainder().len()] } } + +#[cfg(test)] +mod tests { + use super::MagicContext; + + #[test] + fn deserialize_treats_empty_and_zeroed_as_default() { + let zero = vec![0; MagicContext::SIZE]; + + assert_eq!(MagicContext::deserialize(&[]).unwrap().intent_id, 0); + assert_eq!(MagicContext::deserialize(&zero).unwrap().intent_id, 0); + } + + #[test] + fn deserialize_ignores_trailing_zero_padding() { + let ctx = MagicContext { + intent_id: 7, + scheduled_base_intents: Vec::new(), + }; + let mut data = vec![0; MagicContext::SIZE]; + + ctx.write_to(&mut data).unwrap(); + + let got = MagicContext::deserialize(&data).unwrap(); + assert_eq!(got.intent_id, ctx.intent_id); + assert!(got.scheduled_base_intents.is_empty()); + } +} diff --git a/programs/magicblock/src/magic_scheduled_base_intent.rs b/programs/magicblock/src/magic_scheduled_base_intent.rs index 7b61b8502..e05827bb3 100644 --- a/programs/magicblock/src/magic_scheduled_base_intent.rs +++ b/programs/magicblock/src/magic_scheduled_base_intent.rs @@ -1,7 +1,7 @@ use std::collections::{HashMap, HashSet}; use magicblock_core::{ - intent::{BaseActionCallback, CommittedAccount, CommittedAccountRef}, + intent::{BaseActionCallback, CommittedAccount}, token_programs::{EATA_PROGRAM_ID, TOKEN_PROGRAM_ID}, Slot, }; @@ -26,7 +26,7 @@ use crate::{ magic_sys::MISSING_COMMIT_NONCE_ERR, utils::accounts::{ get_instruction_account_with_idx, get_instruction_pubkey_with_idx, - get_writable_with_idx, + get_writable_with_idx, InstructionAccount, }, validator::effective_validator_authority_id, }; @@ -41,35 +41,39 @@ pub const COMMIT_FEE_LAMPORTS: u64 = 100_000; pub const COMPUTE_UNIT_PRICE_MICRO_LAMPORTS: u64 = 50_000; /// Context necessary for construction of Schedule Action -pub struct ConstructionContext<'a, 'ic> { +pub struct ConstructionContext<'a, 'ic, 'ix_data> { parent_program_id: Option, signers: &'a HashSet, - pub transaction_context: &'a TransactionContext, - pub invoke_context: &'a mut InvokeContext<'ic>, + pub invoke_context: &'a mut InvokeContext<'ic, 'ix_data>, /// When `true`, actions use `call_handler_v2` which passes `source_program` /// to the delegation program. Legacy `ScheduleBaseIntent` sets this to /// `false` for backward compatibility with old deployed contracts. pub secure: bool, } -impl<'a, 'ic> ConstructionContext<'a, 'ic> { +impl<'a, 'ic, 'ix_data> ConstructionContext<'a, 'ic, 'ix_data> { pub fn new( parent_program_id: Option, signers: &'a HashSet, - transaction_context: &'a TransactionContext, - invoke_context: &'a mut InvokeContext<'ic>, + invoke_context: &'a mut InvokeContext<'ic, 'ix_data>, secure: bool, ) -> Self { Self { parent_program_id, signers, - transaction_context, invoke_context, secure, } } + + pub fn transaction_context(&self) -> &TransactionContext<'ix_data> { + &*self.invoke_context.transaction_context + } } +type CommitAccountRef<'a, 'ix_data> = + (Pubkey, InstructionAccount<'a, 'ix_data>); + /// Scheduled action to be executed on base layer #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ScheduledIntentBundle { @@ -88,7 +92,7 @@ impl ScheduledIntentBundle { commit_id: u64, slot: Slot, payer_pubkey: &Pubkey, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result { let intent_bundle = MagicIntentBundle::try_from_args(args, context)?; let blockhash = context.invoke_context.environment_config.blockhash; @@ -240,7 +244,7 @@ impl From for MagicIntentBundle { impl MagicIntentBundle { pub fn try_from_args( args: MagicIntentBundleArgs, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result { Self::validate(&args, context)?; @@ -288,7 +292,7 @@ impl MagicIntentBundle { /// 2. None for now :) fn validate( args: &MagicIntentBundleArgs, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result<(), InstructionError> { let committed_set: Option> = args.commit.as_ref().map(|el| { @@ -323,7 +327,7 @@ impl MagicIntentBundle { /// are globally unique by pubkey. fn post_validation( &self, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result<(), InstructionError> { if self.is_empty() { ic_msg!( @@ -589,7 +593,7 @@ impl MagicIntentBundle { impl MagicBaseIntent { pub fn try_from_args( args: MagicBaseIntentArgs, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result { match args { MagicBaseIntentArgs::BaseActions(base_actions) => { @@ -702,7 +706,7 @@ pub struct CommitAndUndelegate { impl CommitAndUndelegate { pub fn try_from_args( args: CommitAndUndelegateArgs, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result { let account_indices = args.commit_type.committed_accounts_indices(); Self::validate(account_indices.as_slice(), context)?; @@ -720,15 +724,22 @@ impl CommitAndUndelegate { pub fn validate( account_indices: &[u8], - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result<(), InstructionError> { account_indices.iter().copied().try_for_each(|idx| { - let is_writable = get_writable_with_idx(context.transaction_context, idx as u16)?; - let delegated = get_instruction_account_with_idx(context.transaction_context, idx as u16)?; - if is_writable && delegated.borrow().delegated() { + let is_writable = + get_writable_with_idx(context.transaction_context(), idx as u16)?; + let delegated = get_instruction_account_with_idx( + context.transaction_context(), + idx as u16, + )?; + if is_writable && delegated.borrow()?.delegated() { Ok(()) } else { - let pubkey = get_instruction_pubkey_with_idx(context.transaction_context, idx as u16)?; + let pubkey = get_instruction_pubkey_with_idx( + context.transaction_context(), + idx as u16, + )?; ic_msg!( context.invoke_context, "ScheduleCommit ERR: account {} is required to be writable and delegated in order to be undelegated", @@ -827,12 +838,12 @@ pub struct BaseAction { impl BaseAction { pub fn try_from_args( args: BaseActionArgs, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result { // Since action on Base layer performed on behalf of some escrow // We need to ensure that action was authorized by legit owner let authority_pubkey = get_instruction_pubkey_with_idx( - context.transaction_context, + context.transaction_context(), args.escrow_authority as u16, )?; if !context.signers.contains(authority_pubkey) { @@ -892,12 +903,11 @@ pub enum CommitType { impl CommitType { fn validate_accounts( - accounts: &[CommittedAccountRef], - context: &ConstructionContext<'_, '_>, + accounts: &[CommitAccountRef<'_, '_>], + context: &ConstructionContext<'_, '_, '_>, ) -> Result<(), InstructionError> { accounts.iter().try_for_each(|(pubkey, account)| { - let account_shared = account.borrow(); - if !account_shared.delegated() { + if !account.borrow()?.delegated() { ic_msg!( context.invoke_context, "ScheduleCommit ERR: account {} is required to be delegated to the current validator, in order to be committed", @@ -907,7 +917,7 @@ impl CommitType { } // Validate committed account was scheduled by valid authority - let owner = *account_shared.owner(); + let owner = *account.borrow()?.owner(); validate_commit_schedule_permissions( &context.invoke_context, &owner, @@ -926,10 +936,10 @@ impl CommitType { // So first: // 1. Validate // 2. Fetch current account states - pub fn extract_commit_accounts<'a>( + pub(crate) fn extract_commit_accounts<'a, 'ix_data>( account_indices: &[u8], - transaction_context: &'a TransactionContext, - ) -> Result>, InstructionError> { + transaction_context: &'a TransactionContext<'ix_data>, + ) -> Result>, InstructionError> { account_indices .iter() .map(|i| { @@ -949,25 +959,26 @@ impl CommitType { pub fn try_from_args( args: CommitTypeArgs, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result { match args { CommitTypeArgs::Standalone(accounts) => { let committed_accounts_ref = Self::extract_commit_accounts( &accounts, - context.transaction_context, + context.transaction_context(), )?; Self::validate_accounts(&committed_accounts_ref, context)?; let committed_accounts = committed_accounts_ref .into_iter() - .map(|(pubkey, account_ref)| { - CommittedAccount::from_account_shared( + .map(|(pubkey, account)| { + let account = account.to_account_shared_data()?; + Ok(CommittedAccount::from_account_shared( pubkey, - &account_ref.borrow(), + &account, context.parent_program_id, - ) + )) }) - .collect(); + .collect::>()?; Ok(CommitType::Standalone(committed_accounts)) } @@ -977,7 +988,7 @@ impl CommitType { } => { let committed_accounts_ref = Self::extract_commit_accounts( &committed_accounts, - context.transaction_context, + context.transaction_context(), )?; Self::validate_accounts(&committed_accounts_ref, context)?; @@ -987,14 +998,15 @@ impl CommitType { .collect::, InstructionError>>()?; let committed_accounts = committed_accounts_ref .into_iter() - .map(|(pubkey, account_ref)| { - CommittedAccount::from_account_shared( + .map(|(pubkey, account)| { + let account = account.to_account_shared_data()?; + Ok(CommittedAccount::from_account_shared( pubkey, - &account_ref.borrow(), + &account, context.parent_program_id, - ) + )) }) - .collect(); + .collect::>()?; Ok(CommitType::WithBaseActions { committed_accounts, @@ -1115,7 +1127,7 @@ impl UndelegateType { pub fn try_from_args( args: UndelegateTypeArgs, - context: &ConstructionContext<'_, '_>, + context: &ConstructionContext<'_, '_, '_>, ) -> Result { match args { UndelegateTypeArgs::Standalone => Ok(UndelegateType::Standalone), diff --git a/programs/magicblock/src/magicblock_processor.rs b/programs/magicblock/src/magicblock_processor.rs index 36ba1c13d..f5575ad8a 100644 --- a/programs/magicblock/src/magicblock_processor.rs +++ b/programs/magicblock/src/magicblock_processor.rs @@ -23,7 +23,6 @@ use crate::{ process_schedule_commit, process_schedule_commit_finalize, process_schedule_intent_bundle, ProcessScheduleCommitOptions, }, - toggle_executable_check::process_toggle_executable_check, }; pub const DEFAULT_COMPUTE_UNITS: u64 = 150; @@ -50,7 +49,7 @@ declare_process_instruction!( let transaction_context = &invoke_context.transaction_context; let instruction_context = transaction_context.get_current_instruction_context()?; - let signers = instruction_context.get_signers(transaction_context)?; + let signers = instruction_context.get_signers()?; match instruction { ModifyAccounts { @@ -113,12 +112,10 @@ declare_process_instruction!( CancelTask { task_id } => { process_cancel_task(signers, invoke_context, task_id) } - DisableExecutableCheck => { - process_toggle_executable_check(signers, invoke_context, false) - } - EnableExecutableCheck => { - process_toggle_executable_check(signers, invoke_context, true) - } + // NOTE: Solana runtime 3.x no longer exposes executable checks, + // and program deployment works without them. + DisableExecutableCheck => Ok(()), + EnableExecutableCheck => Ok(()), CreateEphemeralAccount { data_len } => { process_create_ephemeral_account( invoke_context, @@ -236,7 +233,7 @@ declare_process_instruction!( let transaction_context = &invoke_context.transaction_context; let instruction_context = transaction_context.get_current_instruction_context()?; - let signers = instruction_context.get_signers(transaction_context)?; + let signers = instruction_context.get_signers()?; match instruction { MagicBlockInstruction::ExecuteCrank { instructions } => { @@ -269,7 +266,7 @@ mod test { mock_process_instruction( &crate::CRANK_PROGRAM_ID, - Vec::new(), + None, &data, Vec::new(), vec![AccountMeta::new_readonly(crate::CRANK_PROGRAM_ID, false)], diff --git a/programs/magicblock/src/mutate_accounts/process_mutate_accounts.rs b/programs/magicblock/src/mutate_accounts/process_mutate_accounts.rs index c0bbf908e..2ebdbd42a 100644 --- a/programs/magicblock/src/mutate_accounts/process_mutate_accounts.rs +++ b/programs/magicblock/src/mutate_accounts/process_mutate_accounts.rs @@ -10,9 +10,7 @@ use solana_sdk_ids::system_program; use solana_transaction_context::TransactionContext; use crate::{ - clone_account::{ - is_ephemeral, validate_not_delegated, validate_remote_slot, - }, + clone_account::{validate_not_delegated, validate_remote_slot}, errors::MagicBlockProgramError, validator::effective_validator_authority_id, }; @@ -33,7 +31,7 @@ pub(crate) fn process_mutate_accounts( let account_mods_len = account_mods.len() as u64; // 1. Checks - let validator_authority_acc = { + let mut validator_authority_acc = { // 1.1. MagicBlock authority must sign let validator_authority_id = effective_validator_authority_id(); if !signers.contains(&validator_authority_id) { @@ -80,12 +78,9 @@ pub(crate) fn process_mutate_accounts( ); } let magicblock_authority_acc = transaction_context - .get_account_at_index(authority_transaction_index)?; - if magicblock_authority_acc - .borrow() - .owner() - .ne(&system_program::id()) - { + .accounts() + .try_borrow_mut(authority_transaction_index)?; + if magicblock_authority_acc.owner().ne(&system_program::id()) { ic_msg!( invoke_context, "MutateAccounts: MagicBlock authority needs to be owned by the system program" @@ -106,11 +101,12 @@ pub(crate) fn process_mutate_accounts( let account_idx = (idx + 1) as u16; let account_transaction_index = instruction_context .get_index_of_instruction_account_in_transaction(account_idx)?; - let account = transaction_context - .get_account_at_index(account_transaction_index)?; + let mut account = transaction_context + .accounts() + .try_borrow_mut(account_transaction_index)?; // Skip ephemeral accounts (exist locally on ER only) - if is_ephemeral(account) { + if account.ephemeral() { let key = transaction_context .get_key_of_account_at_index(account_transaction_index)?; account_mods.remove(key); @@ -146,9 +142,9 @@ pub(crate) fn process_mutate_accounts( } // Validate account is mutable - validate_not_delegated(account, account_key, invoke_context)?; + validate_not_delegated(&account, account_key, invoke_context)?; validate_remote_slot( - account, + &mut account, account_key, modification.remote_slot, invoke_context, @@ -157,7 +153,7 @@ pub(crate) fn process_mutate_accounts( // While an account is undelegating and the delegation is not completed, // we will never clone/mutate it. Thus we can safely untoggle this flag // here AFTER validation passes. - account.borrow_mut().set_undelegating(false); + account.set_undelegating(false); if let Some(lamports) = modification.lamports { ic_msg!( @@ -165,10 +161,10 @@ pub(crate) fn process_mutate_accounts( "MutateAccounts: setting lamports to {}", lamports ); - let current_lamports = account.borrow().lamports(); + let current_lamports = account.lamports(); lamports_to_debit += lamports as i128 - current_lamports as i128; - account.borrow_mut().set_lamports(lamports); + account.set_lamports(lamports); } if let Some(owner) = modification.owner { ic_msg!( @@ -176,7 +172,7 @@ pub(crate) fn process_mutate_accounts( "MutateAccounts: setting owner to {}", owner ); - account.borrow_mut().set_owner(owner); + account.set_owner(owner); } if let Some(executable) = modification.executable { ic_msg!( @@ -184,7 +180,7 @@ pub(crate) fn process_mutate_accounts( "MutateAccounts: setting executable to {}", executable ); - account.borrow_mut().set_executable(executable); + account.set_executable(executable); } if let Some(data) = modification.data.take() { ic_msg!( @@ -192,7 +188,7 @@ pub(crate) fn process_mutate_accounts( "MutateAccounts: setting data to len {}", data.len() ); - account.borrow_mut().set_data_from_slice(&data); + account.set_data_from_slice(&data); } if let Some(delegated) = modification.delegated { ic_msg!( @@ -200,7 +196,7 @@ pub(crate) fn process_mutate_accounts( "MutateAccounts: setting delegated to {}", delegated ); - account.borrow_mut().set_delegated(delegated); + account.set_delegated(delegated); } if let Some(confined) = modification.confined { ic_msg!( @@ -208,7 +204,7 @@ pub(crate) fn process_mutate_accounts( "MutateAccounts: setting confined to {}", confined ); - account.borrow_mut().set_confined(confined); + account.set_confined(confined); } if let Some(remote_slot) = modification.remote_slot { ic_msg!( @@ -216,12 +212,12 @@ pub(crate) fn process_mutate_accounts( "MutateAccounts: setting remote_slot to {}", remote_slot ); - account.borrow_mut().set_remote_slot(remote_slot); + account.set_remote_slot(remote_slot); } } if lamports_to_debit != 0 { - let authority_lamports = validator_authority_acc.borrow().lamports(); + let authority_lamports = validator_authority_acc.lamports(); let adjusted_authority_lamports = if lamports_to_debit > 0 { (authority_lamports as u128) .checked_sub(lamports_to_debit as u128) @@ -248,7 +244,7 @@ pub(crate) fn process_mutate_accounts( })? }; - validator_authority_acc.borrow_mut().set_lamports( + validator_authority_acc.set_lamports( u64::try_from(adjusted_authority_lamports).map_err(|err| { ic_msg!( invoke_context, diff --git a/programs/magicblock/src/schedule_task/process_cancel_task.rs b/programs/magicblock/src/schedule_task/process_cancel_task.rs index c3898e103..9eebba123 100644 --- a/programs/magicblock/src/schedule_task/process_cancel_task.rs +++ b/programs/magicblock/src/schedule_task/process_cancel_task.rs @@ -16,7 +16,7 @@ pub(crate) fn process_cancel_task( ) -> Result<(), InstructionError> { const TASK_AUTHORITY_IDX: u16 = 0; - let transaction_context = &invoke_context.transaction_context.clone(); + let transaction_context = &*invoke_context.transaction_context; // Validate that the task authority is a signer let task_authority_pubkey = get_instruction_pubkey_with_idx( diff --git a/programs/magicblock/src/schedule_task/process_execute_task.rs b/programs/magicblock/src/schedule_task/process_execute_task.rs index 512c37516..429c56d3d 100644 --- a/programs/magicblock/src/schedule_task/process_execute_task.rs +++ b/programs/magicblock/src/schedule_task/process_execute_task.rs @@ -20,69 +20,69 @@ pub(crate) fn process_execute_crank( const VALIDATOR_IDX: u16 = 0; const CRANK_SIGNER_IDX: u16 = 1; - let transaction_context = &invoke_context.transaction_context.clone(); - let ix_ctx = transaction_context.get_current_instruction_context()?; - let ix_accs_len = ix_ctx.get_number_of_instruction_accounts() as usize; const ACCOUNTS_START: usize = CRANK_SIGNER_IDX as usize + 1; - // Assert crank executor program. - ix_ctx - .find_index_of_program_account(transaction_context, &crate::id()) - .or_else(|| { - ix_ctx.find_index_of_program_account( - transaction_context, - &CRANK_PROGRAM_ID, - ) - }) - .ok_or_else(|| { + { + let transaction_context = &*invoke_context.transaction_context; + let ix_ctx = transaction_context.get_current_instruction_context()?; + let ix_accs_len = ix_ctx.get_number_of_instruction_accounts() as usize; + + // Assert crank executor program. + let program_key = ix_ctx.get_program_key()?; + if program_key != &crate::id() && program_key != &CRANK_PROGRAM_ID { ic_msg!( invoke_context, "ExecuteCrank ERR: crank executor program account not found" ); - InstructionError::UnsupportedProgramId - })?; + return Err(InstructionError::UnsupportedProgramId); + } - // Assert enough accounts - if ix_accs_len < ACCOUNTS_START { - ic_msg!( - invoke_context, - "ExecuteCrank ERR: not enough accounts to execute crank ({}), need crank signer and instructions", - ix_accs_len - ); - return Err(InstructionError::NotEnoughAccountKeys); - } + // Assert enough accounts + if ix_accs_len < ACCOUNTS_START { + ic_msg!( + invoke_context, + "ExecuteCrank ERR: not enough accounts to execute crank ({}), need crank signer and instructions", + ix_accs_len + ); + return Err(InstructionError::MissingAccount); + } - // Assert Validator is signer - // Only the validator can execute a crank - let validator_pubkey = - get_instruction_pubkey_with_idx(transaction_context, VALIDATOR_IDX)?; - if validator_pubkey != &validator_authority_id() { - ic_msg!( - invoke_context, - "ExecuteCrank ERR: validator pubkey {} is not the expected validator", - validator_pubkey - ); - return Err(InstructionError::IncorrectAuthority); - } - if !signers.contains(validator_pubkey) { - ic_msg!( - invoke_context, - "ExecuteCrank ERR: validator pubkey {} is not in signers", - validator_pubkey - ); - return Err(InstructionError::MissingRequiredSignature); - } + // Assert Validator is signer + // Only the validator can execute a crank + let validator_pubkey = get_instruction_pubkey_with_idx( + transaction_context, + VALIDATOR_IDX, + )?; + if validator_pubkey != &validator_authority_id() { + ic_msg!( + invoke_context, + "ExecuteCrank ERR: validator pubkey {} is not the expected validator", + validator_pubkey + ); + return Err(InstructionError::IncorrectAuthority); + } + if !signers.contains(validator_pubkey) { + ic_msg!( + invoke_context, + "ExecuteCrank ERR: validator pubkey {} is not in signers", + validator_pubkey + ); + return Err(InstructionError::MissingRequiredSignature); + } - // Assert Crank signer is provided - let crank_signer_pubkey = - get_instruction_pubkey_with_idx(transaction_context, CRANK_SIGNER_IDX)?; - if crank_signer_pubkey != &CRANK_SIGNER { - ic_msg!( - invoke_context, - "ExecuteCrank ERR: crank signer pubkey {} is not the expected Crank signer", - crank_signer_pubkey - ); - return Err(InstructionError::InvalidSeeds); + // Assert Crank signer is provided + let crank_signer_pubkey = get_instruction_pubkey_with_idx( + transaction_context, + CRANK_SIGNER_IDX, + )?; + if crank_signer_pubkey != &CRANK_SIGNER { + ic_msg!( + invoke_context, + "ExecuteCrank ERR: crank signer pubkey {} is not the expected Crank signer", + crank_signer_pubkey + ); + return Err(InstructionError::InvalidSeeds); + } } // Already validated when scheduling the task. @@ -91,7 +91,7 @@ pub(crate) fn process_execute_crank( let len = instructions.len(); for ix in instructions { - invoke_context.native_invoke(ix.into(), &[CRANK_SIGNER])?; + invoke_context.native_invoke(ix, &[CRANK_SIGNER])?; } ic_msg!(invoke_context, "Executed crank with {} instructions", len); @@ -192,7 +192,7 @@ mod test { &ix.data, transaction_accounts, vec![], - Err(InstructionError::NotEnoughAccountKeys), + Err(InstructionError::MissingAccount), ); } diff --git a/programs/magicblock/src/schedule_task/process_schedule_task.rs b/programs/magicblock/src/schedule_task/process_schedule_task.rs index 9f2bdffd0..6e1341299 100644 --- a/programs/magicblock/src/schedule_task/process_schedule_task.rs +++ b/programs/magicblock/src/schedule_task/process_schedule_task.rs @@ -21,43 +21,47 @@ pub(crate) fn process_schedule_task( ) -> Result<(), InstructionError> { const PAYER_IDX: u16 = 0; - let transaction_context = &invoke_context.transaction_context.clone(); - let ix_ctx = transaction_context.get_current_instruction_context()?; - let ix_accs_len = ix_ctx.get_number_of_instruction_accounts() as usize; const ACCOUNTS_START: usize = PAYER_IDX as usize + 1; - // Assert MagicBlock program - ix_ctx - .find_index_of_program_account(transaction_context, &crate::id()) - .ok_or_else(|| { + let payer_pubkey = { + let transaction_context = &*invoke_context.transaction_context; + let ix_ctx = transaction_context.get_current_instruction_context()?; + let ix_accs_len = ix_ctx.get_number_of_instruction_accounts() as usize; + + // Assert MagicBlock program + if ix_ctx.get_program_key()? != &crate::id() { ic_msg!( invoke_context, - "ScheduleTask ERR: Magic program account not found" + "ScheduleTask ERR: program ID mismatch, expected {}", + crate::id() ); - InstructionError::UnsupportedProgramId - })?; + return Err(InstructionError::UnsupportedProgramId); + } - // Assert enough accounts - if ix_accs_len < ACCOUNTS_START { - ic_msg!( - invoke_context, - "ScheduleTask ERR: not enough accounts to schedule task ({}), need payer, signing program and task context", - ix_accs_len - ); - return Err(InstructionError::NotEnoughAccountKeys); - } + // Assert enough accounts + if ix_accs_len < ACCOUNTS_START { + ic_msg!( + invoke_context, + "ScheduleTask ERR: not enough accounts to schedule task ({}), need payer, signing program and task context", + ix_accs_len + ); + return Err(InstructionError::MissingAccount); + } - // Assert Payer is signer - let payer_pubkey = - get_instruction_pubkey_with_idx(transaction_context, PAYER_IDX)?; - if !signers.contains(payer_pubkey) { - ic_msg!( - invoke_context, - "ScheduleTask ERR: payer pubkey {} not in signers", - payer_pubkey - ); - return Err(InstructionError::MissingRequiredSignature); - } + // Assert Payer is signer + let payer_pubkey = + *get_instruction_pubkey_with_idx(transaction_context, PAYER_IDX)?; + if !signers.contains(&payer_pubkey) { + ic_msg!( + invoke_context, + "ScheduleTask ERR: payer pubkey {} not in signers", + payer_pubkey + ); + return Err(InstructionError::MissingRequiredSignature); + } + + payer_pubkey + }; // Enforce minimal number of iterations if args.iterations < 1 { @@ -94,7 +98,7 @@ pub(crate) fn process_schedule_task( let schedule_request = ScheduleTaskRequest { id: args.task_id, instructions: args.instructions, - authority: *payer_pubkey, + authority: payer_pubkey, execution_interval_millis: args.execution_interval_millis, iterations: args.iterations, }; diff --git a/programs/magicblock/src/schedule_transactions/mod.rs b/programs/magicblock/src/schedule_transactions/mod.rs index ec0ec6614..dbef40e0b 100644 --- a/programs/magicblock/src/schedule_transactions/mod.rs +++ b/programs/magicblock/src/schedule_transactions/mod.rs @@ -8,7 +8,7 @@ mod process_schedule_intent_bundle; mod process_scheduled_commit_sent; pub(crate) mod transaction_scheduler; -use std::{cell::RefCell, sync::Arc}; +use std::sync::Arc; use magicblock_core::intent::CommittedAccount; use magicblock_magic_program_api::MAGIC_CONTEXT_PUBKEY; @@ -20,7 +20,6 @@ pub(crate) use process_schedule_intent_bundle::process_schedule_intent_bundle; pub use process_scheduled_commit_sent::{ process_scheduled_commit_sent, register_scheduled_commit_sent, SentCommit, }; -use solana_account::AccountSharedData; use solana_clock::Clock; use solana_instruction::error::InstructionError; use solana_log_collector::ic_msg; @@ -35,7 +34,7 @@ use crate::{ }, utils::accounts::{ get_instruction_account_with_idx, get_instruction_pubkey_with_idx, - get_writable_with_idx, + get_writable_with_idx, InstructionAccount, }, }; @@ -46,9 +45,9 @@ pub(crate) const ACCOUNTS_OFFSET: usize = MAGIC_CONTEXT_IDX as usize + 1; #[cfg(not(test))] fn get_parent_program_id( - transaction_context: &TransactionContext, invoke_context: &mut InvokeContext, ) -> Result, InstructionError> { + let transaction_context = &*invoke_context.transaction_context; let frames = crate::utils::instruction_context_frames::InstructionContextFrames::try_from(transaction_context)?; let parent_program_id = frames.find_program_id_of_parent_of_current_instruction(); @@ -65,10 +64,10 @@ fn get_parent_program_id( #[cfg(test)] fn get_parent_program_id( - transaction_context: &TransactionContext, - _: &mut InvokeContext, + invoke_context: &mut InvokeContext, ) -> Result, InstructionError> { use solana_account::ReadableAccount; + let transaction_context = &*invoke_context.transaction_context; let ix_ctx = transaction_context.get_current_instruction_context()?; // Action-only bundles may legitimately contain only payer + magic context. @@ -84,7 +83,7 @@ fn get_parent_program_id( transaction_context, ACCOUNTS_OFFSET as u16, )? - .borrow() + .borrow()? .owner(); Ok(Some(first_committee_owner)) @@ -165,16 +164,16 @@ pub(crate) fn magic_fee_vault_pubkey() -> Pubkey { /// /// Writability is checked eagerly: a payer on the fee-charging path would /// otherwise fail later with a less clear error. -pub(crate) fn try_get_fee_vault<'a>( - transaction_context: &'a TransactionContext, +pub(crate) fn try_get_fee_vault<'a, 'ix_data>( + transaction_context: &'a TransactionContext<'ix_data>, invoke_context: &InvokeContext, payer_idx: u16, fee_vault_idx: u16, -) -> Result>, InstructionError> { +) -> Result>, InstructionError> { let payer_account = get_instruction_account_with_idx(transaction_context, payer_idx)?; let payer_requires_fee_vault = { - let payer = payer_account.borrow(); + let payer = payer_account.to_account_shared_data()?; payer.delegated() && !payer.confined() }; if !payer_requires_fee_vault { @@ -196,7 +195,9 @@ pub(crate) fn try_get_fee_vault<'a>( get_instruction_account_with_idx(transaction_context, fee_vault_idx)?; let is_vault_writable = get_writable_with_idx(transaction_context, fee_vault_idx)?; - if !vault_account.borrow().delegated() || !is_vault_writable { + if !vault_account.to_account_shared_data()?.delegated() + || !is_vault_writable + { ic_msg!( invoke_context, "ScheduleCommit ERR: magic fee vault must be writable and delegated" diff --git a/programs/magicblock/src/schedule_transactions/process_accept_scheduled_commits.rs b/programs/magicblock/src/schedule_transactions/process_accept_scheduled_commits.rs index 2daa0acb1..cc4cc844f 100644 --- a/programs/magicblock/src/schedule_transactions/process_accept_scheduled_commits.rs +++ b/programs/magicblock/src/schedule_transactions/process_accept_scheduled_commits.rs @@ -1,6 +1,6 @@ use std::collections::HashSet; -use solana_account::ReadableAccount; +use solana_account::{ReadableAccount, WritableAccount}; use solana_instruction::error::InstructionError; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; @@ -22,7 +22,7 @@ pub fn process_accept_scheduled_commits( const VALIDATOR_AUTHORITY_IDX: u16 = 0; const MAGIC_CONTEXT_IDX: u16 = VALIDATOR_AUTHORITY_IDX + 1; - let transaction_context = &invoke_context.transaction_context.clone(); + let transaction_context = &*invoke_context.transaction_context; // 1. Read all scheduled commits from the `MagicContext` account // We do this first so we can skip all checks in case there is nothing @@ -35,16 +35,17 @@ pub fn process_accept_scheduled_commits( transaction_context, MAGIC_CONTEXT_IDX, )?; - let mut magic_context = - bincode::deserialize::(magic_context_acc.borrow().data()) - .map_err(|err| { - ic_msg!( - invoke_context, - "Failed to deserialize MagicContext: {}", - err - ); - InstructionError::InvalidAccountData - })?; + let mut magic_context = MagicContext::deserialize( + magic_context_acc.borrow()?.data(), + ) + .map_err(|err| { + ic_msg!( + invoke_context, + "Failed to deserialize MagicContext: {}", + err + ); + InstructionError::InvalidAccountData + })?; if magic_context.scheduled_base_intents.is_empty() { ic_msg!( invoke_context, @@ -89,24 +90,8 @@ pub fn process_accept_scheduled_commits( .accept_scheduled_base_intent(scheduled_commits); // 4. Serialize and store the updated `MagicContext` account - // Zero fill account before updating data - // NOTE: this may become expensive, but is a security measure and also prevents - // accidentally interpreting old data when deserializing - magic_context_acc - .borrow_mut() - .set_data_from_slice(&MagicContext::ZERO); - - magic_context_acc - .borrow_mut() - .serialize_data(&magic_context) - .map_err(|err| { - ic_msg!( - invoke_context, - "Failed to serialize MagicContext: {}", - err - ); - InstructionError::GenericError - })?; + magic_context + .write_to(magic_context_acc.borrow_mut()?.data_as_mut_slice())?; Ok(()) } diff --git a/programs/magicblock/src/schedule_transactions/process_add_action_callback.rs b/programs/magicblock/src/schedule_transactions/process_add_action_callback.rs index 942c60c5e..c8e457545 100644 --- a/programs/magicblock/src/schedule_transactions/process_add_action_callback.rs +++ b/programs/magicblock/src/schedule_transactions/process_add_action_callback.rs @@ -2,7 +2,7 @@ use std::collections::HashSet; use magicblock_core::intent::BaseActionCallback; use magicblock_magic_program_api::args::AddActionCallbackArgs; -use solana_account::state_traits::StateMut; +use solana_account::{ReadableAccount, WritableAccount}; use solana_instruction::error::InstructionError; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; @@ -34,18 +34,19 @@ pub(crate) fn process_add_action_callback( check_magic_context_id(invoke_context, MAGIC_CONTEXT_IDX)?; - let transaction_context = &invoke_context.transaction_context.clone(); + let clock = get_clock(invoke_context)?; + let parent_program_id = get_parent_program_id(invoke_context)?; + + let transaction_context = &*invoke_context.transaction_context; let ix_ctx = transaction_context.get_current_instruction_context()?; // Assert MagicBlock program - ix_ctx - .find_index_of_program_account(transaction_context, &crate::id()) - .ok_or_else(|| { - ic_msg!( - invoke_context, - "Schedule ERR: Magic program account not found" - ); - InstructionError::UnsupportedProgramId - })?; + if ix_ctx.get_program_key()? != &crate::id() { + ic_msg!( + invoke_context, + "Schedule ERR: Magic program account not found" + ); + return Err(InstructionError::UnsupportedProgramId); + } let payer_pubkey = get_instruction_pubkey_with_idx(transaction_context, PAYER_IDX)?; @@ -78,18 +79,21 @@ pub(crate) fn process_add_action_callback( })?; // Charge User for callback - charge_delegated_payer(payer_acc, magic_fee_vault, CALLBACK_FEE_LAMPORTS)?; + charge_delegated_payer( + &payer_acc, + &magic_fee_vault, + CALLBACK_FEE_LAMPORTS, + )?; - let context_data = &mut context_acc.borrow_mut(); - let mut context = - MagicContext::deserialize(context_data).map_err(|err| { - ic_msg!( - invoke_context, - "Failed to deserialize MagicContext: {}", - err - ); - InstructionError::GenericError - })?; + let mut context = MagicContext::deserialize(context_acc.borrow()?.data()) + .map_err(|err| { + ic_msg!( + invoke_context, + "Failed to deserialize MagicContext: {}", + err + ); + InstructionError::GenericError + })?; let latest_intent = context.scheduled_base_intents.last_mut().ok_or_else(|| { @@ -138,9 +142,6 @@ pub(crate) fn process_add_action_callback( ); return Err(InstructionError::InvalidAccountData); }; - let clock = get_clock(invoke_context)?; - let parent_program_id = - get_parent_program_id(transaction_context, invoke_context)?; if Some(source_program) != parent_program_id { ic_msg!( invoke_context, @@ -169,7 +170,7 @@ pub(crate) fn process_add_action_callback( account_metas_per_program: args.accounts, }); - context_data.set_state(&context)?; + context.write_to(context_acc.borrow_mut()?.data_as_mut_slice())?; ic_msg!( invoke_context, diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs index c7e7763b8..76a6f222f 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs @@ -2,7 +2,7 @@ use std::collections::HashSet; use magicblock_core::intent::CommittedAccount; // no direct token remap helpers needed here; handled in CommittedAccount builder -use solana_account::{state_traits::StateMut, ReadableAccount}; +use solana_account::{ReadableAccount, WritableAccount}; use solana_instruction::error::InstructionError; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; @@ -47,21 +47,19 @@ pub(crate) fn process_schedule_commit( MAGIC_CONTEXT_IDX, )?; - let transaction_context = &invoke_context.transaction_context.clone(); + let transaction_context = &*invoke_context.transaction_context; let ix_ctx = transaction_context.get_current_instruction_context()?; let ix_accs_len = ix_ctx.get_number_of_instruction_accounts() as usize; const COMMITTEES_START: usize = MAGIC_CONTEXT_IDX as usize + 1; // Assert MagicBlock program - ix_ctx - .find_index_of_program_account(transaction_context, &crate::id()) - .ok_or_else(|| { - ic_msg!( - invoke_context, - "ScheduleCommit ERR: Magic program account not found" - ); - InstructionError::UnsupportedProgramId - })?; + if ix_ctx.get_program_key()? != &crate::id() { + ic_msg!( + invoke_context, + "ScheduleCommit ERR: Magic program account not found" + ); + return Err(InstructionError::UnsupportedProgramId); + } // Assert Payer is signer let payer_pubkey = @@ -96,7 +94,7 @@ pub(crate) fn process_schedule_commit( "ScheduleCommit ERR: not enough accounts to schedule commit ({}), need payer, signing program an account for each pubkey to be committed", ix_accs_len ); - return Err(InstructionError::NotEnoughAccountKeys); + return Err(InstructionError::MissingAccount); } // @@ -116,7 +114,7 @@ pub(crate) fn process_schedule_commit( transaction_context, committees_start as u16, )? - .borrow() + .borrow()? .owner() }; @@ -151,7 +149,7 @@ pub(crate) fn process_schedule_commit( let acc = get_instruction_account_with_idx(transaction_context, idx as u16)?; - if acc.borrow().confined() { + if acc.to_account_shared_data()?.confined() { ic_msg!( invoke_context, "ScheduleCommit ERR: account {} is confined and cannot be committed", @@ -161,7 +159,7 @@ pub(crate) fn process_schedule_commit( } // Prevent ephemeral accounts from being committed to base chain - if acc.borrow().ephemeral() { + if acc.to_account_shared_data()?.ephemeral() { ic_msg!( invoke_context, "ScheduleCommit ERR: account {} is ephemeral and cannot be committed to base chain", @@ -171,7 +169,7 @@ pub(crate) fn process_schedule_commit( } { - let is_delegated = acc.borrow().delegated(); + let is_delegated = acc.to_account_shared_data()?.delegated(); if opts.request_undelegation { // Must be writable and delegated to avoid double-undelegation @@ -195,7 +193,7 @@ pub(crate) fn process_schedule_commit( } // Validate committed account was scheduled by valid authority - let acc_owner = *acc.borrow().owner(); + let acc_owner = *acc.borrow()?.owner(); validate_commit_schedule_permissions( &invoke_context, &acc_owner, @@ -204,9 +202,10 @@ pub(crate) fn process_schedule_commit( &signers, )?; + let account = acc.to_account_shared_data()?; let committed = CommittedAccount::from_account_shared( *acc_pubkey, - &acc.borrow(), + &account, parent_program_id.cloned(), ); @@ -242,7 +241,7 @@ pub(crate) fn process_schedule_commit( // // We also set the undelegating flag on the account in order to detect // undelegations for which we miss updates - mark_account_as_undelegated(acc); + mark_account_as_undelegated(&acc)?; ic_msg!( invoke_context, "ScheduleCommit: Marking account {} as undelegating", @@ -254,7 +253,7 @@ pub(crate) fn process_schedule_commit( if let Some(fee_vault) = magic_fee_vault { let nonces = fetch_current_commit_nonces(&committed_accounts)?; let fee = calculate_commit_fee(&committed_accounts, &nonces)?; - charge_delegated_payer(payer_account, fee_vault, fee)?; + charge_delegated_payer(&payer_account, &fee_vault, fee)?; } else if !opts.request_undelegation { // We validate commit nonces only for plain commits. // If accounts are undelegated we don't want to fail. @@ -268,16 +267,15 @@ pub(crate) fn process_schedule_commit( transaction_context, MAGIC_CONTEXT_IDX, )?; - let context_data = &mut context_acc.borrow_mut(); - let mut context = - MagicContext::deserialize(context_data).map_err(|err| { - ic_msg!( - invoke_context, - "Failed to deserialize MagicContext: {}", - err - ); - InstructionError::GenericError - })?; + let mut context = MagicContext::deserialize(context_acc.borrow()?.data()) + .map_err(|err| { + ic_msg!( + invoke_context, + "Failed to deserialize MagicContext: {}", + err + ); + InstructionError::GenericError + })?; // Get next intent id let intent_id = context.next_intent_id(); @@ -317,7 +315,7 @@ pub(crate) fn process_schedule_commit( }; context.add_scheduled_action(scheduled_base_intent); - context_data.set_state(&context)?; + context.write_to(context_acc.borrow_mut()?.data_as_mut_slice())?; ic_msg!(invoke_context, "Scheduled commit with ID: {}", intent_id); ic_msg!( diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit_finalize.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit_finalize.rs index 19a1f224c..6afde0630 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit_finalize.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit_finalize.rs @@ -2,7 +2,7 @@ use std::collections::HashSet; use magicblock_core::intent::CommittedAccount; // no direct token remap helpers needed here; handled in CommittedAccount builder -use solana_account::{state_traits::StateMut, ReadableAccount}; +use solana_account::{ReadableAccount, WritableAccount}; use solana_instruction::error::InstructionError; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; @@ -45,21 +45,19 @@ pub(crate) fn process_schedule_commit_finalize( MAGIC_CONTEXT_IDX, )?; - let transaction_context = &invoke_context.transaction_context.clone(); + let transaction_context = &*invoke_context.transaction_context; let ix_ctx = transaction_context.get_current_instruction_context()?; let ix_accs_len = ix_ctx.get_number_of_instruction_accounts() as usize; const COMMITTEES_START: usize = MAGIC_CONTEXT_IDX as usize + 1; // Assert MagicBlock program - ix_ctx - .find_index_of_program_account(transaction_context, &crate::id()) - .ok_or_else(|| { - ic_msg!( - invoke_context, - "ScheduleCommit ERR: Magic program account not found" - ); - InstructionError::UnsupportedProgramId - })?; + if ix_ctx.get_program_key()? != &crate::id() { + ic_msg!( + invoke_context, + "ScheduleCommit ERR: Magic program account not found" + ); + return Err(InstructionError::UnsupportedProgramId); + } // Assert Payer is signer let payer_pubkey = @@ -94,7 +92,7 @@ pub(crate) fn process_schedule_commit_finalize( "ScheduleCommit ERR: not enough accounts to schedule commit ({}), need payer, signing program an account for each pubkey to be committed", ix_accs_len ); - return Err(InstructionError::NotEnoughAccountKeys); + return Err(InstructionError::MissingAccount); } // Assert Payer is signer @@ -126,7 +124,7 @@ pub(crate) fn process_schedule_commit_finalize( transaction_context, committees_start as u16, )? - .borrow() + .borrow()? .owner() }; @@ -160,7 +158,7 @@ pub(crate) fn process_schedule_commit_finalize( let acc = get_instruction_account_with_idx(transaction_context, idx as u16)?; - if acc.borrow().confined() { + if acc.borrow()?.confined() { ic_msg!( invoke_context, "ScheduleCommit ERR: account {} is confined and cannot be committed", @@ -170,7 +168,7 @@ pub(crate) fn process_schedule_commit_finalize( } { - let is_delegated = acc.borrow().delegated(); + let is_delegated = acc.borrow()?.delegated(); if opts.request_undelegation { // Must be writable and delegated to avoid double-undelegation @@ -194,7 +192,7 @@ pub(crate) fn process_schedule_commit_finalize( } // Validate committed account was scheduled by valid authority - let acc_owner = *acc.borrow().owner(); + let acc_owner = *acc.borrow()?.owner(); validate_commit_schedule_permissions( &invoke_context, &acc_owner, @@ -203,9 +201,10 @@ pub(crate) fn process_schedule_commit_finalize( &signers, )?; + let account = acc.to_account_shared_data()?; let committed = CommittedAccount::from_account_shared( *acc_pubkey, - &acc.borrow(), + &account, parent_program_id.cloned(), ); @@ -235,7 +234,7 @@ pub(crate) fn process_schedule_commit_finalize( // // We also set the undelegating flag on the account in order to detect // undelegations for which we miss updates - mark_account_as_undelegated(acc); + mark_account_as_undelegated(&acc)?; ic_msg!( invoke_context, "ScheduleCommit: Marking account {} as undelegating", @@ -247,7 +246,7 @@ pub(crate) fn process_schedule_commit_finalize( if let Some(fee_vault) = magic_fee_vault { let nonces = fetch_current_commit_nonces(&committed_accounts)?; let fee = calculate_commit_fee(&committed_accounts, &nonces)?; - charge_delegated_payer(payer_account, fee_vault, fee)?; + charge_delegated_payer(&payer_account, &fee_vault, fee)?; } else if !opts.request_undelegation { // We validate commit nonces only for plain commits. // If accounts are undelegated we don't want to fail. @@ -261,16 +260,15 @@ pub(crate) fn process_schedule_commit_finalize( transaction_context, MAGIC_CONTEXT_IDX, )?; - let context_data = &mut context_acc.borrow_mut(); - let mut context = - MagicContext::deserialize(context_data).map_err(|err| { - ic_msg!( - invoke_context, - "Failed to deserialize MagicContext: {}", - err - ); - InstructionError::GenericError - })?; + let mut context = MagicContext::deserialize(context_acc.borrow()?.data()) + .map_err(|err| { + ic_msg!( + invoke_context, + "Failed to deserialize MagicContext: {}", + err + ); + InstructionError::GenericError + })?; // Get next intent id let intent_id = context.next_intent_id(); @@ -311,7 +309,7 @@ pub(crate) fn process_schedule_commit_finalize( }; context.add_scheduled_action(scheduled_base_intent); - context_data.set_state(&context)?; + context.write_to(context_acc.borrow_mut()?.data_as_mut_slice())?; ic_msg!(invoke_context, "Scheduled commit with ID: {}", intent_id); ic_msg!( diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs index 967e1fe27..67168f3de 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs @@ -1026,7 +1026,7 @@ mod tests { ix.data.as_slice(), transaction_accounts, ix.accounts, - Err(InstructionError::NotEnoughAccountKeys), + Err(InstructionError::MissingAccount), ); } diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_intent_bundle.rs b/programs/magicblock/src/schedule_transactions/process_schedule_intent_bundle.rs index 23e3262b4..5210e36f6 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_intent_bundle.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_intent_bundle.rs @@ -1,7 +1,7 @@ use std::collections::HashSet; use magicblock_magic_program_api::args::MagicIntentBundleArgs; -use solana_account::state_traits::StateMut; +use solana_account::{ReadableAccount, WritableAccount}; use solana_instruction::error::InstructionError; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; @@ -35,62 +35,38 @@ pub(crate) fn process_schedule_intent_bundle( ) -> Result<(), InstructionError> { check_magic_context_id(invoke_context, MAGIC_CONTEXT_IDX)?; - let transaction_context = &invoke_context.transaction_context.clone(); - let ix_ctx = transaction_context.get_current_instruction_context()?; + let parent_program_id = get_parent_program_id(invoke_context)?; + let clock = get_clock(invoke_context)?; + + let (payer_pubkey, mut context) = { + let transaction_context = &*invoke_context.transaction_context; + let ix_ctx = transaction_context.get_current_instruction_context()?; - // Assert MagicBlock program - ix_ctx - .find_index_of_program_account(transaction_context, &crate::id()) - .ok_or_else(|| { + if ix_ctx.get_program_key()? != &crate::id() { ic_msg!( invoke_context, "ScheduleAction ERR: Magic program account not found" ); - InstructionError::UnsupportedProgramId - })?; - - // Assert Payer is signer - let payer_pubkey = - get_instruction_pubkey_with_idx(transaction_context, PAYER_IDX)?; - if !signers.contains(payer_pubkey) { - ic_msg!( - invoke_context, - "ScheduleCommit ERR: payer pubkey {} not in signers", - payer_pubkey - ); - return Err(InstructionError::MissingRequiredSignature); - } - let payer_account = - get_instruction_account_with_idx(transaction_context, PAYER_IDX)?; - let magic_fee_vault = try_get_fee_vault( - transaction_context, - invoke_context, - PAYER_IDX, - MAGIC_CONTEXT_IDX + 1, - )?; - - // - // Get the program_id of the parent instruction that invoked this one via CPI - // - - // We cannot easily simulate the transaction being invoked via CPI - // from the owning program during unit tests - // Instead the integration tests ensure that this works as expected - let parent_program_id = - get_parent_program_id(transaction_context, invoke_context)?; + return Err(InstructionError::UnsupportedProgramId); + } - let clock = get_clock(invoke_context)?; - - // NOTE: this is only protected by all the above checks however if the - // instruction fails for other reasons detected afterward then the commit - // stays scheduled - let context_acc = get_instruction_account_with_idx( - transaction_context, - MAGIC_CONTEXT_IDX, - )?; - let context_data = &mut context_acc.borrow_mut(); - let mut context = - MagicContext::deserialize(context_data).map_err(|err| { + let payer_pubkey = + *get_instruction_pubkey_with_idx(transaction_context, PAYER_IDX)?; + if !signers.contains(&payer_pubkey) { + ic_msg!( + invoke_context, + "ScheduleCommit ERR: payer pubkey {} not in signers", + payer_pubkey + ); + return Err(InstructionError::MissingRequiredSignature); + } + + let context_acc = get_instruction_account_with_idx( + transaction_context, + MAGIC_CONTEXT_IDX, + )?; + let context = MagicContext::deserialize(context_acc.borrow()?.data()) + .map_err(|err| { ic_msg!( invoke_context, "Failed to deserialize MagicContext: {}", @@ -99,49 +75,56 @@ pub(crate) fn process_schedule_intent_bundle( InstructionError::GenericError })?; + (payer_pubkey, context) + }; + // Get next intent id let intent_id = context.next_intent_id(); // Determine id and slot - let construction_context = ConstructionContext::new( - parent_program_id, - &signers, - transaction_context, - invoke_context, - secure, - ); + let (undelegated_pubkeys, scheduled_intent) = { + let construction_context = ConstructionContext::new( + parent_program_id, + &signers, + invoke_context, + secure, + ); - // Collect all undelegated account refs - let undelegated_accounts_ref = [ - args.commit_and_undelegate.as_ref(), - args.commit_finalize_and_undelegate.as_ref(), - ] - .into_iter() - .flatten() - .map(|el| el.committed_accounts_indices()) - .try_fold(vec![], |mut acc, indices| { - acc.extend(CommitType::extract_commit_accounts( - indices, - construction_context.transaction_context, - )?); - Ok::<_, InstructionError>(acc) - })?; - - let scheduled_intent = ScheduledIntentBundle::try_new( - args, - intent_id, - clock.slot, - payer_pubkey, - &construction_context, - )?; + // Collect all undelegated account refs. + let undelegated_accounts_ref = [ + args.commit_and_undelegate.as_ref(), + args.commit_finalize_and_undelegate.as_ref(), + ] + .into_iter() + .flatten() + .map(|el| el.committed_accounts_indices()) + .try_fold(vec![], |mut acc, indices| { + acc.extend(CommitType::extract_commit_accounts( + indices, + construction_context.transaction_context(), + )?); + Ok::<_, InstructionError>(acc) + })?; - let mut undelegated_pubkeys = vec![]; - // Change owner to dlp and set undelegating flag - // Once account is undelegated we need to make it immutable in our validator. - for (pubkey, account_ref) in undelegated_accounts_ref.iter() { - undelegated_pubkeys.push(pubkey.to_string()); - mark_account_as_undelegated(account_ref); - } + let scheduled_intent = ScheduledIntentBundle::try_new( + args, + intent_id, + clock.slot, + &payer_pubkey, + &construction_context, + )?; + + let mut undelegated_pubkeys = + Vec::with_capacity(undelegated_accounts_ref.len()); + // Change owner to dlp and set undelegating flag. + // Once account is undelegated we need to make it immutable in our validator. + for (pubkey, account_ref) in undelegated_accounts_ref.iter() { + undelegated_pubkeys.push(pubkey.to_string()); + mark_account_as_undelegated(account_ref)?; + } + + (undelegated_pubkeys, scheduled_intent) + }; if !undelegated_pubkeys.is_empty() { ic_msg!( invoke_context, @@ -150,11 +133,20 @@ pub(crate) fn process_schedule_intent_bundle( ); } + let transaction_context = &*invoke_context.transaction_context; + let payer_account = + get_instruction_account_with_idx(transaction_context, PAYER_IDX)?; + let magic_fee_vault = try_get_fee_vault( + transaction_context, + invoke_context, + PAYER_IDX, + MAGIC_CONTEXT_IDX + 1, + )?; if let Some(magic_fee_vault) = magic_fee_vault { let chargable_accounts = scheduled_intent.get_all_committed_accounts(); let nonces = fetch_current_commit_nonces(&chargable_accounts)?; let fee = scheduled_intent.calculate_fee(&nonces)?; - charge_delegated_payer(payer_account, magic_fee_vault, fee)?; + charge_delegated_payer(&payer_account, &magic_fee_vault, fee)?; } else if let Some(commit_accounts) = scheduled_intent.get_commit_intent_accounts() { @@ -164,7 +156,11 @@ pub(crate) fn process_schedule_intent_bundle( let action_sent_signature = scheduled_intent.sent_transaction.signatures[0]; context.add_scheduled_action(scheduled_intent); - context_data.set_state(&context)?; + let context_acc = get_instruction_account_with_idx( + transaction_context, + MAGIC_CONTEXT_IDX, + )?; + context.write_to(context_acc.borrow_mut()?.data_as_mut_slice())?; ic_msg!(invoke_context, "Scheduled commit with ID: {}", intent_id); ic_msg!( diff --git a/programs/magicblock/src/schedule_transactions/transaction_scheduler.rs b/programs/magicblock/src/schedule_transactions/transaction_scheduler.rs index 553e96316..31a6b9d0e 100644 --- a/programs/magicblock/src/schedule_transactions/transaction_scheduler.rs +++ b/programs/magicblock/src/schedule_transactions/transaction_scheduler.rs @@ -5,7 +5,9 @@ use std::{ }; use lazy_static::lazy_static; -use solana_account::{state_traits::StateMut, AccountSharedData}; +use solana_account::{ + state_traits::StateMut, AccountSharedData, ReadableAccount, +}; use solana_instruction::error::InstructionError; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; @@ -43,8 +45,8 @@ impl TransactionScheduler { action: ScheduledIntentBundle, ) -> Result<(), InstructionError> { let context_data = &mut context_account.borrow_mut(); - let mut context = - MagicContext::deserialize(context_data).map_err(|err| { + let mut context = MagicContext::deserialize(context_data.data()) + .map_err(|err| { ic_msg!( invoke_context, "Failed to deserialize MagicContext: {}", diff --git a/programs/magicblock/src/test_utils/mod.rs b/programs/magicblock/src/test_utils/mod.rs index ed24f582b..7a7eda903 100644 --- a/programs/magicblock/src/test_utils/mod.rs +++ b/programs/magicblock/src/test_utils/mod.rs @@ -77,7 +77,7 @@ pub fn process_instruction_with_logs( let mut logs = Vec::new(); let accounts = mock_process_instruction( &crate::id(), - Vec::new(), + None, instruction_data, transaction_accounts, instruction_accounts, diff --git a/programs/magicblock/src/toggle_executable_check.rs b/programs/magicblock/src/toggle_executable_check.rs deleted file mode 100644 index f8d3dc707..000000000 --- a/programs/magicblock/src/toggle_executable_check.rs +++ /dev/null @@ -1,51 +0,0 @@ -use std::collections::HashSet; - -use magicblock_magic_program_api::Pubkey; -use solana_instruction::error::InstructionError; -use solana_log_collector::ic_msg; -use solana_program_runtime::invoke_context::InvokeContext; - -use crate::{ - utils::accounts::get_instruction_pubkey_with_idx, - validator::effective_validator_authority_id, -}; - -/// Enables or disables the executable flag checks for the provided `invoke_context`. -/// NOTE: this applies globally and once removed will allow modifying executable data -/// for all transactions that follow until it is re-enabled. -pub(crate) fn process_toggle_executable_check( - signers: HashSet, - invoke_context: &mut InvokeContext, - enable: bool, -) -> Result<(), InstructionError> { - const VALIDATOR_AUTHORITY_IDX: u16 = 0; - - // Check that the validator authority (first account) is correct and signer - let provided_validator_auth = get_instruction_pubkey_with_idx( - invoke_context.transaction_context, - VALIDATOR_AUTHORITY_IDX, - )?; - let validator_auth = effective_validator_authority_id(); - if !provided_validator_auth.eq(&validator_auth) { - ic_msg!( - invoke_context, - "ToggleExecutableCheck: invalid validator authority {}, should be {}", - provided_validator_auth, - validator_auth - ); - return Err(InstructionError::InvalidArgument); - } - if !signers.contains(&validator_auth) { - ic_msg!( - invoke_context, - "ToggleExecutableCheck: validator authority pubkey {} not in signers", - validator_auth - ); - return Err(InstructionError::MissingRequiredSignature); - } - - invoke_context - .transaction_context - .set_remove_accounts_executable_flag_checks(!enable); - Ok(()) -} diff --git a/programs/magicblock/src/utils/account_actions.rs b/programs/magicblock/src/utils/account_actions.rs index 40f9ef2d6..873b927d3 100644 --- a/programs/magicblock/src/utils/account_actions.rs +++ b/programs/magicblock/src/utils/account_actions.rs @@ -1,37 +1,31 @@ -use std::cell::RefCell; - -use solana_account::{AccountSharedData, ReadableAccount, WritableAccount}; +use solana_account::{ReadableAccount, WritableAccount}; use solana_instruction::error::InstructionError; -use solana_pubkey::Pubkey; use super::DELEGATION_PROGRAM_ID; - -pub(crate) fn set_account_owner( - acc: &RefCell, - pubkey: Pubkey, -) { - acc.borrow_mut().set_owner(pubkey); -} +use crate::utils::accounts::InstructionAccount; /// Sets proper account values during undelegation -pub(crate) fn mark_account_as_undelegated(acc: &RefCell) { - set_account_owner(acc, DELEGATION_PROGRAM_ID); - let mut acc = acc.borrow_mut(); +pub(crate) fn mark_account_as_undelegated( + acc: &InstructionAccount<'_, '_>, +) -> Result<(), InstructionError> { + let mut acc = acc.borrow_mut()?; + acc.set_owner(DELEGATION_PROGRAM_ID); acc.set_undelegating(true); acc.set_delegated(false); + Ok(()) } /// Transfers `fee` lamports from `payer` to `fee_vault`. /// Both accounts must be delegated; writability is enforced by the SVM. pub(crate) fn charge_delegated_payer( - payer: &RefCell, - fee_vault: &RefCell, + payer: &InstructionAccount<'_, '_>, + fee_vault: &InstructionAccount<'_, '_>, fee: u64, ) -> Result<(), InstructionError> { - if !payer.borrow().delegated() { + if !payer.borrow()?.delegated() { return Err(InstructionError::IllegalOwner); } - if !fee_vault.borrow().delegated() { + if !fee_vault.borrow()?.delegated() { return Err(InstructionError::IllegalOwner); } if fee == 0 { @@ -39,18 +33,18 @@ pub(crate) fn charge_delegated_payer( } let new_payer_lamports = payer - .borrow() + .borrow()? .lamports() .checked_sub(fee) .ok_or(InstructionError::InsufficientFunds)?; - payer.borrow_mut().set_lamports(new_payer_lamports); + payer.borrow_mut()?.set_lamports(new_payer_lamports); let new_vault_lamports = fee_vault - .borrow() + .borrow()? .lamports() .checked_add(fee) .ok_or(InstructionError::ArithmeticOverflow)?; - fee_vault.borrow_mut().set_lamports(new_vault_lamports); + fee_vault.borrow_mut()?.set_lamports(new_vault_lamports); Ok(()) } diff --git a/programs/magicblock/src/utils/accounts.rs b/programs/magicblock/src/utils/accounts.rs index a521477dc..d91126bd8 100644 --- a/programs/magicblock/src/utils/accounts.rs +++ b/programs/magicblock/src/utils/accounts.rs @@ -1,5 +1,4 @@ #![allow(unused)] // most of these utilities will come in useful later -use std::cell::RefCell; use magicblock_magic_program_api::args::ShortAccountMeta; use solana_account::{ @@ -10,46 +9,63 @@ use solana_instruction::{error::InstructionError, AccountMeta}; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; use solana_pubkey::Pubkey; -use solana_transaction_context::TransactionContext; +use solana_transaction_context::{ + transaction_accounts::{AccountRef, AccountRefMut}, + TransactionContext, +}; -pub(crate) fn find_tx_index_of_instruction_account( - invoke_context: &InvokeContext, - transaction_context: &TransactionContext, - not_found_msg: &str, - pubkey: &Pubkey, -) -> Result { - let ix_ctx = transaction_context.get_current_instruction_context()?; - let idx = { - let idx = ix_ctx - .find_index_of_instruction_account(transaction_context, pubkey) - .ok_or_else(|| { - ic_msg!(invoke_context, "{}: {}", not_found_msg, pubkey); - InstructionError::MissingAccount - })?; - ix_ctx.get_index_of_instruction_account_in_transaction(idx) - }?; - Ok(idx) +pub(crate) struct InstructionAccount<'a, 'ix_data> { + transaction_context: &'a TransactionContext<'ix_data>, + instruction_idx: u16, + tx_idx: u16, +} + +impl<'a, 'ix_data> InstructionAccount<'a, 'ix_data> { + pub(crate) fn to_account_shared_data( + &self, + ) -> Result { + Ok(self.borrow()?.to_account_shared_data()) + } + + pub(crate) fn borrow(&self) -> Result, InstructionError> { + self.transaction_context + .accounts() + .try_borrow(self.tx_idx) + .map_err(|_| InstructionError::AccountBorrowFailed) + } + + pub(crate) fn borrow_mut( + &self, + ) -> Result, InstructionError> { + self.transaction_context + .accounts() + .try_borrow_mut(self.tx_idx) + .map_err(|_| InstructionError::AccountBorrowFailed) + } } -pub(crate) fn find_instruction_account<'a>( +pub(crate) fn find_instruction_account<'a, 'ix_data>( invoke_context: &'a InvokeContext, - transaction_context: &'a TransactionContext, + transaction_context: &'a TransactionContext<'ix_data>, not_found_msg: &str, pubkey: &Pubkey, -) -> Result<&'a RefCell, InstructionError> { - let idx = find_tx_index_of_instruction_account( - invoke_context, +) -> Result, InstructionError> { + let ix_ctx = transaction_context.get_current_instruction_context()?; + let Some(tx_idx) = transaction_context.find_index_of_account(pubkey) else { + ic_msg!(invoke_context, "{}: {}", not_found_msg, pubkey); + return Err(InstructionError::MissingAccount); + }; + let instruction_idx = ix_ctx.get_index_of_account_in_instruction(tx_idx)?; + Ok(InstructionAccount { transaction_context, - not_found_msg, - pubkey, - )?; - let acc = transaction_context.get_account_at_index(idx)?; - Ok(acc) + instruction_idx, + tx_idx, + }) } pub(crate) fn find_instruction_account_owner<'a>( invoke_context: &'a InvokeContext, - transaction_context: &'a TransactionContext, + transaction_context: &'a TransactionContext<'_>, not_found_msg: &str, pubkey: &Pubkey, ) -> Result { @@ -59,42 +75,47 @@ pub(crate) fn find_instruction_account_owner<'a>( not_found_msg, pubkey, )?; - Ok(*acc.borrow().owner()) + Ok(*acc.to_account_shared_data()?.owner()) } -pub(crate) fn get_instruction_account_with_idx( - transaction_context: &TransactionContext, +pub(crate) fn get_instruction_account_with_idx<'a, 'ix_data>( + transaction_context: &'a TransactionContext<'ix_data>, idx: u16, -) -> Result<&RefCell, InstructionError> { +) -> Result, InstructionError> { let ix_ctx = transaction_context.get_current_instruction_context()?; let tx_idx = ix_ctx.get_index_of_instruction_account_in_transaction(idx)?; - let acc = transaction_context.get_account_at_index(tx_idx)?; - Ok(acc) + Ok(InstructionAccount { + transaction_context, + instruction_idx: idx, + tx_idx, + }) } pub(crate) fn get_instruction_pubkey_and_account_with_idx( - transaction_context: &TransactionContext, + transaction_context: &TransactionContext<'_>, idx: u16, ) -> Result<(Pubkey, Account), InstructionError> { - let acc_shared = + let account_ref = get_instruction_account_with_idx(transaction_context, idx)?; - let account = Account::from(acc_shared.borrow().clone()); - let pubkey = transaction_context.get_key_of_account_at_index(idx)?; + let account = account_ref.borrow()?; + let account = Account::from(account.to_account_shared_data()); + let pubkey = + transaction_context.get_key_of_account_at_index(account_ref.tx_idx)?; Ok((*pubkey, account)) } pub(crate) fn get_instruction_account_owner_with_idx( - transaction_context: &TransactionContext, + transaction_context: &TransactionContext<'_>, idx: u16, ) -> Result { let acc = get_instruction_account_with_idx(transaction_context, idx)?; - Ok(*acc.borrow().owner()) + Ok(*acc.to_account_shared_data()?.owner()) } -pub(crate) fn get_instruction_pubkey_with_idx( - transaction_context: &TransactionContext, +pub(crate) fn get_instruction_pubkey_with_idx<'a>( + transaction_context: &'a TransactionContext<'_>, idx: u16, -) -> Result<&Pubkey, InstructionError> { +) -> Result<&'a Pubkey, InstructionError> { let ix_ctx = transaction_context.get_current_instruction_context()?; let tx_idx = ix_ctx.get_index_of_instruction_account_in_transaction(idx)?; let pubkey = transaction_context.get_key_of_account_at_index(tx_idx)?; @@ -102,7 +123,7 @@ pub(crate) fn get_instruction_pubkey_with_idx( } pub(crate) fn get_writable_with_idx( - transaction_context: &TransactionContext, + transaction_context: &TransactionContext<'_>, idx: u16, ) -> Result { let ix_ctx = transaction_context.get_current_instruction_context()?; @@ -111,7 +132,7 @@ pub(crate) fn get_writable_with_idx( } pub(crate) fn get_instruction_account_short_meta_with_idx( - transaction_context: &TransactionContext, + transaction_context: &TransactionContext<'_>, idx: u16, ) -> Result { let ix_ctx = transaction_context.get_current_instruction_context()?; @@ -126,29 +147,29 @@ pub(crate) fn get_instruction_account_short_meta_with_idx( } pub(crate) fn debit_instruction_account_at_index( - transaction_context: &TransactionContext, + transaction_context: &TransactionContext<'_>, idx: u16, amount: u64, ) -> Result<(), InstructionError> { let account = get_instruction_account_with_idx(transaction_context, idx)?; - let current_lamports = account.borrow().lamports(); + let current_lamports = account.borrow()?.lamports(); let new_lamports = current_lamports .checked_sub(amount) .ok_or(InstructionError::InsufficientFunds)?; - account.borrow_mut().set_lamports(new_lamports); + account.borrow_mut()?.set_lamports(new_lamports); Ok(()) } pub(crate) fn credit_instruction_account_at_index( - transaction_context: &TransactionContext, + transaction_context: &TransactionContext<'_>, idx: u16, amount: u64, ) -> Result<(), InstructionError> { let account = get_instruction_account_with_idx(transaction_context, idx)?; - let current_lamports = account.borrow().lamports(); + let current_lamports = account.borrow()?.lamports(); let new_lamports = current_lamports .checked_add(amount) .ok_or(InstructionError::ArithmeticOverflow)?; - account.borrow_mut().set_lamports(new_lamports); + account.borrow_mut()?.set_lamports(new_lamports); Ok(()) } diff --git a/programs/magicblock/src/utils/instruction_context_frames.rs b/programs/magicblock/src/utils/instruction_context_frames.rs index d6b038dbf..6bd391d79 100644 --- a/programs/magicblock/src/utils/instruction_context_frames.rs +++ b/programs/magicblock/src/utils/instruction_context_frames.rs @@ -1,9 +1,7 @@ use solana_instruction::error::InstructionError; use solana_pubkey::Pubkey; -use solana_transaction_context::{InstructionContext, TransactionContext}; -// ----------------- -// InstructionFrame Trait -// ----------------- +use solana_transaction_context::TransactionContext; + pub(crate) trait InstructionFrame { /// How deeply in the stack this frame is. fn get_nesting_level(&self) -> usize; @@ -13,42 +11,34 @@ pub(crate) trait InstructionFrame { fn get_program_id(&self) -> Option<&Pubkey>; } -// ----------------- -// InstructionContextFrame -// ----------------- -pub(crate) struct InstructionContextFrame<'a> { - instruction_ctx: &'a InstructionContext, - transaction_ctx: &'a TransactionContext, +pub(crate) struct InstructionContextFrame { + nesting_level: usize, + program_id: Option, index: usize, } -impl InstructionFrame for InstructionContextFrame<'_> { +impl InstructionFrame for InstructionContextFrame { fn get_nesting_level(&self) -> usize { - // NOTE: stack_height is nesting_level + 1 (1 based) - self.instruction_ctx.get_stack_height() - 1 + self.nesting_level } + fn get_index(&self) -> usize { self.index } + fn get_program_id(&self) -> Option<&Pubkey> { - self.instruction_ctx - .get_last_program_key(self.transaction_ctx) - .ok() + self.program_id.as_ref() } } -// ----------------- -// GenericInstructionContextFrames -// ----------------- - /// Represents all frames in a transaction in the order that they would be called. -/// For top level instrucions the nesting_level is 0. +/// For top level instructions the nesting_level is 0. /// All nested instructions are invoked via CPI. /// /// This vec holds frames of multiple stacks. /// /// The frames are in depth first order, meaning sibling instructions come after -/// any child instrucions of a specific frame. +/// any child instructions of a specific frame. pub(crate) struct GenericInstructionContextFrames(Vec); impl GenericInstructionContextFrames { @@ -63,7 +53,6 @@ impl GenericInstructionContextFrames { } let current_index = current_frame.get_index(); - // Find the first frame whose nesting level is less than the current frame for frame_idx in (0..current_index).rev() { let frame = &self.0[frame_idx]; let nesting_level = frame.get_nesting_level(); @@ -94,17 +83,14 @@ impl GenericInstructionContextFrames { } } -// ----------------- -// InstructionContextFrames -// ----------------- -pub(crate) struct InstructionContextFrames<'a> { - frames: GenericInstructionContextFrames>, +pub(crate) struct InstructionContextFrames { + frames: GenericInstructionContextFrames, current_frame_idx: usize, } -impl<'a> InstructionContextFrames<'a> { +impl InstructionContextFrames { pub fn new( - frames: Vec>, + frames: Vec, current_frame_idx: usize, ) -> Self { Self { @@ -112,46 +98,50 @@ impl<'a> InstructionContextFrames<'a> { current_frame_idx, } } + pub fn find_program_id_of_parent_of_current_instruction( - &'a self, - ) -> Option<&'a Pubkey> { + &self, + ) -> Option<&Pubkey> { self.frames .find_program_id_of_parent_frame(self.current_frame()) } - fn current_frame(&self) -> &InstructionContextFrame<'a> { + fn current_frame(&self) -> &InstructionContextFrame { &self.frames.0[self.current_frame_idx] } } -impl<'a> TryFrom<&'a TransactionContext> for InstructionContextFrames<'a> { +impl TryFrom<&TransactionContext<'_>> for InstructionContextFrames { type Error = InstructionError; - fn try_from(ctx: &'a TransactionContext) -> Result { - let mut frames = vec![]; + + fn try_from(ctx: &TransactionContext<'_>) -> Result { let current_ix_ctx = ctx.get_current_instruction_context()?; - let mut current_frame_idx: Option = None; + let current_ix_idx = current_ix_ctx.get_index_in_trace(); + let mut current_frame_idx = None; + let mut frames = Vec::with_capacity(ctx.get_instruction_trace_length()); + for idx in 0..ctx.get_instruction_trace_length() { let ix_ctx = ctx.get_instruction_context_at_index_in_trace(idx)?; - let frame = InstructionContextFrame { - instruction_ctx: ix_ctx, - transaction_ctx: ctx, - index: idx, - }; - if current_ix_ctx.eq(ix_ctx) { + if current_ix_idx == idx { current_frame_idx = Some(idx); } - frames.push(frame); + let nesting_level = ix_ctx + .get_stack_height() + .checked_sub(1) + .ok_or(InstructionError::InvalidAccountData)?; + frames.push(InstructionContextFrame { + nesting_level, + program_id: ix_ctx.get_program_key().ok().copied(), + index: idx, + }); } let current_frame_idx = current_frame_idx.ok_or(InstructionError::InvalidAccountData)?; - Ok(InstructionContextFrames::new(frames, current_frame_idx)) + Ok(Self::new(frames, current_frame_idx)) } } -// ----------------- -// Tests -// ----------------- #[cfg(test)] mod tests { use super::*; @@ -284,8 +274,7 @@ mod tests { }, ]); - // Stack 1 - assert_eq!(frames.find_program_id_of_parent_frame(frames.get(0)), None); + assert_eq!(frames.find_program_id_of_parent_frame(frames.get(0)), None,); assert_eq!( frames.find_program_id_of_parent_frame(frames.get(1)), Some(program_id_uno).as_ref() @@ -294,9 +283,7 @@ mod tests { frames.find_program_id_of_parent_frame(frames.get(2)), Some(program_id_dos).as_ref() ); - - // Stack 2 - assert_eq!(frames.find_program_id_of_parent_frame(frames.get(3)), None); + assert_eq!(frames.find_program_id_of_parent_frame(frames.get(3)), None,); assert_eq!( frames.find_program_id_of_parent_frame(frames.get(4)), Some(program_id_cuatro).as_ref() @@ -305,12 +292,8 @@ mod tests { frames.find_program_id_of_parent_frame(frames.get(5)), Some(program_id_cinco).as_ref() ); - - // Stack 3 (shallow) - assert_eq!(frames.find_program_id_of_parent_frame(frames.get(6)), None); - - // Stack 4 - assert_eq!(frames.find_program_id_of_parent_frame(frames.get(7)), None); + assert_eq!(frames.find_program_id_of_parent_frame(frames.get(6)), None,); + assert_eq!(frames.find_program_id_of_parent_frame(frames.get(7)), None,); assert_eq!( frames.find_program_id_of_parent_frame(frames.get(8)), Some(program_id_ocho).as_ref() diff --git a/rust-toolchain.toml b/rust-toolchain.toml index d6d338197..9cf4a67c4 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.91.1" +channel = "1.94.1" diff --git a/storage-proto/Cargo.toml b/storage-proto/Cargo.toml index 4c507855e..1635fd2e4 100644 --- a/storage-proto/Cargo.toml +++ b/storage-proto/Cargo.toml @@ -17,7 +17,6 @@ solana-message = { workspace = true } solana-pubkey = { workspace = true } solana-signature = { workspace = true } solana-transaction = { workspace = true } -solana-transaction-context = { workspace = true } solana-transaction-error = { workspace = true } solana-transaction-status = { workspace = true } @@ -32,7 +31,7 @@ name = "solana_storage_proto" targets = ["x86_64-unknown-linux-gnu"] [build-dependencies] -tonic-build = { workspace = true } +tonic-prost-build = { workspace = true } # windows users should install the protobuf compiler manually and set the PROTOC # envar to point to the installed binary diff --git a/storage-proto/build.rs b/storage-proto/build.rs index 583a95650..03e809730 100644 --- a/storage-proto/build.rs +++ b/storage-proto/build.rs @@ -18,7 +18,7 @@ fn main() -> Result<(), std::io::Error> { protos.push(proto); } - tonic_build::configure() + tonic_prost_build::configure() .build_client(true) .build_server(false) .type_attribute( @@ -29,5 +29,5 @@ fn main() -> Result<(), std::io::Error> { "InstructionErrorType", "#[cfg_attr(test, derive(enum_iterator::Sequence))]", ) - .compile(&protos, &[proto_base_path]) + .compile_protos(&protos, &[proto_base_path]) } diff --git a/storage-proto/src/convert.rs b/storage-proto/src/convert.rs index 17c6f32f0..cdc60d272 100644 --- a/storage-proto/src/convert.rs +++ b/storage-proto/src/convert.rs @@ -18,7 +18,6 @@ use solana_message::{ use solana_pubkey::Pubkey; use solana_signature::Signature; use solana_transaction::{versioned::VersionedTransaction, Transaction}; -use solana_transaction_context::TransactionReturnData; use solana_transaction_error::TransactionError; use solana_transaction_status::{ ConfirmedBlock, EntrySummary, InnerInstruction, InnerInstructions, Reward, @@ -27,7 +26,10 @@ use solana_transaction_status::{ VersionedConfirmedBlock, VersionedTransactionWithStatusMeta, }; -use crate::{StoredExtendedRewards, StoredTransactionStatusMeta}; +use crate::{ + StoredExtendedRewards, StoredTransactionReturnData, + StoredTransactionStatusMeta, +}; pub mod generated { include!(concat!( @@ -442,6 +444,7 @@ impl From for generated::TransactionStatusMeta { loaded_addresses, return_data, compute_units_consumed, + cost_units: _, } = value; let err = match status { Ok(()) => None, @@ -484,7 +487,14 @@ impl From for generated::TransactionStatusMeta { .map(|key| >::as_ref(&key).into()) .collect(); let return_data_none = return_data.is_none(); - let return_data = return_data.map(|return_data| return_data.into()); + let return_data = + return_data.map(|return_data| generated::ReturnData { + program_id: >::as_ref( + &return_data.program_id, + ) + .into(), + data: return_data.data, + }); Self { err, @@ -589,12 +599,7 @@ impl TryFrom for TransactionStatusMeta { Self::Error::new(bincode::ErrorKind::Custom(err)) })?, }; - let return_data = if return_data_none { - None - } else { - return_data.map(|return_data| return_data.into()) - }; - Ok(Self { + let mut meta = Self { status, fee, pre_balances, @@ -605,9 +610,20 @@ impl TryFrom for TransactionStatusMeta { post_token_balances, rewards, loaded_addresses, - return_data, + return_data: None, compute_units_consumed, - }) + cost_units: None, + }; + if !return_data_none { + if let Some(return_data) = return_data { + let data = + meta.return_data.get_or_insert_with(Default::default); + data.program_id = + Pubkey::try_from(return_data.program_id).unwrap(); + data.data = return_data.data; + } + } + Ok(meta) } } @@ -710,8 +726,8 @@ impl From for MessageAddressTableLookup { } } -impl From for generated::ReturnData { - fn from(value: TransactionReturnData) -> Self { +impl From for generated::ReturnData { + fn from(value: StoredTransactionReturnData) -> Self { Self { program_id: >::as_ref(&value.program_id) .into(), @@ -720,7 +736,7 @@ impl From for generated::ReturnData { } } -impl From for TransactionReturnData { +impl From for StoredTransactionReturnData { fn from(value: generated::ReturnData) -> Self { Self { program_id: Pubkey::try_from(value.program_id).unwrap(), @@ -773,6 +789,7 @@ impl From for InnerInstruction { } } +#[allow(deprecated)] impl TryFrom for TransactionError { type Error = &'static str; @@ -833,7 +850,7 @@ impl TryFrom for TransactionError { 41 => InstructionError::ProgramFailedToCompile, 42 => InstructionError::Immutable, 43 => InstructionError::IncorrectAuthority, - 44 => InstructionError::BorshIoError(String::new()), + 44 => InstructionError::BorshIoError, 45 => InstructionError::AccountNotRentExempt, 46 => InstructionError::InvalidAccountOwner, 47 => InstructionError::ArithmeticOverflow, @@ -918,6 +935,7 @@ impl TryFrom for TransactionError { } } +#[allow(deprecated)] impl From for tx_by_addr::TransactionError { fn from(transaction_error: TransactionError) -> Self { Self { @@ -1173,7 +1191,7 @@ impl From for tx_by_addr::TransactionError { InstructionError::IncorrectAuthority => { tx_by_addr::InstructionErrorType::IncorrectAuthority } - InstructionError::BorshIoError(_) => { + InstructionError::BorshIoError => { tx_by_addr::InstructionErrorType::BorshIoError } InstructionError::AccountNotRentExempt => { @@ -1849,7 +1867,7 @@ mod test { let transaction_error = TransactionError::InstructionError( 10, - InstructionError::MissingAccount, + InstructionError::AccountBorrowFailed, ); let tx_by_addr_transaction_error: tx_by_addr::TransactionError = transaction_error.clone().into(); @@ -1891,6 +1909,17 @@ mod test { tx_by_addr_transaction_error.try_into().unwrap() ); + let transaction_error = TransactionError::InstructionError( + 10, + InstructionError::MissingAccount, + ); + let tx_by_addr_transaction_error: tx_by_addr::TransactionError = + transaction_error.clone().into(); + assert_eq!( + transaction_error, + tx_by_addr_transaction_error.try_into().unwrap() + ); + let transaction_error = TransactionError::InstructionError( 10, InstructionError::PrivilegeEscalation, @@ -2066,7 +2095,6 @@ mod test { }), }; let transaction_error: TransactionError = tx_by_addr_error - .clone() .try_into() .unwrap_or_else(|_| panic!("{error:?} conversion implemented?")); assert_eq!(tx_by_addr_error, transaction_error.into()); @@ -2084,7 +2112,6 @@ mod test { transaction_details: None, }; let transaction_error: TransactionError = tx_by_addr_error - .clone() .try_into() .unwrap_or_else(|_| panic!("{ix_error:?} conversion implemented?")); assert_eq!(tx_by_addr_error, transaction_error.into()); @@ -2101,7 +2128,7 @@ mod test { transaction_details: None, }; let transaction_error: TransactionError = - tx_by_addr_error.clone().try_into().unwrap(); + tx_by_addr_error.try_into().unwrap(); assert_eq!(tx_by_addr_error, transaction_error.into()); } } @@ -2113,7 +2140,6 @@ mod test { transaction_details: None, }; let transaction_error: TransactionError = tx_by_addr_error - .clone() .try_into() .unwrap_or_else(|_| panic!("{error:?} conversion implemented?")); assert_eq!(tx_by_addr_error, transaction_error.into()); diff --git a/storage-proto/src/lib.rs b/storage-proto/src/lib.rs index cc955ac1e..8988f49b5 100644 --- a/storage-proto/src/lib.rs +++ b/storage-proto/src/lib.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + use std::str::FromStr; use serde::{Deserialize, Serialize}; @@ -6,7 +8,6 @@ use solana_account_decoder::{ StringAmount, }; use solana_message::v0::LoadedAddresses; -use solana_transaction_context::TransactionReturnData; use solana_transaction_error::TransactionResult; use solana_transaction_status::{ InnerInstructions, Reward, RewardType, TransactionStatusMeta, @@ -185,9 +186,17 @@ pub struct StoredTransactionStatusMeta { #[serde(deserialize_with = "default_on_eof")] pub rewards: Option>, #[serde(deserialize_with = "default_on_eof")] - pub return_data: Option, + pub return_data: Option, #[serde(deserialize_with = "default_on_eof")] pub compute_units_consumed: Option, + #[serde(deserialize_with = "default_on_eof")] + pub cost_units: Option, +} + +#[derive(Default, Serialize, Deserialize)] +pub struct StoredTransactionReturnData { + pub program_id: solana_pubkey::Pubkey, + pub data: Vec, } impl From for TransactionStatusMeta { @@ -204,8 +213,9 @@ impl From for TransactionStatusMeta { rewards, return_data, compute_units_consumed, + cost_units, } = value; - Self { + let mut meta = Self { status, fee, pre_balances, @@ -222,9 +232,16 @@ impl From for TransactionStatusMeta { rewards.into_iter().map(|reward| reward.into()).collect() }), loaded_addresses: LoadedAddresses::default(), - return_data, + return_data: None, compute_units_consumed, + cost_units, + }; + if let Some(return_data) = return_data { + let data = meta.return_data.get_or_insert_with(Default::default); + data.program_id = return_data.program_id; + data.data = return_data.data; } + meta } } @@ -246,6 +263,8 @@ impl TryFrom for StoredTransactionStatusMeta { loaded_addresses, return_data, compute_units_consumed, + cost_units, + .. } = value; if !loaded_addresses.is_empty() { @@ -273,8 +292,14 @@ impl TryFrom for StoredTransactionStatusMeta { rewards: rewards.map(|rewards| { rewards.into_iter().map(|reward| reward.into()).collect() }), - return_data, + return_data: return_data.map(|return_data| { + StoredTransactionReturnData { + program_id: return_data.program_id, + data: return_data.data, + } + }), compute_units_consumed, + cost_units, }) } } diff --git a/test-integration/Cargo.lock b/test-integration/Cargo.lock index 339330152..bd479e24c 100644 --- a/test-integration/Cargo.lock +++ b/test-integration/Cargo.lock @@ -69,34 +69,208 @@ dependencies = [ "zeroize", ] +[[package]] +name = "agave-feature-set" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6200f3b8cfbe5992fde00d443f60e62a79d2d8f6a658af1ffb7c4f0baa3c7028" +dependencies = [ + "ahash 0.8.12", + "solana-epoch-schedule", + "solana-hash 3.1.0", + "solana-pubkey 3.0.0", + "solana-sha256-hasher 3.1.0", + "solana-svm-feature-set", +] + +[[package]] +name = "agave-fs" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52914a4a42e83ba41aa04c7db20eca446e441b8c50f45f7fea5f83c64655c06a" +dependencies = [ + "agave-io-uring", + "io-uring", + "libc", + "log", + "slab", + "smallvec", +] + [[package]] name = "agave-geyser-plugin-interface" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df63ffb691b27f0253e893d083126cbe98a6b1ace29108992310f323f1ac50b0" +checksum = "2d93caf9e6dd35ba4193fe778c1e52ee69433ba53b9eaeebc00c7bcd4d699081" dependencies = [ "log", "solana-clock", + "solana-hash 3.1.0", "solana-signature", "solana-transaction", "solana-transaction-status", "thiserror 2.0.18", ] +[[package]] +name = "agave-io-uring" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f413bd15f8ec5c983ee8a84586aa276ebf5278154344aefadebc2fc3d19fdc73" +dependencies = [ + "io-uring", + "libc", + "log", + "slab", + "smallvec", +] + +[[package]] +name = "agave-logger" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ab27ea965d7b0b0725a049b2c07a6b5700f37d095765718f3101824701536e4" +dependencies = [ + "env_logger", + "libc", + "log", + "signal-hook", +] + +[[package]] +name = "agave-precompiles" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0fa80ea1037091eff64931fc53b6a89f153f5a88c33035cedfa79265b985cb" +dependencies = [ + "agave-feature-set", + "bincode", + "digest 0.10.7", + "ed25519-dalek 1.0.1", + "libsecp256k1", + "openssl", + "sha3", + "solana-ed25519-program", + "solana-message", + "solana-precompile-error", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "agave-reserved-account-keys" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3998a6ec388df954d8f78eeaf73ff487b50a8bdaebd48c8573af22c7b6db72" +dependencies = [ + "agave-feature-set", + "solana-pubkey 3.0.0", + "solana-sdk-ids", +] + +[[package]] +name = "agave-snapshots" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe3356a36f262ea9fd2405c6a06953aca6f02e4d33040d3ae45e2a4d81d705ca" +dependencies = [ + "agave-fs", + "bincode", + "bzip2", + "crossbeam-channel", + "log", + "lz4", + "rand 0.8.5", + "regex", + "semver", + "solana-accounts-db", + "solana-clock", + "solana-genesis-config", + "solana-hash 3.1.0", + "solana-lattice-hash", + "solana-measure", + "solana-metrics 3.1.12", + "strum 0.24.1", + "symlink", + "tar", + "tempfile", + "thiserror 2.0.18", + "zstd", +] + +[[package]] +name = "agave-syscalls" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5212f0b24fc37d4c844ae25b563d0cf5587d092912820c40f88d4b9b301148f8" +dependencies = [ + "bincode", + "libsecp256k1", + "num-traits", + "solana-account", + "solana-account-info", + "solana-big-mod-exp", + "solana-blake3-hasher", + "solana-bn254", + "solana-clock", + "solana-cpi", + "solana-curve25519", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keccak-hasher", + "solana-loader-v3-interface", + "solana-poseidon", + "solana-program-entrypoint", + "solana-program-runtime", + "solana-pubkey 3.0.0", + "solana-sbpf", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher 3.1.0", + "solana-stable-layout", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", + "solana-svm-type-overrides", + "solana-sysvar", + "solana-sysvar-id", + "solana-transaction-context", + "thiserror 2.0.18", +] + [[package]] name = "agave-transaction-view" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aba2aec0682aa448f93db9b93df8fb331c119cb4d66fe9ba61d6b42dd3a91105" +checksum = "e9b36ce7792c4e48140ee2f9ef4eaa289fab1c383a0670588a6c7c755947608c" dependencies = [ - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-message", "solana-packet", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-short-vec", "solana-signature", "solana-svm-transaction", + "solana-transaction-context", +] + +[[package]] +name = "agave-votor-messages" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aabbb79ba0e6169080fd8d57e72c8d07d99ed78cfd6212943288e59b6c9ce568" +dependencies = [ + "agave-logger", + "serde", + "solana-bls-signatures", + "solana-clock", + "solana-hash 3.1.0", ] [[package]] @@ -169,7 +343,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", - "anstyle-parse", + "anstyle-parse 0.2.7", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse 1.0.0", "anstyle-query", "anstyle-wincon", "colorchoice", @@ -192,6 +381,15 @@ dependencies = [ "utf8parse", ] +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + [[package]] name = "anstyle-query" version = "1.1.5" @@ -218,6 +416,49 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +[[package]] +name = "anza-quinn" +version = "0.11.9-rustsec20260037" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91bfa08f6e7e4187354ff4f793b81cc08218a6a95cc48f5de7616d44452bf6e0" +dependencies = [ + "anza-quinn-proto", + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls 0.23.35", + "socket2 0.6.1", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "anza-quinn-proto" +version = "0.11.13-rustsec20260037" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00a4d8cf8d72ee56e0ee20d3b4eef4785ce1b05299c4982c6de7f251c458efe" +dependencies = [ + "bytes", + "fastbloom", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash 2.1.1", + "rustls 0.23.35", + "rustls-pki-types", + "rustls-platform-verifier", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + [[package]] name = "aquamarine" version = "0.6.0" @@ -244,9 +485,20 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" dependencies = [ - "ark-ec", - "ark-ff", - "ark-std", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", ] [[package]] @@ -255,10 +507,10 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", - "ark-poly", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", @@ -266,16 +518,37 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash 0.8.12", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + [[package]] name = "ark-ff" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest 0.10.7", "itertools 0.10.5", @@ -286,6 +559,26 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe 0.6.0", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -296,6 +589,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -309,27 +612,68 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash 0.8.12", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.2", +] + [[package]] name = "ark-serialize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "ark-serialize-derive", - "ark-std", + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", ] @@ -345,6 +689,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -355,6 +710,16 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + [[package]] name = "arrayref" version = "0.3.9" @@ -418,17 +783,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - [[package]] name = "async-compression" version = "0.4.36" @@ -448,7 +802,7 @@ version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" dependencies = [ - "event-listener 5.4.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] @@ -501,17 +855,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.5.0" @@ -534,14 +877,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.4.5", "bytes", "futures-util", "http 1.4.0", "http-body 1.0.1", "http-body-util", "itoa", - "matchit", + "matchit 0.7.3", "memchr", "mime", "percent-encoding", @@ -554,6 +897,31 @@ dependencies = [ "tower-service", ] +[[package]] +name = "axum" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" +dependencies = [ + "axum-core 0.5.6", + "bytes", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "itoa", + "matchit 0.8.4", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "sync_wrapper 1.0.2", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + [[package]] name = "axum-core" version = "0.4.5" @@ -574,6 +942,24 @@ dependencies = [ "tower-service", ] +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tower-layer", + "tower-service", +] + [[package]] name = "backtrace" version = "0.3.76" @@ -589,6 +975,12 @@ dependencies = [ "windows-link", ] +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.12.3" @@ -657,7 +1049,7 @@ dependencies = [ "bitflags 2.10.0", "cexpr", "clang-sys", - "itertools 0.12.1", + "itertools 0.13.0", "proc-macro2", "quote", "regex", @@ -744,36 +1136,41 @@ dependencies = [ ] [[package]] -name = "borsh" -version = "0.10.4" +name = "blst" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ - "borsh-derive 0.10.4", - "hashbrown 0.13.2", + "cc", + "glob", + "threadpool", + "zeroize", ] [[package]] -name = "borsh" -version = "1.6.0" +name = "blstrs" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" dependencies = [ - "borsh-derive 1.6.0", - "cfg_aliases", + "blst", + "byte-slice-cast", + "ff", + "group", + "pairing", + "rand_core 0.6.4", + "serde", + "subtle", ] [[package]] -name = "borsh-derive" -version = "0.10.4" +name = "borsh" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", + "borsh-derive", + "cfg_aliases", ] [[package]] @@ -783,34 +1180,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" dependencies = [ "once_cell", - "proc-macro-crate 3.4.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "borsh-derive-internal" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "brotli" version = "8.0.2" @@ -857,6 +1232,12 @@ dependencies = [ "serde", ] +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + [[package]] name = "bytecheck" version = "0.6.12" @@ -881,18 +1262,18 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", @@ -910,6 +1291,9 @@ name = "bytes" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +dependencies = [ + "serde", +] [[package]] name = "bzip2" @@ -1050,7 +1434,7 @@ version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ - "anstream", + "anstream 0.6.21", "anstyle", "clap_lex", "strsim", @@ -1148,35 +1532,14 @@ dependencies = [ [[package]] name = "console" -version = "0.15.11" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" dependencies = [ "encode_unicode", "libc", - "once_cell", "unicode-width", - "windows-sys 0.59.0", -] - -[[package]] -name = "console_error_panic_hook" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" -dependencies = [ - "cfg-if", - "wasm-bindgen", -] - -[[package]] -name = "console_log" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" -dependencies = [ - "log", - "web-sys", + "windows-sys 0.61.2", ] [[package]] @@ -1189,6 +1552,12 @@ dependencies = [ "sha2-const-stable", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "constant_time_eq" version = "0.3.1" @@ -1297,6 +1666,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.7" @@ -1356,7 +1737,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790" dependencies = [ "dispatch2", - "nix 0.30.1", + "nix", "windows-sys 0.61.2", ] @@ -1455,6 +1836,7 @@ dependencies = [ "once_cell", "parking_lot_core", "rayon", + "serde", ] [[package]] @@ -1463,6 +1845,16 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "der-parser" version = "8.2.0" @@ -1549,6 +1941,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -1641,13 +2034,37 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature 2.2.0", + "spki", +] + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature 1.6.4", +] + [[package]] name = "ed25519" -version = "1.5.3" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "signature", + "pkcs8", + "signature 2.2.0", ] [[package]] @@ -1657,21 +2074,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ "curve25519-dalek 3.2.0", - "ed25519", + "ed25519 1.5.3", "rand 0.7.3", "serde", "sha2 0.9.9", "zeroize", ] +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", + "rand_core 0.6.4", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + [[package]] name = "ed25519-dalek-bip32" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +checksum = "6b49a684b133c4980d7ee783936af771516011c8cd15f429dbda77245e282f03" dependencies = [ "derivation-path", - "ed25519-dalek", + "ed25519-dalek 2.2.0", "hmac 0.12.1", "sha2 0.10.9", ] @@ -1682,18 +2114,49 @@ version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" dependencies = [ - "enum-ordinalize", + "enum-ordinalize 3.1.15", "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize 4.3.2", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "either" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "encode_unicode" version = "1.0.0" @@ -1743,49 +2206,79 @@ dependencies = [ ] [[package]] -name = "env_logger" -version = "0.9.3" +name = "enum-ordinalize" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "env_filter" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f" dependencies = [ - "atty", - "humantime", "log", "regex", - "termcolor", +] + +[[package]] +name = "env_logger" +version = "0.11.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" +dependencies = [ + "anstream 1.0.0", + "anstyle", + "env_filter", + "jiff", + "log", ] [[package]] name = "ephemeral-rollups-sdk" -version = "0.8.8" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=285d8b4#285d8b432fa5e9aba270e2788ef92c3b67a9ae74" +version = "0.11.0" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=ccfc9f924dc40#ccfc9f924dc403e6ec93780e575fa655af1bebb5" dependencies = [ "base64ct", "bincode", - "borsh 1.6.0", + "borsh", "ephemeral-rollups-sdk-attribute-action", "ephemeral-rollups-sdk-attribute-commit", "ephemeral-rollups-sdk-attribute-delegate", "ephemeral-rollups-sdk-attribute-ephemeral", "ephemeral-rollups-sdk-attribute-ephemeral-accounts", "getrandom 0.2.16", - "magicblock-delegation-program-api 0.1.0", - "magicblock-magic-program-api 0.8.3", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?branch=snawaz%2Fupgrade)", + "magicblock-magic-program-api 0.9.0 (git+https://github.com/magicblock-labs/magicblock-validator.git?branch=bmuddha%2Fepic%2Fmigration-solana-v3)", "solana-account", "solana-account-info", "solana-cpi", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", + "solana-instruction", + "solana-program-error", "solana-program-memory", - "solana-pubkey 2.2.1", - "solana-system-interface", + "solana-pubkey 3.0.0", + "solana-system-interface 3.2.0", "solana-sysvar", ] [[package]] name = "ephemeral-rollups-sdk-attribute-action" -version = "0.8.8" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=285d8b4#285d8b432fa5e9aba270e2788ef92c3b67a9ae74" +version = "0.11.0" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=ccfc9f924dc40#ccfc9f924dc403e6ec93780e575fa655af1bebb5" dependencies = [ "quote", "syn 1.0.109", @@ -1793,8 +2286,8 @@ dependencies = [ [[package]] name = "ephemeral-rollups-sdk-attribute-commit" -version = "0.8.8" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=285d8b4#285d8b432fa5e9aba270e2788ef92c3b67a9ae74" +version = "0.11.0" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=ccfc9f924dc40#ccfc9f924dc403e6ec93780e575fa655af1bebb5" dependencies = [ "quote", "syn 1.0.109", @@ -1802,8 +2295,8 @@ dependencies = [ [[package]] name = "ephemeral-rollups-sdk-attribute-delegate" -version = "0.8.8" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=285d8b4#285d8b432fa5e9aba270e2788ef92c3b67a9ae74" +version = "0.11.0" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=ccfc9f924dc40#ccfc9f924dc403e6ec93780e575fa655af1bebb5" dependencies = [ "proc-macro2", "quote", @@ -1812,8 +2305,8 @@ dependencies = [ [[package]] name = "ephemeral-rollups-sdk-attribute-ephemeral" -version = "0.8.8" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=285d8b4#285d8b432fa5e9aba270e2788ef92c3b67a9ae74" +version = "0.11.0" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=ccfc9f924dc40#ccfc9f924dc403e6ec93780e575fa655af1bebb5" dependencies = [ "proc-macro2", "quote", @@ -1822,8 +2315,8 @@ dependencies = [ [[package]] name = "ephemeral-rollups-sdk-attribute-ephemeral-accounts" -version = "0.8.8" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=285d8b4#285d8b432fa5e9aba270e2788ef92c3b67a9ae74" +version = "0.11.0" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=ccfc9f924dc40#ccfc9f924dc403e6ec93780e575fa655af1bebb5" dependencies = [ "proc-macro2", "quote", @@ -1846,12 +2339,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "5.4.1" @@ -1869,7 +2356,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.1", + "event-listener", "pin-project-lite", ] @@ -1942,7 +2429,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix 1.1.2", + "rustix", "windows-sys 0.59.0", ] @@ -1952,6 +2439,17 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "fiat-crypto" version = "0.2.9" @@ -1967,7 +2465,7 @@ dependencies = [ "atomic", "pear", "serde", - "toml 0.8.23", + "toml", "uncased", "version_check", ] @@ -1990,13 +2488,22 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core 0.1.2", +] + [[package]] name = "five8" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" dependencies = [ - "five8_core", + "five8_core 1.0.0", ] [[package]] @@ -2005,7 +2512,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" dependencies = [ - "five8_core", + "five8_core 0.1.2", ] [[package]] @@ -2014,7 +2521,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" dependencies = [ - "five8_core", + "five8_core 1.0.0", ] [[package]] @@ -2023,12 +2530,24 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" +[[package]] +name = "five8_core" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "059c31d7d36c43fe39d89e55711858b4da8be7eb6dabac23c7289b1a19489406" + [[package]] name = "fixedbitset" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.1.5" @@ -2234,6 +2753,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -2253,10 +2773,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -2338,12 +2856,25 @@ dependencies = [ "spinning_top", ] +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand 0.8.5", + "rand_core 0.6.4", + "rand_xorshift", + "subtle", +] + [[package]] name = "guinea" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", - "magicblock-magic-program-api 0.8.8", + "magicblock-magic-program-api 0.9.0", "serde", "solana-program", ] @@ -2388,9 +2919,9 @@ dependencies = [ [[package]] name = "hash32" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" dependencies = [ "byteorder", ] @@ -2426,7 +2957,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "allocator-api2", - "equivalent", "foldhash 0.1.5", ] @@ -2464,8 +2994,8 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "helius-laserstream" -version = "0.1.2" -source = "git+https://github.com/magicblock-labs/laserstream-sdk?branch=v0.2.2-magicblock%2Bconn-fix#fe205cb2b85864d1821027d663813d66160285dc" +version = "0.1.5" +source = "git+https://github.com/magicblock-labs/laserstream-sdk?branch=v0.2.8%2Bconn-fix#1355272a831cd31dcc4b440fd5f60fb3dbf01e51" dependencies = [ "async-stream", "bs58", @@ -2473,33 +3003,24 @@ dependencies = [ "futures", "futures-channel", "futures-util", + "laserstream-core-client", + "laserstream-core-proto", "prost 0.12.6", "prost-types 0.12.6", "rand 0.8.5", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "sha2 0.10.9", "thiserror 1.0.69", "tokio", "tokio-stream", - "tonic", + "tonic 0.12.3", "tonic-build 0.10.2", "tracing", "tracing-subscriber", "url", "uuid", - "yellowstone-grpc-client", - "yellowstone-grpc-proto", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", ] [[package]] @@ -2550,15 +3071,6 @@ dependencies = [ "hmac 0.8.1", ] -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "http" version = "0.2.12" @@ -2703,6 +3215,22 @@ dependencies = [ "tokio-rustls 0.24.1", ] +[[package]] +name = "hyper-rustls" +version = "0.27.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2b52f86d1d4bc0d6b4e6826d960b1b333217e07d36b882dca570a5e1c48895b" +dependencies = [ + "http 1.4.0", + "hyper 1.8.1", + "hyper-util", + "rustls 0.23.35", + "tokio", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.4", +] + [[package]] name = "hyper-timeout" version = "0.5.2" @@ -2735,6 +3263,7 @@ version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", "futures-core", @@ -2742,7 +3271,9 @@ dependencies = [ "http 1.4.0", "http-body 1.0.1", "hyper 1.8.1", + "ipnet", "libc", + "percent-encoding", "pin-project-lite", "socket2 0.6.1", "tokio", @@ -2917,12 +3448,6 @@ dependencies = [ "quote", ] -[[package]] -name = "index_list" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30141a73bc8a129ac1ce472e33f45af3e2091d86b3479061b9c2f92fdbe9a28c" - [[package]] name = "indexmap" version = "1.9.3" @@ -2948,14 +3473,14 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.11" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb" dependencies = [ "console", - "number_prefix", "portable-atomic", "unicode-width", + "unit-prefix", "web-time", ] @@ -2979,32 +3504,54 @@ name = "integration-test-tools" version = "0.0.0" dependencies = [ "anyhow", - "borsh 1.6.0", + "borsh", "color-backtrace", "magicblock-config", - "magicblock-core", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "rand 0.8.5", "rayon", "serde", - "solana-pubkey 2.2.1", + "solana-commitment-config", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", + "solana-system-interface 3.2.0", "solana-transaction-status", "tempfile", - "toml 0.8.23", + "toml", "tracing", "ureq 2.12.1", "url", ] +[[package]] +name = "io-uring" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd7bddefd0a8833b88a4b68f90dae22c7450d11b354198baee3874fd811b344" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +[[package]] +name = "iri-string" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.2" @@ -3039,12 +3586,45 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jiff" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "jni" version = "0.21.1" @@ -3102,6 +3682,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2 0.10.9", + "signature 2.2.0", +] + [[package]] name = "keccak" version = "0.1.5" @@ -3117,6 +3711,48 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" +[[package]] +name = "laserstream-core-client" +version = "9.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a10e9612cbda65acb13fd482c9cc0c988ab25fb8864f2befe304d3ba7807f9f5" +dependencies = [ + "bytes", + "futures", + "laserstream-core-proto", + "thiserror 1.0.69", + "tonic 0.14.5", + "tonic-health", +] + +[[package]] +name = "laserstream-core-proto" +version = "9.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12d5ab2767a78aea87aeee99c7e62a241319a7976711e3f02f8b33844e33c03" +dependencies = [ + "anyhow", + "bincode", + "prost 0.14.3", + "prost-types 0.14.3", + "protobuf-src", + "solana-account", + "solana-account-decoder", + "solana-clock", + "solana-hash 3.1.0", + "solana-message", + "solana-pubkey 3.0.0", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-transaction-status", + "tonic 0.14.5", + "tonic-build 0.14.5", + "tonic-prost", + "tonic-prost-build", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -3317,17 +3953,23 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" dependencies = [ - "ark-bn254", - "ark-ff", + "ark-bn254 0.4.0", + "ark-ff 0.4.2", "num-bigint 0.4.6", "thiserror 1.0.69", ] [[package]] -name = "linux-raw-sys" -version = "0.4.15" +name = "light-poseidon" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "47a1ccadd0bb5a32c196da536fd72c59183de24a055f6bf0513bf845fefab862" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] [[package]] name = "linux-raw-sys" @@ -3379,6 +4021,15 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + [[package]] name = "lru" version = "0.16.2" @@ -3415,51 +4066,51 @@ dependencies = [ [[package]] name = "magic-domain-program" -version = "0.2.0" -source = "git+https://github.com/magicblock-labs/magic-domain-program.git?rev=cffcfeb#cffcfeb8290697dbc63b19ef48e6bc8cd844f10f" +version = "0.3.0" +source = "git+https://github.com/magicblock-labs/magic-domain-program.git?rev=335a22#335a22ba5aa7b8c4bc84d5053444c74c3b05cdac" dependencies = [ - "borsh 1.6.0", + "borsh", "bytemuck_derive", "solana-program", - "solana-system-interface", + "solana-system-interface 3.2.0", ] [[package]] name = "magicblock-account-cloner" -version = "0.8.8" +version = "0.9.0" dependencies = [ "async-trait", "bincode", - "lru", + "lru 0.16.2", "magicblock-accounts-db", "magicblock-chainlink", "magicblock-committor-service", "magicblock-config", "magicblock-core", "magicblock-ledger", - "magicblock-magic-program-api 0.8.8", + "magicblock-magic-program-api 0.9.0", "magicblock-program", "magicblock-rpc-client", "rand 0.9.2", "solana-account", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-loader-v3-interface 3.0.0", + "solana-hash 3.1.0", + "solana-instruction", + "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-signature", "solana-signer", "solana-sysvar", "solana-transaction", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] [[package]] name = "magicblock-accounts" -version = "0.8.8" +version = "0.9.0" dependencies = [ "async-trait", "magicblock-account-cloner", @@ -3469,11 +4120,11 @@ dependencies = [ "magicblock-core", "magicblock-metrics", "magicblock-program", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash 3.1.0", + "solana-pubkey 3.0.0", "solana-transaction", "solana-transaction-error", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util 0.7.17", "tracing", @@ -3482,7 +4133,7 @@ dependencies = [ [[package]] name = "magicblock-accounts-db" -version = "0.8.8" +version = "0.9.0" dependencies = [ "lmdb-rkv", "magicblock-config", @@ -3490,16 +4141,17 @@ dependencies = [ "parking_lot", "reflink-copy", "solana-account", - "solana-pubkey 2.2.1", - "thiserror 1.0.69", + "solana-pubkey 3.0.0", + "thiserror 2.0.18", "tracing", "twox-hash", ] [[package]] name = "magicblock-aperture" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", "agave-geyser-plugin-interface", "arc-swap", "base64 0.21.7", @@ -3524,13 +4176,10 @@ dependencies = [ "serde", "solana-account", "solana-account-decoder", - "solana-compute-budget-instruction", - "solana-feature-set", - "solana-fee", "solana-fee-structure", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client-api", "solana-signature", "solana-system-transaction", @@ -3538,7 +4187,7 @@ dependencies = [ "solana-transaction-error", "solana-transaction-status", "sonic-rs", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util 0.7.17", "tracing", @@ -3546,10 +4195,11 @@ dependencies = [ [[package]] name = "magicblock-api" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", "anyhow", - "borsh 1.6.0", + "borsh", "fd-lock", "magic-domain-program", "magicblock-account-cloner", @@ -3560,9 +4210,9 @@ dependencies = [ "magicblock-committor-service", "magicblock-config", "magicblock-core", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "magicblock-ledger", - "magicblock-magic-program-api 0.8.8", + "magicblock-magic-program-api 0.9.0", "magicblock-metrics", "magicblock-processor", "magicblock-program", @@ -3575,27 +4225,28 @@ dependencies = [ "solana-clock", "solana-commitment-config", "solana-feature-gate-interface", - "solana-feature-set", "solana-fee-calculator", - "solana-genesis-config", - "solana-hash 2.2.1", - "solana-inline-spl", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-message", "solana-native-token", "solana-program", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-rpc-client", - "solana-sha256-hasher 2.2.1", + "solana-sdk-ids", + "solana-sha256-hasher 3.1.0", "solana-signature", "solana-signer", "solana-system-program", "solana-sysvar", "solana-transaction", "solana-transaction-error", - "thiserror 1.0.69", + "spl-token-interface", + "thiserror 2.0.18", "tokio", "tokio-util 0.7.17", "tracing", @@ -3603,20 +4254,21 @@ dependencies = [ [[package]] name = "magicblock-chainlink" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", "arc-swap", "async-trait", "bincode", - "borsh 1.6.0", + "borsh", "futures-util", "helius-laserstream", - "lru", + "lru 0.16.2", "magicblock-accounts-db", "magicblock-config", "magicblock-core", - "magicblock-delegation-program-api 0.3.0", - "magicblock-magic-program-api 0.8.8", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", + "magicblock-magic-program-api 0.9.0", "magicblock-metrics", "parking_lot", "scc", @@ -3626,62 +4278,63 @@ dependencies = [ "solana-address-lookup-table-interface", "solana-clock", "solana-commitment-config", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", - "solana-loader-v3-interface 3.0.0", + "solana-loader-v3-interface", "solana-loader-v4-interface", "solana-message", "solana-program", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-pubsub-client", + "solana-rent 3.1.0", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk-ids", "solana-signature", "solana-signer", - "solana-system-interface", - "solana-sysvar", + "solana-system-interface 3.2.0", "solana-transaction", "solana-transaction-error", - "spl-token", - "spl-token-2022 7.0.0", - "thiserror 1.0.69", + "spl-token-2022-interface", + "spl-token-interface", + "thiserror 2.0.18", "tokio", "tokio-stream", "tokio-util 0.7.17", - "tonic", + "tonic 0.14.5", "tracing", "url", ] [[package]] name = "magicblock-committor-program" -version = "0.8.8" +version = "0.9.0" dependencies = [ - "borsh 1.6.0", + "borsh", "paste", "solana-account", + "solana-account-info", "solana-program", - "solana-pubkey 2.2.1", - "thiserror 1.0.69", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-system-interface 3.2.0", + "thiserror 2.0.18", ] [[package]] name = "magicblock-committor-service" -version = "0.8.8" +version = "0.9.0" dependencies = [ "async-trait", "base64 0.21.7", "bincode", - "borsh 1.6.0", - "dyn-clone", + "borsh", "futures-util", - "lru", + "lru 0.16.2", "magicblock-committor-program", "magicblock-core", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "magicblock-metrics", "magicblock-program", "magicblock-rpc-client", @@ -3692,12 +4345,12 @@ dependencies = [ "solana-address-lookup-table-interface", "solana-commitment-config", "solana-compute-budget-interface", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-message", "solana-program", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", @@ -3707,7 +4360,7 @@ dependencies = [ "solana-transaction-error", "solana-transaction-status-client-types", "static_assertions", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util 0.7.17", "tracing", @@ -3715,7 +4368,7 @@ dependencies = [ [[package]] name = "magicblock-config" -version = "0.8.8" +version = "0.9.0" dependencies = [ "clap", "derive_more", @@ -3725,33 +4378,34 @@ dependencies = [ "serde", "serde_with", "solana-keypair", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signer", - "toml 0.8.23", + "toml", "url", ] [[package]] name = "magicblock-core" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "flume", - "magicblock-magic-program-api 0.8.8", + "magicblock-magic-program-api 0.9.0", "serde", "solana-account", "solana-account-decoder", "solana-clock", - "solana-hash 2.2.1", + "solana-hash 3.1.0", + "solana-message", "solana-program", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-transaction", "solana-transaction-context", "solana-transaction-error", "solana-transaction-status-client-types", - "spl-token", - "spl-token-2022 7.0.0", + "spl-token-2022-interface", + "spl-token-interface", "tokio", "tracing", "tracing-log", @@ -3759,12 +4413,12 @@ dependencies = [ ] [[package]] -name = "magicblock-delegation-program" -version = "1.1.3" -source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=293e922#293e9222c2765c5405e2dfb4139cd71b86641d59" +name = "magicblock-delegation-program-api" +version = "0.3.0" +source = "git+https://github.com/magicblock-labs/delegation-program.git?branch=snawaz%2Fupgrade#25386a7c1d406d06b8d07a4d5b0fd37d5e74213b" dependencies = [ "bincode", - "borsh 1.6.0", + "borsh", "bytemuck", "const-crypto", "num_enum", @@ -3774,37 +4428,25 @@ dependencies = [ "pinocchio-system", "rkyv 0.7.45", "serde", - "solana-address", - "solana-curve25519", - "solana-instruction 3.2.0", + "solana-address 2.6.0", + "solana-instruction", + "solana-loader-v3-interface", "solana-program", + "solana-sdk-ids", "solana-sha256-hasher 3.1.0", + "solana-system-interface 2.0.0", "static_assertions", "strum 0.27.2", "thiserror 2.0.18", ] -[[package]] -name = "magicblock-delegation-program-api" -version = "0.1.0" -source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=293e922#293e9222c2765c5405e2dfb4139cd71b86641d59" -dependencies = [ - "bincode", - "borsh 1.6.0", - "magicblock-delegation-program", - "serde", - "solana-program", - "thiserror 2.0.18", -] - [[package]] name = "magicblock-delegation-program-api" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8447309107c033ed0b5416c485b64f281a2e49c28adee03d14899fe58301187" +source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b#25386a7c1d406d06b8d07a4d5b0fd37d5e74213b" dependencies = [ "bincode", - "borsh 1.6.0", + "borsh", "bytemuck", "const-crypto", "libsodium-rs", @@ -3815,11 +4457,14 @@ dependencies = [ "pinocchio-system", "rkyv 0.7.45", "serde", - "solana-address", - "solana-instruction 3.2.0", + "solana-address 2.6.0", + "solana-instruction", + "solana-loader-v3-interface", "solana-program", "solana-sdk", + "solana-sdk-ids", "solana-sha256-hasher 3.1.0", + "solana-system-interface 2.0.0", "static_assertions", "strum 0.27.2", "thiserror 2.0.18", @@ -3827,7 +4472,7 @@ dependencies = [ [[package]] name = "magicblock-ledger" -version = "0.8.8" +version = "0.9.0" dependencies = [ "arc-swap", "bincode", @@ -3839,27 +4484,25 @@ dependencies = [ "magicblock-metrics", "num-format", "num_cpus", - "prost 0.11.9", + "prost 0.14.3", "rocksdb", - "scc", "serde", "solana-account-decoder", "solana-clock", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keypair", - "solana-measure", + "solana-hash 3.1.0", + "solana-instruction", "solana-message", - "solana-metrics", - "solana-pubkey 2.2.1", + "solana-metrics 2.3.13", + "solana-pubkey 3.0.0", "solana-signature", "solana-signer", "solana-storage-proto", + "solana-svm-measure", "solana-transaction", "solana-transaction-context", "solana-transaction-error", "solana-transaction-status", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util 0.7.17", "tracing", @@ -3867,20 +4510,21 @@ dependencies = [ [[package]] name = "magicblock-magic-program-api" -version = "0.8.3" -source = "git+https://github.com/magicblock-labs/magicblock-validator.git?rev=b5b4de5#b5b4de5e72fe00f9716e9707ff5bc8d38e58b148" +version = "0.9.0" dependencies = [ "bincode", + "const-crypto", "serde", "solana-program", + "solana-signature", ] [[package]] name = "magicblock-magic-program-api" -version = "0.8.8" +version = "0.9.0" +source = "git+https://github.com/magicblock-labs/magicblock-validator.git?branch=bmuddha%2Fepic%2Fmigration-solana-v3#ef8ebb18879f0a3c41c11159eb5a5358dd3c89c0" dependencies = [ "bincode", - "const-crypto", "serde", "solana-program", "solana-signature", @@ -3888,7 +4532,7 @@ dependencies = [ [[package]] name = "magicblock-metrics" -version = "0.8.8" +version = "0.9.0" dependencies = [ "http-body-util", "hyper 1.8.1", @@ -3903,8 +4547,11 @@ dependencies = [ [[package]] name = "magicblock-processor" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", + "agave-precompiles", + "agave-syscalls", "bincode", "magicblock-accounts-db", "magicblock-core", @@ -3916,20 +4563,24 @@ dependencies = [ "serde", "solana-account", "solana-bpf-loader-program", + "solana-compute-budget", "solana-compute-budget-program", - "solana-feature-set", - "solana-fee", + "solana-feature-gate-interface", "solana-fee-structure", + "solana-instruction", + "solana-loader-v3-interface", "solana-loader-v4-program", + "solana-precompile-error", "solana-program", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent-collector", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=5ea30a7)", + "solana-svm", + "solana-svm-callback", "solana-svm-transaction", "solana-system-program", "solana-transaction", + "solana-transaction-context", "solana-transaction-error", "solana-transaction-status", "solana-zk-elgamal-proof-program", @@ -3940,12 +4591,12 @@ dependencies = [ [[package]] name = "magicblock-program" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "lazy_static", "magicblock-core", - "magicblock-magic-program-api 0.8.8", + "magicblock-magic-program-api 0.9.0", "num-derive", "num-traits", "parking_lot", @@ -3954,72 +4605,72 @@ dependencies = [ "solana-account-info", "solana-clock", "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", - "solana-loader-v3-interface 3.0.0", + "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-log-collector", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-seed-derivable", "solana-signature", "solana-signer", + "solana-svm-log-collector", "solana-sysvar", "solana-transaction", "solana-transaction-context", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "magicblock-rpc-client" -version = "0.8.8" +version = "0.9.0" dependencies = [ "solana-account", "solana-account-decoder-client-types", "solana-address-lookup-table-interface", "solana-clock", "solana-commitment-config", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-transaction-error", "solana-transaction-status-client-types", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] [[package]] name = "magicblock-services" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "futures-util", "magicblock-core", - "magicblock-magic-program-api 0.8.8", - "solana-instruction 2.2.1", + "magicblock-magic-program-api 0.9.0", + "solana-instruction", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-signature", "solana-signer", "solana-transaction", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] [[package]] name = "magicblock-table-mania" -version = "0.8.8" +version = "0.9.0" dependencies = [ - "ed25519-dalek", + "ed25519-dalek 1.0.1", "magicblock-metrics", "magicblock-rpc-client", "rand 0.9.2", @@ -4028,22 +4679,22 @@ dependencies = [ "solana-clock", "solana-commitment-config", "solana-compute-budget-interface", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-signer", "solana-slot-hashes", "solana-transaction", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", ] [[package]] name = "magicblock-task-scheduler" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "chrono", @@ -4053,15 +4704,15 @@ dependencies = [ "magicblock-ledger", "magicblock-program", "rusqlite", - "solana-instruction 2.2.1", + "solana-instruction", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-transaction", "solana-transaction-error", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tokio-util 0.7.17", "tracing", @@ -4069,9 +4720,9 @@ dependencies = [ [[package]] name = "magicblock-validator-admin" -version = "0.8.8" +version = "0.9.0" dependencies = [ - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "magicblock-program", "magicblock-rpc-client", "solana-commitment-config", @@ -4086,16 +4737,16 @@ dependencies = [ [[package]] name = "magicblock-version" -version = "0.8.8" +version = "0.9.0" dependencies = [ + "agave-feature-set", "git-version", "rustc_version", "semver", "serde", - "solana-feature-set", "solana-frozen-abi-macro", "solana-rpc-client-api", - "solana-sanitize 2.2.1", + "solana-sanitize 3.0.1", ] [[package]] @@ -4113,6 +4764,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "memchr" version = "2.7.6" @@ -4164,16 +4821,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -4236,9 +4883,9 @@ dependencies = [ [[package]] name = "modular-bitfield" -version = "0.11.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +checksum = "2956e537fc68236d2aa048f55704f231cc93f1c4de42fe1ecb5bd7938061fc4a" dependencies = [ "modular-bitfield-impl", "static_assertions", @@ -4246,13 +4893,13 @@ dependencies = [ [[package]] name = "modular-bitfield-impl" -version = "0.11.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" +checksum = "59b43b4fd69e3437618106f7754f34021b831a514f9e1a98ae863cabcd8d8dad" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -4307,19 +4954,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - [[package]] name = "nix" version = "0.30.1" @@ -4330,6 +4964,7 @@ dependencies = [ "cfg-if", "cfg_aliases", "libc", + "memoffset", ] [[package]] @@ -4488,7 +5123,7 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.5.2", + "hermit-abi", "libc", ] @@ -4508,18 +5143,12 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "objc2" version = "0.6.3" @@ -4603,6 +5232,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-src" +version = "300.6.0+3.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8e8cbfd3a4a8c8f089147fd7aaa33cf8c7450c4d09f8f80698a0cf093abeff4" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.111" @@ -4611,6 +5249,7 @@ checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] @@ -4634,6 +5273,15 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + [[package]] name = "parking" version = "2.2.1" @@ -4737,7 +5385,18 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", + "fixedbitset 0.4.2", + "indexmap 2.12.1", +] + +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset 0.5.7", + "hashbrown 0.15.2", "indexmap 2.12.1", ] @@ -4786,10 +5445,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06810dac15a4ef83d3dabdb4f2f22fb39c9adff669cd2781da4f716510a647c" dependencies = [ "solana-account-view", - "solana-address", + "solana-address 2.6.0", "solana-define-syscall 4.0.1", "solana-instruction-view", - "solana-program-error 3.0.0", + "solana-program-error", ] [[package]] @@ -4830,7 +5489,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24044a0815753862b558e179e78f03f7344cb755de48617a09d7d23b50883b6c" dependencies = [ "pinocchio 0.10.2", - "solana-address", + "solana-address 2.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", ] [[package]] @@ -4853,9 +5522,18 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +dependencies = [ + "portable-atomic", +] [[package]] name = "potential_utf" @@ -4911,16 +5589,6 @@ dependencies = [ "termtree", ] -[[package]] -name = "prettyplease" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" -dependencies = [ - "proc-macro2", - "syn 1.0.109", -] - [[package]] name = "prettyplease" version = "0.2.36" @@ -4931,15 +5599,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml 0.5.11", -] - [[package]] name = "proc-macro-crate" version = "3.4.0" @@ -4997,11 +5656,12 @@ name = "program-flexi-counter" version = "0.0.0" dependencies = [ "bincode", - "borsh 1.6.0", + "borsh", "ephemeral-rollups-sdk", - "magicblock-magic-program-api 0.8.8", + "magicblock-magic-program-api 0.9.0", "serde", "solana-program", + "solana-system-interface 3.2.0", ] [[package]] @@ -5012,7 +5672,7 @@ dependencies = [ "solana-program-test", "solana-sdk", "solana-sdk-ids", - "solana-system-interface", + "solana-system-interface 3.2.0", "tokio", ] @@ -5020,12 +5680,13 @@ dependencies = [ name = "program-schedulecommit" version = "0.0.0" dependencies = [ - "borsh 1.6.0", + "borsh", "ephemeral-rollups-sdk", - "magicblock-delegation-program-api 0.3.0", - "magicblock-magic-program-api 0.8.8", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", + "magicblock-magic-program-api 0.9.0", "rkyv 0.7.45", "solana-program", + "solana-system-interface 3.2.0", "static_assertions", ] @@ -5033,7 +5694,7 @@ dependencies = [ name = "program-schedulecommit-security" version = "0.0.0" dependencies = [ - "borsh 1.6.0", + "borsh", "ephemeral-rollups-sdk", "program-schedulecommit", "solana-program", @@ -5054,16 +5715,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "prost" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" -dependencies = [ - "bytes", - "prost-derive 0.11.9", -] - [[package]] name = "prost" version = "0.12.6" @@ -5081,29 +5732,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", - "prost-derive 0.13.5", ] [[package]] -name = "prost-build" -version = "0.11.9" +name = "prost" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", - "heck 0.4.1", - "itertools 0.10.5", - "lazy_static", - "log", - "multimap", - "petgraph", - "prettyplease 0.1.25", - "prost 0.11.9", - "prost-types 0.11.9", - "regex", - "syn 1.0.109", - "tempfile", - "which", + "prost-derive 0.14.3", ] [[package]] @@ -5118,8 +5756,8 @@ dependencies = [ "log", "multimap", "once_cell", - "petgraph", - "prettyplease 0.2.36", + "petgraph 0.6.5", + "prettyplease", "prost 0.12.6", "prost-types 0.12.6", "regex", @@ -5129,37 +5767,25 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ "heck 0.5.0", - "itertools 0.12.1", + "itertools 0.13.0", "log", "multimap", - "once_cell", - "petgraph", - "prettyplease 0.2.36", - "prost 0.13.5", - "prost-types 0.13.5", + "petgraph 0.8.3", + "prettyplease", + "prost 0.14.3", + "prost-types 0.14.3", + "pulldown-cmark", + "pulldown-cmark-to-cmark", "regex", "syn 2.0.117", "tempfile", ] -[[package]] -name = "prost-derive" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" -dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "prost-derive" version = "0.12.6" @@ -5175,26 +5801,17 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", - "itertools 0.12.1", + "itertools 0.13.0", "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "prost-types" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" -dependencies = [ - "prost 0.11.9", -] - [[package]] name = "prost-types" version = "0.12.6" @@ -5206,11 +5823,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ - "prost 0.13.5", + "prost 0.14.3", ] [[package]] @@ -5258,14 +5875,34 @@ dependencies = [ ] [[package]] -name = "ptr_meta_derive" -version = "0.3.1" +name = "ptr_meta_derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "pulldown-cmark" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c3a14896dfa883796f1cb410461aef38810ea05f2b2c33c5aded3649095fdad" +dependencies = [ + "bitflags 2.10.0", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" +checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "pulldown-cmark", ] [[package]] @@ -5330,7 +5967,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "fastbloom", "getrandom 0.3.4", "lru-slab", "rand 0.9.2", @@ -5338,7 +5974,6 @@ dependencies = [ "rustc-hash 2.1.1", "rustls 0.23.35", "rustls-pki-types", - "rustls-platform-verifier", "slab", "thiserror 2.0.18", "tinyvec", @@ -5362,9 +5997,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -5490,6 +6125,15 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rand_xoshiro" version = "0.6.0" @@ -5574,7 +6218,7 @@ checksum = "23bbed272e39c47a095a5242218a67412a220006842558b03fe2935e8f3d7b92" dependencies = [ "cfg-if", "libc", - "rustix 1.1.2", + "rustix", "windows", ] @@ -5638,13 +6282,12 @@ dependencies = [ "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32", - "hyper-rustls", + "hyper-rustls 0.24.2", "hyper-tls", "ipnet", "js-sys", "log", "mime", - "mime_guess", "native-tls", "once_cell", "percent-encoding", @@ -5669,19 +6312,69 @@ dependencies = [ "winreg", ] +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-rustls 0.27.8", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.35", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-rustls 0.26.4", + "tower 0.5.2", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.4", +] + [[package]] name = "reqwest-middleware" -version = "0.2.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a735987236a8e238bf0296c7e351b999c188ccc11477f311b82b55c93984216" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" dependencies = [ "anyhow", "async-trait", - "http 0.2.12", - "reqwest", + "http 1.4.0", + "reqwest 0.12.28", "serde", - "task-local-extensions", "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", ] [[package]] @@ -5821,19 +6514,6 @@ dependencies = [ "nom", ] -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - [[package]] name = "rustix" version = "1.1.2" @@ -5843,7 +6523,7 @@ dependencies = [ "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys", "windows-sys 0.61.2", ] @@ -6006,15 +6686,17 @@ name = "schedulecommit-client" version = "0.0.0" dependencies = [ "anyhow", - "borsh 1.6.0", + "borsh", "integration-test-tools", - "magicblock-core", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "program-schedulecommit", + "solana-commitment-config", + "solana-compute-budget-interface", "solana-program", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", + "solana-system-interface 3.2.0", "tracing", ] @@ -6023,12 +6705,12 @@ name = "schedulecommit-committor-service" version = "0.0.0" dependencies = [ "async-trait", - "borsh 1.6.0", + "borsh", "futures", "magicblock-committor-program", "magicblock-committor-service", "magicblock-core", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "magicblock-program", "magicblock-rpc-client", "magicblock-table-mania", @@ -6036,10 +6718,13 @@ dependencies = [ "program-schedulecommit", "rand 0.8.5", "solana-account", - "solana-pubkey 2.2.1", + "solana-commitment-config", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", + "solana-sdk-ids", + "solana-system-interface 3.2.0", "test-kit", "tokio", "tracing", @@ -6049,17 +6734,18 @@ dependencies = [ name = "schedulecommit-test-scenarios" version = "0.0.0" dependencies = [ - "borsh 1.6.0", + "borsh", "ephemeral-rollups-sdk", "integration-test-tools", "magicblock-core", - "magicblock-delegation-program-api 0.3.0", - "magicblock-magic-program-api 0.8.8", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", + "magicblock-magic-program-api 0.9.0", "magicblock-program", "program-schedulecommit", "rand 0.8.5", "schedulecommit-client", "serial_test", + "solana-commitment-config", "solana-program", "solana-rpc-client", "solana-rpc-client-api", @@ -6073,14 +6759,14 @@ name = "schedulecommit-test-security" version = "0.0.0" dependencies = [ "integration-test-tools", - "magicblock-core", - "magicblock-delegation-program-api 0.3.0", - "magicblock-magic-program-api 0.8.8", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", + "magicblock-magic-program-api 0.9.0", "program-schedulecommit", "program-schedulecommit-security", "schedulecommit-client", "solana-rpc-client-api", "solana-sdk", + "solana-system-interface 3.2.0", ] [[package]] @@ -6135,6 +6821,20 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "security-framework" version = "2.11.1" @@ -6392,6 +7092,16 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + [[package]] name = "signal-hook-registry" version = "1.4.7" @@ -6407,6 +7117,16 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + [[package]] name = "simd-adler32" version = "0.3.8" @@ -6475,56 +7195,58 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.2.1" -source = "git+https://github.com/magicblock-labs/solana-account.git?rev=3ff1b2ea#3ff1b2eaf16fd8b82dd8e625673df9798b07db22" +version = "3.4.0" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" dependencies = [ "bincode", "qualifier_attr", "serde", "serde_bytes", - "serde_derive", "solana-account-info", "solana-clock", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-sysvar", ] [[package]] name = "solana-account-decoder" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c472eebf9ec7ee72c8d25e990a2eaf6b0b783619ef84d7954c408d6442ad5e57" +checksum = "8dbde78ccf7c3e14bc5ab230da1dfadfc2dc84b860cd2ffa39d0fd3030f7df4a" dependencies = [ "Inflector", "base64 0.22.1", "bincode", "bs58", "bv", - "lazy_static", "serde", - "serde_derive", "serde_json", "solana-account", "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", "solana-clock", - "solana-config-program", + "solana-config-interface", "solana-epoch-schedule", "solana-fee-calculator", - "solana-instruction 2.2.1", + "solana-instruction", + "solana-loader-v3-interface", "solana-nonce", - "solana-program", + "solana-program-option", "solana-program-pack", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", "solana-slot-hashes", "solana-slot-history", + "solana-stake-interface", "solana-sysvar", - "spl-token", - "spl-token-2022 7.0.0", + "solana-vote-interface", + "spl-generic-token", + "spl-token-2022-interface", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.18", "zstd", @@ -6532,31 +7254,30 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3485b583fcc58b5fa121fa0b4acb90061671fb1a9769493e8b4ad586581f47" +checksum = "22302265956e8f403cb0721bef0a79137dc1a9a25c95d732d101877629510700" dependencies = [ "base64 0.22.1", "bs58", "serde", - "serde_derive", "serde_json", "solana-account", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "zstd", ] [[package]] name = "solana-account-info" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c17d606a298a205fae325489fbed88ee6dc4463c111672172327e741c8905d" +checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" dependencies = [ "bincode", - "serde", - "solana-program-error 2.2.2", + "serde_core", + "solana-address 2.6.0", + "solana-program-error", "solana-program-memory", - "solana-pubkey 2.2.1", ] [[package]] @@ -6565,32 +7286,30 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37ca34c37f92ee341b73d5ce7c8ef5bb38e9a87955b4bd343c63fa18b149215" dependencies = [ - "solana-address", - "solana-program-error 3.0.0", + "solana-address 2.6.0", + "solana-program-error", ] [[package]] name = "solana-accounts-db" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65a1a23a53cae19cb92bab2cbdd9e289e5210bb12175ce27642c94adf74b220" +checksum = "7c1b9b25dbe0ae7f7df8a578a8a99418720ddab92a0bac8ac11f4af7a91889c6" dependencies = [ + "agave-fs", "ahash 0.8.12", "bincode", "blake3", "bv", "bytemuck", "bytemuck_derive", - "bzip2", "crossbeam-channel", "dashmap", - "index_list", "indexmap 2.12.1", "itertools 0.12.1", - "lazy_static", "log", "lz4", - "memmap2 0.5.10", + "memmap2 0.9.9", "modular-bitfield", "num_cpus", "num_enum", @@ -6598,109 +7317,130 @@ dependencies = [ "rayon", "seqlock", "serde", - "serde_derive", "smallvec", + "solana-account", + "solana-address-lookup-table-interface", "solana-bucket-map", "solana-clock", - "solana-hash 2.2.1", - "solana-inline-spl", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-genesis-config", + "solana-hash 3.1.0", "solana-lattice-hash", "solana-measure", - "solana-metrics", + "solana-message", + "solana-metrics 3.1.12", "solana-nohash-hasher", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rayon-threadlimit", - "solana-sdk", + "solana-reward-info", + "solana-sha256-hasher 3.1.0", + "solana-slot-hashes", "solana-svm-transaction", + "solana-system-interface 2.0.0", + "solana-sysvar", + "solana-time-utils 3.0.0", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "spl-generic-token", "static_assertions", - "tar", "tempfile", "thiserror 2.0.18", ] [[package]] name = "solana-address" -version = "2.2.0" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" +dependencies = [ + "solana-address 2.6.0", +] + +[[package]] +name = "solana-address" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c5d02824391b072dc5cd0aaa85fb0af9784a21d23286a767994d1e8a322131" +checksum = "f1384b52c435a750cc9c538760fc7bb472fd78e65a9900a2d07312c5bb335b72" dependencies = [ - "borsh 1.6.0", + "borsh", "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "five8", + "five8 1.0.0", "five8_const 1.0.0", + "rand 0.9.2", "serde", + "serde_derive", "sha2-const-stable", + "solana-atomic-u64 3.0.1", "solana-define-syscall 5.0.0", - "solana-program-error 3.0.0", + "solana-nullable", + "solana-program-error", "solana-sanitize 3.0.1", "solana-sha256-hasher 3.1.0", - "wincode", + "wincode 0.5.1", ] [[package]] name = "solana-address-lookup-table-interface" -version = "2.2.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" +checksum = "115b4f773acc4f3f3cb986b0d335e9845c0368c82b0940410935bc11ae065578" dependencies = [ "bincode", "bytemuck", "serde", "serde_derive", "solana-clock", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey 4.2.0", "solana-sdk-ids", "solana-slot-hashes", ] [[package]] -name = "solana-address-lookup-table-program" +name = "solana-atomic-u64" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c758a82a60e5fcc93b3ee00615b0e244295aa8b2308475ea2b48f4900862a2e0" +checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" dependencies = [ - "bincode", - "bytemuck", - "log", - "num-derive", - "num-traits", - "solana-address-lookup-table-interface", - "solana-bincode", - "solana-clock", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-log-collector", - "solana-packet", - "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-system-interface", - "solana-transaction-context", - "thiserror 2.0.18", + "parking_lot", ] [[package]] name = "solana-atomic-u64" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" +checksum = "085db4906d89324cef2a30840d59eaecf3d4231c560ec7c9f6614a93c652f501" dependencies = [ "parking_lot", ] [[package]] name = "solana-banks-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420dc40674f4a4df1527277033554b1a1b84a47e780cdb7dad151426f5292e55" +checksum = "16034da9477c2ceb6bf03a04389d68f463fb9e09a7641b4517af4177976c5f59" dependencies = [ - "borsh 1.6.0", + "borsh", "futures", + "solana-account", "solana-banks-interface", - "solana-program", - "solana-sdk", + "solana-clock", + "solana-commitment-config", + "solana-hash 3.1.0", + "solana-message", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-signature", + "solana-sysvar", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", "tarpc", "thiserror 2.0.18", "tokio", @@ -6709,33 +7449,49 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f8a6b6dc15262f14df6da7332e7dc7eb5fa04c86bf4dfe69385b71c2860d19" +checksum = "aeed8b00c1b30e10cada0de485c4c7aa2805bc54587d7fbfd4c89b9a6a2b7bb5" dependencies = [ "serde", - "serde_derive", - "solana-sdk", + "solana-account", + "solana-clock", + "solana-commitment-config", + "solana-hash 3.1.0", + "solana-message", + "solana-pubkey 3.0.0", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", "tarpc", ] [[package]] name = "solana-banks-server" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea32797f631ff60b3eb3c793b0fddd104f5ffdf534bf6efcc59fbe30cd23b15" +checksum = "6d24b007191bac5046513d8b642ff554a9413a270fbf78ab416e5ecc1b9eea11" dependencies = [ + "agave-feature-set", "bincode", "crossbeam-channel", "futures", + "solana-account", "solana-banks-interface", "solana-client", - "solana-feature-set", + "solana-clock", + "solana-commitment-config", + "solana-hash 3.1.0", + "solana-message", + "solana-pubkey 3.0.0", "solana-runtime", "solana-runtime-transaction", - "solana-sdk", "solana-send-transaction-service", - "solana-svm 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-signature", + "solana-svm", + "solana-transaction", + "solana-transaction-error", "tarpc", "tokio", "tokio-serde", @@ -6743,148 +7499,147 @@ dependencies = [ [[package]] name = "solana-big-mod-exp" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" +checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" dependencies = [ "num-bigint 0.4.6", "num-traits", - "solana-define-syscall 2.2.1", + "solana-define-syscall 3.0.0", ] [[package]] name = "solana-bincode" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" +checksum = "278a1a5bad62cd9da89ac8d4b7ec444e83caa8ae96aa656dfc27684b28d49a5d" dependencies = [ "bincode", - "serde", - "solana-instruction 2.2.1", + "serde_core", + "solana-instruction-error", ] [[package]] name = "solana-blake3-hasher" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" +checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" dependencies = [ "blake3", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", - "solana-sanitize 2.2.1", + "solana-define-syscall 4.0.1", + "solana-hash 4.2.0", +] + +[[package]] +name = "solana-bls-signatures" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c75573697bbb148afa8209aa3ce228ca0754584c9a8a91e818db0f706ae4fb" +dependencies = [ + "base64 0.22.1", + "blst", + "blstrs", + "bytemuck", + "cfg_eval", + "ff", + "group", + "pairing", + "rand 0.8.5", + "serde", + "serde_json", + "serde_with", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.18", ] [[package]] name = "solana-bn254" -version = "2.2.1" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9abc69625158faaab02347370b91c0d8e0fe347bf9287239f0fbe8f5864d91da" +checksum = "62ff13a8867fcc7b0f1114764e1bf6191b4551dcaf93729ddc676cd4ec6abc9f" dependencies = [ - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", + "ark-bn254 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", "bytemuck", - "solana-define-syscall 2.2.1", + "solana-define-syscall 5.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-borsh" -version = "2.2.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" +checksum = "c04abbae16f57178a163125805637b8a076175bb5c0002fb04f4792bea901cf7" dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", + "borsh", ] [[package]] name = "solana-bpf-loader-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cbc2581d0f39cd7698e46baa06fc5e8928b323a85ed3a4fdbdfe0d7ea9fc152" +checksum = "044a6c5327755992853454ea5ec495edd987dab53a6f9029e695bf0d43ab55dc" dependencies = [ + "agave-syscalls", "bincode", - "libsecp256k1", "qualifier_attr", - "scopeguard", "solana-account", - "solana-account-info", - "solana-big-mod-exp", - "solana-bincode", - "solana-blake3-hasher", - "solana-bn254", - "solana-clock", - "solana-compute-budget", - "solana-cpi", - "solana-curve25519", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keccak-hasher", - "solana-loader-v3-interface 3.0.0", + "solana-bincode", + "solana-clock", + "solana-instruction", + "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", "solana-packet", - "solana-poseidon", - "solana-precompiles", "solana-program-entrypoint", - "solana-program-memory", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sbpf", "solana-sdk-ids", - "solana-secp256k1-recover", - "solana-sha256-hasher 2.2.1", - "solana-stable-layout", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-type-overrides", + "solana-system-interface 2.0.0", "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.18", ] [[package]] name = "solana-bucket-map" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12484b98db9e154d8189a7f632fe0766440abe4e58c5426f47157ece5b8730f3" +checksum = "86498fab926fe0989217966e6cae4d871152e94abdbaa47db5989fd94094cbca" dependencies = [ "bv", "bytemuck", "bytemuck_derive", - "log", - "memmap2 0.5.10", + "memmap2 0.9.9", "modular-bitfield", "num_enum", "rand 0.8.5", "solana-clock", "solana-measure", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "tempfile", ] [[package]] name = "solana-builtins" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab1c09b653992c685c56c611004a1c96e80e76b31a2a2ecc06c47690646b98a" +checksum = "eaf44075aa3dbe16ce0112314d0dfd2435a18ddfd96f53e5269879f4006eb60d" dependencies = [ - "solana-address-lookup-table-program", + "agave-feature-set", "solana-bpf-loader-program", "solana-compute-budget-program", - "solana-config-program", - "solana-feature-set", + "solana-hash 3.1.0", "solana-loader-v4-program", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-stake-program", "solana-system-program", "solana-vote-program", "solana-zk-elgamal-proof-program", @@ -6893,33 +7648,29 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4ee734c35b736e632aa3b1367f933d93ee7b4129dd1e20ca942205d4834054e" +checksum = "5c6cd4d41f391f427e64e03fb00fb0c93443f18464dafd71e06f996ac03a3982" dependencies = [ + "agave-feature-set", "ahash 0.8.12", - "lazy_static", "log", - "qualifier_attr", - "solana-address-lookup-table-program", "solana-bpf-loader-program", "solana-compute-budget-program", - "solana-config-program", - "solana-feature-set", "solana-loader-v4-program", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-stake-program", "solana-system-program", "solana-vote-program", ] [[package]] name = "solana-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e25b7073890561a6b7875a921572fc4a9a2c78b3e60fb8e0a7ee4911961f8bd" +checksum = "44eb63815525a855b1f6d41a6b929d51c9fe8079b844075a48c645315ba01b60" dependencies = [ + "anza-quinn", "async-trait", "bincode", "dashmap", @@ -6928,19 +7679,19 @@ dependencies = [ "indexmap 2.12.1", "indicatif", "log", - "quinn", "rayon", "solana-account", "solana-client-traits", "solana-commitment-config", "solana-connection-cache", "solana-epoch-info", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-measure", "solana-message", - "solana-pubkey 2.2.1", + "solana-net-utils", + "solana-pubkey 3.0.0", "solana-pubsub-client", "solana-quic-client", "solana-quic-definitions", @@ -6950,42 +7701,43 @@ dependencies = [ "solana-signature", "solana-signer", "solana-streamer", - "solana-thin-client", - "solana-time-utils", + "solana-time-utils 3.0.0", "solana-tpu-client", "solana-transaction", "solana-transaction-error", + "solana-transaction-status-client-types", "solana-udp-client", "thiserror 2.0.18", "tokio", + "tokio-util 0.7.17", ] [[package]] name = "solana-client-traits" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" +checksum = "08618ed587e128105510c54ae3e456b9a06d674d8640db75afe66dad65cb4e02" dependencies = [ "solana-account", "solana-commitment-config", "solana-epoch-info", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-signer", - "solana-system-interface", + "solana-system-interface 2.0.0", "solana-transaction", "solana-transaction-error", ] [[package]] name = "solana-clock" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c2177a1b9fe8326004f1151a5acd124420b737811080b1035df31349e4d892" +checksum = "95cf11109c3b6115cc510f1e31f06fdd52f504271bc24ef5f1249fbbcae5f9f3" dependencies = [ "serde", "serde_derive", @@ -6999,17 +7751,26 @@ name = "solana-cluster-type" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" +dependencies = [ + "solana-hash 2.3.0", +] + +[[package]] +name = "solana-cluster-type" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a494cf8eda7d98d9f0144b288bb409c88308d2e86f15cc1045aa77b83304718" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", + "solana-hash 4.2.0", ] [[package]] name = "solana-commitment-config" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" +checksum = "1517aa49dcfa9cb793ef90e7aac81346d62ca4a546bb1a754030a033e3972e1c" dependencies = [ "serde", "serde_derive", @@ -7017,29 +7778,29 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab40b24943ca51f1214fcf7979807640ea82a8387745f864cf3cd93d1337b01" +checksum = "55267bed68ed018f6b2fd5e2f7ae694cbcb1a9bfd98b749803e94be7b5f08774" dependencies = [ "solana-fee-structure", - "solana-program-entrypoint", + "solana-program-runtime", ] [[package]] name = "solana-compute-budget-instruction" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6ef2a514cde8dce77495aefd23671dc46f638f504765910424436bc745dc04" +checksum = "d6bf47dcc57b770cee0432899ac89cd7e85896f9e28e3d5e5542a0b8a8f5839f" dependencies = [ + "agave-feature-set", "log", "solana-borsh", "solana-builtins-default-costs", "solana-compute-budget", "solana-compute-budget-interface", - "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-packet", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-svm-transaction", "solana-transaction-error", @@ -7048,56 +7809,46 @@ dependencies = [ [[package]] name = "solana-compute-budget-interface" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5df17b195d312b66dccdde9beec6709766d8230cb4718c4c08854f780d0309" +checksum = "8292c436b269ad23cecc8b24f7da3ab07ca111661e25e00ce0e1d22771951ab9" dependencies = [ - "borsh 1.6.0", - "serde", - "serde_derive", - "solana-instruction 2.2.1", + "borsh", + "solana-instruction", "solana-sdk-ids", ] [[package]] name = "solana-compute-budget-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba922073c64647fe62f032787d34d50a8152533b5a5c85608ae1b2afb00ab63" +checksum = "bcc87532d1ca1b871204cdb103514182bd9460cea403c16f22ca49e1ba063ea1" dependencies = [ - "qualifier_attr", "solana-program-runtime", ] [[package]] -name = "solana-config-program" -version = "2.2.1" +name = "solana-config-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab5647203179631940e0659a635e5d3f514ba60f6457251f8f8fbf3830e56b0" +checksum = "63e401ae56aed512821cc7a0adaa412ff97fecd2dff4602be7b1330d2daec0c4" dependencies = [ "bincode", - "chrono", "serde", "serde_derive", "solana-account", - "solana-bincode", - "solana-instruction 2.2.1", - "solana-log-collector", - "solana-packet", - "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-short-vec", - "solana-stake-interface", - "solana-system-interface", - "solana-transaction-context", + "solana-system-interface 2.0.0", ] [[package]] name = "solana-connection-cache" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0392439ea05772166cbce3bebf7816bdcc3088967039c7ce050cea66873b1c50" +checksum = "ba5aa88d3ead799eec9580bf9c3d3ca1ae966430809fdf565a407abdc90798b6" dependencies = [ "async-trait", "bincode", @@ -7109,9 +7860,8 @@ dependencies = [ "rayon", "solana-keypair", "solana-measure", - "solana-metrics", - "solana-net-utils", - "solana-time-utils", + "solana-metrics 3.1.12", + "solana-time-utils 3.0.0", "solana-transaction-error", "thiserror 2.0.18", "tokio", @@ -7119,12 +7869,12 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a675ead1473b32a7a5735801608b35cbd8d3f5057ca8dbafdd5976146bb7e9e4" +checksum = "daa79df27ff7b933c4cb7612340d9af3b4f49b0219bec81ad6826e9352ad054f" dependencies = [ + "agave-feature-set", "ahash 0.8.12", - "lazy_static", "log", "solana-bincode", "solana-borsh", @@ -7133,61 +7883,57 @@ dependencies = [ "solana-compute-budget", "solana-compute-budget-instruction", "solana-compute-budget-interface", - "solana-feature-set", "solana-fee-structure", - "solana-metrics", + "solana-metrics 3.1.12", "solana-packet", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-runtime-transaction", "solana-sdk-ids", "solana-svm-transaction", - "solana-system-interface", + "solana-system-interface 2.0.0", "solana-transaction-error", "solana-vote-program", ] [[package]] name = "solana-cpi" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" +checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" dependencies = [ "solana-account-info", - "solana-define-syscall 2.2.1", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-define-syscall 4.0.1", + "solana-instruction", + "solana-program-error", + "solana-pubkey 4.2.0", "solana-stable-layout", ] [[package]] name = "solana-curve25519" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f213e3a853a23814dee39d730cd3a5583b7b1e6b37b2cd4d940bbe62df7acc16" +checksum = "2eb091ac9c1e4d51c3cd1893444aee607cd1b0173c4ba0b557f8960844f44a1b" dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "solana-define-syscall 2.2.1", + "solana-define-syscall 3.0.0", "subtle", "thiserror 2.0.18", ] [[package]] -name = "solana-decode-error" +name = "solana-define-syscall" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" -dependencies = [ - "num-traits", -] +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" [[package]] name = "solana-define-syscall" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf784bb2cb3e02cac9801813c30187344228d2ae952534902108f6150573a33d" +checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" [[package]] name = "solana-define-syscall" @@ -7203,9 +7949,9 @@ checksum = "03aacdd7a61e2109887a7a7f046caebafce97ddf1150f33722eeac04f9039c73" [[package]] name = "solana-derivation-path" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b" +checksum = "ff71743072690fdbdfcdc37700ae1cb77485aaad49019473a81aee099b1e0b8c" dependencies = [ "derivation-path", "qstring", @@ -7214,24 +7960,21 @@ dependencies = [ [[package]] name = "solana-ed25519-program" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +checksum = "e1419197f1c06abf760043f6d64ba9d79a03ad5a43f18c7586471937122094da" dependencies = [ "bytemuck", "bytemuck_derive", - "ed25519-dalek", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-precompile-error", + "solana-instruction", "solana-sdk-ids", ] [[package]] name = "solana-epoch-info" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" +checksum = "e093c84f6ece620a6b10cd036574b0cd51944231ab32d81f80f76d54aba833e6" dependencies = [ "serde", "serde_derive", @@ -7239,13 +7982,13 @@ dependencies = [ [[package]] name = "solana-epoch-rewards" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" +checksum = "f5e7b0ba210593ba8ddd39d6d234d81795d1671cebf3026baa10d5dc23ac42f0" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", + "solana-hash 4.2.0", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -7253,20 +7996,20 @@ dependencies = [ [[package]] name = "solana-epoch-rewards-hasher" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" +checksum = "1ee8beac9bff4db9225e57d532d169b0be5e447f1e6601a2f50f27a01bf5518f" dependencies = [ "siphasher 0.3.11", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", + "solana-address 2.6.0", + "solana-hash 4.2.0", ] [[package]] name = "solana-epoch-schedule" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" +checksum = "9ce264b7b42322325947c4136a09460bf5c73d9aa8262c9b0a2064be63ba8639" dependencies = [ "serde", "serde_derive", @@ -7275,76 +8018,72 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-epoch-stake" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "027e6d0b9e7daac5b2ac7c3f9ca1b727861121d9ef05084cf435ff736051e7c2" +dependencies = [ + "solana-define-syscall 5.0.0", + "solana-pubkey 4.2.0", +] + [[package]] name = "solana-example-mocks" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" +checksum = "978855d164845c1b0235d4b4d101cadc55373fffaf0b5b6cfa2194d25b2ed658" dependencies = [ "serde", "serde_derive", "solana-address-lookup-table-interface", "solana-clock", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keccak-hasher", "solana-message", "solana-nonce", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-interface", + "solana-system-interface 2.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-feature-gate-interface" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9c7fbf3e58b64a667c5f35e90af580538a95daea7001ff7806c0662d301bdf" +checksum = "75ca9b5cbb6f500f7fd73db5bd95640f71a83f04d6121a0e59a43b202dca2731" dependencies = [ "bincode", "serde", "serde_derive", "solana-account", "solana-account-info", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-instruction", + "solana-program-error", + "solana-pubkey 4.2.0", + "solana-rent 4.2.0", "solana-sdk-ids", - "solana-system-interface", -] - -[[package]] -name = "solana-feature-set" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e1d3b52b4a014efeaaab67f14e40af3972a4be61c523d612860db8e3145529" -dependencies = [ - "ahash 0.8.12", - "lazy_static", - "solana-epoch-schedule", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-system-interface 3.2.0", ] [[package]] name = "solana-fee" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee323b500b445d45624ad99a08b12b37c9964ac12debf2cde9ddfad9b06e0073" +checksum = "f0c7ab7f31d404a130c78c29a7a845cd599b2623fa335e5fcaef2bd7b3be83e6" dependencies = [ - "solana-feature-set", + "agave-feature-set", "solana-fee-structure", "solana-svm-transaction", ] [[package]] name = "solana-fee-calculator" -version = "2.2.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d" +checksum = "57e8add96b5741573e9f7529c4bb7719cfcfa999c3847a68cdfaef0cb6adf567" dependencies = [ "log", "serde", @@ -7353,21 +8092,19 @@ dependencies = [ [[package]] name = "solana-fee-structure" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f45f94a88efdb512805563181dfa1c85c60a21b6e6d602bf24a2ea88f9399d6e" +checksum = "5e2abdb1223eea8ec64136f39cb1ffcf257e00f915c957c35c0dd9e3f4e700b0" dependencies = [ "serde", "serde_derive", - "solana-message", - "solana-native-token", ] [[package]] name = "solana-frozen-abi-macro" -version = "2.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83f88a126213cbcb57672c5e70ddb9791eff9b480e9f39fe9285fd2abca66fa" +checksum = "5b04663357817fddb4755c6359005038c12e110ab04d1ac5048482551f95b160" dependencies = [ "proc-macro2", "quote", @@ -7376,9 +8113,9 @@ dependencies = [ [[package]] name = "solana-genesis-config" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968dabd2b92d57131473eddbd475339da530e14f54397386abf303de3a2595a2" +checksum = "749eccc960e85c9b33608450093d256006253e1cb436b8380e71777840a3f675" dependencies = [ "bincode", "chrono", @@ -7387,29 +8124,27 @@ dependencies = [ "serde_derive", "solana-account", "solana-clock", - "solana-cluster-type", + "solana-cluster-type 3.1.0", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-inflation", "solana-keypair", - "solana-logger", - "solana-native-token", "solana-poh-config", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", - "solana-sha256-hasher 2.2.1", + "solana-sha256-hasher 3.1.0", "solana-shred-version", "solana-signer", - "solana-time-utils", + "solana-time-utils 3.0.0", ] [[package]] name = "solana-hard-forks" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" +checksum = "52fd9cc610fd0782f09482527cb7b4f41ec22071303742718b7b57fc43bb236b" dependencies = [ "serde", "serde_derive", @@ -7417,87 +8152,78 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7bcb14392900fe02e4e34e90234fbf0c673d4e327888410ba99fa2ba0f4e99" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" dependencies = [ - "borsh 1.6.0", - "bs58", - "bytemuck", - "bytemuck_derive", + "five8 0.2.1", "js-sys", - "serde", - "serde_derive", - "solana-atomic-u64", + "solana-atomic-u64 2.2.1", "solana-sanitize 2.2.1", "wasm-bindgen", ] [[package]] name = "solana-hash" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8064ea1d591ec791be95245058ca40f4f5345d390c200069d0f79bbf55bfae55" - -[[package]] -name = "solana-inflation" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" dependencies = [ - "serde", - "serde_derive", + "solana-hash 4.2.0", ] [[package]] -name = "solana-inline-spl" -version = "2.2.1" +name = "solana-hash" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "951545bd7d0ab4a878cfc7375ac9f1a475cb6936626677b2ba1d25e7b9f3910b" +checksum = "8064ea1d591ec791be95245058ca40f4f5345d390c200069d0f79bbf55bfae55" dependencies = [ + "borsh", "bytemuck", - "solana-pubkey 2.2.1", + "bytemuck_derive", + "five8 1.0.0", + "serde", + "serde_derive", + "solana-atomic-u64 3.0.1", + "solana-sanitize 3.0.1", + "wincode 0.4.4", ] [[package]] -name = "solana-instruction" -version = "2.2.1" +name = "solana-inflation" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce496a475e5062ba5de97215ab39d9c358f9c9df4bb7f3a45a1f1a8bd9065ed" +checksum = "f762559c5f962727efdcb03c61f5cf6c5364645695978fb145d25c88bbacdada" dependencies = [ - "bincode", - "borsh 1.6.0", - "getrandom 0.2.16", - "js-sys", - "num-traits", "serde", "serde_derive", - "solana-define-syscall 2.2.1", - "solana-pubkey 2.2.1", - "wasm-bindgen", ] [[package]] name = "solana-instruction" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a6d22d0a6fdf345be294bb9afdcd40c296cdc095e64e7ceaa3bb3c2f608c1c" +checksum = "37ebb0ffd19263051bc3f683fcc086134b8ff23af894dcb63f7563c7137b42f1" dependencies = [ - "borsh 1.6.0", + "bincode", + "borsh", "serde", + "serde_derive", "solana-define-syscall 5.0.0", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.2.0", ] [[package]] name = "solana-instruction-error" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3d048edaaeef5a3dc8c01853e585539a74417e4c2d43a9e2c161270045b838" +checksum = "a0b188842592fdf6cb96f55263ae1bf11713ab5114401d1d5a881ed7cc41bef6" dependencies = [ "num-traits", - "solana-program-error 3.0.0", + "serde", + "serde_derive", + "solana-program-error", ] [[package]] @@ -7507,23 +8233,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60147e4d0a4620013df40bf30a86dd299203ff12fcb8b593cd51014fce0875d8" dependencies = [ "solana-account-view", - "solana-address", + "solana-address 2.6.0", "solana-define-syscall 4.0.1", - "solana-program-error 3.0.0", + "solana-program-error", ] [[package]] name = "solana-instructions-sysvar" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427f2d0d6dc0bb49f16cef5e7f975180d2e80aab9bdd3b2af68e2d029ec63f43" +checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" dependencies = [ "bitflags 2.10.0", "solana-account-info", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", + "solana-instruction", + "solana-instruction-error", + "solana-program-error", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", "solana-sdk-ids", "solana-serialize-utils", "solana-sysvar-id", @@ -7531,40 +8258,39 @@ dependencies = [ [[package]] name = "solana-keccak-hasher" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" +checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" dependencies = [ "sha3", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", - "solana-sanitize 2.2.1", + "solana-define-syscall 4.0.1", + "solana-hash 4.2.0", ] [[package]] name = "solana-keypair" -version = "2.2.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dbb7042c2e0c561afa07242b2099d55c57bd1b1da3b6476932197d84e15e3e4" +checksum = "263d614c12aa267a3278703175fd6440552ca61bc960b5a02a4482720c53438b" dependencies = [ - "bs58", - "ed25519-dalek", + "ed25519-dalek 2.2.0", "ed25519-dalek-bip32", - "rand 0.7.3", + "five8 1.0.0", + "five8_core 1.0.0", + "rand 0.9.2", + "solana-address 2.6.0", "solana-derivation-path", - "solana-pubkey 2.2.1", "solana-seed-derivable", "solana-seed-phrase", "solana-signature", "solana-signer", - "wasm-bindgen", ] [[package]] name = "solana-last-restart-slot" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" +checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" dependencies = [ "serde", "serde_derive", @@ -7575,9 +8301,9 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fff3aab7ad7578d0bd2ac32d232015e535dfe268e35d45881ab22db0ba61c1e" +checksum = "61adccfdcbb8d847813ebf2805bc51d3d05cf51af243d52712bf88e39660c965" dependencies = [ "base64 0.22.1", "blake3", @@ -7587,188 +8313,164 @@ dependencies = [ [[package]] name = "solana-loader-v2-interface" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654" -dependencies = [ - "serde", - "serde_bytes", - "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids", -] - -[[package]] -name = "solana-loader-v3-interface" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4be76cfa9afd84ca2f35ebc09f0da0f0092935ccdac0595d98447f259538c2" +checksum = "1e4a6f0ad4fd9c30679bfee2ce3ea6a449cac38049f210480b751f65676dfe82" dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-interface", ] [[package]] name = "solana-loader-v3-interface" -version = "4.0.1" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5539bcadd5c3b306045563e9d102bbaa42b3643f335ae02bc9b5260a70ad9742" +checksum = "2e0538d4dbc9022e01616f1c58f2db98ece739c5d5ed4a2ef8737a953e76a2d4" dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 4.2.0", "solana-sdk-ids", + "solana-system-interface 3.2.0", ] [[package]] name = "solana-loader-v4-interface" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +checksum = "e4c948b33ff81fa89699911b207059e493defdba9647eaf18f23abdf3674e0fb" dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-interface", + "solana-system-interface 2.0.0", ] [[package]] name = "solana-loader-v4-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b24999844b09096c79567c1298617efe084860149d875b702ef76e2faa2462" +checksum = "1e88b98ba6b408fe6fcf180784fc378d07ae63100c7dd413ff97474b6de30c5d" dependencies = [ "log", - "qualifier_attr", "solana-account", "solana-bincode", "solana-bpf-loader-program", - "solana-compute-budget", - "solana-instruction 2.2.1", - "solana-loader-v3-interface 3.0.0", + "solana-instruction", + "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-log-collector", - "solana-measure", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sbpf", "solana-sdk-ids", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-type-overrides", "solana-transaction-context", - "solana-type-overrides", -] - -[[package]] -name = "solana-log-collector" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa28cd428e0af919d2fafd31c646835622abfd7ed4dba4df68e3c00f461bc66" -dependencies = [ - "log", -] - -[[package]] -name = "solana-logger" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "593dbcb81439d37b02757e90bd9ab56364de63f378c55db92a6fbd6a2e47ab36" -dependencies = [ - "env_logger", - "lazy_static", - "log", ] [[package]] name = "solana-measure" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fced2cfeff80f0214af86bc27bc6e798465a45b70329c3b468bb75957c082" +checksum = "de496c3f0e0cee33abd4ae958a8703e04ae1011f3c3e73b641bf319a18301c01" [[package]] name = "solana-message" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "268486ba8a294ed22a4d7c1ec05f540c3dbe71cfa7c6c54b6d4d13668d895678" +checksum = "0448b1fd891c5f46491e5dc7d9986385ba3c852c340db2911dd29faa01d2b08d" dependencies = [ "bincode", "blake3", "lazy_static", "serde", "serde_derive", - "solana-bincode", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", + "solana-address 2.6.0", + "solana-hash 4.2.0", + "solana-instruction", + "solana-sanitize 3.0.1", "solana-sdk-ids", "solana-short-vec", - "solana-system-interface", "solana-transaction-error", - "wasm-bindgen", ] [[package]] name = "solana-metrics" -version = "2.2.1" +version = "2.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89db46736ae1929db9629d779485052647117f3fcc190755519853b705f6dba5" +checksum = "0375159d8460f423d39e5103dcff6e07796a5ec1850ee1fcfacfd2482a8f34b5" dependencies = [ "crossbeam-channel", "gethostname", - "lazy_static", "log", - "reqwest", - "solana-clock", - "solana-cluster-type", + "reqwest 0.12.28", + "solana-cluster-type 2.2.1", "solana-sha256-hasher 2.2.1", - "solana-time-utils", + "solana-time-utils 2.2.1", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-metrics" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c410a6dcc5e1d564bc7b6e3b361ecf9106d99535db74f27326e22f7ab7d6151" +dependencies = [ + "crossbeam-channel", + "gethostname", + "log", + "reqwest 0.12.28", + "solana-cluster-type 3.1.0", + "solana-sha256-hasher 3.1.0", + "solana-time-utils 3.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-msg" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" +checksum = "726b7cbbc6be6f1c6f29146ac824343b9415133eee8cce156452ad1db93f8008" dependencies = [ - "solana-define-syscall 2.2.1", + "solana-define-syscall 5.0.0", ] [[package]] name = "solana-native-token" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e9de00960197412e4be3902a6cd35e60817c511137aca6c34c66cd5d4017ec" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" [[package]] name = "solana-net-utils" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0752a7103c1a5bdbda04aa5abc78281232f2eda286be6edf8e44e27db0cca2a1" +checksum = "62092362c96ef693c50f00d98932eb3fca99efba0261bee18d57c71264befdb2" dependencies = [ "anyhow", "bincode", "bytes", - "crossbeam-channel", + "cfg-if", + "dashmap", "itertools 0.12.1", "log", - "nix 0.29.0", + "nix", "rand 0.8.5", "serde", - "serde_derive", - "socket2 0.5.10", + "socket2 0.6.1", "solana-serde", + "solana-svm-type-overrides", "tokio", "url", ] @@ -7781,51 +8483,60 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-nonce" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" +checksum = "cbc469152a63284ef959b80c59cda015262a021da55d3b8fe42171d89c4b64f8" dependencies = [ "serde", "serde_derive", "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-hash 4.2.0", + "solana-pubkey 4.2.0", + "solana-sha256-hasher 3.1.0", ] [[package]] name = "solana-nonce-account" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +checksum = "805fd25b29e5a1a0e6c3dd6320c9da80f275fbe4ff6e392617c303a2085c435e" dependencies = [ "solana-account", - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-nonce", "solana-sdk-ids", ] +[[package]] +name = "solana-nullable" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da028344c595c7416769ff648d206de7962571291a4cea24c38a60b6f40d53bb" +dependencies = [ + "bytemuck", +] + [[package]] name = "solana-offchain-message" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +checksum = "f6e2a1141a673f72a05cf406b99e4b2b8a457792b7c01afa07b3f00d4e2de393" dependencies = [ "num_enum", - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-packet", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", + "solana-sha256-hasher 3.1.0", "solana-signature", "solana-signer", ] [[package]] name = "solana-packet" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" +checksum = "6edf2f25743c95229ac0fdc32f8f5893ef738dbf332c669e9861d33ddb0f469d" dependencies = [ "bincode", "bitflags 2.10.0", @@ -7837,41 +8548,42 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0962d3818fc942a888f7c2d530896aeaf6f2da2187592a67bbdc8cf8a54192" +checksum = "6efdfcbe201b25d6c30a69bb27201867d3da3c945dd06b181e61d5b956280663" dependencies = [ "ahash 0.8.12", "bincode", "bv", + "bytes", "caps", "curve25519-dalek 4.1.3", "dlopen2", "fnv", - "lazy_static", "libc", "log", - "nix 0.29.0", + "nix", "rand 0.8.5", "rayon", "serde", - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-message", - "solana-metrics", + "solana-metrics 3.1.12", "solana-packet", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rayon-threadlimit", "solana-sdk-ids", "solana-short-vec", "solana-signature", - "solana-time-utils", + "solana-time-utils 3.0.0", + "solana-transaction-context", ] [[package]] name = "solana-poh-config" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +checksum = "2f1fef1f2ff2480fdbcc64bef5e3c47bec6e1647270db88b43f23e3a55f8d9cf" dependencies = [ "serde", "serde_derive", @@ -7879,160 +8591,111 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad1ea160d08dc423c35021fa3e437a5783eb256f5ab8bc3024e27db913acf42" +checksum = "a44739c6c9f717fd057f7c16fba65fdd3628d4918c61c399520e6f4fba5ad854" dependencies = [ - "ark-bn254", - "light-poseidon", - "solana-define-syscall 2.2.1", + "ark-bn254 0.4.0", + "ark-bn254 0.5.0", + "light-poseidon 0.2.0", + "light-poseidon 0.4.0", + "solana-define-syscall 3.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-precompile-error" -version = "2.2.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +checksum = "cafcd950de74c6c39d55dc8ca108bbb007799842ab370ef26cf45a34453c31e1" dependencies = [ "num-traits", - "solana-decode-error", -] - -[[package]] -name = "solana-precompiles" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a460ab805ec063802105b463ecb5eb02c3ffe469e67a967eea8a6e778e0bc06" -dependencies = [ - "lazy_static", - "solana-ed25519-program", - "solana-feature-set", - "solana-message", - "solana-precompile-error", - "solana-pubkey 2.2.1", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", ] [[package]] name = "solana-presigner" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +checksum = "0f704eaf825be3180832445b9e4983b875340696e8e7239bf2d535b0f86c14a2" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-signer", ] [[package]] name = "solana-program" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "586469467e93ceb79048f8d8e3a619bf61d05396ee7de95cb40280301a589d05" +checksum = "91b12305dd81045d705f427acd0435a2e46444b65367d7179d7bdcfc3bc5f5eb" dependencies = [ - "bincode", - "blake3", - "borsh 0.10.4", - "borsh 1.6.0", - "bs58", - "bytemuck", - "console_error_panic_hook", - "console_log", - "getrandom 0.2.16", - "lazy_static", - "log", "memoffset", - "num-bigint 0.4.6", - "num-derive", - "num-traits", - "rand 0.8.5", - "serde", - "serde_bytes", - "serde_derive", "solana-account-info", - "solana-address-lookup-table-interface", - "solana-atomic-u64", "solana-big-mod-exp", - "solana-bincode", "solana-blake3-hasher", "solana-borsh", "solana-clock", "solana-cpi", - "solana-decode-error", - "solana-define-syscall 2.2.1", + "solana-define-syscall 3.0.0", "solana-epoch-rewards", "solana-epoch-schedule", + "solana-epoch-stake", "solana-example-mocks", - "solana-feature-gate-interface", "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", + "solana-instruction-error", "solana-instructions-sysvar", "solana-keccak-hasher", "solana-last-restart-slot", - "solana-loader-v2-interface", - "solana-loader-v3-interface 3.0.0", - "solana-loader-v4-interface", - "solana-message", "solana-msg", "solana-native-token", - "solana-nonce", "solana-program-entrypoint", - "solana-program-error 2.2.2", + "solana-program-error", "solana-program-memory", "solana-program-option", "solana-program-pack", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sanitize 2.2.1", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", - "solana-sdk-macro", "solana-secp256k1-recover", "solana-serde-varint", "solana-serialize-utils", - "solana-sha256-hasher 2.2.1", + "solana-sha256-hasher 3.1.0", "solana-short-vec", "solana-slot-hashes", "solana-slot-history", "solana-stable-layout", - "solana-stake-interface", - "solana-system-interface", "solana-sysvar", "solana-sysvar-id", - "solana-vote-interface", - "thiserror 2.0.18", - "wasm-bindgen", ] [[package]] -name = "solana-program-entrypoint" -version = "2.2.1" +name = "solana-program-binaries" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473ffe73c68d93e9f2aa726ad2985fe52760052709aaab188100a42c618060ec" +checksum = "68d372660fc5c61b691279bcecb4bf92fa1a7cba3b357ef209404f425dafd394" dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "bincode", + "serde", + "solana-account", + "solana-loader-v3-interface", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sdk-ids", + "spl-generic-token", ] [[package]] -name = "solana-program-error" -version = "2.2.2" +name = "solana-program-entrypoint" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" dependencies = [ - "borsh 1.6.0", - "num-traits", - "serde", - "serde_derive", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg", - "solana-pubkey 2.2.1", + "solana-account-info", + "solana-define-syscall 4.0.1", + "solana-program-error", + "solana-pubkey 4.2.0", ] [[package]] @@ -8040,79 +8703,88 @@ name = "solana-program-error" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" +dependencies = [ + "borsh", + "serde", + "serde_derive", +] [[package]] name = "solana-program-memory" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b0268f6c89825fb634a34bd0c3b8fdaeaecfc3728be1d622a8ee6dd577b60d4" +checksum = "4068648649653c2c50546e9a7fb761791b5ab0cda054c771bb5808d3a4b9eb52" dependencies = [ - "num-traits", - "solana-define-syscall 2.2.1", + "solana-define-syscall 4.0.1", ] [[package]] name = "solana-program-option" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" +checksum = "7a88006a9b8594088cec9027ab77caaaa258a2aaa2083d3f086c44b42e50aeab" [[package]] name = "solana-program-pack" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" +checksum = "3d7701cb15b90667ae1c89ef4ac35a59c61e66ce58ddee13d729472af7f41d59" dependencies = [ - "solana-program-error 2.2.2", + "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c3d36fed5548b1a8625eb071df6031a95aa69f884e29bf244821e53c49372bc" +version = "3.1.12" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" dependencies = [ "base64 0.22.1", "bincode", - "enum-iterator", "itertools 0.12.1", "log", "percentage", "rand 0.8.5", "serde", "solana-account", + "solana-account-info", "solana-clock", - "solana-compute-budget", "solana-epoch-rewards", "solana-epoch-schedule", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-fee-structure", + "solana-hash 3.1.0", + "solana-instruction", "solana-last-restart-slot", - "solana-log-collector", - "solana-measure", - "solana-metrics", - "solana-precompiles", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-loader-v3-interface", + "solana-program-entrypoint", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sbpf", "solana-sdk-ids", "solana-slot-hashes", "solana-stable-layout", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", + "solana-svm-transaction", + "solana-svm-type-overrides", + "solana-system-interface 2.0.0", "solana-sysvar", "solana-sysvar-id", - "solana-timings", "solana-transaction-context", - "solana-type-overrides", "thiserror 2.0.18", ] [[package]] name = "solana-program-test" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6caec3df83d39b8da9fd6e80a7847d788b3b869c646fbb8776c3e989e98c0c" +checksum = "3848324dae946ff709b78cf5599fc5fa17fb1877cf5c98e8167e2e0fd9e1990f" dependencies = [ + "agave-feature-set", + "agave-logger", "assert_matches", "async-trait", "base64 0.22.1", @@ -8121,83 +8793,91 @@ dependencies = [ "crossbeam-channel", "log", "serde", + "solana-account", + "solana-account-info", "solana-accounts-db", "solana-banks-client", "solana-banks-interface", "solana-banks-server", - "solana-bpf-loader-program", + "solana-clock", + "solana-cluster-type 3.1.0", + "solana-commitment-config", "solana-compute-budget", - "solana-feature-set", - "solana-inline-spl", - "solana-instruction 2.2.1", - "solana-log-collector", - "solana-logger", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-genesis-config", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keypair", + "solana-loader-v3-interface", + "solana-message", + "solana-msg", + "solana-native-token", + "solana-poh-config", + "solana-program-binaries", + "solana-program-entrypoint", + "solana-program-error", "solana-program-runtime", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-runtime", "solana-sbpf", - "solana-sdk", "solana-sdk-ids", - "solana-svm 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-timings", + "solana-signer", + "solana-stable-layout", + "solana-stake-interface", + "solana-svm", + "solana-svm-log-collector", + "solana-svm-timings", + "solana-system-interface 2.0.0", + "solana-sysvar", + "solana-sysvar-id", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", "solana-vote-program", + "spl-generic-token", "thiserror 2.0.18", "tokio", ] [[package]] name = "solana-pubkey" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40db1ff5a0f8aea2c158d78ab5f2cf897848964251d1df42fef78efd3c85b863" +checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", - "bs58", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8_const 0.1.4", - "getrandom 0.2.16", - "js-sys", - "num-traits", "rand 0.8.5", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-decode-error", - "solana-define-syscall 2.2.1", - "solana-sanitize 2.2.1", - "solana-sha256-hasher 2.2.1", - "wasm-bindgen", + "solana-address 1.1.0", ] [[package]] name = "solana-pubkey" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b06bd918d60111ee1f97de817113e2040ca0cedb740099ee8d646233f6b906c" +checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" dependencies = [ - "solana-address", + "solana-address 2.6.0", ] [[package]] name = "solana-pubsub-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd251d37c932105a684415db44bee52e75ad818dfecbf963a605289b5aaecc5" +checksum = "1109810209e87785ec378ed7ce50c83bb4a7dc26fa6a992299534c11e0c21b9c" dependencies = [ "crossbeam-channel", "futures-util", + "http 0.2.12", "log", - "reqwest", "semver", "serde", - "serde_derive", "serde_json", "solana-account-decoder-client-types", "solana-clock", - "solana-pubkey 2.2.1", - "solana-rpc-client-api", + "solana-pubkey 3.0.0", + "solana-rpc-client-types", "solana-signature", "thiserror 2.0.18", "tokio", @@ -8209,25 +8889,24 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d072e6787b6fa9da86591bcf870823b0d6f87670df3c92628505db7a9131e44" +checksum = "d54d9e4da86cd29814dd0c6f79e071d4539030af48ff71af49db9f6f1862b9c3" dependencies = [ + "anza-quinn", + "anza-quinn-proto", "async-lock", "async-trait", "futures", "itertools 0.12.1", - "lazy_static", "log", - "quinn", - "quinn-proto", "rustls 0.23.35", "solana-connection-cache", "solana-keypair", "solana-measure", - "solana-metrics", + "solana-metrics 3.1.12", "solana-net-utils", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-quic-definitions", "solana-rpc-client-api", "solana-signer", @@ -8240,28 +8919,28 @@ dependencies = [ [[package]] name = "solana-quic-definitions" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e606feac5110eb5d8afaa43ccaeea3ec49ccec36773387930b5ba545e745aea2" +checksum = "15319accf7d3afd845817aeffa6edd8cc185f135cefbc6b985df29cfd8c09609" dependencies = [ "solana-keypair", ] [[package]] name = "solana-rayon-threadlimit" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f7b65ddd8ac75efcc31b627d4f161046312994313a4520b65a8b14202ab5d6" +checksum = "16d9e58c21eb661d6683510afcd60cc280b92bfc107944f69912aab51ace47a4" dependencies = [ - "lazy_static", + "log", "num_cpus", ] [[package]] name = "solana-rent" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" +checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" dependencies = [ "serde", "serde_derive", @@ -8271,49 +8950,19 @@ dependencies = [ ] [[package]] -name = "solana-rent-collector" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" -dependencies = [ - "serde", - "serde_derive", - "solana-account", - "solana-clock", - "solana-epoch-schedule", - "solana-genesis-config", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sdk-ids", -] - -[[package]] -name = "solana-rent-debits" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" -dependencies = [ - "solana-pubkey 2.2.1", - "solana-reward-info", -] - -[[package]] -name = "solana-reserved-account-keys" -version = "2.2.1" +name = "solana-rent" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b293f4246626c0e0a991531f08848a713ada965612e99dc510963f04d12cae7" +checksum = "f9809b081e99bc142ce803bcd7ee18306759ce3b30a96a9da3f6f41c45e50ef0" dependencies = [ - "lazy_static", - "solana-feature-set", - "solana-pubkey 2.2.1", - "solana-sdk-ids", + "solana-sdk-macro", ] [[package]] name = "solana-reward-info" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" +checksum = "82be7946105c2ee6be9f9ee7bd18a068b558389221d29efa92b906476102bfcc" dependencies = [ "serde", "serde_derive", @@ -8321,118 +8970,142 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb874b757d9d3c646f031132b20d43538309060a32d02b4aebb0f8fc2cd159a" +checksum = "e4cc64e78e25d5545c8c275c697168b331cf074983a9eff2ec67de2d8c584854" dependencies = [ "async-trait", "base64 0.22.1", "bincode", "bs58", + "futures", "indicatif", "log", - "reqwest", + "reqwest 0.12.28", "reqwest-middleware", "semver", "serde", - "serde_derive", "serde_json", "solana-account", + "solana-account-decoder", "solana-account-decoder-client-types", "solana-clock", "solana-commitment-config", "solana-epoch-info", "solana-epoch-schedule", "solana-feature-gate-interface", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client-api", "solana-signature", "solana-transaction", "solana-transaction-error", "solana-transaction-status-client-types", "solana-version", + "solana-vote-interface", "tokio", ] [[package]] name = "solana-rpc-client-api" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7105452c4f039fd2c07e6fda811ff23bd270c99f91ac160308f02701eb19043" +checksum = "657c1d331d8b0611327bbf3bf342d3b98ad7743a74cc59ddfcce2925a0d818fc" dependencies = [ "anyhow", - "base64 0.22.1", - "bs58", "jsonrpc-core", - "reqwest", + "reqwest 0.12.28", "reqwest-middleware", - "semver", "serde", - "serde_derive", "serde_json", - "solana-account", "solana-account-decoder-client-types", "solana-clock", - "solana-commitment-config", - "solana-fee-calculator", - "solana-inflation", - "solana-inline-spl", - "solana-pubkey 2.2.1", + "solana-rpc-client-types", "solana-signer", "solana-transaction-error", "solana-transaction-status-client-types", - "solana-version", "thiserror 2.0.18", ] [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0244e2bf439ec424179414173cdc8b43e34371608752799c5610bf17430eee18" +checksum = "b1fc7c6ad3eb7df35a1f97c820003439334ee0d5944b155e9cb78bf9e0ecce36" dependencies = [ "solana-account", "solana-commitment-config", - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-message", "solana-nonce", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-sdk-ids", "thiserror 2.0.18", ] +[[package]] +name = "solana-rpc-client-types" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727f7cc8e29432b7efad120558a883629332a72c9853f0506b0453a9f11be51a" +dependencies = [ + "base64 0.22.1", + "bs58", + "semver", + "serde", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-address 1.1.0", + "solana-clock", + "solana-commitment-config", + "solana-fee-calculator", + "solana-inflation", + "solana-reward-info", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "spl-generic-token", + "thiserror 2.0.18", +] + [[package]] name = "solana-runtime" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5335e7925f6dc8d2fdcdc6ead3b190aca65f191a11cef74709a7a6ab5d0d5877" +checksum = "0eb482d0c82ee826621758e7fdba331cd78857a94107247a2674216abb4ff808" dependencies = [ + "agave-feature-set", + "agave-fs", + "agave-precompiles", + "agave-reserved-account-keys", + "agave-snapshots", + "agave-syscalls", + "agave-votor-messages", "ahash 0.8.12", "aquamarine", + "arc-swap", "arrayref", + "assert_matches", "base64 0.22.1", "bincode", "blake3", "bv", "bytemuck", - "bzip2", "crossbeam-channel", "dashmap", "dir-diff", - "flate2", "fnv", "im", - "index_list", "itertools 0.12.1", - "lazy_static", "libc", "log", "lz4", - "memmap2 0.5.10", + "memmap2 0.9.9", "mockall", "modular-bitfield", "num-derive", @@ -8444,70 +9117,117 @@ dependencies = [ "rand 0.8.5", "rayon", "regex", + "semver", "serde", - "serde_derive", "serde_json", "serde_with", + "solana-account", + "solana-account-info", "solana-accounts-db", + "solana-address-lookup-table-interface", + "solana-bls-signatures", "solana-bpf-loader-program", "solana-bucket-map", "solana-builtins", + "solana-client-traits", + "solana-clock", + "solana-cluster-type 3.1.0", + "solana-commitment-config", "solana-compute-budget", "solana-compute-budget-instruction", - "solana-config-program", + "solana-compute-budget-interface", + "solana-config-interface", "solana-cost-model", - "solana-feature-set", + "solana-cpi", + "solana-ed25519-program", + "solana-epoch-info", + "solana-epoch-rewards-hasher", + "solana-epoch-schedule", + "solana-feature-gate-interface", "solana-fee", - "solana-inline-spl", + "solana-fee-calculator", + "solana-fee-structure", + "solana-genesis-config", + "solana-hard-forks", + "solana-hash 3.1.0", + "solana-inflation", + "solana-instruction", + "solana-keypair", "solana-lattice-hash", + "solana-loader-v3-interface", + "solana-loader-v4-interface", "solana-measure", - "solana-metrics", + "solana-message", + "solana-metrics 3.1.12", + "solana-native-token", "solana-nohash-hasher", + "solana-nonce", "solana-nonce-account", + "solana-packet", "solana-perf", - "solana-program", + "solana-poh-config", + "solana-precompile-error", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rayon-threadlimit", + "solana-rent 3.1.0", + "solana-reward-info", "solana-runtime-transaction", - "solana-sdk", - "solana-stake-program", - "solana-svm 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-svm-rent-collector", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-seed-derivable", + "solana-serde", + "solana-sha256-hasher 3.1.0", + "solana-signature", + "solana-signer", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-svm", + "solana-svm-callback", + "solana-svm-timings", "solana-svm-transaction", - "solana-timings", + "solana-system-interface 2.0.0", + "solana-system-transaction", + "solana-sysvar", + "solana-sysvar-id", + "solana-time-utils 3.0.0", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", "solana-transaction-status-client-types", "solana-unified-scheduler-logic", "solana-version", "solana-vote", + "solana-vote-interface", "solana-vote-program", + "spl-generic-token", "static_assertions", "strum 0.24.1", "strum_macros 0.24.3", "symlink", - "tar", "tempfile", "thiserror 2.0.18", - "zstd", ] [[package]] name = "solana-runtime-transaction" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ffec9b80cf744d36696b28ca089bef8058475a79a11b1cee9322a5aab1fa00" +checksum = "ab8a63214f8959f5eb0b2d2a53497688be7cf7db23faae319864af5ffaa8b99e" dependencies = [ "agave-transaction-view", "log", "solana-compute-budget", "solana-compute-budget-instruction", - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-signature", "solana-svm-transaction", "solana-transaction", + "solana-transaction-context", "solana-transaction-error", "thiserror 2.0.18", ] @@ -8526,9 +9246,9 @@ checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" [[package]] name = "solana-sbpf" -version = "0.10.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a3ce7a0f4d6830124ceb2c263c36d1ee39444ec70146eb49b939e557e72b96" +checksum = "b15b079e08471a9dbfe1e48b2c7439c85aa2a055cbd54eddd8bd257b0a7dbb29" dependencies = [ "byteorder", "combine 3.8.1", @@ -8537,63 +9257,34 @@ dependencies = [ "log", "rand 0.8.5", "rustc-demangle", - "thiserror 1.0.69", + "thiserror 2.0.18", "winapi", ] [[package]] name = "solana-sdk" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4808e8d7f3c931657e615042d4176b423e66f64dc99e3dc3c735a197e512029b" +checksum = "3f03df7969f5e723ad31b6c9eadccc209037ac4caa34d8dc259316b05c11e82b" dependencies = [ "bincode", "bs58", - "getrandom 0.1.16", - "js-sys", "serde", - "serde_json", "solana-account", - "solana-bn254", - "solana-client-traits", - "solana-cluster-type", - "solana-commitment-config", - "solana-compute-budget-interface", - "solana-decode-error", - "solana-derivation-path", - "solana-ed25519-program", "solana-epoch-info", "solana-epoch-rewards-hasher", - "solana-feature-set", "solana-fee-structure", - "solana-genesis-config", - "solana-hard-forks", "solana-inflation", - "solana-instruction 2.2.1", "solana-keypair", "solana-message", - "solana-native-token", - "solana-nonce-account", "solana-offchain-message", - "solana-packet", - "solana-poh-config", - "solana-precompile-error", - "solana-precompiles", "solana-presigner", "solana-program", "solana-program-memory", - "solana-pubkey 2.2.1", - "solana-quic-definitions", - "solana-rent-collector", - "solana-rent-debits", - "solana-reserved-account-keys", - "solana-reward-info", - "solana-sanitize 2.2.1", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", "solana-sdk-ids", "solana-sdk-macro", - "solana-secp256k1-program", - "solana-secp256k1-recover", - "solana-secp256r1-program", "solana-seed-derivable", "solana-seed-phrase", "solana-serde", @@ -8602,30 +9293,26 @@ dependencies = [ "solana-shred-version", "solana-signature", "solana-signer", - "solana-system-transaction", - "solana-time-utils", + "solana-time-utils 3.0.0", "solana-transaction", - "solana-transaction-context", "solana-transaction-error", - "solana-validator-exit", "thiserror 2.0.18", - "wasm-bindgen", ] [[package]] name = "solana-sdk-ids" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" dependencies = [ - "solana-pubkey 2.2.1", + "solana-address 2.6.0", ] [[package]] name = "solana-sdk-macro" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" +checksum = "8765316242300c48242d84a41614cb3388229ec353ba464f6fe62a733e41806f" dependencies = [ "bs58", "proc-macro2", @@ -8635,71 +9322,55 @@ dependencies = [ [[package]] name = "solana-secp256k1-program" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0a1caa972414cc78122c32bdae65ac5fe89df7db598585a5cde19d16a20280a" +checksum = "ad4cf8232f7aef9ff2dd95d701f63e3c11909dec2400def5c361be29d24291e7" dependencies = [ - "bincode", "digest 0.10.7", - "libsecp256k1", + "k256", "serde", "serde_derive", "sha3", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-precompile-error", - "solana-sdk-ids", + "solana-signature", ] [[package]] name = "solana-secp256k1-recover" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +checksum = "e7c5f18893d62e6c73117dcba48f8f5e3266d90e5ec3d0a0a90f9785adac36c1" dependencies = [ - "borsh 1.6.0", - "libsecp256k1", - "solana-define-syscall 2.2.1", + "k256", + "solana-define-syscall 5.0.0", "thiserror 2.0.18", ] [[package]] name = "solana-secp256r1-program" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf903cbdc36a161533812f90acfccdb434ed48982bd5dd71f3217930572c4a80" +checksum = "445d8e12592631d76fc4dc57858bae66c9fd7cc838c306c62a472547fc9d0ce6" dependencies = [ "bytemuck", "openssl", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-precompile-error", + "solana-instruction", "solana-sdk-ids", ] -[[package]] -name = "solana-security-txt" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" -dependencies = [ - "hashbrown 0.15.2", -] - [[package]] name = "solana-seed-derivable" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" +checksum = "ff7bdb72758e3bec33ed0e2658a920f1f35dfb9ed576b951d20d63cb61ecd95c" dependencies = [ "solana-derivation-path", ] [[package]] name = "solana-seed-phrase" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" +checksum = "dc905b200a95f2ea9146e43f2a7181e3aeb55de6bc12afb36462d00a3c7310de" dependencies = [ "hmac 0.12.1", "pbkdf2", @@ -8708,50 +9379,59 @@ dependencies = [ [[package]] name = "solana-send-transaction-service" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51fb0567093cc4edbd701b995870fc41592fd90e8bc2965ef9f5ce214af22e7" +checksum = "a5a3f9c38ea9453eb16d65df9e6a35a63a1e5a58a1e23d74d0af4760b13ba4b0" dependencies = [ + "async-trait", "crossbeam-channel", "itertools 0.12.1", "log", "solana-client", + "solana-clock", "solana-connection-cache", + "solana-hash 3.1.0", + "solana-keypair", "solana-measure", - "solana-metrics", + "solana-metrics 3.1.12", + "solana-nonce-account", + "solana-pubkey 3.0.0", + "solana-quic-definitions", "solana-runtime", - "solana-sdk", - "solana-tpu-client", + "solana-signature", + "solana-time-utils 3.0.0", + "solana-tpu-client-next", "tokio", + "tokio-util 0.7.17", ] [[package]] name = "solana-serde" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +checksum = "709a93cab694c70f40b279d497639788fc2ccbcf9b4aa32273d4b361322c02dd" dependencies = [ "serde", ] [[package]] name = "solana-serde-varint" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc07d00200d82e6def2f7f7a45738e3406b17fe54a18adcf0defa16a97ccadb" +checksum = "950e5b83e839dc0f92c66afc124bb8f40e89bc90f0579e8ec5499296d27f54e3" dependencies = [ "serde", ] [[package]] name = "solana-serialize-utils" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" +checksum = "5d7cc401931d178472358e6b78dc72d031dc08f752d7410f0e8bd259dd6f02fa" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-sanitize 3.0.1", ] [[package]] @@ -8761,8 +9441,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0037386961c0d633421f53560ad7c80675c0447cba4d1bb66d60974dd486c7ea" dependencies = [ "sha2 0.10.9", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", ] [[package]] @@ -8778,68 +9458,69 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.2.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" +checksum = "de3bd991c2cc415291c86bb0b6b4d53e93d13bb40344e4c5a2884e0e4f5fa93f" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "solana-shred-version" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +checksum = "d6c79722e299d957958bf33695f7cd1ef6724ff55563c60fd9e3e24487cccde2" dependencies = [ "solana-hard-forks", - "solana-hash 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-hash 4.2.0", + "solana-sha256-hasher 3.1.0", ] [[package]] name = "solana-signature" -version = "2.2.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d251c8f3dc015f320b4161daac7f108156c837428e5a8cc61136d25beb11d6" +checksum = "e7a73c6e97cc2108be0adf6a6ea326434f8398df9d7eed81da2a4548b69e971c" dependencies = [ - "bs58", - "ed25519-dalek", - "rand 0.8.5", + "ed25519-dalek 2.2.0", + "five8 1.0.0", + "rand 0.9.2", "serde", "serde-big-array", "serde_derive", - "solana-sanitize 2.2.1", + "solana-sanitize 3.0.1", + "wincode 0.5.1", ] [[package]] name = "solana-signer" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-transaction-error", ] [[package]] name = "solana-slot-hashes" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" +checksum = "2585f70191623887329dfb5078da3a00e15e3980ea67f42c2e10b07028419f43" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", + "solana-hash 4.2.0", "solana-sdk-ids", "solana-sysvar-id", ] [[package]] name = "solana-slot-history" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" dependencies = [ "bv", "serde", @@ -8850,93 +9531,63 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.2.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" +checksum = "c9f6a291ba063a37780af29e7db14bdd3dc447584d8ba5b3fc4b88e2bbc982fa" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 4.2.0", ] [[package]] name = "solana-stake-interface" -version = "1.2.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" +checksum = "b9bc26191b533f9a6e5a14cca05174119819ced680a80febff2f5051a713f0db" dependencies = [ - "borsh 0.10.4", - "borsh 1.6.0", "num-traits", "serde", "serde_derive", "solana-clock", "solana-cpi", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-system-interface", - "solana-sysvar-id", -] - -[[package]] -name = "solana-stake-program" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dabc713c25ff999424ec68ac4572f2ff6bfd6317922c7864435ccaf9c76504a8" -dependencies = [ - "bincode", - "log", - "solana-account", - "solana-bincode", - "solana-clock", - "solana-config-program", - "solana-feature-set", - "solana-genesis-config", - "solana-instruction 2.2.1", - "solana-log-collector", - "solana-native-token", - "solana-packet", - "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sdk-ids", - "solana-stake-interface", + "solana-instruction", + "solana-program-error", + "solana-pubkey 3.0.0", + "solana-system-interface 2.0.0", "solana-sysvar", - "solana-transaction-context", - "solana-type-overrides", - "solana-vote-interface", + "solana-sysvar-id", ] [[package]] name = "solana-storage-proto" -version = "0.8.8" +version = "0.9.0" dependencies = [ "bincode", "bs58", - "prost 0.11.9", + "prost 0.14.3", "protobuf-src", "serde", "solana-account-decoder", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signature", "solana-transaction", - "solana-transaction-context", "solana-transaction-error", "solana-transaction-status", - "tonic-build 0.9.2", + "tonic-prost-build", ] [[package]] name = "solana-streamer" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68441234b1235afb242e7482cabf3e32eb29554e4c4159d5d58e19e54ccfd424" +checksum = "03cc4445ae5c1299b80cf54ef89c39fa7dbd3bcc2d388e842c8c2ab54c6e3f30" dependencies = [ - "async-channel", + "anza-quinn", + "anza-quinn-proto", + "arc-swap", "bytes", "crossbeam-channel", "dashmap", @@ -8948,26 +9599,25 @@ dependencies = [ "itertools 0.12.1", "libc", "log", - "nix 0.29.0", + "nix", + "num_cpus", "pem", "percentage", - "quinn", - "quinn-proto", "rand 0.8.5", "rustls 0.23.35", "smallvec", - "socket2 0.5.10", + "socket2 0.6.1", "solana-keypair", "solana-measure", - "solana-metrics", + "solana-metrics 3.1.12", "solana-net-utils", "solana-packet", "solana-perf", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-quic-definitions", "solana-signature", "solana-signer", - "solana-time-utils", + "solana-time-utils 3.0.0", "solana-tls-utils", "solana-transaction-error", "solana-transaction-metrics-tracker", @@ -8979,179 +9629,190 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850baf834aba4a94a7558fa6cf6ca93fad284abf0363dec5fb9cab173a11fc4" +version = "3.1.12" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" dependencies = [ "ahash 0.8.12", - "itertools 0.12.1", "log", "percentage", + "qualifier_attr", "serde", - "serde_derive", "solana-account", - "solana-bpf-loader-program", "solana-clock", - "solana-compute-budget", - "solana-compute-budget-instruction", - "solana-feature-set", "solana-fee-structure", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-instructions-sysvar", + "solana-loader-v3-interface", + "solana-loader-v4-interface", "solana-loader-v4-program", - "solana-log-collector", - "solana-measure", "solana-message", "solana-nonce", "solana-nonce-account", - "solana-precompiles", - "solana-program", + "solana-program-entrypoint", + "solana-program-pack", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-rent-debits", - "solana-sdk", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", - "solana-svm-rent-collector", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", "solana-svm-transaction", - "solana-timings", + "solana-svm-type-overrides", + "solana-system-interface 2.0.0", + "solana-sysvar-id", "solana-transaction-context", "solana-transaction-error", - "solana-type-overrides", + "spl-generic-token", "thiserror 2.0.18", ] [[package]] -name = "solana-svm" -version = "2.2.1" -source = "git+https://github.com/magicblock-labs/magicblock-svm.git?rev=5ea30a7#5ea30a72161ce920f3272cee8957fec090167470" +name = "solana-svm-callback" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb521c7f62db21661267a933f0d311a76b2b744a766b46f5a9a9395ce70f687c" dependencies = [ - "ahash 0.8.12", - "log", - "percentage", - "qualifier_attr", - "serde", - "serde_derive", "solana-account", - "solana-bpf-loader-program", "solana-clock", - "solana-compute-budget", - "solana-compute-budget-instruction", - "solana-feature-set", - "solana-fee-structure", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar", - "solana-loader-v4-program", - "solana-log-collector", - "solana-measure", - "solana-message", - "solana-nonce", - "solana-nonce-account", - "solana-precompiles", - "solana-program", - "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-rent-debits", - "solana-reserved-account-keys", - "solana-sdk", - "solana-sdk-ids", - "solana-svm-rent-collector", - "solana-svm-transaction", - "solana-timings", - "solana-transaction-context", - "solana-transaction-error", - "solana-type-overrides", - "thiserror 2.0.18", + "solana-precompile-error", + "solana-pubkey 3.0.0", ] [[package]] -name = "solana-svm-rent-collector" -version = "2.2.1" +name = "solana-svm-feature-set" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08924d3b4918008d75a5807e73af8eb9f1c409067c772de518d1dd67dd4c03de" + +[[package]] +name = "solana-svm-log-collector" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa59aea7bfbadb4be9704a6f99c86dbdf48d6204c9291df79ecd6a4f1cc90b59" +checksum = "26c071b3e4e9b2f19f15659abc74bd7fcc40cec6d60c1f6024384ff78cb49d40" dependencies = [ - "solana-sdk", + "log", +] + +[[package]] +name = "solana-svm-measure" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e4f9972c93d50eaa299fadf1bee9de2055d47eef26af589dcefb487f22e71d" + +[[package]] +name = "solana-svm-timings" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c65d4887002f8105f8e49253d0956292c55d66a1a3ee3594e7f90e682ed9521" +dependencies = [ + "eager", + "enum-iterator", + "solana-pubkey 3.0.0", ] [[package]] name = "solana-svm-transaction" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc4392f0eed412141a376e99dfb052069b96f13697a9abb335504babe29387a" +checksum = "3ef6ff55ce4c24e26ad8b0e67bc604cbd54eabfc94540c4c2c93e51fa087ead5" dependencies = [ - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-signature", "solana-transaction", ] +[[package]] +name = "solana-svm-type-overrides" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa888be46794b88f130508f694e989fb8802c823b9048acd4d0240e9818502fe" +dependencies = [ + "rand 0.8.5", +] + [[package]] name = "solana-system-interface" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" dependencies = [ - "js-sys", "num-traits", "serde", "serde_derive", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "wasm-bindgen", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-system-interface" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55b54965bf0b76fa8e2b35376583efddd4d916618cfe595bf48c7d7b55a9e628" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-address 2.6.0", + "solana-instruction", + "solana-msg", + "solana-program-error", ] [[package]] name = "solana-system-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c8f684977e4439031b3a27b954ab05a6bdf697d581692aaf8888cf92b73b9e" +checksum = "578e44e2abb14c34efbc0074f9009132f12ff66cc3ab1a7715d24b6801bb7f32" dependencies = [ "bincode", "log", "serde", - "serde_derive", "solana-account", "solana-bincode", - "solana-instruction 2.2.1", - "solana-log-collector", + "solana-fee-calculator", + "solana-instruction", "solana-nonce", "solana-nonce-account", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", - "solana-system-interface", + "solana-svm-log-collector", + "solana-svm-type-overrides", + "solana-system-interface 2.0.0", "solana-sysvar", "solana-transaction-context", - "solana-type-overrides", ] [[package]] name = "solana-system-transaction" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" +checksum = "a31b5699ec533621515e714f1533ee6b3b0e71c463301d919eb59b8c1e249d30" dependencies = [ - "solana-hash 2.2.1", + "solana-hash 3.1.0", "solana-keypair", "solana-message", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signer", - "solana-system-interface", + "solana-system-interface 2.0.0", "solana-transaction", ] [[package]] name = "solana-sysvar" -version = "2.2.1" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf6b44740d7f0c9f375d045c165bc0aab4a90658f92d6835aeb0649afaeaff9a" +checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" dependencies = [ "base64 0.22.1", "bincode", @@ -9162,67 +9823,35 @@ dependencies = [ "serde_derive", "solana-account-info", "solana-clock", - "solana-define-syscall 2.2.1", + "solana-define-syscall 4.0.1", "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar", + "solana-hash 4.2.0", + "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", - "solana-program-error 2.2.2", + "solana-program-error", "solana-program-memory", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-sanitize 2.2.1", + "solana-pubkey 4.2.0", + "solana-rent 3.1.0", "solana-sdk-ids", "solana-sdk-macro", "solana-slot-hashes", "solana-slot-history", - "solana-stake-interface", "solana-sysvar-id", ] [[package]] name = "solana-sysvar-id" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" dependencies = [ - "solana-pubkey 2.2.1", + "solana-address 2.6.0", "solana-sdk-ids", ] -[[package]] -name = "solana-thin-client" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721a034e94fcfaf8bde1ae4980e7eb58bfeb0c9a243b032b0761fdd19018afbf" -dependencies = [ - "bincode", - "log", - "rayon", - "solana-account", - "solana-client-traits", - "solana-clock", - "solana-commitment-config", - "solana-connection-cache", - "solana-epoch-info", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keypair", - "solana-message", - "solana-pubkey 2.2.1", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", -] - [[package]] name = "solana-time-utils" version = "2.2.1" @@ -9230,34 +9859,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" [[package]] -name = "solana-timings" -version = "2.2.1" +name = "solana-time-utils" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49d9eabdce318cb07c60a23f1cc367b43e177c79225b5c2a081869ad182172ad" -dependencies = [ - "eager", - "enum-iterator", - "solana-pubkey 2.2.1", -] +checksum = "0ced92c60aa76ec4780a9d93f3bd64dfa916e1b998eacc6f1c110f3f444f02c9" [[package]] name = "solana-tls-utils" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a228df037e560a02aac132193f492bdd761e2f90188cd16a440f149882f589b1" +checksum = "57a74352404ca3378d3bc6586a9a1e0d7362b687ce2218a0b646dccb767c7ba2" dependencies = [ "rustls 0.23.35", "solana-keypair", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-signer", "x509-parser", ] [[package]] name = "solana-tpu-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaceb9e9349de58740021f826ae72319513eca84ebb6d30326e2604fdad4cefb" +checksum = "4fb908227ef3da285e4f12953075a83d06aabe53eab42364ea19c535bfe7c5aa" dependencies = [ "async-trait", "bincode", @@ -9270,11 +9894,11 @@ dependencies = [ "solana-clock", "solana-commitment-config", "solana-connection-cache", - "solana-epoch-info", + "solana-epoch-schedule", "solana-measure", "solana-message", "solana-net-utils", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-pubsub-client", "solana-quic-definitions", "solana-rpc-client", @@ -9287,71 +9911,92 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-tpu-client-next" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89ee2f45432a017af38dee0f1e87537c87eb985790d824209fa19a3b57bf8f5" +dependencies = [ + "anza-quinn", + "async-trait", + "log", + "lru 0.7.8", + "rustls 0.23.35", + "solana-clock", + "solana-connection-cache", + "solana-keypair", + "solana-measure", + "solana-metrics 3.1.12", + "solana-quic-definitions", + "solana-rpc-client", + "solana-streamer", + "solana-time-utils 3.0.0", + "solana-tls-utils", + "solana-tpu-client", + "thiserror 2.0.18", + "tokio", + "tokio-util 0.7.17", +] + [[package]] name = "solana-transaction" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "753b3e9afed170e4cfc0ea1e87b5dfdc6d4a50270869414edd24c6ea1f529b29" +checksum = "96697cff5075a028265324255efed226099f6d761ca67342b230d09f72cc48d2" dependencies = [ "bincode", "serde", "serde_derive", - "solana-bincode", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keypair", + "solana-address 2.6.0", + "solana-hash 4.2.0", + "solana-instruction", + "solana-instruction-error", "solana-message", - "solana-precompiles", - "solana-pubkey 2.2.1", - "solana-reserved-account-keys", - "solana-sanitize 2.2.1", + "solana-sanitize 3.0.1", "solana-sdk-ids", "solana-short-vec", "solana-signature", "solana-signer", - "solana-system-interface", "solana-transaction-error", - "wasm-bindgen", ] [[package]] name = "solana-transaction-context" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5022de04cbba05377f68bf848c8c1322ead733f88a657bf792bb40f3257b8218" +version = "3.1.12" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" dependencies = [ "bincode", + "qualifier_attr", "serde", - "serde_derive", "solana-account", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent", - "solana-signature", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sbpf", + "solana-sdk-ids", ] [[package]] name = "solana-transaction-error" -version = "2.2.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" +checksum = "8396904805b0b385b9de115a652fe80fd01e5b98ce0513f4fcd8184ada9bb792" dependencies = [ "serde", "serde_derive", - "solana-instruction 2.2.1", - "solana-sanitize 2.2.1", + "solana-instruction-error", + "solana-sanitize 3.0.1", ] [[package]] name = "solana-transaction-metrics-tracker" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9256ea8a6cead9e03060fd8fdc24d400a57a719364db48a3e4d1776b09c2365" +checksum = "17327deb9accf25ebb25a0422ab228de5d92acecf2ec178fdf926ae5ccd3ace1" dependencies = [ "base64 0.22.1", "bincode", - "lazy_static", "log", "rand 0.8.5", "solana-packet", @@ -9362,60 +10007,63 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64f739fb4230787b010aa4a49d3feda8b53aac145a9bc3ac2dd44337c6ecb544" +checksum = "ef168e7c707af72fff96175767f54917572adccbccddcbc4aa0d946021266173" dependencies = [ "Inflector", + "agave-reserved-account-keys", "base64 0.22.1", "bincode", - "borsh 1.6.0", + "borsh", "bs58", - "lazy_static", "log", "serde", - "serde_derive", "serde_json", "solana-account-decoder", + "solana-address-lookup-table-interface", "solana-clock", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-loader-v2-interface", + "solana-loader-v3-interface", "solana-message", - "solana-program", - "solana-pubkey 2.2.1", - "solana-reserved-account-keys", + "solana-program-option", + "solana-pubkey 3.0.0", "solana-reward-info", "solana-sdk-ids", "solana-signature", - "solana-system-interface", + "solana-stake-interface", + "solana-system-interface 2.0.0", "solana-transaction", "solana-transaction-error", "solana-transaction-status-client-types", - "spl-associated-token-account", - "spl-memo", - "spl-token", - "spl-token-2022 7.0.0", + "solana-vote-interface", + "spl-associated-token-account-interface", + "spl-memo-interface", + "spl-token-2022-interface", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.18", ] [[package]] name = "solana-transaction-status-client-types" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5ac91c8f0465c566164044ad7b3d18d15dfabab1b8b4a4a01cb83c047efdaae" +checksum = "cf6050ff0021c138fd522283a743b8a62e39e9710590c17873ec232054dbc03a" dependencies = [ "base64 0.22.1", "bincode", "bs58", "serde", - "serde_derive", "serde_json", "solana-account-decoder-client-types", "solana-commitment-config", + "solana-instruction", "solana-message", + "solana-pubkey 3.0.0", "solana-reward-info", "solana-signature", "solana-transaction", @@ -9424,21 +10072,11 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "solana-type-overrides" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39dc2e501edfea7ce1cec2fe2a2428aedfea1cc9c31747931e0d90d5c57b020" -dependencies = [ - "lazy_static", - "rand 0.8.5", -] - [[package]] name = "solana-udp-client" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85085c0aa14ebb8e26219386fb7f4348d159f5a67858c2fdefef3cc5f4ce090c" +checksum = "b32651092f28c7fa9fb622a055f21fcfb1a109e6851d964ce043336a0035a629" dependencies = [ "async-trait", "solana-connection-cache", @@ -9452,56 +10090,53 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7e48cbf4e70c05199f50d5f14aafc58331ad39229747c795320bcb362ed063" +checksum = "d6f50281f494e916386e99175eb4806fb9554db9e790d3d45fd4d39a42d6d010" dependencies = [ "assert_matches", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-runtime-transaction", "solana-transaction", "static_assertions", + "unwrap_none", ] -[[package]] -name = "solana-validator-exit" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" - [[package]] name = "solana-version" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f60a01e2721bfd2e094b465440ae461d75acd363e9653565a73d2c586becb3b" +checksum = "f697aacc5aa4ac5534abdde8a91afdcf18c24d28bd52768e8001445dbda078db" dependencies = [ + "agave-feature-set", + "rand 0.8.5", "semver", "serde", - "serde_derive", - "solana-feature-set", - "solana-sanitize 2.2.1", + "solana-sanitize 3.0.1", "solana-serde-varint", ] [[package]] name = "solana-vote" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cfd22290c8e63582acd8d8d10670f4de2f81a967b5e9821e2988b4a4d58c54" +checksum = "bb12447f1d5a08ce4d6d6b8e50d146393ab24dfcde6d64541db3bd7a3ec1af58" dependencies = [ "itertools 0.12.1", "log", "serde", - "serde_derive", "solana-account", "solana-bincode", "solana-clock", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keypair", "solana-packet", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-sdk-ids", + "solana-serialize-utils", "solana-signature", + "solana-signer", "solana-svm-transaction", "solana-transaction", "solana-vote-interface", @@ -9510,52 +10145,53 @@ dependencies = [ [[package]] name = "solana-vote-interface" -version = "2.2.1" +version = "4.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4507bb9d071fb81cfcf676f12fba3db4098f764524ef0b5567d671a81d41f3e" +checksum = "db6e123e16bfdd7a81d71b4c4699e0b29580b619f4cd2ef5b6aae1eb85e8979f" dependencies = [ "bincode", + "cfg_eval", "num-derive", "num-traits", "serde", "serde_derive", + "serde_with", "solana-clock", - "solana-decode-error", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-hash 3.1.0", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", "solana-serde-varint", "solana-serialize-utils", "solana-short-vec", - "solana-system-interface", + "solana-system-interface 2.0.0", ] [[package]] name = "solana-vote-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab654bb2622d85b2ca0c36cb89c99fa1286268e0d784efec03a3d42e9c6a55f4" +checksum = "ac7f37540da27c0ec132ee1b5380ad32d98663afba7ade3581f2d963fd2f63c2" dependencies = [ + "agave-feature-set", "bincode", "log", "num-derive", "num-traits", "serde", - "serde_derive", "solana-account", "solana-bincode", "solana-clock", "solana-epoch-schedule", - "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash 3.1.0", + "solana-instruction", "solana-keypair", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", "solana-sdk-ids", "solana-signer", "solana-slot-hashes", @@ -9565,27 +10201,39 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "solana-zero-copy" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a91404c7de468dd80658cdb5d894ec803d1092ea6e2bfdf84eee6f07559c0d" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", +] + [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d241af6328b3e0e20695bb705c850119ec5881b386c338783b8c8bc79e76c65" +checksum = "cee65de587e6fe912668903e62f3f40c02a834f21967a18cc6c71f550c51a639" dependencies = [ + "agave-feature-set", "bytemuck", "num-derive", "num-traits", - "solana-instruction 2.2.1", - "solana-log-collector", + "solana-instruction", "solana-program-runtime", "solana-sdk-ids", + "solana-svm-log-collector", "solana-zk-sdk", ] [[package]] name = "solana-zk-sdk" -version = "2.2.1" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8318220b73552a2765c6545a4be04fc87fe21b6dd0cb8c2b545a66121bf5b8a" +checksum = "9602bcb1f7af15caef92b91132ec2347e1c51a72ecdbefdaefa3eac4b8711475" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -9593,9 +10241,9 @@ dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", + "getrandom 0.2.16", "itertools 0.12.1", "js-sys", - "lazy_static", "merlin", "num-derive", "num-traits", @@ -9605,8 +10253,8 @@ dependencies = [ "serde_json", "sha3", "solana-derivation-path", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-seed-derivable", "solana-seed-phrase", @@ -9620,26 +10268,26 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "123b7c7d2f9e68190630b216781ca832af0ed78b69acd89a2ad2766cc460c312" +checksum = "56ecb5f2989632b030709c8aebdbc586a8c0f867d0ec154d0cb7feafb86f72fb" dependencies = [ + "agave-feature-set", "bytemuck", "num-derive", "num-traits", - "solana-feature-set", - "solana-instruction 2.2.1", - "solana-log-collector", + "solana-instruction", "solana-program-runtime", "solana-sdk-ids", + "solana-svm-log-collector", "solana-zk-token-sdk", ] [[package]] name = "solana-zk-token-sdk" -version = "2.2.1" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3cf301f8d8e02ef58fc2ce85868f5c760720e1ce74ee4b3c3dcb64c8da7bcff" +checksum = "c0d27bcbe061cc3d4f25527ee4f28b04a9408294d46dd9b817b93cd3dd98d72d" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -9648,19 +10296,17 @@ dependencies = [ "bytemuck_derive", "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-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", "solana-sdk-ids", "solana-seed-derivable", "solana-seed-phrase", @@ -9729,40 +10375,35 @@ dependencies = [ ] [[package]] -name = "spl-associated-token-account" -version = "6.0.0" +name = "spki" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76fee7d65013667032d499adc3c895e286197a35a0d3a4643c80e7fd3e9969e3" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ - "borsh 1.6.0", - "num-derive", - "num-traits", - "solana-program", - "spl-associated-token-account-client", - "spl-token", - "spl-token-2022 6.0.0", - "thiserror 1.0.69", + "base64ct", + "der", ] [[package]] -name = "spl-associated-token-account-client" +name = "spl-associated-token-account-interface" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb" +checksum = "e6433917b60441d68d99a17e121d9db0ea15a9a69c0e5afa34649cf5ba12612f" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "borsh", + "solana-instruction", + "solana-pubkey 3.0.0", ] [[package]] name = "spl-discriminator" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" +checksum = "e597c5ff9ed7c74a54dbc47bae2f06e4db8c98f4356ad280200dc11878266db1" dependencies = [ "bytemuck", - "solana-program-error 2.2.2", - "solana-sha256-hasher 2.2.1", + "solana-program-error", + "solana-sha256-hasher 3.1.0", "spl-discriminator-derive", ] @@ -9791,201 +10432,88 @@ dependencies = [ ] [[package]] -name = "spl-elgamal-registry" -version = "0.1.1" +name = "spl-generic-token" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" +checksum = "233df81b75ab99b42f002b5cdd6e65a7505ffa930624f7096a7580a56765e9cf" dependencies = [ "bytemuck", - "solana-program", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction", -] - -[[package]] -name = "spl-memo" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb" -dependencies = [ - "solana-account-info", - "solana-instruction 2.2.1", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", ] [[package]] name = "spl-memo-interface" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24af0730130fea732616be9425fe8eb77782e2aab2f0e76837b6a66aaba96c6b" +checksum = "3d4e2aedd58f858337fa609af5ad7100d4a243fdaf6a40d6eb4c28c5f19505d3" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey 3.0.0", ] [[package]] name = "spl-pod" -version = "0.5.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" +checksum = "2f9c6e142cdf1e7e77f480053ec9f0ce989890768ddf91f619b50f39d1b456f5" dependencies = [ - "borsh 1.6.0", + "borsh", "bytemuck", "bytemuck_derive", "num-derive", "num-traits", - "solana-decode-error", - "solana-msg", - "solana-program-error 2.2.2", + "num_enum", + "solana-program-error", "solana-program-option", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", + "solana-zero-copy", "solana-zk-sdk", "thiserror 2.0.18", ] [[package]] -name = "spl-program-error" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" -dependencies = [ - "num-derive", - "num-traits", - "solana-program", - "spl-program-error-derive", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.117", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd99ff1e9ed2ab86e3fd582850d47a739fec1be9f4661cba1782d3a0f26805f3" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-account-info", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed320a6c934128d4f7e54fe00e16b8aeaecf215799d060ae14f93378da6dc834" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-2022" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b27f7405010ef816587c944536b0eafbcc35206ab6ba0f2ca79f1d28e488f4f" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-sdk", - "spl-elgamal-registry", - "spl-memo", - "spl-pod", - "spl-token", - "spl-token-confidential-transfer-ciphertext-arithmetic", - "spl-token-confidential-transfer-proof-extraction", - "spl-token-confidential-transfer-proof-generation 0.2.0", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface", - "spl-type-length-value", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-2022" -version = "7.0.0" +name = "spl-token-2022-interface" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" +checksum = "2fcd81188211f4b3c8a5eba7fd534c7142f9dd026123b3472492782cc72f4dc6" dependencies = [ "arrayref", "bytemuck", "num-derive", "num-traits", "num_enum", - "solana-program", - "solana-security-txt", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-sdk-ids", "solana-zk-sdk", - "spl-elgamal-registry", - "spl-memo", "spl-pod", - "spl-token", - "spl-token-confidential-transfer-ciphertext-arithmetic", "spl-token-confidential-transfer-proof-extraction", - "spl-token-confidential-transfer-proof-generation 0.3.0", + "spl-token-confidential-transfer-proof-generation", "spl-token-group-interface", "spl-token-metadata-interface", - "spl-transfer-hook-interface", "spl-type-length-value", "thiserror 2.0.18", ] -[[package]] -name = "spl-token-confidential-transfer-ciphertext-arithmetic" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170378693c5516090f6d37ae9bad2b9b6125069be68d9acd4865bbe9fc8499fd" -dependencies = [ - "base64 0.22.1", - "bytemuck", - "solana-curve25519", - "solana-zk-sdk", -] - [[package]] name = "spl-token-confidential-transfer-proof-extraction" -version = "0.2.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" +checksum = "879a9ebad0d77383d3ea71e7de50503554961ff0f4ef6cbca39ad126e6f6da3a" dependencies = [ "bytemuck", + "solana-account-info", "solana-curve25519", - "solana-program", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey 3.0.0", + "solana-sdk-ids", "solana-zk-sdk", "spl-pod", "thiserror 2.0.18", @@ -9993,20 +10521,9 @@ dependencies = [ [[package]] name = "spl-token-confidential-transfer-proof-generation" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8627184782eec1894de8ea26129c61303f1f0adeed65c20e0b10bc584f09356d" -dependencies = [ - "curve25519-dalek 4.1.3", - "solana-zk-sdk", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token-confidential-transfer-proof-generation" -version = "0.3.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" +checksum = "a0cd59fce3dc00f563c6fa364d67c3f200d278eae681f4dc250240afcfe044b1" dependencies = [ "curve25519-dalek 4.1.3", "solana-zk-sdk", @@ -10015,85 +10532,77 @@ dependencies = [ [[package]] name = "spl-token-group-interface" -version = "0.5.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d595667ed72dbfed8c251708f406d7c2814a3fa6879893b323d56a10bedfc799" +checksum = "841cbd6f2322d02719be4da1affedbe6495b1048b7b985ec9796032564026e22" dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "num_enum", + "solana-address 2.6.0", + "solana-instruction", + "solana-nullable", + "solana-program-error", + "solana-zero-copy", "spl-discriminator", - "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] -name = "spl-token-metadata-interface" -version = "0.6.0" +name = "spl-token-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb" +checksum = "8c564ac05a7c8d8b12e988a37d82695b5ba4db376d07ea98bc4882c81f96c7f3" dependencies = [ - "borsh 1.6.0", + "arrayref", + "bytemuck", "num-derive", "num-traits", - "solana-borsh", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "spl-discriminator", - "spl-pod", - "spl-type-length-value", - "thiserror 1.0.69", + "num_enum", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 3.0.0", + "solana-sdk-ids", + "thiserror 2.0.18", ] [[package]] -name = "spl-transfer-hook-interface" -version = "0.9.0" +name = "spl-token-metadata-interface" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa7503d52107c33c88e845e1351565050362c2314036ddf19a36cd25137c043" +checksum = "9c467c7c3bd056f8fe60119e7ec34ddd6f23052c2fa8f1f51999098063b72676" dependencies = [ - "arrayref", - "bytemuck", + "borsh", "num-derive", "num-traits", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-borsh", + "solana-instruction", + "solana-program-error", + "solana-pubkey 3.0.0", "spl-discriminator", "spl-pod", - "spl-program-error", - "spl-tlv-account-resolution", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "spl-type-length-value" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba70ef09b13af616a4c987797870122863cba03acc4284f226a4473b043923f9" +checksum = "2504631748c48d2a937414d64a12dcac4588d34bd07d355d648619c189d29435" dependencies = [ "bytemuck", "num-derive", "num-traits", + "num_enum", "solana-account-info", - "solana-decode-error", - "solana-msg", - "solana-program-error 2.2.2", + "solana-program-error", + "solana-zero-copy", "spl-discriminator", - "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -10202,6 +10711,9 @@ name = "sync_wrapper" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -10262,9 +10774,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973" dependencies = [ "filetime", "libc", @@ -10306,15 +10818,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "task-local-extensions" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8" -dependencies = [ - "pin-utils", -] - [[package]] name = "teepee" version = "0.0.1" @@ -10330,7 +10833,7 @@ dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.2", + "rustix", "windows-sys 0.61.2", ] @@ -10358,20 +10861,21 @@ dependencies = [ "integration-test-tools", "magicblock-chainlink", "magicblock-config", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "program-flexi-counter", "program-mini", "solana-account", + "solana-commitment-config", "solana-loader-v2-interface", - "solana-loader-v3-interface 4.0.1", + "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-pubkey 2.2.1", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", "solana-sdk-ids", - "solana-system-interface", - "spl-token", + "solana-system-interface 3.2.0", + "spl-token-interface", "tokio", "tracing", ] @@ -10381,13 +10885,14 @@ name = "test-cloning" version = "0.0.0" dependencies = [ "integration-test-tools", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "program-flexi-counter", "program-mini", "solana-loader-v4-interface", "solana-sdk", + "solana-system-interface 3.2.0", "spl-memo-interface", - "spl-token", + "spl-token-interface", "test-chainlink", "test-kit", "tokio", @@ -10406,6 +10911,8 @@ dependencies = [ "serial_test", "solana-rpc-client", "solana-sdk", + "solana-sdk-ids", + "solana-system-interface 3.2.0", "tempfile", "test-kit", "tracing", @@ -10413,7 +10920,7 @@ dependencies = [ [[package]] name = "test-kit" -version = "0.8.8" +version = "0.9.0" dependencies = [ "guinea", "magicblock-accounts-db", @@ -10421,7 +10928,7 @@ dependencies = [ "magicblock-ledger", "magicblock-processor", "solana-account", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", "solana-program", "solana-rpc-client", @@ -10445,10 +10952,13 @@ dependencies = [ "integration-test-tools", "magicblock-accounts-db", "magicblock-config", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "program-flexi-counter", + "solana-commitment-config", "solana-rpc-client", "solana-sdk", + "solana-sdk-ids", + "solana-system-interface 3.2.0", "solana-transaction-status", "tempfile", "test-kit", @@ -10459,19 +10969,20 @@ dependencies = [ name = "test-magicblock-api" version = "0.0.0" dependencies = [ - "cleanass", "integration-test-tools", "isocountry", "lazy_static", "magic-domain-program", "magicblock-api", "magicblock-config", - "magicblock-delegation-program-api 0.3.0", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", "magicblock-program", "magicblock-validator-admin", + "solana-commitment-config", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", + "solana-system-interface 3.2.0", "solana-transaction-status", "test-kit", "tokio", @@ -10488,6 +10999,7 @@ dependencies = [ "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", + "solana-system-interface 3.2.0", "tokio", "tracing", ] @@ -10508,8 +11020,8 @@ dependencies = [ "ephemeral-rollups-sdk", "integration-test-tools", "log", - "magicblock-delegation-program-api 0.3.0", - "magicblock-magic-program-api 0.8.8", + "magicblock-delegation-program-api 0.3.0 (git+https://github.com/magicblock-labs/delegation-program.git?rev=25386a7c1d406d06b8d07a4d5b0fd37d5e74213b)", + "magicblock-magic-program-api 0.9.0", "program-flexi-counter", "solana-rpc-client-api", "solana-sdk", @@ -10524,7 +11036,9 @@ dependencies = [ "magicblock-rpc-client", "magicblock-table-mania", "paste", - "solana-pubkey 2.2.1", + "solana-address-lookup-table-interface", + "solana-commitment-config", + "solana-pubkey 3.0.0", "solana-rpc-client", "solana-sdk", "test-kit", @@ -10601,6 +11115,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + [[package]] name = "time" version = "0.3.44" @@ -10723,7 +11246,7 @@ checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" dependencies = [ "bincode", "bytes", - "educe", + "educe 0.4.23", "futures-core", "futures-sink", "pin-project", @@ -10740,21 +11263,23 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", + "tokio-util 0.7.17", ] [[package]] name = "tokio-tungstenite" -version = "0.20.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", - "rustls 0.21.12", + "rustls 0.23.35", + "rustls-pki-types", "tokio", - "tokio-rustls 0.24.1", + "tokio-rustls 0.26.4", "tungstenite", - "webpki-roots 0.25.4", + "webpki-roots 0.26.11", ] [[package]] @@ -10789,15 +11314,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.23" @@ -10877,7 +11393,7 @@ checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", - "axum", + "axum 0.7.9", "base64 0.22.1", "bytes", "flate2", @@ -10891,7 +11407,6 @@ dependencies = [ "percent-encoding", "pin-project", "prost 0.13.5", - "rustls-native-certs", "rustls-pemfile 2.2.0", "socket2 0.5.10", "tokio", @@ -10905,16 +11420,36 @@ dependencies = [ ] [[package]] -name = "tonic-build" -version = "0.9.2" +name = "tonic" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" dependencies = [ - "prettyplease 0.1.25", - "proc-macro2", - "prost-build 0.11.9", - "quote", - "syn 1.0.109", + "async-trait", + "axum 0.8.8", + "base64 0.22.1", + "bytes", + "flate2", + "h2 0.4.12", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "rustls-native-certs", + "socket2 0.6.1", + "sync_wrapper 1.0.2", + "tokio", + "tokio-rustls 0.26.4", + "tokio-stream", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", + "zstd", ] [[package]] @@ -10923,7 +11458,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d021fc044c18582b9a2408cd0dd05b1596e3ecdb5c4df822bb0183545683889" dependencies = [ - "prettyplease 0.2.36", + "prettyplease", "proc-macro2", "prost-build 0.12.6", "quote", @@ -10932,29 +11467,54 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +checksum = "1882ac3bf5ef12877d7ed57aad87e75154c11931c2ba7e6cde5e22d63522c734" dependencies = [ - "prettyplease 0.2.36", + "prettyplease", "proc-macro2", - "prost-build 0.13.5", - "prost-types 0.13.5", "quote", "syn 2.0.117", ] [[package]] name = "tonic-health" -version = "0.12.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eaf34ddb812120f5c601162d5429933c9b527d901ab0e7f930d3147e33a09b2" +checksum = "f4ff0636fef47afb3ec02818f5bceb4377b8abb9d6a386aeade18bd6212f8eb7" dependencies = [ - "async-stream", - "prost 0.13.5", + "prost 0.14.3", "tokio", "tokio-stream", - "tonic", + "tonic 0.14.5", + "tonic-prost", +] + +[[package]] +name = "tonic-prost" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" +dependencies = [ + "bytes", + "prost 0.14.3", + "tonic 0.14.5", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3144df636917574672e93d0f56d7edec49f90305749c668df5101751bb8f95a" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build 0.14.3", + "prost-types 0.14.3", + "quote", + "syn 2.0.117", + "tempfile", + "tonic-build 0.14.5", ] [[package]] @@ -10985,8 +11545,36 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", + "indexmap 2.12.1", "pin-project-lite", + "slab", "sync_wrapper 1.0.2", + "tokio", + "tokio-util 0.7.17", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.10.0", + "bytes", + "futures-core", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "iri-string", + "pin-project-lite", + "tokio", + "tokio-util 0.7.17", + "tower 0.5.2", "tower-layer", "tower-service", ] @@ -11087,23 +11675,22 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.20.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ - "byteorder", "bytes", "data-encoding", - "http 0.2.12", + "http 1.4.0", "httparse", "log", - "rand 0.8.5", - "rustls 0.21.12", + "rand 0.9.2", + "rustls 0.23.35", + "rustls-pki-types", "sha1", - "thiserror 1.0.69", - "url", + "thiserror 2.0.18", "utf-8", - "webpki-roots 0.24.0", + "webpki-roots 0.26.11", ] [[package]] @@ -11163,6 +11750,12 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unit-prefix" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" + [[package]] name = "universal-hash" version = "0.5.1" @@ -11188,6 +11781,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unwrap_none" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "461d0c5956fcc728ecc03a3a961e4adc9a7975d86f6f8371389a289517c02ca9" + [[package]] name = "ureq" version = "2.12.1" @@ -11431,15 +12030,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "webpki-roots" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" -dependencies = [ - "rustls-webpki 0.101.7", -] - [[package]] name = "webpki-roots" version = "0.25.4" @@ -11464,18 +12054,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "winapi" version = "0.3.9" @@ -11520,11 +12098,24 @@ dependencies = [ "wincode-derive", ] +[[package]] +name = "wincode" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a61f8f0a55eb6cae5d7b7ad2eca536a944deb9722a948525181069064ecd1abc" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror 2.0.18", + "wincode-derive", +] + [[package]] name = "wincode-derive" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a7a568eda854acc9945ed136a9d50b8c6d31911584624958808ae96eee3912" +checksum = "fca057fc9a13dd19cdb64ef558635d43c42667c0afa1ae7915ea1fa66993fd1a" dependencies = [ "darling", "proc-macro2", @@ -12004,7 +12595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.2", + "rustix", ] [[package]] @@ -12013,46 +12604,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" -[[package]] -name = "yellowstone-grpc-client" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a311e4e4cc77ead180f6d89234b7c760f85b5d4917e6798b937b1d299de34d" -dependencies = [ - "bytes", - "futures", - "thiserror 1.0.69", - "tonic", - "tonic-health", - "yellowstone-grpc-proto", -] - -[[package]] -name = "yellowstone-grpc-proto" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec3b1c61e97383dc6f7c66240243c8981c16ba519c8bdf0310560db2a18876d" -dependencies = [ - "anyhow", - "bincode", - "prost 0.13.5", - "prost-types 0.13.5", - "protobuf-src", - "solana-account", - "solana-account-decoder", - "solana-clock", - "solana-hash 2.2.1", - "solana-message", - "solana-pubkey 2.2.1", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-transaction-status", - "tonic", - "tonic-build 0.12.3", -] - [[package]] name = "yoke" version = "0.8.1" diff --git a/test-integration/Cargo.toml b/test-integration/Cargo.toml index f05fb475f..4991bf088 100644 --- a/test-integration/Cargo.toml +++ b/test-integration/Cargo.toml @@ -1,31 +1,31 @@ [workspace] members = [ - "programs/flexi-counter", - "programs/schedulecommit", - "programs/schedulecommit-security", - "programs/sysvars", - "programs/mini", - "schedulecommit/client", - "test-committor-service", - "schedulecommit/test-scenarios", - "schedulecommit/test-security", - "test-chainlink", - "test-cloning", - "test-ledger-restore", - "test-magicblock-api", - "test-runner", - "test-table-mania", - "test-tools", - "test-pubsub", - "test-config", - "test-schedule-intent", - "test-task-scheduler", + "programs/flexi-counter", + "programs/mini", + "programs/schedulecommit", + "programs/schedulecommit-security", + "programs/sysvars", + "schedulecommit/client", + "schedulecommit/test-scenarios", + "schedulecommit/test-security", + "test-chainlink", + "test-cloning", + "test-committor-service", + "test-config", + "test-ledger-restore", + "test-magicblock-api", + "test-pubsub", + "test-runner", + "test-schedule-intent", + "test-table-mania", + "test-task-scheduler", + "test-tools" ] resolver = "2" [workspace.package] -version = "0.0.0" edition = "2021" +version = "0.0.0" [workspace.dependencies] anyhow = "1.0.86" @@ -36,32 +36,26 @@ chrono = "0.4" cleanass = "0.0.1" color-backtrace = { version = "0.7" } ctrlc = "3.4.7" -ephemeral-rollups-sdk = { git = "https://github.com/magicblock-labs/ephemeral-rollups-sdk.git", rev = "285d8b4", default-features = false, features = [ - "modular-sdk", +ephemeral-rollups-sdk = { git = "https://github.com/magicblock-labs/ephemeral-rollups-sdk.git", rev = "ccfc9f924dc40", default-features = false, features = [ + "disable-realloc", + "modular-sdk" ] } futures = "0.3.31" integration-test-tools = { path = "test-tools" } isocountry = "0.3.2" lazy_static = "1.4.0" +magic-domain-program = { git = "https://github.com/magicblock-labs/magic-domain-program.git", rev = "335a22", default-features = false } +magicblock-accounts-db = { path = "../magicblock-accounts-db", features = ["dev-tools"] } magicblock-api = { path = "../magicblock-api" } -magicblock-chainlink = { path = "../magicblock-chainlink", features = [ - "dev-context", -] } -magicblock-accounts-db = { path = "../magicblock-accounts-db", features = [ - "dev-tools", -] } +magicblock-chainlink = { path = "../magicblock-chainlink", features = ["dev-context"] } magicblock-committor-program = { path = "../magicblock-committor-program", features = [ - "no-entrypoint", + "no-entrypoint" ] } magicblock-committor-service = { path = "../magicblock-committor-service" } magicblock-config = { path = "../magicblock-config" } magicblock-core = { path = "../magicblock-core" } +magicblock-delegation-program-api = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "25386a7c1d406d06b8d07a4d5b0fd37d5e74213b", default-features = false } magicblock-magic-program-api = { path = "../magicblock-magic-program-api" } -magic-domain-program = { git = "https://github.com/magicblock-labs/magic-domain-program.git", rev = "cffcfeb", default-features = false, features = [ - "modular-sdk", -] } -magicblock_magic_program_api = { package = "magicblock-magic-program-api", path = "../magicblock-magic-program-api" } -magicblock-delegation-program-api = { version = "0.3.0", default-features = false } magicblock-program = { path = "../programs/magicblock" } magicblock-rpc-client = { path = "../magicblock-rpc-client" } magicblock-table-mania = { path = "../magicblock-table-mania" } @@ -76,29 +70,32 @@ rkyv = "0.7.45" schedulecommit-client = { path = "schedulecommit/client" } serde = "1.0.217" serial_test = "3.2.0" -solana-account = { git = "https://github.com/magicblock-labs/solana-account.git", rev = "3ff1b2ea" } -solana-loader-v2-interface = "2.2" -solana-loader-v3-interface = "4.0" -solana-loader-v4-interface = "2.1" -solana-program = "2.2" -solana-program-test = "2.2" -solana-pubkey = { version = "2.2" } -solana-pubsub-client = "2.2" -solana-rpc-client = "2.2" -solana-rpc-client-api = "2.2" -solana-sdk = "2.2" -solana-sdk-ids = { version = "2.2" } -solana-system-interface = "1.0" -solana-transaction-status = "2.2" -spl-memo-interface = "1.0" -spl-token = "=7.0" +solana-account = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } +solana-address-lookup-table-interface = "3.1" +solana-commitment-config = "3.1.1" +solana-compute-budget-interface = "3.0" +solana-loader-v2-interface = "3.0" +solana-loader-v3-interface = "6.1.0" +solana-loader-v4-interface = "3.1" +solana-program = "3.0" +solana-program-test = "3.1.12" +solana-pubkey = { version = "3.0" } +solana-pubsub-client = "3.1.12" +solana-rpc-client = "3.1.12" +solana-rpc-client-api = "3.1.12" +solana-sdk = "3.0" +solana-sdk-ids = { version = "3.0" } +solana-system-interface = "3.1" +solana-transaction-status = "3.1.12" +spl-memo-interface = "2.0" +spl-token = { package = "spl-token-interface", version = "2.0" } static_assertions = "1.1.0" teepee = "0.0.1" tempfile = "3.10.1" test-chainlink = { path = "./test-chainlink" } test-config = { path = "test-config" } -test-ledger-restore = { path = "./test-ledger-restore" } test-kit = { path = "../test-kit" } +test-ledger-restore = { path = "./test-ledger-restore" } tokio = "1.0" toml = "0.8.13" tracing = "0.1" @@ -112,6 +109,9 @@ url = "2.5.0" solana-storage-proto = { path = "../storage-proto" } # same reason as above rocksdb = { git = "https://github.com/magicblock-labs/rust-rocksdb.git", rev = "6d975197" } -solana-account = { git = "https://github.com/magicblock-labs/solana-account.git", rev = "3ff1b2ea" } +solana-account = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } +solana-program-runtime = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } +solana-svm = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } +solana-transaction-context = { git = "https://github.com/magicblock-labs/magicblock-svm.git", branch = "v3" } # Fix libsodium for ARM builds - upstream crates.io version breaks Linux ARM binaries libsodium-rs = { git = "https://github.com/jedisct1/libsodium-rs.git", rev = "0397a6c5785233f9f2ac91f3eedc3cceb74e0060" } diff --git a/test-integration/programs/flexi-counter/Cargo.toml b/test-integration/programs/flexi-counter/Cargo.toml index 1df0f5c68..4e9f424a4 100644 --- a/test-integration/programs/flexi-counter/Cargo.toml +++ b/test-integration/programs/flexi-counter/Cargo.toml @@ -1,22 +1,23 @@ [package] +edition.workspace = true name = "program-flexi-counter" version.workspace = true -edition.workspace = true [dependencies] bincode = { workspace = true } borsh = { workspace = true } ephemeral-rollups-sdk = { workspace = true } +magicblock-magic-program-api = { workspace = true } serde = { workspace = true } solana-program = { workspace = true } -magicblock_magic_program_api = { workspace = true } +solana-system-interface = { workspace = true } [lib] crate-type = ["cdylib", "lib"] [features] -no-entrypoint = [] cpi = ["no-entrypoint"] -default = [] -custom-panic = [] custom-heap = [] +custom-panic = [] +default = [] +no-entrypoint = [] diff --git a/test-integration/programs/flexi-counter/src/instruction.rs b/test-integration/programs/flexi-counter/src/instruction.rs index b2e548cd3..795458892 100644 --- a/test-integration/programs/flexi-counter/src/instruction.rs +++ b/test-integration/programs/flexi-counter/src/instruction.rs @@ -2,13 +2,13 @@ use borsh::{BorshDeserialize, BorshSerialize}; use ephemeral_rollups_sdk::{ consts::{MAGIC_CONTEXT_ID, MAGIC_PROGRAM_ID}, delegate_args::{DelegateAccountMetas, DelegateAccounts}, - dlp_api::dlp, + dlp_api, }; use solana_program::{ instruction::{AccountMeta, Instruction}, pubkey::Pubkey, - system_program, }; +use solana_system_interface::program as system_program; use crate::state::FlexiCounter; @@ -576,7 +576,7 @@ pub fn create_transfer_intent_ix( AccountMeta::new(MAGIC_CONTEXT_ID, false), AccountMeta::new_readonly(MAGIC_PROGRAM_ID, false), AccountMeta::new( - dlp::pda::magic_fee_vault_pda_from_validator(&validator), + dlp_api::pda::magic_fee_vault_pda_from_validator(&validator), false, ), ]; diff --git a/test-integration/programs/flexi-counter/src/processor.rs b/test-integration/programs/flexi-counter/src/processor.rs index d842dac05..6e4a6b6fb 100644 --- a/test-integration/programs/flexi-counter/src/processor.rs +++ b/test-integration/programs/flexi-counter/src/processor.rs @@ -23,9 +23,9 @@ use solana_program::{ program_error::ProgramError, pubkey::Pubkey, rent::Rent, - system_instruction, sysvar::Sysvar, }; +use solana_system_interface::instruction as system_instruction; use crate::{ instruction::{ @@ -237,7 +237,7 @@ fn process_realloc( bytes ); - counter_pda_info.realloc(next_alloc_size as usize, true)?; + counter_pda_info.resize(next_alloc_size as usize)?; Ok(()) } diff --git a/test-integration/programs/flexi-counter/src/processor/call_handler.rs b/test-integration/programs/flexi-counter/src/processor/call_handler.rs index 704c7764b..d34b66cc2 100644 --- a/test-integration/programs/flexi-counter/src/processor/call_handler.rs +++ b/test-integration/programs/flexi-counter/src/processor/call_handler.rs @@ -4,8 +4,9 @@ use ephemeral_rollups_sdk::cpi::{ }; use solana_program::{ account_info::AccountInfo, entrypoint::ProgramResult, msg, program::invoke, - program_error::ProgramError, system_instruction::transfer, + program_error::ProgramError, }; +use solana_system_interface::instruction::transfer; use crate::state::FlexiCounter; diff --git a/test-integration/programs/flexi-counter/src/processor/callback.rs b/test-integration/programs/flexi-counter/src/processor/callback.rs index b48bdaae3..11ad07b5d 100644 --- a/test-integration/programs/flexi-counter/src/processor/callback.rs +++ b/test-integration/programs/flexi-counter/src/processor/callback.rs @@ -1,8 +1,9 @@ use magicblock_magic_program_api::response::MagicResponse; use solana_program::{ account_info::AccountInfo, entrypoint::ProgramResult, msg, program::invoke, - program_error::ProgramError, system_instruction, + program_error::ProgramError, }; +use solana_system_interface::instruction as system_instruction; /// Discriminator prefix for the transfer callback instruction. /// Checked before borsh parsing since the callback carries bincode-encoded diff --git a/test-integration/programs/flexi-counter/src/processor/transfer_intent.rs b/test-integration/programs/flexi-counter/src/processor/transfer_intent.rs index a288f5a3e..c10ff51ef 100644 --- a/test-integration/programs/flexi-counter/src/processor/transfer_intent.rs +++ b/test-integration/programs/flexi-counter/src/processor/transfer_intent.rs @@ -8,8 +8,9 @@ use ephemeral_rollups_sdk::{ }; use solana_program::{ account_info::AccountInfo, entrypoint::ProgramResult, msg, program::invoke, - program_error::ProgramError, system_instruction, + program_error::ProgramError, }; +use solana_system_interface::instruction as system_instruction; use crate::{ instruction::FlexiCounterInstruction, diff --git a/test-integration/programs/mini/src/lib.rs b/test-integration/programs/mini/src/lib.rs index bd9ea4817..6bd269dae 100644 --- a/test-integration/programs/mini/src/lib.rs +++ b/test-integration/programs/mini/src/lib.rs @@ -35,6 +35,7 @@ pub fn process_instruction( } #[cfg(test)] +#[allow(deprecated)] mod tests { use sdk::MiniSdk; use solana_program_test::*; diff --git a/test-integration/programs/schedulecommit/Cargo.toml b/test-integration/programs/schedulecommit/Cargo.toml index 55ad20846..cd8496973 100644 --- a/test-integration/programs/schedulecommit/Cargo.toml +++ b/test-integration/programs/schedulecommit/Cargo.toml @@ -1,23 +1,24 @@ [package] +edition.workspace = true name = "program-schedulecommit" version.workspace = true -edition.workspace = true [dependencies] borsh = { workspace = true } ephemeral-rollups-sdk = { workspace = true } -solana-program = { workspace = true } magicblock-delegation-program-api = { workspace = true, features = ["instruction"] } -magicblock_magic_program_api = { workspace = true } +magicblock-magic-program-api = { workspace = true } rkyv = { workspace = true } +solana-program = { workspace = true } +solana-system-interface = { workspace = true } static_assertions = { workspace = true } [lib] crate-type = ["cdylib", "lib"] [features] -no-entrypoint = [] cpi = ["no-entrypoint"] -default = [] custom-heap = [] custom-panic = [] +default = [] +no-entrypoint = [] diff --git a/test-integration/programs/schedulecommit/src/api.rs b/test-integration/programs/schedulecommit/src/api.rs index d8b5996df..0dfe0931b 100644 --- a/test-integration/programs/schedulecommit/src/api.rs +++ b/test-integration/programs/schedulecommit/src/api.rs @@ -5,8 +5,8 @@ use ephemeral_rollups_sdk::delegate_args::{ use solana_program::{ instruction::{AccountMeta, Instruction}, pubkey::Pubkey, - system_program, }; +use solana_system_interface::program as system_program; use crate::{ BookUpdate, DelegateCpiArgs, DelegateOrderBookArgs, ScheduleCommitCpiArgs, diff --git a/test-integration/programs/schedulecommit/src/lib.rs b/test-integration/programs/schedulecommit/src/lib.rs index d8a110e68..95c86c7a7 100644 --- a/test-integration/programs/schedulecommit/src/lib.rs +++ b/test-integration/programs/schedulecommit/src/lib.rs @@ -24,9 +24,9 @@ use solana_program::{ program_error::ProgramError, pubkey::Pubkey, rent::Rent, - system_instruction, sysvar::Sysvar, }; +use solana_system_interface::instruction as system_instruction; use crate::{ api::{pda_and_bump, pda_seeds, pda_seeds_with_bump}, @@ -528,7 +528,7 @@ fn process_grow_order_book<'a>( )?; } - order_book.realloc(new_size, true)?; + order_book.resize(new_size)?; Ok(()) } diff --git a/test-integration/programs/schedulecommit/src/utils/mod.rs b/test-integration/programs/schedulecommit/src/utils/mod.rs index 6cd4f4c20..7985743b2 100644 --- a/test-integration/programs/schedulecommit/src/utils/mod.rs +++ b/test-integration/programs/schedulecommit/src/utils/mod.rs @@ -6,9 +6,9 @@ use solana_program::{ program_error::ProgramError, pubkey::Pubkey, rent::Rent, - system_instruction, sysvar::Sysvar, }; +use solana_system_interface::instruction as system_instruction; // ----------------- // Asserts diff --git a/test-integration/programs/sysvars/src/lib.rs b/test-integration/programs/sysvars/src/lib.rs index 4af4f8fd8..204bc29ce 100644 --- a/test-integration/programs/sysvars/src/lib.rs +++ b/test-integration/programs/sysvars/src/lib.rs @@ -17,7 +17,7 @@ use solana_program::{ get_instruction_relative, load_current_index_checked, load_instruction_at_checked, }, - Sysvar, + Sysvar, SysvarSerialize, }, }; diff --git a/test-integration/rust-toolchain.toml b/test-integration/rust-toolchain.toml index d6d338197..9cf4a67c4 100644 --- a/test-integration/rust-toolchain.toml +++ b/test-integration/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.91.1" +channel = "1.94.1" diff --git a/test-integration/schedulecommit/client/Cargo.toml b/test-integration/schedulecommit/client/Cargo.toml index 27ccc7a11..87ff7204a 100644 --- a/test-integration/schedulecommit/client/Cargo.toml +++ b/test-integration/schedulecommit/client/Cargo.toml @@ -10,8 +10,10 @@ borsh = { workspace = true } integration-test-tools = { workspace = true } tracing = { workspace = true } program-schedulecommit = { workspace = true, features = ["no-entrypoint"] } -magicblock-core = { workspace = true } solana-program = { workspace = true } +solana-commitment-config = { workspace = true } +solana-compute-budget-interface = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-sdk = { workspace = true } +solana-system-interface = { workspace = true } diff --git a/test-integration/schedulecommit/client/src/schedule_commit_context.rs b/test-integration/schedulecommit/client/src/schedule_commit_context.rs index ca69a7d55..165f6df27 100644 --- a/test-integration/schedulecommit/client/src/schedule_commit_context.rs +++ b/test-integration/schedulecommit/client/src/schedule_commit_context.rs @@ -6,21 +6,21 @@ use program_schedulecommit::api::{ delegate_account_cpi_instruction, init_account_instruction, init_order_book_instruction, init_payer_escrow, UserSeeds, }; +use solana_commitment_config::CommitmentConfig; +use solana_compute_budget_interface::ComputeBudgetInstruction; use solana_rpc_client::rpc_client::{RpcClient, SerializableTransaction}; use solana_rpc_client_api::config::RpcSendTransactionConfig; #[allow(unused_imports)] use solana_sdk::signer::SeedDerivable; use solana_sdk::{ - commitment_config::CommitmentConfig, - compute_budget::ComputeBudgetInstruction, hash::Hash, native_token::LAMPORTS_PER_SOL, pubkey::Pubkey, signature::{Keypair, Signature}, signer::Signer, - system_program, transaction::Transaction, }; +use solana_system_interface::program as system_program; use tracing::*; pub struct ScheduleCommitTestContext { diff --git a/test-integration/schedulecommit/client/src/services.rs b/test-integration/schedulecommit/client/src/services.rs index 095178925..78521fc78 100644 --- a/test-integration/schedulecommit/client/src/services.rs +++ b/test-integration/schedulecommit/client/src/services.rs @@ -1,6 +1,6 @@ +use solana_commitment_config::CommitmentConfig; use solana_rpc_client::rpc_client::RpcClient; // NOTE: sync version of test-tools/src/services.rs -use solana_sdk::commitment_config::CommitmentConfig; pub fn is_devnet_up() -> bool { RpcClient::new_with_commitment( diff --git a/test-integration/schedulecommit/test-scenarios/Cargo.toml b/test-integration/schedulecommit/test-scenarios/Cargo.toml index 82266c3f4..e3f29c57e 100644 --- a/test-integration/schedulecommit/test-scenarios/Cargo.toml +++ b/test-integration/schedulecommit/test-scenarios/Cargo.toml @@ -1,23 +1,24 @@ [package] +edition.workspace = true name = "schedulecommit-test-scenarios" version.workspace = true -edition.workspace = true [dev-dependencies] +borsh = { workspace = true } ephemeral-rollups-sdk = { workspace = true } integration-test-tools = { workspace = true } -tracing = { workspace = true } -program-schedulecommit = { workspace = true, features = ["no-entrypoint"] } -schedulecommit-client = { workspace = true } magicblock-core = { workspace = true } -magicblock-program = { workspace = true } -magicblock_magic_program_api = { workspace = true } magicblock-delegation-program-api = { workspace = true } +magicblock-magic-program-api = { workspace = true } +magicblock-program = { workspace = true } +program-schedulecommit = { workspace = true, features = ["no-entrypoint"] } +rand = { workspace = true } +schedulecommit-client = { workspace = true } +serial_test = { workspace = true } +solana-commitment-config = { workspace = true } solana-program = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-sdk = { workspace = true } test-kit = { workspace = true } -rand = { workspace = true } -borsh = { workspace = true } -serial_test = { workspace = true } +tracing = { workspace = true } diff --git a/test-integration/schedulecommit/test-scenarios/tests/01_commits.rs b/test-integration/schedulecommit/test-scenarios/tests/01_commits.rs index 27b34bd07..15f7b931f 100644 --- a/test-integration/schedulecommit/test-scenarios/tests/01_commits.rs +++ b/test-integration/schedulecommit/test-scenarios/tests/01_commits.rs @@ -219,7 +219,13 @@ fn test_undelegating_account_delegated_to_another_validator() { // We expect InvalidWritableAccount error since account isn't delegated to our validator let (_, tx_err) = extract_transaction_error(res); - assert_eq!(tx_err.unwrap(), TransactionError::InvalidWritableAccount); + assert_eq!( + tx_err.unwrap(), + TransactionError::InstructionError( + 0, + InstructionError::ReadonlyDataModified + ) + ); }); } diff --git a/test-integration/schedulecommit/test-scenarios/tests/02_commit_and_undelegate.rs b/test-integration/schedulecommit/test-scenarios/tests/02_commit_and_undelegate.rs index b8431ef5d..a1305b12c 100644 --- a/test-integration/schedulecommit/test-scenarios/tests/02_commit_and_undelegate.rs +++ b/test-integration/schedulecommit/test-scenarios/tests/02_commit_and_undelegate.rs @@ -18,12 +18,12 @@ use rand::{RngCore, SeedableRng}; use schedulecommit_client::{ verify, ScheduleCommitTestContext, ScheduleCommitTestContextFields, }; +use solana_commitment_config::CommitmentConfig; use solana_rpc_client::rpc_client::{RpcClient, SerializableTransaction}; use solana_rpc_client_api::{ client_error::Error as ClientError, config::RpcSendTransactionConfig, }; use solana_sdk::{ - commitment_config::CommitmentConfig, instruction::InstructionError, pubkey::Pubkey, signature::{Keypair, Signature}, diff --git a/test-integration/schedulecommit/test-security/Cargo.toml b/test-integration/schedulecommit/test-security/Cargo.toml index 4838bb11b..ac24ed77b 100644 --- a/test-integration/schedulecommit/test-security/Cargo.toml +++ b/test-integration/schedulecommit/test-security/Cargo.toml @@ -1,17 +1,15 @@ [package] +edition.workspace = true name = "schedulecommit-test-security" version.workspace = true -edition.workspace = true [dev-dependencies] +integration-test-tools = { workspace = true } +magicblock-delegation-program-api = { workspace = true } +magicblock-magic-program-api = { workspace = true } program-schedulecommit = { workspace = true, features = ["no-entrypoint"] } -program-schedulecommit-security = { workspace = true, features = [ - "no-entrypoint", -] } +program-schedulecommit-security = { workspace = true, features = ["no-entrypoint"] } schedulecommit-client = { workspace = true } -magicblock-core = { workspace = true } -magicblock_magic_program_api = { workspace = true } -magicblock-delegation-program-api = { workspace = true } solana-rpc-client-api = { workspace = true } solana-sdk = { workspace = true } -integration-test-tools = { workspace = true } +solana-system-interface = { workspace = true } diff --git a/test-integration/schedulecommit/test-security/tests/01_invocations.rs b/test-integration/schedulecommit/test-security/tests/01_invocations.rs index 17dc1bd25..cb47ade1b 100644 --- a/test-integration/schedulecommit/test-security/tests/01_invocations.rs +++ b/test-integration/schedulecommit/test-security/tests/01_invocations.rs @@ -12,6 +12,7 @@ use solana_sdk::{ signer::Signer, transaction::Transaction, }; +use solana_system_interface::instruction as system_instruction; use crate::utils::{ create_nested_schedule_cpis_instruction, @@ -190,11 +191,8 @@ fn test_schedule_commit_directly_with_commit_ix_sandwiched() { let (_, rcvr_pda) = committees[0]; // 1. Transfer to rcvr - let transfer_ix_1 = solana_sdk::system_instruction::transfer( - &payer.pubkey(), - &rcvr_pda, - 1_000_000, - ); + let transfer_ix_1 = + system_instruction::transfer(&payer.pubkey(), &rcvr_pda, 1_000_000); // 2. Schedule commit let ix = create_schedule_commit_ix( @@ -206,11 +204,8 @@ fn test_schedule_commit_directly_with_commit_ix_sandwiched() { ); // 3. Transfer to rcvr again - let transfer_ix_2 = solana_sdk::system_instruction::transfer( - &payer.pubkey(), - &rcvr_pda, - 2_000_000, - ); + let transfer_ix_2 = + system_instruction::transfer(&payer.pubkey(), &rcvr_pda, 2_000_000); let tx = Transaction::new_signed_with_payer( &[transfer_ix_1, ix, transfer_ix_2], diff --git a/test-integration/test-chainlink/Cargo.toml b/test-integration/test-chainlink/Cargo.toml index 5b9cbe600..8ab33f014 100644 --- a/test-integration/test-chainlink/Cargo.toml +++ b/test-integration/test-chainlink/Cargo.toml @@ -15,7 +15,8 @@ program-flexi-counter = { workspace = true, features = ["no-entrypoint"] } solana-account = { workspace = true } solana-loader-v2-interface = { workspace = true, features = ["serde"] } solana-loader-v3-interface = { workspace = true, features = ["serde"] } -solana-loader-v4-interface = { workspace = true, features = ["serde"] } +solana-loader-v4-interface = { workspace = true, features = ["bincode", "serde"] } +solana-commitment-config = { workspace = true } solana-pubkey = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } diff --git a/test-integration/test-chainlink/src/accounts.rs b/test-integration/test-chainlink/src/accounts.rs index 5f99a637e..890f5583a 100644 --- a/test-integration/test-chainlink/src/accounts.rs +++ b/test-integration/test-chainlink/src/accounts.rs @@ -6,6 +6,7 @@ use solana_sdk::{ instruction::{AccountMeta, Instruction}, transaction::{SanitizedTransaction, Transaction}, }; +use solana_sdk_ids::system_program; pub fn account_shared_with_owner_and_slot( acc: &Account, @@ -29,7 +30,7 @@ impl Default for TransactionAccounts { Self { readonly_accounts: Default::default(), writable_accounts: Default::default(), - programs: vec![solana_sdk::system_program::id()], + programs: vec![system_program::id()], } } } diff --git a/test-integration/test-chainlink/src/ixtest_context.rs b/test-integration/test-chainlink/src/ixtest_context.rs index 6fad665e6..0f1bf7a48 100644 --- a/test-integration/test-chainlink/src/ixtest_context.rs +++ b/test-integration/test-chainlink/src/ixtest_context.rs @@ -19,12 +19,13 @@ use magicblock_chainlink::{ use magicblock_config::config::{ChainLinkConfig, LifecycleMode}; use program_flexi_counter::state::FlexiCounter; use solana_account::AccountSharedData; +use solana_commitment_config::CommitmentConfig; use solana_pubkey::Pubkey; use solana_rpc_client::nonblocking::rpc_client::RpcClient; use solana_rpc_client_api::config::RpcSendTransactionConfig; use solana_sdk::{ - commitment_config::CommitmentConfig, native_token::LAMPORTS_PER_SOL, - signature::Keypair, signer::Signer, transaction::Transaction, + native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, + transaction::Transaction, }; use solana_sdk_ids::native_loader; use tokio::task; @@ -72,7 +73,7 @@ impl IxtestContext { } pub async fn init_with_config(config: ChainlinkConfig) -> Self { - let validator_kp = Keypair::from_bytes(&TEST_AUTHORITY[..]).unwrap(); + let validator_kp = Keypair::try_from(&TEST_AUTHORITY[..]).unwrap(); let faucet_kp = Keypair::new(); let commitment = CommitmentConfig::confirmed(); diff --git a/test-integration/test-chainlink/src/programs.rs b/test-integration/test-chainlink/src/programs.rs index e13e82d57..1a5f664d7 100644 --- a/test-integration/test-chainlink/src/programs.rs +++ b/test-integration/test-chainlink/src/programs.rs @@ -562,15 +562,18 @@ pub mod mini { pub mod deploy { use std::{fs, path::PathBuf, process::Command, sync::Arc}; - use solana_loader_v4_interface::instruction::LoaderV4Instruction as LoaderInstructionV4; + use solana_loader_v4_interface::instruction::{ + self as loader_v4_instruction, + LoaderV4Instruction as LoaderInstructionV4, + }; use solana_rpc_client::nonblocking::rpc_client::RpcClient; use solana_sdk::{ instruction::{AccountMeta, Instruction}, - loader_v4, loader_v4_instruction, native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, }; + use solana_sdk_ids::{loader_v4, system_program}; use solana_system_interface::instruction as system_instruction; use tracing::*; @@ -651,8 +654,10 @@ pub mod deploy { .await; debug!("Created program account: {signature}"); } else { - let retract_instruction = - loader_v4::retract(&program_kp.pubkey(), &auth_kp.pubkey()); + let retract_instruction = loader_v4_instruction::retract( + &program_kp.pubkey(), + &auth_kp.pubkey(), + ); let signature = send_instructions( &rpc_client, &[retract_instruction], @@ -815,6 +820,7 @@ pub mod not_working { signer::Signer, transaction::Transaction, }; + use solana_sdk_ids::system_program; use solana_system_interface::instruction as system_instruction; use tracing::*; @@ -1115,10 +1121,7 @@ pub mod not_working { false, ), // [] System program - AccountMeta::new_readonly( - solana_sdk::system_program::id(), - false, - ), + AccountMeta::new_readonly(system_program::id(), false), // [signer] The program's authority AccountMeta::new_readonly(auth_kp.pubkey(), true), ], diff --git a/test-integration/test-chainlink/tests/chain_pubsub_client.rs b/test-integration/test-chainlink/tests/chain_pubsub_client.rs index c4609c012..4e1a1c8da 100644 --- a/test-integration/test-chainlink/tests/chain_pubsub_client.rs +++ b/test-integration/test-chainlink/tests/chain_pubsub_client.rs @@ -14,11 +14,10 @@ use magicblock_chainlink::{ utils::{airdrop, random_pubkey, PUBSUB_URL, RPC_URL}, }, }; +use solana_commitment_config::CommitmentConfig; use solana_pubkey::Pubkey; use solana_rpc_client::nonblocking::rpc_client::RpcClient; -use solana_sdk::{ - clock::Clock, commitment_config::CommitmentConfig, sysvar::clock, -}; +use solana_sdk::{clock::Clock, sysvar::clock}; use tokio::{sync::mpsc, task}; async fn setup() -> (ChainPubsubClientImpl, mpsc::Receiver) diff --git a/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs b/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs index 0ea78b549..c381012e7 100644 --- a/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs +++ b/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs @@ -11,8 +11,11 @@ use magicblock_chainlink::{ }; use solana_account::ReadableAccount; use solana_pubkey::{pubkey, Pubkey}; -use solana_sdk::signature::{Keypair, Signer}; -use spl_token::{solana_program::program_pack::Pack, state::AccountState}; +use solana_sdk::{ + program_pack::Pack, + signature::{Keypair, Signer}, +}; +use spl_token::state::AccountState; use test_chainlink::test_context::TestContext; use tracing::debug; diff --git a/test-integration/test-chainlink/tests/ix_full_scenarios.rs b/test-integration/test-chainlink/tests/ix_full_scenarios.rs index f0591bb26..89e28a033 100644 --- a/test-integration/test-chainlink/tests/ix_full_scenarios.rs +++ b/test-integration/test-chainlink/tests/ix_full_scenarios.rs @@ -10,6 +10,7 @@ use magicblock_chainlink::{ use solana_loader_v4_interface::state::LoaderV4Status; use solana_pubkey::Pubkey; use solana_sdk::{signature::Keypair, signer::Signer}; +use solana_sdk_ids::system_program; use test_chainlink::{ accounts::{sanitized_transaction_with_accounts, TransactionAccounts}, ixtest_context::IxtestContext, @@ -71,7 +72,7 @@ async fn ixtest_accounts_for_tx_2_delegated_3_readonly_3_programs_one_native() { // Programs let program_flexi_counter = program_flexi_counter::id(); - let program_system = solana_sdk::system_program::id(); + let program_system = system_program::id(); let tx_accounts = TransactionAccounts { readonly_accounts: vec![ diff --git a/test-integration/test-chainlink/tests/ix_programs.rs b/test-integration/test-chainlink/tests/ix_programs.rs index 5fe3d89be..6b5b56b08 100644 --- a/test-integration/test-chainlink/tests/ix_programs.rs +++ b/test-integration/test-chainlink/tests/ix_programs.rs @@ -10,11 +10,10 @@ use magicblock_chainlink::{ AccountFetchOrigin, }; use program_mini::common::IdlType; +use solana_commitment_config::CommitmentConfig; use solana_loader_v4_interface::state::LoaderV4Status; use solana_rpc_client::nonblocking::rpc_client::RpcClient; -use solana_sdk::{ - commitment_config::CommitmentConfig, signature::Keypair, signer::Signer, -}; +use solana_sdk::{signature::Keypair, signer::Signer}; use test_chainlink::{ assert_program_owned_by_loader, fetch_and_assert_loaded_program_v1_v2_v4, fetch_and_assert_loaded_program_v3, diff --git a/test-integration/test-chainlink/tests/ix_remote_account_provider.rs b/test-integration/test-chainlink/tests/ix_remote_account_provider.rs index f60bbc33f..c1f6da65c 100644 --- a/test-integration/test-chainlink/tests/ix_remote_account_provider.rs +++ b/test-integration/test-chainlink/tests/ix_remote_account_provider.rs @@ -15,10 +15,10 @@ use magicblock_chainlink::{ AccountFetchOrigin, }; use magicblock_config::config::LifecycleMode; +use solana_commitment_config::CommitmentConfig; use solana_rpc_client_api::{ client_error::ErrorKind, config::RpcAccountInfoConfig, request::RpcError, }; -use solana_sdk::commitment_config::CommitmentConfig; use tokio::sync::mpsc; use tracing::{debug, info}; @@ -82,7 +82,7 @@ async fn ixtest_existing_account_for_future_slot() { let cs = current_slot(rpc_client).await; let res = rpc_client - .get_account_with_config( + .get_ui_account_with_config( &pubkey, RpcAccountInfoConfig { commitment: Some(CommitmentConfig::processed()), @@ -95,7 +95,7 @@ async fn ixtest_existing_account_for_future_slot() { assert!(res.is_err(), "Expected error for future slot account fetch"); let err = res.unwrap_err(); assert!(matches!( - err.kind, + *err.kind, ErrorKind::RpcError(RpcError::ForUser(_)) )); assert!(err diff --git a/test-integration/test-cloning/Cargo.toml b/test-integration/test-cloning/Cargo.toml index b347a464f..987a54148 100644 --- a/test-integration/test-cloning/Cargo.toml +++ b/test-integration/test-cloning/Cargo.toml @@ -12,6 +12,7 @@ test-chainlink = { workspace = true } magicblock-delegation-program-api = { workspace = true, features = ["encryption"] } solana-loader-v4-interface = { workspace = true, features = ["serde"] } solana-sdk = { workspace = true } +solana-system-interface = { workspace = true } spl-token = { workspace = true } spl-memo-interface = { workspace = true } test-kit = { workspace = true } diff --git a/test-integration/test-cloning/tests/04_escrow_transfer.rs b/test-integration/test-cloning/tests/04_escrow_transfer.rs index bcf2f6a09..f222798c4 100644 --- a/test-integration/test-cloning/tests/04_escrow_transfer.rs +++ b/test-integration/test-cloning/tests/04_escrow_transfer.rs @@ -1,8 +1,9 @@ use integration_test_tools::IntegrationTestContext; use solana_sdk::{ native_token::LAMPORTS_PER_SOL, pubkey::Pubkey, signature::Keypair, - signer::Signer, system_instruction, + signer::Signer, }; +use solana_system_interface::instruction as system_instruction; use test_kit::init_logger; use tracing::*; diff --git a/test-integration/test-cloning/tests/05_parallel-cloning.rs b/test-integration/test-cloning/tests/05_parallel-cloning.rs index fa92ecfd2..f6511f64d 100644 --- a/test-integration/test-cloning/tests/05_parallel-cloning.rs +++ b/test-integration/test-cloning/tests/05_parallel-cloning.rs @@ -3,8 +3,9 @@ use std::{sync::Arc, thread}; use integration_test_tools::IntegrationTestContext; use solana_sdk::{ native_token::LAMPORTS_PER_SOL, pubkey::Pubkey, signature::Keypair, - signer::Signer, system_instruction, + signer::Signer, }; +use solana_system_interface::instruction as system_instruction; use test_kit::init_logger; use tokio::task::JoinSet; use tracing::*; diff --git a/test-integration/test-cloning/tests/06_escrows.rs b/test-integration/test-cloning/tests/06_escrows.rs index 346e1d087..c06f36d99 100644 --- a/test-integration/test-cloning/tests/06_escrows.rs +++ b/test-integration/test-cloning/tests/06_escrows.rs @@ -1,8 +1,9 @@ use integration_test_tools::{dlp_interface, IntegrationTestContext}; use solana_sdk::{ account::Account, native_token::LAMPORTS_PER_SOL, pubkey::Pubkey, - signature::Keypair, signer::Signer, system_instruction, + signature::Keypair, signer::Signer, }; +use solana_system_interface::instruction as system_instruction; use test_kit::init_logger; use tracing::*; diff --git a/test-integration/test-cloning/tests/10_post_delegation_token_transfer.rs b/test-integration/test-cloning/tests/10_post_delegation_token_transfer.rs index 7d96119df..abc56995c 100644 --- a/test-integration/test-cloning/tests/10_post_delegation_token_transfer.rs +++ b/test-integration/test-cloning/tests/10_post_delegation_token_transfer.rs @@ -10,12 +10,12 @@ use integration_test_tools::{ loaded_accounts::DLP_TEST_AUTHORITY_BYTES, IntegrationTestContext, }; use solana_sdk::{ - signature::Keypair, signer::Signer, system_instruction, + program_pack::Pack, signature::Keypair, signer::Signer, transaction::Transaction, }; +use solana_system_interface::instruction as system_instruction; use spl_token::{ instruction as spl_token_ix, - solana_program::program_pack::Pack, state::{Account as TokenAccount, Mint}, }; use test_kit::init_logger; @@ -163,7 +163,7 @@ fn test_post_delegation_action_executes_spl_token_transfer_100() { let post_actions: Vec = vec![transfer_100_ix.cleartext()]; - let validator = Keypair::from_bytes(&DLP_TEST_AUTHORITY_BYTES) + let validator = Keypair::try_from(&DLP_TEST_AUTHORITY_BYTES[..]) .unwrap() .pubkey(); let delegate_with_actions_ix = delegate_with_actions( diff --git a/test-integration/test-committor-service/Cargo.toml b/test-integration/test-committor-service/Cargo.toml index 65ead70d8..53e29921d 100644 --- a/test-integration/test-committor-service/Cargo.toml +++ b/test-integration/test-committor-service/Cargo.toml @@ -25,10 +25,13 @@ program-flexi-counter = { workspace = true, features = ["no-entrypoint"] } program-schedulecommit = { workspace = true, features = ["no-entrypoint"] } rand = { workspace = true } solana-account = { workspace = true } +solana-commitment-config = { workspace = true } solana-pubkey = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-sdk = { workspace = true } +solana-sdk-ids = { workspace = true } +solana-system-interface = { workspace = true } test-kit = { workspace = true } tokio = { workspace = true } diff --git a/test-integration/test-committor-service/tests/common.rs b/test-integration/test-committor-service/tests/common.rs index 6a7f5dcea..66f896211 100644 --- a/test-integration/test-committor-service/tests/common.rs +++ b/test-integration/test-committor-service/tests/common.rs @@ -28,10 +28,10 @@ use magicblock_core::{ use magicblock_rpc_client::MagicblockRpcClient; use magicblock_table_mania::{GarbageCollectorConfig, TableMania}; use solana_account::Account; +use solana_commitment_config::CommitmentConfig; use solana_pubkey::Pubkey; use solana_rpc_client::nonblocking::rpc_client::RpcClient; use solana_sdk::{ - commitment_config::CommitmentConfig, signature::{Keypair, Signature}, signer::Signer, }; diff --git a/test-integration/test-committor-service/tests/test_intent_executor.rs b/test-integration/test-committor-service/tests/test_intent_executor.rs index a0d52e9e1..5355379d3 100644 --- a/test-integration/test-committor-service/tests/test_intent_executor.rs +++ b/test-integration/test-committor-service/tests/test_intent_executor.rs @@ -54,10 +54,10 @@ use program_flexi_counter::{ state::{FlexiCounter, FAIL_UNDELEGATION_LABEL}, }; use solana_account::Account; +use solana_commitment_config::CommitmentConfig; use solana_pubkey::Pubkey; use solana_rpc_client::nonblocking::rpc_client::RpcClient; use solana_sdk::{ - commitment_config::CommitmentConfig, hash::Hash, instruction::InstructionError, native_token::LAMPORTS_PER_SOL, @@ -65,6 +65,7 @@ use solana_sdk::{ signature::{Keypair, Signer}, transaction::{Transaction, TransactionError}, }; +use solana_sdk_ids::system_program; use crate::{ common::{MockActionsCallbackExecutor, TestFixture}, @@ -1472,7 +1473,7 @@ fn succeeding_commit_action( is_writable: true, }, ShortAccountMeta { - pubkey: solana_sdk::system_program::id(), + pubkey: system_program::id(), is_writable: false, }, ]; @@ -1514,7 +1515,7 @@ fn succeeding_undelegate_action( is_writable: true, }, ShortAccountMeta { - pubkey: solana_sdk::system_program::id(), + pubkey: system_program::id(), is_writable: false, }, ]; @@ -1557,7 +1558,7 @@ fn failing_undelegate_action( is_writable: true, }, ShortAccountMeta { - pubkey: solana_sdk::system_program::id(), + pubkey: system_program::id(), is_writable: false, }, ]; diff --git a/test-integration/test-committor-service/tests/test_ix_commit_local.rs b/test-integration/test-committor-service/tests/test_ix_commit_local.rs index 5467a620f..dfe3c1db8 100644 --- a/test-integration/test-committor-service/tests/test_ix_commit_local.rs +++ b/test-integration/test-committor-service/tests/test_ix_commit_local.rs @@ -21,11 +21,11 @@ use magicblock_rpc_client::MagicblockRpcClient; use program_flexi_counter::state::FlexiCounter; use program_schedulecommit::ScheduleCommitType; use solana_account::{Account, ReadableAccount}; +use solana_commitment_config::CommitmentConfig; use solana_pubkey::Pubkey; use solana_rpc_client::nonblocking::rpc_client::RpcClient; use solana_sdk::{ - commitment_config::CommitmentConfig, hash::Hash, signature::Keypair, - signer::Signer, transaction::Transaction, + hash::Hash, signature::Keypair, signer::Signer, transaction::Transaction, }; use test_kit::init_logger; use tokio::task::JoinSet; diff --git a/test-integration/test-committor-service/tests/test_transaction_preparator.rs b/test-integration/test-committor-service/tests/test_transaction_preparator.rs index d792c8581..78f585df1 100644 --- a/test-integration/test-committor-service/tests/test_transaction_preparator.rs +++ b/test-integration/test-committor-service/tests/test_transaction_preparator.rs @@ -16,7 +16,8 @@ use magicblock_program::{ magic_scheduled_base_intent::{BaseAction, ProgramArgs}, }; use solana_pubkey::Pubkey; -use solana_sdk::{signer::Signer, system_program}; +use solana_sdk::signer::Signer; +use solana_sdk_ids::system_program; use crate::common::{ create_buffer_commit_task, create_committed_account, generate_random_bytes, diff --git a/test-integration/test-committor-service/tests/utils/mod.rs b/test-integration/test-committor-service/tests/utils/mod.rs index 8a049e7fc..544add94b 100644 --- a/test-integration/test-committor-service/tests/utils/mod.rs +++ b/test-integration/test-committor-service/tests/utils/mod.rs @@ -29,7 +29,7 @@ pub fn get_validator_auth() -> Keypair { 42, 110, 181, 98, 158, 222, 194, 130, 93, 175, 100, 190, 106, 9, 69, 156, 80, 96, 72, ]; - Keypair::from_bytes(&VALIDATOR_AUTHORITY).unwrap() + Keypair::try_from(&VALIDATOR_AUTHORITY[..]).unwrap() } pub fn ensure_validator_authority() -> Keypair { diff --git a/test-integration/test-committor-service/tests/utils/transactions.rs b/test-integration/test-committor-service/tests/utils/transactions.rs index 886c6ca8f..5e01d0005 100644 --- a/test-integration/test-committor-service/tests/utils/transactions.rs +++ b/test-integration/test-committor-service/tests/utils/transactions.rs @@ -1,15 +1,16 @@ use solana_account::Account; +use solana_commitment_config::CommitmentConfig; use solana_pubkey::Pubkey; use solana_rpc_client::nonblocking::rpc_client::RpcClient; use solana_rpc_client_api::config::{ RpcSendTransactionConfig, RpcTransactionConfig, }; use solana_sdk::{ - commitment_config::CommitmentConfig, native_token::LAMPORTS_PER_SOL, signature::{Keypair, Signature, Signer}, transaction::Transaction, }; +use solana_system_interface::instruction as system_instruction; use tracing::{debug, error}; use crate::utils::instructions::{ @@ -126,6 +127,50 @@ pub async fn print_tx_logs(rpc_client: &RpcClient, signature: &Signature) { println!("logs: {:#?}", fetch_tx_logs(rpc_client, signature).await); } +async fn airdrop_and_confirm( + rpc_client: &RpcClient, + pubkey: &Pubkey, + lamports: u64, + label: &str, +) { + const AIRDROP_CHUNK: u64 = LAMPORTS_PER_SOL; + const MAX_ROUNDS: usize = 50; + const RETRY_SLEEP_MS: u64 = 200; + + let mut current = rpc_client.get_balance(pubkey).await.unwrap_or(0); + if current >= lamports { + debug!( + "{} already funded: {} SOL", + label, + current as f64 / LAMPORTS_PER_SOL as f64 + ); + return; + } + + for _ in 0..MAX_ROUNDS { + let chunk = (lamports - current).min(AIRDROP_CHUNK); + let _sig = rpc_client.request_airdrop(pubkey, chunk).await.unwrap(); + + for _ in 0..MAX_ROUNDS { + current = rpc_client.get_balance(pubkey).await.unwrap_or(0); + if current >= lamports { + debug!( + "{} funded: {} SOL", + label, + current as f64 / LAMPORTS_PER_SOL as f64 + ); + return; + } + + crate::utils::sleep_millis(RETRY_SLEEP_MS).await; + } + } + + panic!( + "Failed to fund {label} to required balance: current={current}, target={lamports}" + ); +} + #[allow(dead_code)] pub async fn tx_logs_contain( rpc_client: &RpcClient, @@ -157,14 +202,9 @@ pub async fn init_and_delegate_account_on_chain( bytes: u64, label: Option, ) -> (Pubkey, Account) { - let rpc_client = RpcClient::new("http://localhost:7799".to_string()); - - rpc_client - .request_airdrop(&counter_auth.pubkey(), 777 * LAMPORTS_PER_SOL) - .await - .unwrap(); - debug!("Airdropped to counter auth: {} SOL", 777 * LAMPORTS_PER_SOL); + const BASE_COUNTER_AUTH_BALANCE: u64 = LAMPORTS_PER_SOL; + let rpc_client = RpcClient::new("http://localhost:7799".to_string()); let InitAccountAndDelegateIxs { init: init_counter_ix, reallocs: realloc_ixs, @@ -172,8 +212,16 @@ pub async fn init_and_delegate_account_on_chain( pda, rent_excempt, } = init_account_and_delegate_ixs(counter_auth.pubkey(), bytes, label); + let min_balance = BASE_COUNTER_AUTH_BALANCE + rent_excempt; + + airdrop_and_confirm( + &rpc_client, + &counter_auth.pubkey(), + min_balance, + "counter auth", + ) + .await; - let latest_block_hash = rpc_client.get_latest_blockhash().await.unwrap(); // 1. Init account rpc_client .send_and_confirm_transaction_with_spinner_and_config( @@ -181,7 +229,7 @@ pub async fn init_and_delegate_account_on_chain( &[init_counter_ix], Some(&counter_auth.pubkey()), &[&counter_auth], - latest_block_hash, + rpc_client.get_latest_blockhash().await.unwrap(), ), CommitmentConfig::confirmed(), RpcSendTransactionConfig { @@ -193,14 +241,32 @@ pub async fn init_and_delegate_account_on_chain( .expect("Failed to init account"); debug!("Init account: {:?}", pda); - // 2. Airdrop to account for extra rent needed for reallocs + // 2. Fund account for extra rent needed for reallocs. + // A direct transfer is more deterministic here than a fresh airdrop when + // multiple test tasks are racing in CI. rpc_client - .request_airdrop(&pda, rent_excempt) + .send_and_confirm_transaction_with_spinner_and_config( + &Transaction::new_signed_with_payer( + &[system_instruction::transfer( + &counter_auth.pubkey(), + &pda, + rent_excempt, + )], + Some(&counter_auth.pubkey()), + &[&counter_auth], + rpc_client.get_latest_blockhash().await.unwrap(), + ), + CommitmentConfig::confirmed(), + RpcSendTransactionConfig { + skip_preflight: true, + ..Default::default() + }, + ) .await - .unwrap(); + .expect("Failed to fund account for reallocs"); debug!( - "Airdropped to account: {:4} {}SOL to pay rent for {} bytes", + "Funded account: {:4} {}SOL to pay rent for {} bytes", pda, rent_excempt as f64 / LAMPORTS_PER_SOL as f64, bytes @@ -212,7 +278,7 @@ pub async fn init_and_delegate_account_on_chain( realloc_ix_chunk, Some(&counter_auth.pubkey()), &[&counter_auth], - latest_block_hash, + rpc_client.get_latest_blockhash().await.unwrap(), ); rpc_client .send_and_confirm_transaction_with_spinner_and_config( @@ -235,7 +301,7 @@ pub async fn init_and_delegate_account_on_chain( &[delegate_ix], Some(&counter_auth.pubkey()), &[&counter_auth], - latest_block_hash, + rpc_client.get_latest_blockhash().await.unwrap(), ), CommitmentConfig::confirmed(), RpcSendTransactionConfig { @@ -256,12 +322,17 @@ pub async fn init_and_delegate_account_on_chain( pub async fn init_and_delegate_order_book_on_chain( payer: &Keypair, ) -> (Pubkey, Account) { + const MIN_ORDER_BOOK_PAYER_BALANCE: u64 = 2 * LAMPORTS_PER_SOL; + let rpc_client = RpcClient::new("http://localhost:7799".to_string()); - rpc_client - .request_airdrop(&payer.pubkey(), 777 * LAMPORTS_PER_SOL) - .await - .unwrap(); + airdrop_and_confirm( + &rpc_client, + &payer.pubkey(), + MIN_ORDER_BOOK_PAYER_BALANCE, + "payer", + ) + .await; let InitOrderBookAndDelegateIxs { init, @@ -270,8 +341,6 @@ pub async fn init_and_delegate_order_book_on_chain( order_book, } = init_order_book_account_and_delegate_ixs(payer.pubkey()); - let latest_block_hash = rpc_client.get_latest_blockhash().await.unwrap(); - // Init account rpc_client .send_and_confirm_transaction_with_spinner_and_config( @@ -279,7 +348,7 @@ pub async fn init_and_delegate_order_book_on_chain( &[init], Some(&payer.pubkey()), &[payer, &book_manager], - latest_block_hash, + rpc_client.get_latest_blockhash().await.unwrap(), ), CommitmentConfig::confirmed(), RpcSendTransactionConfig { @@ -297,7 +366,7 @@ pub async fn init_and_delegate_order_book_on_chain( &[delegate], Some(&payer.pubkey()), &[&payer], - latest_block_hash, + rpc_client.get_latest_blockhash().await.unwrap(), ), CommitmentConfig::confirmed(), RpcSendTransactionConfig { @@ -317,17 +386,24 @@ pub async fn init_and_delegate_order_book_on_chain( pub async fn fund_validator_auth_and_ensure_validator_fees_vault( validator_auth: &Keypair, ) { + const MIN_VALIDATOR_BALANCE: u64 = 20 * LAMPORTS_PER_SOL; + let rpc_client = RpcClient::new("http://localhost:7799".to_string()); - rpc_client - .request_airdrop(&validator_auth.pubkey(), 777 * LAMPORTS_PER_SOL) - .await - .unwrap(); + airdrop_and_confirm( + &rpc_client, + &validator_auth.pubkey(), + MIN_VALIDATOR_BALANCE, + "validator", + ) + .await; debug!("Airdropped to validator: {} ", validator_auth.pubkey(),); - let validator_fees_vault_exists = rpc_client - .get_account(&validator_auth.pubkey()) - .await - .is_ok(); + let validator_fees_vault = + dlp_api::pda::validator_fees_vault_pda_from_validator( + &validator_auth.pubkey(), + ); + let validator_fees_vault_exists = + rpc_client.get_account(&validator_fees_vault).await.is_ok(); if !validator_fees_vault_exists { let latest_block_hash = diff --git a/test-integration/test-config/Cargo.toml b/test-integration/test-config/Cargo.toml index 694af0ec4..57a97aa63 100644 --- a/test-integration/test-config/Cargo.toml +++ b/test-integration/test-config/Cargo.toml @@ -13,5 +13,7 @@ program-flexi-counter = { workspace = true, features = ["no-entrypoint"] } serial_test = { workspace = true, features = ["file_locks"] } solana-rpc-client = { workspace = true } solana-sdk = { workspace = true } +solana-sdk-ids = { workspace = true } +solana-system-interface = { workspace = true } tempfile = { workspace = true } test-kit = { workspace = true } diff --git a/test-integration/test-config/src/lib.rs b/test-integration/test-config/src/lib.rs index 9975a2bf2..f0a3762a6 100644 --- a/test-integration/test-config/src/lib.rs +++ b/test-integration/test-config/src/lib.rs @@ -20,9 +20,10 @@ use program_flexi_counter::instruction::{ create_add_ix, create_delegate_ix, create_init_ix, }; use solana_sdk::{ - address_lookup_table, native_token::LAMPORTS_PER_SOL, signature::Keypair, - signer::Signer, transaction::Transaction, + native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, + transaction::Transaction, }; +use solana_sdk_ids::address_lookup_table; use tempfile::TempDir; use tracing::*; @@ -50,7 +51,6 @@ pub fn start_validator_with_clone_config( ], chainlink: ChainLinkConfig { prepare_lookup_tables, - auto_airdrop_lamports: 0, ..Default::default() }, accountsdb: AccountsDbConfig { @@ -169,7 +169,7 @@ pub fn delegate_and_clone( pub fn count_lookup_table_transactions_on_chain( ctx: &IntegrationTestContext, ) -> anyhow::Result { - let lookup_table_program_id = address_lookup_table::program::id(); + let lookup_table_program_id = address_lookup_table::id(); let sigs = ctx.get_signaturestats_for_address_chain(&lookup_table_program_id)?; diff --git a/test-integration/test-config/tests/allowed_programs.rs b/test-integration/test-config/tests/allowed_programs.rs index a4e6f6770..abdbfe527 100644 --- a/test-integration/test-config/tests/allowed_programs.rs +++ b/test-integration/test-config/tests/allowed_programs.rs @@ -56,7 +56,6 @@ fn run_allowed_programs(allow_committor_program: bool) { ], chainlink: ChainLinkConfig { prepare_lookup_tables: false, - auto_airdrop_lamports: 0, // Only allow flexicounter program, block the other one allowed_programs, ..Default::default() diff --git a/test-integration/test-config/tests/auto_airdrop_feepayer.rs b/test-integration/test-config/tests/auto_airdrop_feepayer.rs deleted file mode 100644 index 7971ae4e5..000000000 --- a/test-integration/test-config/tests/auto_airdrop_feepayer.rs +++ /dev/null @@ -1,90 +0,0 @@ -use std::str::FromStr; - -use cleanass::{assert, assert_eq}; -use integration_test_tools::{ - expect, - loaded_accounts::LoadedAccounts, - validator::{cleanup, start_magicblock_validator_with_config_struct}, - IntegrationTestContext, -}; -use magicblock_config::{ - config::{ - accounts::AccountsDbConfig, chain::ChainLinkConfig, - ledger::LedgerConfig, LifecycleMode, - }, - types::network::Remote, - ValidatorParams, -}; -use solana_sdk::{signature::Keypair, signer::Signer, system_instruction}; -use test_kit::init_logger; - -#[test] -fn test_auto_airdrop_feepayer_balance_after_tx() { - init_logger!(); - - // Build an Ephemeral validator config that enables auto airdrop for fee payers - let config = ValidatorParams { - lifecycle: LifecycleMode::Ephemeral, - remotes: vec![ - Remote::from_str(IntegrationTestContext::url_chain()).unwrap(), - Remote::from_str(IntegrationTestContext::ws_url_chain()).unwrap(), - ], - accountsdb: AccountsDbConfig::default(), - chainlink: ChainLinkConfig { - auto_airdrop_lamports: 1_000_000_000, - ..Default::default() - }, - ledger: LedgerConfig { - reset: true, - ..Default::default() - }, - ..Default::default() - }; - - // Start the validator - let (_tmpdir, Some(mut validator), port) = - start_magicblock_validator_with_config_struct( - config, - &LoadedAccounts::with_delegation_program_test_authority(), - ) - else { - panic!("validator should set up correctly"); - }; - - // Create context and wait for the ephem validator to start producing slots - let ctx = expect!( - IntegrationTestContext::try_new_with_ephem_port(port), - validator - ); - expect!(ctx.wait_for_next_slot_ephem(), validator); - - // Create a brand new fee payer with zero balance - let payer = Keypair::new(); - let recipient = Keypair::new(); - - // Send a zero lamport transfers to trigger account creation/cloning for the new fee payer - // This should cause the validator to auto-airdrop 1 SOL to the payer - // NOTE: we send two instructions to bypass the noop transaction optimization - let ix1 = - system_instruction::transfer(&payer.pubkey(), &recipient.pubkey(), 0); - let ix2 = - system_instruction::transfer(&payer.pubkey(), &recipient.pubkey(), 0); - let (sig, confirmed) = expect!( - ctx.send_and_confirm_instructions_with_payer_ephem(&[ix1, ix2], &payer), - validator - ); - - assert!( - !confirmed, - cleanup(&mut validator), - "Transaction is not confirmed (due to invalid writable): {sig}", - ); - - // Fetch the payer balance from the ephemeral validator and assert it equals 1_000_000_000 - let balance = - expect!(ctx.fetch_ephem_account_balance(&payer.pubkey()), validator); - assert_eq!(balance, 1_000_000_000, cleanup(&mut validator)); - - // Cleanup validator process - cleanup(&mut validator); -} diff --git a/test-integration/test-ledger-restore/Cargo.toml b/test-integration/test-ledger-restore/Cargo.toml index fbf3d674f..c1c4e33aa 100644 --- a/test-integration/test-ledger-restore/Cargo.toml +++ b/test-integration/test-ledger-restore/Cargo.toml @@ -12,8 +12,11 @@ tracing = { workspace = true } program-flexi-counter = { workspace = true, features = ["no-entrypoint"] } magicblock-accounts-db = { workspace = true } magicblock-config = { workspace = true } +solana-commitment-config = { workspace = true } solana-rpc-client = { workspace = true } solana-sdk = { workspace = true } +solana-sdk-ids = { workspace = true } +solana-system-interface = { workspace = true } solana-transaction-status = { workspace = true } tempfile = { workspace = true } test-kit = { workspace = true } diff --git a/test-integration/test-ledger-restore/src/lib.rs b/test-integration/test-ledger-restore/src/lib.rs index 46ff517e5..bdd9b2266 100644 --- a/test-integration/test-ledger-restore/src/lib.rs +++ b/test-integration/test-ledger-restore/src/lib.rs @@ -40,6 +40,7 @@ use solana_sdk::{ signer::Signer, transaction::Transaction, }; +use solana_system_interface::instruction as system_instruction; use tempfile::TempDir; use tracing::*; @@ -331,7 +332,8 @@ pub fn init_validator_fees_vault( } // DLP authority in integration tests - let dlp_authority = Keypair::from_bytes(&DLP_TEST_AUTHORITY_BYTES).unwrap(); + let dlp_authority = + Keypair::try_from(&DLP_TEST_AUTHORITY_BYTES[..]).unwrap(); let latest_block_hash = chain_ctx.try_get_latest_blockhash_chain().unwrap(); let ix = dlp_api::instruction_builder::init_validator_fees_vault( @@ -481,7 +483,7 @@ pub fn transfer_lamports( lamports: u64, ) -> Signature { let transfer_ix = - solana_sdk::system_instruction::transfer(&from.pubkey(), to, lamports); + system_instruction::transfer(&from.pubkey(), to, lamports); let (sig, confirmed) = expect!( ctx.send_and_confirm_instructions_with_payer_ephem( &[transfer_ix], diff --git a/test-integration/test-ledger-restore/tests/01_single_transfer.rs b/test-integration/test-ledger-restore/tests/01_single_transfer.rs index 7abdc9a18..f41528fae 100644 --- a/test-integration/test-ledger-restore/tests/01_single_transfer.rs +++ b/test-integration/test-ledger-restore/tests/01_single_transfer.rs @@ -5,8 +5,8 @@ use integration_test_tools::{ expect, loaded_accounts::LoadedAccounts, tmpdir::resolve_tmp_dir, unwrap, validator::cleanup, }; +use solana_commitment_config::CommitmentConfig; use solana_sdk::{ - commitment_config::CommitmentConfig, pubkey::Pubkey, signature::{Keypair, Signature}, signer::Signer, diff --git a/test-integration/test-ledger-restore/tests/02_two_transfers.rs b/test-integration/test-ledger-restore/tests/02_two_transfers.rs index b2ea819eb..796d2449f 100644 --- a/test-integration/test-ledger-restore/tests/02_two_transfers.rs +++ b/test-integration/test-ledger-restore/tests/02_two_transfers.rs @@ -4,8 +4,8 @@ use cleanass::{assert, assert_eq}; use integration_test_tools::{ expect, tmpdir::resolve_tmp_dir, unwrap, validator::cleanup, }; +use solana_commitment_config::CommitmentConfig; use solana_sdk::{ - commitment_config::CommitmentConfig, pubkey::Pubkey, signature::{Keypair, Signature}, }; diff --git a/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs b/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs index a14912ecc..3be9893ad 100644 --- a/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs +++ b/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs @@ -6,10 +6,11 @@ use integration_test_tools::{ validator::cleanup, }; use solana_sdk::{ - account::Account, instruction::Instruction, loader_v4, - native_token::LAMPORTS_PER_SOL, pubkey::Pubkey, signature::Keypair, - signer::Signer, transaction::Transaction, + account::Account, instruction::Instruction, native_token::LAMPORTS_PER_SOL, + pubkey::Pubkey, signature::Keypair, signer::Signer, + transaction::Transaction, }; +use solana_sdk_ids::loader_v4; use test_ledger_restore::{ setup_validator_with_local_remote, wait_for_ledger_persist, TMP_DIR_LEDGER, }; @@ -79,7 +80,7 @@ fn write(ledger_path: &Path) -> (Child, u64) { let Account { owner, executable, .. } = account; - assert_eq!(owner, loader_v4::ID, cleanup(&mut validator)); + assert_eq!(owner, loader_v4::id(), cleanup(&mut validator)); assert!(executable, cleanup(&mut validator)); let slot = wait_for_ledger_persist(&ctx, &mut validator); @@ -109,7 +110,7 @@ fn read(ledger_path: &Path) -> Child { let Account { owner, executable, .. } = account; - assert_eq!(owner, loader_v4::ID, cleanup(&mut validator)); + assert_eq!(owner, loader_v4::id(), cleanup(&mut validator)); assert!(executable, cleanup(&mut validator)); validator diff --git a/test-integration/test-magicblock-api/Cargo.toml b/test-integration/test-magicblock-api/Cargo.toml index e652e065a..b8fc2d2ce 100644 --- a/test-integration/test-magicblock-api/Cargo.toml +++ b/test-integration/test-magicblock-api/Cargo.toml @@ -7,16 +7,17 @@ integration-test-tools = { workspace = true } [dev-dependencies] tracing = { workspace = true } -cleanass = { workspace = true } magicblock-api = { workspace = true } magicblock-config = { workspace = true } magicblock-delegation-program-api = { workspace = true } magicblock-program = { path = "../../programs/magicblock" } magicblock-validator-admin = { path = "../../magicblock-validator-admin" } magic-domain-program = { workspace = true } +solana-commitment-config = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-sdk = { workspace = true } +solana-system-interface = { workspace = true } solana-transaction-status = { workspace = true } test-kit = { workspace = true } tokio = { workspace = true } diff --git a/test-integration/test-magicblock-api/tests/test_claim_fees.rs b/test-integration/test-magicblock-api/tests/test_claim_fees.rs index b48b104b7..a22acc556 100644 --- a/test-integration/test-magicblock-api/tests/test_claim_fees.rs +++ b/test-integration/test-magicblock-api/tests/test_claim_fees.rs @@ -5,9 +5,9 @@ use integration_test_tools::{ loaded_accounts::LoadedAccounts, IntegrationTestContext, }; use magicblock_validator_admin::claim_fees::ClaimFeesTask; +use solana_commitment_config::CommitmentConfig; use solana_rpc_client::rpc_client::RpcClient; use solana_sdk::{ - commitment_config::CommitmentConfig, pubkey::Pubkey, signature::{Keypair, Signer}, transaction::Transaction, diff --git a/test-integration/test-magicblock-api/tests/test_clocks_match.rs b/test-integration/test-magicblock-api/tests/test_clocks_match.rs index de4592580..71a6f221f 100644 --- a/test-integration/test-magicblock-api/tests/test_clocks_match.rs +++ b/test-integration/test-magicblock-api/tests/test_clocks_match.rs @@ -3,8 +3,8 @@ use std::time::Duration; use integration_test_tools::IntegrationTestContext; use solana_sdk::{ native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, - system_instruction, }; +use solana_system_interface::instruction as system_instruction; use test_kit::init_logger; use tracing::*; diff --git a/test-integration/test-magicblock-api/tests/test_domain_registry.rs b/test-integration/test-magicblock-api/tests/test_domain_registry.rs index 42d559615..cf7ad23ce 100644 --- a/test-integration/test-magicblock-api/tests/test_domain_registry.rs +++ b/test-integration/test-magicblock-api/tests/test_domain_registry.rs @@ -12,9 +12,9 @@ use mdp::state::{ status::ErStatus, version::v0::RecordV0, }; +use solana_commitment_config::CommitmentConfig; use solana_rpc_client::rpc_client::RpcClient; use solana_sdk::{ - commitment_config::CommitmentConfig, native_token::LAMPORTS_PER_SOL, signature::{Keypair, Signer}, }; diff --git a/test-integration/test-magicblock-api/tests/test_get_block_timestamp_stability.rs b/test-integration/test-magicblock-api/tests/test_get_block_timestamp_stability.rs index 325d446f1..0a1bf10cd 100644 --- a/test-integration/test-magicblock-api/tests/test_get_block_timestamp_stability.rs +++ b/test-integration/test-magicblock-api/tests/test_get_block_timestamp_stability.rs @@ -1,8 +1,8 @@ use integration_test_tools::IntegrationTestContext; use solana_sdk::{ native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, - system_instruction, }; +use solana_system_interface::instruction as system_instruction; use solana_transaction_status::UiTransactionEncoding; use test_kit::init_logger; use tracing::*; diff --git a/test-integration/test-pubsub/Cargo.toml b/test-integration/test-pubsub/Cargo.toml index 931b72787..8ca9caaef 100644 --- a/test-integration/test-pubsub/Cargo.toml +++ b/test-integration/test-pubsub/Cargo.toml @@ -6,6 +6,7 @@ edition.workspace = true [dependencies] tracing = { workspace = true } solana-sdk = { workspace = true } +solana-system-interface = { workspace = true } solana-pubsub-client = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } diff --git a/test-integration/test-pubsub/src/lib.rs b/test-integration/test-pubsub/src/lib.rs index ef4dc6f38..340b52f2f 100644 --- a/test-integration/test-pubsub/src/lib.rs +++ b/test-integration/test-pubsub/src/lib.rs @@ -9,9 +9,9 @@ use solana_sdk::{ native_token::LAMPORTS_PER_SOL, signature::{Keypair, Signature}, signer::Signer, - system_instruction, transaction::Transaction, }; +use solana_system_interface::instruction as system_instruction; use tracing::*; const VALIDATOR_WS: &str = "ws://127.0.0.1:8900"; diff --git a/test-integration/test-schedule-intent/Cargo.toml b/test-integration/test-schedule-intent/Cargo.toml index fe40d2b3c..6f1140712 100644 --- a/test-integration/test-schedule-intent/Cargo.toml +++ b/test-integration/test-schedule-intent/Cargo.toml @@ -1,18 +1,18 @@ [package] +edition.workspace = true name = "test-schedule-intent" version.workspace = true -edition.workspace = true [dependencies] log = "0.4.29" [dev-dependencies] -tracing = { workspace = true } ephemeral-rollups-sdk = { workspace = true } integration-test-tools = { workspace = true } magicblock-delegation-program-api = { workspace = true } -magicblock_magic_program_api = { workspace = true } +magicblock-magic-program-api = { workspace = true } program-flexi-counter = { workspace = true, features = ["no-entrypoint"] } -solana-sdk = { workspace = true } solana-rpc-client-api = { workspace = true } +solana-sdk = { workspace = true } test-kit = { workspace = true } +tracing = { workspace = true } diff --git a/test-integration/test-table-mania/Cargo.toml b/test-integration/test-table-mania/Cargo.toml index 821c45838..a4b0f0c9e 100644 --- a/test-integration/test-table-mania/Cargo.toml +++ b/test-integration/test-table-mania/Cargo.toml @@ -10,6 +10,8 @@ magicblock-table-mania = { workspace = true, features = [ "randomize_lookup_table_slot", ] } paste = { workspace = true } +solana-address-lookup-table-interface = { workspace = true } +solana-commitment-config = { workspace = true } solana-pubkey = { workspace = true } solana-rpc-client = { workspace = true } solana-sdk = { workspace = true } diff --git a/test-integration/test-table-mania/tests/ix_lookup_table.rs b/test-integration/test-table-mania/tests/ix_lookup_table.rs index 8a3fa5aa2..84cbb264f 100644 --- a/test-integration/test-table-mania/tests/ix_lookup_table.rs +++ b/test-integration/test-table-mania/tests/ix_lookup_table.rs @@ -4,12 +4,13 @@ use magicblock_table_mania::{ CREATE_AND_EXTEND_TABLE_CUS, DEACTIVATE_TABLE_CUS, EXTEND_TABLE_CUS, MAX_ENTRIES_AS_PART_OF_EXTEND, }; +use solana_address_lookup_table_interface::state::LookupTableMeta; +use solana_commitment_config::CommitmentConfig; use solana_pubkey::Pubkey; use solana_rpc_client::nonblocking::rpc_client::RpcClient; use solana_sdk::{ - address_lookup_table::state::LookupTableMeta, clock::Slot, - commitment_config::CommitmentConfig, native_token::LAMPORTS_PER_SOL, - signature::Keypair, signer::Signer, + clock::Slot, native_token::LAMPORTS_PER_SOL, signature::Keypair, + signer::Signer, }; use test_kit::init_logger; use tracing::*; diff --git a/test-integration/test-table-mania/tests/ix_reserve_pubkeys.rs b/test-integration/test-table-mania/tests/ix_reserve_pubkeys.rs index 96a562540..f9eb4c823 100644 --- a/test-integration/test-table-mania/tests/ix_reserve_pubkeys.rs +++ b/test-integration/test-table-mania/tests/ix_reserve_pubkeys.rs @@ -1,9 +1,8 @@ use std::collections::HashSet; +use solana_address_lookup_table_interface::state::LOOKUP_TABLE_MAX_ADDRESSES; use solana_pubkey::Pubkey; -use solana_sdk::{ - address_lookup_table::state::LOOKUP_TABLE_MAX_ADDRESSES, signature::Keypair, -}; +use solana_sdk::signature::Keypair; use test_kit::init_logger; use tokio::task::JoinSet; use tracing::*; diff --git a/test-integration/test-table-mania/tests/utils/mod.rs b/test-integration/test-table-mania/tests/utils/mod.rs index f23f201f6..623a56885 100644 --- a/test-integration/test-table-mania/tests/utils/mod.rs +++ b/test-integration/test-table-mania/tests/utils/mod.rs @@ -2,10 +2,10 @@ use std::time::{Duration, Instant}; use magicblock_rpc_client::MagicblockRpcClient; use magicblock_table_mania::{GarbageCollectorConfig, TableMania}; +use solana_commitment_config::CommitmentConfig; use solana_rpc_client::nonblocking::rpc_client::RpcClient; use solana_sdk::{ - commitment_config::CommitmentConfig, native_token::LAMPORTS_PER_SOL, - signature::Keypair, signer::Signer, + native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, }; use tracing::*; diff --git a/test-integration/test-task-scheduler/tests/test_schedule_task_signed.rs b/test-integration/test-task-scheduler/tests/test_schedule_task_signed.rs index 9765f3728..55bb2f3f5 100644 --- a/test-integration/test-task-scheduler/tests/test_schedule_task_signed.rs +++ b/test-integration/test-task-scheduler/tests/test_schedule_task_signed.rs @@ -55,7 +55,7 @@ fn test_schedule_task_signed() { .transaction .meta .map(|m| matches!( - m.err, + m.err.map(TransactionError::from), Some(TransactionError::InstructionError( 0, InstructionError::MissingRequiredSignature diff --git a/test-integration/test-tools/Cargo.toml b/test-integration/test-tools/Cargo.toml index 8071b41e4..ff3ace58e 100644 --- a/test-integration/test-tools/Cargo.toml +++ b/test-integration/test-tools/Cargo.toml @@ -13,13 +13,14 @@ rayon = { workspace = true } serde = { workspace = true } ureq = { workspace = true } url = { workspace = true } -magicblock-core = { workspace = true } magicblock-config = { workspace = true } magicblock-delegation-program-api = { workspace = true, features = ["instruction"] } +solana-commitment-config = { workspace = true } solana-pubkey = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-sdk = { workspace = true } +solana-system-interface = { workspace = true } solana-transaction-status = { workspace = true } tempfile = { workspace = true } toml = { workspace = true } diff --git a/test-integration/test-tools/src/dlp_interface.rs b/test-integration/test-tools/src/dlp_interface.rs index b5df8a490..3371f2bfe 100644 --- a/test-integration/test-tools/src/dlp_interface.rs +++ b/test-integration/test-tools/src/dlp_interface.rs @@ -8,9 +8,9 @@ use solana_sdk::{ native_token::LAMPORTS_PER_SOL, signature::{Keypair, Signature}, signer::Signer, - system_instruction, transaction::Transaction, }; +use solana_system_interface::instruction as system_instruction; use tracing::*; pub fn create_topup_ixs( diff --git a/test-integration/test-tools/src/integration_test_context.rs b/test-integration/test-tools/src/integration_test_context.rs index 67765b7f3..53efbfced 100644 --- a/test-integration/test-tools/src/integration_test_context.rs +++ b/test-integration/test-tools/src/integration_test_context.rs @@ -4,6 +4,7 @@ use std::{str::FromStr, thread::sleep, time::Duration}; use anyhow::{Context, Result}; use borsh::BorshDeserialize; +use solana_commitment_config::CommitmentConfig; use solana_rpc_client::{ nonblocking, rpc_client::{GetConfirmedSignaturesForAddress2Config, RpcClient}, @@ -17,14 +18,13 @@ use solana_sdk::signer::SeedDerivable; use solana_sdk::{ account::Account, clock::Slot, - commitment_config::CommitmentConfig, hash::Hash, instruction::Instruction, pubkey::Pubkey, rent::Rent, signature::{Keypair, Signature}, signer::Signer, - transaction::{Transaction, TransactionError}, + transaction::Transaction, }; use solana_transaction_status::{ EncodedConfirmedBlock, EncodedConfirmedTransactionWithStatusMeta, @@ -55,11 +55,18 @@ fn async_rpc_client( ) } +fn client_error(kind: client_error::ErrorKind) -> client_error::Error { + client_error::Error { + request: None, + kind: Box::new(kind), + } +} + #[derive(Clone, Debug, PartialEq, Eq)] pub struct TransactionStatusWithSignature { pub signature: String, pub slot: Slot, - pub err: Option, + pub err: Option, } impl TransactionStatusWithSignature { @@ -752,10 +759,8 @@ impl IntegrationTestContext { fn assert_transaction_error(res: &Result) { assert!(matches!( res, - Err(ClientError { - kind: ClientErrorKind::TransactionError(_), - .. - }) + Err(err) + if matches!(err.kind(), ClientErrorKind::TransactionError(_)) )); } @@ -767,9 +772,8 @@ impl IntegrationTestContext { ) -> Result { confirm_transaction( sig, - self.try_chain_client().map_err(|err| client_error::Error { - request: None, - kind: client_error::ErrorKind::Custom(err.to_string()), + self.try_chain_client().map_err(|err| { + client_error(client_error::ErrorKind::Custom(err.to_string())) })?, self.commitment, tx, @@ -784,9 +788,8 @@ impl IntegrationTestContext { ) -> Result { confirm_transaction( sig, - self.try_ephem_client().map_err(|err| client_error::Error { - request: None, - kind: client_error::ErrorKind::Custom(err.to_string()), + self.try_ephem_client().map_err(|err| { + client_error(client_error::ErrorKind::Custom(err.to_string())) })?, self.commitment, tx, @@ -800,9 +803,8 @@ impl IntegrationTestContext { signers: &[&Keypair], ) -> Result { send_transaction( - self.try_ephem_client().map_err(|err| client_error::Error { - request: None, - kind: client_error::ErrorKind::Custom(err.to_string()), + self.try_ephem_client().map_err(|err| { + client_error(client_error::ErrorKind::Custom(err.to_string())) })?, tx, signers, @@ -816,9 +818,8 @@ impl IntegrationTestContext { signers: &[&Keypair], ) -> Result { send_transaction( - self.try_ephem_client().map_err(|err| client_error::Error { - request: None, - kind: client_error::ErrorKind::Custom(err.to_string()), + self.try_ephem_client().map_err(|err| { + client_error(client_error::ErrorKind::Custom(err.to_string())) })?, tx, signers, @@ -832,9 +833,8 @@ impl IntegrationTestContext { signers: &[&Keypair], ) -> Result { send_transaction( - self.try_chain_client().map_err(|err| client_error::Error { - request: None, - kind: client_error::ErrorKind::Custom(err.to_string()), + self.try_chain_client().map_err(|err| { + client_error(client_error::ErrorKind::Custom(err.to_string())) })?, tx, signers, @@ -848,9 +848,8 @@ impl IntegrationTestContext { payer: &Keypair, ) -> Result<(Signature, Transaction), client_error::Error> { send_instructions_with_payer( - self.try_chain_client().map_err(|err| client_error::Error { - request: None, - kind: client_error::ErrorKind::Custom(err.to_string()), + self.try_chain_client().map_err(|err| { + client_error(client_error::ErrorKind::Custom(err.to_string())) })?, ixs, payer, diff --git a/test-integration/test-tools/src/loaded_accounts.rs b/test-integration/test-tools/src/loaded_accounts.rs index 7a2d86c28..79129d5d6 100644 --- a/test-integration/test-tools/src/loaded_accounts.rs +++ b/test-integration/test-tools/src/loaded_accounts.rs @@ -28,7 +28,7 @@ pub struct LoadedAccounts { impl Default for LoadedAccounts { fn default() -> Self { Self { - validator_authority_kp: Keypair::from_bytes(&TEST_KEYPAIR_BYTES) + validator_authority_kp: Keypair::try_from(&TEST_KEYPAIR_BYTES[..]) .expect("Failed to create validator authority keypair"), luzid_authority: pubkey!( "LUzidNSiPNjYNkxZcUm5hYHwnWPwsUfh2US1cpWwaBm" @@ -57,8 +57,8 @@ impl LoadedAccounts { /// `cargo build-sbf --features=unit_test_config` pub fn with_delegation_program_test_authority() -> Self { Self { - validator_authority_kp: Keypair::from_bytes( - &DLP_TEST_AUTHORITY_BYTES, + validator_authority_kp: Keypair::try_from( + &DLP_TEST_AUTHORITY_BYTES[..], ) .expect("Failed to create validator authority keypair"), luzid_authority: pubkey!( diff --git a/test-integration/test-tools/src/transactions.rs b/test-integration/test-tools/src/transactions.rs index b8614c297..a78e0fe64 100644 --- a/test-integration/test-tools/src/transactions.rs +++ b/test-integration/test-tools/src/transactions.rs @@ -2,13 +2,13 @@ use std::{thread::sleep, time::Duration}; +use solana_commitment_config::CommitmentConfig; use solana_rpc_client::rpc_client::RpcClient; use solana_rpc_client_api::{ client_error, config::{RpcSendTransactionConfig, RpcSimulateTransactionConfig}, }; use solana_sdk::{ - commitment_config::CommitmentConfig, instruction::Instruction, signature::{Keypair, Signature}, signer::Signer, diff --git a/test-kit/src/lib.rs b/test-kit/src/lib.rs index c0adc2b61..c1a3801e1 100644 --- a/test-kit/src/lib.rs +++ b/test-kit/src/lib.rs @@ -136,7 +136,7 @@ impl ExecutionTestEnv { let (dispatch, validator_channels) = link(); let blockhash = ledger.latest_block().load().blockhash; - let environment = build_svm_env(&accountsdb, blockhash, fee); + let svm_env = build_svm_env(&accountsdb, blockhash, fee); let payers = (0..executors).map(|_| Keypair::new()).collect(); let (mode_tx, mode_rx) = tokio::sync::mpsc::channel(1); @@ -169,8 +169,8 @@ impl ExecutionTestEnv { transaction_status_tx: validator_channels.transaction_status, txn_to_process_rx: validator_channels.transaction_to_process, tasks_tx: validator_channels.tasks_service, - environment, - is_auto_airdrop_lamports_enabled: false, + environment: svm_env.environment, + feature_set: svm_env.feature_set, shutdown: Default::default(), mode_rx, }; diff --git a/test-manual/Cargo.lock b/test-manual/Cargo.lock index 5ed951082..d661a6a88 100644 --- a/test-manual/Cargo.lock +++ b/test-manual/Cargo.lock @@ -61,33 +61,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81071c030078429f000741da9ea84e34c432614f1b64dba741e1a572beeece3b" dependencies = [ "ahash", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", -] - -[[package]] -name = "agave-precompiles" -version = "2.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6420f308338bae6455ef30532aba71aefbe9ec6cb69ce9db7d0801e37d2998fd" -dependencies = [ - "agave-feature-set", - "bincode", - "digest 0.10.7", - "ed25519-dalek", - "lazy_static", - "libsecp256k1", - "openssl", - "sha3", - "solana-ed25519-program", - "solana-message", - "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", - "solana-secp256k1-program", - "solana-secp256r1-program", + "solana-epoch-schedule 2.2.1", + "solana-hash 2.2.1", + "solana-pubkey 2.2.1", + "solana-sha256-hasher 2.3.0", ] [[package]] @@ -127,21 +104,6 @@ dependencies = [ "alloc-no-stdlib", ] -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[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 = "anyhow" version = "1.0.100" @@ -365,7 +327,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -385,6 +347,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.12.3" @@ -409,6 +377,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + [[package]] name = "bincode" version = "1.3.3" @@ -508,7 +482,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -596,7 +570,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -658,7 +632,7 @@ checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -667,12 +641,7 @@ version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "iana-time-zone", - "js-sys", "num-traits", - "serde", - "wasm-bindgen", - "windows-link", ] [[package]] @@ -768,6 +737,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "constant_time_eq" version = "0.3.1" @@ -858,6 +833,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -927,7 +914,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -951,7 +938,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -962,7 +949,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -984,6 +971,16 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "der-parser" version = "8.2.0" @@ -1040,6 +1037,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -1052,7 +1050,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -1075,14 +1073,22 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] -name = "eager" -version = "0.1.0" +name = "ecdsa" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature 2.2.0", + "spki", +] [[package]] name = "ed25519" @@ -1090,7 +1096,17 @@ version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "signature", + "signature 1.6.4", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature 2.2.0", ] [[package]] @@ -1100,13 +1116,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ "curve25519-dalek 3.2.0", - "ed25519", + "ed25519 1.5.3", "rand 0.7.3", "serde", "sha2 0.9.9", "zeroize", ] +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + [[package]] name = "ed25519-dalek-bip32" version = "0.2.0" @@ -1114,7 +1144,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" dependencies = [ "derivation-path", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "hmac 0.12.1", "sha2 0.10.9", ] @@ -1125,6 +1155,25 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "encode_unicode" version = "1.0.0" @@ -1140,26 +1189,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "enum-iterator" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.108", -] - [[package]] name = "env_logger" version = "0.9.3" @@ -1224,6 +1253,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "fiat-crypto" version = "0.2.9" @@ -1236,6 +1275,15 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +[[package]] +name = "five8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" +dependencies = [ + "five8_core", +] + [[package]] name = "five8_const" version = "0.1.4" @@ -1245,6 +1293,15 @@ dependencies = [ "five8_core", ] +[[package]] +name = "five8_const" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" +dependencies = [ + "five8_core", +] + [[package]] name = "five8_core" version = "0.1.2" @@ -1279,12 +1336,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - [[package]] name = "foreign-types" version = "0.3.2" @@ -1365,7 +1416,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -1412,6 +1463,7 @@ checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1484,6 +1536,17 @@ dependencies = [ "spinning_top", ] +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "h2" version = "0.3.27" @@ -1505,9 +1568,9 @@ dependencies = [ [[package]] name = "hash32" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" dependencies = [ "byteorder", ] @@ -1527,17 +1590,6 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - [[package]] name = "hashbrown" version = "0.16.0" @@ -1685,30 +1737,6 @@ dependencies = [ "tokio-rustls", ] -[[package]] -name = "iana-time-zone" -version = "0.1.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "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 = "icu_collections" version = "2.0.0" @@ -1941,6 +1969,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2 0.10.9", + "signature 2.2.0", +] + [[package]] name = "keccak" version = "0.1.5" @@ -2045,22 +2087,26 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "magicblock-core" -version = "0.6.1" +version = "0.9.0" dependencies = [ + "bincode", "flume", "magicblock-magic-program-api", - "solana-account 2.2.1 (git+https://github.com/magicblock-labs/solana-account.git?rev=2246929)", + "serde", + "solana-account 3.4.0 (git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3)", "solana-account-decoder", - "solana-hash", - "solana-program", - "solana-pubkey", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "solana-transaction-status-client-types", - "spl-token", - "spl-token-2022", + "solana-clock 3.0.1", + "solana-hash 3.1.0", + "solana-message 3.1.0", + "solana-program 3.0.0", + "solana-pubkey 3.0.0", + "solana-signature 3.4.0", + "solana-transaction 3.1.0", + "solana-transaction-context 3.1.12", + "solana-transaction-error 3.2.0", + "solana-transaction-status-client-types 3.1.13", + "spl-token-2022-interface", + "spl-token-interface", "tokio", "tracing", "tracing-log", @@ -2069,11 +2115,12 @@ dependencies = [ [[package]] name = "magicblock-magic-program-api" -version = "0.6.1" +version = "0.9.0" dependencies = [ "bincode", "serde", - "solana-program", + "solana-program 3.0.0", + "solana-signature 3.4.0", ] [[package]] @@ -2276,7 +2323,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -2349,7 +2396,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -2402,7 +2449,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -2411,15 +2458,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" -[[package]] -name = "openssl-src" -version = "300.5.4+3.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" -dependencies = [ - "cc", -] - [[package]] name = "openssl-sys" version = "0.9.110" @@ -2428,7 +2466,6 @@ checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" dependencies = [ "cc", "libc", - "openssl-src", "pkg-config", "vcpkg", ] @@ -2468,6 +2505,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b867cad97c0791bbd3aaa6472142568c6c9e8f71937e98379f584cfb0cf35bec" + [[package]] name = "pbkdf2" version = "0.11.0" @@ -2513,6 +2556,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.32" @@ -2581,9 +2634,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -2605,7 +2658,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -2637,7 +2690,7 @@ dependencies = [ "rustc-hash", "rustls 0.23.34", "socket2 0.6.1", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -2660,7 +2713,7 @@ dependencies = [ "rustls-pki-types", "rustls-platform-verifier", "slab", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -2682,9 +2735,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.41" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -2921,6 +2974,16 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + [[package]] name = "ring" version = "0.17.14" @@ -3116,6 +3179,20 @@ dependencies = [ "untrusted", ] +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "security-framework" version = "3.5.1" @@ -3191,7 +3268,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -3238,7 +3315,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -3276,6 +3353,12 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + [[package]] name = "sha3" version = "0.10.8" @@ -3326,6 +3409,16 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + [[package]] name = "simd-adler32" version = "0.3.7" @@ -3386,68 +3479,88 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-account-info", - "solana-clock", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-sysvar", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sysvar 2.3.0", ] [[package]] name = "solana-account" -version = "2.2.1" -source = "git+https://github.com/magicblock-labs/solana-account.git?rev=2246929#2246929c6614f60d9909fdd117aab3bc454a9775" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc0ed36decb689413b9da5d57f2be49eea5bebb3cf7897015167b0c4336e731" dependencies = [ "bincode", - "qualifier_attr", "serde", "serde_bytes", "serde_derive", - "solana-account-info", - "solana-clock", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-sysvar", + "solana-account-info 3.1.1", + "solana-clock 3.0.1", + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-sdk-ids 3.1.0", + "solana-sysvar 3.1.1", +] + +[[package]] +name = "solana-account" +version = "3.4.0" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" +dependencies = [ + "bincode", + "qualifier_attr", + "serde", + "serde_bytes", + "solana-account-info 3.1.1", + "solana-clock 3.0.1", + "solana-instruction 3.4.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.1.0", + "solana-sysvar 3.1.1", ] [[package]] name = "solana-account-decoder" -version = "2.2.20" +version = "3.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06df58936cc05b03429a2eba8ef2c4bb6c85fe21d2478ea059e7ef6abd0f5c6" +checksum = "e1ad804381ba905f01c0ddeb9aa6315a625b19f17d1955eec1ff5241f9ce5bae" dependencies = [ "Inflector", "base64 0.22.1", "bincode", "bs58", "bv", - "lazy_static", "serde", - "serde_derive", "serde_json", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-account-decoder-client-types", - "solana-clock", - "solana-config-program", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-instruction", - "solana-nonce", - "solana-program", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-slot-history", - "solana-sysvar", - "spl-token", - "spl-token-2022", + "solana-account 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-account-decoder-client-types 3.1.13", + "solana-address-lookup-table-interface 3.1.0", + "solana-clock 3.0.1", + "solana-config-interface", + "solana-epoch-schedule 3.1.0", + "solana-fee-calculator 3.2.0", + "solana-instruction 3.4.0", + "solana-loader-v3-interface 6.1.1", + "solana-nonce 3.2.0", + "solana-program-option 3.1.0", + "solana-program-pack 3.1.0", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-slot-hashes 3.0.1", + "solana-slot-history 3.0.0", + "solana-stake-interface 2.0.2", + "solana-sysvar 3.1.1", + "solana-vote-interface 4.0.4", + "spl-generic-token", + "spl-token-2022-interface", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", - "thiserror 2.0.17", + "thiserror 2.0.18", "zstd", ] @@ -3462,8 +3575,23 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-pubkey", + "solana-account 2.2.1", + "solana-pubkey 2.2.1", + "zstd", +] + +[[package]] +name = "solana-account-decoder-client-types" +version = "3.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac4f565690f796906454c47edc6e85cc87cb7f07a2ccfed49ccf786e92bfcf5d" +dependencies = [ + "base64 0.22.1", + "bs58", + "serde", + "serde_json", + "solana-account 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-pubkey 3.0.0", "zstd", ] @@ -3475,26 +3603,90 @@ checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" dependencies = [ "bincode", "serde", - "solana-program-error", - "solana-program-memory", - "solana-pubkey", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-pubkey 2.2.1", ] [[package]] -name = "solana-address-lookup-table-interface" -version = "2.2.2" +name = "solana-account-info" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" +checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" +dependencies = [ + "bincode", + "serde_core", + "solana-address 2.6.0", + "solana-program-error 3.0.1", + "solana-program-memory 3.1.0", +] + +[[package]] +name = "solana-address" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" +dependencies = [ + "solana-address 2.6.0", +] + +[[package]] +name = "solana-address" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1384b52c435a750cc9c538760fc7bb472fd78e65a9900a2d07312c5bb335b72" +dependencies = [ + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8", + "five8_const 1.0.0", + "serde", + "serde_derive", + "sha2-const-stable", + "solana-atomic-u64 3.0.1", + "solana-define-syscall 5.0.0", + "solana-nullable", + "solana-program-error 3.0.1", + "solana-sanitize 3.0.1", + "solana-sha256-hasher 3.1.0", + "wincode", +] + +[[package]] +name = "solana-address-lookup-table-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" dependencies = [ "bincode", "bytemuck", "serde", "serde_derive", - "solana-clock", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-slot-hashes", + "solana-clock 2.2.2", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-slot-hashes 2.2.1", +] + +[[package]] +name = "solana-address-lookup-table-interface" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115b4f773acc4f3f3cb986b0d335e9845c0368c82b0940410935bc11ae065578" +dependencies = [ + "bincode", + "bytemuck", + "serde", + "serde_derive", + "solana-clock 3.0.1", + "solana-instruction 3.4.0", + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-sdk-ids 3.1.0", + "solana-slot-hashes 3.0.1", ] [[package]] @@ -3506,6 +3698,15 @@ dependencies = [ "parking_lot", ] +[[package]] +name = "solana-atomic-u64" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "085db4906d89324cef2a30840d59eaecf3d4231c560ec7c9f6614a93c652f501" +dependencies = [ + "parking_lot", +] + [[package]] name = "solana-big-mod-exp" version = "2.2.1" @@ -3514,7 +3715,18 @@ checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" dependencies = [ "num-bigint 0.4.6", "num-traits", - "solana-define-syscall", + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-big-mod-exp" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "solana-define-syscall 3.0.0", ] [[package]] @@ -3525,7 +3737,7 @@ checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" dependencies = [ "bincode", "serde", - "solana-instruction", + "solana-instruction 2.3.0", ] [[package]] @@ -3535,9 +3747,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" dependencies = [ "blake3", - "solana-define-syscall", - "solana-hash", - "solana-sanitize", + "solana-define-syscall 2.3.0", + "solana-hash 2.2.1", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-blake3-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" +dependencies = [ + "blake3", + "solana-define-syscall 4.0.1", + "solana-hash 4.3.0", ] [[package]] @@ -3551,8 +3774,8 @@ dependencies = [ "ark-ff", "ark-serialize", "bytemuck", - "solana-define-syscall", - "thiserror 2.0.17", + "solana-define-syscall 2.3.0", + "thiserror 2.0.18", ] [[package]] @@ -3565,6 +3788,15 @@ dependencies = [ "borsh 1.5.7", ] +[[package]] +name = "solana-borsh" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c04abbae16f57178a163125805637b8a076175bb5c0002fb04f4792bea901cf7" +dependencies = [ + "borsh 1.5.7", +] + [[package]] name = "solana-client" version = "2.2.20" @@ -3581,33 +3813,33 @@ dependencies = [ "log", "quinn", "rayon", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-account 2.2.1", "solana-client-traits", - "solana-commitment-config", + "solana-commitment-config 2.2.1", "solana-connection-cache", "solana-epoch-info", - "solana-hash", - "solana-instruction", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", "solana-keypair", "solana-measure", - "solana-message", - "solana-pubkey", + "solana-message 2.2.1", + "solana-pubkey 2.2.1", "solana-pubsub-client", "solana-quic-client", "solana-quic-definitions", "solana-rpc-client", "solana-rpc-client-api", "solana-rpc-client-nonce-utils", - "solana-signature", - "solana-signer", + "solana-signature 2.2.1", + "solana-signer 2.2.1", "solana-streamer", "solana-thin-client", "solana-time-utils", "solana-tpu-client", - "solana-transaction", - "solana-transaction-error", + "solana-transaction 2.2.3", + "solana-transaction-error 2.2.1", "solana-udp-client", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", ] @@ -3617,19 +3849,19 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" dependencies = [ - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-commitment-config", + "solana-account 2.2.1", + "solana-commitment-config 2.2.1", "solana-epoch-info", - "solana-hash", - "solana-instruction", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", + "solana-message 2.2.1", + "solana-pubkey 2.2.1", + "solana-signature 2.2.1", + "solana-signer 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction 2.2.3", + "solana-transaction-error 2.2.1", ] [[package]] @@ -3640,9 +3872,22 @@ checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-clock" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95cf11109c3b6115cc510f1e31f06fdd52f504271bc24ef5f1249fbbcae5f9f3" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.1", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -3653,7 +3898,7 @@ checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" dependencies = [ "serde", "serde_derive", - "solana-hash", + "solana-hash 2.2.1", ] [[package]] @@ -3667,14 +3912,10 @@ dependencies = [ ] [[package]] -name = "solana-compute-budget" -version = "2.2.20" +name = "solana-commitment-config" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fd2a55373ce9218600d8711177026f351e7bdcfca46552e3bef25c9f75c90c" -dependencies = [ - "solana-fee-structure", - "solana-program-entrypoint", -] +checksum = "1517aa49dcfa9cb793ef90e7aac81346d62ca4a546bb1a754030a033e3972e1c" [[package]] name = "solana-compute-budget-interface" @@ -3685,32 +3926,25 @@ dependencies = [ "borsh 1.5.7", "serde", "serde_derive", - "solana-instruction", - "solana-sdk-ids", + "solana-instruction 2.3.0", + "solana-sdk-ids 2.2.1", ] [[package]] -name = "solana-config-program" -version = "2.2.20" +name = "solana-config-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08601f0bcaed81e90d0ed2aaeee6b774cc05bfd5e14220ce03974f0687c6b77f" +checksum = "63e401ae56aed512821cc7a0adaa412ff97fecd2dff4602be7b1330d2daec0c4" dependencies = [ "bincode", - "chrono", "serde", "serde_derive", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-bincode", - "solana-instruction", - "solana-log-collector", - "solana-packet", - "solana-program-runtime", - "solana-pubkey", - "solana-sdk-ids", - "solana-short-vec", - "solana-stake-interface", - "solana-system-interface", - "solana-transaction-context", + "solana-account 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-instruction 3.4.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.2.0", + "solana-system-interface 2.0.0", ] [[package]] @@ -3732,8 +3966,8 @@ dependencies = [ "solana-metrics", "solana-net-utils", "solana-time-utils", - "solana-transaction-error", - "thiserror 2.0.17", + "solana-transaction-error 2.2.1", + "thiserror 2.0.18", "tokio", ] @@ -3743,26 +3977,40 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" dependencies = [ - "solana-account-info", - "solana-define-syscall", - "solana-instruction", - "solana-program-error", - "solana-pubkey", - "solana-stable-layout", + "solana-account-info 2.3.0", + "solana-define-syscall 2.3.0", + "solana-instruction 2.3.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.2.1", + "solana-stable-layout 2.2.1", +] + +[[package]] +name = "solana-cpi" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" +dependencies = [ + "solana-account-info 3.1.1", + "solana-define-syscall 4.0.1", + "solana-instruction 3.4.0", + "solana-program-error 3.0.1", + "solana-pubkey 4.2.0", + "solana-stable-layout 3.0.1", ] [[package]] name = "solana-curve25519" -version = "2.3.13" +version = "3.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" +checksum = "78600945fd087ceae784e4afee6c22610d5ee480fc73d6df1d733c6f06507d3e" dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "solana-define-syscall", + "solana-define-syscall 3.0.0", "subtle", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3780,6 +4028,24 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" +[[package]] +name = "solana-define-syscall" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" + +[[package]] +name = "solana-define-syscall" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" + +[[package]] +name = "solana-define-syscall" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03aacdd7a61e2109887a7a7f046caebafce97ddf1150f33722eeac04f9039c73" + [[package]] name = "solana-derivation-path" version = "2.2.1" @@ -3791,6 +4057,17 @@ dependencies = [ "uriparse", ] +[[package]] +name = "solana-derivation-path" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff71743072690fdbdfcdc37700ae1cb77485aaad49019473a81aee099b1e0b8c" +dependencies = [ + "derivation-path", + "qstring", + "uriparse", +] + [[package]] name = "solana-ed25519-program" version = "2.2.3" @@ -3799,11 +4076,11 @@ checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" dependencies = [ "bytemuck", "bytemuck_derive", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "solana-feature-set", - "solana-instruction", + "solana-instruction 2.3.0", "solana-precompile-error", - "solana-sdk-ids", + "solana-sdk-ids 2.2.1", ] [[package]] @@ -3824,10 +4101,24 @@ checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" dependencies = [ "serde", "serde_derive", - "solana-hash", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-hash 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-epoch-rewards" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e7b0ba210593ba8ddd39d6d234d81795d1671cebf3026baa10d5dc23ac42f0" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 4.3.0", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.1", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -3837,8 +4128,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" dependencies = [ "siphasher 0.3.11", - "solana-hash", - "solana-pubkey", + "solana-hash 2.2.1", + "solana-pubkey 2.2.1", ] [[package]] @@ -3849,9 +4140,32 @@ checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-epoch-schedule" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce264b7b42322325947c4136a09460bf5c73d9aa8262c9b0a2064be63ba8639" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.1", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-epoch-stake" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "027e6d0b9e7daac5b2ac7c3f9ca1b727861121d9ef05084cf435ff736051e7c2" +dependencies = [ + "solana-define-syscall 5.0.0", + "solana-pubkey 4.2.0", ] [[package]] @@ -3862,17 +4176,38 @@ checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" dependencies = [ "serde", "serde_derive", - "solana-address-lookup-table-interface", - "solana-clock", - "solana-hash", - "solana-instruction", - "solana-keccak-hasher", - "solana-message", - "solana-nonce", - "solana-pubkey", - "solana-sdk-ids", - "solana-system-interface", - "thiserror 2.0.17", + "solana-address-lookup-table-interface 2.2.2", + "solana-clock 2.2.2", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", + "solana-keccak-hasher 2.2.1", + "solana-message 2.2.1", + "solana-nonce 2.2.1", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-example-mocks" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978855d164845c1b0235d4b4d101cadc55373fffaf0b5b6cfa2194d25b2ed658" +dependencies = [ + "serde", + "serde_derive", + "solana-address-lookup-table-interface 3.1.0", + "solana-clock 3.0.1", + "solana-hash 3.1.0", + "solana-instruction 3.4.0", + "solana-keccak-hasher 3.1.0", + "solana-message 3.1.0", + "solana-nonce 3.2.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.1.0", + "solana-system-interface 2.0.0", + "thiserror 2.0.18", ] [[package]] @@ -3884,14 +4219,14 @@ dependencies = [ "bincode", "serde", "serde_derive", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-account-info", - "solana-instruction", - "solana-program-error", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-system-interface", + "solana-account 2.2.1", + "solana-account-info 2.3.0", + "solana-instruction 2.3.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", ] [[package]] @@ -3902,10 +4237,10 @@ checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" dependencies = [ "ahash", "lazy_static", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", + "solana-epoch-schedule 2.2.1", + "solana-hash 2.2.1", + "solana-pubkey 2.2.1", + "solana-sha256-hasher 2.3.0", ] [[package]] @@ -3919,6 +4254,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "solana-fee-calculator" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e8add96b5741573e9f7529c4bb7719cfcfa999c3847a68cdfaef0cb6adf567" +dependencies = [ + "log", + "serde", + "serde_derive", +] + [[package]] name = "solana-fee-structure" version = "2.3.0" @@ -3927,8 +4273,8 @@ checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" dependencies = [ "serde", "serde_derive", - "solana-message", - "solana-native-token", + "solana-message 2.2.1", + "solana-native-token 2.3.0", ] [[package]] @@ -3942,22 +4288,22 @@ dependencies = [ "memmap2", "serde", "serde_derive", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clock", + "solana-account 2.2.1", + "solana-clock 2.2.2", "solana-cluster-type", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-hash", + "solana-epoch-schedule 2.2.1", + "solana-fee-calculator 2.2.1", + "solana-hash 2.2.1", "solana-inflation", "solana-keypair", "solana-logger", "solana-poh-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sha256-hasher", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sha256-hasher 2.3.0", "solana-shred-version", - "solana-signer", + "solana-signer 2.2.1", "solana-time-utils", ] @@ -3984,11 +4330,37 @@ dependencies = [ "js-sys", "serde", "serde_derive", - "solana-atomic-u64", - "solana-sanitize", + "solana-atomic-u64 2.2.1", + "solana-sanitize 2.2.1", "wasm-bindgen", ] +[[package]] +name = "solana-hash" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" +dependencies = [ + "solana-hash 4.3.0", +] + +[[package]] +name = "solana-hash" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1b113239362cee7093bfb250467138f079a2a03673181dc15bff6ccd677912d" +dependencies = [ + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "five8", + "serde", + "serde_derive", + "solana-atomic-u64 3.0.1", + "solana-sanitize 3.0.1", + "wincode", +] + [[package]] name = "solana-inflation" version = "2.2.1" @@ -4006,7 +4378,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14191c3b9de9f62e9ffb81ae53b3aecade34aebcb22d695e93fea70b1cec8cbe" dependencies = [ "bytemuck", - "solana-pubkey", + "solana-pubkey 2.2.1", ] [[package]] @@ -4022,11 +4394,38 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-define-syscall", - "solana-pubkey", + "solana-define-syscall 2.3.0", + "solana-pubkey 2.2.1", "wasm-bindgen", ] +[[package]] +name = "solana-instruction" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ebb0ffd19263051bc3f683fcc086134b8ff23af894dcb63f7563c7137b42f1" +dependencies = [ + "bincode", + "borsh 1.5.7", + "serde", + "serde_derive", + "solana-define-syscall 5.0.0", + "solana-instruction-error", + "solana-pubkey 4.2.0", +] + +[[package]] +name = "solana-instruction-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0b188842592fdf6cb96f55263ae1bf11713ab5114401d1d5a881ed7cc41bef6" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-program-error 3.0.1", +] + [[package]] name = "solana-instructions-sysvar" version = "2.2.2" @@ -4034,14 +4433,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" dependencies = [ "bitflags 2.10.0", - "solana-account-info", - "solana-instruction", - "solana-program-error", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-ids", - "solana-serialize-utils", - "solana-sysvar-id", + "solana-account-info 2.3.0", + "solana-instruction 2.3.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-serialize-utils 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" +dependencies = [ + "bitflags 2.10.0", + "solana-account-info 3.1.1", + "solana-instruction 3.4.0", + "solana-instruction-error", + "solana-program-error 3.0.1", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-serialize-utils 3.1.1", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -4051,9 +4468,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" dependencies = [ "sha3", - "solana-define-syscall", - "solana-hash", - "solana-sanitize", + "solana-define-syscall 2.3.0", + "solana-hash 2.2.1", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-keccak-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" +dependencies = [ + "sha3", + "solana-define-syscall 4.0.1", + "solana-hash 4.3.0", ] [[package]] @@ -4063,15 +4491,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dbb7042c2e0c561afa07242b2099d55c57bd1b1da3b6476932197d84e15e3e4" dependencies = [ "bs58", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "ed25519-dalek-bip32", "rand 0.7.3", - "solana-derivation-path", - "solana-pubkey", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", + "solana-derivation-path 2.2.1", + "solana-pubkey 2.2.1", + "solana-seed-derivable 2.2.1", + "solana-seed-phrase 2.2.1", + "solana-signature 2.2.1", + "solana-signer 2.2.1", "wasm-bindgen", ] @@ -4083,9 +4511,22 @@ checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-last-restart-slot" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.1", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -4097,9 +4538,9 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", ] [[package]] @@ -4111,34 +4552,39 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-system-interface", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", ] [[package]] -name = "solana-loader-v4-interface" -version = "2.2.1" +name = "solana-loader-v3-interface" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +checksum = "2e0538d4dbc9022e01616f1c58f2db98ece739c5d5ed4a2ef8737a953e76a2d4" dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-system-interface", + "solana-instruction 3.4.0", + "solana-pubkey 4.2.0", + "solana-sdk-ids 3.1.0", ] [[package]] -name = "solana-log-collector" -version = "2.2.20" +name = "solana-loader-v4-interface" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45eaf7f6fabf1e2b8fb3eb39e177ea8a1dcf63b1f4f97c5e27829d94c47a018" +checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" dependencies = [ - "log", + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", ] [[package]] @@ -4172,17 +4618,37 @@ dependencies = [ "serde", "serde_derive", "solana-bincode", - "solana-hash", - "solana-instruction", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-ids", - "solana-short-vec", - "solana-system-interface", - "solana-transaction-error", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction-error 2.2.1", "wasm-bindgen", ] +[[package]] +name = "solana-message" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0448b1fd891c5f46491e5dc7d9986385ba3c852c340db2911dd29faa01d2b08d" +dependencies = [ + "bincode", + "blake3", + "lazy_static", + "serde", + "serde_derive", + "solana-address 2.6.0", + "solana-hash 4.3.0", + "solana-instruction 3.4.0", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.2.0", + "solana-transaction-error 3.2.0", +] + [[package]] name = "solana-metrics" version = "2.2.20" @@ -4194,11 +4660,11 @@ dependencies = [ "lazy_static", "log", "reqwest", - "solana-clock", + "solana-clock 2.2.2", "solana-cluster-type", - "solana-sha256-hasher", + "solana-sha256-hasher 2.3.0", "solana-time-utils", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -4207,7 +4673,16 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" dependencies = [ - "solana-define-syscall", + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-msg" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726b7cbbc6be6f1c6f29146ac824343b9415133eee8cce156452ad1db93f8008" +dependencies = [ + "solana-define-syscall 5.0.0", ] [[package]] @@ -4216,6 +4691,12 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + [[package]] name = "solana-net-utils" version = "2.2.20" @@ -4246,10 +4727,24 @@ checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" dependencies = [ "serde", "serde_derive", - "solana-fee-calculator", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", + "solana-fee-calculator 2.2.1", + "solana-hash 2.2.1", + "solana-pubkey 2.2.1", + "solana-sha256-hasher 2.3.0", +] + +[[package]] +name = "solana-nonce" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95dbc9f2e33b6c10e231df15cb2a3bff9ea7eab6347f9e316fe75c97fd67bbb" +dependencies = [ + "serde", + "serde_derive", + "solana-fee-calculator 3.2.0", + "solana-hash 4.3.0", + "solana-pubkey 4.2.0", + "solana-sha256-hasher 3.1.0", ] [[package]] @@ -4258,10 +4753,19 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" dependencies = [ - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-hash", - "solana-nonce", - "solana-sdk-ids", + "solana-account 2.2.1", + "solana-hash 2.2.1", + "solana-nonce 2.2.1", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-nullable" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da028344c595c7416769ff648d206de7962571291a4cea24c38a60b6f40d53bb" +dependencies = [ + "bytemuck", ] [[package]] @@ -4271,13 +4775,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" dependencies = [ "num_enum", - "solana-hash", + "solana-hash 2.2.1", "solana-packet", - "solana-pubkey", - "solana-sanitize", - "solana-sha256-hasher", - "solana-signature", - "solana-signer", + "solana-pubkey 2.2.1", + "solana-sanitize 2.2.1", + "solana-sha256-hasher 2.3.0", + "solana-signature 2.2.1", + "solana-signer 2.2.1", ] [[package]] @@ -4314,15 +4818,15 @@ dependencies = [ "rand 0.8.5", "rayon", "serde", - "solana-hash", - "solana-message", + "solana-hash 2.2.1", + "solana-message 2.2.1", "solana-metrics", "solana-packet", - "solana-pubkey", + "solana-pubkey 2.2.1", "solana-rayon-threadlimit", - "solana-sdk-ids", - "solana-short-vec", - "solana-signature", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-signature 2.2.1", "solana-time-utils", ] @@ -4355,10 +4859,10 @@ dependencies = [ "lazy_static", "solana-ed25519-program", "solana-feature-set", - "solana-message", + "solana-message 2.2.1", "solana-precompile-error", - "solana-pubkey", - "solana-sdk-ids", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", "solana-secp256k1-program", "solana-secp256r1-program", ] @@ -4369,9 +4873,9 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" dependencies = [ - "solana-pubkey", - "solana-signature", - "solana-signer", + "solana-pubkey 2.2.1", + "solana-signature 2.2.1", + "solana-signer 2.2.1", ] [[package]] @@ -4399,71 +4903,130 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-account-info", - "solana-address-lookup-table-interface", - "solana-atomic-u64", - "solana-big-mod-exp", + "solana-account-info 2.3.0", + "solana-address-lookup-table-interface 2.2.2", + "solana-atomic-u64 2.2.1", + "solana-big-mod-exp 2.2.1", "solana-bincode", - "solana-blake3-hasher", - "solana-borsh", - "solana-clock", - "solana-cpi", + "solana-blake3-hasher 2.2.1", + "solana-borsh 2.2.1", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", "solana-decode-error", - "solana-define-syscall", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-example-mocks", + "solana-define-syscall 2.3.0", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-example-mocks 2.2.1", "solana-feature-gate-interface", - "solana-fee-calculator", - "solana-hash", - "solana-instruction", - "solana-instructions-sysvar", - "solana-keccak-hasher", - "solana-last-restart-slot", + "solana-fee-calculator 2.2.1", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", + "solana-instructions-sysvar 2.2.2", + "solana-keccak-hasher 2.2.1", + "solana-last-restart-slot 2.2.1", "solana-loader-v2-interface", - "solana-loader-v3-interface", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", - "solana-message", - "solana-msg", - "solana-native-token", - "solana-nonce", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sanitize", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-secp256k1-recover", - "solana-serde-varint", - "solana-serialize-utils", - "solana-sha256-hasher", - "solana-short-vec", - "solana-slot-hashes", - "solana-slot-history", - "solana-stable-layout", - "solana-stake-interface", - "solana-system-interface", - "solana-sysvar", - "solana-sysvar-id", - "solana-vote-interface", - "thiserror 2.0.17", + "solana-message 2.2.1", + "solana-msg 2.2.1", + "solana-native-token 2.3.0", + "solana-nonce 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-program-option 2.2.1", + "solana-program-pack 2.2.1", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-secp256k1-recover 2.2.1", + "solana-serde-varint 2.2.2", + "solana-serialize-utils 2.2.1", + "solana-sha256-hasher 2.3.0", + "solana-short-vec 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-stable-layout 2.2.1", + "solana-stake-interface 1.2.1", + "solana-system-interface 1.0.0", + "solana-sysvar 2.3.0", + "solana-sysvar-id 2.2.1", + "solana-vote-interface 2.2.6", + "thiserror 2.0.18", "wasm-bindgen", ] +[[package]] +name = "solana-program" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91b12305dd81045d705f427acd0435a2e46444b65367d7179d7bdcfc3bc5f5eb" +dependencies = [ + "memoffset", + "solana-account-info 3.1.1", + "solana-big-mod-exp 3.0.0", + "solana-blake3-hasher 3.1.0", + "solana-borsh 3.0.2", + "solana-clock 3.0.1", + "solana-cpi 3.1.0", + "solana-define-syscall 3.0.0", + "solana-epoch-rewards 3.0.1", + "solana-epoch-schedule 3.1.0", + "solana-epoch-stake", + "solana-example-mocks 3.0.0", + "solana-fee-calculator 3.2.0", + "solana-hash 3.1.0", + "solana-instruction 3.4.0", + "solana-instruction-error", + "solana-instructions-sysvar 3.0.0", + "solana-keccak-hasher 3.1.0", + "solana-last-restart-slot 3.0.0", + "solana-msg 3.1.0", + "solana-native-token 3.0.0", + "solana-program-entrypoint 3.1.1", + "solana-program-error 3.0.1", + "solana-program-memory 3.1.0", + "solana-program-option 3.1.0", + "solana-program-pack 3.1.0", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-secp256k1-recover 3.1.1", + "solana-serde-varint 3.0.1", + "solana-serialize-utils 3.1.1", + "solana-sha256-hasher 3.1.0", + "solana-short-vec 3.2.0", + "solana-slot-hashes 3.0.1", + "solana-slot-history 3.0.0", + "solana-stable-layout 3.0.1", + "solana-sysvar 3.1.1", + "solana-sysvar-id 3.1.0", +] + [[package]] name = "solana-program-entrypoint" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", + "solana-account-info 2.3.0", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.2.1", +] + +[[package]] +name = "solana-program-entrypoint" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" +dependencies = [ + "solana-account-info 3.1.1", + "solana-define-syscall 4.0.1", + "solana-program-error 3.0.1", + "solana-pubkey 4.2.0", ] [[package]] @@ -4477,9 +5040,20 @@ dependencies = [ "serde", "serde_derive", "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-pubkey", + "solana-instruction 2.3.0", + "solana-msg 2.2.1", + "solana-pubkey 2.2.1", +] + +[[package]] +name = "solana-program-error" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f04fa578707b3612b095f0c8e19b66a1233f7c42ca8082fcb3b745afcc0add6" +dependencies = [ + "borsh 1.5.7", + "serde", + "serde_derive", ] [[package]] @@ -4488,7 +5062,16 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" dependencies = [ - "solana-define-syscall", + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-program-memory" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4068648649653c2c50546e9a7fb761791b5ab0cda054c771bb5808d3a4b9eb52" +dependencies = [ + "solana-define-syscall 4.0.1", ] [[package]] @@ -4497,53 +5080,28 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" +[[package]] +name = "solana-program-option" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a88006a9b8594088cec9027ab77caaaa258a2aaa2083d3f086c44b42e50aeab" + [[package]] name = "solana-program-pack" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" dependencies = [ - "solana-program-error", + "solana-program-error 2.2.2", ] [[package]] -name = "solana-program-runtime" -version = "2.2.20" +name = "solana-program-pack" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05ec6893c130c9937b0fe042ee5ea91bda76320809ffc5953ddaa54d4bec279" +checksum = "3d7701cb15b90667ae1c89ef4ac35a59c61e66ce58ddee13d729472af7f41d59" dependencies = [ - "agave-feature-set", - "agave-precompiles", - "base64 0.22.1", - "bincode", - "enum-iterator", - "itertools 0.12.1", - "log", - "percentage", - "rand 0.8.5", - "serde", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clock", - "solana-compute-budget", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-hash", - "solana-instruction", - "solana-last-restart-slot", - "solana-log-collector", - "solana-measure", - "solana-pubkey", - "solana-rent", - "solana-sbpf", - "solana-sdk-ids", - "solana-slot-hashes", - "solana-stable-layout", - "solana-sysvar", - "solana-sysvar-id", - "solana-timings", - "solana-transaction-context", - "solana-type-overrides", - "thiserror 2.0.17", + "solana-program-error 3.0.1", ] [[package]] @@ -4558,21 +5116,39 @@ dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "five8_const", + "five8_const 0.1.4", "getrandom 0.2.16", "js-sys", "num-traits", "rand 0.8.5", "serde", "serde_derive", - "solana-atomic-u64", + "solana-atomic-u64 2.2.1", "solana-decode-error", - "solana-define-syscall", - "solana-sanitize", - "solana-sha256-hasher", + "solana-define-syscall 2.3.0", + "solana-sanitize 2.2.1", + "solana-sha256-hasher 2.3.0", "wasm-bindgen", ] +[[package]] +name = "solana-pubkey" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" +dependencies = [ + "solana-address 1.1.0", +] + +[[package]] +name = "solana-pubkey" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db719574990de7e8b0f55a8593ac92a5ccb42c8ce67b3e4bf05b139d5d9ee71" +dependencies = [ + "solana-address 2.6.0", +] + [[package]] name = "solana-pubsub-client" version = "2.2.20" @@ -4587,12 +5163,12 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "solana-account-decoder-client-types", - "solana-clock", - "solana-pubkey", + "solana-account-decoder-client-types 2.2.20", + "solana-clock 2.2.2", + "solana-pubkey 2.2.1", "solana-rpc-client-api", - "solana-signature", - "thiserror 2.0.17", + "solana-signature 2.2.1", + "thiserror 2.0.18", "tokio", "tokio-stream", "tokio-tungstenite", @@ -4620,14 +5196,14 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-net-utils", - "solana-pubkey", + "solana-pubkey 2.2.1", "solana-quic-definitions", "solana-rpc-client-api", - "solana-signer", + "solana-signer 2.2.1", "solana-streamer", "solana-tls-utils", - "solana-transaction-error", - "thiserror 2.0.17", + "solana-transaction-error 2.2.1", + "thiserror 2.0.18", "tokio", ] @@ -4658,9 +5234,22 @@ checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-sysvar-id", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-rent" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.1", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -4671,13 +5260,13 @@ checksum = "127e6dfa51e8c8ae3aa646d8b2672bc4ac901972a338a9e1cd249e030564fb9d" dependencies = [ "serde", "serde_derive", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clock", - "solana-epoch-schedule", + "solana-account 2.2.1", + "solana-clock 2.2.2", + "solana-epoch-schedule 2.2.1", "solana-genesis-config", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", ] [[package]] @@ -4686,8 +5275,8 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" dependencies = [ - "solana-pubkey", - "solana-reward-info", + "solana-pubkey 2.2.1", + "solana-reward-info 2.2.1", ] [[package]] @@ -4698,8 +5287,8 @@ checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" dependencies = [ "lazy_static", "solana-feature-set", - "solana-pubkey", - "solana-sdk-ids", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", ] [[package]] @@ -4712,6 +5301,16 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "solana-reward-info" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82be7946105c2ee6be9f9ee7bd18a068b558389221d29efa92b906476102bfcc" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "solana-rpc-client" version = "2.2.20" @@ -4730,22 +5329,22 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", + "solana-account 2.2.1", + "solana-account-decoder-client-types 2.2.20", + "solana-clock 2.2.2", + "solana-commitment-config 2.2.1", "solana-epoch-info", - "solana-epoch-schedule", + "solana-epoch-schedule 2.2.1", "solana-feature-gate-interface", - "solana-hash", - "solana-instruction", - "solana-message", - "solana-pubkey", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", + "solana-message 2.2.1", + "solana-pubkey 2.2.1", "solana-rpc-client-api", - "solana-signature", - "solana-transaction", - "solana-transaction-error", - "solana-transaction-status-client-types", + "solana-signature 2.2.1", + "solana-transaction 2.2.3", + "solana-transaction-error 2.2.1", + "solana-transaction-status-client-types 2.2.20", "solana-version", "tokio", ] @@ -4766,19 +5365,19 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-account-decoder-client-types", - "solana-clock", - "solana-commitment-config", - "solana-fee-calculator", + "solana-account 2.2.1", + "solana-account-decoder-client-types 2.2.20", + "solana-clock 2.2.2", + "solana-commitment-config 2.2.1", + "solana-fee-calculator 2.2.1", "solana-inflation", "solana-inline-spl", - "solana-pubkey", - "solana-signer", - "solana-transaction-error", - "solana-transaction-status-client-types", + "solana-pubkey 2.2.1", + "solana-signer 2.2.1", + "solana-transaction-error 2.2.1", + "solana-transaction-status-client-types 2.2.20", "solana-version", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -4787,15 +5386,15 @@ version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe9002ac145168b0701d949817e5ad7ed5b732e441835d6a3b3658480666ece0" dependencies = [ - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-commitment-config", - "solana-hash", - "solana-message", - "solana-nonce", - "solana-pubkey", + "solana-account 2.2.1", + "solana-commitment-config 2.2.1", + "solana-hash 2.2.1", + "solana-message 2.2.1", + "solana-nonce 2.2.1", + "solana-pubkey 2.2.1", "solana-rpc-client", - "solana-sdk-ids", - "thiserror 2.0.17", + "solana-sdk-ids 2.2.1", + "thiserror 2.0.18", ] [[package]] @@ -4804,11 +5403,17 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" +[[package]] +name = "solana-sanitize" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" + [[package]] name = "solana-sbpf" -version = "0.10.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6aed9fa0b4791538896be288fb5ccb2ab9f558ca0fe1ff28dfd3046fbdb5c5" +checksum = "b15b079e08471a9dbfe1e48b2c7439c85aa2a055cbd54eddd8bd257b0a7dbb29" dependencies = [ "byteorder", "combine 3.8.1", @@ -4817,7 +5422,7 @@ dependencies = [ "log", "rand 0.8.5", "rustc-demangle", - "thiserror 1.0.69", + "thiserror 2.0.18", "winapi", ] @@ -4833,14 +5438,14 @@ dependencies = [ "js-sys", "serde", "serde_json", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-account 2.2.1", "solana-bn254", "solana-client-traits", "solana-cluster-type", - "solana-commitment-config", + "solana-commitment-config 2.2.1", "solana-compute-budget-interface", "solana-decode-error", - "solana-derivation-path", + "solana-derivation-path 2.2.1", "solana-ed25519-program", "solana-epoch-info", "solana-epoch-rewards-hasher", @@ -4849,10 +5454,10 @@ dependencies = [ "solana-genesis-config", "solana-hard-forks", "solana-inflation", - "solana-instruction", + "solana-instruction 2.3.0", "solana-keypair", - "solana-message", - "solana-native-token", + "solana-message 2.2.1", + "solana-native-token 2.3.0", "solana-nonce-account", "solana-offchain-message", "solana-packet", @@ -4860,35 +5465,35 @@ dependencies = [ "solana-precompile-error", "solana-precompiles", "solana-presigner", - "solana-program", - "solana-program-memory", - "solana-pubkey", + "solana-program 2.3.0", + "solana-program-memory 2.3.1", + "solana-pubkey 2.2.1", "solana-quic-definitions", "solana-rent-collector", "solana-rent-debits", "solana-reserved-account-keys", - "solana-reward-info", - "solana-sanitize", - "solana-sdk-ids", - "solana-sdk-macro", + "solana-reward-info 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", "solana-secp256k1-program", - "solana-secp256k1-recover", + "solana-secp256k1-recover 2.2.1", "solana-secp256r1-program", - "solana-seed-derivable", - "solana-seed-phrase", + "solana-seed-derivable 2.2.1", + "solana-seed-phrase 2.2.1", "solana-serde", - "solana-serde-varint", - "solana-short-vec", + "solana-serde-varint 2.2.2", + "solana-short-vec 2.2.1", "solana-shred-version", - "solana-signature", - "solana-signer", + "solana-signature 2.2.1", + "solana-signer 2.2.1", "solana-system-transaction", "solana-time-utils", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", + "solana-transaction 2.2.3", + "solana-transaction-context 2.2.20", + "solana-transaction-error 2.2.1", "solana-validator-exit", - "thiserror 2.0.17", + "thiserror 2.0.18", "wasm-bindgen", ] @@ -4898,7 +5503,16 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" dependencies = [ - "solana-pubkey", + "solana-pubkey 2.2.1", +] + +[[package]] +name = "solana-sdk-ids" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" +dependencies = [ + "solana-address 2.6.0", ] [[package]] @@ -4910,7 +5524,19 @@ dependencies = [ "bs58", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", +] + +[[package]] +name = "solana-sdk-macro" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8765316242300c48242d84a41614cb3388229ec353ba464f6fe62a733e41806f" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -4926,9 +5552,9 @@ dependencies = [ "serde_derive", "sha3", "solana-feature-set", - "solana-instruction", + "solana-instruction 2.3.0", "solana-precompile-error", - "solana-sdk-ids", + "solana-sdk-ids 2.2.1", ] [[package]] @@ -4939,8 +5565,19 @@ checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" dependencies = [ "borsh 1.5.7", "libsecp256k1", - "solana-define-syscall", - "thiserror 2.0.17", + "solana-define-syscall 2.3.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c5f18893d62e6c73117dcba48f8f5e3266d90e5ec3d0a0a90f9785adac36c1" +dependencies = [ + "k256", + "solana-define-syscall 5.0.0", + "thiserror 2.0.18", ] [[package]] @@ -4952,27 +5589,27 @@ dependencies = [ "bytemuck", "openssl", "solana-feature-set", - "solana-instruction", + "solana-instruction 2.3.0", "solana-precompile-error", - "solana-sdk-ids", + "solana-sdk-ids 2.2.1", ] [[package]] -name = "solana-security-txt" -version = "1.1.2" +name = "solana-seed-derivable" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" +checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" dependencies = [ - "hashbrown 0.15.2", + "solana-derivation-path 2.2.1", ] [[package]] name = "solana-seed-derivable" -version = "2.2.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" +checksum = "ff7bdb72758e3bec33ed0e2658a920f1f35dfb9ed576b951d20d63cb61ecd95c" dependencies = [ - "solana-derivation-path", + "solana-derivation-path 3.0.0", ] [[package]] @@ -4986,6 +5623,17 @@ dependencies = [ "sha2 0.10.9", ] +[[package]] +name = "solana-seed-phrase" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc905b200a95f2ea9146e43f2a7181e3aeb55de6bc12afb36462d00a3c7310de" +dependencies = [ + "hmac 0.12.1", + "pbkdf2", + "sha2 0.10.9", +] + [[package]] name = "solana-serde" version = "2.2.1" @@ -5004,15 +5652,35 @@ dependencies = [ "serde", ] +[[package]] +name = "solana-serde-varint" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "950e5b83e839dc0f92c66afc124bb8f40e89bc90f0579e8ec5499296d27f54e3" +dependencies = [ + "serde", +] + [[package]] name = "solana-serialize-utils" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" dependencies = [ - "solana-instruction", - "solana-pubkey", - "solana-sanitize", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-serialize-utils" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d7cc401931d178472358e6b78dc72d031dc08f752d7410f0e8bd259dd6f02fa" +dependencies = [ + "solana-instruction-error", + "solana-pubkey 4.2.0", + "solana-sanitize 3.0.1", ] [[package]] @@ -5022,8 +5690,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" dependencies = [ "sha2 0.10.9", - "solana-define-syscall", - "solana-hash", + "solana-define-syscall 2.3.0", + "solana-hash 2.2.1", +] + +[[package]] +name = "solana-sha256-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall 4.0.1", + "solana-hash 4.3.0", ] [[package]] @@ -5035,6 +5714,15 @@ dependencies = [ "serde", ] +[[package]] +name = "solana-short-vec" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3bd991c2cc415291c86bb0b6b4d53e93d13bb40344e4c5a2884e0e4f5fa93f" +dependencies = [ + "serde_core", +] + [[package]] name = "solana-shred-version" version = "2.2.1" @@ -5042,8 +5730,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" dependencies = [ "solana-hard-forks", - "solana-hash", - "solana-sha256-hasher", + "solana-hash 2.2.1", + "solana-sha256-hasher 2.3.0", ] [[package]] @@ -5053,12 +5741,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47d251c8f3dc015f320b4161daac7f108156c837428e5a8cc61136d25beb11d6" dependencies = [ "bs58", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "rand 0.8.5", "serde", "serde-big-array", "serde_derive", - "solana-sanitize", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-signature" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a73c6e97cc2108be0adf6a6ea326434f8398df9d7eed81da2a4548b69e971c" +dependencies = [ + "ed25519-dalek 2.2.0", + "five8", + "serde", + "serde-big-array", + "serde_derive", + "solana-sanitize 3.0.1", + "wincode", ] [[package]] @@ -5067,9 +5770,20 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" dependencies = [ - "solana-pubkey", - "solana-signature", - "solana-transaction-error", + "solana-pubkey 2.2.1", + "solana-signature 2.2.1", + "solana-transaction-error 2.2.1", +] + +[[package]] +name = "solana-signer" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" +dependencies = [ + "solana-pubkey 3.0.0", + "solana-signature 3.4.0", + "solana-transaction-error 3.2.0", ] [[package]] @@ -5080,22 +5794,48 @@ checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" dependencies = [ "serde", "serde_derive", - "solana-hash", - "solana-sdk-ids", - "solana-sysvar-id", + "solana-hash 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-slot-hashes" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2585f70191623887329dfb5078da3a00e15e3980ea67f42c2e10b07028419f43" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 4.3.0", + "solana-sdk-ids 3.1.0", + "solana-sysvar-id 3.1.0", ] [[package]] name = "solana-slot-history" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-slot-history" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" dependencies = [ "bv", "serde", "serde_derive", - "solana-sdk-ids", - "solana-sysvar-id", + "solana-sdk-ids 3.1.0", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -5104,8 +5844,18 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" dependencies = [ - "solana-instruction", - "solana-pubkey", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", +] + +[[package]] +name = "solana-stable-layout" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9f6a291ba063a37780af29e7db14bdd3dc447584d8ba5b3fc4b88e2bbc982fa" +dependencies = [ + "solana-instruction 3.4.0", + "solana-pubkey 4.2.0", ] [[package]] @@ -5119,14 +5869,33 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-clock", - "solana-cpi", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", "solana-decode-error", - "solana-instruction", - "solana-program-error", - "solana-pubkey", - "solana-system-interface", - "solana-sysvar-id", + "solana-instruction 2.3.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.2.1", + "solana-system-interface 1.0.0", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-stake-interface" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9bc26191b533f9a6e5a14cca05174119819ced680a80febff2f5051a713f0db" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-clock 3.0.1", + "solana-cpi 3.1.0", + "solana-instruction 3.4.0", + "solana-program-error 3.0.1", + "solana-pubkey 3.0.0", + "solana-system-interface 2.0.0", + "solana-sysvar 3.1.1", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -5162,15 +5931,15 @@ dependencies = [ "solana-net-utils", "solana-packet", "solana-perf", - "solana-pubkey", + "solana-pubkey 2.2.1", "solana-quic-definitions", - "solana-signature", - "solana-signer", + "solana-signature 2.2.1", + "solana-signer 2.2.1", "solana-time-utils", "solana-tls-utils", - "solana-transaction-error", + "solana-transaction-error 2.2.1", "solana-transaction-metrics-tracker", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-util", "x509-parser", @@ -5187,24 +5956,39 @@ dependencies = [ "serde", "serde_derive", "solana-decode-error", - "solana-instruction", - "solana-pubkey", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", "wasm-bindgen", ] +[[package]] +name = "solana-system-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-instruction 3.4.0", + "solana-msg 3.1.0", + "solana-program-error 3.0.1", + "solana-pubkey 3.0.0", +] + [[package]] name = "solana-system-transaction" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" dependencies = [ - "solana-hash", + "solana-hash 2.2.1", "solana-keypair", - "solana-message", - "solana-pubkey", - "solana-signer", - "solana-system-interface", - "solana-transaction", + "solana-message 2.2.1", + "solana-pubkey 2.2.1", + "solana-signer 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction 2.2.3", ] [[package]] @@ -5220,28 +6004,62 @@ dependencies = [ "lazy_static", "serde", "serde_derive", - "solana-account-info", - "solana-clock", - "solana-define-syscall", - "solana-epoch-rewards", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-hash", - "solana-instruction", - "solana-instructions-sysvar", - "solana-last-restart-slot", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-pubkey", - "solana-rent", - "solana-sanitize", - "solana-sdk-ids", - "solana-sdk-macro", - "solana-slot-hashes", - "solana-slot-history", - "solana-stake-interface", - "solana-sysvar-id", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-define-syscall 2.3.0", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-fee-calculator 2.2.1", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", + "solana-instructions-sysvar 2.2.2", + "solana-last-restart-slot 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-stake-interface 1.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-sysvar" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info 3.1.1", + "solana-clock 3.0.1", + "solana-define-syscall 4.0.1", + "solana-epoch-rewards 3.0.1", + "solana-epoch-schedule 3.1.0", + "solana-fee-calculator 3.2.0", + "solana-hash 4.3.0", + "solana-instruction 3.4.0", + "solana-last-restart-slot 3.0.0", + "solana-program-entrypoint 3.1.1", + "solana-program-error 3.0.1", + "solana-program-memory 3.1.0", + "solana-pubkey 4.2.0", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.1", + "solana-slot-hashes 3.0.1", + "solana-slot-history 3.0.0", + "solana-sysvar-id 3.1.0", ] [[package]] @@ -5250,8 +6068,18 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" dependencies = [ - "solana-pubkey", - "solana-sdk-ids", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-sysvar-id" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" +dependencies = [ + "solana-address 2.6.0", + "solana-sdk-ids 3.1.0", ] [[package]] @@ -5263,24 +6091,24 @@ dependencies = [ "bincode", "log", "rayon", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-account 2.2.1", "solana-client-traits", - "solana-clock", - "solana-commitment-config", + "solana-clock 2.2.2", + "solana-commitment-config 2.2.1", "solana-connection-cache", "solana-epoch-info", - "solana-hash", - "solana-instruction", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", "solana-keypair", - "solana-message", - "solana-pubkey", + "solana-message 2.2.1", + "solana-pubkey 2.2.1", "solana-rpc-client", "solana-rpc-client-api", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction", - "solana-transaction-error", + "solana-signature 2.2.1", + "solana-signer 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction 2.2.3", + "solana-transaction-error 2.2.1", ] [[package]] @@ -5289,17 +6117,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" -[[package]] -name = "solana-timings" -version = "2.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1939a33d02905beaa4d657e9ade9cfcac6f9676a4a6178829a617503d45ab3b8" -dependencies = [ - "eager", - "enum-iterator", - "solana-pubkey", -] - [[package]] name = "solana-tls-utils" version = "2.2.20" @@ -5308,8 +6125,8 @@ checksum = "3699c06092641439f1679d4e015153c504abb660f7cc71eba4836d8cfc41649f" dependencies = [ "rustls 0.23.34", "solana-keypair", - "solana-pubkey", - "solana-signer", + "solana-pubkey 2.2.1", + "solana-signer 2.2.1", "x509-parser", ] @@ -5327,23 +6144,23 @@ dependencies = [ "log", "rayon", "solana-client-traits", - "solana-clock", - "solana-commitment-config", + "solana-clock 2.2.2", + "solana-commitment-config 2.2.1", "solana-connection-cache", "solana-epoch-info", "solana-measure", - "solana-message", + "solana-message 2.2.1", "solana-net-utils", - "solana-pubkey", + "solana-pubkey 2.2.1", "solana-pubsub-client", "solana-quic-definitions", "solana-rpc-client", "solana-rpc-client-api", - "solana-signature", - "solana-signer", - "solana-transaction", - "solana-transaction-error", - "thiserror 2.0.17", + "solana-signature 2.2.1", + "solana-signer 2.2.1", + "solana-transaction 2.2.3", + "solana-transaction-error 2.2.1", + "thiserror 2.0.18", "tokio", ] @@ -5358,22 +6175,44 @@ dependencies = [ "serde_derive", "solana-bincode", "solana-feature-set", - "solana-hash", - "solana-instruction", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", "solana-keypair", - "solana-message", + "solana-message 2.2.1", "solana-precompiles", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-ids", - "solana-short-vec", - "solana-signature", - "solana-signer", - "solana-system-interface", - "solana-transaction-error", + "solana-pubkey 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-signature 2.2.1", + "solana-signer 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction-error 2.2.1", "wasm-bindgen", ] +[[package]] +name = "solana-transaction" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96697cff5075a028265324255efed226099f6d761ca67342b230d09f72cc48d2" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-address 2.6.0", + "solana-hash 4.3.0", + "solana-instruction 3.4.0", + "solana-instruction-error", + "solana-message 3.1.0", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.2.0", + "solana-signature 3.4.0", + "solana-signer 3.0.0", + "solana-transaction-error 3.2.0", +] + [[package]] name = "solana-transaction-context" version = "2.2.20" @@ -5383,11 +6222,45 @@ dependencies = [ "bincode", "serde", "serde_derive", - "solana-account 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-instruction", - "solana-instructions-sysvar", - "solana-pubkey", - "solana-rent", + "solana-account 2.2.1", + "solana-instruction 2.3.0", + "solana-instructions-sysvar 2.2.2", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", +] + +[[package]] +name = "solana-transaction-context" +version = "3.1.12" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3#8d5041eddc6099cfddad8f348f6ff3e82e79e4c4" +dependencies = [ + "bincode", + "qualifier_attr", + "serde", + "solana-account 3.4.0 (git+https://github.com/magicblock-labs/magicblock-svm.git?branch=v3)", + "solana-instruction 3.4.0", + "solana-instructions-sysvar 3.0.0", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sbpf", + "solana-sdk-ids 3.1.0", +] + +[[package]] +name = "solana-transaction-context" +version = "3.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9915ab3612760f71bf66b7100fb27f3f49c81107c6ee286d72633945d56ad059" +dependencies = [ + "bincode", + "serde", + "solana-account 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-instruction 3.4.0", + "solana-instructions-sysvar 3.0.0", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sbpf", + "solana-sdk-ids 3.1.0", ] [[package]] @@ -5398,8 +6271,20 @@ checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" dependencies = [ "serde", "serde_derive", - "solana-instruction", - "solana-sanitize", + "solana-instruction 2.3.0", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-transaction-error" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a2165ad25b694c654d5395fc7a049452a192376e4c96a7fad05580f6ba5ba1c" +dependencies = [ + "serde", + "serde_derive", + "solana-instruction-error", + "solana-sanitize 3.0.1", ] [[package]] @@ -5415,8 +6300,8 @@ dependencies = [ "rand 0.8.5", "solana-packet", "solana-perf", - "solana-short-vec", - "solana-signature", + "solana-short-vec 2.2.1", + "solana-signature 2.2.1", ] [[package]] @@ -5431,25 +6316,39 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "solana-account-decoder-client-types", - "solana-commitment-config", - "solana-message", - "solana-reward-info", - "solana-signature", - "solana-transaction", - "solana-transaction-context", - "solana-transaction-error", - "thiserror 2.0.17", + "solana-account-decoder-client-types 2.2.20", + "solana-commitment-config 2.2.1", + "solana-message 2.2.1", + "solana-reward-info 2.2.1", + "solana-signature 2.2.1", + "solana-transaction 2.2.3", + "solana-transaction-context 2.2.20", + "solana-transaction-error 2.2.1", + "thiserror 2.0.18", ] [[package]] -name = "solana-type-overrides" -version = "2.2.20" +name = "solana-transaction-status-client-types" +version = "3.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae6235135ae4e449c38b1910f14935679821ee4f3dd32aa3826831694b0e50e" +checksum = "41f7f59cc02dacf2a775983dd890b5ac1d76260dfb12d2bfe5e0f9e88bdfec3d" dependencies = [ - "lazy_static", - "rand 0.8.5", + "base64 0.22.1", + "bincode", + "bs58", + "serde", + "serde_json", + "solana-account-decoder-client-types 3.1.13", + "solana-commitment-config 3.1.1", + "solana-instruction 3.4.0", + "solana-message 3.1.0", + "solana-pubkey 3.0.0", + "solana-reward-info 3.0.0", + "solana-signature 3.4.0", + "solana-transaction 3.1.0", + "solana-transaction-context 3.1.13", + "solana-transaction-error 3.2.0", + "thiserror 2.0.18", ] [[package]] @@ -5463,8 +6362,8 @@ dependencies = [ "solana-keypair", "solana-net-utils", "solana-streamer", - "solana-transaction-error", - "thiserror 2.0.17", + "solana-transaction-error 2.2.1", + "thiserror 2.0.18", "tokio", ] @@ -5484,8 +6383,8 @@ dependencies = [ "semver", "serde", "serde_derive", - "solana-sanitize", - "solana-serde-varint", + "solana-sanitize 2.2.1", + "solana-serde-varint 2.2.2", ] [[package]] @@ -5499,24 +6398,61 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-clock", + "solana-clock 2.2.2", "solana-decode-error", - "solana-hash", - "solana-instruction", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-serde-varint", - "solana-serialize-utils", - "solana-short-vec", - "solana-system-interface", + "solana-hash 2.2.1", + "solana-instruction 2.3.0", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-serde-varint 2.2.2", + "solana-serialize-utils 2.2.1", + "solana-short-vec 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-vote-interface" +version = "4.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6e123e16bfdd7a81d71b4c4699e0b29580b619f4cd2ef5b6aae1eb85e8979f" +dependencies = [ + "bincode", + "cfg_eval", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "serde_with", + "solana-clock 3.0.1", + "solana-hash 3.1.0", + "solana-instruction 3.4.0", + "solana-instruction-error", + "solana-pubkey 3.0.0", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-serde-varint 3.0.1", + "solana-serialize-utils 3.1.1", + "solana-short-vec 3.2.0", + "solana-system-interface 2.0.0", +] + +[[package]] +name = "solana-zero-copy" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a91404c7de468dd80658cdb5d894ec803d1092ea6e2bfdf84eee6f07559c0d" +dependencies = [ + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", ] [[package]] name = "solana-zk-sdk" -version = "2.2.20" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70bffb28540a216443ba302ab017d18a0e03f5300772929db79608870ee1c6e" +checksum = "9602bcb1f7af15caef92b91132ec2347e1c51a72ecdbefdaefa3eac4b8711475" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -5524,9 +6460,9 @@ dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", + "getrandom 0.2.16", "itertools 0.12.1", "js-sys", - "lazy_static", "merlin", "num-derive", "num-traits", @@ -5535,16 +6471,16 @@ dependencies = [ "serde_derive", "serde_json", "sha3", - "solana-derivation-path", - "solana-instruction", - "solana-pubkey", - "solana-sdk-ids", - "solana-seed-derivable", - "solana-seed-phrase", - "solana-signature", - "solana-signer", + "solana-derivation-path 3.0.0", + "solana-instruction 3.4.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.1.0", + "solana-seed-derivable 3.0.0", + "solana-seed-phrase 3.0.0", + "solana-signature 3.4.0", + "solana-signer 3.0.0", "subtle", - "thiserror 2.0.17", + "thiserror 2.0.18", "wasm-bindgen", "zeroize", ] @@ -5567,15 +6503,25 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "spl-discriminator" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" +checksum = "e597c5ff9ed7c74a54dbc47bae2f06e4db8c98f4356ad280200dc11878266db1" dependencies = [ "bytemuck", - "solana-program-error", - "solana-sha256-hasher", + "solana-program-error 3.0.1", + "solana-sha256-hasher 3.1.0", "spl-discriminator-derive", ] @@ -5587,7 +6533,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -5599,265 +6545,172 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.9", - "syn 2.0.108", + "syn 2.0.117", "thiserror 1.0.69", ] [[package]] -name = "spl-elgamal-registry" -version = "0.1.1" +name = "spl-generic-token" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" +checksum = "233df81b75ab99b42f002b5cdd6e65a7505ffa930624f7096a7580a56765e9cf" dependencies = [ "bytemuck", - "solana-program", - "solana-zk-sdk", - "spl-pod", - "spl-token-confidential-transfer-proof-extraction", -] - -[[package]] -name = "spl-memo" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb" -dependencies = [ - "solana-account-info", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-pubkey", + "solana-pubkey 3.0.0", ] [[package]] name = "spl-pod" -version = "0.5.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" +checksum = "2f9c6e142cdf1e7e77f480053ec9f0ce989890768ddf91f619b50f39d1b456f5" dependencies = [ "borsh 1.5.7", "bytemuck", "bytemuck_derive", "num-derive", "num-traits", - "solana-decode-error", - "solana-msg", - "solana-program-error", - "solana-program-option", - "solana-pubkey", - "solana-zk-sdk", - "thiserror 2.0.17", -] - -[[package]] -name = "spl-program-error" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" -dependencies = [ - "num-derive", - "num-traits", - "solana-program", - "spl-program-error-derive", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.9", - "syn 2.0.108", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd99ff1e9ed2ab86e3fd582850d47a739fec1be9f4661cba1782d3a0f26805f3" -dependencies = [ - "bytemuck", - "num-derive", - "num-traits", - "solana-account-info", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", - "thiserror 1.0.69", -] - -[[package]] -name = "spl-token" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed320a6c934128d4f7e54fe00e16b8aeaecf215799d060ae14f93378da6dc834" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", "num_enum", - "solana-program", - "thiserror 1.0.69", + "solana-program-error 3.0.1", + "solana-program-option 3.1.0", + "solana-pubkey 3.0.0", + "solana-zero-copy", + "solana-zk-sdk", + "thiserror 2.0.18", ] [[package]] -name = "spl-token-2022" -version = "7.0.0" +name = "spl-token-2022-interface" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" +checksum = "2fcd81188211f4b3c8a5eba7fd534c7142f9dd026123b3472492782cc72f4dc6" dependencies = [ "arrayref", "bytemuck", "num-derive", "num-traits", "num_enum", - "solana-program", - "solana-security-txt", + "solana-account-info 3.1.1", + "solana-instruction 3.4.0", + "solana-program-error 3.0.1", + "solana-program-option 3.1.0", + "solana-program-pack 3.1.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.1.0", "solana-zk-sdk", - "spl-elgamal-registry", - "spl-memo", "spl-pod", - "spl-token", - "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", - "thiserror 2.0.17", -] - -[[package]] -name = "spl-token-confidential-transfer-ciphertext-arithmetic" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170378693c5516090f6d37ae9bad2b9b6125069be68d9acd4865bbe9fc8499fd" -dependencies = [ - "base64 0.22.1", - "bytemuck", - "solana-curve25519", - "solana-zk-sdk", + "thiserror 2.0.18", ] [[package]] name = "spl-token-confidential-transfer-proof-extraction" -version = "0.2.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" +checksum = "879a9ebad0d77383d3ea71e7de50503554961ff0f4ef6cbca39ad126e6f6da3a" dependencies = [ "bytemuck", + "solana-account-info 3.1.1", "solana-curve25519", - "solana-program", + "solana-instruction 3.4.0", + "solana-instructions-sysvar 3.0.0", + "solana-msg 3.1.0", + "solana-program-error 3.0.1", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.1.0", "solana-zk-sdk", "spl-pod", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] name = "spl-token-confidential-transfer-proof-generation" -version = "0.3.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" +checksum = "a0cd59fce3dc00f563c6fa364d67c3f200d278eae681f4dc250240afcfe044b1" dependencies = [ "curve25519-dalek 4.1.3", "solana-zk-sdk", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] name = "spl-token-group-interface" -version = "0.5.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d595667ed72dbfed8c251708f406d7c2814a3fa6879893b323d56a10bedfc799" +checksum = "841cbd6f2322d02719be4da1affedbe6495b1048b7b985ec9796032564026e22" dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", + "num_enum", + "solana-address 2.6.0", + "solana-instruction 3.4.0", + "solana-nullable", + "solana-program-error 3.0.1", + "solana-zero-copy", "spl-discriminator", - "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] -name = "spl-token-metadata-interface" -version = "0.6.0" +name = "spl-token-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb" +checksum = "8c564ac05a7c8d8b12e988a37d82695b5ba4db376d07ea98bc4882c81f96c7f3" dependencies = [ - "borsh 1.5.7", + "arrayref", + "bytemuck", "num-derive", "num-traits", - "solana-borsh", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator", - "spl-pod", - "spl-type-length-value", - "thiserror 1.0.69", + "num_enum", + "solana-instruction 3.4.0", + "solana-program-error 3.0.1", + "solana-program-option 3.1.0", + "solana-program-pack 3.1.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.1.0", + "thiserror 2.0.18", ] [[package]] -name = "spl-transfer-hook-interface" -version = "0.9.0" +name = "spl-token-metadata-interface" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa7503d52107c33c88e845e1351565050362c2314036ddf19a36cd25137c043" +checksum = "9c467c7c3bd056f8fe60119e7ec34ddd6f23052c2fa8f1f51999098063b72676" dependencies = [ - "arrayref", - "bytemuck", + "borsh 1.5.7", "num-derive", "num-traits", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", + "solana-borsh 3.0.2", + "solana-instruction 3.4.0", + "solana-program-error 3.0.1", + "solana-pubkey 3.0.0", "spl-discriminator", "spl-pod", - "spl-program-error", - "spl-tlv-account-resolution", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "spl-type-length-value" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba70ef09b13af616a4c987797870122863cba03acc4284f226a4473b043923f9" +checksum = "2504631748c48d2a937414d64a12dcac4588d34bd07d355d648619c189d29435" dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-account-info", - "solana-decode-error", - "solana-msg", - "solana-program-error", + "num_enum", + "solana-account-info 3.1.1", + "solana-program-error 3.0.1", + "solana-zero-copy", "spl-discriminator", - "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -5891,9 +6744,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.108" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -5926,7 +6779,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -5979,11 +6832,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -5994,18 +6847,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -6098,7 +6951,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -6215,7 +7068,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -6461,7 +7314,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", "wasm-bindgen-shared", ] @@ -6496,7 +7349,7 @@ checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6586,38 +7439,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" +name = "wincode" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +checksum = "a61f8f0a55eb6cae5d7b7ad2eca536a944deb9722a948525181069064ecd1abc" dependencies = [ + "pastey", "proc-macro2", "quote", - "syn 2.0.108", + "thiserror 2.0.18", + "wincode-derive", ] [[package]] -name = "windows-interface" -version = "0.59.3" +name = "wincode-derive" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +checksum = "fca057fc9a13dd19cdb64ef558635d43c42667c0afa1ae7915ea1fa66993fd1a" dependencies = [ + "darling", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -6626,24 +7469,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -7010,7 +7835,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", "synstructure 0.13.2", ] @@ -7031,7 +7856,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -7051,7 +7876,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", "synstructure 0.13.2", ] @@ -7072,7 +7897,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] @@ -7105,7 +7930,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.117", ] [[package]] diff --git a/tools/ledger-stats/Cargo.toml b/tools/ledger-stats/Cargo.toml index f7d8f78df..b39779372 100644 --- a/tools/ledger-stats/Cargo.toml +++ b/tools/ledger-stats/Cargo.toml @@ -11,6 +11,7 @@ edition.workspace = true path = "src/lib.rs" [dependencies] +clap = { workspace = true, features = ["derive"] } magicblock-accounts-db = { workspace = true } magicblock-core = { workspace = true } magicblock-ledger = { workspace = true } @@ -21,6 +22,4 @@ solana-clock = { workspace = true } solana-message = { workspace = true } solana-pubkey = { workspace = true } solana-signature = { workspace = true } -solana-transaction-status = { workspace = true } -structopt = "0.3" -tabular = "0.2" +solana-transaction-status = { workspace = true, features = ["agave-unstable-api"] } diff --git a/tools/ledger-stats/src/account.rs b/tools/ledger-stats/src/account.rs index a091c45c0..39762c3cc 100644 --- a/tools/ledger-stats/src/account.rs +++ b/tools/ledger-stats/src/account.rs @@ -3,50 +3,35 @@ use num_format::{Locale, ToFormattedString}; use pretty_hex::*; use solana_account::ReadableAccount; use solana_pubkey::Pubkey; -use tabular::{Row, Table}; + +use crate::utils::print_two_col_table; pub fn print_account(db: &AccountsDb, pubkey: &Pubkey) { let account = db.get_account(pubkey).expect("Account not found"); let oncurve = pubkey.is_on_curve(); println!("{} at slot: {}", pubkey, db.slot()); - let table = - Table::new("{:<} {:>}") - .with_row(Row::new().with_cell("Column").with_cell("Value")) - .with_row( - Row::new() - .with_cell("=========================") - .with_cell("=============="), - ) - .with_row( - Row::new().with_cell("Pubkey").with_cell(pubkey.to_string()), - ) - .with_row( - Row::new() - .with_cell("Owner") - .with_cell(account.owner().to_string()), - ) - .with_row( - Row::new().with_cell("Lamports").with_cell( - account.lamports().to_formatted_string(&Locale::en), - ), - ) - .with_row( - Row::new() - .with_cell("Executable") - .with_cell(account.executable().to_string()), - ) - .with_row(Row::new().with_cell("Data (Bytes)").with_cell( - account.data().len().to_formatted_string(&Locale::en), - )) - .with_row(Row::new().with_cell("Curve").with_cell(if oncurve { - "On" - } else { - "Off" - })) - .with_row(Row::new().with_cell("RentEpoch").with_cell( - account.rent_epoch().to_formatted_string(&Locale::en), - )); + let rows = vec![ + ("Pubkey".to_string(), pubkey.to_string()), + ("Owner".to_string(), account.owner().to_string()), + ( + "Lamports".to_string(), + account.lamports().to_formatted_string(&Locale::en), + ), + ("Executable".to_string(), account.executable().to_string()), + ( + "Data (Bytes)".to_string(), + account.data().len().to_formatted_string(&Locale::en), + ), + ( + "Curve".to_string(), + if oncurve { "On" } else { "Off" }.to_string(), + ), + ( + "RentEpoch".to_string(), + account.rent_epoch().to_formatted_string(&Locale::en), + ), + ]; let data = if !account.data().is_empty() { let hex = format!( @@ -62,6 +47,7 @@ pub fn print_account(db: &AccountsDb, pubkey: &Pubkey) { } else { "".to_string() }; - println!("{}\n", table); + print_two_col_table(None, ["Column", "Value"], &rows); + println!(); println!("{}", data); } diff --git a/tools/ledger-stats/src/accounts.rs b/tools/ledger-stats/src/accounts.rs index 611826a44..be25c87b7 100644 --- a/tools/ledger-stats/src/accounts.rs +++ b/tools/ledger-stats/src/accounts.rs @@ -1,81 +1,45 @@ -use std::ffi::OsStr; - +use clap::ValueEnum; use magicblock_accounts_db::AccountsDb; use num_format::{Locale, ToFormattedString}; use solana_account::ReadableAccount; use solana_clock::Epoch; use solana_pubkey::Pubkey; -use structopt::StructOpt; -use tabular::{Row, Table}; // ----------------- // SortAccounts // ----------------- -#[derive(Debug, Default, StructOpt)] +#[derive(Clone, Copy, Debug, Default, ValueEnum)] pub enum SortAccounts { #[default] + #[value(alias = "p")] Pubkey, + #[value(alias = "o")] Owner, + #[value(alias = "l")] Lamports, + #[value(alias = "e")] Executable, + #[value(alias = "d")] DataLen, + #[value(alias = "r")] RentEpoch, } -impl From<&OsStr> for SortAccounts { - fn from(s: &OsStr) -> Self { - use SortAccounts::*; - let lower_case = s.to_str().unwrap().to_lowercase(); - let s = lower_case.as_str(); - if s.starts_with('o') { - Owner - } else if s.starts_with('l') { - Lamports - } else if s.starts_with('e') { - Executable - } else if s.starts_with('d') { - DataLen - } else if s.starts_with('r') { - RentEpoch - } else { - Pubkey - } - } -} - // ----------------- // FilterAccounts // ----------------- -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq, ValueEnum)] pub enum FilterAccounts { Executable, NonExecutable, + #[value(alias = "on")] OnCurve, + #[value(alias = "off")] OffCurve, } -impl From<&str> for FilterAccounts { - fn from(s: &str) -> Self { - use FilterAccounts::*; - match s { - "executable" => Executable, - "non-executable" => NonExecutable, - _ if s.starts_with("on") => OnCurve, - _ if s.starts_with("off") => OffCurve, - _ => panic!("Invalid filter {}", s), - } - } -} - impl FilterAccounts { - pub(crate) fn from_strings(s: &[String]) -> Vec { - let filters = - s.iter().map(|s| Self::from(s.as_str())).collect::>(); - Self::sanitize(&filters); - filters - } - - fn sanitize(filters: &[Self]) { + pub(crate) fn sanitize(filters: &[Self]) { if filters.contains(&Self::OnCurve) && filters.contains(&Self::OffCurve) { panic!("Cannot filter by both curve and pda"); @@ -181,43 +145,69 @@ pub fn print_accounts( return; } - let table_alignment = if print_rent_epoch { - "{:<} {:<} {:>} {:<} {:>} {:<} {:>}" - } else { - "{:<} {:<} {:>} {:<} {:>} {:<}" - }; - let mut table = Table::new(table_alignment); - let mut row = Row::new() - .with_cell("Pubkey") - .with_cell("Owner") - .with_cell("Lamports") - .with_cell("Executable") - .with_cell("Data(Bytes)") - .with_cell("Curve"); + let mut headers = vec![ + "Pubkey", + "Owner", + "Lamports", + "Executable", + "Data(Bytes)", + "Curve", + ]; if print_rent_epoch { - row.add_cell("Rent Epoch"); + headers.push("Rent Epoch"); } - table.add_row(row); + let rows = accounts + .into_iter() + .map(|acc| { + let mut row = vec![ + acc.pubkey.to_string(), + acc.owner.to_string(), + acc.lamports.to_formatted_string(&Locale::en), + acc.executable.to_string(), + acc.data.len().to_string(), + if acc.pubkey.is_on_curve() { + "On".to_string() + } else { + "Off".to_string() + }, + ]; + if print_rent_epoch { + row.push(acc.rent_epoch.to_formatted_string(&Locale::en)); + } + row + }) + .collect::>(); + println!("Accounts at slot {}", slot); + print_rows(&headers, &rows); +} - fn add_row(table: &mut Table, meta: AccountInfo, include_rent_epoch: bool) { - let oncurve = meta.pubkey.is_on_curve(); - let mut row = Row::new() - .with_cell(meta.pubkey.to_string()) - .with_cell(meta.owner.to_string()) - .with_cell(meta.lamports.to_formatted_string(&Locale::en)) - .with_cell(meta.executable) - .with_cell(meta.data.len()) - .with_cell(if oncurve { "On" } else { "Off" }); - if include_rent_epoch { - row.add_cell(meta.rent_epoch.to_formatted_string(&Locale::en)); +fn print_rows(headers: &[&str], rows: &[Vec]) { + let mut widths = headers + .iter() + .map(|header| header.len()) + .collect::>(); + for row in rows { + for (idx, cell) in row.iter().enumerate() { + widths[idx] = widths[idx].max(cell.len()); } - table.add_row(row); } - for acc in accounts { - add_row(&mut table, acc, print_rent_epoch); + print_row(headers.iter().copied(), &widths); + print_row(widths.iter().map(|width| "-".repeat(*width)), &widths); + for row in rows { + print_row(row.iter().map(String::as_str), &widths); } +} - println!("Accounts at slot {}", slot); - println!("{}", table); +fn print_row<'a>( + cells: impl IntoIterator + 'a>, + widths: &[usize], +) { + for (idx, (cell, width)) in cells.into_iter().zip(widths).enumerate() { + if idx > 0 { + print!(" "); + } + print!("{: Result { - match s { - "last" => Ok(BlockhashQuery::Last), - _ => Err("Invalid blockhash query".to_string()), - } - } -} - pub(crate) fn print_blockhash_details(ledger: &Ledger, query: BlockhashQuery) { match query { BlockhashQuery::Last => match ledger.get_max_blockhash() { diff --git a/tools/ledger-stats/src/counts.rs b/tools/ledger-stats/src/counts.rs index c87f2ec6b..a100374ac 100644 --- a/tools/ledger-stats/src/counts.rs +++ b/tools/ledger-stats/src/counts.rs @@ -1,6 +1,7 @@ use magicblock_ledger::Ledger; use num_format::{Locale, ToFormattedString}; -use tabular::{Row, Table}; + +use crate::utils::print_two_col_table; pub(crate) fn print_counts(ledger: &Ledger) { let block_times_count = ledger @@ -44,62 +45,23 @@ pub(crate) fn print_counts(ledger: &Ledger) { .expect("Failed to count perf samples") .to_formatted_string(&Locale::en); - let table = Table::new("{:<} {:>}") - .with_row(Row::new().with_cell("Column").with_cell("Count")) - .with_row( - Row::new() - .with_cell("=========================") - .with_cell("=============="), - ) - .with_row( - Row::new() - .with_cell("Blockhashes") - .with_cell(blockhash_count), - ) - .with_row( - Row::new() - .with_cell("BlockTimes") - .with_cell(block_times_count), - ) - .with_row( - Row::new() - .with_cell("TransactionStatus") - .with_cell(transaction_status_count), - ) - .with_row( - Row::new() - .with_cell("Transactions") - .with_cell(transaction_count), - ) - .with_row( - Row::new() - .with_cell("Successful Transactions") - .with_cell(successfull_transaction_status_count), - ) - .with_row( - Row::new() - .with_cell("Failed Transactions") - .with_cell(failed_transaction_status_count), - ) - .with_row( - Row::new() - .with_cell("SlotSignatures") - .with_cell(slot_signatures_count), - ) - .with_row( - Row::new() - .with_cell("AddressSignatures") - .with_cell(address_signatures_count), - ) - .with_row( - Row::new() - .with_cell("TransactionMemos") - .with_cell(transaction_memos_count), - ) - .with_row( - Row::new() - .with_cell("PerfSamples") - .with_cell(perf_samples_count), - ); - println!("{}", table); + let rows = vec![ + ("Blockhashes".to_string(), blockhash_count), + ("BlockTimes".to_string(), block_times_count), + ("TransactionStatus".to_string(), transaction_status_count), + ("Transactions".to_string(), transaction_count), + ( + "Successful Transactions".to_string(), + successfull_transaction_status_count, + ), + ( + "Failed Transactions".to_string(), + failed_transaction_status_count, + ), + ("SlotSignatures".to_string(), slot_signatures_count), + ("AddressSignatures".to_string(), address_signatures_count), + ("TransactionMemos".to_string(), transaction_memos_count), + ("PerfSamples".to_string(), perf_samples_count), + ]; + print_two_col_table(None, ["Column", "Count"], &rows); } diff --git a/tools/ledger-stats/src/main.rs b/tools/ledger-stats/src/main.rs index 66a1695df..2b546c0b1 100644 --- a/tools/ledger-stats/src/main.rs +++ b/tools/ledger-stats/src/main.rs @@ -1,8 +1,8 @@ use std::{collections::HashSet, path::PathBuf, str::FromStr}; +use clap::{Parser, Subcommand}; use magicblock_accounts_db::AccountsDb; use solana_pubkey::Pubkey; -use structopt::StructOpt; use crate::utils::open_ledger; @@ -14,115 +14,95 @@ mod transaction_details; mod transaction_logs; mod utils; -#[derive(Debug, StructOpt)] +#[derive(Debug, Subcommand)] enum Command { - #[structopt(name = "count", about = "Counts of items in ledger columns")] - Count { - #[structopt(parse(from_os_str))] - ledger_path: PathBuf, - }, - #[structopt(name = "log", about = "Transaction logs")] + #[command(name = "count", about = "Counts of items in ledger columns")] + Count { ledger_path: PathBuf }, + #[command(name = "log", about = "Transaction logs")] Log { - #[structopt(parse(from_os_str))] ledger_path: PathBuf, - #[structopt( + #[arg( long, - short = "u", - parse(from_flag), + short = 'u', help = "Show successful transactions, default: false" )] success: bool, - #[structopt(long, short, help = "Start slot")] + #[arg(long, short, help = "Start slot")] start: Option, - #[structopt(long, short, help = "End slot")] + #[arg(long, short, help = "End slot")] end: Option, - #[structopt( + #[arg( long, short, - multiple = true, - use_delimiter = true, + value_delimiter = ',', help = "Accounts in transaction" )] - accounts: Option>, + accounts: Vec, }, - #[structopt(name = "sig", about = "Transaction details for signature")] + #[command(name = "sig", about = "Transaction details for signature")] Sig { - #[structopt(parse(from_os_str))] ledger_path: PathBuf, - #[structopt(help = "Signature")] + #[arg(help = "Signature")] sig: String, - #[structopt( - long, - short, - help = "Show instruction ascii data", - parse(from_flag) - )] + #[arg(long, short, help = "Show instruction ascii data")] ascii: bool, }, - #[structopt(name = "accounts", about = "Account details")] + #[command(name = "accounts", about = "Account details")] Accounts { - #[structopt(parse(from_os_str))] ledger_path: PathBuf, - #[structopt( + #[arg( long, short, - parse(from_os_str), + value_enum, help = "Column by which to sort accounts", - default_value = "Pubkey" + default_value_t = accounts::SortAccounts::Pubkey )] sort: accounts::SortAccounts, - #[structopt(long, short, help = "Filter by account owner")] + #[arg(long, short, help = "Filter by account owner")] owner: Option, - #[structopt(long, short, help = "Show rent epoch", parse(from_flag))] + #[arg(long, short, help = "Show rent epoch")] rent_epoch: bool, - #[structopt( + #[arg( long, short, help = "Filter accounts by specified criteria (comma-separated). PDAs are off-curve", - possible_values = &["on", "on-curve", "off", "off-curve", "executable", "non-executable"], - multiple = true, - use_delimiter = true - )] - filter: Vec, - #[structopt( - long, - short, - help = "Print count instead of account details", - parse(from_flag) + value_enum, + value_delimiter = ',' )] + filter: Vec, + #[arg(long, short, help = "Print count instead of account details")] count: bool, }, - #[structopt( + #[command( name = "account", about = "Specific Account Details including Data" )] Account { - #[structopt(parse(from_os_str))] ledger_path: PathBuf, - #[structopt(help = "Pubkey of the account")] + #[arg(help = "Pubkey of the account")] pubkey: String, }, Blockhash { - #[structopt(parse(from_os_str))] ledger_path: PathBuf, - #[structopt( + #[arg( long, short, - help = "Prints the highest slot and blockhash for which a blockhash was recorded" + help = "Prints the highest slot and blockhash for which a blockhash was recorded", + value_enum )] query: blockhash::BlockhashQuery, }, } -#[derive(StructOpt)] +#[derive(Parser)] struct Cli { - #[structopt(subcommand)] + #[command(subcommand)] command: Command, } fn main() { - let args = Cli::from_args(); + let args = Cli::parse(); use Command::*; match args.command { @@ -136,7 +116,7 @@ fn main() { end, accounts, } => { - let accounts = accounts.map(|accounts| { + let accounts = (!accounts.is_empty()).then(|| { accounts .iter() .map(|account| { @@ -174,13 +154,13 @@ fn main() { let owner = owner.map(|owner| { Pubkey::from_str(&owner).expect("Invalid owner filter pubkey") }); - let filters = accounts::FilterAccounts::from_strings(&filter); + accounts::FilterAccounts::sanitize(&filter); accounts::print_accounts( &AccountsDb::open(&ledger_path) .expect("adb couldn't be opened"), sort, owner, - &filters, + &filter, rent_epoch, count, ); diff --git a/tools/ledger-stats/src/transaction_details.rs b/tools/ledger-stats/src/transaction_details.rs index 26362e371..ef845bbac 100644 --- a/tools/ledger-stats/src/transaction_details.rs +++ b/tools/ledger-stats/src/transaction_details.rs @@ -6,9 +6,8 @@ use pretty_hex::*; use solana_message::VersionedMessage; use solana_signature::Signature; use solana_transaction_status::ConfirmedTransactionWithStatusMeta; -use tabular::{Row, Table}; -use crate::utils::render_logs; +use crate::utils::{print_two_col_table, render_logs}; pub(crate) fn print_transaction_details( ledger: &Ledger, @@ -111,51 +110,33 @@ pub(crate) fn print_transaction_details( let compute_units_consumed = status_meta.compute_units_consumed.map_or(0, |c| c as usize); - let table = Table::new("{:<} {:>}") - .with_heading("\n++++ Transaction Status ++++\n") - .with_row(Row::new().with_cell("Field").with_cell("Value")) - .with_row( - Row::new() - .with_cell("=====================") - .with_cell("====================="), - ) - .with_row(Row::new().with_cell("Status").with_cell(status)) - .with_row(Row::new().with_cell("Fee").with_cell(status_meta.fee)) - .with_row(Row::new().with_cell("Pre-balances").with_cell(pre_balances)) - .with_row( - Row::new() - .with_cell("Post-balances") - .with_cell(post_balances), - ) - .with_row( - Row::new() - .with_cell("Inner Instructions") - .with_cell(inner_instructions), - ) - .with_row( - Row::new() - .with_cell("Pre-token Balances") - .with_cell(pre_token_balances), - ) - .with_row( - Row::new() - .with_cell("Post-token Balances") - .with_cell(post_token_balances), - ) - .with_row(Row::new().with_cell("Rewards").with_cell(rewards)) - .with_row(Row::new().with_cell("Loaded Addresses").with_cell(format!( - "writable: {}, readonly: {}", - status_meta.loaded_addresses.writable.len(), - status_meta.loaded_addresses.readonly.len() - ))) - .with_row(Row::new().with_cell("Return Data").with_cell(return_data)) - .with_row( - Row::new() - .with_cell("Compute Units Consumed") - .with_cell(compute_units_consumed), - ); - - println!("{}", table); + let rows = vec![ + ("Status".to_string(), status), + ("Fee".to_string(), status_meta.fee.to_string()), + ("Pre-balances".to_string(), pre_balances), + ("Post-balances".to_string(), post_balances), + ( + "Inner Instructions".to_string(), + inner_instructions.to_string(), + ), + ("Pre-token Balances".to_string(), pre_token_balances), + ("Post-token Balances".to_string(), post_token_balances), + ("Rewards".to_string(), rewards), + ( + "Loaded Addresses".to_string(), + format!( + "writable: {}, readonly: {}", + status_meta.loaded_addresses.writable.len(), + status_meta.loaded_addresses.readonly.len() + ), + ), + ("Return Data".to_string(), return_data), + ( + "Compute Units Consumed".to_string(), + compute_units_consumed.to_string(), + ), + ]; + print_two_col_table(Some("Transaction Status"), ["Field", "Value"], &rows); match status_meta.log_messages { None => {} @@ -180,32 +161,25 @@ pub(crate) fn print_transaction_details( if let VersionedMessage::V0(message) = tx_with_meta.get_transaction().message { - let table = Table::new("{:<} {:>}") - .with_heading("\n++++ Transaction ++++\n") - .with_row( - Row::new() - .with_cell("num_required_signatures") - .with_cell(message.header.num_required_signatures), - ) - .with_row( - Row::new() - .with_cell("num_readonly_signed_accounts") - .with_cell(message.header.num_readonly_signed_accounts), - ) - .with_row( - Row::new() - .with_cell("num_readonly_unsigned_accounts") - .with_cell( - message.header.num_readonly_unsigned_accounts, - ), - ) - .with_row( - Row::new() - .with_cell("block_time") - .with_cell(block_time.unwrap_or_default().to_string()), - ); - - println!("{}", table); + let rows = vec![ + ( + "num_required_signatures".to_string(), + message.header.num_required_signatures.to_string(), + ), + ( + "num_readonly_signed_accounts".to_string(), + message.header.num_readonly_signed_accounts.to_string(), + ), + ( + "num_readonly_unsigned_accounts".to_string(), + message.header.num_readonly_unsigned_accounts.to_string(), + ), + ( + "block_time".to_string(), + block_time.unwrap_or_default().to_string(), + ), + ]; + print_two_col_table(Some("Transaction"), ["Field", "Value"], &rows); println!("++++ Account Keys ++++\n"); for account_key in &message.account_keys { diff --git a/tools/ledger-stats/src/utils.rs b/tools/ledger-stats/src/utils.rs index 7dfa69c42..26b3b1b5d 100644 --- a/tools/ledger-stats/src/utils.rs +++ b/tools/ledger-stats/src/utils.rs @@ -1,6 +1,56 @@ use std::path::Path; use magicblock_ledger::Ledger; + +#[allow(dead_code)] // shared source file is compiled by both the lib and bin targets +pub(crate) fn print_two_col_table( + title: Option<&str>, + header: [&str; 2], + rows: &[(String, String)], +) { + if let Some(title) = title { + println!("\n++++ {title} ++++\n"); + } + + let left_w = rows + .iter() + .map(|(left, _)| left.len()) + .chain(std::iter::once(header[0].len())) + .max() + .unwrap_or(header[0].len()); + let right_w = rows + .iter() + .map(|(_, right)| right.len()) + .chain(std::iter::once(header[1].len())) + .max() + .unwrap_or(header[1].len()); + + println!( + "{:right_w$}", + header[0], + header[1], + left_w = left_w, + right_w = right_w + ); + println!( + "{:right_w$}", + "=".repeat(left_w), + "=".repeat(right_w), + left_w = left_w, + right_w = right_w + ); + + for (left, right) in rows { + println!( + "{:right_w$}", + left, + right, + left_w = left_w, + right_w = right_w + ); + } +} + #[allow(dead_code)] // this is actually used from `print_transaction_logs` ./transaction_logs.rs pub(crate) fn render_logs(logs: &[String], indent: &str) -> String { logs.iter()