diff --git a/.cspell-anchor-dictionary.txt b/.cspell-anchor-dictionary.txt new file mode 100644 index 0000000000..8d04b523af --- /dev/null +++ b/.cspell-anchor-dictionary.txt @@ -0,0 +1,96 @@ +aarch +ahash +ambigious +anchorversion +anza +Anza +arrayref +autoload +backpackapp +behaviour +blockhash +Blockhash +borsh +Borsh +bytemuck +bytemuckunsafe +cfgs +clippy +compinit +composibility +dedup +deriveaccounts +devex +devnet +Devnet +duplicative +footguns +fumadocs +Fumadocs +getrandom +Helius +idls +isinstance +keypair +Keypair +keypairs +Keypairs +Kibibyte +Lamport +lamports +Lamports +LAMPORTS +libclang +libudev +litesvm +localnet +Localnet +localnetwork +metas +Metas +millis +MSRV +msvc +namespacing +nonblocking +openbook +pathlib +pdas +pdksh +permissioned +programatically +programdata +projectserum +pubkeys +publickey +reallocs +repr +reqwest +rustc +rustls +rustup +RUSTUP +Sealevel +serde +shmem +sighash +sigverify +solana +Solana +Solana's +solanafoundation +Solang +solpg +Solpg +stdsimd +syscall +syscalls +sysvar +Sysvar +sysvars +underyling +unsized +Unsized +unverify +Zeroable +Znext diff --git a/.github/workflows/global-lint.yaml b/.github/workflows/global-lint.yaml new file mode 100644 index 0000000000..44af65bb9f --- /dev/null +++ b/.github/workflows/global-lint.yaml @@ -0,0 +1,27 @@ +# Linters that run on everything and don't exclude docs/** +name: Global Linters +on: + workflow_dispatch: + pull_request: + +# Manually run cspell locally via: +# make spellcheck +jobs: + spellcheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + # Pinned version of the v7.2.0 tag, which is a lightweight and hence mutable tag + - uses: streetsidesoftware/cspell-action@dcd03dc3e8a59ec2e360d0c62db517baa0b4bb6d + with: + # For now, only lint markdown files + files: | + **/*.md + **/*.mdx + inline: warning + + # Only check files in the PR or push + incremental_files_only: true + + # Do not error out on failures, only complain + strict: false diff --git a/.github/workflows/no-caching-tests.yaml b/.github/workflows/no-caching-tests.yaml index a962e6a745..a8fe3e0984 100644 --- a/.github/workflows/no-caching-tests.yaml +++ b/.github/workflows/no-caching-tests.yaml @@ -13,7 +13,7 @@ jobs: uses: ./.github/workflows/reusable-tests.yaml with: cache: false - solana_cli_version: 2.1.0 + solana_cli_version: 2.3.0 node_version: 20.18.0 cargo_profile: release anchor_binary_name: anchor-binary-no-caching diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4fa63c5e82..fcc0f93823 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -47,6 +47,10 @@ jobs: toolchain: stable target: ${{ matrix.target }} + - name: Install dependencies (Linux) + if: runner.os == 'Linux' + run: sudo apt-get update && sudo apt-get install -y libudev-dev + - name: Build release binary run: cargo build --package anchor-cli --release --locked --target ${{ matrix.target }} diff --git a/.github/workflows/reusable-tests.yaml b/.github/workflows/reusable-tests.yaml index 7b8af78491..f6ac214058 100644 --- a/.github/workflows/reusable-tests.yaml +++ b/.github/workflows/reusable-tests.yaml @@ -414,6 +414,8 @@ jobs: path: tests/declare-id - cmd: cd tests/declare-program && anchor test --skip-lint path: tests/declare-program + - cmd: cd tests/custom-program && anchor test --skip-lint + path: tests/custom-program - cmd: cd tests/typescript && anchor test --skip-lint && npx tsc --noEmit path: tests/typescript # zero-copy tests cause `/usr/bin/ld: final link failed: No space left on device` diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 59fe637d0b..ff4cf077b2 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -18,7 +18,7 @@ jobs: uses: ./.github/workflows/reusable-tests.yaml with: cache: true - solana_cli_version: 2.1.0 + solana_cli_version: 2.3.0 node_version: 20.18.0 cargo_profile: debug anchor_binary_name: anchor-binary diff --git a/CHANGELOG.md b/CHANGELOG.md index bee2b3de1d..7ea8718773 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,17 +12,62 @@ The minor version will be incremented upon a breaking change and the patch versi ### Features +### Fixes + +### Breaking + +## [0.32.1] - 2025-10-09 + +### Features + +### Fixes + +- lang: Fix deprecation warnings on alloc and add solana-program to prelude + ([#3975](https://github.com/solana-foundation/anchor/pull/3975)). +- cli: Fix race condition that could happen when deploying a program + ([#3976](https://github.com/solana-foundation/anchor/pull/3976)). + +### Breaking + +## [0.32.0] - 2025-10-08 + +### Features + - lang: Add `#[error]` attribute to `declare_program!` ([#3757](https://github.com/coral-xyz/anchor/pull/3757)). - cli: Replace `anchor verify` to use `solana-verify` under the hood, adding automatic installation via AVM, local path support, and future-proof argument passing ([#3768](https://github.com/solana-foundation/anchor/pull/3768)). +- lang: Replace `solana-program` crate with smaller crates ([#3819](https://github.com/solana-foundation/anchor/pull/3819)). +- cli: Make `anchor deploy` to upload the IDL to the cluster by default unless `--no-idl` is passed ([#3863](https://github.com/solana-foundation/anchor/pull/3863)). +- lang: Add generic program validation support to `Program` type allowing `Program<'info>` for executable-only validation ([#3878](https://github.com/solana-foundation/anchor/pull/3878)). +- lang: Use `solana-invoke` instead of `solana_cpi::invoke` ([#3900](https://github.com/solana-foundation/anchor/pull/3900)). +- client: remove `solana-client` from `anchor-client` and `cli` ([#3877](https://github.com/solana-foundation/anchor/pull/3877)). +- idl: Build IDL on stable Rustc ([#3842](https://github.com/solana-foundation/anchor/pull/3842)). +- lang: Add custom error when using init on SystemAccount ([#3828](https://github.com/solana-foundation/anchor/pull/3828)). +- lang: Add `errors` to `declare_program` ([#3757](https://github.com/solana-foundation/anchor/pull/3757)). +- ts: Add support for Bun as a package manager ([#3586](https://github.com/solana-foundation/anchor/pull/3586)). +- lang: Add support for tuple types in space calculation ([#3744](https://github.com/solana-foundation/anchor/pull/3744)). +- lang: Add missing pubkey const generation ([#3677](https://github.com/solana-foundation/anchor/pull/3677)). +- cli: Add the Minimum Supported Rust Version (MSRV) to the Rust template, since an arbitrary compiler version isn't supported ([#3873](https://github.com/solana-foundation/anchor/pull/3873)). ### Fixes - docker: Upgrade `node` to 20.18.0 LTS ([#3687](https://github.com/solana-foundation/anchor/pull/3687)). - cli: Fix using deprecated commitment `recent` in migration scripts ([#3725](https://github.com/coral-xyz/anchor/pull/3725)). - cli: Fix not respecting `provider.cluster` in `keys sync` command ([#3761](https://github.com/coral-xyz/anchor/pull/3761)). +- lang: Fix deprecated `realloc`, `store_current_index` and clippy warnings ([#3819](https://github.com/solana-foundation/anchor/pull/3819)). +- avm: fix AVM instability with solana-verify ([#3867](https://github.com/solana-foundation/anchor/pull/3867)). +- avm: update AVM to only use non-draft releases([#3931](https://github.com/solana-foundation/anchor/pull/3931)). +- lang: update bytemuck ([#3858](https://github.com/solana-foundation/anchor/pull/3858)). +- idl: disable Locale in camelCase ([#3845](https://github.com/solana-foundation/anchor/pull/3845)). +- ts: Remove event parsing panic ([#3657](https://github.com/solana-foundation/anchor/pull/3657)). ### Breaking +- spl: Update SPL dependencies to latest compatible versions ([#3860](https://github.com/solana-foundation/anchor/pull/3860)). +- cli: Replace `anchor verify` to use `solana-verify` under the hood, adding automatic installation via AVM, local path support, and future-proof argument passing ([#3768](https://github.com/solana-foundation/anchor/pull/3768)). +- cli: Upload IDL by default with an option to skip ((#3863)[https://github.com/solana-foundation/anchor/pull/3863]). +- lang: remove Solang ([#3824](https://github.com/solana-foundation/anchor/pull/3824)). +- cli: remove `anchor publish` command ([#3795](https://github.com/solana-foundation/anchor/pull/3795)). + ## [0.31.1] - 2025-04-19 This release uses a new docker image found at `solanafoundation/anchor` for the `anchor verify` command. New images will be pushed to this organization in the future. diff --git a/Cargo.lock b/Cargo.lock index f395261407..a669adc988 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -63,6 +63,42 @@ dependencies = [ "zeroize", ] +[[package]] +name = "agave-feature-set" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81071c030078429f000741da9ea84e34c432614f1b64dba741e1a572beeece3b" +dependencies = [ + "ahash", + "solana-epoch-schedule 2.2.1", + "solana-hash 2.2.1", + "solana-pubkey 2.2.1", + "solana-sha256-hasher 2.3.0", +] + +[[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 2.2.1", + "solana-precompile-error", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + [[package]] name = "ahash" version = "0.8.11" @@ -102,7 +138,7 @@ dependencies = [ [[package]] name = "anchor-attribute-access-control" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "proc-macro2", @@ -112,7 +148,7 @@ dependencies = [ [[package]] name = "anchor-attribute-account" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "bs58", @@ -123,7 +159,7 @@ dependencies = [ [[package]] name = "anchor-attribute-constant" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -132,7 +168,7 @@ dependencies = [ [[package]] name = "anchor-attribute-error" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -141,7 +177,7 @@ dependencies = [ [[package]] name = "anchor-attribute-event" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "proc-macro2", @@ -151,7 +187,7 @@ dependencies = [ [[package]] name = "anchor-attribute-program" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-lang-idl", "anchor-syn", @@ -166,7 +202,7 @@ dependencies = [ [[package]] name = "anchor-cli" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-client", "anchor-lang", @@ -190,8 +226,8 @@ dependencies = [ "serde_json", "shellexpand", "solana-cli-config", - "solana-client", "solana-faucet", + "solana-rpc-client", "solana-sdk", "syn 1.0.109", "tar", @@ -201,24 +237,27 @@ dependencies = [ [[package]] name = "anchor-client" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-lang", "anyhow", "futures", "regex", "serde", + "solana-account", "solana-account-decoder", - "solana-client", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.66", "tokio", "url", ] [[package]] name = "anchor-derive-accounts" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -227,7 +266,7 @@ dependencies = [ [[package]] name = "anchor-derive-serde" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "borsh-derive-internal", @@ -238,7 +277,7 @@ dependencies = [ [[package]] name = "anchor-derive-space" -version = "0.31.1" +version = "0.32.1" dependencies = [ "proc-macro2", "quote", @@ -247,7 +286,7 @@ dependencies = [ [[package]] name = "anchor-lang" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-attribute-access-control", "anchor-attribute-account", @@ -263,8 +302,28 @@ dependencies = [ "bincode", "borsh 0.10.3", "bytemuck", - "solana-program", - "thiserror", + "const-crypto", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "solana-define-syscall 2.3.0", + "solana-feature-gate-interface", + "solana-instruction 2.2.1", + "solana-instructions-sysvar 2.2.2", + "solana-invoke", + "solana-loader-v3-interface", + "solana-msg 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-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", + "solana-sysvar 2.2.2", + "solana-sysvar-id 2.2.1", + "thiserror 1.0.66", ] [[package]] @@ -290,23 +349,23 @@ dependencies = [ [[package]] name = "anchor-spl" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-lang", "borsh 0.10.3", "mpl-token-metadata", "spl-associated-token-account", - "spl-memo 6.0.0", - "spl-pod 0.5.0", - "spl-token 7.0.0", - "spl-token-2022 6.0.0", - "spl-token-group-interface 0.5.0", - "spl-token-metadata-interface 0.6.0", + "spl-memo", + "spl-pod", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", ] [[package]] name = "anchor-syn" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anyhow", "bs58", @@ -318,7 +377,7 @@ dependencies = [ "serde_json", "sha2 0.10.8", "syn 1.0.109", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -396,9 +455,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.92" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" [[package]] name = "ark-bn254" @@ -535,56 +594,6 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" -[[package]] -name = "asn1-rs" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" -dependencies = [ - "asn1-rs-derive", - "asn1-rs-impl", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror", - "time", -] - -[[package]] -name = "asn1-rs-derive" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", -] - -[[package]] -name = "asn1-rs-impl" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[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.3" @@ -599,26 +608,15 @@ dependencies = [ "tokio", ] -[[package]] -name = "async-lock" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" -dependencies = [ - "event-listener 5.3.1", - "event-listener-strategy", - "pin-project-lite", -] - [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -627,7 +625,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi", "libc", "winapi", ] @@ -640,7 +638,7 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "avm" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anyhow", "cargo_toml", @@ -671,16 +669,16 @@ dependencies = [ ] [[package]] -name = "base64" -version = "0.12.3" +name = "base16ct" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base64" -version = "0.13.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" [[package]] name = "base64" @@ -694,6 +692,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + [[package]] name = "bincode" version = "1.3.3" @@ -711,18 +715,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" dependencies = [ "serde", ] [[package]] name = "blake3" -version = "1.5.4" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -762,11 +766,11 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" dependencies = [ - "borsh-derive 1.5.1", + "borsh-derive 1.5.7", "cfg_aliases", ] @@ -785,16 +789,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.86", - "syn_derive", + "syn 2.0.104", ] [[package]] @@ -867,22 +870,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -893,19 +896,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" - -[[package]] -name = "caps" -version = "0.5.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" -dependencies = [ - "libc", - "thiserror", -] +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cargo_toml" @@ -928,12 +921,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfg-if" version = "1.0.0" @@ -954,14 +941,14 @@ checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -969,7 +956,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.4", + "windows-link", ] [[package]] @@ -993,7 +980,7 @@ dependencies = [ "bitflags 1.3.2", "strsim 0.8.0", "textwrap", - "unicode-width", + "unicode-width 0.1.11", "vec_map", ] @@ -1037,7 +1024,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -1065,36 +1052,17 @@ dependencies = [ "unreachable", ] -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", - "unicode-width", - "windows-sys 0.52.0", + "once_cell", + "unicode-width 0.2.1", + "windows-sys 0.59.0", ] [[package]] @@ -1118,10 +1086,26 @@ dependencies = [ ] [[package]] -name = "constant_time_eq" +name = "const-crypto" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "1c06f1eb05f06cf2e380fdded278fbf056a38974299d77960555a311dcf91a52" +dependencies = [ + "keccak-const", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "core-foundation" @@ -1159,35 +1143,11 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.15" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] @@ -1202,6 +1162,18 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[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" @@ -1271,7 +1243,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -1295,7 +1267,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -1306,20 +1278,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.86", -] - -[[package]] -name = "dashmap" -version = "5.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" -dependencies = [ - "cfg-if", - "hashbrown 0.14.1", - "lock_api", - "once_cell", - "parking_lot_core", + "syn 2.0.104", ] [[package]] @@ -1329,26 +1288,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] -name = "der-parser" -version = "8.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" -dependencies = [ - "asn1-rs", - "displaydoc", - "nom", - "num-bigint 0.4.6", - "num-traits", - "rusticata-macros", -] - -[[package]] -name = "deranged" -version = "0.3.11" +name = "der" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ - "powerfmt", + "const-oid", + "zeroize", ] [[package]] @@ -1396,6 +1342,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -1449,45 +1396,36 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] -name = "dlopen2" -version = "0.5.0" +name = "eager" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" -dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" [[package]] -name = "dlopen2_derive" -version = "0.3.0" +name = "ecdsa" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.86", + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature 2.2.0", + "spki", ] -[[package]] -name = "eager" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" - [[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]] @@ -1522,11 +1460,30 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +[[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 = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" @@ -1554,7 +1511,7 @@ checksum = "03cdc46ec28bd728e67540c528013c6a10eb69a02eb31078a1bda695438cbfb8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -1597,33 +1554,6 @@ dependencies = [ "libc", ] -[[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.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" -dependencies = [ - "event-listener 5.3.1", - "pin-project-lite", -] - [[package]] name = "fastrand" version = "2.0.1" @@ -1636,6 +1566,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" @@ -1654,6 +1594,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + [[package]] name = "five8_const" version = "0.1.3" @@ -1685,6 +1634,21 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1750,7 +1714,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -1765,12 +1729,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" - [[package]] name = "futures-util" version = "0.3.31" @@ -1795,9 +1753,9 @@ version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ - "serde", "typenum", "version_check", + "zeroize", ] [[package]] @@ -1843,23 +1801,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] -name = "governor" -version = "0.6.3" +name = "group" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "cfg-if", - "dashmap", - "futures", - "futures-timer", - "no-std-compat", - "nonzero_ext", - "parking_lot", - "portable-atomic", - "quanta", - "rand 0.8.5", - "smallvec", - "spinning_top", + "ff", + "rand_core 0.6.4", + "subtle", ] [[package]] @@ -1905,12 +1854,6 @@ dependencies = [ "ahash", ] -[[package]] -name = "hashbrown" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" - [[package]] name = "hashbrown" version = "0.15.0" @@ -1948,16 +1891,17 @@ dependencies = [ ] [[package]] -name = "hermit-abi" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" - -[[package]] -name = "histogram" -version = "0.6.9" +name = "hidapi" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" +checksum = "03b876ecf37e86b359573c16c8366bc3eba52b689884a0fc42ba3f67203d2a8b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "pkg-config", + "windows-sys 0.48.0", +] [[package]] name = "hmac" @@ -2062,7 +2006,7 @@ dependencies = [ "futures-util", "http", "hyper", - "rustls 0.21.12", + "rustls", "tokio", "tokio-rustls", ] @@ -2090,6 +2034,92 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2098,12 +2128,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -2118,9 +2159,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", "hashbrown 0.15.0", @@ -2128,15 +2169,15 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.1", + "web-time", ] [[package]] @@ -2149,12 +2190,14 @@ dependencies = [ ] [[package]] -name = "instant" -version = "0.1.12" +name = "io-uring" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" dependencies = [ + "bitflags 2.9.1", "cfg-if", + "libc", ] [[package]] @@ -2193,26 +2236,6 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" -[[package]] -name = "jni" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" -dependencies = [ - "cesu8", - "combine 4.6.7", - "jni-sys", - "log", - "thiserror", - "walkdir", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - [[package]] name = "jobserver" version = "0.1.32" @@ -2224,10 +2247,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2246,6 +2270,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.8", + "signature 2.2.0", +] + [[package]] name = "keccak" version = "0.1.4" @@ -2255,6 +2293,12 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-const" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" + [[package]] name = "lazy_static" version = "1.5.0" @@ -2263,9 +2307,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libsecp256k1" @@ -2321,6 +2365,12 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + [[package]] name = "lock_api" version = "0.4.10" @@ -2333,9 +2383,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "memchr" @@ -2389,12 +2439,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -2406,13 +2450,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -2424,45 +2468,10 @@ dependencies = [ "borsh 0.10.3", "num-derive 0.3.3", "num-traits", - "solana-program", - "thiserror", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - -[[package]] -name = "no-std-compat" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", + "solana-program 3.0.0", + "thiserror 1.0.66", ] -[[package]] -name = "nonzero_ext" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" - [[package]] name = "num" version = "0.2.1" @@ -2508,12 +2517,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - [[package]] name = "num-derive" version = "0.3.3" @@ -2533,7 +2536,7 @@ checksum = "9e6a0fd4f737c707bd9086cc16c925f294943eb62eb71499e9fd4cf71f8b9f4e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -2577,16 +2580,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.3", - "libc", -] - [[package]] name = "num_enum" version = "0.7.3" @@ -2605,7 +2598,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -2623,15 +2616,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "oid-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" -dependencies = [ - "asn1-rs", -] - [[package]] name = "once_cell" version = "1.20.2" @@ -2645,16 +2629,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] -name = "openssl-probe" -version = "0.1.5" +name = "openssl" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] [[package]] -name = "parking" -version = "2.2.1" +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "openssl-src" +version = "300.5.2+3.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d270b79e2926f5150189d475bc7e9d2c69f9c4697b185fa917d5a32b792d21b4" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] [[package]] name = "parking_lot" @@ -2709,15 +2729,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "pem" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" -dependencies = [ - "base64 0.13.1", -] - [[package]] name = "percent-encoding" version = "2.3.1" @@ -2745,6 +2756,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.27" @@ -2779,10 +2800,13 @@ dependencies = [ ] [[package]] -name = "powerfmt" -version = "0.2.0" +name = "potential_utf" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] [[package]] name = "ppv-lite86" @@ -2808,29 +2832,6 @@ dependencies = [ "toml_edit 0.21.0", ] -[[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", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" version = "1.0.95" @@ -2850,106 +2851,41 @@ dependencies = [ ] [[package]] -name = "quanta" -version = "0.12.3" +name = "quote" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ - "crossbeam-utils", - "libc", - "once_cell", - "raw-cpuid", - "wasi 0.11.0+wasi-snapshot-preview1", - "web-sys", - "winapi", + "proc-macro2", ] [[package]] -name = "quinn" -version = "0.11.5" +name = "rand" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "bytes", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash 2.0.0", - "rustls 0.23.16", - "socket2 0.5.7", - "thiserror", - "tokio", - "tracing", + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", ] [[package]] -name = "quinn-proto" -version = "0.11.8" +name = "rand" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "bytes", - "rand 0.8.5", - "ring 0.17.8", - "rustc-hash 2.0.0", - "rustls 0.23.16", - "rustls-platform-verifier", - "slab", - "thiserror", - "tinyvec", - "tracing", + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", ] [[package]] -name = "quinn-udp" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e346e016eacfff12233c243718197ca12f148c84e1e84268a896699b41c71780" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.5.7", - "tracing", - "windows-sys 0.52.0", -] - -[[package]] -name = "quote" -version = "1.0.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" +name = "rand_chacha" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ @@ -2994,35 +2930,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "raw-cpuid" -version = "11.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" -dependencies = [ - "bitflags 2.6.0", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - [[package]] name = "redox_syscall" version = "0.2.16" @@ -3049,7 +2956,7 @@ checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom 0.2.10", "redox_syscall 0.2.16", - "thiserror", + "thiserror 1.0.66", ] [[package]] @@ -3106,8 +3013,8 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.12", - "rustls-pemfile 1.0.3", + "rustls", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", @@ -3137,7 +3044,17 @@ dependencies = [ "reqwest", "serde", "task-local-extensions", - "thiserror", + "thiserror 1.0.66", +] + +[[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]] @@ -3203,12 +3120,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc-hash" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" - [[package]] name = "rustc_version" version = "0.4.0" @@ -3218,22 +3129,13 @@ dependencies = [ "semver", ] -[[package]] -name = "rusticata-macros" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" -dependencies = [ - "nom", -] - [[package]] name = "rustix" version = "0.38.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys", @@ -3248,37 +3150,10 @@ checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring 0.17.8", - "rustls-webpki 0.101.7", + "rustls-webpki", "sct", ] -[[package]] -name = "rustls" -version = "0.23.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" -dependencies = [ - "once_cell", - "ring 0.17.8", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" -dependencies = [ - "openssl-probe", - "rustls-pemfile 2.2.0", - "rustls-pki-types", - "schannel", - "security-framework", -] - [[package]] name = "rustls-pemfile" version = "1.0.3" @@ -3288,48 +3163,6 @@ dependencies = [ "base64 0.21.7", ] -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "rustls-pki-types" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" - -[[package]] -name = "rustls-platform-verifier" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" -dependencies = [ - "core-foundation", - "core-foundation-sys", - "jni", - "log", - "once_cell", - "rustls 0.23.16", - "rustls-native-certs", - "rustls-platform-verifier-android", - "rustls-webpki 0.102.8", - "security-framework", - "security-framework-sys", - "webpki-roots 0.26.6", - "winapi", -] - -[[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - [[package]] name = "rustls-webpki" version = "0.101.7" @@ -3341,15 +3174,10 @@ dependencies = [ ] [[package]] -name = "rustls-webpki" -version = "0.102.8" +name = "rustversion" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring 0.17.8", - "rustls-pki-types", - "untrusted 0.9.0", -] +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" @@ -3366,27 +3194,12 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "schannel" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" -dependencies = [ - "windows-sys 0.48.0", -] - [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scroll" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" - [[package]] name = "sct" version = "0.7.0" @@ -3398,44 +3211,43 @@ dependencies = [ ] [[package]] -name = "security-framework" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-foundation-sys", - "libc", - "num-bigint 0.4.6", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.0" +name = "sec1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "core-foundation-sys", - "libc", + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", ] [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.15" @@ -3447,20 +3259,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" dependencies = [ "itoa", "memchr", @@ -3491,9 +3303,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" dependencies = [ "serde", "serde_derive", @@ -3502,14 +3314,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -3518,7 +3330,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.10.0", "itoa", "ryu", "serde", @@ -3560,6 +3372,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" @@ -3591,6 +3409,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.1" @@ -3606,6 +3434,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 = "siphasher" version = "0.3.11" @@ -3639,33 +3477,37 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "solana-account" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730219420b206253977b8cc8fd7846ffe021ab2e2c718e70db420efbd2775547" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" dependencies = [ "bincode", "serde", "serde_bytes", "serde_derive", - "solana-instruction", - "solana-program", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-instruction 2.2.1", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sysvar 2.2.2", ] [[package]] name = "solana-account-decoder" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14e5b1c167335942b659d077552607f79b2eca3472e40eeed97a2c55838b84ef" +checksum = "d06df58936cc05b03429a2eba8ef2c4bb6c85fe21d2478ea059e7ef6abd0f5c6" dependencies = [ "Inflector", "base64 0.22.1", @@ -3676,22 +3518,35 @@ dependencies = [ "serde", "serde_derive", "serde_json", + "solana-account", "solana-account-decoder-client-types", + "solana-clock 2.2.2", "solana-config-program", - "solana-sdk", - "spl-token 6.0.0", - "spl-token-2022 4.0.0", - "spl-token-group-interface 0.3.0", - "spl-token-metadata-interface 0.4.0", - "thiserror", + "solana-epoch-schedule 2.2.1", + "solana-fee-calculator 2.2.1", + "solana-instruction 2.2.1", + "solana-nonce 2.2.1", + "solana-program 2.2.1", + "solana-program-pack 2.2.1", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-sysvar 2.2.2", + "spl-token 7.0.0", + "spl-token-2022 7.0.0", + "spl-token-group-interface 0.5.0", + "spl-token-metadata-interface 0.6.0", + "thiserror 2.0.14", "zstd", ] [[package]] name = "solana-account-decoder-client-types" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee0750d2f106ecbee6d4508b6e2029e6946cb5f67288bf002b5a62f9f451c43" +checksum = "ee049978c5bbbb5213e4f0e924a76d98d89c771220539bd411b392bf4e3d373a" dependencies = [ "base64 0.22.1", "bs58", @@ -3699,660 +3554,1475 @@ dependencies = [ "serde_derive", "serde_json", "solana-account", - "solana-pubkey", + "solana-pubkey 2.2.1", "zstd", ] [[package]] name = "solana-account-info" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6abe81cfc4a75f71a510c6856b03a7d8525e416af3c69d55daef62e6078b8d40" +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-atomic-u64" -version = "2.1.0" +name = "solana-account-info" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391b795afcdcad39ddc6c938d64b789d036cdfe00d9dc5ff83024cf2da9f066f" +checksum = "82f4691b69b172c687d218dd2f1f23fc7ea5e9aa79df9ac26dab3d8dd829ce48" dependencies = [ - "parking_lot", + "bincode", + "serde", + "solana-program-error 3.0.0", + "solana-program-memory 3.0.0", + "solana-pubkey 3.0.0", ] [[package]] -name = "solana-bincode" -version = "2.1.0" +name = "solana-address" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e85cb5961c356345a61378163fd9057011b35540f8bcdd8d8a09cb10117264f" +checksum = "0a7a457086457ea9db9a5199d719dc8734dc2d0342fad0d8f77633c31eb62f19" dependencies = [ - "bincode", + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8", + "five8_const", "serde", - "solana-instruction", + "serde_derive", + "solana-atomic-u64 3.0.0", + "solana-define-syscall 3.0.0", + "solana-program-error 3.0.0", + "solana-sanitize 3.0.0", + "solana-sha256-hasher 3.0.0", ] [[package]] -name = "solana-bn254" -version = "2.1.0" +name = "solana-address-lookup-table-interface" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39c4030db26ad618f7e18fb5284df19fd52a68e092a1ca58db857108c4cc777" +checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" dependencies = [ - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", + "bincode", "bytemuck", - "solana-program", - "thiserror", + "serde", + "serde_derive", + "solana-clock 2.2.2", + "solana-instruction 2.2.1", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-slot-hashes 2.2.1", ] [[package]] -name = "solana-borsh" -version = "2.1.0" +name = "solana-address-lookup-table-interface" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d526f3525ab22a3ada3f9a1d642664dafac00dc9208326b701a2045514eb04" +checksum = "e2f56cac5e70517a2f27d05e5100b20de7182473ffd0035b23ea273307905987" dependencies = [ - "borsh 0.10.3", - "borsh 1.5.1", + "solana-clock 3.0.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.0.0", + "solana-slot-hashes 3.0.0", ] [[package]] -name = "solana-clap-utils" -version = "2.1.0" +name = "solana-atomic-u64" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1709e1b0aefc8062fca29a4fde8d35f39ee95586e77cc6360e9bfc50a094c44f" +checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" dependencies = [ - "chrono", - "clap 2.34.0", - "rpassword", - "solana-derivation-path", - "solana-remote-wallet", - "solana-sdk", - "thiserror", - "tiny-bip39", - "uriparse", - "url", + "parking_lot", ] [[package]] -name = "solana-cli-config" -version = "2.1.0" +name = "solana-atomic-u64" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384fda0ddf3099eab0f702b326663f499e84731e8584fd7d0c6d8bab03bead79" +checksum = "a933ff1e50aff72d02173cfcd7511bd8540b027ee720b75f353f594f834216d0" dependencies = [ - "dirs-next", - "lazy_static", - "serde", - "serde_derive", - "serde_yaml", - "solana-clap-utils", - "solana-sdk", - "url", + "parking_lot", ] [[package]] -name = "solana-client" -version = "2.1.0" +name = "solana-big-mod-exp" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9a40b8e9e11604e8c05e8b5fcdb89359235db47d1aae84dcba0fc98e95dd0c" +checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" dependencies = [ - "async-trait", - "bincode", - "dashmap", - "futures", - "futures-util", - "indexmap 2.6.0", - "indicatif", - "log", - "quinn", - "rayon", - "solana-connection-cache", - "solana-measure", - "solana-pubsub-client", - "solana-quic-client", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-rpc-client-nonce-utils", - "solana-sdk", - "solana-streamer", - "solana-thin-client", - "solana-tpu-client", - "solana-udp-client", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-clock" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7848171e53fa528efd41dd4b3ab919f47b851f8bb4a827d63ff95678f08737fc" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-macro", + "num-bigint 0.4.6", + "num-traits", + "solana-define-syscall 2.3.0", ] [[package]] -name = "solana-compute-budget" -version = "2.1.0" +name = "solana-big-mod-exp" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf2f023f471bd1195b7f420e13ffc2422592dd48e71104b4901300b49ac493e" +checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" dependencies = [ - "solana-sdk", + "num-bigint 0.4.6", + "num-traits", + "solana-define-syscall 3.0.0", ] [[package]] -name = "solana-config-program" -version = "2.1.0" +name = "solana-bincode" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a035a01970ebbf40a244b3b79af533329ac8d48d80b0b98e166e23e35aa88171" +checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" dependencies = [ "bincode", - "chrono", "serde", - "serde_derive", - "solana-log-collector", - "solana-program-runtime", - "solana-sdk", - "solana-short-vec", + "solana-instruction 2.2.1", ] [[package]] -name = "solana-connection-cache" -version = "2.1.0" +name = "solana-blake3-hasher" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f45dd2a6d5d55ed951781486231d0d2ee9ff7047fdafaed01ee021e236319d0" +checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" dependencies = [ - "async-trait", - "bincode", - "crossbeam-channel", - "futures-util", - "indexmap 2.6.0", - "log", - "rand 0.8.5", - "rayon", - "solana-measure", - "solana-metrics", - "solana-sdk", - "thiserror", - "tokio", + "blake3", + "solana-define-syscall 2.3.0", + "solana-hash 2.2.1", + "solana-sanitize 2.2.1", ] [[package]] -name = "solana-cpi" -version = "2.1.0" +name = "solana-blake3-hasher" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25c536ad0ce25d84a64f48dedcb773e764827e0ef781eda41fa1fa35f5d64b38" +checksum = "ffa2e3bdac3339c6d0423275e45dafc5ac25f4d43bf344d026a3cc9a85e244a6" dependencies = [ - "solana-account-info", - "solana-define-syscall", - "solana-instruction", - "solana-program-error", - "solana-pubkey", - "solana-stable-layout", + "blake3", + "solana-define-syscall 3.0.0", + "solana-hash 3.0.0", ] [[package]] -name = "solana-curve25519" -version = "2.1.0" +name = "solana-bn254" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f934d38b6f2a940fb1e1d8eaa17a14ffd3773b37be9fb29fa4bcec1bac5e4591" +checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "solana-program", - "thiserror", + "solana-define-syscall 2.3.0", + "thiserror 2.0.14", ] [[package]] -name = "solana-decode-error" -version = "2.1.0" +name = "solana-borsh" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a431f532d030098e81d120877f2dddbd3dd90bea5b259198a6aae4ff6456c3" +checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" dependencies = [ - "num-traits", + "borsh 0.10.3", + "borsh 1.5.7", ] [[package]] -name = "solana-define-syscall" -version = "2.1.0" +name = "solana-borsh" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7062ae1de58e294d3bee5fd2c89efc155b7f7383ddce4cb88345dfafaaabc5bd" +checksum = "dc402b16657abbfa9991cd5cbfac5a11d809f7e7d28d3bb291baeb088b39060e" +dependencies = [ + "borsh 1.5.7", +] [[package]] -name = "solana-derivation-path" -version = "2.1.0" +name = "solana-clap-utils" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12080d9bf8eecd559c6f40b5aaf9e47f7f28f515218087f83f02e493b46d8388" +checksum = "65d599be9bb385d0299d781693992038be2cdfef436fd423526f2786e09a6654" dependencies = [ - "derivation-path", - "qstring", + "chrono", + "clap 2.34.0", + "rpassword", + "solana-clock 2.2.2", + "solana-cluster-type", + "solana-commitment-config", + "solana-derivation-path", + "solana-hash 2.2.1", + "solana-keypair", + "solana-message 2.2.1", + "solana-native-token 2.2.1", + "solana-presigner", + "solana-pubkey 2.2.1", + "solana-remote-wallet", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "thiserror 2.0.14", + "tiny-bip39", "uriparse", + "url", ] [[package]] -name = "solana-epoch-schedule" -version = "2.1.0" +name = "solana-cli-config" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c4cf7d7c266d353169cf4feeada5e4bba3a55f33715535fa1ef49080eac3e0" +checksum = "e4b1c2a6082108ed6665306987253d6fd8cb1f4d1e5c5ea627676f53c63697aa" dependencies = [ + "dirs-next", + "lazy_static", "serde", "serde_derive", - "solana-sdk-macro", + "serde_yaml", + "solana-clap-utils", + "solana-commitment-config", + "url", ] [[package]] -name = "solana-faucet" -version = "2.1.0" +name = "solana-client-traits" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "281c481c0efa41a7ddada5dbffabee9099a6b01e9d748b7135366df589f7415e" +checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" dependencies = [ - "bincode", - "byteorder", - "clap 2.34.0", - "crossbeam-channel", - "log", - "serde", - "serde_derive", - "solana-clap-utils", - "solana-cli-config", - "solana-logger", - "solana-metrics", - "solana-sdk", - "solana-version", - "spl-memo 5.0.0", - "thiserror", - "tokio", + "solana-account", + "solana-commitment-config", + "solana-epoch-info", + "solana-hash 2.2.1", + "solana-instruction 2.2.1", + "solana-keypair", + "solana-message 2.2.1", + "solana-pubkey 2.2.1", + "solana-signature", + "solana-signer", + "solana-system-interface 1.0.0", + "solana-transaction", + "solana-transaction-error 2.2.1", ] [[package]] -name = "solana-feature-set" -version = "2.1.0" +name = "solana-clock" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cebf45992982065a0b01b4e109bf039b2ebf6394b21672382fd951516d4c9b0" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" dependencies = [ - "lazy_static", - "solana-clock", - "solana-epoch-schedule", - "solana-hash", - "solana-pubkey", - "solana-sha256-hasher", + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", ] [[package]] -name = "solana-fee-calculator" -version = "2.1.0" +name = "solana-clock" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2befe056ece2eb5807298c2b569a35ee52f79df859bdd16a1f97869f8224a28" +checksum = "fb62e9381182459a4520b5fe7fb22d423cae736239a6427fc398a88743d0ed59" dependencies = [ - "log", "serde", "serde_derive", + "solana-sdk-ids 3.0.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.0.0", ] [[package]] -name = "solana-hash" -version = "2.1.0" +name = "solana-cluster-type" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1807bc4e9e1d25271514167d5a1e698ce5a330bce547a368242dd63b355b5faa" +checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" dependencies = [ - "borsh 1.5.1", - "bs58", - "bytemuck", - "bytemuck_derive", - "js-sys", "serde", "serde_derive", - "solana-atomic-u64", - "solana-sanitize", - "wasm-bindgen", + "solana-hash 2.2.1", ] [[package]] -name = "solana-inflation" -version = "2.1.0" +name = "solana-commitment-config" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a60b572cdf0ec8fcf5a53e5ba4e3e19814dd96c2b9c156d5828be68d0d2e7103" +checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" dependencies = [ "serde", "serde_derive", ] [[package]] -name = "solana-inline-spl" -version = "2.1.0" +name = "solana-compute-budget" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24c9c6590e4eaf91efa887b2689b2941fe4b324bccd9a95f77853168f3d9a88" +checksum = "03fd2a55373ce9218600d8711177026f351e7bdcfca46552e3bef25c9f75c90c" dependencies = [ - "bytemuck", - "solana-pubkey", + "solana-fee-structure", + "solana-program-entrypoint 2.3.0", ] [[package]] -name = "solana-instruction" -version = "2.1.0" +name = "solana-compute-budget-interface" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfef689e06e5c7cb6206d4dc61ac77733de4f72d754e0d531393206abc27dbe4" +checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" dependencies = [ - "bincode", - "borsh 1.5.1", - "getrandom 0.2.10", - "js-sys", - "num-traits", + "borsh 1.5.7", "serde", "serde_derive", - "solana-define-syscall", - "solana-pubkey", - "wasm-bindgen", + "solana-instruction 2.2.1", + "solana-sdk-ids 2.2.1", ] [[package]] -name = "solana-last-restart-slot" -version = "2.1.0" +name = "solana-config-program" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3186feae497bdfd2e77bfa56caed38b1cb1b0f389506666e3331f0b9ae799cb" +checksum = "08601f0bcaed81e90d0ed2aaeee6b774cc05bfd5e14220ce03974f0687c6b77f" dependencies = [ + "bincode", + "chrono", "serde", "serde_derive", - "solana-sdk-macro", + "solana-account", + "solana-bincode", + "solana-instruction 2.2.1", + "solana-log-collector", + "solana-packet", + "solana-program-runtime", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-stake-interface", + "solana-system-interface 1.0.0", + "solana-transaction-context", ] [[package]] -name = "solana-log-collector" -version = "2.1.0" +name = "solana-cpi" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b529f5736a6c0794a885dac2e091138d3db6d924335906f117a62b58b0d3b5dc" +checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" dependencies = [ - "log", + "solana-account-info 2.3.0", + "solana-define-syscall 2.3.0", + "solana-instruction 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.2.1", + "solana-stable-layout 2.2.1", ] [[package]] -name = "solana-logger" -version = "2.1.0" +name = "solana-cpi" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "367c5431bad14b10fbb62614b48720b746672558dba3244167ff7d251890c355" +checksum = "16238feb63d1cbdf915fb287f29ef7a7ebf81469bd6214f8b72a53866b593f8f" dependencies = [ - "env_logger", - "lazy_static", - "log", + "solana-account-info 3.0.0", + "solana-define-syscall 3.0.0", + "solana-instruction 3.0.0", + "solana-program-error 3.0.0", + "solana-pubkey 3.0.0", + "solana-stable-layout 3.0.0", ] [[package]] -name = "solana-measure" -version = "2.1.0" +name = "solana-curve25519" +version = "2.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b2047a2f588082b71080b060918f107c3330ae1505f759c3b2d74bae9d9c88" +checksum = "b162f50499b391b785d57b2f2c73e3b9754d88fd4894bef444960b00bda8dcca" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "solana-define-syscall 2.3.0", + "subtle", + "thiserror 2.0.14", +] [[package]] -name = "solana-metrics" -version = "2.1.0" +name = "solana-decode-error" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6319c74238e8ed4f7159fd37c693a574ab8316d03b053103f9cc83dce13f1d5c" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" dependencies = [ - "crossbeam-channel", - "gethostname", - "lazy_static", - "log", - "reqwest", - "solana-sdk", - "thiserror", + "num-traits", ] [[package]] -name = "solana-msg" -version = "2.1.0" +name = "solana-define-syscall" +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-derivation-path" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7551f85064bc7299d56dbd7126258b084a2d78d0325b1579324f818b405123" +checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b" dependencies = [ - "solana-define-syscall", + "derivation-path", + "qstring", + "uriparse", ] [[package]] -name = "solana-native-token" -version = "2.1.0" +name = "solana-ed25519-program" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0c4074f5fc67574dabd8f30fe6e51e290a812d88326b19b49c462058e23340" +checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "ed25519-dalek", + "solana-feature-set", + "solana-instruction 2.2.1", + "solana-precompile-error", + "solana-sdk-ids 2.2.1", +] [[package]] -name = "solana-net-utils" -version = "2.1.0" +name = "solana-epoch-info" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbac19474a4c4f91cb264c2fccead8a1a4f65384ce650b24360d9df5650e65bc" +checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" dependencies = [ - "bincode", - "crossbeam-channel", - "log", - "nix", - "rand 0.8.5", "serde", "serde_derive", - "socket2 0.5.7", - "solana-sdk", - "tokio", - "url", ] [[package]] -name = "solana-packet" -version = "2.1.0" +name = "solana-epoch-rewards" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dafc2d84e57dbfe32583fe915962bd2ca3af6be496628a871db3c3d697b38d7" +checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" dependencies = [ - "bincode", - "bitflags 2.6.0", - "cfg_eval", "serde", "serde_derive", - "serde_with", + "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-perf" -version = "2.1.0" +name = "solana-epoch-rewards" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8299f1ba518f9888da8cafa861addc6ffdd639c689e3ce219ae08212c0dcd0e" +checksum = "b319a4ed70390af911090c020571f0ff1f4ec432522d05ab89f5c08080381995" dependencies = [ - "ahash", - "bincode", - "bv", - "caps", - "curve25519-dalek 4.1.3", - "dlopen2", - "fnv", - "lazy_static", - "libc", - "log", - "nix", - "rand 0.8.5", - "rayon", "serde", - "solana-metrics", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-short-vec", - "solana-vote-program", + "serde_derive", + "solana-hash 3.0.0", + "solana-sdk-ids 3.0.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.0.0", ] [[package]] -name = "solana-precompile-error" -version = "2.1.0" +name = "solana-epoch-rewards-hasher" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a30ab58b9e37cde4e5577282670f30df71b97b6b06dbdb420e9b84e57b831227" +checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" dependencies = [ - "num-traits", - "solana-decode-error", + "siphasher", + "solana-hash 2.2.1", + "solana-pubkey 2.2.1", ] [[package]] -name = "solana-program" -version = "2.1.0" +name = "solana-epoch-schedule" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9040decf2f295d35da22557eeab3768ab8dfca8aed9afe668663c8fa0e97d60e" +checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" dependencies = [ - "base64 0.22.1", - "bincode", - "bitflags 2.6.0", - "blake3", - "borsh 0.10.3", - "borsh 1.5.1", - "bs58", - "bv", + "serde", + "serde_derive", + "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.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.0.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.0.0", +] + +[[package]] +name = "solana-epoch-stake" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc6693d0ea833b880514b9b88d95afb80b42762dca98b0712465d1fcbbcb89e" +dependencies = [ + "solana-define-syscall 3.0.0", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-example-mocks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" +dependencies = [ + "serde", + "serde_derive", + "solana-address-lookup-table-interface 2.2.2", + "solana-clock 2.2.2", + "solana-hash 2.2.1", + "solana-instruction 2.2.1", + "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.14", +] + +[[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.0.0", + "solana-clock 3.0.0", + "solana-hash 3.0.0", + "solana-instruction 3.0.0", + "solana-keccak-hasher 3.0.0", + "solana-message 3.0.0", + "solana-nonce 3.0.0", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.0.0", + "solana-system-interface 2.0.0", + "thiserror 2.0.14", +] + +[[package]] +name = "solana-faucet" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b234a64a7aec617ee6af788242a1374d7d1797058dcdfd60c744d99313bbe95" +dependencies = [ + "bincode", + "clap 2.34.0", + "crossbeam-channel", + "log", + "serde", + "serde_derive", + "solana-clap-utils", + "solana-cli-config", + "solana-hash 2.2.1", + "solana-instruction 2.2.1", + "solana-keypair", + "solana-logger", + "solana-message 2.2.1", + "solana-metrics", + "solana-native-token 2.2.1", + "solana-packet", + "solana-pubkey 2.2.1", + "solana-signer", + "solana-system-interface 1.0.0", + "solana-system-transaction", + "solana-transaction", + "solana-version", + "spl-memo", + "thiserror 2.0.14", + "tokio", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-account-info 2.3.0", + "solana-instruction 2.2.1", + "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]] +name = "solana-feature-set" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" +dependencies = [ + "ahash", + "lazy_static", + "solana-epoch-schedule 2.2.1", + "solana-hash 2.2.1", + "solana-pubkey 2.2.1", + "solana-sha256-hasher 2.3.0", +] + +[[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-calculator" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a73cc03ca4bed871ca174558108835f8323e85917bb38b9c81c7af2ab853efe" +dependencies = [ + "log", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-fee-structure" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" +dependencies = [ + "serde", + "serde_derive", + "solana-message 2.2.1", + "solana-native-token 2.2.1", +] + +[[package]] +name = "solana-genesis-config" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" +dependencies = [ + "bincode", + "chrono", + "memmap2", + "serde", + "serde_derive", + "solana-account", + "solana-clock 2.2.2", + "solana-cluster-type", + "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 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-time-utils", +] + +[[package]] +name = "solana-hard-forks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf7bcb14392900fe02e4e34e90234fbf0c673d4e327888410ba99fa2ba0f4e99" +dependencies = [ + "borsh 1.5.7", + "bs58", + "bytemuck", + "bytemuck_derive", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64 2.2.1", + "solana-sanitize 2.2.1", + "wasm-bindgen", +] + +[[package]] +name = "solana-hash" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a063723b9e84c14d8c0d2cdf0268207dc7adecf546e31251f9e07c7b00b566c" +dependencies = [ + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "five8", + "serde", + "serde_derive", + "solana-atomic-u64 3.0.0", + "solana-sanitize 3.0.0", +] + +[[package]] +name = "solana-inflation" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-inline-spl" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14191c3b9de9f62e9ffb81ae53b3aecade34aebcb22d695e93fea70b1cec8cbe" +dependencies = [ + "bytemuck", + "solana-pubkey 2.2.1", +] + +[[package]] +name = "solana-instruction" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce496a475e5062ba5de97215ab39d9c358f9c9df4bb7f3a45a1f1a8bd9065ed" +dependencies = [ + "bincode", + "borsh 1.5.7", + "getrandom 0.2.10", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-define-syscall 2.3.0", + "solana-pubkey 2.2.1", + "wasm-bindgen", +] + +[[package]] +name = "solana-instruction" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df4e8fcba01d7efa647ed20a081c234475df5e11a93acb4393cc2c9a7b99bab" +dependencies = [ + "bincode", + "borsh 1.5.7", + "serde", + "serde_derive", + "solana-define-syscall 3.0.0", + "solana-instruction-error", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-instruction-error" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f0d483b8ae387178d9210e0575b666b05cdd4bd0f2f188128249f6e454d39d" +dependencies = [ + "num-traits", + "solana-program-error 3.0.0", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags 2.9.1", + "solana-account-info 2.3.0", + "solana-instruction 2.2.1", + "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.9.1", + "solana-account-info 3.0.0", + "solana-instruction 3.0.0", + "solana-instruction-error", + "solana-program-error 3.0.0", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.0", + "solana-sdk-ids 3.0.0", + "solana-serialize-utils 3.0.0", + "solana-sysvar-id 3.0.0", +] + +[[package]] +name = "solana-invoke" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f5693c6de226b3626658377168b0184e94e8292ff16e3d31d4766e65627565" +dependencies = [ + "solana-account-info 2.3.0", + "solana-define-syscall 2.3.0", + "solana-instruction 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-stable-layout 2.2.1", +] + +[[package]] +name = "solana-keccak-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" +dependencies = [ + "sha3", + "solana-define-syscall 2.3.0", + "solana-hash 2.2.1", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-keccak-hasher" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57eebd3012946913c8c1b8b43cdf8a6249edb09c0b6be3604ae910332a3acd97" +dependencies = [ + "sha3", + "solana-define-syscall 3.0.0", + "solana-hash 3.0.0", +] + +[[package]] +name = "solana-keypair" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dbb7042c2e0c561afa07242b2099d55c57bd1b1da3b6476932197d84e15e3e4" +dependencies = [ + "bs58", + "ed25519-dalek", + "ed25519-dalek-bip32", + "rand 0.7.3", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" +dependencies = [ + "serde", + "serde_derive", + "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.0.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.0.0", +] + +[[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 2.2.1", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4be76cfa9afd84ca2f35ebc09f0da0f0092935ccdac0595d98447f259538c2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.2.1", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.2.1", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-log-collector" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45eaf7f6fabf1e2b8fb3eb39e177ea8a1dcf63b1f4f97c5e27829d94c47a018" +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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb393cb30a8f55c91e981eafd392091bb960def07e76531aa37b47cb8a0b2c3c" + +[[package]] +name = "solana-message" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "268486ba8a294ed22a4d7c1ec05f540c3dbe71cfa7c6c54b6d4d13668d895678" +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-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.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c33e9fa7871147ac3235a7320386afa2dc64bbb21ca3cf9d79a6f6827313176" +dependencies = [ + "lazy_static", + "serde", + "serde_derive", + "solana-hash 3.0.0", + "solana-instruction 3.0.0", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.0", + "solana-sdk-ids 3.0.0", + "solana-short-vec 3.0.0", + "solana-transaction-error 3.0.0", +] + +[[package]] +name = "solana-metrics" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc52d31466c3ee771115bc8f8280ad669190c861acccc2a16fd7a8b268c6c24f" +dependencies = [ + "crossbeam-channel", + "gethostname", + "lazy_static", + "log", + "reqwest", + "solana-clock 2.2.2", + "solana-cluster-type", + "solana-sha256-hasher 2.3.0", + "solana-time-utils", + "thiserror 2.0.14", +] + +[[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.3.0", +] + +[[package]] +name = "solana-msg" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "264275c556ea7e22b9d3f87d56305546a38d4eee8ec884f3b126236cb7dcbbb4" +dependencies = [ + "solana-define-syscall 3.0.0", +] + +[[package]] +name = "solana-native-token" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e9de00960197412e4be3902a6cd35e60817c511137aca6c34c66cd5d4017ec" + +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + +[[package]] +name = "solana-nonce" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" +dependencies = [ + "serde", + "serde_derive", + "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.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abbdc6c8caf1c08db9f36a50967539d0f72b9f1d4aea04fec5430f532e5afadc" +dependencies = [ + "solana-fee-calculator 3.0.0", + "solana-hash 3.0.0", + "solana-pubkey 3.0.0", + "solana-sha256-hasher 3.0.0", +] + +[[package]] +name = "solana-nonce-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +dependencies = [ + "solana-account", + "solana-hash 2.2.1", + "solana-nonce 2.2.1", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-offchain-message" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +dependencies = [ + "num_enum", + "solana-hash 2.2.1", + "solana-packet", + "solana-pubkey 2.2.1", + "solana-sanitize 2.2.1", + "solana-sha256-hasher 2.3.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.9.1", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", +] + +[[package]] +name = "solana-poh-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-precompile-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +dependencies = [ + "num-traits", + "solana-decode-error", +] + +[[package]] +name = "solana-precompiles" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" +dependencies = [ + "lazy_static", + "solana-ed25519-program", + "solana-feature-set", + "solana-message 2.2.1", + "solana-precompile-error", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "solana-presigner" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +dependencies = [ + "solana-pubkey 2.2.1", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-program" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "586469467e93ceb79048f8d8e3a619bf61d05396ee7de95cb40280301a589d05" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.3", + "borsh 1.5.7", + "bs58", "bytemuck", - "bytemuck_derive", "console_error_panic_hook", "console_log", - "curve25519-dalek 4.1.3", - "five8_const", "getrandom 0.2.10", - "js-sys", "lazy_static", "log", "memoffset", "num-bigint 0.4.6", "num-derive 0.4.0", "num-traits", - "parking_lot", "rand 0.8.5", "serde", "serde_bytes", "serde_derive", - "sha2 0.10.8", - "sha3", - "solana-account-info", - "solana-atomic-u64", + "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-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-schedule", - "solana-fee-calculator", - "solana-hash", - "solana-instruction", - "solana-last-restart-slot", - "solana-msg", - "solana-native-token", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sanitize", - "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-transaction-error", - "thiserror", + "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 2.2.1", + "solana-hash 2.2.1", + "solana-instruction 2.2.1", + "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-v4-interface", + "solana-message 2.2.1", + "solana-msg 2.2.1", + "solana-native-token 2.2.1", + "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", + "solana-system-interface 1.0.0", + "solana-sysvar 2.2.2", + "solana-sysvar-id 2.2.1", + "solana-vote-interface", + "thiserror 2.0.14", "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.0.0", + "solana-big-mod-exp 3.0.0", + "solana-blake3-hasher 3.0.0", + "solana-borsh 3.0.0", + "solana-clock 3.0.0", + "solana-cpi 3.0.0", + "solana-define-syscall 3.0.0", + "solana-epoch-rewards 3.0.0", + "solana-epoch-schedule 3.0.0", + "solana-epoch-stake", + "solana-example-mocks 3.0.0", + "solana-fee-calculator 3.0.0", + "solana-hash 3.0.0", + "solana-instruction 3.0.0", + "solana-instruction-error", + "solana-instructions-sysvar 3.0.0", + "solana-keccak-hasher 3.0.0", + "solana-last-restart-slot 3.0.0", + "solana-msg 3.0.0", + "solana-native-token 3.0.0", + "solana-program-entrypoint 3.1.0", + "solana-program-error 3.0.0", + "solana-program-memory 3.0.0", + "solana-program-option 3.0.0", + "solana-program-pack 3.0.0", + "solana-pubkey 3.0.0", + "solana-rent 3.0.0", + "solana-sdk-ids 3.0.0", + "solana-secp256k1-recover 3.0.0", + "solana-serde-varint 3.0.0", + "solana-serialize-utils 3.0.0", + "solana-sha256-hasher 3.0.0", + "solana-short-vec 3.0.0", + "solana-slot-hashes 3.0.0", + "solana-slot-history 3.0.0", + "solana-stable-layout 3.0.0", + "solana-sysvar 3.0.0", + "solana-sysvar-id 3.0.0", +] + [[package]] name = "solana-program-entrypoint" -version = "2.1.0" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "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.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eb90f3fa3e979b912451a404508f1f90bb6e5c1d7767625f622b20016fb9fde" +checksum = "6557cf5b5e91745d1667447438a1baa7823c6086e4ece67f8e6ebfa7a8f72660" dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", + "solana-account-info 3.0.0", + "solana-define-syscall 3.0.0", + "solana-msg 3.0.0", + "solana-program-error 3.0.0", + "solana-pubkey 3.0.0", ] [[package]] name = "solana-program-error" -version = "2.1.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd089caeef26dd07bd12b7b67d45e92faddc2fc67a960f316df7ae4776a2f3d5" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.7", "num-traits", "serde", "serde_derive", "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-pubkey", + "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" +dependencies = [ + "borsh 1.5.7", + "serde", + "serde_derive", ] [[package]] name = "solana-program-memory" -version = "2.1.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed4bc044dc2b49c323aeff04aec03c908a052e278c2edf2f7616f32fc0f1bcd9" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" dependencies = [ - "num-traits", - "solana-define-syscall", + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-program-memory" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10e5660c60749c7bfb30b447542529758e4dbcecd31b1e8af1fdc92e2bdde90a" +dependencies = [ + "solana-define-syscall 3.0.0", ] [[package]] name = "solana-program-option" -version = "2.1.0" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" + +[[package]] +name = "solana-program-option" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3babbdffd81994c043fc9a61458ce87496218825d6e9a303de643c0a53089b9a" +checksum = "8e7b4ddb464f274deb4a497712664c3b612e3f5f82471d4e47710fc4ab1c3095" [[package]] name = "solana-program-pack" -version = "2.1.0" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" +dependencies = [ + "solana-program-error 2.2.2", +] + +[[package]] +name = "solana-program-pack" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fb28439d23e1f505e59c7a14ed5012365ab7aa0f20dc7bda048e02ff231cf6" +checksum = "c169359de21f6034a63ebf96d6b380980307df17a8d371344ff04a883ec4e9d0" dependencies = [ - "solana-program-error", + "solana-program-error 3.0.0", ] [[package]] name = "solana-program-runtime" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1de51df173401d50c0f4cf750f5070d7a4c82125a03c1aec9622dc041b0b54" +checksum = "e05ec6893c130c9937b0fe042ee5ea91bda76320809ffc5953ddaa54d4bec279" dependencies = [ + "agave-feature-set", + "agave-precompiles", "base64 0.22.1", "bincode", "enum-iterator", "itertools 0.12.1", - "libc", "log", - "num-derive 0.4.0", - "num-traits", "percentage", "rand 0.8.5", "serde", + "solana-account", + "solana-clock 2.2.2", "solana-compute-budget", - "solana-feature-set", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-hash 2.2.1", + "solana-instruction 2.2.1", + "solana-last-restart-slot 2.2.1", "solana-log-collector", "solana-measure", - "solana-metrics", - "solana-sdk", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sbpf", + "solana-sdk-ids 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-stable-layout 2.2.1", + "solana-sysvar 2.2.2", + "solana-sysvar-id 2.2.1", "solana-timings", + "solana-transaction-context", "solana-type-overrides", - "solana-vote", - "solana_rbpf", - "thiserror", + "thiserror 2.0.14", ] [[package]] name = "solana-pubkey" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea3215775fcedf200d47590c7e2ce9a3a46bc2b7d3f77d0eae9c6edf0a39aec" +checksum = "40db1ff5a0f8aea2c158d78ab5f2cf897848964251d1df42fef78efd3c85b863" dependencies = [ "borsh 0.10.3", - "borsh 1.5.1", + "borsh 1.5.7", "bs58", "bytemuck", "bytemuck_derive", @@ -4364,19 +5034,28 @@ dependencies = [ "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", +] + [[package]] name = "solana-pubsub-client" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d28adf5ff89c19ef3cb24d0f484afa05852697881c2e4ef12aec190d61f76d8" +checksum = "383c6655590f07c920cecb03d700711294e26e60f315ed288ebc17a726b16bae" dependencies = [ "crossbeam-channel", "futures-util", @@ -4386,10 +5065,12 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "solana-account-decoder", + "solana-account-decoder-client-types", + "solana-clock 2.2.2", + "solana-pubkey 2.2.1", "solana-rpc-client-api", - "solana-sdk", - "thiserror", + "solana-signature", + "thiserror 2.0.14", "tokio", "tokio-stream", "tokio-tungstenite", @@ -4398,77 +5079,118 @@ dependencies = [ ] [[package]] -name = "solana-quic-client" -version = "2.1.0" +name = "solana-quic-definitions" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259c6d420c0b7620557700f13fbbdb00afbb1b82274485c27ba30dd660ea921b" +checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" dependencies = [ - "async-lock", - "async-trait", - "futures", - "itertools 0.12.1", - "lazy_static", + "solana-keypair", +] + +[[package]] +name = "solana-remote-wallet" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bece1535da0bc9c7febc7cffbfe6dd6a24aa2c2b4e6b05e30329661e9252d64" +dependencies = [ + "console", + "dialoguer", + "hidapi", "log", - "quinn", - "quinn-proto", - "rustls 0.23.16", - "solana-connection-cache", - "solana-measure", - "solana-metrics", - "solana-net-utils", - "solana-rpc-client-api", - "solana-sdk", - "solana-streamer", - "thiserror", - "tokio", + "num-derive 0.4.0", + "num-traits", + "parking_lot", + "qstring", + "semver", + "solana-derivation-path", + "solana-offchain-message", + "solana-pubkey 2.2.1", + "solana-signature", + "solana-signer", + "thiserror 2.0.14", + "uriparse", +] + +[[package]] +name = "solana-rent" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-rent" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b702d8c43711e3c8a9284a4f1bbc6a3de2553deb25b0c8142f9a44ef0ce5ddc1" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.0.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.0.0", +] + +[[package]] +name = "solana-rent-collector" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c1e19f5d5108b0d824244425e43bc78bbb9476e2199e979b0230c9f632d3bf4" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock 2.2.2", + "solana-epoch-schedule 2.2.1", + "solana-genesis-config", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", ] [[package]] -name = "solana-rayon-threadlimit" -version = "2.1.0" +name = "solana-rent-debits" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c69806ad1a7b0986f750134e13e55d83919631d81a2328a588615740e14ed0a" +checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" dependencies = [ - "lazy_static", - "num_cpus", + "solana-pubkey 2.2.1", + "solana-reward-info", ] [[package]] -name = "solana-remote-wallet" -version = "2.1.0" +name = "solana-reserved-account-keys" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f36cf8ad0090276b5e9c73512df889b84092761ed733a26781b164c9e95f544" +checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" dependencies = [ - "console", - "dialoguer", - "log", - "num-derive 0.4.0", - "num-traits", - "parking_lot", - "qstring", - "semver", - "solana-derivation-path", - "solana-sdk", - "thiserror", - "uriparse", + "lazy_static", + "solana-feature-set", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", ] [[package]] -name = "solana-rent" -version = "2.1.0" +name = "solana-reward-info" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab3f4a270196c38d62c3bb3c7a2f07732af2c772b50da49c9b1e2c9d2ace286" +checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" dependencies = [ "serde", "serde_derive", - "solana-sdk-macro", ] [[package]] name = "solana-rpc-client" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b05822aceeb484074a72d82a1b289da9fc3383f9ba3f55ce4bfd003bf9d62e6" +checksum = "01ba3b0d458380c045675b1f55b472501c0ddf7f20fb87a71e73a0bda281f584" dependencies = [ "async-trait", "base64 0.22.1", @@ -4482,20 +5204,31 @@ dependencies = [ "serde", "serde_derive", "serde_json", + "solana-account", "solana-account-decoder-client-types", + "solana-clock 2.2.2", + "solana-commitment-config", + "solana-epoch-info", + "solana-epoch-schedule 2.2.1", + "solana-feature-gate-interface", + "solana-hash 2.2.1", + "solana-instruction 2.2.1", + "solana-message 2.2.1", + "solana-pubkey 2.2.1", "solana-rpc-client-api", - "solana-sdk", + "solana-signature", + "solana-transaction", + "solana-transaction-error 2.2.1", "solana-transaction-status-client-types", "solana-version", - "solana-vote-program", "tokio", ] [[package]] name = "solana-rpc-client-api" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9c6e64f01cfafef9b2d43d6adb02979bb22f579ec8ee88b77796259acce92e" +checksum = "9084cfe53a41e3dc322cda81a98c7f162c96113cc82ff508d5f580253e5fffde" dependencies = [ "anyhow", "base64 0.22.1", @@ -4507,331 +5240,684 @@ dependencies = [ "serde", "serde_derive", "serde_json", + "solana-account", "solana-account-decoder-client-types", + "solana-clock 2.2.2", + "solana-commitment-config", + "solana-fee-calculator 2.2.1", + "solana-inflation", "solana-inline-spl", - "solana-sdk", + "solana-pubkey 2.2.1", + "solana-signer", + "solana-transaction-error 2.2.1", "solana-transaction-status-client-types", "solana-version", - "thiserror", + "thiserror 2.0.14", ] [[package]] -name = "solana-rpc-client-nonce-utils" -version = "2.1.0" +name = "solana-sanitize" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f0ab2d1ca3769c5058c689b438d35eb1cb7d2a32fc4b2b7c16fe72fa187927c" -dependencies = [ - "solana-rpc-client", - "solana-sdk", - "thiserror", -] +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" [[package]] name = "solana-sanitize" -version = "2.1.0" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927e833259588ac8f860861db0f6e2668c3cc46d917798ade116858960acfe8a" + +[[package]] +name = "solana-sbpf" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "203b90994371db8cade8e885f74ec9f68ee02a32b25d514594158b2551a4e5ed" +checksum = "8e6aed9fa0b4791538896be288fb5ccb2ab9f558ca0fe1ff28dfd3046fbdb5c5" +dependencies = [ + "byteorder", + "combine", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "thiserror 1.0.66", + "winapi", +] [[package]] name = "solana-sdk" -version = "2.1.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524604d94185c189616296e5b7da1014cc96d1e446bd2b26f247f00708b9225a" +checksum = "e8af90d2ce445440e0548fa4a5f96fe8b265c22041a68c942012ffadd029667d" dependencies = [ "bincode", - "bitflags 2.6.0", - "borsh 1.5.1", "bs58", - "bytemuck", - "bytemuck_derive", - "byteorder", - "chrono", - "digest 0.10.7", - "ed25519-dalek", - "ed25519-dalek-bip32", "getrandom 0.1.16", - "hmac 0.12.1", - "itertools 0.12.1", "js-sys", - "lazy_static", - "libsecp256k1", - "log", - "memmap2", - "num-derive 0.4.0", - "num-traits", - "num_enum", - "pbkdf2 0.11.0", - "rand 0.7.3", - "rand 0.8.5", "serde", - "serde_bytes", - "serde_derive", "serde_json", - "serde_with", - "sha2 0.10.8", - "sha3", - "siphasher", "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", - "solana-native-token", + "solana-instruction 2.2.1", + "solana-keypair", + "solana-message 2.2.1", + "solana-native-token 2.2.1", + "solana-nonce-account", + "solana-offchain-message", "solana-packet", + "solana-poh-config", "solana-precompile-error", - "solana-program", - "solana-program-memory", - "solana-pubkey", - "solana-sanitize", - "solana-sdk-macro", - "solana-secp256k1-recover", - "solana-serde-varint", - "solana-short-vec", + "solana-precompiles", + "solana-presigner", + "solana-program 2.2.1", + "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 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-secp256k1-program", + "solana-secp256k1-recover 2.2.1", + "solana-secp256r1-program", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-serde", + "solana-serde-varint 2.2.2", + "solana-short-vec 2.2.1", + "solana-shred-version", "solana-signature", - "solana-transaction-error", - "thiserror", + "solana-signer", + "solana-system-transaction", + "solana-time-utils", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error 2.2.1", + "solana-validator-exit", + "thiserror 2.0.14", "wasm-bindgen", ] +[[package]] +name = "solana-sdk-ids" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +dependencies = [ + "solana-pubkey 2.2.1", +] + +[[package]] +name = "solana-sdk-ids" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1b6d6aaf60669c592838d382266b173881c65fb1cdec83b37cb8ce7cb89f9ad" +dependencies = [ + "solana-pubkey 3.0.0", +] + [[package]] name = "solana-sdk-macro" -version = "2.1.0" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "solana-sdk-macro" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd2265b93dce9d3dcf9f395abf1a85b5e06e4da4aa60ca147620003ac3abc67" +checksum = "d6430000e97083460b71d9fbadc52a2ab2f88f53b3a4c5e58c5ae3640a0e8c00" dependencies = [ "bs58", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", +] + +[[package]] +name = "solana-secp256k1-program" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0a1caa972414cc78122c32bdae65ac5fe89df7db598585a5cde19d16a20280a" +dependencies = [ + "bincode", + "digest 0.10.7", + "libsecp256k1", + "serde", + "serde_derive", + "sha3", + "solana-feature-set", + "solana-instruction 2.2.1", + "solana-precompile-error", + "solana-sdk-ids 2.2.1", ] [[package]] name = "solana-secp256k1-recover" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2eef5a00a75648273c3fb6e3d85b0c8c02fcc1e36c4271664dcc39b6b128d41" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.7", "libsecp256k1", - "solana-define-syscall", - "thiserror", + "solana-define-syscall 2.3.0", + "thiserror 2.0.14", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "394a4470477d66296af5217970a905b1c5569032a7732c367fb69e5666c8607e" +dependencies = [ + "k256", + "solana-define-syscall 3.0.0", + "thiserror 2.0.14", +] + +[[package]] +name = "solana-secp256r1-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf903cbdc36a161533812f90acfccdb434ed48982bd5dd71f3217930572c4a80" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction 2.2.1", + "solana-precompile-error", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" + +[[package]] +name = "solana-seed-derivable" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" +dependencies = [ + "solana-derivation-path", +] + +[[package]] +name = "solana-seed-phrase" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" +dependencies = [ + "hmac 0.12.1", + "pbkdf2 0.11.0", + "sha2 0.10.8", +] + +[[package]] +name = "solana-serde" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e5174c57d5ff3c1995f274d17156964664566e2cde18a07bba1586d35a70d3b" +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 2.2.1", + "solana-pubkey 2.2.1", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-serialize-utils" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7665da4f6e07b58c93ef6aaf9fb6a923fd11b0922ffc53ba74c3cadfa490f26" +dependencies = [ + "solana-instruction-error", + "solana-pubkey 3.0.0", + "solana-sanitize 3.0.0", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.8", + "solana-define-syscall 2.3.0", + "solana-hash 2.2.1", +] + +[[package]] +name = "solana-sha256-hasher" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9b912ba6f71cb202c0c3773ec77bf898fa9fe0c78691a2d6859b3b5b8954719" +dependencies = [ + "sha2 0.10.8", + "solana-define-syscall 3.0.0", + "solana-hash 3.0.0", +] + +[[package]] +name = "solana-short-vec" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-short-vec" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b69d029da5428fc1c57f7d49101b2077c61f049d4112cd5fb8456567cc7d2638" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-shred-version" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +dependencies = [ + "solana-hard-forks", + "solana-hash 2.2.1", + "solana-sha256-hasher 2.3.0", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "ed25519-dalek", + "five8", + "rand 0.8.5", + "serde", + "serde-big-array", + "serde_derive", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-signer" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +dependencies = [ + "solana-pubkey 2.2.1", + "solana-signature", + "solana-transaction-error 2.2.1", +] + +[[package]] +name = "solana-slot-hashes" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", ] [[package]] -name = "solana-security-txt" -version = "1.1.1" +name = "solana-slot-hashes" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" +checksum = "80a293f952293281443c04f4d96afd9d547721923d596e92b4377ed2360f1746" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 3.0.0", + "solana-sdk-ids 3.0.0", + "solana-sysvar-id 3.0.0", +] [[package]] -name = "solana-serde-varint" -version = "2.1.0" +name = "solana-slot-history" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aeb51d3c20e2a61db0ef72617f3b8c9207a342a867af454a95f17add9f6c262" +checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" dependencies = [ + "bv", "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", ] [[package]] -name = "solana-serialize-utils" -version = "2.1.0" +name = "solana-slot-history" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfb0b57c6a431fb15ff33053caadb6c36aed4e1ce74bea9adfc459a710b3626" +checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" dependencies = [ - "solana-instruction", - "solana-pubkey", - "solana-sanitize", + "bv", + "serde", + "serde_derive", + "solana-sdk-ids 3.0.0", + "solana-sysvar-id 3.0.0", ] [[package]] -name = "solana-sha256-hasher" -version = "2.1.0" +name = "solana-stable-layout" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd115f3a1136314b0183235080d29023530c3a0a5df60505fdb7ea620eff9fd6" +checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" dependencies = [ - "sha2 0.10.8", - "solana-define-syscall", - "solana-hash", + "solana-instruction 2.2.1", + "solana-pubkey 2.2.1", ] [[package]] -name = "solana-short-vec" -version = "2.1.0" +name = "solana-stable-layout" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08e55330b694db1139dcdf2a1ea7781abe8bd994dec2ab29e36abfd06e4e9274" +checksum = "1da74507795b6e8fb60b7c7306c0c36e2c315805d16eaaf479452661234685ac" dependencies = [ - "serde", + "solana-instruction 3.0.0", + "solana-pubkey 3.0.0", ] [[package]] -name = "solana-signature" -version = "2.1.0" +name = "solana-stake-interface" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ad9784d110f195a3a4fe423479d18f05b01a1c380a1430644a3b3038fdbe2f0" +checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" dependencies = [ - "bs58", - "ed25519-dalek", - "generic-array", - "rand 0.8.5", + "borsh 0.10.3", + "borsh 1.5.7", + "num-traits", "serde", "serde_derive", - "solana-sanitize", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "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 2.2.1", ] [[package]] -name = "solana-slot-hashes" -version = "2.1.0" +name = "solana-system-interface" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d216c0ebf00e95acaf2b1e227e6cc900a5ce50fb81fa0743272851e88a788d" +checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" dependencies = [ + "js-sys", + "num-traits", "serde", "serde_derive", - "solana-hash", + "solana-decode-error", + "solana-instruction 2.2.1", + "solana-pubkey 2.2.1", + "wasm-bindgen", ] [[package]] -name = "solana-slot-history" -version = "2.1.0" +name = "solana-system-interface" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88cbcdf767891c6a40116a5ef8f7241000f074ece4ba80c8f00b4f62705fc8a4" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" dependencies = [ - "bv", - "serde", - "serde_derive", + "num-traits", + "solana-msg 3.0.0", + "solana-program-error 3.0.0", + "solana-pubkey 3.0.0", ] [[package]] -name = "solana-stable-layout" -version = "2.1.0" +name = "solana-system-transaction" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a5305ca88fb5deb219cd88f04e24f3a131769417d7fcb11a8da1126a8f98d23" +checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" dependencies = [ - "solana-instruction", - "solana-pubkey", + "solana-hash 2.2.1", + "solana-keypair", + "solana-message 2.2.1", + "solana-pubkey 2.2.1", + "solana-signer", + "solana-system-interface 1.0.0", + "solana-transaction", ] [[package]] -name = "solana-streamer" -version = "2.1.0" +name = "solana-sysvar" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff771524872781eca074e0ba221d72b07fa0800cc1a7ffa400a9eb3e125fb922" +checksum = "d50c92bc019c590f5e42c61939676e18d14809ed00b2a59695dd5c67ae72c097" dependencies = [ - "async-channel", - "bytes", - "crossbeam-channel", - "dashmap", - "futures", - "futures-util", - "governor", - "histogram", - "indexmap 2.6.0", - "itertools 0.12.1", - "libc", - "log", - "nix", - "pem", - "percentage", - "quinn", - "quinn-proto", - "rand 0.8.5", - "rustls 0.23.16", - "smallvec", - "socket2 0.5.7", - "solana-measure", - "solana-metrics", - "solana-perf", - "solana-sdk", - "solana-transaction-metrics-tracker", - "thiserror", - "tokio", - "tokio-util", - "x509-parser", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "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.2.1", + "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", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-sysvar" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63205e68d680bcc315337dec311b616ab32fea0a612db3b883ce4de02e0953f9" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info 3.0.0", + "solana-clock 3.0.0", + "solana-define-syscall 3.0.0", + "solana-epoch-rewards 3.0.0", + "solana-epoch-schedule 3.0.0", + "solana-fee-calculator 3.0.0", + "solana-hash 3.0.0", + "solana-instruction 3.0.0", + "solana-last-restart-slot 3.0.0", + "solana-program-entrypoint 3.1.0", + "solana-program-error 3.0.0", + "solana-program-memory 3.0.0", + "solana-pubkey 3.0.0", + "solana-rent 3.0.0", + "solana-sdk-ids 3.0.0", + "solana-sdk-macro 3.0.0", + "solana-slot-hashes 3.0.0", + "solana-slot-history 3.0.0", + "solana-sysvar-id 3.0.0", +] + +[[package]] +name = "solana-sysvar-id" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +dependencies = [ + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", ] [[package]] -name = "solana-thin-client" -version = "2.1.0" +name = "solana-sysvar-id" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10314ae3e0889cf38140902862d2c2ea481895c82c19f51dc4457b7dfa3aa6d0" +checksum = "5051bc1a16d5d96a96bc33b5b2ec707495c48fe978097bdaba68d3c47987eb32" dependencies = [ - "bincode", - "log", - "rayon", - "solana-connection-cache", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-sdk", + "solana-pubkey 3.0.0", + "solana-sdk-ids 3.0.0", ] +[[package]] +name = "solana-time-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" + [[package]] name = "solana-timings" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a8e2f926d488c1e2a65cbc05544dcb68cfa88deb4d50f89db5bfbda7ff2419" +checksum = "1939a33d02905beaa4d657e9ade9cfcac6f9676a4a6178829a617503d45ab3b8" dependencies = [ "eager", "enum-iterator", - "solana-sdk", + "solana-pubkey 2.2.1", ] [[package]] -name = "solana-tpu-client" -version = "2.1.0" +name = "solana-transaction" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516cbed8800cd36fb3ecc9a65df1e76bf8251929aa32e9b10497e8d6612de605" +checksum = "abec848d081beb15a324c633cd0e0ab33033318063230389895cae503ec9b544" dependencies = [ - "async-trait", "bincode", - "futures-util", - "indexmap 2.6.0", - "indicatif", - "log", - "rayon", - "solana-connection-cache", - "solana-measure", - "solana-pubsub-client", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-sdk", - "thiserror", - "tokio", + "serde", + "serde_derive", + "solana-bincode", + "solana-feature-set", + "solana-hash 2.2.1", + "solana-instruction 2.2.1", + "solana-keypair", + "solana-message 2.2.1", + "solana-precompiles", + "solana-pubkey 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-signature", + "solana-signer", + "solana-system-interface 1.0.0", + "solana-transaction-error 2.2.1", + "wasm-bindgen", +] + +[[package]] +name = "solana-transaction-context" +version = "2.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37a936e58ff94d222e333216a26dbef4ca63ca01332cb0a997c2138a7a59b8dd" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-instruction 2.2.1", + "solana-instructions-sysvar 2.2.2", + "solana-pubkey 2.2.1", + "solana-rent 2.2.1", ] [[package]] name = "solana-transaction-error" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a4bea6d80b34fe6e785d19bf928fe103928d1f6c9935ec23bb6a9d4d7a33d2" +checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" dependencies = [ "serde", "serde_derive", - "solana-instruction", - "solana-sanitize", + "solana-instruction 2.2.1", + "solana-sanitize 2.2.1", ] [[package]] -name = "solana-transaction-metrics-tracker" -version = "2.1.0" +name = "solana-transaction-error" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b668c986a83e6b2eb8f130039045b54abc37ee821853250755386d26c1c668" +checksum = "4222065402340d7e6aec9dc3e54d22992ddcf923d91edcd815443c2bfca3144a" dependencies = [ - "base64 0.22.1", - "bincode", - "lazy_static", - "log", - "rand 0.8.5", - "solana-perf", - "solana-sdk", - "solana-short-vec", + "solana-instruction-error", + "solana-sanitize 3.0.0", ] [[package]] name = "solana-transaction-status-client-types" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fb35fb678fec581e9bdf6350d2c7f5829951a6280038fc06949b1589a9605e1" +checksum = "37272b1efc4dc10be4a2feddf3fa93fabb9ec5ee5d50f1204a0abfa4340768a9" dependencies = [ "base64 0.22.1", "bincode", @@ -4840,89 +5926,75 @@ dependencies = [ "serde_derive", "serde_json", "solana-account-decoder-client-types", - "solana-sdk", + "solana-commitment-config", + "solana-message 2.2.1", + "solana-reward-info", "solana-signature", - "thiserror", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error 2.2.1", + "thiserror 2.0.14", ] [[package]] name = "solana-type-overrides" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2066f25d460d63801f91436c2640aaba4f2dc95aa18fe1e76f7f2c063e981d4e" +checksum = "1ae6235135ae4e449c38b1910f14935679821ee4f3dd32aa3826831694b0e50e" dependencies = [ "lazy_static", "rand 0.8.5", ] [[package]] -name = "solana-udp-client" -version = "2.1.0" +name = "solana-validator-exit" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ec0cbc2d5e3379fafb2c1493f2358f07c09e76e2081c44e3a8c36da12fbd40" -dependencies = [ - "async-trait", - "solana-connection-cache", - "solana-net-utils", - "solana-sdk", - "solana-streamer", - "thiserror", - "tokio", -] +checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" [[package]] name = "solana-version" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7310708b642fb83c04f44934509f4f149ffd69d0cd4cf76d9645c991177d7ea0" +checksum = "a609298041c26bc7903c797e46fef22714a2f07ed4120fbf9432f6a615a49752" dependencies = [ + "agave-feature-set", "semver", "serde", "serde_derive", - "solana-feature-set", - "solana-sanitize", - "solana-serde-varint", -] - -[[package]] -name = "solana-vote" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab46788981765ee706094ca53ad8421aae0286a6b948e892fa7db88992a5373" -dependencies = [ - "itertools 0.12.1", - "log", - "serde", - "serde_derive", - "solana-sdk", - "thiserror", + "solana-sanitize 2.2.1", + "solana-serde-varint 2.2.2", ] [[package]] -name = "solana-vote-program" -version = "2.1.0" +name = "solana-vote-interface" +version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637cadc921725d1804a451ea7d2dff83310a12b75e0b6c83a8bb67ebc02d10f1" +checksum = "ef4f08746f154458f28b98330c0d55cb431e2de64ee4b8efc98dcbe292e0672b" dependencies = [ "bincode", - "log", "num-derive 0.4.0", "num-traits", "serde", "serde_derive", - "solana-feature-set", - "solana-metrics", - "solana-program", - "solana-program-runtime", - "solana-sdk", - "thiserror", + "solana-clock 2.2.2", + "solana-decode-error", + "solana-hash 2.2.1", + "solana-instruction 2.2.1", + "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-zk-sdk" -version = "2.1.0" +version = "2.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c2d96f65cb033f4dc16d3a1b085f8af0ea38012c514a8f65b9b6d75bc9339f" +checksum = "c70bffb28540a216443ba302ab017d18a0e03f5300772929db79608870ee1c6e" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -4942,64 +6014,19 @@ dependencies = [ "serde_json", "sha3", "solana-derivation-path", - "solana-program", - "solana-sdk", + "solana-instruction 2.2.1", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", "subtle", - "thiserror", + "thiserror 2.0.14", "wasm-bindgen", "zeroize", ] -[[package]] -name = "solana-zk-token-sdk" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed293089d8eebd6b5c1b53ee4ad6817889fea254274ddb34cb01ad35a2f817cb" -dependencies = [ - "aes-gcm-siv", - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "byteorder", - "curve25519-dalek 4.1.3", - "itertools 0.12.1", - "lazy_static", - "merlin", - "num-derive 0.4.0", - "num-traits", - "rand 0.8.5", - "serde", - "serde_derive", - "serde_json", - "sha3", - "solana-curve25519", - "solana-derivation-path", - "solana-program", - "solana-sdk", - "subtle", - "thiserror", - "zeroize", -] - -[[package]] -name = "solana_rbpf" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1941b5ef0c3ce8f2ac5dd984d0fb1a97423c4ff2a02eec81e3913f02e2ac2b" -dependencies = [ - "byteorder", - "combine 3.8.1", - "hash32", - "libc", - "log", - "rand 0.8.5", - "rustc-demangle", - "scroll", - "thiserror", - "winapi", -] - [[package]] name = "spin" version = "0.5.2" @@ -5013,28 +6040,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] -name = "spinning_top" -version = "0.3.0" +name = "spki" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ - "lock_api", + "base64ct", + "der", ] [[package]] name = "spl-associated-token-account" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76fee7d65013667032d499adc3c895e286197a35a0d3a4643c80e7fd3e9969e3" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.7", "num-derive 0.4.0", "num-traits", - "solana-program", + "solana-program 2.2.1", "spl-associated-token-account-client", - "spl-token 7.0.0", - "spl-token-2022 6.0.0", - "thiserror", + "spl-token 8.0.0", + "spl-token-2022 8.0.1", + "thiserror 2.0.14", ] [[package]] @@ -5043,19 +6071,8 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb" dependencies = [ - "solana-instruction", - "solana-pubkey", -] - -[[package]] -name = "spl-discriminator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38ea8b6dedb7065887f12d62ed62c1743aa70749e8558f963609793f6fb12bc" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator-derive", + "solana-instruction 2.2.1", + "solana-pubkey 2.2.1", ] [[package]] @@ -5065,8 +6082,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a20542d4c8264856d205c0090512f374dbf7b3124479a3d93ab6184ae3631aa" dependencies = [ "bytemuck", - "solana-program-error", - "solana-sha256-hasher", + "solana-program-error 2.2.2", + "solana-sha256-hasher 2.3.0", "spl-discriminator-derive", ] @@ -5078,7 +6095,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -5090,30 +6107,44 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.86", - "thiserror", + "syn 2.0.104", + "thiserror 1.0.66", ] [[package]] name = "spl-elgamal-registry" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a157622a63a4d12fbd8b347fd75ee442cb913137fa98647824c992fb049a15b" +checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" dependencies = [ "bytemuck", - "solana-program", + "solana-program 2.2.1", "solana-zk-sdk", - "spl-pod 0.5.0", - "spl-token-confidential-transfer-proof-extraction", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.2.1", ] [[package]] -name = "spl-memo" -version = "5.0.0" +name = "spl-elgamal-registry" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0dba2f2bb6419523405d21c301a32c9f9568354d4742552e7972af801f4bdb3" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" dependencies = [ - "solana-program", + "bytemuck", + "solana-account-info 2.3.0", + "solana-cpi 2.2.1", + "solana-instruction 2.2.1", + "solana-msg 2.2.1", + "solana-program-entrypoint 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", + "solana-sysvar 2.2.2", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction 0.3.0", ] [[package]] @@ -5122,72 +6153,60 @@ 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", -] - -[[package]] -name = "spl-pod" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c704c88fc457fa649ba3aabe195c79d885c3f26709efaddc453c8de352c90b87" -dependencies = [ - "borsh 1.5.1", - "bytemuck", - "bytemuck_derive", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.5.0", + "solana-account-info 2.3.0", + "solana-instruction 2.2.1", + "solana-msg 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.2.1", ] [[package]] name = "spl-pod" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a7d5950993e1ff2680bd989df298eeb169367fb2f9deeef1f132de6e4e8016" +checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.7", "bytemuck", "bytemuck_derive", "num-derive 0.4.0", "num-traits", "solana-decode-error", - "solana-msg", - "solana-program-error", - "solana-program-option", - "solana-pubkey", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-program-option 2.2.1", + "solana-pubkey 2.2.1", "solana-zk-sdk", - "thiserror", + "thiserror 2.0.14", ] [[package]] name = "spl-program-error" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7b28bed65356558133751cc32b48a7a5ddfc59ac4e941314630bbed1ac10532" +checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" dependencies = [ "num-derive 0.4.0", "num-traits", - "solana-program", - "spl-program-error-derive", - "thiserror", + "solana-program 2.2.1", + "spl-program-error-derive 0.4.1", + "thiserror 1.0.66", ] [[package]] name = "spl-program-error" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" dependencies = [ "num-derive 0.4.0", "num-traits", - "solana-program", - "spl-program-error-derive", - "thiserror", + "solana-decode-error", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "spl-program-error-derive 0.5.0", + "thiserror 2.0.14", ] [[package]] @@ -5199,21 +6218,19 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] -name = "spl-tlv-account-resolution" -version = "0.7.0" +name = "spl-program-error-derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a75a5f0fcc58126693ed78a17042e9dc53f07e357d6be91789f7d62aff61a4" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.3.0", - "spl-pod 0.3.1", - "spl-program-error 0.5.0", - "spl-type-length-value 0.5.0", + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.104", ] [[package]] @@ -5225,32 +6242,39 @@ dependencies = [ "bytemuck", "num-derive 0.4.0", "num-traits", - "solana-account-info", + "solana-account-info 2.3.0", "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator 0.4.0", - "spl-pod 0.5.0", + "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 0.6.0", "spl-type-length-value 0.7.0", - "thiserror", + "thiserror 1.0.66", ] [[package]] -name = "spl-token" -version = "6.0.0" +name = "spl-tlv-account-resolution" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a0f06ac7f23dc0984931b1fe309468f14ea58e32660439c1cef19456f5d0e3" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" dependencies = [ - "arrayref", "bytemuck", "num-derive 0.4.0", "num-traits", - "num_enum", - "solana-program", - "thiserror", + "solana-account-info 2.3.0", + "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 0.7.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.14", ] [[package]] @@ -5264,67 +6288,127 @@ dependencies = [ "num-derive 0.4.0", "num-traits", "num_enum", - "solana-program", - "thiserror", + "solana-program 2.2.1", + "thiserror 1.0.66", ] [[package]] -name = "spl-token-2022" -version = "4.0.0" +name = "spl-token" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c10f3483e48679619c76598d4e4aebb955bc49b0a5cc63323afbf44135c9bf" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" dependencies = [ "arrayref", "bytemuck", "num-derive 0.4.0", "num-traits", "num_enum", - "solana-program", - "solana-security-txt", - "solana-zk-token-sdk", - "spl-memo 5.0.0", - "spl-pod 0.3.1", - "spl-token 6.0.0", - "spl-token-group-interface 0.3.0", - "spl-token-metadata-interface 0.4.0", - "spl-transfer-hook-interface 0.7.0", - "spl-type-length-value 0.5.0", - "thiserror", + "solana-account-info 2.3.0", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.2.1", + "solana-msg 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-sdk-ids 2.2.1", + "solana-sysvar 2.2.2", + "thiserror 2.0.14", ] [[package]] name = "spl-token-2022" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b27f7405010ef816587c944536b0eafbcc35206ab6ba0f2ca79f1d28e488f4f" +checksum = "9048b26b0df0290f929ff91317c83db28b3ef99af2b3493dd35baa146774924c" dependencies = [ "arrayref", "bytemuck", "num-derive 0.4.0", "num-traits", "num_enum", - "solana-program", + "solana-program 2.2.1", "solana-security-txt", "solana-zk-sdk", - "spl-elgamal-registry", - "spl-memo 6.0.0", - "spl-pod 0.5.0", + "spl-elgamal-registry 0.1.1", + "spl-memo", + "spl-pod", "spl-token 7.0.0", - "spl-token-confidential-transfer-ciphertext-arithmetic", - "spl-token-confidential-transfer-proof-extraction", - "spl-token-confidential-transfer-proof-generation", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.2.1", + "spl-token-confidential-transfer-proof-extraction 0.2.1", + "spl-token-confidential-transfer-proof-generation 0.3.0", "spl-token-group-interface 0.5.0", "spl-token-metadata-interface 0.6.0", "spl-transfer-hook-interface 0.9.0", "spl-type-length-value 0.7.0", - "thiserror", + "thiserror 2.0.14", +] + +[[package]] +name = "spl-token-2022" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.4.0", + "num-traits", + "num_enum", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.2.1", + "solana-msg 2.2.1", + "solana-native-token 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-sdk-ids 2.2.1", + "solana-security-txt", + "solana-system-interface 1.0.0", + "solana-sysvar 2.2.2", + "solana-zk-sdk", + "spl-elgamal-registry 0.2.0", + "spl-memo", + "spl-pod", + "spl-token 8.0.0", + "spl-token-confidential-transfer-ciphertext-arithmetic 0.3.0", + "spl-token-confidential-transfer-proof-extraction 0.3.0", + "spl-token-confidential-transfer-proof-generation 0.4.0", + "spl-token-group-interface 0.6.0", + "spl-token-metadata-interface 0.7.0", + "spl-transfer-hook-interface 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.14", ] [[package]] name = "spl-token-confidential-transfer-ciphertext-arithmetic" -version = "0.2.0" +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-ciphertext-arithmetic" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1f1bf731fc65546330a7929a9735679add70f828dd076a4e69b59d3afb5423c" +checksum = "94ab20faf7b5edaa79acd240e0f21d5a2ef936aa99ed98f698573a2825b299c4" dependencies = [ "base64 0.22.1", "bytemuck", @@ -5334,40 +6418,58 @@ dependencies = [ [[package]] name = "spl-token-confidential-transfer-proof-extraction" -version = "0.2.0" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" +dependencies = [ + "bytemuck", + "solana-curve25519", + "solana-program 2.2.1", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.14", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "383937e637ccbe546f736d5115344351ebd4d2a076907582335261da58236816" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" dependencies = [ "bytemuck", + "solana-account-info 2.3.0", "solana-curve25519", - "solana-program", + "solana-instruction 2.2.1", + "solana-instructions-sysvar 2.2.2", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.2.1", + "solana-sdk-ids 2.2.1", "solana-zk-sdk", - "spl-pod 0.5.0", - "thiserror", + "spl-pod", + "thiserror 2.0.14", ] [[package]] name = "spl-token-confidential-transfer-proof-generation" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8627184782eec1894de8ea26129c61303f1f0adeed65c20e0b10bc584f09356d" +checksum = "0e3597628b0d2fe94e7900fd17cdb4cfbb31ee35c66f82809d27d86e44b2848b" dependencies = [ "curve25519-dalek 4.1.3", "solana-zk-sdk", - "thiserror", + "thiserror 2.0.14", ] [[package]] -name = "spl-token-group-interface" -version = "0.3.0" +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8752b85a5ecc1d9f3a43bce3dd9a6a053673aacf5deb513d1cbb88d3534ffd" +checksum = "ae5b124840d4aed474cef101d946a798b806b46a509ee4df91021e1ab1cef3ef" dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.3.0", - "spl-pod 0.3.1", - "spl-program-error 0.5.0", + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.14", ] [[package]] @@ -5380,27 +6482,32 @@ dependencies = [ "num-derive 0.4.0", "num-traits", "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator 0.4.0", - "spl-pod 0.5.0", - "thiserror", + "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", + "thiserror 1.0.66", ] [[package]] -name = "spl-token-metadata-interface" -version = "0.4.0" +name = "spl-token-group-interface" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c2318ddff97e006ed9b1291ebec0750a78547f870f62a69c56fe3b46a5d8fc" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" dependencies = [ - "borsh 1.5.1", - "solana-program", - "spl-discriminator 0.3.0", - "spl-pod 0.3.1", - "spl-program-error 0.5.0", - "spl-type-length-value 0.5.0", + "bytemuck", + "num-derive 0.4.0", + "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", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.14", ] [[package]] @@ -5409,35 +6516,40 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.7", "num-derive 0.4.0", "num-traits", - "solana-borsh", + "solana-borsh 2.2.1", "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator 0.4.0", - "spl-pod 0.5.0", + "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 0.7.0", - "thiserror", + "thiserror 1.0.66", ] [[package]] -name = "spl-transfer-hook-interface" +name = "spl-token-metadata-interface" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a110f33d941275d9f868b96daaa993f1e73b6806cc8836e43075b4d3ad8338a7" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator 0.3.0", - "spl-pod 0.3.1", - "spl-program-error 0.5.0", - "spl-tlv-account-resolution 0.7.0", - "spl-type-length-value 0.5.0", + "borsh 1.5.7", + "num-derive 0.4.0", + "num-traits", + "solana-borsh 2.2.1", + "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 0.8.0", + "thiserror 2.0.14", ] [[package]] @@ -5450,32 +6562,44 @@ dependencies = [ "bytemuck", "num-derive 0.4.0", "num-traits", - "solana-account-info", - "solana-cpi", + "solana-account-info 2.3.0", + "solana-cpi 2.2.1", "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-error", - "solana-pubkey", - "spl-discriminator 0.4.0", - "spl-pod 0.5.0", + "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 0.6.0", "spl-tlv-account-resolution 0.9.0", "spl-type-length-value 0.7.0", - "thiserror", + "thiserror 1.0.66", ] [[package]] -name = "spl-type-length-value" -version = "0.5.0" +name = "spl-transfer-hook-interface" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdcd73ec187bc409464c60759232e309f83b52a18a9c5610bf281c9c6432918c" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" dependencies = [ + "arrayref", "bytemuck", - "solana-program", - "spl-discriminator 0.3.0", - "spl-pod 0.3.1", - "spl-program-error 0.5.0", + "num-derive 0.4.0", + "num-traits", + "solana-account-info 2.3.0", + "solana-cpi 2.2.1", + "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 0.7.0", + "spl-tlv-account-resolution 0.10.0", + "spl-type-length-value 0.8.0", + "thiserror 2.0.14", ] [[package]] @@ -5487,15 +6611,39 @@ dependencies = [ "bytemuck", "num-derive 0.4.0", "num-traits", - "solana-account-info", + "solana-account-info 2.3.0", "solana-decode-error", - "solana-msg", - "solana-program-error", - "spl-discriminator 0.4.0", - "spl-pod 0.5.0", - "thiserror", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "spl-discriminator", + "spl-pod", + "thiserror 1.0.66", ] +[[package]] +name = "spl-type-length-value" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" +dependencies = [ + "bytemuck", + "num-derive 0.4.0", + "num-traits", + "solana-account-info 2.3.0", + "solana-decode-error", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.14", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "strsim" version = "0.8.0" @@ -5533,27 +6681,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.86" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89275301d38033efb81a6e60e3497e734dfcc62571f2854bf4b16690398824c" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.86", -] - [[package]] name = "sync_wrapper" version = "0.1.2" @@ -5562,14 +6698,13 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "synstructure" -version = "0.12.6" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", - "unicode-xid", + "syn 2.0.104", ] [[package]] @@ -5641,7 +6776,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width", + "unicode-width 0.1.11", ] [[package]] @@ -5650,49 +6785,38 @@ version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.66", ] [[package]] -name = "thiserror-impl" -version = "1.0.66" +name = "thiserror" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" +checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.86", + "thiserror-impl 2.0.14", ] [[package]] -name = "time" -version = "0.3.36" +name = "thiserror-impl" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" +name = "thiserror-impl" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" dependencies = [ - "num-conv", - "time-core", + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] @@ -5706,14 +6830,24 @@ dependencies = [ "once_cell", "pbkdf2 0.4.0", "rand 0.7.3", - "rustc-hash 1.1.0", + "rustc-hash", "sha2 0.9.9", - "thiserror", + "thiserror 1.0.66", "unicode-normalization", "wasm-bindgen", "zeroize", ] +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -5731,32 +6865,33 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", ] [[package]] @@ -5765,15 +6900,15 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.12", + "rustls", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -5788,7 +6923,7 @@ checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", - "rustls 0.21.12", + "rustls", "tokio", "tokio-rustls", "tungstenite", @@ -5797,16 +6932,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -5857,7 +6991,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.10.0", "serde", "serde_spanned", "toml_datetime", @@ -5870,7 +7004,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.10.0", "serde", "serde_spanned", "toml_datetime", @@ -5883,7 +7017,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.10.0", "toml_datetime", "winnow", ] @@ -5901,7 +7035,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", - "log", "pin-project-lite", "tracing-core", ] @@ -5934,9 +7067,9 @@ dependencies = [ "httparse", "log", "rand 0.8.5", - "rustls 0.21.12", + "rustls", "sha1", - "thiserror", + "thiserror 1.0.66", "url", "utf-8", "webpki-roots 0.24.0", @@ -5957,12 +7090,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - [[package]] name = "unicode-ident" version = "1.0.12" @@ -5991,10 +7118,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] -name = "unicode-xid" -version = "0.2.4" +name = "unicode-width" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "universal-hash" @@ -6045,9 +7172,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -6060,12 +7187,24 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "vec_map" version = "0.8.2" @@ -6117,27 +7256,27 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -6155,9 +7294,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6165,22 +7304,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" @@ -6192,13 +7334,23 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[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", + "rustls-webpki", ] [[package]] @@ -6207,15 +7359,6 @@ version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" -[[package]] -name = "webpki-roots" -version = "0.26.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "winapi" version = "0.3.9" @@ -6256,6 +7399,12 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-sys" version = "0.48.0" @@ -6271,7 +7420,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -6291,17 +7449,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -6312,9 +7471,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -6324,9 +7483,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -6336,9 +7495,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -6348,9 +7513,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -6360,9 +7525,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -6372,9 +7537,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -6384,9 +7549,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -6408,22 +7573,10 @@ dependencies = [ ] [[package]] -name = "x509-parser" -version = "0.14.0" +name = "writeable" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" -dependencies = [ - "asn1-rs", - "base64 0.13.1", - "data-encoding", - "der-parser", - "lazy_static", - "nom", - "oid-registry", - "rusticata-macros", - "thiserror", - "time", -] +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "xattr" @@ -6434,6 +7587,30 @@ dependencies = [ "libc", ] +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.32" @@ -6451,7 +7628,28 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", ] [[package]] @@ -6471,7 +7669,40 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.104", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index a6abc075cc..62500be082 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,3 @@ -[profile.release] -lto = true - -[profile.release.package.anchor-cli] -codegen-units = 1 [workspace] members = [ @@ -16,8 +11,10 @@ members = [ "lang/syn", "spl", ] -exclude = [ - "tests/swap/deps/openbook-dex", - "tests/cfo/deps/openbook-dex", -] +exclude = ["tests/cfo/deps/openbook-dex", "tests/swap/deps/openbook-dex"] resolver = "2" +[profile.release] +lto = true + +[profile.release.package.anchor-cli] +codegen-units = 1 diff --git a/Makefile b/Makefile index 9ab0f04274..dd10da8ded 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +DICTIONARY_FILE ?= .cspell-anchor-dictionary.txt + .PHONY: build-cli build-cli: cargo build -p anchor-cli --release @@ -39,3 +41,15 @@ publish: sleep 25 cd cli/ && cargo publish && cd ../ sleep 25 + +.PHONY: spellcheck +spellcheck: + cspell *.md **/*.md **/*.mdx --config cspell.config.yaml --no-progress + +.PHONY: update-dictionary +update-dictionary: + echo $(DICTIONARY_FILE) + cspell *.md **/*.md **/*.mdx --config cspell.config.yaml --words-only --unique --no-progress --quiet 2>/dev/null | sort --ignore-case > .new-dictionary-words + cat .new-dictionary-words $(DICTIONARY_FILE) | sort --ignore-case > .new-$(DICTIONARY_FILE) + mv .new-$(DICTIONARY_FILE) $(DICTIONARY_FILE) + rm -f .new-dictionary-words diff --git a/SECURITY.md b/SECURITY.md index e9cfbc3a79..572551600e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,67 +1,134 @@ # Security Policy -1. [Reporting security problems](#reporting) -2. [Incident Response Process](#process) +1. Reporting security problems +2. Security Bug Bounties +3. Incident Response Process - -## Reporting security problems in the +## Reporting security problems for Anchor **DO NOT CREATE A GITHUB ISSUE** to report a security problem. -Instead please email disclosures@solana.org. -Provide a helpful title, detailed description of the vulnerability and an exploit -proof-of-concept. Speculative submissions without proof-of-concept will be closed -with no further consideration. - +Instead please email anchor-security@solana.org. Provide a helpful title, detailed description of the vulnerability and an exploit proof-of-concept. Speculative submissions without proof-of-concept will be closed with no further consideration. If you haven't done so already, please **enable two-factor auth** in your GitHub account. Expect a response as fast as possible in the advisory, typically within 72 hours. --- +As a general rule of thumb, we will look to these questions to evaluate eligibility: +1. Does the bug affect multiple contracts? Vulnerabilities don't have to affect multiple contracts, but a more widespread bug is generally indicative of a fundamental issue with the library, as opposed to a mistake by the developer +2. Was the bug public knowledge previously? This may mean that it's a vulnerability class for users of Anchor, but not an issue within Anchor itself +3. How complicated is the bug to trigger? The simpler and more plausible the proof of concept, the more likely it is to be a bug in the library + +Regardless, if you think you have an issue, we'd like to hear about it. -If you do not receive a response in the advisory, send an email to -disclosures@solana.org with the full URL of the advisory you have created. DO NOT -include attachments or provide detail sufficient for exploitation regarding the -security issue in this email. **Only provide such details in the advisory**. +For bugs that affect production code, we will pay up to $X according to the following guidelines. This is exclusive to any bounties claimed from the protocol. In other words, reports can't double-dip. +--- -If you do not receive a response from disclosures@solana.org please followup with -the team on another platform like @solana_devs on X/twitter +If you do not receive a response in the advisory, send an email to anchor-security@solana.org with the full URL of the advisory you have created. DO NOT include attachments or provide detail sufficient for exploitation regarding the security issue in this email. **Only provide such details in the advisory**. - ## Incident Response Process -In case an incident is discovered or reported, the following process will be -followed to contain, respond and remediate: +In case an incident is discovered or reported, the following process will be followed to contain, respond and remediate: ### 1. Accept the new report -In response a newly reported security problem, a member of the -`solana-foundation/admins` group will accept the report to turn it into a draft -advisory. The `solana-foundation/security-incident-response` group should be added to -the draft security advisory, and create a private fork of the repository (grey -button towards the bottom of the page) if necessary. +In response a newly reported security problem, a member of the `solana-foundation/admins` group will accept the report to turn it into a draft advisory. The `solana-foundation/anchor-security-incident-response` group should be added to the draft security advisory, and create a private fork of the repository (grey button towards the bottom of the page) if necessary. If the advisory is the result of an audit finding, follow the same process as above but add the auditor's github user(s) and begin the title with "[Audit]". -If the report is out of scope, a member of the `solana-foundation/admins` group will -comment as such and then close the report. +If the report is out of scope, a member of the `solana-foundation/admins` group will comment as such and then close the report. ### 2. Triage -Within the draft security advisory, discuss and determine the severity of the issue. If necessary, members of the solana-foundation/security-incident-response group may add other github users to the advisory to assist. -If it is determined that this is not a critical network issue then the advisory should be closed and if more follow-up is required a normal Solana public github issue should be created. +Within the draft security advisory, discuss and determine the severity of the issue. If necessary, members of the `solana-foundation/anchor-security-incident-response` group may add other github users to the advisory to assist. If it is determined that this is not a critical Anchor issue then the advisory should be closed and if more follow-up is required a normal Anchor public github issue should be created. ### 3. Prepare Fixes -For the affected branches, typically all three (edge, beta and stable), prepare a fix for the issue and push them to the corresponding branch in the private repository associated with the draft security advisory. -There is no CI available in the private repository so you must build from source and manually verify fixes. -Code review from the reporter is ideal, as well as from multiple members of the core development team. +For the affected branches, typically all three (edge, beta and stable), prepare a fix for the issue and push them to the corresponding branch in the private repository associated with the draft security advisory. There is no CI available in the private repository so you must build from source and manually verify fixes. Code review from the reporter is ideal, as well as from multiple members of the core development team. -### 4. Notify Security Group Validators -Once an ETA is available for the fix, a member of the solana-foundation/security-incident-response group should notify the validators so they can prepare for an update using the "Solana Red Alert" notification system. -The teams are all over the world and it's critical to provide actionable information at the right time. Don't be the person that wakes everybody up at 2am when a fix won't be available for hours. +### 4. Notify Security Group +Once an ETA is available for the fix, a member of the `solana-foundation/anchor-security-incident-response` group should notify major affected parties. The teams are all over the world and it's critical to provide actionable information at the right time. Don't be the person that wakes everybody up at 2am when a fix won't be available for hours. ### 5. Ship the patch -Once the fix is accepted it may be distributed directly to validators as a patch, depending on the vulnerability. +Once the fix is accepted it may be distributed directly to developers as a patch, depending on the vulnerability. + +### 6. Public Disclosure and Release +Once the fix has been deployed to major affected parties, the patches from the security advisory may be merged into the main source repository. A new official release for each affected branch should be shipped and all parties requested to upgrade as quickly as possible. + +### 7. Security Advisory Bounty Accounting and Cleanup +If this issue is eligible for a bounty, prefix the title of the security advisory with one of the following, depending on the severity: + +- Bounty Category: Critical: X +- Bounty Category: Medium: X +- Bounty Category: Low: X + +Confirm with the reporter that they agree with the severity assessment, and discuss as required to reach a conclusion. We currently do not use the Github workflow to publish security advisories. Once the issue and fix have been disclosed, and a bounty category is assessed if appropriate, the GitHub security advisory is no longer needed and can be closed. +## Security Bug Bounties +At its sole discretion, the Solana Foundation may offer a bounty for valid reports of Anchor vulnerabilities. Please see below for more details. The submitter is not required to provide a mitigation to qualify. + +#### IMPORTANT | PLEASE NOTE +_Note: Payments will continue to be paid out in 12-month locked SOL._ + +#### Critical: +_Max: $100k in SOL tokens. Min: $10k in SOL tokens_ + +* Bypassing fundamental Anchor checks, such as account ownership, discriminator, memory safety, etc. + +#### Medium: +_Max: $25k in SOL tokens. Min: $5k in SOL tokens_ + +* Denial of service attacks + +#### Low: +_Max: $5k in SOL tokens. Min: $100 in SOL tokens_ + +* All remaining issues +* Attacks to devex infrastructure + +### Out of Scope: +The following components are out of scope for the bounty program +* Any encrypted credentials, auth tokens, etc. checked into the repo +* Bugs in dependencies. Please take them upstream! +* Attacks that require social engineering +* Any undeveloped automated tooling (scanners, etc) results. (OK with developed PoC) +* Any asset whose source code does not exist in this repository (including, but not limited to, any and all web properties not explicitly listed on this page) + +### Eligibility: +* Anyone under a grant or the financial arrangement with Solana Foundation to develop or audit related tools is not eligible +* Submissions _MUST_ include an exploit proof-of-concept to be considered eligible +* The participant submitting the bug report shall follow the process outlined within this document +* Valid exploits can be eligible even if they are not successfully executed on a public cluster +* Multiple submissions for the same class of exploit are still eligible for compensation, though may be compensated at a lower rate, however these will be assessed on a case-by-case basis +* Participants must complete KYC and sign the participation agreement here when the registrations are open https://solana.org/kyc. Security exploits will still be assessed and open for submission at all times. This needs only be done prior to distribution of tokens. + +### Duplicate Reports +Compensation for duplicative reports will be split among reporters with first to report taking priority using the following equation: + +R: total reports +ri: report priority +bi: bounty share + +bi = 2 ^ (R - ri) / ((2^R) - 1) +#### Bounty Split Examples +| total reports | priority | share | +| ------------- | -------- | -----: | +| 1 | 1 | 100% | +| 2 | 1 | 66.67% | +| 2 | 2 | 33.33% | +| 3 | 1 | 57.14% | +| 3 | 2 | 28.57% | +| 3 | 3 | 14.29% | +| 4 | 1 | 53.33% | +| 4 | 2 | 26.67% | +| 4 | 3 | 13.33% | +| 4 | 4 | 6.67% | +| 5 | 1 | 51.61% | +| 5 | 2 | 25.81% | +| 5 | 3 | 12.90% | +| 5 | 4 | 6.45% | +| 5 | 5 | 3.23% | + +### Payment of Bug Bounties: +* Bounties are currently awarded on a rolling/weekly basis and paid out within 30 days upon receipt of an invoice. +* Bug bounties that are paid out in SOL are paid to stake accounts with a lockup expiring 12 months from the date of delivery of SOL. \ No newline at end of file diff --git a/VERSION b/VERSION index f176c94419..fd9620c08c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.31.1 +0.32.1 diff --git a/avm/Cargo.toml b/avm/Cargo.toml index e9cfd1ccea..d74c4190cd 100644 --- a/avm/Cargo.toml +++ b/avm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "avm" -version = "0.31.1" +version = "0.32.1" edition = "2021" [[bin]] diff --git a/avm/src/lib.rs b/avm/src/lib.rs index 51545fda5c..bdc701ccbe 100644 --- a/avm/src/lib.rs +++ b/avm/src/lib.rs @@ -1,4 +1,4 @@ -use anyhow::{anyhow, Error, Result}; +use anyhow::{anyhow, bail, Context, Error, Result}; use cargo_toml::Manifest; use chrono::{TimeZone, Utc}; use reqwest::header::USER_AGENT; @@ -201,7 +201,9 @@ pub fn use_version(opt_version: Option) -> Result<()> { .next() .expect("Expected input")?; match input.as_str() { - "y" | "yes" => return install_version(InstallTarget::Version(version), false, false), + "y" | "yes" => { + return install_version(InstallTarget::Version(version), false, false, false) + } _ => return Err(anyhow!("Installation rejected.")), }; } @@ -222,7 +224,7 @@ pub enum InstallTarget { /// Update to the latest version pub fn update() -> Result<()> { let latest_version = get_latest_version()?; - install_version(InstallTarget::Version(latest_version), false, false) + install_version(InstallTarget::Version(latest_version), false, false, false) } /// The commit sha provided can be shortened, @@ -284,6 +286,7 @@ pub fn install_version( install_target: InstallTarget, force: bool, from_source: bool, + with_solana_verify: bool, ) -> Result<()> { let (version, from_source) = match &install_target { InstallTarget::Version(version) => (version.to_owned(), from_source), @@ -308,7 +311,7 @@ pub fn install_version( } let is_commit = matches!(install_target, InstallTarget::Commit(_)); - let is_older_than_v0_31_0 = version < Version::parse("0.31.0")?; + let is_older_than_v0_31_0 = version < Version::new(0, 31, 0); if from_source || is_commit || is_older_than_v0_31_0 { // Build from source using `cargo install` let mut args: Vec = vec![ @@ -430,37 +433,108 @@ pub fn install_version( )?; } + let is_at_least_0_32 = version >= Version::new(0, 32, 0); + if with_solana_verify { + if is_at_least_0_32 { + if !solana_verify_installed().is_ok_and(|v| v) { + #[cfg(any(target_os = "linux", target_os = "macos"))] + install_solana_verify()?; + #[cfg(not(any(target_os = "linux", target_os = "macos")))] + install_solana_verify_from_source()?; + println!("solana-verify successfully installed"); + } else { + println!("solana-verify already installed"); + } + } else { + println!("Not installing solana-verify for anchor < 0.32"); + } + } + + // If .version file is empty or not parseable, write the newly installed version to it + if current_version().is_err() { + let mut current_version_file = fs::File::create(current_version_file_path())?; + current_version_file.write_all(version.to_string().as_bytes())?; + } + + use_version(Some(version)) +} + +const SOLANA_VERIFY_VERSION: Version = Version::new(0, 4, 11); + +/// Check if `solana-verify` is both installed and >= [`SOLANA_VERIFY_VERSION`]. +fn solana_verify_installed() -> Result { + let bin_path = get_bin_dir_path().join("solana-verify"); + if !bin_path.exists() { + return Ok(false); + } + let output = Command::new(bin_path) + .arg("-V") + .output() + .context("executing `solana-verify` to check version")?; + let stdout = + String::from_utf8(output.stdout).context("expected `solana-verify` to output utf8")?; + let Some(("solana-verify", version)) = stdout.trim().split_once(" ") else { + bail!("invalid `solana-verify` output: `{stdout}`"); + }; + if Version::parse(version).with_context(|| "parsing solana-verify version `{version}")? + >= SOLANA_VERIFY_VERSION + { + Ok(true) + } else { + Ok(false) + } +} + +/// Install `solana-verify` from binary releases. Only available on Linux and Mac +#[cfg(any(target_os = "linux", target_os = "macos"))] +fn install_solana_verify() -> Result<()> { println!("Installing solana-verify..."); - let solana_verify_install_output = Command::new("cargo") + let os = std::env::consts::OS; + let url = format!( + "https://github.com/Ellipsis-Labs/solana-verifiable-build/releases/download/v{SOLANA_VERIFY_VERSION}/solana-verify-{os}" + ); + let res = reqwest::blocking::get(url)?; + if !res.status().is_success() { + bail!( + "Failed to download `solana-verify-{os} v{SOLANA_VERIFY_VERSION} (status code: {})", + res.status() + ); + } else { + let bin_path = get_bin_dir_path().join("solana-verify"); + fs::write(&bin_path, res.bytes()?)?; + #[cfg(unix)] + fs::set_permissions( + bin_path, + ::from_mode(0o775), + )?; + Ok(()) + } +} + +/// Install `solana-verify` by building from Git sources +#[cfg(not(any(target_os = "linux", target_os = "macos")))] +fn install_solana_verify_from_source() -> Result<()> { + println!("Installing solana-verify from source..."); + let status = Command::new("cargo") .args([ "install", "solana-verify", "--git", "https://github.com/Ellipsis-Labs/solana-verifiable-build", "--rev", - "568cb334709e88b9b45fc24f1f440eecacf5db54", + &format!("v{SOLANA_VERIFY_VERSION}"), "--root", AVM_HOME.to_str().unwrap(), "--force", "--locked", ]) - .stdout(Stdio::inherit()) - .stderr(Stdio::inherit()) - .output() - .map_err(|e| anyhow!("`cargo install` for `solana-verify` failed: {e}"))?; - - if !solana_verify_install_output.status.success() { - return Err(anyhow!("Failed to install `solana-verify`")); - } - println!("solana-verify successfully installed."); - - // If .version file is empty or not parseable, write the newly installed version to it - if current_version().is_err() { - let mut current_version_file = fs::File::create(current_version_file_path())?; - current_version_file.write_all(version.to_string().as_bytes())?; + .status() + .context("executing `cargo install solana-verify`")?; + if status.success() { + Ok(()) + } else { + bail!("failed to install `solana-verify`"); } - - use_version(Some(version)) } /// Remove an installed version of anchor-cli @@ -492,6 +566,7 @@ pub fn fetch_versions() -> Result, Error> { struct Release { #[serde(rename = "name", deserialize_with = "version_deserializer")] version: Version, + draft: bool, } fn version_deserializer<'de, D>(deserializer: D) -> Result @@ -503,13 +578,20 @@ pub fn fetch_versions() -> Result, Error> { } let response = reqwest::blocking::Client::new() - .get("https://api.github.com/repos/coral-xyz/anchor/tags") - .header(USER_AGENT, "avm https://github.com/coral-xyz/anchor") + .get("https://api.github.com/repos/solana-foundation/anchor/releases") + .header( + USER_AGENT, + "avm https://github.com/solana-foundation/anchor", + ) .send()?; if response.status().is_success() { let releases: Vec = response.json()?; - let versions = releases.into_iter().map(|r| r.version).collect(); + let versions = releases + .into_iter() + .filter(|r| !r.draft) + .map(|r| r.version) + .collect(); Ok(versions) } else { let reset_time_header = response @@ -533,8 +615,7 @@ pub fn list_versions() -> Result<()> { let mut installed_versions = read_installed_versions()?; let mut available_versions = fetch_versions()?; - // Reverse version list so latest versions are printed last - available_versions.reverse(); + available_versions.sort(); let print_versions = |versions: Vec, installed_versions: &mut Vec, show_latest: bool| { diff --git a/avm/src/main.rs b/avm/src/main.rs index d4e45d8b0a..4f8546a52c 100644 --- a/avm/src/main.rs +++ b/avm/src/main.rs @@ -33,6 +33,9 @@ pub enum Commands { #[clap(long)] /// Build from source code rather than downloading prebuilt binaries from_source: bool, + #[clap(long)] + /// Install `solana-verify` as well + verify: bool, }, #[clap(about = "Uninstall a version of Anchor")] Uninstall { @@ -80,13 +83,14 @@ pub fn entry(opts: Cli) -> Result<()> { path, force, from_source, + verify, } => { let install_target = if let Some(path) = path { InstallTarget::Path(path.into()) } else { parse_install_target(&version_or_commit.unwrap())? }; - avm::install_version(install_target, force, from_source) + avm::install_version(install_target, force, from_source, verify) } Commands::Uninstall { version } => avm::uninstall_version(&version), Commands::List {} => avm::list_versions(), diff --git a/bench/BINARY_SIZE.md b/bench/BINARY_SIZE.md index ae72928761..560194039a 100644 --- a/bench/BINARY_SIZE.md +++ b/bench/BINARY_SIZE.md @@ -14,11 +14,37 @@ The programs and their tests are located in [/tests/bench](https://github.com/co ## [Unreleased] +Solana version: 2.3.0 + +| Program | Binary Size | - | +| ------- | ----------- | ----------------------- | +| bench | 1,024,112 | 🟢 **-102,728 (9.12%)** | + +### Notable changes + +--- + +## [0.32.1] + +Solana version: 2.3.0 + +| Program | Binary Size | - | +| ------- | ----------- | ------------------------ | +| bench | 1,126,840 | 🔴 **+181,272 (19.17%)** | + +### Notable changes + +- Upgrade to Solana `2.3.0`. This upgrade increased the binary size by 8.15% (84912 bytes) ([#3967](https://github.com/solana-foundation/anchor/pull/3967)). + +--- + +## [0.32.0] + Solana version: 2.1.0 -| Program | Binary Size | - | -| ------- | ----------- | --- | -| bench | 1,041,928 | - | +| Program | Binary Size | - | +| ------- | ----------- | ---------------------- | +| bench | 945,568 | 🟢 **-96,360 (9.25%)** | ### Notable changes diff --git a/bench/COMPUTE_UNITS.md b/bench/COMPUTE_UNITS.md index c519b8246f..e796228b98 100644 --- a/bench/COMPUTE_UNITS.md +++ b/bench/COMPUTE_UNITS.md @@ -14,97 +14,293 @@ The programs and their tests are located in [/tests/bench](https://github.com/co ## [Unreleased] +Solana version: 2.3.0 + +| Instruction | Compute Units | - | +| --------------------------- | ------------- | ------------------- | +| accountInfo1 | 685 | - | +| accountInfo2 | 1,053 | - | +| accountInfo4 | 1,750 | - | +| accountInfo8 | 3,135 | - | +| accountEmptyInit1 | 4,915 | - | +| accountEmpty1 | 774 | - | +| accountEmptyInit2 | 8,793 | - | +| accountEmpty2 | 1,174 | - | +| accountEmptyInit4 | 16,495 | 🟢 **-253 (1.51%)** | +| accountEmpty4 | 1,962 | - | +| accountEmptyInit8 | 31,997 | 🟢 **-360 (1.11%)** | +| accountEmpty8 | 3,548 | - | +| accountSizedInit1 | 5,019 | - | +| accountSized1 | 822 | - | +| accountSizedInit2 | 8,981 | - | +| accountSized2 | 1,240 | - | +| accountSizedInit4 | 16,850 | 🟢 **-304 (1.77%)** | +| accountSized4 | 2,082 | - | +| accountSizedInit8 | 32,653 | 🟢 **-360 (1.09%)** | +| accountSized8 | 3,762 | - | +| accountUnsizedInit1 | 5,127 | - | +| accountUnsized1 | 874 | - | +| accountUnsizedInit2 | 9,131 | 🟢 **-120 (1.30%)** | +| accountUnsized2 | 1,326 | - | +| accountUnsizedInit4 | 17,198 | 🟢 **-180 (1.04%)** | +| accountUnsized4 | 2,231 | - | +| accountUnsizedInit8 | 33,324 | 🟢 **-637 (1.88%)** | +| accountUnsized8 | 4,035 | - | +| boxedAccountEmptyInit1 | 5,007 | - | +| boxedAccountEmpty1 | 864 | - | +| boxedAccountEmptyInit2 | 8,906 | - | +| boxedAccountEmpty2 | 1,286 | - | +| boxedAccountEmptyInit4 | 16,648 | 🟢 **-254 (1.50%)** | +| boxedAccountEmpty4 | 2,115 | - | +| boxedAccountEmptyInit8 | 32,231 | 🟢 **-360 (1.10%)** | +| boxedAccountEmpty8 | 3,801 | - | +| boxedAccountSizedInit1 | 5,103 | - | +| boxedAccountSized1 | 912 | - | +| boxedAccountSizedInit2 | 9,075 | - | +| boxedAccountSized2 | 1,355 | - | +| boxedAccountSizedInit4 | 16,960 | 🟢 **-254 (1.48%)** | +| boxedAccountSized4 | 2,231 | - | +| boxedAccountSizedInit8 | 32,831 | 🟢 **-690 (2.06%)** | +| boxedAccountSized8 | 4,007 | - | +| boxedAccountUnsizedInit1 | 5,202 | - | +| boxedAccountUnsized1 | 964 | - | +| boxedAccountUnsizedInit2 | 9,251 | - | +| boxedAccountUnsized2 | 1,434 | - | +| boxedAccountUnsizedInit4 | 17,284 | 🟢 **-258 (1.47%)** | +| boxedAccountUnsized4 | 2,367 | - | +| boxedAccountUnsizedInit8 | 33,455 | 🟢 **-698 (2.04%)** | +| boxedAccountUnsized8 | 4,257 | - | +| boxedInterfaceAccountMint1 | 1,110 | - | +| boxedInterfaceAccountMint2 | 1,534 | - | +| boxedInterfaceAccountMint4 | 2,370 | - | +| boxedInterfaceAccountMint8 | 4,064 | - | +| boxedInterfaceAccountToken1 | 1,246 | - | +| boxedInterfaceAccountToken2 | 1,794 | - | +| boxedInterfaceAccountToken4 | 2,878 | - | +| boxedInterfaceAccountToken8 | 5,068 | - | +| interfaceAccountMint1 | 1,126 | - | +| interfaceAccountMint2 | 1,562 | - | +| interfaceAccountMint4 | 2,432 | - | +| interfaceAccountMint8 | 4,163 | - | +| interfaceAccountToken1 | 1,268 | - | +| interfaceAccountToken2 | 1,849 | - | +| interfaceAccountToken4 | 2,997 | - | +| interface1 | 878 | - | +| interface2 | 1,023 | - | +| interface4 | 1,301 | - | +| interface8 | 1,867 | - | +| program1 | 890 | - | +| program2 | 1,035 | - | +| program4 | 1,313 | - | +| program8 | 1,879 | - | +| signer1 | 874 | - | +| signer2 | 1,173 | - | +| signer4 | 1,759 | - | +| signer8 | 2,941 | - | +| systemAccount1 | 911 | - | +| systemAccount2 | 1,235 | - | +| systemAccount4 | 1,871 | - | +| systemAccount8 | 3,153 | - | +| uncheckedAccount1 | 882 | - | +| uncheckedAccount2 | 1,162 | - | +| uncheckedAccount4 | 1,716 | - | +| uncheckedAccount8 | 2,833 | - | + +### Notable changes + +--- + +## [0.32.1] + +Solana version: 2.3.0 + +| Instruction | Compute Units | - | +| --------------------------- | ------------- | ---------------------- | +| accountInfo1 | 685 | 🔴 **+114 (19.96%)** | +| accountInfo2 | 1,053 | 🔴 **+158 (17.65%)** | +| accountInfo4 | 1,750 | 🔴 **+197 (12.69%)** | +| accountInfo8 | 3,135 | 🔴 **+212 (7.25%)** | +| accountEmptyInit1 | 4,915 | 🔴 **+131 (2.74%)** | +| accountEmpty1 | 774 | 🔴 **+129 (20.00%)** | +| accountEmptyInit2 | 8,793 | 🔴 **+124 (1.43%)** | +| accountEmpty2 | 1,174 | 🔴 **+167 (16.58%)** | +| accountEmptyInit4 | 16,748 | 🔴 **+248 (1.50%)** | +| accountEmpty4 | 1,962 | 🔴 **+238 (13.81%)** | +| accountEmptyInit8 | 32,357 | 🔴 **+26 (0.08%)** | +| accountEmpty8 | 3,548 | 🔴 **+385 (12.17%)** | +| accountSizedInit1 | 5,019 | 🔴 **+126 (2.58%)** | +| accountSized1 | 822 | 🔴 **+129 (18.61%)** | +| accountSizedInit2 | 8,981 | 🔴 **+124 (1.40%)** | +| accountSized2 | 1,240 | 🔴 **+165 (15.35%)** | +| accountSizedInit4 | 17,154 | 🔴 **+248 (1.47%)** | +| accountSized4 | 2,082 | 🔴 **+234 (12.66%)** | +| accountSizedInit8 | 33,013 | 🟢 **-28 (0.08%)** | +| accountSized8 | 3,762 | 🔴 **+375 (11.07%)** | +| accountUnsizedInit1 | 5,127 | 🔴 **+121 (2.42%)** | +| accountUnsized1 | 874 | 🔴 **+128 (17.16%)** | +| accountUnsizedInit2 | 9,251 | 🔴 **+124 (1.36%)** | +| accountUnsized2 | 1,326 | 🔴 **+163 (14.02%)** | +| accountUnsizedInit4 | 17,378 | 🟢 **-29 (0.17%)** | +| accountUnsized4 | 2,231 | 🔴 **+229 (11.44%)** | +| accountUnsizedInit8 | 33,961 | 🔴 **+496 (1.48%)** | +| accountUnsized8 | 4,035 | 🔴 **+362 (9.86%)** | +| boxedAccountEmptyInit1 | 5,007 | 🔴 **+131 (2.69%)** | +| boxedAccountEmpty1 | 864 | 🔴 **+130 (17.71%)** | +| boxedAccountEmptyInit2 | 8,906 | 🔴 **+123 (1.40%)** | +| boxedAccountEmpty2 | 1,286 | 🔴 **+170 (15.23%)** | +| boxedAccountEmptyInit4 | 16,902 | 🔴 **+247 (1.48%)** | +| boxedAccountEmpty4 | 2,115 | 🔴 **+243 (12.98%)** | +| boxedAccountEmptyInit8 | 32,591 | 🔴 **+30 (0.09%)** | +| boxedAccountEmpty8 | 3,801 | 🔴 **+400 (11.76%)** | +| boxedAccountSizedInit1 | 5,103 | 🔴 **+131 (2.63%)** | +| boxedAccountSized1 | 912 | 🔴 **+129 (16.48%)** | +| boxedAccountSizedInit2 | 9,075 | 🔴 **+123 (1.37%)** | +| boxedAccountSized2 | 1,355 | 🔴 **+165 (13.87%)** | +| boxedAccountSizedInit4 | 17,214 | 🔴 **+247 (1.46%)** | +| boxedAccountSized4 | 2,231 | 🔴 **+235 (11.77%)** | +| boxedAccountSizedInit8 | 33,521 | 🔴 **+360 (1.09%)** | +| boxedAccountSized8 | 4,007 | 🔴 **+379 (10.45%)** | +| boxedAccountUnsizedInit1 | 5,202 | 🔴 **+130 (2.56%)** | +| boxedAccountUnsized1 | 964 | 🔴 **+128 (15.31%)** | +| boxedAccountUnsizedInit2 | 9,251 | 🔴 **+123 (1.35%)** | +| boxedAccountUnsized2 | 1,434 | 🔴 **+164 (12.91%)** | +| boxedAccountUnsizedInit4 | 17,542 | 🔴 **+247 (1.43%)** | +| boxedAccountUnsized4 | 2,367 | 🔴 **+235 (11.02%)** | +| boxedAccountUnsizedInit8 | 34,153 | 🔴 **+360 (1.07%)** | +| boxedAccountUnsized8 | 4,257 | 🔴 **+376 (9.69%)** | +| boxedInterfaceAccountMint1 | 1,110 | 🟢 **-241 (17.84%)** | +| boxedInterfaceAccountMint2 | 1,534 | 🟢 **-589 (27.74%)** | +| boxedInterfaceAccountMint4 | 2,370 | 🟢 **-1,286 (35.18%)** | +| boxedInterfaceAccountMint8 | 4,064 | 🟢 **-2,674 (39.69%)** | +| boxedInterfaceAccountToken1 | 1,246 | 🟢 **-765 (38.04%)** | +| boxedInterfaceAccountToken2 | 1,794 | 🟢 **-1,637 (47.71%)** | +| boxedInterfaceAccountToken4 | 2,878 | 🟢 **-3,382 (54.03%)** | +| boxedInterfaceAccountToken8 | 5,068 | 🟢 **-6,866 (57.53%)** | +| interfaceAccountMint1 | 1,126 | 🟢 **-350 (23.71%)** | +| interfaceAccountMint2 | 1,562 | 🟢 **-927 (37.24%)** | +| interfaceAccountMint4 | 2,432 | 🟢 **-2,079 (46.09%)** | +| interfaceAccountMint8 | 4,163 | 🟢 **-4,387 (51.31%)** | +| interfaceAccountToken1 | 1,268 | 🟢 **-843 (39.93%)** | +| interfaceAccountToken2 | 1,849 | 🟢 **-1,880 (50.42%)** | +| interfaceAccountToken4 | 2,997 | 🟢 **-3,958 (56.91%)** | +| interface1 | 878 | 🔴 **+109 (14.17%)** | +| interface2 | 1,023 | 🔴 **+111 (12.17%)** | +| interface4 | 1,301 | 🔴 **+112 (9.42%)** | +| interface8 | 1,867 | 🔴 **+119 (6.81%)** | +| program1 | 890 | 🔴 **+111 (14.25%)** | +| program2 | 1,035 | 🔴 **+115 (12.50%)** | +| program4 | 1,313 | 🔴 **+120 (10.06%)** | +| program8 | 1,879 | 🔴 **+135 (7.74%)** | +| signer1 | 874 | 🔴 **+100 (12.92%)** | +| signer2 | 1,173 | 🔴 **+109 (10.24%)** | +| signer4 | 1,759 | 🔴 **+122 (7.45%)** | +| signer8 | 2,941 | 🔴 **+153 (5.49%)** | +| systemAccount1 | 911 | 🔴 **+115 (14.45%)** | +| systemAccount2 | 1,235 | 🔴 **+139 (12.68%)** | +| systemAccount4 | 1,871 | 🔴 **+182 (10.78%)** | +| systemAccount8 | 3,153 | 🔴 **+273 (9.48%)** | +| uncheckedAccount1 | 882 | 🔴 **+99 (12.64%)** | +| uncheckedAccount2 | 1,162 | 🔴 **+106 (10.04%)** | +| uncheckedAccount4 | 1,716 | 🔴 **+122 (7.65%)** | +| uncheckedAccount8 | 2,833 | 🔴 **+154 (5.75%)** | + +### Notable changes + +--- + +## [0.32.0] + Solana version: 2.1.0 -| Instruction | Compute Units | - | -| --------------------------- | ------------- | --- | -| accountInfo1 | 571 | - | -| accountInfo2 | 895 | - | -| accountInfo4 | 1,553 | - | -| accountInfo8 | 2,923 | - | -| accountEmptyInit1 | 5,083 | - | -| accountEmpty1 | 645 | - | -| accountEmptyInit2 | 9,301 | - | -| accountEmpty2 | 1,007 | - | -| accountEmptyInit4 | 17,764 | - | -| accountEmpty4 | 1,724 | - | -| accountEmptyInit8 | 34,723 | - | -| accountEmpty8 | 3,163 | - | -| accountSizedInit1 | 5,192 | - | -| accountSized1 | 693 | - | -| accountSizedInit2 | 9,489 | - | -| accountSized2 | 1,075 | - | -| accountSizedInit4 | 18,170 | - | -| accountSized4 | 1,848 | - | -| accountSizedInit8 | 35,433 | - | -| accountSized8 | 3,387 | - | -| accountUnsizedInit1 | 5,305 | - | -| accountUnsized1 | 746 | - | -| accountUnsizedInit2 | 9,759 | - | -| accountUnsized2 | 1,163 | - | -| accountUnsizedInit4 | 18,603 | - | -| accountUnsized4 | 2,002 | - | -| accountUnsizedInit8 | 35,993 | - | -| accountUnsized8 | 3,673 | - | -| boxedAccountEmptyInit1 | 5,175 | - | -| boxedAccountEmpty1 | 734 | - | -| boxedAccountEmptyInit2 | 9,414 | - | -| boxedAccountEmpty2 | 1,116 | - | -| boxedAccountEmptyInit4 | 17,918 | - | -| boxedAccountEmpty4 | 1,872 | - | -| boxedAccountEmptyInit8 | 34,953 | - | -| boxedAccountEmpty8 | 3,401 | - | -| boxedAccountSizedInit1 | 5,271 | - | -| boxedAccountSized1 | 783 | - | -| boxedAccountSizedInit2 | 9,583 | - | -| boxedAccountSized2 | 1,190 | - | -| boxedAccountSizedInit4 | 18,230 | - | -| boxedAccountSized4 | 1,996 | - | -| boxedAccountSizedInit8 | 35,553 | - | -| boxedAccountSized8 | 3,628 | - | -| boxedAccountUnsizedInit1 | 5,371 | - | -| boxedAccountUnsized1 | 836 | - | -| boxedAccountUnsizedInit2 | 9,759 | - | -| boxedAccountUnsized2 | 1,270 | - | -| boxedAccountUnsizedInit4 | 18,558 | - | -| boxedAccountUnsized4 | 2,132 | - | -| boxedAccountUnsizedInit8 | 36,185 | - | -| boxedAccountUnsized8 | 3,881 | - | -| boxedInterfaceAccountMint1 | 1,351 | - | -| boxedInterfaceAccountMint2 | 2,123 | - | -| boxedInterfaceAccountMint4 | 3,656 | - | -| boxedInterfaceAccountMint8 | 6,738 | - | -| boxedInterfaceAccountToken1 | 2,011 | - | -| boxedInterfaceAccountToken2 | 3,431 | - | -| boxedInterfaceAccountToken4 | 6,260 | - | -| boxedInterfaceAccountToken8 | 11,934 | - | -| interfaceAccountMint1 | 1,476 | - | -| interfaceAccountMint2 | 2,489 | - | -| interfaceAccountMint4 | 4,511 | - | -| interfaceAccountMint8 | 8,550 | - | -| interfaceAccountToken1 | 2,111 | - | -| interfaceAccountToken2 | 3,729 | - | -| interfaceAccountToken4 | 6,955 | - | -| interface1 | 769 | - | -| interface2 | 912 | - | -| interface4 | 1,189 | - | -| interface8 | 1,748 | - | -| program1 | 779 | - | -| program2 | 920 | - | -| program4 | 1,193 | - | -| program8 | 1,744 | - | -| signer1 | 774 | - | -| signer2 | 1,064 | - | -| signer4 | 1,637 | - | -| signer8 | 2,788 | - | -| systemAccount1 | 796 | - | -| systemAccount2 | 1,096 | - | -| systemAccount4 | 1,689 | - | -| systemAccount8 | 2,880 | - | -| uncheckedAccount1 | 783 | - | -| uncheckedAccount2 | 1,056 | - | -| uncheckedAccount4 | 1,594 | - | -| uncheckedAccount8 | 2,679 | - | +| Instruction | Compute Units | - | +| --------------------------- | ------------- | --------------------- | +| accountInfo1 | 571 | - | +| accountInfo2 | 895 | - | +| accountInfo4 | 1,553 | - | +| accountInfo8 | 2,923 | - | +| accountEmptyInit1 | 4,784 | 🟢 **-299 (5.88%)** | +| accountEmpty1 | 645 | - | +| accountEmptyInit2 | 8,669 | 🟢 **-632 (6.79%)** | +| accountEmpty2 | 1,007 | - | +| accountEmptyInit4 | 16,500 | 🟢 **-1,264 (7.12%)** | +| accountEmpty4 | 1,724 | - | +| accountEmptyInit8 | 32,331 | 🟢 **-2,392 (6.89%)** | +| accountEmpty8 | 3,163 | - | +| accountSizedInit1 | 4,893 | 🟢 **-299 (5.76%)** | +| accountSized1 | 693 | - | +| accountSizedInit2 | 8,857 | 🟢 **-632 (6.66%)** | +| accountSized2 | 1,075 | - | +| accountSizedInit4 | 16,906 | 🟢 **-1,264 (6.96%)** | +| accountSized4 | 1,848 | - | +| accountSizedInit8 | 33,041 | 🟢 **-2,392 (6.75%)** | +| accountSized8 | 3,387 | - | +| accountUnsizedInit1 | 5,006 | 🟢 **-299 (5.64%)** | +| accountUnsized1 | 746 | - | +| accountUnsizedInit2 | 9,127 | 🟢 **-632 (6.48%)** | +| accountUnsized2 | 1,163 | - | +| accountUnsizedInit4 | 17,407 | 🟢 **-1,196 (6.43%)** | +| accountUnsized4 | 2,002 | - | +| accountUnsizedInit8 | 33,465 | 🟢 **-2,528 (7.02%)** | +| accountUnsized8 | 3,673 | - | +| boxedAccountEmptyInit1 | 4,876 | 🟢 **-299 (5.78%)** | +| boxedAccountEmpty1 | 734 | - | +| boxedAccountEmptyInit2 | 8,783 | 🟢 **-631 (6.70%)** | +| boxedAccountEmpty2 | 1,116 | - | +| boxedAccountEmptyInit4 | 16,655 | 🟢 **-1,263 (7.05%)** | +| boxedAccountEmpty4 | 1,872 | - | +| boxedAccountEmptyInit8 | 32,561 | 🟢 **-2,392 (6.84%)** | +| boxedAccountEmpty8 | 3,401 | - | +| boxedAccountSizedInit1 | 4,972 | 🟢 **-299 (5.67%)** | +| boxedAccountSized1 | 783 | - | +| boxedAccountSizedInit2 | 8,952 | 🟢 **-631 (6.58%)** | +| boxedAccountSized2 | 1,190 | - | +| boxedAccountSizedInit4 | 16,967 | 🟢 **-1,263 (6.93%)** | +| boxedAccountSized4 | 1,996 | - | +| boxedAccountSizedInit8 | 33,161 | 🟢 **-2,392 (6.73%)** | +| boxedAccountSized8 | 3,628 | - | +| boxedAccountUnsizedInit1 | 5,072 | 🟢 **-299 (5.57%)** | +| boxedAccountUnsized1 | 836 | - | +| boxedAccountUnsizedInit2 | 9,128 | 🟢 **-631 (6.47%)** | +| boxedAccountUnsized2 | 1,270 | - | +| boxedAccountUnsizedInit4 | 17,295 | 🟢 **-1,263 (6.81%)** | +| boxedAccountUnsized4 | 2,132 | - | +| boxedAccountUnsizedInit8 | 33,793 | 🟢 **-2,392 (6.61%)** | +| boxedAccountUnsized8 | 3,881 | - | +| boxedInterfaceAccountMint1 | 1,351 | - | +| boxedInterfaceAccountMint2 | 2,123 | - | +| boxedInterfaceAccountMint4 | 3,656 | - | +| boxedInterfaceAccountMint8 | 6,738 | - | +| boxedInterfaceAccountToken1 | 2,011 | - | +| boxedInterfaceAccountToken2 | 3,431 | - | +| boxedInterfaceAccountToken4 | 6,260 | - | +| boxedInterfaceAccountToken8 | 11,934 | - | +| interfaceAccountMint1 | 1,476 | - | +| interfaceAccountMint2 | 2,489 | - | +| interfaceAccountMint4 | 4,511 | - | +| interfaceAccountMint8 | 8,550 | - | +| interfaceAccountToken1 | 2,111 | - | +| interfaceAccountToken2 | 3,729 | - | +| interfaceAccountToken4 | 6,955 | - | +| interface1 | 769 | - | +| interface2 | 912 | - | +| interface4 | 1,189 | - | +| interface8 | 1,748 | - | +| program1 | 779 | - | +| program2 | 934 | 🔴 **+14 (1.52%)** | +| program4 | 1,221 | 🔴 **+28 (2.35%)** | +| program8 | 1,800 | 🔴 **+56 (3.21%)** | +| signer1 | 774 | - | +| signer2 | 1,064 | - | +| signer4 | 1,637 | - | +| signer8 | 2,788 | - | +| systemAccount1 | 796 | - | +| systemAccount2 | 1,096 | - | +| systemAccount4 | 1,689 | - | +| systemAccount8 | 2,880 | - | +| uncheckedAccount1 | 783 | - | +| uncheckedAccount2 | 1,056 | - | +| uncheckedAccount4 | 1,594 | - | +| uncheckedAccount8 | 2,679 | - | ### Notable changes diff --git a/bench/STACK_MEMORY.md b/bench/STACK_MEMORY.md index 7691b9506a..fef9859829 100644 --- a/bench/STACK_MEMORY.md +++ b/bench/STACK_MEMORY.md @@ -14,6 +14,202 @@ The programs and their tests are located in [/tests/bench](https://github.com/co ## [Unreleased] +Solana version: 2.3.0 + +| Instruction | Stack Memory | - | +| ------------------------------ | ------------ | --- | +| account_info1 | 46 | - | +| account_info2 | 88 | - | +| account_info4 | 88 | - | +| account_info8 | 88 | - | +| account_empty_init1 | 88 | - | +| account_empty_init2 | 88 | - | +| account_empty_init4 | 88 | - | +| account_empty_init8 | 88 | - | +| account_empty1 | 88 | - | +| account_empty2 | 88 | - | +| account_empty4 | 88 | - | +| account_empty8 | 88 | - | +| account_sized_init1 | 88 | - | +| account_sized_init2 | 88 | - | +| account_sized_init4 | 88 | - | +| account_sized_init8 | 88 | - | +| account_sized1 | 88 | - | +| account_sized2 | 88 | - | +| account_sized4 | 88 | - | +| account_sized8 | 88 | - | +| account_unsized_init1 | 88 | - | +| account_unsized_init2 | 88 | - | +| account_unsized_init4 | 88 | - | +| account_unsized_init8 | 88 | - | +| account_unsized1 | 88 | - | +| account_unsized2 | 88 | - | +| account_unsized4 | 88 | - | +| account_unsized8 | 88 | - | +| boxed_account_empty_init1 | 88 | - | +| boxed_account_empty_init2 | 88 | - | +| boxed_account_empty_init4 | 88 | - | +| boxed_account_empty_init8 | 88 | - | +| boxed_account_empty1 | 88 | - | +| boxed_account_empty2 | 88 | - | +| boxed_account_empty4 | 88 | - | +| boxed_account_empty8 | 88 | - | +| boxed_account_sized_init1 | 88 | - | +| boxed_account_sized_init2 | 88 | - | +| boxed_account_sized_init4 | 88 | - | +| boxed_account_sized_init8 | 88 | - | +| boxed_account_sized1 | 88 | - | +| boxed_account_sized2 | 88 | - | +| boxed_account_sized4 | 88 | - | +| boxed_account_sized8 | 88 | - | +| boxed_account_unsized_init1 | 88 | - | +| boxed_account_unsized_init2 | 88 | - | +| boxed_account_unsized_init4 | 88 | - | +| boxed_account_unsized_init8 | 88 | - | +| boxed_account_unsized1 | 88 | - | +| boxed_account_unsized2 | 88 | - | +| boxed_account_unsized4 | 88 | - | +| boxed_account_unsized8 | 88 | - | +| boxed_interface_account_mint1 | 88 | - | +| boxed_interface_account_mint2 | 88 | - | +| boxed_interface_account_mint4 | 88 | - | +| boxed_interface_account_mint8 | 88 | - | +| boxed_interface_account_token1 | 88 | - | +| boxed_interface_account_token2 | 88 | - | +| boxed_interface_account_token4 | 88 | - | +| boxed_interface_account_token8 | 88 | - | +| interface_account_mint1 | 88 | - | +| interface_account_mint2 | 88 | - | +| interface_account_mint4 | 88 | - | +| interface_account_mint8 | 88 | - | +| interface_account_token1 | 80 | - | +| interface_account_token2 | 80 | - | +| interface_account_token4 | 80 | - | +| interface1 | 88 | - | +| interface2 | 88 | - | +| interface4 | 88 | - | +| interface8 | 88 | - | +| program1 | 88 | - | +| program2 | 88 | - | +| program4 | 88 | - | +| program8 | 88 | - | +| signer1 | 88 | - | +| signer2 | 88 | - | +| signer4 | 88 | - | +| signer8 | 88 | - | +| system_account1 | 88 | - | +| system_account2 | 88 | - | +| system_account4 | 88 | - | +| system_account8 | 88 | - | +| unchecked_account1 | 88 | - | +| unchecked_account2 | 88 | - | +| unchecked_account4 | 88 | - | +| unchecked_account8 | 88 | - | + +### Notable changes + +--- + +## [0.32.1] + +Solana version: 2.3.0 + +| Instruction | Stack Memory | - | +| ------------------------------ | ------------ | ------------------ | +| account_info1 | 46 | - | +| account_info2 | 88 | 🔴 **+8 (10.00%)** | +| account_info4 | 88 | 🔴 **+8 (10.00%)** | +| account_info8 | 88 | 🔴 **+8 (10.00%)** | +| account_empty_init1 | 88 | - | +| account_empty_init2 | 88 | - | +| account_empty_init4 | 88 | - | +| account_empty_init8 | 88 | - | +| account_empty1 | 88 | - | +| account_empty2 | 88 | - | +| account_empty4 | 88 | - | +| account_empty8 | 88 | - | +| account_sized_init1 | 88 | - | +| account_sized_init2 | 88 | - | +| account_sized_init4 | 88 | - | +| account_sized_init8 | 88 | - | +| account_sized1 | 88 | - | +| account_sized2 | 88 | - | +| account_sized4 | 88 | - | +| account_sized8 | 88 | - | +| account_unsized_init1 | 88 | - | +| account_unsized_init2 | 88 | - | +| account_unsized_init4 | 88 | - | +| account_unsized_init8 | 88 | - | +| account_unsized1 | 88 | - | +| account_unsized2 | 88 | - | +| account_unsized4 | 88 | - | +| account_unsized8 | 88 | - | +| boxed_account_empty_init1 | 88 | - | +| boxed_account_empty_init2 | 88 | - | +| boxed_account_empty_init4 | 88 | - | +| boxed_account_empty_init8 | 88 | - | +| boxed_account_empty1 | 88 | - | +| boxed_account_empty2 | 88 | - | +| boxed_account_empty4 | 88 | - | +| boxed_account_empty8 | 88 | - | +| boxed_account_sized_init1 | 88 | - | +| boxed_account_sized_init2 | 88 | - | +| boxed_account_sized_init4 | 88 | - | +| boxed_account_sized_init8 | 88 | - | +| boxed_account_sized1 | 88 | - | +| boxed_account_sized2 | 88 | - | +| boxed_account_sized4 | 88 | - | +| boxed_account_sized8 | 88 | - | +| boxed_account_unsized_init1 | 88 | - | +| boxed_account_unsized_init2 | 88 | - | +| boxed_account_unsized_init4 | 88 | - | +| boxed_account_unsized_init8 | 88 | - | +| boxed_account_unsized1 | 88 | - | +| boxed_account_unsized2 | 88 | - | +| boxed_account_unsized4 | 88 | - | +| boxed_account_unsized8 | 88 | - | +| boxed_interface_account_mint1 | 88 | - | +| boxed_interface_account_mint2 | 88 | - | +| boxed_interface_account_mint4 | 88 | - | +| boxed_interface_account_mint8 | 88 | - | +| boxed_interface_account_token1 | 88 | - | +| boxed_interface_account_token2 | 88 | - | +| boxed_interface_account_token4 | 88 | - | +| boxed_interface_account_token8 | 88 | - | +| interface_account_mint1 | 88 | - | +| interface_account_mint2 | 88 | - | +| interface_account_mint4 | 88 | - | +| interface_account_mint8 | 88 | - | +| interface_account_token1 | 80 | - | +| interface_account_token2 | 80 | - | +| interface_account_token4 | 80 | - | +| interface1 | 88 | - | +| interface2 | 88 | - | +| interface4 | 88 | - | +| interface8 | 88 | - | +| program1 | 88 | - | +| program2 | 88 | - | +| program4 | 88 | - | +| program8 | 88 | - | +| signer1 | 88 | - | +| signer2 | 88 | - | +| signer4 | 88 | - | +| signer8 | 88 | - | +| system_account1 | 88 | - | +| system_account2 | 88 | - | +| system_account4 | 88 | - | +| system_account8 | 88 | - | +| unchecked_account1 | 88 | - | +| unchecked_account2 | 88 | - | +| unchecked_account4 | 88 | - | +| unchecked_account8 | 88 | - | + +### Notable changes + +--- + +## [0.32.0] + Solana version: 2.1.0 | Instruction | Stack Memory | - | diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 65ef94b6ae..a1448a115c 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-cli" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] edition = "2021" repository = "https://github.com/coral-xyz/anchor" @@ -15,9 +15,9 @@ path = "src/bin/main.rs" dev = [] [dependencies] -anchor-client = { path = "../client", version = "0.31.1" } +anchor-client = { path = "../client", version = "0.32.1" } +anchor-lang = { path = "../lang", version = "0.32.1" } anchor-lang-idl = { path = "../idl", version = "0.1.2", features = ["build", "convert"] } -anchor-lang = { path = "../lang", version = "0.31.1" } anyhow = "1.0.32" base64 = "0.21" bincode = "1.3.3" @@ -33,12 +33,12 @@ portpicker = "0.1.1" regex = "1.8.3" reqwest = { version = "0.11.4", default-features = false, features = ["multipart", "blocking", "rustls-tls"] } semver = "1.0.4" -serde = { version = "1.0.122", features = ["derive"] } +serde = { version = "1.0.130", features = ["derive"] } serde_json = "1.0" shellexpand = "2.1.0" -solana-client = "2" solana-cli-config = "2" solana-faucet = "2" +solana-rpc-client = "2" solana-sdk = "2" syn = { version = "1.0.60", features = ["full", "extra-traits"] } tar = "0.4.35" diff --git a/cli/npm-package/package.json b/cli/npm-package/package.json index 46012842ef..f2d29b9f35 100644 --- a/cli/npm-package/package.json +++ b/cli/npm-package/package.json @@ -1,6 +1,6 @@ { "name": "@coral-xyz/anchor-cli", - "version": "0.31.1", + "version": "0.32.1", "description": "Anchor CLI tool", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/cli/src/config.rs b/cli/src/config.rs index d284d5b5a6..e9b2e760c2 100644 --- a/cli/src/config.rs +++ b/cli/src/config.rs @@ -1,4 +1,4 @@ -use crate::{get_keypair, is_hidden, keys_sync}; +use crate::{get_keypair, is_hidden, keys_sync, DEFAULT_RPC_PORT}; use anchor_client::Cluster; use anchor_lang_idl::types::Idl; use anyhow::{anyhow, Context, Error, Result}; @@ -1107,9 +1107,7 @@ impl From<_Validator> for Validator { .ledger .unwrap_or_else(|| get_default_ledger_path().display().to_string()), limit_ledger_size: _validator.limit_ledger_size, - rpc_port: _validator - .rpc_port - .unwrap_or(solana_sdk::rpc_port::DEFAULT_RPC_PORT), + rpc_port: _validator.rpc_port.unwrap_or(DEFAULT_RPC_PORT), slots_per_epoch: _validator.slots_per_epoch, ticks_per_slot: _validator.ticks_per_slot, warp_slot: _validator.warp_slot, diff --git a/cli/src/lib.rs b/cli/src/lib.rs index 727a87e2f9..b8ad661b77 100644 --- a/cli/src/lib.rs +++ b/cli/src/lib.rs @@ -5,10 +5,12 @@ use crate::config::{ }; use anchor_client::Cluster; use anchor_lang::idl::{IdlAccount, IdlInstruction, ERASED_AUTHORITY}; +use anchor_lang::prelude::UpgradeableLoaderState; +use anchor_lang::solana_program::bpf_loader_upgradeable; use anchor_lang::{AccountDeserialize, AnchorDeserialize, AnchorSerialize, Discriminator}; use anchor_lang_idl::convert::convert_idl; use anchor_lang_idl::types::{Idl, IdlArrayLen, IdlDefinedFields, IdlType, IdlTypeDefTy}; -use anyhow::{anyhow, Context, Result}; +use anyhow::{anyhow, bail, Context, Result}; use checks::{check_anchor_version, check_deps, check_idl_build_feature, check_overflow}; use clap::{CommandFactory, Parser}; use dirs::home_dir; @@ -20,8 +22,7 @@ use regex::{Regex, RegexBuilder}; use rust_template::{ProgramTemplate, TestTemplate}; use semver::{Version, VersionReq}; use serde_json::{json, Map, Value as JsonValue}; -use solana_client::rpc_client::RpcClient; -use solana_sdk::bpf_loader_upgradeable::{self, UpgradeableLoaderState}; +use solana_rpc_client::rpc_client::RpcClient; use solana_sdk::commitment_config::CommitmentConfig; use solana_sdk::compute_budget::ComputeBudgetInstruction; use solana_sdk::instruction::{AccountMeta, Instruction}; @@ -40,6 +41,7 @@ use std::path::{Path, PathBuf}; use std::process::{Child, Stdio}; use std::str::FromStr; use std::string::ToString; +use std::sync::LazyLock; mod checks; pub mod config; @@ -49,6 +51,19 @@ pub mod rust_template; pub const VERSION: &str = env!("CARGO_PKG_VERSION"); pub const DOCKER_BUILDER_VERSION: &str = VERSION; +/// Default RPC port +pub const DEFAULT_RPC_PORT: u16 = 8899; + +pub static AVM_HOME: LazyLock = LazyLock::new(|| { + if let Ok(avm_home) = std::env::var("AVM_HOME") { + PathBuf::from(avm_home) + } else { + let mut user_home = dirs::home_dir().expect("Could not find home directory"); + user_home.push(".avm"); + user_home + } +}); + #[derive(Debug, Parser)] #[clap(version = VERSION)] pub struct Opts { @@ -77,7 +92,7 @@ pub enum Command { #[clap(long)] no_git: bool, /// Rust program template to use - #[clap(value_enum, short, long, default_value = "single")] + #[clap(value_enum, short, long, default_value = "multiple")] template: ProgramTemplate, /// Test template to use #[clap(value_enum, long, default_value = "mocha")] @@ -215,7 +230,7 @@ pub enum Command { /// Program name name: String, /// Rust program template to use - #[clap(value_enum, short, long, default_value = "single")] + #[clap(value_enum, short, long, default_value = "multiple")] template: ProgramTemplate, /// Create new program even if there is already one #[clap(long, action)] @@ -239,6 +254,9 @@ pub enum Command { /// If true, deploy from path target/verifiable #[clap(short, long)] verifiable: bool, + /// Don't upload IDL during deployment (IDL is uploaded by default) + #[clap(long)] + no_idl: bool, /// Arguments to pass to the underlying `solana program deploy` command. #[clap(required = false, last = true)] solana_args: Vec, @@ -655,17 +673,10 @@ fn override_toolchain(cfg_override: &ConfigOverride) -> Result Result Result<()> { + let mut cmd = std::process::Command::new("avm"); + cmd.arg("install"); + cmd.arg(version); + cmd.arg("--force"); + if verify { + cmd.arg("--verify"); + } + let status = cmd.status().context("running AVM")?; + if !status.success() { + bail!("failed to install `anchor` {version} with avm"); + } + Ok(()) +} + /// Restore toolchain to how it was before the command was run. fn restore_toolchain(restore_cbs: RestoreToolchainCallbacks) -> Result<()> { for restore_toolchain in restore_cbs { @@ -791,12 +819,14 @@ fn process_command(opts: Opts) -> Result<()> { program_name, program_keypair, verifiable, + no_idl, solana_args, } => deploy( &opts.cfg_override, program_name, program_keypair, verifiable, + no_idl, solana_args, ), Command::Expand { @@ -1889,7 +1919,13 @@ pub fn verify( command_args.extend(args); println!("Verifying program {program_id}"); - let status = std::process::Command::new("solana-verify") + let verify_path = AVM_HOME.join("bin").join("solana-verify"); + if !verify_path.exists() { + install_with_avm(env!("CARGO_PKG_VERSION"), true) + .context("installing Anchor with solana-verify")?; + } + + let status = std::process::Command::new(verify_path) .arg("verify-from-repo") .args(&command_args) .stdout(std::process::Stdio::inherit()) @@ -2822,12 +2858,10 @@ fn deserialize_idl_type_to_json( } IdlType::F64 => json!(::deserialize(data)?), IdlType::U128 => { - // TODO: Remove to_string once serde_json supports u128 deserialization - json!(::deserialize(data)?.to_string()) + json!(::deserialize(data)?) } IdlType::I128 => { - // TODO: Remove to_string once serde_json supports i128 deserialization - json!(::deserialize(data)?.to_string()) + json!(::deserialize(data)?) } IdlType::U256 => todo!("Upon completion of u256 IDL standard"), IdlType::I256 => todo!("Upon completion of i256 IDL standard"), @@ -2953,7 +2987,7 @@ fn test( // In either case, skip the deploy if the user specifies. let is_localnet = cfg.provider.cluster == Cluster::Localnet; if (!is_localnet || skip_local_validator) && !skip_deploy { - deploy(cfg_override, None, None, false, vec![])?; + deploy(cfg_override, None, None, false, true, vec![])?; } let mut is_first_suite = true; if let Some(test_script) = cfg.scripts.get_mut("test") { @@ -3370,7 +3404,7 @@ fn start_test_validator( .test_validator .as_ref() .and_then(|test| test.validator.as_ref().map(|v| v.rpc_port)) - .unwrap_or(solana_sdk::rpc_port::DEFAULT_RPC_PORT); + .unwrap_or(DEFAULT_RPC_PORT); if !portpicker::is_free(rpc_port) { return Err(anyhow!( "Your configured rpc port: {rpc_port} is already in use" @@ -3520,6 +3554,7 @@ fn deploy( program_name: Option, program_keypair: Option, verifiable: bool, + no_idl: bool, solana_args: Vec, ) -> Result<()> { // Execute the code within the workspace @@ -3572,16 +3607,71 @@ fn deploy( std::process::exit(exit.status.code().unwrap_or(1)); } + // Get the IDL filepath + let idl_filepath = Path::new("target") + .join("idl") + .join(&program.lib_name) + .with_extension("json"); + if let Some(idl) = program.idl.as_mut() { // Add program address to the IDL. idl.address = program_id.to_string(); // Persist it. - let idl_out = Path::new("target") - .join("idl") - .join(&idl.metadata.name) - .with_extension("json"); - write_idl(idl, OutFile::File(idl_out))?; + write_idl(idl, OutFile::File(idl_filepath.clone()))?; + + // Upload the IDL to the cluster by default (unless no_idl is set) + if !no_idl { + // Wait for the program to be confirmed before initializing IDL to prevent + // race condition where the program isn't yet available in validator cache + let client = create_client(&url); + let max_retries = 5; + let retry_delay = std::time::Duration::from_millis(500); + let cache_delay = std::time::Duration::from_secs(2); + + println!("Waiting for program {} to be confirmed...", program_id); + + for attempt in 0..max_retries { + if let Ok(account) = client.get_account(&program_id) { + if account.executable { + println!("Program confirmed on-chain"); + std::thread::sleep(cache_delay); + break; + } + } + + if attempt == max_retries - 1 { + return Err(anyhow!( + "Timeout waiting for program {} to be confirmed", + program_id + )); + } + + std::thread::sleep(retry_delay); + } + + // Check if IDL account already exists + let idl_address = IdlAccount::address(&program_id); + let idl_account_exists = client.get_account(&idl_address).is_ok(); + + if idl_account_exists { + // IDL account exists, upgrade it + idl_upgrade( + cfg_override, + program_id, + idl_filepath.display().to_string(), + None, + )?; + } else { + // IDL account doesn't exist, create it + idl_init( + cfg_override, + program_id, + idl_filepath.display().to_string(), + None, + )?; + } + } } } @@ -3917,14 +4007,14 @@ fn airdrop(cfg_override: &ConfigOverride) -> Result<()> { let url = cfg_override .cluster .as_ref() - .unwrap_or_else(|| &Cluster::Devnet) + .unwrap_or(&Cluster::Devnet) .url(); loop { let exit = std::process::Command::new("solana") .arg("airdrop") .arg("10") .arg("--url") - .arg(&url) + .arg(url) .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) .output() diff --git a/cli/src/rust_template.rs b/cli/src/rust_template.rs index 80b7cd8296..18a9c35709 100644 --- a/cli/src/rust_template.rs +++ b/cli/src/rust_template.rs @@ -18,13 +18,15 @@ use std::{ process::Stdio, }; +const ANCHOR_MSRV: &str = "1.89.0"; + /// Program initialization template #[derive(Clone, Debug, Default, Eq, PartialEq, Parser, ValueEnum)] pub enum ProgramTemplate { - /// Program with a single `lib.rs` file - #[default] + /// Program with a single `lib.rs` file (not recommended for production) Single, - /// Program with multiple files for instructions, state... + /// Program with multiple files for instructions, state... (recommended) + #[default] Multiple, } @@ -33,6 +35,7 @@ pub fn create_program(name: &str, template: ProgramTemplate, with_mollusk: bool) let program_path = Path::new("programs").join(name); let common_files = vec![ ("Cargo.toml".into(), workspace_manifest().into()), + ("rust-toolchain.toml".into(), rust_toolchain_toml()), ( program_path.join("Cargo.toml"), cargo_toml(name, with_mollusk), @@ -41,13 +44,28 @@ pub fn create_program(name: &str, template: ProgramTemplate, with_mollusk: bool) ]; let template_files = match template { - ProgramTemplate::Single => create_program_template_single(name, &program_path), + ProgramTemplate::Single => { + println!("Note: Using single-file template. For better code organization and maintainability, consider using --template multiple (default)."); + create_program_template_single(name, &program_path) + } ProgramTemplate::Multiple => create_program_template_multiple(name, &program_path), }; create_files(&[common_files, template_files].concat()) } +/// Helper to create a rust-toolchain.toml at the workspace root +fn rust_toolchain_toml() -> String { + format!( + r#"[toolchain] +channel = "{msrv}" +components = ["rustfmt","clippy"] +profile = "minimal" +"#, + msrv = ANCHOR_MSRV + ) +} + /// Create a program with a single `lib.rs` file. fn create_program_template_single(name: &str, program_path: &Path) -> Files { vec![( @@ -639,7 +657,9 @@ impl TestTemplate { if js { format!("{pkg_manager_exec_cmd} mocha -t 1000000 tests/") } else { - format!("{pkg_manager_exec_cmd} ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts") + format!( + r#"{pkg_manager_exec_cmd} ts-mocha -p ./tsconfig.json -t 1000000 "tests/**/*.ts""# + ) } } Self::Jest => { @@ -730,11 +750,15 @@ name = "tests" version = "0.1.0" description = "Created with Anchor" edition = "2021" +rust-version = "{msrv}" [dependencies] -anchor-client = "{VERSION}" +anchor-client = "{version}" {name} = {{ version = "0.1.0", path = "../programs/{name}" }} "#, + msrv = ANCHOR_MSRV, + version = VERSION, + name = name, ) } diff --git a/client/Cargo.toml b/client/Cargo.toml index 98cfb516b7..ac2044e935 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-client" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] edition = "2021" license = "Apache-2.0" @@ -16,13 +16,16 @@ debug = [] mock = [] [dependencies] -anchor-lang = { path = "../lang", version = "0.31.1" } +anchor-lang = { path = "../lang", version = "0.32.1" } anyhow = "1" futures = "0.3" regex = "1" serde = { version = "1", features = ["derive"] } solana-account-decoder = "2" -solana-client = "2" +solana-pubsub-client = "2" +solana-rpc-client = "2" +solana-rpc-client-api = "2" +solana-account = "2" solana-sdk = "2" thiserror = "1" tokio = { version = "1", features = ["rt", "sync"] } diff --git a/client/src/blocking.rs b/client/src/blocking.rs index 89ccb63f18..9bfbeae5bd 100644 --- a/client/src/blocking.rs +++ b/client/src/blocking.rs @@ -3,12 +3,10 @@ use crate::{ RequestBuilder, }; use anchor_lang::{prelude::Pubkey, AccountDeserialize, Discriminator}; +use solana_rpc_client::nonblocking::rpc_client::RpcClient as AsyncRpcClient; #[cfg(not(feature = "mock"))] -use solana_client::rpc_client::RpcClient; -use solana_client::{ - nonblocking::rpc_client::RpcClient as AsyncRpcClient, rpc_config::RpcSendTransactionConfig, - rpc_filter::RpcFilterType, -}; +use solana_rpc_client::rpc_client::RpcClient; +use solana_rpc_client_api::{config::RpcSendTransactionConfig, filter::RpcFilterType}; use solana_sdk::{ commitment_config::CommitmentConfig, signature::Signature, signer::Signer, transaction::Transaction, diff --git a/client/src/lib.rs b/client/src/lib.rs index 1ce7997fc4..652f96cafa 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -50,7 +50,7 @@ //! //! More examples can be found in [here]. //! -//! [here]: https://github.com/coral-xyz/anchor/tree/v0.31.1/client/example/src +//! [here]: https://github.com/coral-xyz/anchor/tree/v0.32.1/client/example/src //! //! # Features //! @@ -59,7 +59,7 @@ //! The client is blocking by default. To enable asynchronous client, add `async` feature: //! //! ```toml -//! anchor-client = { version = "0.31.1 ", features = ["async"] } +//! anchor-client = { version = "0.32.1 ", features = ["async"] } //! ```` //! //! ## `mock` @@ -67,26 +67,26 @@ //! This feature allows passing in a custom RPC client when creating program instances, which is //! useful for mocking RPC responses, e.g. via [`RpcClient::new_mock`]. //! -//! [`RpcClient::new_mock`]: https://docs.rs/solana-client/2.1.0/solana_client/rpc_client/struct.RpcClient.html#method.new_mock +//! [`RpcClient::new_mock`]: https://docs.rs/solana-rpc-client/2.3.0/solana_rpc_client/rpc_client/struct.RpcClient.html#method.new_mock use anchor_lang::solana_program::program_error::ProgramError; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::{AccountDeserialize, Discriminator, InstructionData, ToAccountMetas}; use futures::{Future, StreamExt}; use regex::Regex; +use solana_account::Account; use solana_account_decoder::UiAccountEncoding; -use solana_client::nonblocking::rpc_client::RpcClient as AsyncRpcClient; -use solana_client::rpc_config::{ - RpcAccountInfoConfig, RpcProgramAccountsConfig, RpcSendTransactionConfig, - RpcTransactionLogsConfig, RpcTransactionLogsFilter, -}; -use solana_client::rpc_filter::{Memcmp, RpcFilterType}; -use solana_client::{ - client_error::ClientError as SolanaClientError, - nonblocking::pubsub_client::{PubsubClient, PubsubClientError}, - rpc_response::{Response as RpcResponse, RpcLogsResponse}, +use solana_pubsub_client::nonblocking::pubsub_client::{PubsubClient, PubsubClientError}; +use solana_rpc_client::nonblocking::rpc_client::RpcClient as AsyncRpcClient; +use solana_rpc_client_api::{ + client_error::Error as SolanaClientError, + config::{ + RpcAccountInfoConfig, RpcProgramAccountsConfig, RpcSendTransactionConfig, + RpcTransactionLogsConfig, RpcTransactionLogsFilter, + }, + filter::{Memcmp, RpcFilterType}, + response::{Response as RpcResponse, RpcLogsResponse}, }; -use solana_sdk::account::Account; use solana_sdk::commitment_config::CommitmentConfig; use solana_sdk::hash::Hash; use solana_sdk::instruction::{AccountMeta, Instruction}; @@ -113,7 +113,6 @@ pub use cluster::Cluster; #[cfg(feature = "async")] pub use nonblocking::ThreadSafeSigner; pub use solana_account_decoder; -pub use solana_client; pub use solana_sdk; mod cluster; @@ -749,7 +748,7 @@ fn parse_logs_response( #[cfg(test)] mod tests { - use solana_client::rpc_response::RpcResponseContext; + use solana_rpc_client_api::response::RpcResponseContext; // Creating a mock struct that implements `anchor_lang::events` // for type inference in `test_logs` diff --git a/client/src/nonblocking.rs b/client/src/nonblocking.rs index 317bc0775a..a534a7eb42 100644 --- a/client/src/nonblocking.rs +++ b/client/src/nonblocking.rs @@ -3,8 +3,8 @@ use crate::{ ProgramAccountsIterator, RequestBuilder, }; use anchor_lang::{prelude::Pubkey, AccountDeserialize, Discriminator}; -use solana_client::nonblocking::rpc_client::RpcClient as AsyncRpcClient; -use solana_client::{rpc_config::RpcSendTransactionConfig, rpc_filter::RpcFilterType}; +use solana_rpc_client::nonblocking::rpc_client::RpcClient as AsyncRpcClient; +use solana_rpc_client_api::{config::RpcSendTransactionConfig, filter::RpcFilterType}; use solana_sdk::{ commitment_config::CommitmentConfig, signature::Signature, signer::Signer, transaction::Transaction, diff --git a/cspell.config.yaml b/cspell.config.yaml new file mode 100644 index 0000000000..3aea6ea089 --- /dev/null +++ b/cspell.config.yaml @@ -0,0 +1,10 @@ +--- +$schema: https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json +version: '0.2' +dictionaryDefinitions: + - name: anchor-dictionary + path: './.cspell-anchor-dictionary.txt' + addWords: true +dictionaries: + - anchor-dictionary +ignorePaths: [] diff --git a/docker/Makefile b/docker/Makefile index ee629103d5..cf6e5c6086 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -1,7 +1,7 @@ # Anchor version. -ANCHOR_CLI=v0.31.1 +ANCHOR_CLI=v0.32.1 # Solana toolchain. -SOLANA_CLI=v2.1.0 +SOLANA_CLI=v2.3.0 # Build version should match the Anchor cli version. VERSIONED_IMG_NAME=solanafoundation/anchor:$(ANCHOR_CLI) diff --git a/docs/content/docs/clients/rust.mdx b/docs/content/docs/clients/rust.mdx index d3be514b12..dc0ba0546d 100644 --- a/docs/content/docs/clients/rust.mdx +++ b/docs/content/docs/clients/rust.mdx @@ -261,8 +261,8 @@ version = "0.1.0" edition = "2021" [dependencies] -anchor-client = { version = "0.31.1", features = ["async"] } -anchor-lang = "0.31.1" +anchor-client = { version = "0.32.1", features = ["async"] } +anchor-lang = "0.32.1" anyhow = "1.0.93" tokio = { version = "1.0", features = ["full"] } ``` diff --git a/docs/content/docs/features/declare-program.mdx b/docs/content/docs/features/declare-program.mdx index e219ee951f..dff77c940f 100644 --- a/docs/content/docs/features/declare-program.mdx +++ b/docs/content/docs/features/declare-program.mdx @@ -244,7 +244,7 @@ pub mod example_cpi { pub fn initialize_cpi(ctx: Context) -> Result<()> { // Create CPI context for initialize let cpi_ctx = CpiContext::new( - ctx.accounts.example_program.to_account_info(), + ctx.accounts.example_program.key(), Initialize { payer: ctx.accounts.payer.to_account_info(), counter: ctx.accounts.counter.to_account_info(), @@ -260,7 +260,7 @@ pub mod example_cpi { pub fn increment_cpi(ctx: Context) -> Result<()> { // Create CPI context for increment let cpi_ctx = CpiContext::new( - ctx.accounts.example_program.to_account_info(), + ctx.accounts.example_program.key(), Increment { counter: ctx.accounts.counter.to_account_info(), }, @@ -404,7 +404,7 @@ Use the CPI module to invoke the program's instructions: pub fn initialize_cpi(ctx: Context) -> Result<()> { // Create CPI context for initialize let cpi_ctx = CpiContext::new( - ctx.accounts.example_program.to_account_info(), + ctx.accounts.example_program.key(), Initialize { payer: ctx.accounts.payer.to_account_info(), counter: ctx.accounts.counter.to_account_info(), @@ -423,7 +423,7 @@ pub fn initialize_cpi(ctx: Context) -> Result<()> { pub fn increment_cpi(ctx: Context) -> Result<()> { // Create CPI context for increment let cpi_ctx = CpiContext::new( - ctx.accounts.example_program.to_account_info(), + ctx.accounts.example_program.key(), Increment { counter: ctx.accounts.counter.to_account_info(), }, @@ -679,8 +679,8 @@ version = "0.1.0" edition = "2021" [dependencies] -anchor-client = { version = "0.31.1", features = ["async"] } -anchor-lang = "0.31.1" +anchor-client = { version = "0.32.1", features = ["async"] } +anchor-lang = "0.32.1" anyhow = "1.0.93" tokio = { version = "1.0", features = ["full"] } ``` diff --git a/docs/content/docs/features/events.mdx b/docs/content/docs/features/events.mdx index 6638d7d508..befc19c24d 100644 --- a/docs/content/docs/features/events.mdx +++ b/docs/content/docs/features/events.mdx @@ -118,6 +118,8 @@ describe("event", () => { + + The following is the output of the program logs. The event data is base64 encoded as `Zb1eU3aiYdwOAAAASGVsbG8sIFNvbGFuYSE=`. @@ -130,6 +132,8 @@ Log Messages: Program 8T7MsCZyzxboviPJg5Rc7d8iqEcDReYR2pkQKrmbg7dy success ``` + + Ensure the RPC provider you use does not truncate the program logs from the transaction data. @@ -148,7 +152,7 @@ program's `Cargo.toml`: ```toml title="Cargo.toml" [dependencies] -anchor-lang = { version = "0.31.1", features = ["event-cpi"] } +anchor-lang = { version = "0.32.1", features = ["event-cpi"] } ``` Example usage: @@ -273,6 +277,8 @@ In the example transaction below, the encoded event data is `"data": "6AJcBqZP8afBKheoif1oA6UAiLAcqYr2RaR33pFnEY1taQp"` in the `innerInstructions` array. + + ```shell title="Transaction Data" { "blockTime": 1735854530, @@ -359,6 +365,8 @@ In the example transaction below, the encoded event data is } ``` + + Currently, event data emitted through CPIs cannot be directly subscribed to. To access this data, you must fetch the complete transaction data and manually diff --git a/docs/content/docs/features/zero-copy.mdx b/docs/content/docs/features/zero-copy.mdx index a57a52bc6e..32ee0fd2a9 100644 --- a/docs/content/docs/features/zero-copy.mdx +++ b/docs/content/docs/features/zero-copy.mdx @@ -18,7 +18,7 @@ zero-copy types. ```toml title="Cargo.toml" [dependencies] bytemuck = { version = "1.20.0", features = ["min_const_generics"] } -anchor-lang = "0.31.1" +anchor-lang = "0.32.1" ``` ### Define a Zero Copy Account diff --git a/docs/content/docs/installation.mdx b/docs/content/docs/installation.mdx index 873a36c53f..4956db6e53 100644 --- a/docs/content/docs/installation.mdx +++ b/docs/content/docs/installation.mdx @@ -30,7 +30,7 @@ After installation, you should see output similar to the following: Installed Versions: Rust: rustc 1.85.0 (4d91de4e4 2025-02-17) Solana CLI: solana-cli 2.1.15 (src:53545685; feat:3271415109, client:Agave) -Anchor CLI: anchor-cli 0.31.1 +Anchor CLI: anchor-cli 0.32.1 Node.js: v23.9.0 Yarn: 1.22.1 @@ -355,8 +355,8 @@ Alternatively, you can install a specific version of Anchor CLI by specifying the version number: ```shell title="Terminal" -avm install 0.31.1 -avm use 0.31.1 +avm install 0.32.1 +avm use 0.32.1 ``` @@ -365,7 +365,7 @@ Don't forget to run the `avm use` command to declare which Anchor CLI version should be used on your system. - If you installed the `latest` version, run `avm use latest`. -- If you installed the version `0.31.1`, run `avm use 0.31.1`. +- If you installed the version `0.32.1`, run `avm use 0.32.1`. @@ -376,7 +376,7 @@ should be used on your system. Install a specific version of the Anchor CLI with the following command: ```shell title="Terminal" -cargo install --git https://github.com/coral-xyz/anchor --tag v0.31.1 anchor-cli +cargo install --git https://github.com/coral-xyz/anchor --tag v0.32.1 anchor-cli ``` @@ -391,7 +391,7 @@ anchor --version You should see output similar to the following: ``` -anchor-cli 0.31.1 +anchor-cli 0.32.1 ``` @@ -614,7 +614,7 @@ Generating a new keypair For added security, enter a BIP39 passphrase -NOTE! This passphrase improves security of the recovery seed phrae NOT the +NOTE! This passphrase improves security of the recovery seed phrase NOT the keypair file itself, which is stored as insecure plain text BIP39 Passphrase (empty for none): @@ -727,7 +727,16 @@ anchor init my-project ``` This command creates a new directory with the project name and initializes a new -Anchor project with a basic Rust program and TypeScript test template. +Anchor project with a modular Rust program structure and TypeScript test +template. + + + +By default, Anchor uses a **modular structure** with separate files for +instructions, state, constants, and errors. This organization improves code +maintainability and is recommended for production code. + + Navigate to the project directory: diff --git a/docs/content/docs/quickstart/local.mdx b/docs/content/docs/quickstart/local.mdx index fe39de6a5a..004dd71476 100644 --- a/docs/content/docs/quickstart/local.mdx +++ b/docs/content/docs/quickstart/local.mdx @@ -37,7 +37,7 @@ anchor --version Expected output: ```shell filename="Terminal" -anchor-cli 0.31.1 +anchor-cli 0.32.1 ``` ## Getting Started @@ -65,10 +65,17 @@ Navigate to the new project directory and open it in your code editor. cd my-project ``` -The default Anchor program is located at `/programs/my-project/src/lib.rs`. +By default, Anchor generates a modular program structure to promote better code +organization and maintainability. The program files are organized as follows: + +- `/programs/my-project/src/lib.rs` - Main entry point with module declarations +- `/programs/my-project/src/instructions/` - Instruction handlers +- `/programs/my-project/src/state/` - Account structures and state +- `/programs/my-project/src/constants.rs` - Program constants +- `/programs/my-project/src/error.rs` - Custom error definitions - + The value in the `declare_id!` macro is the program ID, a unique identifier for your program. @@ -76,9 +83,20 @@ your program. By default, it is the public key of the keypair generated in `/target/deploy/my_project-keypair.json`. +**Main entry point** (`lib.rs`): + ```rust filename="lib.rs" +pub mod constants; +pub mod error; +pub mod instructions; +pub mod state; + use anchor_lang::prelude::*; +pub use constants::*; +pub use instructions::*; +pub use state::*; + declare_id!("3ynNB373Q3VAzKp7m4x238po36hjAGFXFJB4ybN2iTyg"); #[program] @@ -86,15 +104,34 @@ pub mod my_project { use super::*; pub fn initialize(ctx: Context) -> Result<()> { - msg!("Greetings from: {:?}", ctx.program_id); - Ok(()) + initialize::handler(ctx) } } +``` + +**Instruction handler** (`instructions/initialize.rs`): + +```rust filename="instructions/initialize.rs" +use anchor_lang::prelude::*; #[derive(Accounts)] pub struct Initialize {} + +pub fn handler(ctx: Context) -> Result<()> { + msg!("Greetings from: {:?}", ctx.program_id); + Ok(()) +} ``` + + +For simpler projects or quick prototyping, you can use the single-file template +with `anchor init --template single`. However, the modular structure is +recommended for production code as it improves code organization, readability, +and maintainability. + + + @@ -344,6 +381,8 @@ new program. Below is an overview of default file structure in an Anchor workspace: + + @@ -354,9 +393,17 @@ Below is an overview of default file structure in an Anchor workspace: - - + + + + + + + + + + @@ -378,11 +425,24 @@ Below is an overview of default file structure in an Anchor workspace: + + ### Programs Folder The `/programs` directory contains your project's Anchor programs. A single workspace can contain multiple programs. +By default, programs are organized with a modular structure: + +- `lib.rs` - Main entry point that declares and exports modules +- `instructions/` - Directory containing instruction handler functions +- `state/` - Directory for account structures and state definitions +- `constants.rs` - Program-wide constants +- `error.rs` - Custom error codes + +This modular organization makes it easier to navigate and maintain your code, +especially as your program grows in complexity. + ### Tests Folder The `/tests` directory contains test files for your project. A default test file diff --git a/docs/content/docs/references/account-constraints.mdx b/docs/content/docs/references/account-constraints.mdx index b7e6ecc38b..5f12ca4b9b 100644 --- a/docs/content/docs/references/account-constraints.mdx +++ b/docs/content/docs/references/account-constraints.mdx @@ -289,6 +289,72 @@ Examples: [Github](https://github.com/solana-developers/anchor-examples/tree/mai #[account(*::token_program = )] ``` +## Token Extensions Constraints + +### `#[account(extensions::close_authority::*)]` + +Description: Create or validate close authority extension on the mint account. + +```rust title="attribute" +#[account( + extensions::close_authority::authority = +)] +``` + +### `#[account(extensions::permanent_delegate::*)]` + +Description: Create or validate permanent delegate extension on the mint account. + +```rust title="attribute" +#[account( + extensions::permanent_delegate::delegate = +)] +``` + +### `#[account(extensions::transfer_hook::*)]` + +Description: Create or validate transfer hook extension on the mint account. + +```rust title="attribute" +#[account( + extensions::transfer_hook::authority = , + extensions::transfer_hook::program_id = +)] +``` + +### `#[account(extensions::group_pointer::*)]` + +Description: Create or validate group pointer extension on the mint account. + +```rust title="attribute" +#[account( + extensions::group_pointer::authority = , + extensions::group_pointer::group_address = +)] +``` + +### `#[account(extensions::group_member_pointer::*)]` + +Description: Create or validate group member pointer extension on the mint account. + +```rust title="attribute" +#[account( + extensions::group_member_pointer::authority = , + extensions::group_member_pointer::member_address = +)] +``` + +### `#[account(extensions::metadata_pointer::*)]` + +Description: Create or validate metadata pointer extension on the mint account. + +```rust title="attribute" +#[account( + extensions::metadata_pointer::authority = , + extensions::metadata_pointer::metadata_address = +)] +``` + ## Instruction Attribute ### `#[instruction(...)]` diff --git a/docs/content/docs/references/anchor-toml.mdx b/docs/content/docs/references/anchor-toml.mdx index bf8bd1a244..8f5b89476c 100644 --- a/docs/content/docs/references/anchor-toml.mdx +++ b/docs/content/docs/references/anchor-toml.mdx @@ -218,8 +218,8 @@ Override toolchain data in the workspace similar to ```toml [toolchain] -anchor_version = "0.31.1" # `anchor-cli` version to use(requires `avm`) -solana_version = "2.1.21" # Solana version to use(applies to all Solana tools) +anchor_version = "0.32.1" # `anchor-cli` version to use(requires `avm`) +solana_version = "2.3.0" # Solana version to use(applies to all Solana tools) package_manager = "yarn" # JS package manager to use ``` diff --git a/docs/content/docs/references/cli.mdx b/docs/content/docs/references/cli.mdx index ab3f3a53a8..fd11aba138 100644 --- a/docs/content/docs/references/cli.mdx +++ b/docs/content/docs/references/cli.mdx @@ -218,7 +218,7 @@ Sets a new authority on the IDL account. Both the `new-authority` and ## Init ```shell -anchor init +anchor init ``` Initializes a project workspace with the following structure. @@ -231,6 +231,21 @@ Initializes a project workspace with the following structure. - `tests/`: Directory for JavaScript integration tests. - `migrations/deploy.js`: Deploy script. +By default, programs are initialized with a **modular structure** (multiple +files) to promote better code organization. This is the recommended approach for +production code. + +**Template Options:** + +```shell +anchor init --template multiple # Default: Modular structure (recommended) +anchor init --template single # Single lib.rs file (for prototyping) +``` + +The modular template organizes code into separate files for instructions, state, +constants, and errors, making it easier to navigate and maintain as your program +grows. + ## Keys Program keypair commands. @@ -284,6 +299,14 @@ anchor new Creates a new program in the workspace's `programs/` directory initialized with boilerplate. +By default, uses the **modular structure** template (recommended). You can +specify a different template with the `--template` flag: + +```shell +anchor new --template multiple # Default: Modular (recommended) +anchor new --template single # Single file (for prototyping) +``` + ## Shell ```shell diff --git a/docs/content/docs/references/verifiable-builds.mdx b/docs/content/docs/references/verifiable-builds.mdx index 303a22b931..6d7a667bf3 100644 --- a/docs/content/docs/references/verifiable-builds.mdx +++ b/docs/content/docs/references/verifiable-builds.mdx @@ -39,10 +39,10 @@ If the program has an IDL, it will also check the IDL deployed on chain matches. A docker image for each version of Anchor is published on [Docker Hub](https://hub.docker.com/r/solanafoundation/anchor). They are tagged in the form `solanafoundation/anchor:`. For example, to get the image -for Anchor `v0.31.1` one can run +for Anchor `v0.32.1` one can run ```shell -docker pull solanafoundation/anchor:v0.31.1 +docker pull solanafoundation/anchor:v0.32.1 ``` ## Removing an Image diff --git a/docs/content/docs/testing/mollusk.mdx b/docs/content/docs/testing/mollusk.mdx index b62026e6aa..db7c9fd097 100644 --- a/docs/content/docs/testing/mollusk.mdx +++ b/docs/content/docs/testing/mollusk.mdx @@ -52,7 +52,8 @@ checks on the result. In both cases, the result is also returned. ```rust use { mollusk_svm::Mollusk, - solana_sdk::{account::Account, instruction::{AccountMeta, Instruction}, pubkey::Pubkey}, + solana_account::Account, + solana_sdk::{instruction::{AccountMeta, Instruction}, pubkey::Pubkey}, }; let program_id = Pubkey::new_unique(); @@ -85,8 +86,8 @@ To apply checks via `process_and_validate_instruction`, developers can use the ```rust use { mollusk_svm::{Mollusk, result::Check}, + solana_account::Account, solana_sdk::{ - account::Account, instruction::{AccountMeta, Instruction}, pubkey::Pubkey system_instruction, @@ -145,7 +146,8 @@ the final result is also returned. ```rust use { mollusk_svm::Mollusk, - solana_sdk::{account::Account, pubkey::Pubkey, system_instruction}, + solana_account::Account, + solana_sdk::{pubkey::Pubkey, system_instruction}, }; let mollusk = Mollusk::default(); @@ -186,7 +188,8 @@ returned by the method is the final result of the last instruction in the chain. ```rust use { mollusk_svm::{Mollusk, result::Check}, - solana_sdk::{account::Account, pubkey::Pubkey, system_instruction}, + solana_account::Account, + solana_sdk::{pubkey::Pubkey, system_instruction}, }; let mollusk = Mollusk::default(); diff --git a/docs/content/docs/tokens/basics/create-token-account.mdx b/docs/content/docs/tokens/basics/create-token-account.mdx index 5e43e60769..efee308323 100644 --- a/docs/content/docs/tokens/basics/create-token-account.mdx +++ b/docs/content/docs/tokens/basics/create-token-account.mdx @@ -309,7 +309,7 @@ To use the `init_if_needed` constraint, enable the `init-if-needed` feature in ```toml title="Cargo.toml" [dependencies] -anchor-lang = { version = "0.31.1", features = ["init-if-needed"] } +anchor-lang = { version = "0.32.1", features = ["init-if-needed"] } ``` ## Examples diff --git a/docs/content/docs/tokens/basics/mint-tokens.mdx b/docs/content/docs/tokens/basics/mint-tokens.mdx index 2521347025..40f2b98cb3 100644 --- a/docs/content/docs/tokens/basics/mint-tokens.mdx +++ b/docs/content/docs/tokens/basics/mint-tokens.mdx @@ -71,8 +71,8 @@ pub mod token_example { to: ctx.accounts.token_account.to_account_info(), authority: ctx.accounts.signer.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_context = CpiContext::new(cpi_program, cpi_accounts); + let cpi_program_id = ctx.accounts.token_program.key(); + let cpi_context = CpiContext::new(cpi_program_id, cpi_accounts); token_interface::mint_to(cpi_context, amount)?; Ok(()) } @@ -124,10 +124,10 @@ pub fn mint_tokens(ctx: Context, amount: u64) -> Result<()> { }; // The program being invoked in the CPI - let cpi_program = ctx.accounts.token_program.to_account_info(); + let cpi_program_id = ctx.accounts.token_program.key(); // Combine the accounts and program into a "CpiContext" - let cpi_context = CpiContext::new(cpi_program, cpi_accounts); + let cpi_context = CpiContext::new(cpi_program_id, cpi_accounts); // Make CPI to mint_to instruction on the token program token_interface::mint_to(cpi_context, amount)?; @@ -172,8 +172,8 @@ pub mod token_example { to: ctx.accounts.token_account.to_account_info(), authority: ctx.accounts.mint.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_context = CpiContext::new(cpi_program, cpi_accounts).with_signer(signer_seeds); + let cpi_program_id = ctx.accounts.token_program.key(); + let cpi_context = CpiContext::new(cpi_program_id, cpi_accounts).with_signer(signer_seeds); // [!code highlight] token_interface::mint_to(cpi_context, amount)?; Ok(()) diff --git a/docs/content/docs/tokens/index.mdx b/docs/content/docs/tokens/index.mdx index 077dd25d9c..481b8e6b85 100644 --- a/docs/content/docs/tokens/index.mdx +++ b/docs/content/docs/tokens/index.mdx @@ -40,8 +40,8 @@ idl-build = [ ] [dependencies] -anchor-lang = "0.31.1" -anchor-spl = "0.31.1" +anchor-lang = "0.32.1" +anchor-spl = "0.32.1" ``` ### Core Modules diff --git a/docs/content/docs/updates/changelog.mdx b/docs/content/docs/updates/changelog.mdx index 04ab4a5298..60f23453c0 100644 --- a/docs/content/docs/updates/changelog.mdx +++ b/docs/content/docs/updates/changelog.mdx @@ -9,6 +9,75 @@ patch version will be incremented for features. --- +## [0.32.0] - 2025-10-08 + +### Features + +- lang: Add `#[error]` attribute to `declare_program!` +([#3757](https://github.com/coral-xyz/anchor/pull/3757)). +- cli: Replace `anchor verify` to use `solana-verify` under the hood, adding +automatic installation via AVM, local path support, and future-proof argument +passing ([#3768](https://github.com/solana-foundation/anchor/pull/3768)). +- lang: Replace `solana-program` crate with smaller crates +([#3819](https://github.com/solana-foundation/anchor/pull/3819)). +- cli: Make `anchor deploy` to upload the IDL to the cluster by default unless +`--no-idl` is passed +([#3863](https://github.com/solana-foundation/anchor/pull/3863)). +- lang: Use `solana-invoke` instead of `solana_cpi::invoke` +([#3900](https://github.com/solana-foundation/anchor/pull/3900)). +- client: remove `solana-client` from `anchor-client` and `cli` +([#3877](https://github.com/solana-foundation/anchor/pull/3877)). +- idl: Build IDL on stable Rustc +([#3842](https://github.com/solana-foundation/anchor/pull/3842)). +- lang: Add custom error when using init on SystemAccount +([#3828](https://github.com/solana-foundation/anchor/pull/3828)). +- lang: Add `errors` to `declare_program` +([#3757](https://github.com/solana-foundation/anchor/pull/3757)). +- ts: Add support for Bun as a package manager +([#3586](https://github.com/solana-foundation/anchor/pull/3586)). +- lang: Add support for tuple types in space calculation +([#3744](https://github.com/solana-foundation/anchor/pull/3744)). +- lang: Add missing pubkey const generation +([#3677](https://github.com/solana-foundation/anchor/pull/3677)). +- cli: Add the Minimum Supported Rust Version (MSRV) to the Rust template, +since an arbitrary compiler version isn't supported +([#3873](https://github.com/solana-foundation/anchor/pull/3873)). + +### Fixes + +- docker: Upgrade `node` to 20.18.0 LTS +([#3687](https://github.com/solana-foundation/anchor/pull/3687)). +- cli: Fix using deprecated commitment `recent` in migration scripts +([#3725](https://github.com/coral-xyz/anchor/pull/3725)). +- cli: Fix not respecting `provider.cluster` in `keys sync` command +([#3761](https://github.com/coral-xyz/anchor/pull/3761)). +- lang: Fix deprecated `realloc`, `store_current_index` and clippy warnings +([#3819](https://github.com/solana-foundation/anchor/pull/3819)). +- avm: fix AVM instability with solana-verify +([#3867](https://github.com/solana-foundation/anchor/pull/3867)). +- avm: update AVM to only use non-draft +releases([#3931](https://github.com/solana-foundation/anchor/pull/3931)). +- lang: update bytemuck +([#3858](https://github.com/solana-foundation/anchor/pull/3858)). +- idl: disable Locale in camelCase +([#3845](https://github.com/solana-foundation/anchor/pull/3845)). +- ts: Remove event parsing panic +([#3657](https://github.com/solana-foundation/anchor/pull/3657)). + +### Breaking + +- spl: Update SPL dependencies to latest compatible versions +([#3860](https://github.com/solana-foundation/anchor/pull/3860)). +- cli: Replace `anchor verify` to use `solana-verify` under the hood, adding +automatic installation via AVM, local path support, and future-proof argument +passing ([#3768](https://github.com/solana-foundation/anchor/pull/3768)). +- cli: Upload IDL by default with an option to skip +((#3863)[https://github.com/solana-foundation/anchor/pull/3863]). +- lang: remove Solang +([#3824](https://github.com/solana-foundation/anchor/pull/3824)). +- cli: remove `anchor publish` command +([#3795](https://github.com/solana-foundation/anchor/pull/3795)). + ## [0.31.1] - 2025-04-19 ### Features diff --git a/docs/content/docs/updates/release-notes/0-31-0.mdx b/docs/content/docs/updates/release-notes/0-31-0.mdx index 148ef98adf..3317dec46f 100644 --- a/docs/content/docs/updates/release-notes/0-31-0.mdx +++ b/docs/content/docs/updates/release-notes/0-31-0.mdx @@ -457,7 +457,7 @@ The following issues with the IDL generation have been fixed: - A bug where using tuple parameters in instructions would result in an incorrect IDL ([#3294](https://github.com/coral-xyz/anchor/pull/3294)) - A bug where doc comments could trigger false-positives during module paths - convertion ([#3359](https://github.com/coral-xyz/anchor/pull/3359)) + conversion ([#3359](https://github.com/coral-xyz/anchor/pull/3359)) - A bug where the generated IDL only has partial resolution information ([#3474](https://github.com/coral-xyz/anchor/pull/3474)) - Being unable to use constant identifiers as generic arguments diff --git a/docs/content/docs/updates/release-notes/0-32-0.mdx b/docs/content/docs/updates/release-notes/0-32-0.mdx new file mode 100644 index 0000000000..a2a996e472 --- /dev/null +++ b/docs/content/docs/updates/release-notes/0-32-0.mdx @@ -0,0 +1,154 @@ +--- +title: 0.32.0 +description: Anchor - Release Notes 0.32.0 +--- + +`0.32.0` is the current last planned upgrade before a number of breaking changes +to stabilize Anchor `1.0`. We cover the most important changes below, but be +sure to check out the full list of changes in the +[CHANGELOG](https://github.com/solana-foundation/anchor/blob/v0.32.0/CHANGELOG.md#0320---2025-10-08). + +--- + +## How to upgrade + +1. Update `anchor-cli`: + + ```sh + avm install 0.32.0 + ``` + +2. Update Anchor crate(s) to `0.32.0`. + +3. Update TS package(s) to `0.32.0`. + +## Recommended Solana Version + +The recommended Solana version is `2.3.0`. + +You can install the newer tooling by running: + +``` +sh -c "$(curl -sSfL https://release.anza.xyz/v2.3.0/install)" +``` + +## CLI + +### `anchor verify` now uses `solana-verify` to verify builds + +Anchor versions before `0.32.0` used a docker image `solanafoundation/anchor` to +create verifiable builds. This version replaces the verifiable builds with +[`solana-verify`](https://github.com/Ellipsis-Labs/solana-verifiable-build) +under the hood. + +In order to create verifiable builds with this you still use `anchor verify`. +If someone tries to verify a build older than `0.32.0` with the newest CLI, the +expectation is that the verification will fail given the change in how builds +are verified. + +### IDL is automatically uploaded by default on deployment + +In `0.32.0`, the IDL is now uploaded whenever you use `anchor deploy` by +default. If you still wish to deploy an anchor program without uploading the new +IDL, use `anchor deploy --no-idl`. + +### Add MSRV to the Rust template + +Rust `1.89.0` or higher is now required to build Anchor IDLs as previous +versions of Rust do not have the stabilized +[`Span::local_file`](https://doc.rust-lang.org/beta/proc_macro/struct.Span.html#method.local_file). + +You can update your local Rust compiler by running: + +``` +rustup update +``` + +and confirm your local version of Rust with: + +``` +rustc --version +``` + +**Note:** This is different that the forked rustc version that the solana +toolsuite uses for compiling Solana programs. + +## IDL + +### IDL building is now stabilized. + +WIth the stabilization of +[`Span::local_file`](https://doc.rust-lang.org/beta/proc_macro/struct.Span.html#method.local_file), +we can now build IDLs using the current Rust compiler instead of nightly. This +should avoid issues in the future such as the nightly build failing on `0.31.0` +and lower with the following issue: + +``` +no method named source_file found for struct proc_macro2::Span in the current +scope +``` + +## Lang + +### Improved error messaging when trying to create `SystemAccount` + +When you tried to `init` a `SystemAccount`, you previously got a rather +unhelpful error: + +``` +error[E0425]: cannot find crate `try_from_unchecked` in the list of imported crates +error[E0425]: cannot find crate `try_from` in the list of imported crates +``` + +Now the new error is a bit more helpful on pointing you in the right direction +at compile time: + +``` +"Cannot use `init` on a `SystemAccount`. +The `SystemAccount` type represents an already-existing account +owned by the system program and cannot be initialized. +If you need to create a new account, use a more specific account type +or `UncheckedAccount` and perform manual initialization instead." +``` + +### Use `solana-invoke` instead of `solana_cpi::invoke` for CPI + +`solana_cpi::invoke` from `solana-program` is generally inefficient on consuming +CUs. With the replacement of `solana_cpi::invoke`, we've found an average of 5% +CUs saved across the board when using CPI in your Anchor program. + +### Solang is no longer supported + +Developers wishing to use Solang templates with Anchor now have to build using +[Solang's older tooling](https://github.com/hyperledger-solang/solang?tab=readme-ov-file). + +## Typescript + +### Remove event parsing panic issues + +Events previously could be sent maliciously causing anyone using the event +parser to panic. The regex has since been updated to avoid these panics and +improve the stability of the parser. + +### Added support for `bun` as a package manager + +`bun` is rising in popularity and has been added as an optional package in your +`Anchor.toml`: + +```toml +[toolchain] +package_manager = "bun" +``` + +or when creating a new workspace: + +``` +anchor init --package-manager bun +``` + +Supported values: `npm`, `yarn`, `pnpm`, `bun` (default: `yarn`) + +--- + +See the full list of notable changes in the +[CHANGELOG](https://github.com/solana-foundation/anchor/blob/v0.32.0/CHANGELOG.md#0320---2025-10-08). diff --git a/docs/content/docs/updates/release-notes/0-32-1.mdx b/docs/content/docs/updates/release-notes/0-32-1.mdx new file mode 100644 index 0000000000..5e1f9c152e --- /dev/null +++ b/docs/content/docs/updates/release-notes/0-32-1.mdx @@ -0,0 +1,54 @@ +--- +title: 0.32.1 +description: Anchor - Release Notes 0.32.1 +--- + +`0.32.1` is a patch to fix a couple issues that showed up in `0.32.0`, most +notably a race condition when deploying programs. We cover the most important +changes below, but be sure to check out the full list of changes in the +[CHANGELOG](https://github.com/solana-foundation/anchor/blob/v0.32.1/CHANGELOG.md#0320---2025-10-09). + +--- + +## How to upgrade + +1. Update `anchor-cli`: + + ```sh + avm install 0.32.1 + ``` + +2. Update Anchor crate(s) to `0.32.1`. + +3. Update TS package(s) to `0.32.1`. + +## Recommended Solana Version + +The recommended Solana version is `2.3.0`. + +You can install the newer tooling by running: + +``` +sh -c "$(curl -sSfL https://release.anza.xyz/v2.3.0/install)" +``` + +## CLI + +### Fix `anchor deploy` race condition + +With the addition of deploying the IDL on every program deploy by default, a +race condition was introduced that was not found in initial testing. We have +added a wait until the program is completely available before continuing the +deployment of the IDL. + +## lang + +### Fix warnings and prelude solana-program inclusion + +There was still a warning leftover for deprecation of realloc in 0.32.0. This +has been remediated in this release. + +--- + +See the full list of notable changes in the +[CHANGELOG](https://github.com/solana-foundation/anchor/blob/v0.32.0/CHANGELOG.md#0320---2025-10-09). diff --git a/docs/content/docs/updates/release-notes/meta.json b/docs/content/docs/updates/release-notes/meta.json index cca18695cf..69b9f82a3f 100644 --- a/docs/content/docs/updates/release-notes/meta.json +++ b/docs/content/docs/updates/release-notes/meta.json @@ -1,4 +1,4 @@ { "title": "Release Notes", - "pages": ["0-31-1", "0-31-0", "0-30-1", "0-30-0", "0-29-0"] + "pages": ["0-32-1", "0-32-0", "0-31-1", "0-31-0", "0-30-1", "0-30-0", "0-29-0"] } diff --git a/examples/tutorial/basic-0/package.json b/examples/tutorial/basic-0/package.json index dec910b6ee..c6be044236 100644 --- a/examples/tutorial/basic-0/package.json +++ b/examples/tutorial/basic-0/package.json @@ -1,6 +1,6 @@ { "name": "basic-0", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/examples/tutorial/basic-1/package.json b/examples/tutorial/basic-1/package.json index cbcf0974d3..c476cc5436 100644 --- a/examples/tutorial/basic-1/package.json +++ b/examples/tutorial/basic-1/package.json @@ -1,6 +1,6 @@ { "name": "basic-1", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/examples/tutorial/basic-2/package.json b/examples/tutorial/basic-2/package.json index feaa97773f..e980f1f304 100644 --- a/examples/tutorial/basic-2/package.json +++ b/examples/tutorial/basic-2/package.json @@ -1,6 +1,6 @@ { "name": "basic-2", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/examples/tutorial/basic-3/package.json b/examples/tutorial/basic-3/package.json index f3a150e549..33692bddf6 100644 --- a/examples/tutorial/basic-3/package.json +++ b/examples/tutorial/basic-3/package.json @@ -1,6 +1,6 @@ { "name": "basic-3", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/examples/tutorial/basic-3/programs/puppet-master/src/lib.rs b/examples/tutorial/basic-3/programs/puppet-master/src/lib.rs index 29d32bac7b..8f67bbfba1 100644 --- a/examples/tutorial/basic-3/programs/puppet-master/src/lib.rs +++ b/examples/tutorial/basic-3/programs/puppet-master/src/lib.rs @@ -10,11 +10,11 @@ declare_id!("HmbTLCmaGvZhKnn1Zfa1JVnp7vkMV4DYVxPLWBVoN65L"); mod puppet_master { use super::*; pub fn pull_strings(ctx: Context, data: u64) -> anchor_lang::Result<()> { - let cpi_program = ctx.accounts.puppet_program.to_account_info(); + let cpi_program_id = ctx.accounts.puppet_program.key(); let cpi_accounts = SetData { puppet: ctx.accounts.puppet.to_account_info(), }; - let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts); + let cpi_ctx = CpiContext::new(cpi_program_id, cpi_accounts); puppet::cpi::set_data(cpi_ctx, data) } } diff --git a/examples/tutorial/basic-4/package.json b/examples/tutorial/basic-4/package.json index 5e69c0d0b1..a5f9b85d9c 100644 --- a/examples/tutorial/basic-4/package.json +++ b/examples/tutorial/basic-4/package.json @@ -1,6 +1,6 @@ { "name": "basic-4", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/examples/tutorial/basic-5/package.json b/examples/tutorial/basic-5/package.json index f3bec52bbc..3e9a57473b 100644 --- a/examples/tutorial/basic-5/package.json +++ b/examples/tutorial/basic-5/package.json @@ -1,6 +1,6 @@ { "name": "basic-5", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/idl/Cargo.toml b/idl/Cargo.toml index d9bcadaa92..3d1c729362 100644 --- a/idl/Cargo.toml +++ b/idl/Cargo.toml @@ -18,12 +18,12 @@ convert = ["heck", "sha2"] [dependencies] anchor-lang-idl-spec = { path = "./spec", version = "0.1.0" } anyhow = "1" -serde = { version = "1", features = ["derive"] } -serde_json = "1" - -# `build` feature only -regex = { version = "1", optional = true } # `convert` feature only heck = { version = "0.3", optional = true } + +# `build` feature only +regex = { version = "1", optional = true } +serde = { version = "1", features = ["derive"] } +serde_json = "1" sha2 = { version = "0.10", optional = true } diff --git a/idl/src/convert.rs b/idl/src/convert.rs index 32c3b7c9d5..81ea232d7f 100644 --- a/idl/src/convert.rs +++ b/idl/src/convert.rs @@ -63,6 +63,7 @@ mod legacy { pub value: String, } + #[allow(dead_code)] #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct IdlState { #[serde(rename = "struct")] diff --git a/lang/Cargo.toml b/lang/Cargo.toml index 1a6e38a58d..bfe3f18b39 100644 --- a/lang/Cargo.toml +++ b/lang/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-lang" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" edition = "2021" @@ -20,10 +20,10 @@ anchor-debug = [ "anchor-attribute-error/anchor-debug", "anchor-attribute-event/anchor-debug", "anchor-attribute-program/anchor-debug", - "anchor-derive-accounts/anchor-debug" + "anchor-derive-accounts/anchor-debug", ] derive = [] -event-cpi = ["anchor-attribute-event/event-cpi"] +event-cpi = ["anchor-attribute-event/event-cpi","anchor-attribute-account/event-cpi"] idl-build = [ "anchor-attribute-account/idl-build", "anchor-attribute-constant/idl-build", @@ -39,15 +39,15 @@ interface-instructions = ["anchor-attribute-program/interface-instructions"] lazy-account = ["anchor-attribute-account/lazy-account", "anchor-derive-serde/lazy-account"] [dependencies] -anchor-attribute-access-control = { path = "./attribute/access-control", version = "0.31.1" } -anchor-attribute-account = { path = "./attribute/account", version = "0.31.1" } -anchor-attribute-constant = { path = "./attribute/constant", version = "0.31.1" } -anchor-attribute-error = { path = "./attribute/error", version = "0.31.1" } -anchor-attribute-event = { path = "./attribute/event", version = "0.31.1" } -anchor-attribute-program = { path = "./attribute/program", version = "0.31.1" } -anchor-derive-accounts = { path = "./derive/accounts", version = "0.31.1" } -anchor-derive-serde = { path = "./derive/serde", version = "0.31.1" } -anchor-derive-space = { path = "./derive/space", version = "0.31.1" } +anchor-attribute-access-control = { path = "./attribute/access-control", version = "0.32.1" } +anchor-attribute-account = { path = "./attribute/account", version = "0.32.1" } +anchor-attribute-constant = { path = "./attribute/constant", version = "0.32.1" } +anchor-attribute-error = { path = "./attribute/error", version = "0.32.1" } +anchor-attribute-event = { path = "./attribute/event", version = "0.32.1" } +anchor-attribute-program = { path = "./attribute/program", version = "0.32.1" } +anchor-derive-accounts = { path = "./derive/accounts", version = "0.32.1" } +anchor-derive-serde = { path = "./derive/serde", version = "0.32.1" } +anchor-derive-space = { path = "./derive/space", version = "0.32.1" } # `anchor-lang-idl` should only be included with `idl-build` feature anchor-lang-idl = { path = "../idl", version = "0.1.2", optional = true } @@ -55,6 +55,30 @@ anchor-lang-idl = { path = "../idl", version = "0.1.2", optional = true } base64 = "0.21" bincode = "1" borsh = "0.10.3" -bytemuck = "1" -solana-program = "2" +bytemuck = { version = "1", features = ["derive"] } +const-crypto = "0.3.0" +solana-account-info = "2" +solana-clock = "2" +solana-cpi = "2" +solana-define-syscall = "2" +solana-feature-gate-interface = "2" +solana-instruction = "2" +solana-instructions-sysvar = "2" +solana-invoke = "0.4.0" +solana-loader-v3-interface = { version = "3", features = ["bincode"] } +solana-msg = "2" +solana-program-entrypoint = "2" +solana-program-error = { version = "2", features = ["borsh"] } +solana-program-memory = "2" +solana-program-option = "2" +solana-program-pack = "2" +solana-pubkey = { version = "2", features = ["borsh", "bytemuck", "serde"] } +solana-sdk-ids = "2" +solana-system-interface = "1" +solana-sysvar = { version = "2", features = ["bincode"] } +solana-sysvar-id = "2" thiserror = "1" + +[lints.rust.unexpected_cfgs] + level = "warn" + check-cfg = ['cfg(target_os, values("solana"))'] diff --git a/lang/attribute/access-control/Cargo.toml b/lang/attribute/access-control/Cargo.toml index 24ac3ef989..fdb64c123b 100644 --- a/lang/attribute/access-control/Cargo.toml +++ b/lang/attribute/access-control/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-attribute-access-control" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -14,7 +14,7 @@ proc-macro = true anchor-debug = ["anchor-syn/anchor-debug"] [dependencies] -anchor-syn = { path = "../../syn", version = "0.31.1" } +anchor-syn = { path = "../../syn", version = "0.32.1" } proc-macro2 = "1" quote = "1" syn = { version = "1", features = ["full"] } diff --git a/lang/attribute/account/Cargo.toml b/lang/attribute/account/Cargo.toml index 6293f93ca8..0d8d205471 100644 --- a/lang/attribute/account/Cargo.toml +++ b/lang/attribute/account/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-attribute-account" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -14,9 +14,10 @@ proc-macro = true anchor-debug = ["anchor-syn/anchor-debug"] idl-build = ["anchor-syn/idl-build"] lazy-account = [] +event-cpi = [] [dependencies] -anchor-syn = { path = "../../syn", version = "0.31.1", features = ["hash"] } +anchor-syn = { path = "../../syn", version = "0.32.1", features = ["hash"] } bs58 = "0.5" proc-macro2 = "1" quote = "1" diff --git a/lang/attribute/account/src/id.rs b/lang/attribute/account/src/id.rs index 749d0801c4..dfbb3c6af6 100644 --- a/lang/attribute/account/src/id.rs +++ b/lang/attribute/account/src/id.rs @@ -39,6 +39,17 @@ fn id_to_tokens( pubkey_type: proc_macro2::TokenStream, tokens: &mut proc_macro2::TokenStream, ) { + let event_authority_and_bump = { + #[cfg(feature = "event-cpi")] + quote! { + pub const EVENT_AUTHORITY_AND_BUMP: (#pubkey_type, u8) = { + let (address, bump) = anchor_lang::derive_program_address(&[b"__event_authority"], &ID_CONST.to_bytes()); + (#pubkey_type::new_from_array(address), bump) + }; + } + #[cfg(not(feature = "event-cpi"))] + quote! {} + }; tokens.extend(quote! { /// The static program ID pub static ID: #pubkey_type = #id; @@ -61,6 +72,8 @@ fn id_to_tokens( ID_CONST } + #event_authority_and_bump + #[cfg(test)] #[test] fn test_id() { diff --git a/lang/attribute/constant/Cargo.toml b/lang/attribute/constant/Cargo.toml index 83a263bc6b..d637b15db5 100644 --- a/lang/attribute/constant/Cargo.toml +++ b/lang/attribute/constant/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-attribute-constant" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -15,6 +15,6 @@ anchor-debug = ["anchor-syn/anchor-debug"] idl-build = ["anchor-syn/idl-build"] [dependencies] -anchor-syn = { path = "../../syn", version = "0.31.1" } +anchor-syn = { path = "../../syn", version = "0.32.1" } quote = "1" syn = { version = "1", features = ["full"] } diff --git a/lang/attribute/error/Cargo.toml b/lang/attribute/error/Cargo.toml index 58c36c8dd7..631e5a29fb 100644 --- a/lang/attribute/error/Cargo.toml +++ b/lang/attribute/error/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-attribute-error" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -15,6 +15,6 @@ anchor-debug = ["anchor-syn/anchor-debug"] idl-build = ["anchor-syn/idl-build"] [dependencies] -anchor-syn = { path = "../../syn", version = "0.31.1" } +anchor-syn = { path = "../../syn", version = "0.32.1" } quote = "1" syn = { version = "1", features = ["full"] } diff --git a/lang/attribute/event/Cargo.toml b/lang/attribute/event/Cargo.toml index 9a86bc981a..ab49b526c5 100644 --- a/lang/attribute/event/Cargo.toml +++ b/lang/attribute/event/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-attribute-event" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -17,7 +17,7 @@ event-cpi = ["anchor-syn/event-cpi"] idl-build = ["anchor-syn/idl-build"] [dependencies] -anchor-syn = { path = "../../syn", version = "0.31.1", features = ["hash"] } +anchor-syn = { path = "../../syn", version = "0.32.1", features = ["hash"] } proc-macro2 = "1" quote = "1" syn = { version = "1", features = ["full"] } diff --git a/lang/attribute/event/src/lib.rs b/lang/attribute/event/src/lib.rs index 19258fbe21..ba5085998f 100644 --- a/lang/attribute/event/src/lib.rs +++ b/lang/attribute/event/src/lib.rs @@ -164,7 +164,6 @@ pub fn emit_cpi(input: proc_macro::TokenStream) -> proc_macro::TokenStream { proc_macro::TokenStream::from(quote! { { let authority_info = ctx.accounts.#authority_name.to_account_info(); - let authority_bump = ctx.bumps.#authority_name; let disc = anchor_lang::event::EVENT_IX_TAG_LE; let inner_data = anchor_lang::Event::data(&#event_struct); @@ -187,7 +186,7 @@ pub fn emit_cpi(input: proc_macro::TokenStream) -> proc_macro::TokenStream { anchor_lang::solana_program::program::invoke_signed( &ix, &[authority_info], - &[&[#authority_seeds, &[authority_bump]]], + &[&[#authority_seeds, &[crate::EVENT_AUTHORITY_AND_BUMP.1]]], ) .map_err(anchor_lang::error::Error::from)?; } diff --git a/lang/attribute/program/Cargo.toml b/lang/attribute/program/Cargo.toml index a324877f81..97403e21a1 100644 --- a/lang/attribute/program/Cargo.toml +++ b/lang/attribute/program/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-attribute-program" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -17,7 +17,7 @@ interface-instructions = ["anchor-syn/interface-instructions"] [dependencies] anchor-lang-idl = { path = "../../../idl", version = "0.1.2", features = ["convert"] } -anchor-syn = { path = "../../syn", version = "0.31.1" } +anchor-syn = { path = "../../syn", version = "0.32.1" } anyhow = "1" bs58 = "0.5" heck = "0.3" diff --git a/lang/attribute/program/src/declare_program/mods/cpi.rs b/lang/attribute/program/src/declare_program/mods/cpi.rs index a409b410ac..ec1b954d70 100644 --- a/lang/attribute/program/src/declare_program/mods/cpi.rs +++ b/lang/attribute/program/src/declare_program/mods/cpi.rs @@ -77,7 +77,7 @@ fn gen_cpi_instructions(idl: &Idl) -> proc_macro2::TokenStream { let accounts = ctx.to_account_metas(None); anchor_lang::solana_program::instruction::Instruction { - program_id: ctx.program.key(), + program_id: ctx.program_id.key(), accounts, data, } diff --git a/lang/attribute/program/src/lib.rs b/lang/attribute/program/src/lib.rs index 6569c98211..2d55b4db2e 100644 --- a/lang/attribute/program/src/lib.rs +++ b/lang/attribute/program/src/lib.rs @@ -50,7 +50,7 @@ pub fn program( /// /// A full on-chain CPI usage example can be found [here]. /// -/// [here]: https://github.com/coral-xyz/anchor/tree/v0.31.1/tests/declare-program +/// [here]: https://github.com/coral-xyz/anchor/tree/v0.32.1/tests/declare-program #[proc_macro] pub fn declare_program(input: proc_macro::TokenStream) -> proc_macro::TokenStream { parse_macro_input!(input as DeclareProgram) @@ -92,9 +92,9 @@ pub fn declare_program(input: proc_macro::TokenStream) -> proc_macro::TokenStrea /// ``` #[cfg(feature = "interface-instructions")] #[deprecated( - since = "0.31.1", + since = "0.32.1", note = "Use `#[instruction(discriminator = )]` instead. - See examples in https://github.com/coral-xyz/anchor/tree/v0.31.1/tests/spl/transfer-hook" + See examples in https://github.com/coral-xyz/anchor/tree/v0.32.1/tests/spl/transfer-hook" )] #[proc_macro_attribute] pub fn interface( diff --git a/lang/derive/accounts/Cargo.toml b/lang/derive/accounts/Cargo.toml index 0f8da0cda2..53ea6953e9 100644 --- a/lang/derive/accounts/Cargo.toml +++ b/lang/derive/accounts/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-derive-accounts" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -17,6 +17,6 @@ idl-build = ["anchor-syn/idl-build"] init-if-needed = ["anchor-syn/init-if-needed"] [dependencies] -anchor-syn = { path = "../../syn", version = "0.31.1" } +anchor-syn = { path = "../../syn", version = "0.32.1" } quote = "1" syn = { version = "1", features = ["full"] } diff --git a/lang/derive/serde/Cargo.toml b/lang/derive/serde/Cargo.toml index cccea39e19..471148c9c0 100644 --- a/lang/derive/serde/Cargo.toml +++ b/lang/derive/serde/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-derive-serde" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -15,8 +15,8 @@ idl-build = ["anchor-syn/idl-build"] lazy-account = [] [dependencies] -anchor-syn = { path = "../../syn", version = "0.31.1" } +anchor-syn = { path = "../../syn", version = "0.32.1" } borsh-derive-internal = "0.10.3" proc-macro2 = "1" -syn = { version = "1", features = ["full"] } quote = "1" +syn = { version = "1", features = ["full"] } diff --git a/lang/derive/space/Cargo.toml b/lang/derive/space/Cargo.toml index 9d035afcea..5eb6589276 100644 --- a/lang/derive/space/Cargo.toml +++ b/lang/derive/space/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-derive-space" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" diff --git a/lang/src/account_meta.rs b/lang/src/account_meta.rs index 60bb5287e8..b20e850c4e 100644 --- a/lang/src/account_meta.rs +++ b/lang/src/account_meta.rs @@ -1,5 +1,5 @@ use crate::ToAccountMetas; -use solana_program::instruction::AccountMeta; +use solana_instruction::AccountMeta; impl ToAccountMetas for AccountMeta { fn to_account_metas(&self, _is_signer: Option) -> Vec { diff --git a/lang/src/accounts/account.rs b/lang/src/accounts/account.rs index a8308de3fd..84683b1cea 100644 --- a/lang/src/accounts/account.rs +++ b/lang/src/accounts/account.rs @@ -2,14 +2,14 @@ use crate::bpf_writer::BpfWriter; use crate::error::{Error, ErrorCode}; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; +use crate::solana_program::system_program; use crate::{ AccountDeserialize, AccountSerialize, Accounts, AccountsClose, AccountsExit, Key, Owner, Result, ToAccountInfo, ToAccountInfos, ToAccountMetas, }; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; -use solana_program::system_program; use std::collections::BTreeSet; use std::fmt; use std::ops::{Deref, DerefMut}; diff --git a/lang/src/accounts/account_info.rs b/lang/src/accounts/account_info.rs index 872d5cd021..40667a5af1 100644 --- a/lang/src/accounts/account_info.rs +++ b/lang/src/accounts/account_info.rs @@ -3,10 +3,10 @@ //! should be used instead. use crate::error::ErrorCode; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{Accounts, AccountsExit, Key, Result, ToAccountInfos, ToAccountMetas}; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::collections::BTreeSet; impl<'info, B> Accounts<'info, B> for AccountInfo<'info> { diff --git a/lang/src/accounts/account_loader.rs b/lang/src/accounts/account_loader.rs index c7bfbc56e8..4746c54b32 100644 --- a/lang/src/accounts/account_loader.rs +++ b/lang/src/accounts/account_loader.rs @@ -2,13 +2,13 @@ use crate::bpf_writer::BpfWriter; use crate::error::{Error, ErrorCode}; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{ Accounts, AccountsClose, AccountsExit, Key, Owner, Result, ToAccountInfo, ToAccountInfos, ToAccountMetas, ZeroCopy, }; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::cell::{Ref, RefMut}; use std::collections::BTreeSet; use std::fmt; diff --git a/lang/src/accounts/boxed.rs b/lang/src/accounts/boxed.rs index cad82440ac..5fea704ad1 100644 --- a/lang/src/accounts/boxed.rs +++ b/lang/src/accounts/boxed.rs @@ -13,10 +13,10 @@ //! } //! ``` +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{Accounts, AccountsClose, AccountsExit, Result, ToAccountInfos, ToAccountMetas}; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::collections::BTreeSet; use std::ops::Deref; diff --git a/lang/src/accounts/interface.rs b/lang/src/accounts/interface.rs index 8f742014e6..1f2129e6fb 100644 --- a/lang/src/accounts/interface.rs +++ b/lang/src/accounts/interface.rs @@ -2,13 +2,13 @@ use crate::accounts::program::Program; use crate::error::{Error, ErrorCode}; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{ AccountDeserialize, Accounts, AccountsExit, CheckId, Key, Result, ToAccountInfos, ToAccountMetas, }; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::collections::BTreeSet; use std::ops::Deref; diff --git a/lang/src/accounts/interface_account.rs b/lang/src/accounts/interface_account.rs index 51efd13e60..2be842191e 100644 --- a/lang/src/accounts/interface_account.rs +++ b/lang/src/accounts/interface_account.rs @@ -2,14 +2,14 @@ use crate::accounts::account::Account; use crate::error::ErrorCode; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; +use crate::solana_program::system_program; use crate::{ AccountDeserialize, AccountSerialize, Accounts, AccountsClose, AccountsExit, CheckOwner, Key, Owners, Result, ToAccountInfos, ToAccountMetas, }; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; -use solana_program::system_program; use std::collections::BTreeSet; use std::fmt; use std::ops::{Deref, DerefMut}; diff --git a/lang/src/accounts/option.rs b/lang/src/accounts/option.rs index a1b034a31e..cf6428dd9d 100644 --- a/lang/src/accounts/option.rs +++ b/lang/src/accounts/option.rs @@ -10,9 +10,9 @@ use std::collections::BTreeSet; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{ error::ErrorCode, Accounts, AccountsClose, AccountsExit, Result, ToAccountInfos, ToAccountMetas, diff --git a/lang/src/accounts/program.rs b/lang/src/accounts/program.rs index 862f0dd154..80b7c265a9 100644 --- a/lang/src/accounts/program.rs +++ b/lang/src/accounts/program.rs @@ -1,13 +1,13 @@ //! Type validating that the account is the given Program use crate::error::{Error, ErrorCode}; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::bpf_loader_upgradeable::{self, UpgradeableLoaderState}; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{ AccountDeserialize, Accounts, AccountsExit, Id, Key, Result, ToAccountInfos, ToAccountMetas, }; -use solana_program::account_info::AccountInfo; -use solana_program::bpf_loader_upgradeable::{self, UpgradeableLoaderState}; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::collections::BTreeSet; use std::fmt; use std::marker::PhantomData; @@ -21,15 +21,24 @@ use std::ops::Deref; /// /// # Table of Contents /// - [Basic Functionality](#basic-functionality) +/// - [Generic Program Validation](#generic-program-validation) /// - [Out of the Box Types](#out-of-the-box-types) /// /// # Basic Functionality /// +/// For `Program<'info, T>` where T implements Id: /// Checks: /// /// - `account_info.key == expected_program` /// - `account_info.executable == true` /// +/// # Generic Program Validation +/// +/// For `Program<'info>` (without type parameter): +/// - Only checks: `account_info.executable == true` +/// - Use this when you only need to verify that an address is executable, +/// without validating against a specific program ID. +/// /// # Example /// ```ignore /// #[program] @@ -65,6 +74,16 @@ use std::ops::Deref; /// - `program_data`'s constraint checks that its upgrade authority is the `authority` account. /// - Finally, `authority` needs to sign the transaction. /// +/// ## Generic Program Example +/// ```ignore +/// #[derive(Accounts)] +/// pub struct ValidateExecutableProgram<'info> { +/// // Only validates that the provided account is executable +/// pub any_program: Program<'info>, +/// pub authority: Signer<'info>, +/// } +/// ``` +/// /// # Out of the Box Types /// /// Between the [`anchor_lang`](https://docs.rs/anchor-lang/latest/anchor_lang) and [`anchor_spl`](https://docs.rs/anchor_spl/latest/anchor_spl) crates, @@ -75,7 +94,7 @@ use std::ops::Deref; /// - [`Token`](https://docs.rs/anchor-spl/latest/anchor_spl/token/struct.Token.html) /// #[derive(Clone)] -pub struct Program<'info, T> { +pub struct Program<'info, T = ()> { info: &'info AccountInfo<'info>, _phantom: PhantomData, } @@ -128,13 +147,15 @@ impl<'a, T: Id> TryFrom<&'a AccountInfo<'a>> for Program<'a, T> { type Error = Error; /// Deserializes the given `info` into a `Program`. fn try_from(info: &'a AccountInfo<'a>) -> Result { - if info.key != &T::id() { + // Special handling for unit type () - only check executable, not program ID + let is_unit_type = T::id() == Pubkey::default(); + + if !is_unit_type && info.key != &T::id() { return Err(Error::from(ErrorCode::InvalidProgramId).with_pubkeys((*info.key, T::id()))); } if !info.executable { return Err(ErrorCode::InvalidProgramExecutable.into()); } - Ok(Program::new(info)) } } @@ -195,3 +216,13 @@ impl Key for Program<'_, T> { *self.info.key } } + +// Implement Id trait for unit type to support Program<'info> without type parameter +impl crate::Id for () { + fn id() -> Pubkey { + // For generic programs, this should never be called since they don't validate specific program IDs. + // However, we need to implement it to satisfy the trait bounds. + // Using a special marker value that indicates "any program" + Pubkey::default() + } +} diff --git a/lang/src/accounts/signer.rs b/lang/src/accounts/signer.rs index 34a4ca603d..39a216305a 100644 --- a/lang/src/accounts/signer.rs +++ b/lang/src/accounts/signer.rs @@ -1,9 +1,9 @@ //! Type validating that the account signed the transaction use crate::error::ErrorCode; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{Accounts, AccountsExit, Key, Result, ToAccountInfos, ToAccountMetas}; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::collections::BTreeSet; use std::ops::Deref; diff --git a/lang/src/accounts/system_account.rs b/lang/src/accounts/system_account.rs index 3e93ebb31a..dc159dd439 100644 --- a/lang/src/accounts/system_account.rs +++ b/lang/src/accounts/system_account.rs @@ -1,8 +1,8 @@ //! Type validating that the account is owned by the system program use crate::error::ErrorCode; +use crate::solana_program::system_program; use crate::*; -use solana_program::system_program; use std::ops::Deref; /// Type validating that the account is owned by the system program diff --git a/lang/src/accounts/sysvar.rs b/lang/src/accounts/sysvar.rs index 8d81f5ba16..e7cd257389 100644 --- a/lang/src/accounts/sysvar.rs +++ b/lang/src/accounts/sysvar.rs @@ -1,10 +1,10 @@ //! Type validating that the account is a sysvar and deserializing it use crate::error::ErrorCode; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{Accounts, AccountsExit, Key, Result, ToAccountInfos, ToAccountMetas}; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::collections::BTreeSet; use std::fmt; use std::ops::{Deref, DerefMut}; @@ -30,12 +30,12 @@ use std::ops::{Deref, DerefMut}; /// let clock = Clock::get()?; /// } /// ``` -pub struct Sysvar<'info, T: solana_program::sysvar::Sysvar> { +pub struct Sysvar<'info, T: crate::solana_program::sysvar::Sysvar> { info: &'info AccountInfo<'info>, account: T, } -impl fmt::Debug for Sysvar<'_, T> { +impl fmt::Debug for Sysvar<'_, T> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("Sysvar") .field("info", &self.info) @@ -44,7 +44,7 @@ impl fmt::Debug for Sysvar<'_, T } } -impl<'info, T: solana_program::sysvar::Sysvar> Sysvar<'info, T> { +impl<'info, T: crate::solana_program::sysvar::Sysvar> Sysvar<'info, T> { pub fn from_account_info(acc_info: &'info AccountInfo<'info>) -> Result> { match T::from_account_info(acc_info) { Ok(val) => Ok(Sysvar { @@ -56,7 +56,7 @@ impl<'info, T: solana_program::sysvar::Sysvar> Sysvar<'info, T> { } } -impl Clone for Sysvar<'_, T> { +impl Clone for Sysvar<'_, T> { fn clone(&self) -> Self { Self { info: self.info, @@ -65,7 +65,7 @@ impl Clone for Sysvar<'_, T> { } } -impl<'info, B, T: solana_program::sysvar::Sysvar> Accounts<'info, B> for Sysvar<'info, T> { +impl<'info, B, T: crate::solana_program::sysvar::Sysvar> Accounts<'info, B> for Sysvar<'info, T> { fn try_accounts( _program_id: &Pubkey, accounts: &mut &'info [AccountInfo<'info>], @@ -82,25 +82,27 @@ impl<'info, B, T: solana_program::sysvar::Sysvar> Accounts<'info, B> for Sysvar< } } -impl ToAccountMetas for Sysvar<'_, T> { +impl ToAccountMetas for Sysvar<'_, T> { fn to_account_metas(&self, _is_signer: Option) -> Vec { vec![AccountMeta::new_readonly(*self.info.key, false)] } } -impl<'info, T: solana_program::sysvar::Sysvar> ToAccountInfos<'info> for Sysvar<'info, T> { +impl<'info, T: crate::solana_program::sysvar::Sysvar> ToAccountInfos<'info> for Sysvar<'info, T> { fn to_account_infos(&self) -> Vec> { vec![self.info.clone()] } } -impl<'info, T: solana_program::sysvar::Sysvar> AsRef> for Sysvar<'info, T> { +impl<'info, T: crate::solana_program::sysvar::Sysvar> AsRef> + for Sysvar<'info, T> +{ fn as_ref(&self) -> &AccountInfo<'info> { self.info } } -impl Deref for Sysvar<'_, T> { +impl Deref for Sysvar<'_, T> { type Target = T; fn deref(&self) -> &Self::Target { @@ -108,15 +110,15 @@ impl Deref for Sysvar<'_, T> { } } -impl DerefMut for Sysvar<'_, T> { +impl DerefMut for Sysvar<'_, T> { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.account } } -impl<'info, T: solana_program::sysvar::Sysvar> AccountsExit<'info> for Sysvar<'info, T> {} +impl<'info, T: crate::solana_program::sysvar::Sysvar> AccountsExit<'info> for Sysvar<'info, T> {} -impl Key for Sysvar<'_, T> { +impl Key for Sysvar<'_, T> { fn key(&self) -> Pubkey { *self.info.key } diff --git a/lang/src/accounts/unchecked_account.rs b/lang/src/accounts/unchecked_account.rs index f08092bda4..350090c0c1 100644 --- a/lang/src/accounts/unchecked_account.rs +++ b/lang/src/accounts/unchecked_account.rs @@ -2,10 +2,10 @@ //! that no checks are performed use crate::error::ErrorCode; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{Accounts, AccountsExit, Key, Result, ToAccountInfos, ToAccountMetas}; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::collections::BTreeSet; use std::ops::Deref; diff --git a/lang/src/bpf_upgradeable_state.rs b/lang/src/bpf_upgradeable_state.rs index 2f0c806fd9..179a6f4708 100644 --- a/lang/src/bpf_upgradeable_state.rs +++ b/lang/src/bpf_upgradeable_state.rs @@ -1,8 +1,8 @@ use crate::error::ErrorCode; -use crate::{AccountDeserialize, AccountSerialize, Owner, Result}; -use solana_program::{ +use crate::solana_program::{ bpf_loader_upgradeable::UpgradeableLoaderState, program_error::ProgramError, pubkey::Pubkey, }; +use crate::{AccountDeserialize, AccountSerialize, Owner, Result}; #[derive(Clone)] pub struct ProgramData { @@ -45,7 +45,7 @@ impl AccountSerialize for ProgramData { } impl Owner for ProgramData { - fn owner() -> solana_program::pubkey::Pubkey { + fn owner() -> crate::solana_program::pubkey::Pubkey { anchor_lang::solana_program::bpf_loader_upgradeable::ID } } diff --git a/lang/src/bpf_writer.rs b/lang/src/bpf_writer.rs index 63ebdc47b8..4fd7b95b38 100644 --- a/lang/src/bpf_writer.rs +++ b/lang/src/bpf_writer.rs @@ -1,4 +1,4 @@ -use solana_program::program_memory::sol_memcpy; +use crate::solana_program::program_memory::sol_memcpy; use std::cmp; use std::io::{self, Write}; diff --git a/lang/src/common.rs b/lang/src/common.rs index a59d769576..7683ca1440 100644 --- a/lang/src/common.rs +++ b/lang/src/common.rs @@ -1,7 +1,7 @@ use crate::prelude::{Id, System}; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::system_program; use crate::Result; -use solana_program::account_info::AccountInfo; -use solana_program::system_program; pub fn close<'info>(info: AccountInfo<'info>, sol_destination: AccountInfo<'info>) -> Result<()> { // Transfer tokens from the account to the sol_destination. @@ -11,7 +11,7 @@ pub fn close<'info>(info: AccountInfo<'info>, sol_destination: AccountInfo<'info **info.lamports.borrow_mut() = 0; info.assign(&system_program::ID); - info.realloc(0, false).map_err(Into::into) + info.resize(0).map_err(Into::into) } pub fn is_closed(info: &AccountInfo) -> bool { diff --git a/lang/src/context.rs b/lang/src/context.rs index 5f7f7eda43..0e24b21efa 100644 --- a/lang/src/context.rs +++ b/lang/src/context.rs @@ -1,9 +1,9 @@ //! Data structures that are used to provide non-argument inputs to program endpoints +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{Accounts, Bumps, ToAccountInfos, ToAccountMetas}; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::fmt; /// Provides non-argument inputs to the program. @@ -127,7 +127,7 @@ where /// pub mod caller { /// use super::*; /// pub fn do_cpi(ctx: Context, data: u64) -> Result<()> { -/// let callee_id = ctx.accounts.callee.to_account_info(); +/// let callee_id = ctx.accounts.callee.key(); /// let callee_accounts = callee::cpi::accounts::SetData { /// data_acc: ctx.accounts.data_acc.to_account_info(), /// authority: ctx.accounts.callee_authority.to_account_info(), @@ -174,7 +174,7 @@ where { pub accounts: T, pub remaining_accounts: Vec>, - pub program: AccountInfo<'info>, + pub program_id: Pubkey, pub signer_seeds: &'a [&'b [&'c [u8]]], } @@ -182,10 +182,11 @@ impl<'a, 'b, 'c, 'info, T> CpiContext<'a, 'b, 'c, 'info, T> where T: ToAccountMetas + ToAccountInfos<'info>, { - pub fn new(program: AccountInfo<'info>, accounts: T) -> Self { + #[must_use] + pub fn new(program_id: Pubkey, accounts: T) -> Self { Self { accounts, - program, + program_id, remaining_accounts: Vec::new(), signer_seeds: &[], } @@ -193,13 +194,13 @@ where #[must_use] pub fn new_with_signer( - program: AccountInfo<'info>, + program_id: Pubkey, accounts: T, signer_seeds: &'a [&'b [&'c [u8]]], ) -> Self { Self { accounts, - program, + program_id, signer_seeds, remaining_accounts: Vec::new(), } @@ -224,7 +225,6 @@ impl<'info, T: ToAccountInfos<'info> + ToAccountMetas> ToAccountInfos<'info> fn to_account_infos(&self) -> Vec> { let mut infos = self.accounts.to_account_infos(); infos.extend_from_slice(&self.remaining_accounts); - infos.push(self.program.clone()); infos } } diff --git a/lang/src/error.rs b/lang/src/error.rs index bda97cca80..967d6cdbc6 100644 --- a/lang/src/error.rs +++ b/lang/src/error.rs @@ -1,6 +1,6 @@ +use crate::solana_program::{program_error::ProgramError, pubkey::Pubkey}; use anchor_lang::error_code; use borsh::maybestd::io::Error as BorshIoError; -use solana_program::{program_error::ProgramError, pubkey::Pubkey}; use std::fmt::{Debug, Display}; use std::num::TryFromIntError; diff --git a/lang/src/lib.rs b/lang/src/lib.rs index dd4d3b64b8..372c1186d2 100644 --- a/lang/src/lib.rs +++ b/lang/src/lib.rs @@ -25,11 +25,11 @@ extern crate self as anchor_lang; +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::program_error::ProgramError; +use crate::solana_program::pubkey::Pubkey; use bytemuck::{Pod, Zeroable}; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::program_error::ProgramError; -use solana_program::pubkey::Pubkey; use std::{collections::BTreeSet, fmt::Debug, io::Write}; mod account_meta; @@ -59,11 +59,108 @@ pub use anchor_attribute_program::{declare_program, instruction, program}; pub use anchor_derive_accounts::Accounts; pub use anchor_derive_serde::{AnchorDeserialize, AnchorSerialize}; pub use anchor_derive_space::InitSpace; +pub use const_crypto::ed25519::derive_program_address; /// Borsh is the default serialization format for instructions and accounts. pub use borsh::de::BorshDeserialize as AnchorDeserialize; pub use borsh::ser::BorshSerialize as AnchorSerialize; -pub use solana_program; +pub mod solana_program { + pub use solana_feature_gate_interface as feature; + + pub use { + solana_account_info as account_info, solana_clock as clock, solana_msg::msg, + solana_program_entrypoint as entrypoint, solana_program_entrypoint::entrypoint, + solana_program_error as program_error, solana_program_memory as program_memory, + solana_program_option as program_option, solana_program_pack as program_pack, + solana_pubkey as pubkey, solana_sdk_ids::system_program, + solana_system_interface::instruction as system_instruction, + }; + pub mod instruction { + pub use solana_instruction::*; + /// Get the current stack height, transaction-level instructions are height + /// TRANSACTION_LEVEL_STACK_HEIGHT, fist invoked inner instruction is height + /// TRANSACTION_LEVEL_STACK_HEIGHT + 1, etc... + pub fn get_stack_height() -> usize { + #[cfg(target_os = "solana")] + unsafe { + solana_instruction::syscalls::sol_get_stack_height() as usize + } + + #[cfg(not(target_os = "solana"))] + { + solana_sysvar::program_stubs::sol_get_stack_height() as usize + } + } + } + pub mod rent { + pub use solana_sysvar::rent::*; + } + pub mod program { + pub use solana_cpi::*; + pub use solana_invoke::{invoke, invoke_signed, invoke_signed_unchecked, invoke_unchecked}; + } + + pub mod bpf_loader_upgradeable { + #[allow(deprecated)] + pub use solana_loader_v3_interface::{ + get_program_data_address, + instruction::{ + close, close_any, create_buffer, deploy_with_max_program_len, extend_program, + is_close_instruction, is_set_authority_checked_instruction, + is_set_authority_instruction, is_upgrade_instruction, set_buffer_authority, + set_buffer_authority_checked, set_upgrade_authority, set_upgrade_authority_checked, + upgrade, write, + }, + state::UpgradeableLoaderState, + }; + pub use solana_sdk_ids::bpf_loader_upgradeable::{check_id, id, ID}; + } + + pub mod log { + pub use solana_msg::{msg, sol_log}; + /// Print some slices as base64. + pub fn sol_log_data(data: &[&[u8]]) { + #[cfg(target_os = "solana")] + unsafe { + solana_define_syscall::definitions::sol_log_data( + data as *const _ as *const u8, + data.len() as u64, + ) + }; + + #[cfg(not(target_os = "solana"))] + core::hint::black_box(data); + } + } + pub mod sysvar { + pub use solana_sysvar_id::{declare_deprecated_sysvar_id, declare_sysvar_id, SysvarId}; + #[deprecated(since = "2.2.0", note = "Use `solana-sysvar` crate instead")] + #[allow(deprecated)] + pub use { + solana_sdk_ids::sysvar::{check_id, id, ID}, + solana_sysvar::{ + clock, epoch_rewards, epoch_schedule, fees, is_sysvar_id, last_restart_slot, + recent_blockhashes, rent, rewards, slot_hashes, slot_history, stake_history, + Sysvar, ALL_IDS, + }, + }; + pub mod instructions { + pub use solana_instruction::{BorrowedAccountMeta, BorrowedInstruction}; + #[cfg(not(target_os = "solana"))] + pub use solana_instructions_sysvar::construct_instructions_data; + #[deprecated( + since = "2.2.0", + note = "Use solana-instructions-sysvar crate instead" + )] + pub use solana_instructions_sysvar::{ + get_instruction_relative, load_current_index_checked, load_instruction_at_checked, + store_current_index_checked, Instructions, + }; + #[deprecated(since = "2.2.0", note = "Use solana-sdk-ids crate instead")] + pub use solana_sdk_ids::sysvar::instructions::{check_id, id, ID}; + } + } +} #[cfg(feature = "event-cpi")] pub use anchor_attribute_event::{emit_cpi, event_cpi}; @@ -76,6 +173,12 @@ pub use anchor_attribute_program::interface; pub type Result = std::result::Result; +// Deprecated message for AccountInfo usage in Accounts struct +#[deprecated( + note = "Use `UncheckedAccount` instead of `AccountInfo` for safer unchecked accounts." +)] +pub fn deprecated_account_info_usage() {} + /// A data structure of validated accounts that can be deserialized from the /// input to a Solana program. Implementations of this trait should perform any /// and all requisite constraint checks on accounts to ensure the accounts @@ -416,23 +519,23 @@ pub mod prelude { InitSpace, Key, Lamports, Owner, ProgramData, Result, Space, ToAccountInfo, ToAccountInfos, ToAccountMetas, }; + pub use crate::solana_program::account_info::{next_account_info, AccountInfo}; + pub use crate::solana_program::instruction::AccountMeta; + pub use crate::solana_program::program_error::ProgramError; + pub use crate::solana_program::pubkey::Pubkey; + pub use crate::solana_program::sysvar::clock::Clock; + pub use crate::solana_program::sysvar::epoch_schedule::EpochSchedule; + pub use crate::solana_program::sysvar::instructions::Instructions; + pub use crate::solana_program::sysvar::rent::Rent; + pub use crate::solana_program::sysvar::rewards::Rewards; + pub use crate::solana_program::sysvar::slot_hashes::SlotHashes; + pub use crate::solana_program::sysvar::slot_history::SlotHistory; + pub use crate::solana_program::sysvar::stake_history::StakeHistory; + pub use crate::solana_program::sysvar::Sysvar as SolanaSysvar; + pub use crate::solana_program::*; pub use anchor_attribute_error::*; pub use borsh; pub use error::*; - pub use solana_program::account_info::{next_account_info, AccountInfo}; - pub use solana_program::instruction::AccountMeta; - pub use solana_program::msg; - pub use solana_program::program_error::ProgramError; - pub use solana_program::pubkey::Pubkey; - pub use solana_program::sysvar::clock::Clock; - pub use solana_program::sysvar::epoch_schedule::EpochSchedule; - pub use solana_program::sysvar::instructions::Instructions; - pub use solana_program::sysvar::rent::Rent; - pub use solana_program::sysvar::rewards::Rewards; - pub use solana_program::sysvar::slot_hashes::SlotHashes; - pub use solana_program::sysvar::slot_history::SlotHistory; - pub use solana_program::sysvar::stake_history::StakeHistory; - pub use solana_program::sysvar::Sysvar as SolanaSysvar; pub use thiserror; #[cfg(feature = "event-cpi")] @@ -457,7 +560,7 @@ pub mod __private { pub use crate::{bpf_writer::BpfWriter, common::is_closed}; - use solana_program::pubkey::Pubkey; + use crate::solana_program::pubkey::Pubkey; // Used to calculate the maximum between two expressions. // It is necessary for the calculation of the enum space. diff --git a/lang/src/system_program.rs b/lang/src/system_program.rs index 741a714bce..5af169c68a 100644 --- a/lang/src/system_program.rs +++ b/lang/src/system_program.rs @@ -1,7 +1,9 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use crate::prelude::*; -use solana_program::pubkey::Pubkey; +use crate::solana_program::pubkey::Pubkey; -pub use solana_program::system_program::ID; +pub use crate::solana_program::system_program::ID; #[derive(Debug, Clone)] pub struct System; diff --git a/lang/src/vec.rs b/lang/src/vec.rs index 3250c693ec..9d6da8d355 100644 --- a/lang/src/vec.rs +++ b/lang/src/vec.rs @@ -1,7 +1,9 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] +use crate::solana_program::account_info::AccountInfo; +use crate::solana_program::instruction::AccountMeta; +use crate::solana_program::pubkey::Pubkey; use crate::{Accounts, Result, ToAccountInfos, ToAccountMetas}; -use solana_program::account_info::AccountInfo; -use solana_program::instruction::AccountMeta; -use solana_program::pubkey::Pubkey; use std::collections::BTreeSet; impl<'info, T: ToAccountInfos<'info>> ToAccountInfos<'info> for Vec { @@ -37,8 +39,8 @@ impl<'info, B, T: Accounts<'info, B>> Accounts<'info, B> for Vec { #[cfg(test)] mod tests { - use solana_program::clock::Epoch; - use solana_program::pubkey::Pubkey; + use crate::solana_program::clock::Epoch; + use crate::solana_program::pubkey::Pubkey; use super::*; diff --git a/lang/syn/Cargo.toml b/lang/syn/Cargo.toml index e9fd68bd84..513c8ed83b 100644 --- a/lang/syn/Cargo.toml +++ b/lang/syn/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-syn" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] repository = "https://github.com/coral-xyz/anchor" license = "Apache-2.0" @@ -23,6 +23,9 @@ interface-instructions = [] [dependencies] anyhow = "1" bs58 = "0.5" + +# `idl-build` feature only +cargo_toml = { version = "0.19", optional = true } heck = "0.3" proc-macro2 = { version = "1", features = ["span-locations"] } quote = "1" @@ -31,6 +34,3 @@ serde_json = "1" sha2 = "0.10" syn = { version = "1", features = ["full", "extra-traits", "parsing"] } thiserror = "1" - -# `idl-build` feature only -cargo_toml = { version = "0.19", optional = true } diff --git a/lang/syn/src/codegen/accounts/constraints.rs b/lang/syn/src/codegen/accounts/constraints.rs index d385eb1df9..3c3d17264e 100644 --- a/lang/syn/src/codegen/accounts/constraints.rs +++ b/lang/syn/src/codegen/accounts/constraints.rs @@ -416,7 +416,6 @@ fn generate_constraint_realloc( let account_name = field.to_string(); let new_space = &c.space; let payer = &c.payer; - let zero = &c.zero; let mut optional_check_scope = OptionalCheckScope::new_with_field(accs, field); let payer_optional_check = optional_check_scope.generate_check(payer); @@ -450,7 +449,7 @@ fn generate_constraint_realloc( if __new_rent_minimum > __field_info.lamports() { anchor_lang::system_program::transfer( anchor_lang::context::CpiContext::new( - system_program.to_account_info(), + system_program.key(), anchor_lang::system_program::Transfer { from: #payer.to_account_info(), to: __field_info.clone(), @@ -465,7 +464,7 @@ fn generate_constraint_realloc( **__field_info.lamports.borrow_mut() = __field_info.lamports().checked_sub(__lamport_amt).unwrap(); } - __field_info.realloc(#new_space, #zero)?; + __field_info.resize(#new_space)?; __reallocs.insert(#field.key()); } } @@ -497,71 +496,95 @@ fn generate_constraint_init_group( // PDA bump seeds. let (find_pda, seeds_with_bump) = match &c.seeds { None => (quote! {}, quote! {}), - Some(c) => { - let seeds = &mut c.seeds.clone(); - - // If the seeds came with a trailing comma, we need to chop it off - // before we interpolate them below. - if let Some(pair) = seeds.pop() { - seeds.push_value(pair.into_value()); - } - - let maybe_seeds_plus_comma = (!seeds.is_empty()).then(|| { - quote! { #seeds, } - }); - - let validate_pda = { - // If the bump is provided with init *and target*, then force it to be the - // canonical bump. - // - // Note that for `#[account(init, seeds)]`, find_program_address has already - // been run in the init constraint find_pda variable. - if c.bump.is_some() { - let b = c.bump.as_ref().unwrap(); + Some(c) => match &c.seeds { + // If the bump is provided with init *and target*, then force it to be the + // canonical bump. + // + // Note that for `#[account(init, seeds)]`, find_program_address has already + // been run in the init constraint find_pda variable. + SeedsExpr::List(list) => { + // Optional prefix (either empty or ",") + let maybe_seeds_plus_comma = (!list.is_empty()).then(|| quote! { #list, }); + + let validate_pda = if let Some(b) = &c.bump { quote! { if #field.key() != __pda_address { - return Err(anchor_lang::error::Error::from(anchor_lang::error::ErrorCode::ConstraintSeeds).with_account_name(#name_str).with_pubkeys((#field.key(), __pda_address))); + return Err(anchor_lang::error::Error::from( + anchor_lang::error::ErrorCode::ConstraintSeeds + ).with_account_name(#name_str) + .with_pubkeys((#field.key(), __pda_address))); } if __bump != #b { - return Err(anchor_lang::error::Error::from(anchor_lang::error::ErrorCode::ConstraintSeeds).with_account_name(#name_str).with_values((__bump, #b))); + return Err(anchor_lang::error::Error::from( + anchor_lang::error::ErrorCode::ConstraintSeeds + ).with_account_name(#name_str) + .with_values((__bump, #b))); } } } else { - // Init seeds but no bump. We already used the canonical to create bump so - // just check the address. - // - // Note that for `#[account(init, seeds)]`, find_program_address has already - // been run in the init constraint find_pda variable. quote! { if #field.key() != __pda_address { - return Err(anchor_lang::error::Error::from(anchor_lang::error::ErrorCode::ConstraintSeeds).with_account_name(#name_str).with_pubkeys((#field.key(), __pda_address))); + return Err(anchor_lang::error::Error::from( + anchor_lang::error::ErrorCode::ConstraintSeeds + ).with_account_name(#name_str) + .with_pubkeys((#field.key(), __pda_address))); } } - } - }; - let bump = if f.is_optional { - quote!(Some(__bump)) - } else { - quote!(__bump) - }; + }; - ( - quote! { - let (__pda_address, __bump) = Pubkey::find_program_address( - &[#maybe_seeds_plus_comma], - __program_id, - ); - __bumps.#field = #bump; - #validate_pda - }, - quote! { - &[ - #maybe_seeds_plus_comma - &[__bump][..] - ][..] - }, - ) - } + let bump_tok = if f.is_optional { + quote!(Some(__bump)) + } else { + quote!(__bump) + }; + + ( + quote! { + let (__pda_address, __bump) = Pubkey::find_program_address( + &[ #maybe_seeds_plus_comma ], + __program_id, + ); + __bumps.#field = #bump_tok; + #validate_pda + }, + quote! { + &[ + #maybe_seeds_plus_comma + &[__bump][..] + ][..] + }, + ) + } + SeedsExpr::Expr(expr) => { + let bump_tok = if f.is_optional { + quote!(Some(__bump)) + } else { + quote!(__bump) + }; + + ( + quote! { + let __seeds_slice: &[&[u8]] = #expr; + let (__pda_address, __bump) = + Pubkey::find_program_address(__seeds_slice, __program_id); + __bumps.#field = #bump_tok; + + // Build signer seeds at runtime = seeds + bump + let mut __signer_seeds_vec: ::std::vec::Vec<&[u8]> = __seeds_slice.to_vec(); + __signer_seeds_vec.push(&[__bump][..]); + let __signer_seeds = __signer_seeds_vec; + + if #field.key() != __pda_address { + return Err(anchor_lang::error::Error::from( + anchor_lang::error::ErrorCode::ConstraintSeeds + ).with_account_name(#name_str) + .with_pubkeys((#field.key(), __pda_address))); + } + }, + quote! { &__signer_seeds[..] }, + ) + } + }, }; // Optional check idents @@ -624,13 +647,13 @@ fn generate_constraint_init_group( #create_account // Initialize the token account. - let cpi_program = #token_program.to_account_info(); + let cpi_program_id = #token_program.key(); let accounts = ::anchor_spl::token_interface::InitializeAccount3 { account: #field.to_account_info(), mint: #mint.to_account_info(), authority: #owner.to_account_info(), }; - let cpi_ctx = anchor_lang::context::CpiContext::new(cpi_program, accounts); + let cpi_ctx = anchor_lang::context::CpiContext::new(cpi_program_id, accounts); ::anchor_spl::token_interface::initialize_account3(cpi_ctx)?; } @@ -693,7 +716,7 @@ fn generate_constraint_init_group( ::anchor_spl::associated_token::create( anchor_lang::context::CpiContext::new( - associated_token_program.to_account_info(), + associated_token_program.key(), ::anchor_spl::associated_token::Create { payer: #payer.to_account_info(), associated_token: #field.to_account_info(), @@ -950,48 +973,51 @@ fn generate_constraint_init_group( // Create the account with the system program. #create_account + let cpi_program_id = #token_program.key(); + // Initialize extensions. if let Some(extensions) = #extensions { + for e in extensions { match e { ::anchor_spl::token_interface::spl_token_2022::extension::ExtensionType::GroupPointer => { - ::anchor_spl::token_interface::group_pointer_initialize(anchor_lang::context::CpiContext::new(#token_program.to_account_info(), ::anchor_spl::token_interface::GroupPointerInitialize { + ::anchor_spl::token_interface::group_pointer_initialize(anchor_lang::context::CpiContext::new(cpi_program_id, ::anchor_spl::token_interface::GroupPointerInitialize { token_program_id: #token_program.to_account_info(), mint: #field.to_account_info(), }), #group_pointer_authority, #group_pointer_group_address)?; }, ::anchor_spl::token_interface::spl_token_2022::extension::ExtensionType::GroupMemberPointer => { - ::anchor_spl::token_interface::group_member_pointer_initialize(anchor_lang::context::CpiContext::new(#token_program.to_account_info(), ::anchor_spl::token_interface::GroupMemberPointerInitialize { + ::anchor_spl::token_interface::group_member_pointer_initialize(anchor_lang::context::CpiContext::new(cpi_program_id, ::anchor_spl::token_interface::GroupMemberPointerInitialize { token_program_id: #token_program.to_account_info(), mint: #field.to_account_info(), }), #group_member_pointer_authority, #group_member_pointer_member_address)?; }, ::anchor_spl::token_interface::spl_token_2022::extension::ExtensionType::MetadataPointer => { - ::anchor_spl::token_interface::metadata_pointer_initialize(anchor_lang::context::CpiContext::new(#token_program.to_account_info(), ::anchor_spl::token_interface::MetadataPointerInitialize { + ::anchor_spl::token_interface::metadata_pointer_initialize(anchor_lang::context::CpiContext::new(cpi_program_id, ::anchor_spl::token_interface::MetadataPointerInitialize { token_program_id: #token_program.to_account_info(), mint: #field.to_account_info(), }), #metadata_pointer_authority, #metadata_pointer_metadata_address)?; }, ::anchor_spl::token_interface::spl_token_2022::extension::ExtensionType::MintCloseAuthority => { - ::anchor_spl::token_interface::mint_close_authority_initialize(anchor_lang::context::CpiContext::new(#token_program.to_account_info(), ::anchor_spl::token_interface::MintCloseAuthorityInitialize { + ::anchor_spl::token_interface::mint_close_authority_initialize(anchor_lang::context::CpiContext::new(cpi_program_id, ::anchor_spl::token_interface::MintCloseAuthorityInitialize { token_program_id: #token_program.to_account_info(), mint: #field.to_account_info(), }), #close_authority)?; }, ::anchor_spl::token_interface::spl_token_2022::extension::ExtensionType::TransferHook => { - ::anchor_spl::token_interface::transfer_hook_initialize(anchor_lang::context::CpiContext::new(#token_program.to_account_info(), ::anchor_spl::token_interface::TransferHookInitialize { + ::anchor_spl::token_interface::transfer_hook_initialize(anchor_lang::context::CpiContext::new(cpi_program_id, ::anchor_spl::token_interface::TransferHookInitialize { token_program_id: #token_program.to_account_info(), mint: #field.to_account_info(), }), #transfer_hook_authority, #transfer_hook_program_id)?; }, ::anchor_spl::token_interface::spl_token_2022::extension::ExtensionType::NonTransferable => { - ::anchor_spl::token_interface::non_transferable_mint_initialize(anchor_lang::context::CpiContext::new(#token_program.to_account_info(), ::anchor_spl::token_interface::NonTransferableMintInitialize { + ::anchor_spl::token_interface::non_transferable_mint_initialize(anchor_lang::context::CpiContext::new(cpi_program_id, ::anchor_spl::token_interface::NonTransferableMintInitialize { token_program_id: #token_program.to_account_info(), mint: #field.to_account_info(), }))?; }, ::anchor_spl::token_interface::spl_token_2022::extension::ExtensionType::PermanentDelegate => { - ::anchor_spl::token_interface::permanent_delegate_initialize(anchor_lang::context::CpiContext::new(#token_program.to_account_info(), ::anchor_spl::token_interface::PermanentDelegateInitialize { + ::anchor_spl::token_interface::permanent_delegate_initialize(anchor_lang::context::CpiContext::new(cpi_program_id, ::anchor_spl::token_interface::PermanentDelegateInitialize { token_program_id: #token_program.to_account_info(), mint: #field.to_account_info(), }), #permanent_delegate.unwrap())?; @@ -1004,11 +1030,10 @@ fn generate_constraint_init_group( } // Initialize the mint account. - let cpi_program = #token_program.to_account_info(); let accounts = ::anchor_spl::token_interface::InitializeMint2 { mint: #field.to_account_info(), }; - let cpi_ctx = anchor_lang::context::CpiContext::new(cpi_program, accounts); + let cpi_ctx = anchor_lang::context::CpiContext::new(cpi_program_id, accounts); ::anchor_spl::token_interface::initialize_mint2(cpi_ctx, #decimals, &#owner.key(), #freeze_authority)?; } @@ -1145,8 +1170,6 @@ fn generate_constraint_seeds(f: &Field, c: &ConstraintSeedsGroup) -> proc_macro2 let name = &f.ident; let name_str = name.to_string(); - let s = &mut c.seeds.clone(); - let deriving_program_id = c .program_seed .clone() @@ -1154,40 +1177,61 @@ fn generate_constraint_seeds(f: &Field, c: &ConstraintSeedsGroup) -> proc_macro2 .map(|program_id| quote! { #program_id.key() }) // Otherwise fall back to the current program's program_id. .unwrap_or(quote! { __program_id }); - - // If the seeds came with a trailing comma, we need to chop it off - // before we interpolate them below. - if let Some(pair) = s.pop() { - s.push_value(pair.into_value()); - } - - let maybe_seeds_plus_comma = (!s.is_empty()).then(|| { - quote! { #s, } - }); - let bump = if f.is_optional { + // Convenience: how we store the bump so the caller can access it later. + let bump_store = if f.is_optional { quote!(Some(__bump)) } else { quote!(__bump) }; - // Not init here, so do all the checks. - let define_pda = match c.bump.as_ref() { - // Bump target not given. Find it. - None => quote! { - let (__pda_address, __bump) = Pubkey::find_program_address( - &[#maybe_seeds_plus_comma], - &#deriving_program_id, - ); - __bumps.#name = #bump; + // Build the PDA. + let define_pda = match (&c.seeds, &c.bump) { + // [list], no bump -> find_program_address + store __bump. + (SeedsExpr::List(list), None) => { + let maybe_seeds_plus_comma = (!list.is_empty()).then(|| quote! { #list, }); + quote! { + let (__pda_address, __bump) = Pubkey::find_program_address( + &[ #maybe_seeds_plus_comma ], + &#deriving_program_id, + ); + __bumps.#name = #bump_store; + } + } + + // [list], explicit bump -> create_program_address with list + bump. + (SeedsExpr::List(list), Some(b)) => { + let maybe_seeds_plus_comma = (!list.is_empty()).then(|| quote! { #list, }); + quote! { + let __pda_address = Pubkey::create_program_address( + &[ #maybe_seeds_plus_comma &[#b][..] ], + &#deriving_program_id, + ).map_err(|_| anchor_lang::error::Error::from( + anchor_lang::error::ErrorCode::ConstraintSeeds + ).with_account_name(#name_str))?; + } + } + + // expr, no bump -> find_program_address + store __bump. + (SeedsExpr::Expr(expr), None) => quote! { + let __seeds_slice: &[&[u8]] = #expr; + let (__pda_address, __bump) = + Pubkey::find_program_address(__seeds_slice, &#deriving_program_id); + __bumps.#name = #bump_store; }, - // Bump target given. Use it. - Some(b) => quote! { + + // expr, explicit bump -> concat slice + bump, then create_program_address. + (SeedsExpr::Expr(expr), Some(b)) => quote! { + let __bump_bytes = [#b]; + let __seeds_vec: ::std::vec::Vec<&[u8]> = [#expr, &[&__bump_bytes[..]]].concat(); let __pda_address = Pubkey::create_program_address( - &[#maybe_seeds_plus_comma &[#b][..]], + &__seeds_vec[..], &#deriving_program_id, - ).map_err(|_| anchor_lang::error::Error::from(anchor_lang::error::ErrorCode::ConstraintSeeds).with_account_name(#name_str))?; + ).map_err(|_| anchor_lang::error::Error::from( + anchor_lang::error::ErrorCode::ConstraintSeeds + ).with_account_name(#name_str))?; }, }; + quote! { // Define the PDA. #define_pda @@ -1645,7 +1689,7 @@ fn generate_create_account( from: #payer.to_account_info(), to: #field.to_account_info() }; - let cpi_context = anchor_lang::context::CpiContext::new(system_program.to_account_info(), cpi_accounts); + let cpi_context = anchor_lang::context::CpiContext::new(system_program.key(), cpi_accounts); anchor_lang::system_program::create_account(cpi_context.with_signer(&[#seeds_with_nonce]), lamports, space as u64, #owner)?; } else { require_keys_neq!(#payer.key(), #field.key(), anchor_lang::error::ErrorCode::TryingToInitPayerAsProgramAccount); @@ -1659,20 +1703,20 @@ fn generate_create_account( from: #payer.to_account_info(), to: #field.to_account_info(), }; - let cpi_context = anchor_lang::context::CpiContext::new(system_program.to_account_info(), cpi_accounts); + let cpi_context = anchor_lang::context::CpiContext::new(system_program.key(), cpi_accounts); anchor_lang::system_program::transfer(cpi_context, required_lamports)?; } // Allocate space. let cpi_accounts = anchor_lang::system_program::Allocate { account_to_allocate: #field.to_account_info() }; - let cpi_context = anchor_lang::context::CpiContext::new(system_program.to_account_info(), cpi_accounts); + let cpi_context = anchor_lang::context::CpiContext::new(system_program.key(), cpi_accounts); anchor_lang::system_program::allocate(cpi_context.with_signer(&[#seeds_with_nonce]), #space as u64)?; // Assign to the spl token program. let cpi_accounts = anchor_lang::system_program::Assign { account_to_assign: #field.to_account_info() }; - let cpi_context = anchor_lang::context::CpiContext::new(system_program.to_account_info(), cpi_accounts); + let cpi_context = anchor_lang::context::CpiContext::new(system_program.key(), cpi_accounts); anchor_lang::system_program::assign(cpi_context.with_signer(&[#seeds_with_nonce]), #owner)?; } } diff --git a/lang/syn/src/codegen/accounts/try_accounts.rs b/lang/syn/src/codegen/accounts/try_accounts.rs index 56b13375e5..d46c972c07 100644 --- a/lang/syn/src/codegen/accounts/try_accounts.rs +++ b/lang/syn/src/codegen/accounts/try_accounts.rs @@ -1,6 +1,6 @@ use crate::codegen::accounts::{bumps, constraints, generics, ParsedGenerics}; -use crate::{AccountField, AccountsStruct}; -use quote::quote; +use crate::{AccountField, AccountsStruct, Ty}; +use quote::{quote, quote_spanned}; use syn::Expr; // Generates the `Accounts` trait implementation. @@ -68,11 +68,21 @@ pub fn generate(accs: &AccountsStruct) -> proc_macro2::TokenStream { } else { let name = f.ident.to_string(); let typed_name = f.typed_ident(); + + // Generate the deprecation call if it is an AccountInfo + let warning = if matches!(f.ty, Ty::AccountInfo) { + quote_spanned! { f.ty_span => + ::anchor_lang::deprecated_account_info_usage(); + } + } else { + quote! {} + }; quote! { #[cfg(feature = "anchor-debug")] ::solana_program::log::sol_log(stringify!(#typed_name)); let #typed_name = anchor_lang::Accounts::try_accounts(__program_id, __accounts, __ix_data, __bumps, __reallocs) .map_err(|e| e.with_account_name(#name))?; + #warning } } } diff --git a/lang/syn/src/codegen/program/cpi.rs b/lang/syn/src/codegen/program/cpi.rs index 5b1e5828c3..afbbd8e0f4 100644 --- a/lang/syn/src/codegen/program/cpi.rs +++ b/lang/syn/src/codegen/program/cpi.rs @@ -44,7 +44,7 @@ pub fn generate(program: &Program) -> proc_macro2::TokenStream { .map_err(|_| anchor_lang::error::ErrorCode::InstructionDidNotSerialize)?; let accounts = ctx.to_account_metas(None); anchor_lang::solana_program::instruction::Instruction { - program_id: ctx.program.key(), + program_id: ctx.program_id, accounts, data, } diff --git a/lang/syn/src/codegen/program/handlers.rs b/lang/syn/src/codegen/program/handlers.rs index 1eb6d0214f..3f05a5e47a 100644 --- a/lang/syn/src/codegen/program/handlers.rs +++ b/lang/syn/src/codegen/program/handlers.rs @@ -197,7 +197,6 @@ fn generate_event_cpi_mod() -> proc_macro2::TokenStream { { let authority = crate::parser::accounts::event_cpi::EventAuthority::get(); let authority_name = authority.name; - let authority_seeds = authority.seeds; quote! { /// __events mod defines handler for self-cpi based event logging @@ -218,14 +217,12 @@ fn generate_event_cpi_mod() -> proc_macro2::TokenStream { .with_account_name(#authority_name)); } - let (expected_event_authority, _) = - Pubkey::find_program_address(&[#authority_seeds], &program_id); - if given_event_authority.key() != expected_event_authority { + if given_event_authority.key() != crate::EVENT_AUTHORITY_AND_BUMP.0 { return Err(anchor_lang::error::Error::from( anchor_lang::error::ErrorCode::ConstraintSeeds, ) .with_account_name(#authority_name) - .with_pubkeys((given_event_authority.key(), expected_event_authority))); + .with_pubkeys((given_event_authority.key(), crate::EVENT_AUTHORITY_AND_BUMP.0))); } Ok(()) diff --git a/lang/syn/src/codegen/program/idl.rs b/lang/syn/src/codegen/program/idl.rs index f45173c2f5..957ce1f87b 100644 --- a/lang/syn/src/codegen/program/idl.rs +++ b/lang/syn/src/codegen/program/idl.rs @@ -226,7 +226,7 @@ pub fn idl_accounts_and_functions() -> proc_macro2::TokenStream { let new_rent_minimum = sysvar_rent.minimum_balance(new_account_space); anchor_lang::system_program::transfer( anchor_lang::context::CpiContext::new( - accounts.system_program.to_account_info(), + accounts.system_program.key(), anchor_lang::system_program::Transfer { from: accounts.authority.to_account_info(), to: accounts.idl.to_account_info(), @@ -236,7 +236,7 @@ pub fn idl_accounts_and_functions() -> proc_macro2::TokenStream { .checked_sub(idl_ref.lamports()) .unwrap(), )?; - idl_ref.realloc(new_account_space, false)?; + idl_ref.resize(new_account_space)?; } Ok(()) diff --git a/lang/syn/src/idl/accounts.rs b/lang/syn/src/idl/accounts.rs index a66957bc71..b481281f46 100644 --- a/lang/syn/src/idl/accounts.rs +++ b/lang/syn/src/idl/accounts.rs @@ -146,10 +146,17 @@ fn get_address(acc: &Field) -> TokenStream { match &acc.ty { Ty::Program(_) | Ty::Sysvar(_) => { let ty = acc.account_ty(); - let id_trait = matches!(acc.ty, Ty::Program(_)) - .then(|| quote!(anchor_lang::Id)) - .unwrap_or_else(|| quote!(anchor_lang::solana_program::sysvar::SysvarId)); - quote! { Some(<#ty as #id_trait>::id().to_string()) } + // Check if this is the unit type marker (for generic Program<'info>) + let ty_str = quote!(#ty).to_string(); + if ty_str == "" || ty_str == "__SolanaProgramUnitType" { + // For generic programs, we don't have a specific address + quote! { None } + } else { + let id_trait = matches!(acc.ty, Ty::Program(_)) + .then(|| quote!(anchor_lang::Id)) + .unwrap_or_else(|| quote!(anchor_lang::solana_program::sysvar::SysvarId)); + quote! { Some(<#ty as #id_trait>::id().to_string()) } + } } _ => acc .constraints diff --git a/lang/syn/src/lib.rs b/lang/syn/src/lib.rs index 554b22e47c..e561350990 100644 --- a/lang/syn/src/lib.rs +++ b/lang/syn/src/lib.rs @@ -282,6 +282,7 @@ pub struct Field { pub constraints: ConstraintGroup, pub ty: Ty, pub is_optional: bool, + pub ty_span: Span, /// IDL Doc comment pub docs: Option>, } @@ -343,6 +344,20 @@ impl Field { Sysvar<#account> } } + Ty::Program(ty) => { + let program = &ty.account_type_path; + // Check if this is the generic Program<'info> (unit type) + let program_str = quote!(#program).to_string(); + if program_str == "__SolanaProgramUnitType" { + quote! { + #container_ty<'info> + } + } else { + quote! { + #container_ty<'info, #program> + } + } + } _ => quote! { #container_ty<#account_ty> }, @@ -542,8 +557,14 @@ impl Field { }, Ty::Program(ty) => { let program = &ty.account_type_path; - quote! { - #program + // Check if this is the special marker for generic Program<'info> (unit type) + let program_str = quote!(#program).to_string(); + if program_str == "__SolanaProgramUnitType" { + quote! {} + } else { + quote! { + #program + } } } Ty::Interface(ty) => { @@ -873,17 +894,107 @@ pub struct ConstraintInitGroup { pub kind: InitKind, } +/// Seeds can be written as a literal slice (`[ a, b ]`) or any +/// expression that produces `&[&[u8]]` at run time. +#[derive(Debug, Clone)] +pub enum SeedsExpr { + /// Example: `[ b"prefix".as_ref(), key.as_ref() ]` + List(Punctuated), + /// Example: `pda_seeds(key)` + Expr(Box), +} + +impl SeedsExpr { + /// Return the underlying `Punctuated` if this is the `List` form. + fn list_mut(&mut self) -> Option<&mut Punctuated> { + match self { + SeedsExpr::List(list) => Some(list), + SeedsExpr::Expr(_) => None, + } + } + + /// Mirrors `Punctuated::pop`: removes and returns the last element and its + /// trailing punctuation when this is the `List` variant. For the `Expr variant`, + /// which represents a single non-list seed expression, returns `None` because + /// there is no list to pop from. + pub fn pop(&mut self) -> Option> { + self.list_mut()?.pop() + } + + pub fn push_value(&mut self, value: Expr) { + if let Some(list) = self.list_mut() { + list.push_value(value); + } + } + + /// Mirrors `Punctuated::push_value`: pushes a value without punctuation onto + /// the underlying list when this is the `List` variant. No-op for the `Expr` + /// variant. + pub fn is_empty(&self) -> bool { + match self { + SeedsExpr::List(list) => list.is_empty(), + SeedsExpr::Expr(_) => false, // Treat as “one seed” + } + } + + /// Immutable iteration over every seed expression, regardless of variant + pub fn iter(&self) -> Box + '_> { + match self { + SeedsExpr::List(list) => Box::new(list.iter()), + SeedsExpr::Expr(expr) => Box::new(std::iter::once(expr.as_ref())), + } + } + + /// The number of seeds represented: `list.len()` for `List` and `1` for `Expr`. + pub fn len(&self) -> usize { + match self { + SeedsExpr::List(list) => list.len(), + SeedsExpr::Expr(_) => 1, + } + } +} + +/// Allow `quote!{ #seeds }` +impl quote::ToTokens for SeedsExpr { + fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) { + match self { + SeedsExpr::List(list) => list.to_tokens(tokens), + SeedsExpr::Expr(expr) => expr.to_tokens(tokens), + } + } +} + +impl syn::parse::Parse for SeedsExpr { + fn parse(stream: syn::parse::ParseStream) -> syn::parse::Result { + if stream.peek(syn::token::Bracket) { + let content; + syn::bracketed!(content in stream); + let mut list: Punctuated = content.parse_terminated(Expr::parse)?; + + // Strip a trailing comma if present. + // Use `pop_punct` when we update to syn 2.0 + if let Some(pair) = list.pop() { + list.push_value(pair.into_value()); + } + + Ok(SeedsExpr::List(list)) + } else { + Ok(SeedsExpr::Expr(Box::new(stream.parse()?))) + } + } +} + #[derive(Debug, Clone)] pub struct ConstraintSeedsGroup { pub is_init: bool, - pub seeds: Punctuated, + pub seeds: SeedsExpr, pub bump: Option, // None => bump was given without a target. pub program_seed: Option, // None => use the current program's program_id. } #[derive(Debug, Clone)] pub struct ConstraintSeeds { - pub seeds: Punctuated, + pub seeds: SeedsExpr, } #[derive(Debug, Clone)] diff --git a/lang/syn/src/parser/accounts/constraints.rs b/lang/syn/src/parser/accounts/constraints.rs index 39617ea486..02b5c1f31b 100644 --- a/lang/syn/src/parser/accounts/constraints.rs +++ b/lang/syn/src/parser/accounts/constraints.rs @@ -1,6 +1,6 @@ use crate::*; use syn::parse::{Error as ParseError, Result as ParseResult}; -use syn::{bracketed, Token}; +use syn::{Expr, Ident, Token}; pub fn parse(f: &syn::Field, f_ty: Option<&Ty>) -> ParseResult { let mut constraints = ConstraintGroupBuilder::new(f_ty); @@ -364,14 +364,9 @@ pub fn parse_token(stream: ParseStream) -> ParseResult { .span() .join(stream.span()) .unwrap_or_else(|| ident.span()); - let seeds; - let bracket = bracketed!(seeds in stream); - ConstraintToken::Seeds(Context::new( - span.join(bracket.span).unwrap_or(span), - ConstraintSeeds { - seeds: seeds.parse_terminated(Expr::parse)?, - }, - )) + + let seeds_expr: SeedsExpr = stream.parse()?; + ConstraintToken::Seeds(Context::new(span, ConstraintSeeds { seeds: seeds_expr })) } } "realloc" => { diff --git a/lang/syn/src/parser/accounts/event_cpi.rs b/lang/syn/src/parser/accounts/event_cpi.rs index fccbd2b3f4..aa686c101c 100644 --- a/lang/syn/src/parser/accounts/event_cpi.rs +++ b/lang/syn/src/parser/accounts/event_cpi.rs @@ -52,7 +52,6 @@ pub fn add_event_cpi_accounts( let authority = EventAuthority::get(); let authority_name = authority.name_token_stream(); - let authority_seeds = authority.seeds; let accounts_struct = quote! { #(#attrs)* @@ -60,7 +59,7 @@ pub fn add_event_cpi_accounts( #(#fields,)* /// CHECK: Only the event authority can invoke self-CPI - #[account(seeds = [#authority_seeds], bump)] + #[account(address = crate::EVENT_AUTHORITY_AND_BUMP.0)] pub #authority_name: AccountInfo<#info_lifetime>, /// CHECK: Self-CPI will fail if the program is not the current program pub program: AccountInfo<#info_lifetime>, diff --git a/lang/syn/src/parser/accounts/mod.rs b/lang/syn/src/parser/accounts/mod.rs index 2f28d5dac2..83f82d60d8 100644 --- a/lang/syn/src/parser/accounts/mod.rs +++ b/lang/syn/src/parser/accounts/mod.rs @@ -315,6 +315,7 @@ pub fn parse_account_field(f: &syn::Field) -> ParseResult { ty, is_optional, constraints: account_constraints, + ty_span: f.ty.span(), docs, }) } @@ -476,7 +477,7 @@ fn parse_interface_account_ty(path: &syn::Path) -> ParseResult ParseResult { - let account_type_path = parse_account(path)?; + let account_type_path = parse_program_account(path)?; Ok(ProgramTy { account_type_path }) } @@ -485,6 +486,52 @@ fn parse_interface_ty(path: &syn::Path) -> ParseResult { Ok(InterfaceTy { account_type_path }) } +// Special parsing function for Program that handles both Program<'info> and Program<'info, T> +fn parse_program_account(path: &syn::Path) -> ParseResult { + let segments = &path.segments[0]; + match &segments.arguments { + syn::PathArguments::AngleBracketed(args) => { + match args.args.len() { + // Program<'info> - only lifetime, no type parameter + 1 => { + // Create a special marker for unit type that gets handled later + use syn::{Path, PathSegment, PathArguments}; + let path_segment = PathSegment { + ident: syn::Ident::new("__SolanaProgramUnitType", proc_macro2::Span::call_site()), + arguments: PathArguments::None, + }; + + Ok(syn::TypePath { + qself: None, + path: Path { + leading_colon: None, + segments: std::iter::once(path_segment).collect(), + }, + }) + } + // Program<'info, T> - lifetime and type + 2 => { + match &args.args[1] { + syn::GenericArgument::Type(syn::Type::Path(ty_path)) => Ok(ty_path.clone()), + _ => Err(ParseError::new( + args.args[1].span(), + "second bracket argument must be a type", + )), + } + } + _ => Err(ParseError::new( + args.args.span(), + "Program must have either just a lifetime (Program<'info>) or a lifetime and type (Program<'info, T>)", + )), + } + } + _ => Err(ParseError::new( + segments.arguments.span(), + "expected angle brackets with lifetime or lifetime and type", + )), + } +} + // TODO: this whole method is a hack. Do something more idiomatic. fn parse_account(mut path: &syn::Path) -> ParseResult { let path_str = parser::tts_to_string(path).replace(' ', ""); diff --git a/lang/tests/generics_test.rs b/lang/tests/generics_test.rs index 2c2d9c5182..afa755295b 100644 --- a/lang/tests/generics_test.rs +++ b/lang/tests/generics_test.rs @@ -1,9 +1,10 @@ -#![allow(dead_code)] +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(dead_code, deprecated)] use anchor_lang::prelude::borsh::maybestd::io::Write; use anchor_lang::prelude::*; use borsh::{BorshDeserialize, BorshSerialize}; -use solana_program::pubkey::Pubkey; +use solana_pubkey::Pubkey; // Needed to declare accounts. declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); diff --git a/lang/tests/seeds_compile.rs b/lang/tests/seeds_compile.rs new file mode 100644 index 0000000000..6b4a2ba1be --- /dev/null +++ b/lang/tests/seeds_compile.rs @@ -0,0 +1,56 @@ +//! Ensures the `seeds = …` attribute accepts both +//! 1. A literal slice `[ … ]`, and +//! 2. An arbitrary expression that evaluates to `&[&[u8]]`. +//! +//! The file only needs to **compile**; no runtime logic executes. +// +//! Implementation note on leaks: we leak a few bytes per call in +//! `pda_seeds`. That is harmless for on‑chain programs because the +//! binary never unloads. Once the Anchor tests can use nightly we can +//! replace it with a `const fn` + `OnceLock` that avoids the leak. + +#![allow(dead_code)] + +use anchor_lang::prelude::*; + +declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); + +const PREFIX: &[u8] = b"prefix"; + +/// Builds a `'static` seed slice from `key` +fn pda_seeds(key: Pubkey) -> &'static [&'static [u8]] { + let key_bytes: &'static [u8; 32] = Box::leak(Box::new(key.to_bytes())); + // leak `[PREFIX, key_bytes]` and coerce to a slice + Box::leak(Box::new([PREFIX, key_bytes])) as &'static [&[u8]] +} + +#[derive(Accounts)] +pub struct LiteralSeeds<'info> { + #[account( + // Literal list parsed as `SeedsExpr::List` + seeds = [PREFIX, user.key().as_ref()], + bump + )] + pda: Account<'info, Dummy>, + #[account( + // Literal list with a trailing comma parsed as `SeedsExpr::List` + seeds = [PREFIX, user.key().as_ref(),], + bump + )] + user: Signer<'info>, +} + +#[derive(Accounts)] +pub struct ExprSeeds<'info> { + #[account( + // Expression parsed as `SeedsExpr::Expr` + seeds = pda_seeds(user.key()), + bump + )] + pda: Account<'info, Dummy>, + user: Signer<'info>, +} + +/// Dummy account so the structs derive cleanly +#[account] +pub struct Dummy {} diff --git a/setup-tests.sh b/setup-tests.sh index 3820504a7d..b044113c00 100755 --- a/setup-tests.sh +++ b/setup-tests.sh @@ -1,8 +1,8 @@ #!/bin/bash active_version=$(solana -V | awk '{print $2}') -if [ "$active_version" != "2.1.0" ]; then - agave-install init 2.1.0 +if [ "$active_version" != "2.3.0" ]; then + agave-install init 2.3.0 fi git submodule update --init --recursive --depth 1 diff --git a/spl/Cargo.toml b/spl/Cargo.toml index 8c5ec66baf..1197ca0b0c 100644 --- a/spl/Cargo.toml +++ b/spl/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anchor-spl" -version = "0.31.1" +version = "0.32.1" authors = ["Anchor Maintainers "] edition = "2021" license = "Apache-2.0" @@ -23,16 +23,21 @@ mint = [] stake = ["borsh"] token = ["spl-token"] token_2022 = ["spl-token-2022"] -token_2022_extensions = ["spl-token-2022", "spl-token-group-interface", "spl-token-metadata-interface", "spl-pod"] +token_2022_extensions = [ + "spl-token-2022", + "spl-token-group-interface", + "spl-token-metadata-interface", + "spl-pod", +] [dependencies] -anchor-lang = { path = "../lang", version = "0.31.1", features = ["derive"] } +anchor-lang = { path = "../lang", version = "0.32.1", features = ["derive"] } borsh = { version = "0.10.3", optional = true } mpl-token-metadata = { version = "5", optional = true } -spl-associated-token-account = { version = "6", features = ["no-entrypoint"], optional = true } +spl-associated-token-account = { version = "7", features = ["no-entrypoint"], optional = true } spl-memo = { version = "6", features = ["no-entrypoint"], optional = true } -spl-token = { version = "7", features = ["no-entrypoint"], optional = true } -spl-token-2022 = { version = "6", features = ["no-entrypoint"], optional = true } -spl-token-group-interface = { version = "0.5", optional = true } -spl-token-metadata-interface = { version = "0.6", optional = true } spl-pod = { version = "0.5", optional = true } +spl-token = { version = "8", features = ["no-entrypoint"], optional = true } +spl-token-2022 = { version = "8", features = ["no-entrypoint"], optional = true } +spl-token-group-interface = { version = "0.6", optional = true } +spl-token-metadata-interface = { version = "0.7", optional = true } diff --git a/spl/src/associated_token.rs b/spl/src/associated_token.rs index 5b5036677c..f95f4cc0ac 100644 --- a/spl/src/associated_token.rs +++ b/spl/src/associated_token.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token.rs b/spl/src/token.rs index 3eff073c95..c15cddf07a 100644 --- a/spl/src/token.rs +++ b/spl/src/token.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::program_pack::Pack; use anchor_lang::solana_program::pubkey::Pubkey; diff --git a/spl/src/token_2022.rs b/spl/src/token_2022.rs index 1d9bcaf039..0cc205f971 100644 --- a/spl/src/token_2022.rs +++ b/spl/src/token_2022.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; @@ -16,7 +18,7 @@ pub fn transfer<'info>( ) -> Result<()> { #[allow(deprecated)] let ix = spl_token_2022::instruction::transfer( - ctx.program.key, + &ctx.program_id, ctx.accounts.from.key, ctx.accounts.to.key, ctx.accounts.authority.key, @@ -37,7 +39,7 @@ pub fn transfer_checked<'info>( decimals: u8, ) -> Result<()> { let ix = spl_token_2022::instruction::transfer_checked( - ctx.program.key, + &ctx.program_id, ctx.accounts.from.key, ctx.accounts.mint.key, ctx.accounts.to.key, @@ -64,7 +66,7 @@ pub fn mint_to<'info>( amount: u64, ) -> Result<()> { let ix = spl_token_2022::instruction::mint_to( - ctx.program.key, + &ctx.program_id, ctx.accounts.mint.key, ctx.accounts.to.key, ctx.accounts.authority.key, @@ -85,7 +87,7 @@ pub fn mint_to_checked<'info>( decimals: u8, ) -> Result<()> { let ix = spl_token_2022::instruction::mint_to_checked( - ctx.program.key, + &ctx.program_id, ctx.accounts.mint.key, ctx.accounts.to.key, ctx.accounts.authority.key, @@ -103,7 +105,7 @@ pub fn mint_to_checked<'info>( pub fn burn<'info>(ctx: CpiContext<'_, '_, '_, 'info, Burn<'info>>, amount: u64) -> Result<()> { let ix = spl_token_2022::instruction::burn( - ctx.program.key, + &ctx.program_id, ctx.accounts.from.key, ctx.accounts.mint.key, ctx.accounts.authority.key, @@ -124,7 +126,7 @@ pub fn burn_checked<'info>( decimals: u8, ) -> Result<()> { let ix = spl_token_2022::instruction::burn_checked( - ctx.program.key, + &ctx.program_id, ctx.accounts.from.key, ctx.accounts.mint.key, ctx.accounts.authority.key, @@ -145,7 +147,7 @@ pub fn approve<'info>( amount: u64, ) -> Result<()> { let ix = spl_token_2022::instruction::approve( - ctx.program.key, + &ctx.program_id, ctx.accounts.to.key, ctx.accounts.delegate.key, ctx.accounts.authority.key, @@ -170,7 +172,7 @@ pub fn approve_checked<'info>( decimals: u8, ) -> Result<()> { let ix = spl_token_2022::instruction::approve_checked( - ctx.program.key, + &ctx.program_id, ctx.accounts.to.key, ctx.accounts.mint.key, ctx.accounts.delegate.key, @@ -194,7 +196,7 @@ pub fn approve_checked<'info>( pub fn revoke<'info>(ctx: CpiContext<'_, '_, '_, 'info, Revoke<'info>>) -> Result<()> { let ix = spl_token_2022::instruction::revoke( - ctx.program.key, + &ctx.program_id, ctx.accounts.source.key, ctx.accounts.authority.key, &[], @@ -211,7 +213,7 @@ pub fn initialize_account<'info>( ctx: CpiContext<'_, '_, '_, 'info, InitializeAccount<'info>>, ) -> Result<()> { let ix = spl_token_2022::instruction::initialize_account( - ctx.program.key, + &ctx.program_id, ctx.accounts.account.key, ctx.accounts.mint.key, ctx.accounts.authority.key, @@ -232,7 +234,7 @@ pub fn initialize_account3<'info>( ctx: CpiContext<'_, '_, '_, 'info, InitializeAccount3<'info>>, ) -> Result<()> { let ix = spl_token_2022::instruction::initialize_account3( - ctx.program.key, + &ctx.program_id, ctx.accounts.account.key, ctx.accounts.mint.key, ctx.accounts.authority.key, @@ -243,7 +245,7 @@ pub fn initialize_account3<'info>( pub fn close_account<'info>(ctx: CpiContext<'_, '_, '_, 'info, CloseAccount<'info>>) -> Result<()> { let ix = spl_token_2022::instruction::close_account( - ctx.program.key, + &ctx.program_id, ctx.accounts.account.key, ctx.accounts.destination.key, ctx.accounts.authority.key, @@ -265,7 +267,7 @@ pub fn freeze_account<'info>( ctx: CpiContext<'_, '_, '_, 'info, FreezeAccount<'info>>, ) -> Result<()> { let ix = spl_token_2022::instruction::freeze_account( - ctx.program.key, + &ctx.program_id, ctx.accounts.account.key, ctx.accounts.mint.key, ctx.accounts.authority.key, @@ -285,7 +287,7 @@ pub fn freeze_account<'info>( pub fn thaw_account<'info>(ctx: CpiContext<'_, '_, '_, 'info, ThawAccount<'info>>) -> Result<()> { let ix = spl_token_2022::instruction::thaw_account( - ctx.program.key, + &ctx.program_id, ctx.accounts.account.key, ctx.accounts.mint.key, ctx.accounts.authority.key, @@ -310,7 +312,7 @@ pub fn initialize_mint<'info>( freeze_authority: Option<&Pubkey>, ) -> Result<()> { let ix = spl_token_2022::instruction::initialize_mint( - ctx.program.key, + &ctx.program_id, ctx.accounts.mint.key, authority, freeze_authority, @@ -327,7 +329,7 @@ pub fn initialize_mint2<'info>( freeze_authority: Option<&Pubkey>, ) -> Result<()> { let ix = spl_token_2022::instruction::initialize_mint2( - ctx.program.key, + &ctx.program_id, ctx.accounts.mint.key, authority, freeze_authority, @@ -342,7 +344,7 @@ pub fn set_authority<'info>( new_authority: Option, ) -> Result<()> { let ix = spl_token_2022::instruction::set_authority( - ctx.program.key, + &ctx.program_id, ctx.accounts.account_or_mint.key, new_authority.as_ref(), authority_type, @@ -358,7 +360,7 @@ pub fn set_authority<'info>( } pub fn sync_native<'info>(ctx: CpiContext<'_, '_, '_, 'info, SyncNative<'info>>) -> Result<()> { - let ix = spl_token_2022::instruction::sync_native(ctx.program.key, ctx.accounts.account.key)?; + let ix = spl_token_2022::instruction::sync_native(&ctx.program_id, ctx.accounts.account.key)?; anchor_lang::solana_program::program::invoke(&ix, &[ctx.accounts.account]).map_err(Into::into) } @@ -367,7 +369,7 @@ pub fn get_account_data_size<'info>( extension_types: &[spl_token_2022::extension::ExtensionType], ) -> Result { let ix = spl_token_2022::instruction::get_account_data_size( - ctx.program.key, + &ctx.program_id, ctx.accounts.mint.key, extension_types, )?; @@ -375,7 +377,7 @@ pub fn get_account_data_size<'info>( anchor_lang::solana_program::program::get_return_data() .ok_or(anchor_lang::solana_program::program_error::ProgramError::InvalidInstructionData) .and_then(|(key, data)| { - if key != *ctx.program.key { + if key != ctx.program_id { Err(anchor_lang::solana_program::program_error::ProgramError::IncorrectProgramId) } else { data.try_into().map(u64::from_le_bytes).map_err(|_| { @@ -391,7 +393,7 @@ pub fn initialize_mint_close_authority<'info>( close_authority: Option<&Pubkey>, ) -> Result<()> { let ix = spl_token_2022::instruction::initialize_mint_close_authority( - ctx.program.key, + &ctx.program_id, ctx.accounts.mint.key, close_authority, )?; @@ -402,7 +404,7 @@ pub fn initialize_immutable_owner<'info>( ctx: CpiContext<'_, '_, '_, 'info, InitializeImmutableOwner<'info>>, ) -> Result<()> { let ix = spl_token_2022::instruction::initialize_immutable_owner( - ctx.program.key, + &ctx.program_id, ctx.accounts.account.key, )?; anchor_lang::solana_program::program::invoke(&ix, &[ctx.accounts.account]).map_err(Into::into) @@ -413,7 +415,7 @@ pub fn amount_to_ui_amount<'info>( amount: u64, ) -> Result { let ix = spl_token_2022::instruction::amount_to_ui_amount( - ctx.program.key, + &ctx.program_id, ctx.accounts.account.key, amount, )?; @@ -421,7 +423,7 @@ pub fn amount_to_ui_amount<'info>( anchor_lang::solana_program::program::get_return_data() .ok_or(anchor_lang::solana_program::program_error::ProgramError::InvalidInstructionData) .and_then(|(key, data)| { - if key != *ctx.program.key { + if key != ctx.program_id { Err(anchor_lang::solana_program::program_error::ProgramError::IncorrectProgramId) } else { String::from_utf8(data).map_err(|_| { @@ -437,7 +439,7 @@ pub fn ui_amount_to_amount<'info>( ui_amount: &str, ) -> Result { let ix = spl_token_2022::instruction::ui_amount_to_amount( - ctx.program.key, + &ctx.program_id, ctx.accounts.account.key, ui_amount, )?; @@ -445,7 +447,7 @@ pub fn ui_amount_to_amount<'info>( anchor_lang::solana_program::program::get_return_data() .ok_or(anchor_lang::solana_program::program_error::ProgramError::InvalidInstructionData) .and_then(|(key, data)| { - if key != *ctx.program.key { + if key != ctx.program_id { Err(anchor_lang::solana_program::program_error::ProgramError::IncorrectProgramId) } else { data.try_into().map(u64::from_le_bytes).map_err(|_| { diff --git a/spl/src/token_2022_extensions/cpi_guard.rs b/spl/src/token_2022_extensions/cpi_guard.rs index d0baa12a1e..ee096a10be 100644 --- a/spl/src/token_2022_extensions/cpi_guard.rs +++ b/spl/src/token_2022_extensions/cpi_guard.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/default_account_state.rs b/spl/src/token_2022_extensions/default_account_state.rs index 2d722d1536..6b98fdf5a7 100644 --- a/spl/src/token_2022_extensions/default_account_state.rs +++ b/spl/src/token_2022_extensions/default_account_state.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/group_member_pointer.rs b/spl/src/token_2022_extensions/group_member_pointer.rs index f38df273b6..f76f5ea771 100644 --- a/spl/src/token_2022_extensions/group_member_pointer.rs +++ b/spl/src/token_2022_extensions/group_member_pointer.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/group_pointer.rs b/spl/src/token_2022_extensions/group_pointer.rs index 3758fb6c6a..3c925e3a31 100644 --- a/spl/src/token_2022_extensions/group_pointer.rs +++ b/spl/src/token_2022_extensions/group_pointer.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/immutable_owner.rs b/spl/src/token_2022_extensions/immutable_owner.rs index eb66d8e60b..d9e58f56bc 100644 --- a/spl/src/token_2022_extensions/immutable_owner.rs +++ b/spl/src/token_2022_extensions/immutable_owner.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/interest_bearing_mint.rs b/spl/src/token_2022_extensions/interest_bearing_mint.rs index 214f11a858..3c66c16a0b 100644 --- a/spl/src/token_2022_extensions/interest_bearing_mint.rs +++ b/spl/src/token_2022_extensions/interest_bearing_mint.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/memo_transfer.rs b/spl/src/token_2022_extensions/memo_transfer.rs index 0d0d62fbf1..3f2a932107 100644 --- a/spl/src/token_2022_extensions/memo_transfer.rs +++ b/spl/src/token_2022_extensions/memo_transfer.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/metadata_pointer.rs b/spl/src/token_2022_extensions/metadata_pointer.rs index fadf2a7525..79c5f5431e 100644 --- a/spl/src/token_2022_extensions/metadata_pointer.rs +++ b/spl/src/token_2022_extensions/metadata_pointer.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/mint_close_authority.rs b/spl/src/token_2022_extensions/mint_close_authority.rs index 239ed539ac..9a42ec72b6 100644 --- a/spl/src/token_2022_extensions/mint_close_authority.rs +++ b/spl/src/token_2022_extensions/mint_close_authority.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/non_transferable.rs b/spl/src/token_2022_extensions/non_transferable.rs index 4f6dda0fe0..dacbd29640 100644 --- a/spl/src/token_2022_extensions/non_transferable.rs +++ b/spl/src/token_2022_extensions/non_transferable.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/permanent_delegate.rs b/spl/src/token_2022_extensions/permanent_delegate.rs index ee774625d5..bf8012db68 100644 --- a/spl/src/token_2022_extensions/permanent_delegate.rs +++ b/spl/src/token_2022_extensions/permanent_delegate.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/token_group.rs b/spl/src/token_2022_extensions/token_group.rs index cb85e03514..940bba7805 100644 --- a/spl/src/token_2022_extensions/token_group.rs +++ b/spl/src/token_2022_extensions/token_group.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/token_metadata.rs b/spl/src/token_2022_extensions/token_metadata.rs index 9573fc74df..5a64c9f697 100644 --- a/spl/src/token_2022_extensions/token_metadata.rs +++ b/spl/src/token_2022_extensions/token_metadata.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/transfer_fee.rs b/spl/src/token_2022_extensions/transfer_fee.rs index 708d905d30..0282da5c1e 100644 --- a/spl/src/token_2022_extensions/transfer_fee.rs +++ b/spl/src/token_2022_extensions/transfer_fee.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/spl/src/token_2022_extensions/transfer_hook.rs b/spl/src/token_2022_extensions/transfer_hook.rs index af9df215cc..6d20790acb 100644 --- a/spl/src/token_2022_extensions/transfer_hook.rs +++ b/spl/src/token_2022_extensions/transfer_hook.rs @@ -1,3 +1,5 @@ +// Avoiding AccountInfo deprecated msg in anchor context +#![allow(deprecated)] use anchor_lang::solana_program::account_info::AccountInfo; use anchor_lang::solana_program::pubkey::Pubkey; use anchor_lang::Result; diff --git a/tests/anchor-cli-account/package.json b/tests/anchor-cli-account/package.json index b355111830..0a6ca56176 100644 --- a/tests/anchor-cli-account/package.json +++ b/tests/anchor-cli-account/package.json @@ -1,6 +1,6 @@ { "name": "anchor-cli-account", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/anchor-cli-idl/package.json b/tests/anchor-cli-idl/package.json index 6a5bbfba94..ff6d40ce41 100644 --- a/tests/anchor-cli-idl/package.json +++ b/tests/anchor-cli-idl/package.json @@ -1,6 +1,6 @@ { "name": "anchor-cli-idl", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/auction-house/Cargo.lock b/tests/auction-house/Cargo.lock index ab6d02d958..15d2aa5101 100644 --- a/tests/auction-house/Cargo.lock +++ b/tests/auction-house/Cargo.lock @@ -61,7 +61,7 @@ dependencies = [ [[package]] name = "anchor-attribute-access-control" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "proc-macro2", @@ -71,7 +71,7 @@ dependencies = [ [[package]] name = "anchor-attribute-account" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "bs58", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "anchor-attribute-constant" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -91,7 +91,7 @@ dependencies = [ [[package]] name = "anchor-attribute-error" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -100,7 +100,7 @@ dependencies = [ [[package]] name = "anchor-attribute-event" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "proc-macro2", @@ -110,7 +110,7 @@ dependencies = [ [[package]] name = "anchor-attribute-program" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-lang-idl", "anchor-syn", @@ -125,7 +125,7 @@ dependencies = [ [[package]] name = "anchor-derive-accounts" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "anchor-derive-serde" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "borsh-derive-internal", @@ -145,7 +145,7 @@ dependencies = [ [[package]] name = "anchor-derive-space" -version = "0.31.1" +version = "0.32.1" dependencies = [ "proc-macro2", "quote", @@ -154,7 +154,7 @@ dependencies = [ [[package]] name = "anchor-lang" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-attribute-access-control", "anchor-attribute-account", @@ -170,7 +170,27 @@ dependencies = [ "bincode", "borsh 0.10.4", "bytemuck", - "solana-program", + "const-crypto", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-define-syscall", + "solana-feature-gate-interface", + "solana-instruction", + "solana-instructions-sysvar", + "solana-invoke", + "solana-loader-v3-interface 3.0.0", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", "thiserror 1.0.69", ] @@ -197,7 +217,7 @@ dependencies = [ [[package]] name = "anchor-spl" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-lang", "mpl-token-metadata", @@ -211,7 +231,7 @@ dependencies = [ [[package]] name = "anchor-syn" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anyhow", "bs58", @@ -505,6 +525,16 @@ dependencies = [ "web-sys", ] +[[package]] +name = "const-crypto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c06f1eb05f06cf2e380fdded278fbf056a38974299d77960555a311dcf91a52" +dependencies = [ + "keccak-const", + "sha2-const-stable", +] + [[package]] name = "constant_time_eq" version = "0.3.1" @@ -775,6 +805,12 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-const" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" + [[package]] name = "lazy_static" version = "1.5.0" @@ -1293,6 +1329,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" @@ -1609,6 +1651,19 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-invoke" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f5693c6de226b3626658377168b0184e94e8292ff16e3d31d4766e65627565" +dependencies = [ + "solana-account-info", + "solana-define-syscall", + "solana-instruction", + "solana-program-entrypoint", + "solana-stable-layout", +] + [[package]] name = "solana-keccak-hasher" version = "2.2.1" @@ -1648,6 +1703,21 @@ dependencies = [ "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" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + [[package]] name = "solana-loader-v3-interface" version = "5.0.0" @@ -1777,7 +1847,7 @@ dependencies = [ "solana-keccak-hasher", "solana-last-restart-slot", "solana-loader-v2-interface", - "solana-loader-v3-interface", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-message", "solana-msg", @@ -2218,9 +2288,9 @@ dependencies = [ [[package]] name = "spl-associated-token-account" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76fee7d65013667032d499adc3c895e286197a35a0d3a4643c80e7fd3e9969e3" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" dependencies = [ "borsh 1.5.7", "num-derive 0.4.2", @@ -2229,7 +2299,7 @@ dependencies = [ "spl-associated-token-account-client", "spl-token", "spl-token-2022", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] @@ -2280,12 +2350,22 @@ dependencies = [ [[package]] name = "spl-elgamal-registry" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" dependencies = [ "bytemuck", - "solana-program", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", "solana-zk-sdk", "spl-pod", "spl-token-confidential-transfer-proof-extraction", @@ -2327,22 +2407,24 @@ dependencies = [ [[package]] name = "spl-program-error" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" dependencies = [ "num-derive 0.4.2", "num-traits", - "solana-program", + "solana-decode-error", + "solana-msg", + "solana-program-error", "spl-program-error-derive", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-program-error-derive" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" dependencies = [ "proc-macro2", "quote", @@ -2352,9 +2434,9 @@ dependencies = [ [[package]] name = "spl-tlv-account-resolution" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd99ff1e9ed2ab86e3fd582850d47a739fec1be9f4661cba1782d3a0f26805f3" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -2369,37 +2451,66 @@ dependencies = [ "spl-pod", "spl-program-error", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-token" -version = "7.0.0" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed320a6c934128d4f7e54fe00e16b8aeaecf215799d060ae14f93378da6dc834" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" dependencies = [ "arrayref", "bytemuck", "num-derive 0.4.2", "num-traits", "num_enum", - "solana-program", - "thiserror 1.0.69", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sysvar", + "thiserror 2.0.14", ] [[package]] name = "spl-token-2022" -version = "6.0.0" +version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b27f7405010ef816587c944536b0eafbcc35206ab6ba0f2ca79f1d28e488f4f" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" dependencies = [ "arrayref", "bytemuck", "num-derive 0.4.2", "num-traits", "num_enum", - "solana-program", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-native-token", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", "solana-security-txt", + "solana-system-interface", + "solana-sysvar", "solana-zk-sdk", "spl-elgamal-registry", "spl-memo", @@ -2412,14 +2523,14 @@ dependencies = [ "spl-token-metadata-interface", "spl-transfer-hook-interface", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-token-confidential-transfer-ciphertext-arithmetic" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170378693c5516090f6d37ae9bad2b9b6125069be68d9acd4865bbe9fc8499fd" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" dependencies = [ "base64 0.22.1", "bytemuck", @@ -2429,13 +2540,19 @@ dependencies = [ [[package]] name = "spl-token-confidential-transfer-proof-extraction" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" dependencies = [ "bytemuck", + "solana-account-info", "solana-curve25519", - "solana-program", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", "solana-zk-sdk", "spl-pod", "thiserror 2.0.14", @@ -2443,20 +2560,20 @@ dependencies = [ [[package]] name = "spl-token-confidential-transfer-proof-generation" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8627184782eec1894de8ea26129c61303f1f0adeed65c20e0b10bc584f09356d" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" dependencies = [ "curve25519-dalek", "solana-zk-sdk", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-token-group-interface" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d595667ed72dbfed8c251708f406d7c2814a3fa6879893b323d56a10bedfc799" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -2468,14 +2585,14 @@ dependencies = [ "solana-pubkey", "spl-discriminator", "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-token-metadata-interface" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" dependencies = [ "borsh 1.5.7", "num-derive 0.4.2", @@ -2489,14 +2606,14 @@ dependencies = [ "spl-discriminator", "spl-pod", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-transfer-hook-interface" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa7503d52107c33c88e845e1351565050362c2314036ddf19a36cd25137c043" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" dependencies = [ "arrayref", "bytemuck", @@ -2514,14 +2631,14 @@ dependencies = [ "spl-program-error", "spl-tlv-account-resolution", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-type-length-value" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba70ef09b13af616a4c987797870122863cba03acc4284f226a4473b043923f9" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -2532,7 +2649,7 @@ dependencies = [ "solana-program-error", "spl-discriminator", "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] diff --git a/tests/auction-house/package.json b/tests/auction-house/package.json index 7c905cac54..d8a11bd436 100644 --- a/tests/auction-house/package.json +++ b/tests/auction-house/package.json @@ -1,6 +1,6 @@ { "name": "auction-house", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/auction-house/tests/auction-house.ts b/tests/auction-house/tests/auction-house.ts index 220ae7faa2..51fa015a4e 100644 --- a/tests/auction-house/tests/auction-house.ts +++ b/tests/auction-house/tests/auction-house.ts @@ -112,7 +112,10 @@ describe("auction-house", () => { mintAuthority: authority, } ); - await getProvider().sendAndConfirm(tx); + await getProvider().sendAndConfirm(tx, [], { + maxRetries: 3, + skipPreflight: true, + }); }); it("Creates token accounts for the NFT", async () => { @@ -184,7 +187,10 @@ describe("auction-house", () => { lamports: 100 * 10 ** 9, }) ); - const txSig = await getProvider().sendAndConfirm(tx); + const txSig = await getProvider().sendAndConfirm(tx, [], { + maxRetries: 3, + skipPreflight: true, + }); console.log("fund buyer:", txSig); }); @@ -421,7 +427,10 @@ describe("auction-house", () => { .instruction() ); - const txSig = await authorityClient.provider.sendAndConfirm(tx); + const txSig = await authorityClient.provider.sendAndConfirm(tx, [], { + maxRetries: 3, + skipPreflight: true, + }); console.log("updateAuctionHouse:", txSig); const newAh = await authorityClient.account.auctionHouse.fetch( diff --git a/tests/bench/bench.json b/tests/bench/bench.json index 65517278b3..ee31c99c76 100644 --- a/tests/bench/bench.json +++ b/tests/bench/bench.json @@ -1301,64 +1301,64 @@ } } }, - "unreleased": { + "0.32.0": { "solanaVersion": "2.1.0", "result": { "binarySize": { - "bench": 1041928 + "bench": 945568 }, "computeUnits": { "accountInfo1": 571, "accountInfo2": 895, "accountInfo4": 1553, "accountInfo8": 2923, - "accountEmptyInit1": 5083, + "accountEmptyInit1": 4784, "accountEmpty1": 645, - "accountEmptyInit2": 9301, + "accountEmptyInit2": 8669, "accountEmpty2": 1007, - "accountEmptyInit4": 17764, + "accountEmptyInit4": 16500, "accountEmpty4": 1724, - "accountEmptyInit8": 34723, + "accountEmptyInit8": 32331, "accountEmpty8": 3163, - "accountSizedInit1": 5192, + "accountSizedInit1": 4893, "accountSized1": 693, - "accountSizedInit2": 9489, + "accountSizedInit2": 8857, "accountSized2": 1075, - "accountSizedInit4": 18170, + "accountSizedInit4": 16906, "accountSized4": 1848, - "accountSizedInit8": 35433, + "accountSizedInit8": 33041, "accountSized8": 3387, - "accountUnsizedInit1": 5305, + "accountUnsizedInit1": 5006, "accountUnsized1": 746, - "accountUnsizedInit2": 9759, + "accountUnsizedInit2": 9127, "accountUnsized2": 1163, - "accountUnsizedInit4": 18603, + "accountUnsizedInit4": 17407, "accountUnsized4": 2002, - "accountUnsizedInit8": 35993, + "accountUnsizedInit8": 33465, "accountUnsized8": 3673, - "boxedAccountEmptyInit1": 5175, + "boxedAccountEmptyInit1": 4876, "boxedAccountEmpty1": 734, - "boxedAccountEmptyInit2": 9414, + "boxedAccountEmptyInit2": 8783, "boxedAccountEmpty2": 1116, - "boxedAccountEmptyInit4": 17918, + "boxedAccountEmptyInit4": 16655, "boxedAccountEmpty4": 1872, - "boxedAccountEmptyInit8": 34953, + "boxedAccountEmptyInit8": 32561, "boxedAccountEmpty8": 3401, - "boxedAccountSizedInit1": 5271, + "boxedAccountSizedInit1": 4972, "boxedAccountSized1": 783, - "boxedAccountSizedInit2": 9583, + "boxedAccountSizedInit2": 8952, "boxedAccountSized2": 1190, - "boxedAccountSizedInit4": 18230, + "boxedAccountSizedInit4": 16967, "boxedAccountSized4": 1996, - "boxedAccountSizedInit8": 35553, + "boxedAccountSizedInit8": 33161, "boxedAccountSized8": 3628, - "boxedAccountUnsizedInit1": 5371, + "boxedAccountUnsizedInit1": 5072, "boxedAccountUnsized1": 836, - "boxedAccountUnsizedInit2": 9759, + "boxedAccountUnsizedInit2": 9128, "boxedAccountUnsized2": 1270, - "boxedAccountUnsizedInit4": 18558, + "boxedAccountUnsizedInit4": 17295, "boxedAccountUnsized4": 2132, - "boxedAccountUnsizedInit8": 36185, + "boxedAccountUnsizedInit8": 33793, "boxedAccountUnsized8": 3881, "boxedInterfaceAccountMint1": 1351, "boxedInterfaceAccountMint2": 2123, @@ -1380,9 +1380,9 @@ "interface4": 1189, "interface8": 1748, "program1": 779, - "program2": 920, - "program4": 1193, - "program8": 1744, + "program2": 934, + "program4": 1221, + "program8": 1800, "signer1": 774, "signer2": 1064, "signer4": 1637, @@ -1486,5 +1486,377 @@ "unchecked_account8": 88 } } + }, + "0.32.1": { + "solanaVersion": "2.3.0", + "result": { + "binarySize": { + "bench": 1126840 + }, + "computeUnits": { + "accountInfo1": 685, + "accountInfo2": 1053, + "accountInfo4": 1750, + "accountInfo8": 3135, + "accountEmptyInit1": 4915, + "accountEmpty1": 774, + "accountEmptyInit2": 8793, + "accountEmpty2": 1174, + "accountEmptyInit4": 16748, + "accountEmpty4": 1962, + "accountEmptyInit8": 32357, + "accountEmpty8": 3548, + "accountSizedInit1": 5019, + "accountSized1": 822, + "accountSizedInit2": 8981, + "accountSized2": 1240, + "accountSizedInit4": 17154, + "accountSized4": 2082, + "accountSizedInit8": 33013, + "accountSized8": 3762, + "accountUnsizedInit1": 5127, + "accountUnsized1": 874, + "accountUnsizedInit2": 9251, + "accountUnsized2": 1326, + "accountUnsizedInit4": 17378, + "accountUnsized4": 2231, + "accountUnsizedInit8": 33961, + "accountUnsized8": 4035, + "boxedAccountEmptyInit1": 5007, + "boxedAccountEmpty1": 864, + "boxedAccountEmptyInit2": 8906, + "boxedAccountEmpty2": 1286, + "boxedAccountEmptyInit4": 16902, + "boxedAccountEmpty4": 2115, + "boxedAccountEmptyInit8": 32591, + "boxedAccountEmpty8": 3801, + "boxedAccountSizedInit1": 5103, + "boxedAccountSized1": 912, + "boxedAccountSizedInit2": 9075, + "boxedAccountSized2": 1355, + "boxedAccountSizedInit4": 17214, + "boxedAccountSized4": 2231, + "boxedAccountSizedInit8": 33521, + "boxedAccountSized8": 4007, + "boxedAccountUnsizedInit1": 5202, + "boxedAccountUnsized1": 964, + "boxedAccountUnsizedInit2": 9251, + "boxedAccountUnsized2": 1434, + "boxedAccountUnsizedInit4": 17542, + "boxedAccountUnsized4": 2367, + "boxedAccountUnsizedInit8": 34153, + "boxedAccountUnsized8": 4257, + "boxedInterfaceAccountMint1": 1110, + "boxedInterfaceAccountMint2": 1534, + "boxedInterfaceAccountMint4": 2370, + "boxedInterfaceAccountMint8": 4064, + "boxedInterfaceAccountToken1": 1246, + "boxedInterfaceAccountToken2": 1794, + "boxedInterfaceAccountToken4": 2878, + "boxedInterfaceAccountToken8": 5068, + "interfaceAccountMint1": 1126, + "interfaceAccountMint2": 1562, + "interfaceAccountMint4": 2432, + "interfaceAccountMint8": 4163, + "interfaceAccountToken1": 1268, + "interfaceAccountToken2": 1849, + "interfaceAccountToken4": 2997, + "interface1": 878, + "interface2": 1023, + "interface4": 1301, + "interface8": 1867, + "program1": 890, + "program2": 1035, + "program4": 1313, + "program8": 1879, + "signer1": 874, + "signer2": 1173, + "signer4": 1759, + "signer8": 2941, + "systemAccount1": 911, + "systemAccount2": 1235, + "systemAccount4": 1871, + "systemAccount8": 3153, + "uncheckedAccount1": 882, + "uncheckedAccount2": 1162, + "uncheckedAccount4": 1716, + "uncheckedAccount8": 2833 + }, + "stackMemory": { + "account_info1": 46, + "account_info2": 88, + "account_info4": 88, + "account_info8": 88, + "account_empty_init1": 88, + "account_empty_init2": 88, + "account_empty_init4": 88, + "account_empty_init8": 88, + "account_empty1": 88, + "account_empty2": 88, + "account_empty4": 88, + "account_empty8": 88, + "account_sized_init1": 88, + "account_sized_init2": 88, + "account_sized_init4": 88, + "account_sized_init8": 88, + "account_sized1": 88, + "account_sized2": 88, + "account_sized4": 88, + "account_sized8": 88, + "account_unsized_init1": 88, + "account_unsized_init2": 88, + "account_unsized_init4": 88, + "account_unsized_init8": 88, + "account_unsized1": 88, + "account_unsized2": 88, + "account_unsized4": 88, + "account_unsized8": 88, + "boxed_account_empty_init1": 88, + "boxed_account_empty_init2": 88, + "boxed_account_empty_init4": 88, + "boxed_account_empty_init8": 88, + "boxed_account_empty1": 88, + "boxed_account_empty2": 88, + "boxed_account_empty4": 88, + "boxed_account_empty8": 88, + "boxed_account_sized_init1": 88, + "boxed_account_sized_init2": 88, + "boxed_account_sized_init4": 88, + "boxed_account_sized_init8": 88, + "boxed_account_sized1": 88, + "boxed_account_sized2": 88, + "boxed_account_sized4": 88, + "boxed_account_sized8": 88, + "boxed_account_unsized_init1": 88, + "boxed_account_unsized_init2": 88, + "boxed_account_unsized_init4": 88, + "boxed_account_unsized_init8": 88, + "boxed_account_unsized1": 88, + "boxed_account_unsized2": 88, + "boxed_account_unsized4": 88, + "boxed_account_unsized8": 88, + "boxed_interface_account_mint1": 88, + "boxed_interface_account_mint2": 88, + "boxed_interface_account_mint4": 88, + "boxed_interface_account_mint8": 88, + "boxed_interface_account_token1": 88, + "boxed_interface_account_token2": 88, + "boxed_interface_account_token4": 88, + "boxed_interface_account_token8": 88, + "interface_account_mint1": 88, + "interface_account_mint2": 88, + "interface_account_mint4": 88, + "interface_account_mint8": 88, + "interface_account_token1": 80, + "interface_account_token2": 80, + "interface_account_token4": 80, + "interface1": 88, + "interface2": 88, + "interface4": 88, + "interface8": 88, + "program1": 88, + "program2": 88, + "program4": 88, + "program8": 88, + "signer1": 88, + "signer2": 88, + "signer4": 88, + "signer8": 88, + "system_account1": 88, + "system_account2": 88, + "system_account4": 88, + "system_account8": 88, + "unchecked_account1": 88, + "unchecked_account2": 88, + "unchecked_account4": 88, + "unchecked_account8": 88 + } + } + }, + "unreleased": { + "solanaVersion": "2.3.0", + "result": { + "binarySize": { + "bench": 1024112 + }, + "computeUnits": { + "accountInfo1": 685, + "accountInfo2": 1053, + "accountInfo4": 1750, + "accountInfo8": 3135, + "accountEmptyInit1": 4915, + "accountEmpty1": 774, + "accountEmptyInit2": 8793, + "accountEmpty2": 1174, + "accountEmptyInit4": 16495, + "accountEmpty4": 1962, + "accountEmptyInit8": 31997, + "accountEmpty8": 3548, + "accountSizedInit1": 5019, + "accountSized1": 822, + "accountSizedInit2": 8981, + "accountSized2": 1240, + "accountSizedInit4": 16850, + "accountSized4": 2082, + "accountSizedInit8": 32653, + "accountSized8": 3762, + "accountUnsizedInit1": 5127, + "accountUnsized1": 874, + "accountUnsizedInit2": 9131, + "accountUnsized2": 1326, + "accountUnsizedInit4": 17198, + "accountUnsized4": 2231, + "accountUnsizedInit8": 33324, + "accountUnsized8": 4035, + "boxedAccountEmptyInit1": 5007, + "boxedAccountEmpty1": 864, + "boxedAccountEmptyInit2": 8906, + "boxedAccountEmpty2": 1286, + "boxedAccountEmptyInit4": 16648, + "boxedAccountEmpty4": 2115, + "boxedAccountEmptyInit8": 32231, + "boxedAccountEmpty8": 3801, + "boxedAccountSizedInit1": 5103, + "boxedAccountSized1": 912, + "boxedAccountSizedInit2": 9075, + "boxedAccountSized2": 1355, + "boxedAccountSizedInit4": 16960, + "boxedAccountSized4": 2231, + "boxedAccountSizedInit8": 32831, + "boxedAccountSized8": 4007, + "boxedAccountUnsizedInit1": 5202, + "boxedAccountUnsized1": 964, + "boxedAccountUnsizedInit2": 9251, + "boxedAccountUnsized2": 1434, + "boxedAccountUnsizedInit4": 17284, + "boxedAccountUnsized4": 2367, + "boxedAccountUnsizedInit8": 33455, + "boxedAccountUnsized8": 4257, + "boxedInterfaceAccountMint1": 1110, + "boxedInterfaceAccountMint2": 1534, + "boxedInterfaceAccountMint4": 2370, + "boxedInterfaceAccountMint8": 4064, + "boxedInterfaceAccountToken1": 1246, + "boxedInterfaceAccountToken2": 1794, + "boxedInterfaceAccountToken4": 2878, + "boxedInterfaceAccountToken8": 5068, + "interfaceAccountMint1": 1126, + "interfaceAccountMint2": 1562, + "interfaceAccountMint4": 2432, + "interfaceAccountMint8": 4163, + "interfaceAccountToken1": 1268, + "interfaceAccountToken2": 1849, + "interfaceAccountToken4": 2997, + "interface1": 878, + "interface2": 1023, + "interface4": 1301, + "interface8": 1867, + "program1": 890, + "program2": 1051, + "program4": 1345, + "program8": 1943, + "signer1": 874, + "signer2": 1173, + "signer4": 1759, + "signer8": 2941, + "systemAccount1": 911, + "systemAccount2": 1235, + "systemAccount4": 1871, + "systemAccount8": 3153, + "uncheckedAccount1": 882, + "uncheckedAccount2": 1162, + "uncheckedAccount4": 1716, + "uncheckedAccount8": 2833 + }, + "stackMemory": { + "account_info1": 46, + "account_info2": 88, + "account_info4": 88, + "account_info8": 88, + "account_empty_init1": 88, + "account_empty_init2": 88, + "account_empty_init4": 88, + "account_empty_init8": 88, + "account_empty1": 88, + "account_empty2": 88, + "account_empty4": 88, + "account_empty8": 88, + "account_sized_init1": 88, + "account_sized_init2": 88, + "account_sized_init4": 88, + "account_sized_init8": 88, + "account_sized1": 88, + "account_sized2": 88, + "account_sized4": 88, + "account_sized8": 88, + "account_unsized_init1": 88, + "account_unsized_init2": 88, + "account_unsized_init4": 88, + "account_unsized_init8": 88, + "account_unsized1": 88, + "account_unsized2": 88, + "account_unsized4": 88, + "account_unsized8": 88, + "boxed_account_empty_init1": 88, + "boxed_account_empty_init2": 88, + "boxed_account_empty_init4": 88, + "boxed_account_empty_init8": 88, + "boxed_account_empty1": 88, + "boxed_account_empty2": 88, + "boxed_account_empty4": 88, + "boxed_account_empty8": 88, + "boxed_account_sized_init1": 88, + "boxed_account_sized_init2": 88, + "boxed_account_sized_init4": 88, + "boxed_account_sized_init8": 88, + "boxed_account_sized1": 88, + "boxed_account_sized2": 88, + "boxed_account_sized4": 88, + "boxed_account_sized8": 88, + "boxed_account_unsized_init1": 88, + "boxed_account_unsized_init2": 88, + "boxed_account_unsized_init4": 88, + "boxed_account_unsized_init8": 88, + "boxed_account_unsized1": 88, + "boxed_account_unsized2": 88, + "boxed_account_unsized4": 88, + "boxed_account_unsized8": 88, + "boxed_interface_account_mint1": 88, + "boxed_interface_account_mint2": 88, + "boxed_interface_account_mint4": 88, + "boxed_interface_account_mint8": 88, + "boxed_interface_account_token1": 88, + "boxed_interface_account_token2": 88, + "boxed_interface_account_token4": 88, + "boxed_interface_account_token8": 88, + "interface_account_mint1": 88, + "interface_account_mint2": 88, + "interface_account_mint4": 88, + "interface_account_mint8": 88, + "interface_account_token1": 80, + "interface_account_token2": 80, + "interface_account_token4": 80, + "interface1": 88, + "interface2": 88, + "interface4": 88, + "interface8": 88, + "program1": 88, + "program2": 88, + "program4": 88, + "program8": 88, + "signer1": 88, + "signer2": 88, + "signer4": 88, + "signer8": 88, + "system_account1": 88, + "system_account2": 88, + "system_account4": 88, + "system_account8": 88, + "unchecked_account1": 88, + "unchecked_account2": 88, + "unchecked_account4": 88, + "unchecked_account8": 88 + } + } } -} \ No newline at end of file +} diff --git a/tests/bench/locks/0.32.0.lock b/tests/bench/locks/0.32.0.lock new file mode 100644 index 0000000000..fb5a47bfeb --- /dev/null +++ b/tests/bench/locks/0.32.0.lock @@ -0,0 +1,2964 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "anchor-attribute-access-control" +version = "0.32.0" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.32.0" +dependencies = [ + "anchor-syn", + "bs58", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.32.0" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.32.0" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.32.0" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.32.0" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58", + "heck", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.32.0" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.32.0" +dependencies = [ + "anchor-syn", + "borsh-derive-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.32.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.32.0" +dependencies = [ + "anchor-attribute-access-control", + "anchor-attribute-account", + "anchor-attribute-constant", + "anchor-attribute-error", + "anchor-attribute-event", + "anchor-attribute-program", + "anchor-derive-accounts", + "anchor-derive-serde", + "anchor-derive-space", + "anchor-lang-idl", + "base64 0.21.7", + "bincode", + "borsh 0.10.4", + "bytemuck", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-define-syscall", + "solana-feature-gate-interface", + "solana-instruction", + "solana-instructions-sysvar", + "solana-invoke", + "solana-loader-v3-interface 3.0.0", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "thiserror 1.0.69", +] + +[[package]] +name = "anchor-lang-idl" +version = "0.1.2" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck", + "regex", + "serde", + "serde_json", + "sha2 0.10.9", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-spl" +version = "0.32.0" +dependencies = [ + "anchor-lang", + "spl-associated-token-account", + "spl-pod", + "spl-token", + "spl-token-2022", + "spl-token-group-interface", + "spl-token-metadata-interface", +] + +[[package]] +name = "anchor-syn" +version = "0.32.0" +dependencies = [ + "anyhow", + "bs58", + "cargo_toml", + "heck", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "syn 1.0.109", + "thiserror 1.0.69", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bench" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "anchor-spl", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borsh" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +dependencies = [ + "borsh-derive 0.10.4", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive 1.5.7", + "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.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[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 = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cargo_toml" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" +dependencies = [ + "serde", + "toml 0.8.23", +] + +[[package]] +name = "cc" +version = "1.2.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[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 = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rand_core 0.6.4", + "rustc_version", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "find-msvc-tools" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3" + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "indexmap" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[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.6", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +dependencies = [ + "bincode", + "serde", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", +] + +[[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", +] + +[[package]] +name = "solana-atomic-u64" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-big-mod-exp" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" +dependencies = [ + "num-bigint", + "num-traits", + "solana-define-syscall", +] + +[[package]] +name = "solana-bincode" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" +dependencies = [ + "bincode", + "serde", + "solana-instruction", +] + +[[package]] +name = "solana-blake3-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" +dependencies = [ + "blake3", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", +] + +[[package]] +name = "solana-borsh" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-cpi" +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", +] + +[[package]] +name = "solana-curve25519" +version = "2.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa77936de1910002e7ad5817e38c3990402c2d8e92517cdd736df51485c76d88" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "solana-define-syscall", + "subtle", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[package]] +name = "solana-derivation-path" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b" +dependencies = [ + "derivation-path", + "qstring", + "uriparse", +] + +[[package]] +name = "solana-epoch-rewards" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-epoch-schedule" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-example-mocks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", +] + +[[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-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "five8", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-instruction" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47298e2ce82876b64f71e9d13a46bc4b9056194e7f9937ad3084385befa50885" +dependencies = [ + "bincode", + "borsh 1.5.7", + "getrandom 0.2.16", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", +] + +[[package]] +name = "solana-invoke" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f5693c6de226b3626658377168b0184e94e8292ff16e3d31d4766e65627565" +dependencies = [ + "solana-account-info", + "solana-define-syscall", + "solana-instruction", + "solana-program-entrypoint", + "solana-stable-layout", +] + +[[package]] +name = "solana-keccak-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" +dependencies = [ + "sha3", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", +] + +[[package]] +name = "solana-last-restart-slot" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[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", + "solana-pubkey", + "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" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-loader-v4-interface" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +dependencies = [ + "bincode", + "blake3", + "lazy_static", + "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", + "wasm-bindgen", +] + +[[package]] +name = "solana-msg" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-native-token" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-nonce" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" +dependencies = [ + "serde", + "serde_derive", + "solana-fee-calculator", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.5.7", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.16", + "lazy_static", + "log", + "memoffset", + "num-bigint", + "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", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-example-mocks", + "solana-feature-gate-interface", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keccak-hasher", + "solana-last-restart-slot", + "solana-loader-v2-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", + "wasm-bindgen", +] + +[[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", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.5.7", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-program-option" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" + +[[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", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "five8", + "five8_const", + "getrandom 0.2.16", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-rent" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sdk-ids" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +dependencies = [ + "solana-pubkey", +] + +[[package]] +name = "solana-sdk-macro" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "libsecp256k1", + "solana-define-syscall", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" + +[[package]] +name = "solana-seed-derivable" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" +dependencies = [ + "solana-derivation-path", +] + +[[package]] +name = "solana-seed-phrase" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" +dependencies = [ + "hmac", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +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", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall", + "solana-hash", +] + +[[package]] +name = "solana-short-vec" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "five8", + "solana-sanitize", +] + +[[package]] +name = "solana-signer" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-transaction-error", +] + +[[package]] +name = "solana-slot-hashes" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-slot-history" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-stable-layout" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + +[[package]] +name = "solana-stake-interface" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar-id", +] + +[[package]] +name = "solana-system-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" +dependencies = [ + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "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", +] + +[[package]] +name = "solana-sysvar-id" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +dependencies = [ + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-transaction-error" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" +dependencies = [ + "solana-instruction", + "solana-sanitize", +] + +[[package]] +name = "solana-vote-interface" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" +dependencies = [ + "bincode", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "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", +] + +[[package]] +name = "solana-zk-sdk" +version = "2.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffc4ca8e3e26a8f80eb0026adf8af1732863f42739cd2201c40c568ccae360c" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "itertools", + "js-sys", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "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", + "subtle", + "thiserror 2.0.17", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "spl-associated-token-account" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" +dependencies = [ + "borsh 1.5.7", + "num-derive", + "num-traits", + "solana-program", + "spl-associated-token-account-client", + "spl-token", + "spl-token-2022", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-associated-token-account-client" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + +[[package]] +name = "spl-discriminator" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" +dependencies = [ + "bytemuck", + "solana-program-error", + "solana-sha256-hasher", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.106", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.106", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-elgamal-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "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", +] + +[[package]] +name = "spl-pod" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" +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.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" +dependencies = [ + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-program-error-derive", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.106", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" +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 2.0.17", +] + +[[package]] +name = "spl-token" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sysvar", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-2022" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-native-token", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-security-txt", + "solana-system-interface", + "solana-sysvar", + "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.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" +dependencies = [ + "base64 0.22.1", + "bytemuck", + "solana-curve25519", + "solana-zk-sdk", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" +dependencies = [ + "curve25519-dalek", + "solana-zk-sdk", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" +dependencies = [ + "borsh 1.5.7", + "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 2.0.17", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-type-length-value" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +dependencies = [ + "indexmap", + "toml_datetime 0.7.2", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicode-ident" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] diff --git a/tests/bench/locks/0.32.1.lock b/tests/bench/locks/0.32.1.lock new file mode 100644 index 0000000000..0d7815330d --- /dev/null +++ b/tests/bench/locks/0.32.1.lock @@ -0,0 +1,2964 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "anchor-attribute-access-control" +version = "0.32.1" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.32.1" +dependencies = [ + "anchor-syn", + "bs58", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.32.1" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.32.1" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.32.1" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.32.1" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58", + "heck", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.32.1" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.32.1" +dependencies = [ + "anchor-syn", + "borsh-derive-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.32.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.32.1" +dependencies = [ + "anchor-attribute-access-control", + "anchor-attribute-account", + "anchor-attribute-constant", + "anchor-attribute-error", + "anchor-attribute-event", + "anchor-attribute-program", + "anchor-derive-accounts", + "anchor-derive-serde", + "anchor-derive-space", + "anchor-lang-idl", + "base64 0.21.7", + "bincode", + "borsh 0.10.4", + "bytemuck", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-define-syscall", + "solana-feature-gate-interface", + "solana-instruction", + "solana-instructions-sysvar", + "solana-invoke", + "solana-loader-v3-interface 3.0.0", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "thiserror 1.0.69", +] + +[[package]] +name = "anchor-lang-idl" +version = "0.1.2" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck", + "regex", + "serde", + "serde_json", + "sha2 0.10.9", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-spl" +version = "0.32.1" +dependencies = [ + "anchor-lang", + "spl-associated-token-account", + "spl-pod", + "spl-token", + "spl-token-2022", + "spl-token-group-interface", + "spl-token-metadata-interface", +] + +[[package]] +name = "anchor-syn" +version = "0.32.1" +dependencies = [ + "anyhow", + "bs58", + "cargo_toml", + "heck", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "syn 1.0.109", + "thiserror 1.0.69", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bench" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "anchor-spl", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borsh" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +dependencies = [ + "borsh-derive 0.10.4", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive 1.5.7", + "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.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[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 = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cargo_toml" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" +dependencies = [ + "serde", + "toml 0.8.23", +] + +[[package]] +name = "cc" +version = "1.2.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[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 = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rand_core 0.6.4", + "rustc_version", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "find-msvc-tools" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3" + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "indexmap" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[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.7", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +dependencies = [ + "bincode", + "serde", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", +] + +[[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", +] + +[[package]] +name = "solana-atomic-u64" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-big-mod-exp" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" +dependencies = [ + "num-bigint", + "num-traits", + "solana-define-syscall", +] + +[[package]] +name = "solana-bincode" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" +dependencies = [ + "bincode", + "serde", + "solana-instruction", +] + +[[package]] +name = "solana-blake3-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" +dependencies = [ + "blake3", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", +] + +[[package]] +name = "solana-borsh" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-cpi" +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", +] + +[[package]] +name = "solana-curve25519" +version = "2.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa77936de1910002e7ad5817e38c3990402c2d8e92517cdd736df51485c76d88" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "solana-define-syscall", + "subtle", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[package]] +name = "solana-derivation-path" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b" +dependencies = [ + "derivation-path", + "qstring", + "uriparse", +] + +[[package]] +name = "solana-epoch-rewards" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-epoch-schedule" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-example-mocks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", +] + +[[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-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "five8", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-instruction" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47298e2ce82876b64f71e9d13a46bc4b9056194e7f9937ad3084385befa50885" +dependencies = [ + "bincode", + "borsh 1.5.7", + "getrandom 0.2.16", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", +] + +[[package]] +name = "solana-invoke" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f5693c6de226b3626658377168b0184e94e8292ff16e3d31d4766e65627565" +dependencies = [ + "solana-account-info", + "solana-define-syscall", + "solana-instruction", + "solana-program-entrypoint", + "solana-stable-layout", +] + +[[package]] +name = "solana-keccak-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" +dependencies = [ + "sha3", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", +] + +[[package]] +name = "solana-last-restart-slot" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[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", + "solana-pubkey", + "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" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-loader-v4-interface" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +dependencies = [ + "bincode", + "blake3", + "lazy_static", + "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", + "wasm-bindgen", +] + +[[package]] +name = "solana-msg" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-native-token" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-nonce" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" +dependencies = [ + "serde", + "serde_derive", + "solana-fee-calculator", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.5.7", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.16", + "lazy_static", + "log", + "memoffset", + "num-bigint", + "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", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-example-mocks", + "solana-feature-gate-interface", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keccak-hasher", + "solana-last-restart-slot", + "solana-loader-v2-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", + "wasm-bindgen", +] + +[[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", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.5.7", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-program-option" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" + +[[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", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "five8", + "five8_const", + "getrandom 0.2.16", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-rent" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sdk-ids" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +dependencies = [ + "solana-pubkey", +] + +[[package]] +name = "solana-sdk-macro" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "libsecp256k1", + "solana-define-syscall", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" + +[[package]] +name = "solana-seed-derivable" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" +dependencies = [ + "solana-derivation-path", +] + +[[package]] +name = "solana-seed-phrase" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" +dependencies = [ + "hmac", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +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", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall", + "solana-hash", +] + +[[package]] +name = "solana-short-vec" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "five8", + "solana-sanitize", +] + +[[package]] +name = "solana-signer" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-transaction-error", +] + +[[package]] +name = "solana-slot-hashes" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-slot-history" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-stable-layout" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + +[[package]] +name = "solana-stake-interface" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar-id", +] + +[[package]] +name = "solana-system-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" +dependencies = [ + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "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", +] + +[[package]] +name = "solana-sysvar-id" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +dependencies = [ + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-transaction-error" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" +dependencies = [ + "solana-instruction", + "solana-sanitize", +] + +[[package]] +name = "solana-vote-interface" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" +dependencies = [ + "bincode", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "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", +] + +[[package]] +name = "solana-zk-sdk" +version = "2.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffc4ca8e3e26a8f80eb0026adf8af1732863f42739cd2201c40c568ccae360c" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "itertools", + "js-sys", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "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", + "subtle", + "thiserror 2.0.17", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "spl-associated-token-account" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" +dependencies = [ + "borsh 1.5.7", + "num-derive", + "num-traits", + "solana-program", + "spl-associated-token-account-client", + "spl-token", + "spl-token-2022", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-associated-token-account-client" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + +[[package]] +name = "spl-discriminator" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" +dependencies = [ + "bytemuck", + "solana-program-error", + "solana-sha256-hasher", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.106", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.106", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-elgamal-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "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", +] + +[[package]] +name = "spl-pod" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" +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.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" +dependencies = [ + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-program-error-derive", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.106", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" +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 2.0.17", +] + +[[package]] +name = "spl-token" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sysvar", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-2022" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-native-token", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-security-txt", + "solana-system-interface", + "solana-sysvar", + "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.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" +dependencies = [ + "base64 0.22.1", + "bytemuck", + "solana-curve25519", + "solana-zk-sdk", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" +dependencies = [ + "curve25519-dalek", + "solana-zk-sdk", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" +dependencies = [ + "borsh 1.5.7", + "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 2.0.17", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-type-length-value" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info", + "solana-decode-error", + "solana-msg", + "solana-program-error", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicode-ident" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] diff --git a/tests/bench/package.json b/tests/bench/package.json index c45e34c19f..2124c4b2c5 100644 --- a/tests/bench/package.json +++ b/tests/bench/package.json @@ -1,6 +1,6 @@ { "name": "bench", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/bench/tests/compute-units.ts b/tests/bench/tests/compute-units.ts index 2a964fdaef..222387e408 100644 --- a/tests/bench/tests/compute-units.ts +++ b/tests/bench/tests/compute-units.ts @@ -141,7 +141,10 @@ describe("Compute units", () => { .instruction(); tx.add(createTokenIx, initTokenIx); - await tokenProgram.provider.sendAndConfirm!(tx, [mintKp, tokenKp]); + await tokenProgram.provider.sendAndConfirm!(tx, [mintKp, tokenKp], { + maxRetries: 3, + skipPreflight: true, + }); }); it("AccountInfo", async () => { diff --git a/tests/cashiers-check/package.json b/tests/cashiers-check/package.json index 428cc3eb3d..1b052c1f84 100644 --- a/tests/cashiers-check/package.json +++ b/tests/cashiers-check/package.json @@ -1,6 +1,6 @@ { "name": "cashiers-check", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/cashiers-check/programs/cashiers-check/src/lib.rs b/tests/cashiers-check/programs/cashiers-check/src/lib.rs index 6943fe17f1..77523bb68a 100644 --- a/tests/cashiers-check/programs/cashiers-check/src/lib.rs +++ b/tests/cashiers-check/programs/cashiers-check/src/lib.rs @@ -21,13 +21,13 @@ pub mod cashiers_check { nonce: u8, ) -> Result<()> { // Transfer funds to the check. + let cpi_program_id = ctx.accounts.token_program.key(); let cpi_accounts = Transfer { from: ctx.accounts.from.to_account_info(), to: ctx.accounts.vault.to_account_info(), authority: ctx.accounts.owner.clone(), }; - let cpi_program = ctx.accounts.token_program.clone(); - let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts); + let cpi_ctx = CpiContext::new(cpi_program_id, cpi_accounts); token::transfer(cpi_ctx, amount)?; // Print the check. @@ -49,13 +49,13 @@ pub mod cashiers_check { &[ctx.accounts.check.nonce], ]; let signer = &[&seeds[..]]; + let cpi_program_id = ctx.accounts.token_program.key(); let cpi_accounts = Transfer { from: ctx.accounts.vault.to_account_info(), to: ctx.accounts.to.to_account_info(), authority: ctx.accounts.check_signer.clone(), }; - let cpi_program = ctx.accounts.token_program.clone(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::transfer(cpi_ctx, ctx.accounts.check.amount)?; // Burn the check for one time use. ctx.accounts.check.burned = true; @@ -69,13 +69,13 @@ pub mod cashiers_check { &[ctx.accounts.check.nonce], ]; let signer = &[&seeds[..]]; + let cpi_program_id = ctx.accounts.token_program.key(); let cpi_accounts = Transfer { from: ctx.accounts.vault.to_account_info(), to: ctx.accounts.from.to_account_info(), authority: ctx.accounts.check_signer.clone(), }; - let cpi_program = ctx.accounts.token_program.clone(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::transfer(cpi_ctx, ctx.accounts.check.amount)?; ctx.accounts.check.burned = true; Ok(()) diff --git a/tests/cfo/package.json b/tests/cfo/package.json index 8940988ac4..722b39c13b 100644 --- a/tests/cfo/package.json +++ b/tests/cfo/package.json @@ -1,6 +1,6 @@ { "name": "cfo", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/cfo/programs/cfo/src/lib.rs b/tests/cfo/programs/cfo/src/lib.rs index 34b649b9da..b0c7f6ab3d 100644 --- a/tests/cfo/programs/cfo/src/lib.rs +++ b/tests/cfo/programs/cfo/src/lib.rs @@ -797,7 +797,7 @@ impl<'info> From<&SwapToSrm<'info>> token_program: accs.token_program.to_account_info(), rent: accs.rent.to_account_info(), }; - CpiContext::new(program.to_account_info(), accounts) + CpiContext::new(program.key(), accounts) } } @@ -826,39 +826,39 @@ impl<'info> From<&SwapToUsdc<'info>> token_program: accs.token_program.to_account_info(), rent: accs.rent.to_account_info(), }; - CpiContext::new(program.to_account_info(), accounts) + CpiContext::new(program.key(), accounts) } } impl<'info> Distribute<'info> { fn into_burn(&self) -> CpiContext<'_, '_, '_, 'info, token::Burn<'info>> { - let program = self.token_program.to_account_info(); + let program_id = self.token_program.key(); let accounts = token::Burn { mint: self.srm_mint.to_account_info(), from: self.srm_vault.to_account_info(), authority: self.officer.to_account_info(), }; - CpiContext::new(program, accounts) + CpiContext::new(program_id, accounts) } fn into_stake_transfer(&self) -> CpiContext<'_, '_, '_, 'info, token::Transfer<'info>> { - let program = self.token_program.to_account_info(); + let program_id = self.token_program.key(); let accounts = token::Transfer { from: self.srm_vault.to_account_info(), to: self.stake.to_account_info(), authority: self.officer.to_account_info(), }; - CpiContext::new(program, accounts) + CpiContext::new(program_id, accounts) } fn into_treasury_transfer(&self) -> CpiContext<'_, '_, '_, 'info, token::Transfer<'info>> { - let program = self.token_program.to_account_info(); + let program_id = self.token_program.key(); let accounts = token::Transfer { from: self.srm_vault.to_account_info(), to: self.treasury.to_account_info(), authority: self.officer.to_account_info(), }; - CpiContext::new(program, accounts) + CpiContext::new(program_id, accounts) } } @@ -866,7 +866,7 @@ impl<'info> DropStakeReward<'info> { fn into_srm_reward( &self, ) -> CpiContext<'_, '_, '_, 'info, registry::cpi::accounts::DropReward<'info>> { - let program = self.registry_program.clone(); + let program_id = self.registry_program.key(); let accounts = registry::cpi::accounts::DropReward { registrar: self.srm.registrar.to_account_info(), reward_event_q: self.srm.reward_event_q.to_account_info(), @@ -879,13 +879,13 @@ impl<'info> DropStakeReward<'info> { clock: self.clock.to_account_info(), rent: self.rent.to_account_info(), }; - CpiContext::new(program.to_account_info(), accounts) + CpiContext::new(program_id, accounts) } fn into_msrm_reward( &self, ) -> CpiContext<'_, '_, '_, 'info, registry::cpi::accounts::DropReward<'info>> { - let program = self.registry_program.clone(); + let program_id = self.registry_program.key(); let accounts = registry::cpi::accounts::DropReward { registrar: self.msrm.registrar.to_account_info(), reward_event_q: self.msrm.reward_event_q.to_account_info(), @@ -898,7 +898,7 @@ impl<'info> DropStakeReward<'info> { clock: self.clock.to_account_info(), rent: self.rent.to_account_info(), }; - CpiContext::new(program.to_account_info(), accounts) + CpiContext::new(program_id, accounts) } } @@ -964,7 +964,7 @@ fn is_stake_reward_ready(accounts: &DropStakeReward) -> Result<()> { Ok(()) } -// Redefintions. +// Redefinitions. // // The following types are redefined so that they can be parsed into the IDL, // since Anchor doesn't yet support idl parsing across multiple crates. diff --git a/tests/chat/package.json b/tests/chat/package.json index 717c82337f..92fb961b4e 100644 --- a/tests/chat/package.json +++ b/tests/chat/package.json @@ -1,6 +1,6 @@ { "name": "chat", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/composite/package.json b/tests/composite/package.json index 7207c5e86c..a1fd6249ca 100644 --- a/tests/composite/package.json +++ b/tests/composite/package.json @@ -1,6 +1,6 @@ { "name": "composite", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/cpi-returns/package.json b/tests/cpi-returns/package.json index 2de7a94128..6ecb811b9b 100644 --- a/tests/cpi-returns/package.json +++ b/tests/cpi-returns/package.json @@ -1,6 +1,6 @@ { "name": "cpi-returns", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/cpi-returns/programs/caller/src/lib.rs b/tests/cpi-returns/programs/caller/src/lib.rs index ff093e971e..d00cedb47f 100644 --- a/tests/cpi-returns/programs/caller/src/lib.rs +++ b/tests/cpi-returns/programs/caller/src/lib.rs @@ -16,11 +16,11 @@ pub mod caller { } pub fn cpi_call_return_u64(ctx: Context) -> Result<()> { - let cpi_program = ctx.accounts.cpi_return_program.to_account_info(); + let cpi_program_id = ctx.accounts.cpi_return_program.key(); let cpi_accounts = CpiReturn { account: ctx.accounts.cpi_return.to_account_info(), }; - let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts); + let cpi_ctx = CpiContext::new(cpi_program_id, cpi_accounts); let result = callee::cpi::return_u64(cpi_ctx)?; let solana_return = result.get(); anchor_lang::solana_program::log::sol_log_data(&[&solana_return.try_to_vec().unwrap()]); @@ -28,11 +28,11 @@ pub mod caller { } pub fn cpi_call_return_struct(ctx: Context) -> Result<()> { - let cpi_program = ctx.accounts.cpi_return_program.to_account_info(); + let cpi_program_id = ctx.accounts.cpi_return_program.key(); let cpi_accounts = CpiReturn { account: ctx.accounts.cpi_return.to_account_info(), }; - let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts); + let cpi_ctx = CpiContext::new(cpi_program_id, cpi_accounts); let result = callee::cpi::return_struct(cpi_ctx)?; let solana_return = result.get(); anchor_lang::solana_program::log::sol_log_data(&[&solana_return.try_to_vec().unwrap()]); @@ -40,11 +40,11 @@ pub mod caller { } pub fn cpi_call_return_vec(ctx: Context) -> Result<()> { - let cpi_program = ctx.accounts.cpi_return_program.to_account_info(); + let cpi_program_id = ctx.accounts.cpi_return_program.key(); let cpi_accounts = CpiReturn { account: ctx.accounts.cpi_return.to_account_info(), }; - let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts); + let cpi_ctx = CpiContext::new(cpi_program_id, cpi_accounts); let result = callee::cpi::return_vec(cpi_ctx)?; let solana_return = result.get(); anchor_lang::solana_program::log::sol_log_data(&[&solana_return.try_to_vec().unwrap()]); diff --git a/tests/cpi-returns/tests/cpi-return.ts b/tests/cpi-returns/tests/cpi-return.ts index 0099ef45a2..75c608e599 100644 --- a/tests/cpi-returns/tests/cpi-return.ts +++ b/tests/cpi-returns/tests/cpi-return.ts @@ -28,7 +28,12 @@ describe("CPI return", () => { const cpiReturn = anchor.web3.Keypair.generate(); - const confirmOptions: ConfirmOptions = { commitment: "confirmed" }; + const confirmOptions: ConfirmOptions = { + commitment: "confirmed", + preflightCommitment: "confirmed", + skipPreflight: true, + maxRetries: 3, + }; it("can initialize", async () => { await calleeProgram.methods diff --git a/tests/custom-coder/package.json b/tests/custom-coder/package.json index afb2b3fd4a..86a1e3e0fe 100644 --- a/tests/custom-coder/package.json +++ b/tests/custom-coder/package.json @@ -1,6 +1,6 @@ { "name": "custom-coder", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/custom-discriminator/package.json b/tests/custom-discriminator/package.json index 58fee2574d..24f966fede 100644 --- a/tests/custom-discriminator/package.json +++ b/tests/custom-discriminator/package.json @@ -1,6 +1,6 @@ { "name": "custom-discriminator", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/custom-discriminator/tests/custom-discriminator.ts b/tests/custom-discriminator/tests/custom-discriminator.ts index b87e20594a..e402d46de7 100644 --- a/tests/custom-discriminator/tests/custom-discriminator.ts +++ b/tests/custom-discriminator/tests/custom-discriminator.ts @@ -19,7 +19,10 @@ describe("custom-discriminator", () => { assert(data.equals(Buffer.from(ix.discriminator))); // Verify tx runs - await program.provider.sendAndConfirm!(tx); + await program.provider.sendAndConfirm!(tx, [], { + maxRetries: 3, + skipPreflight: true, + }); }; it("Integer", () => testCommon("int")); diff --git a/tests/custom-program/Anchor.toml b/tests/custom-program/Anchor.toml new file mode 100644 index 0000000000..653b37e73b --- /dev/null +++ b/tests/custom-program/Anchor.toml @@ -0,0 +1,21 @@ +[provider] +cluster = "localnet" +wallet = "~/.config/solana/id.json" + +[programs.localnet] +custom_program = "FdQ5d5kJDidxLP8qBm2d4G47QbDMWk6iWJ3QkYY2UAP7" + +[scripts] +test = "yarn run ts-mocha -t 1000000 tests/*.ts" + +[test.validator] +url = "https://api.mainnet-beta.solana.com" + +[[test.validator.clone]] +address = "9cxLzxjrTeodcbaEU3KCNGE1a4yFZEcdJ7uEXN378S4U" + +[[test.validator.clone]] +address = "PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY" + +[[test.validator.clone]] +address = "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" \ No newline at end of file diff --git a/tests/custom-program/Cargo.toml b/tests/custom-program/Cargo.toml new file mode 100644 index 0000000000..97d6280542 --- /dev/null +++ b/tests/custom-program/Cargo.toml @@ -0,0 +1,8 @@ +[workspace] +members = [ + "programs/*" +] +resolver = "2" + +[profile.release] +overflow-checks = true diff --git a/tests/custom-program/package.json b/tests/custom-program/package.json new file mode 100644 index 0000000000..ee17d56bd0 --- /dev/null +++ b/tests/custom-program/package.json @@ -0,0 +1,22 @@ +{ + "name": "custom-program", + "version": "0.31.1", + "license": "(MIT OR Apache-2.0)", + "homepage": "https://github.com/coral-xyz/anchor#readme", + "bugs": { + "url": "https://github.com/coral-xyz/anchor/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/coral-xyz/anchor.git" + }, + "engines": { + "node": ">=17" + }, + "scripts": { + "test": "anchor test" + }, + "dependencies": { + "ts-mocha": "^11.1.0" + } +} diff --git a/tests/custom-program/programs/custom-program/Cargo.toml b/tests/custom-program/programs/custom-program/Cargo.toml new file mode 100644 index 0000000000..90212a17c4 --- /dev/null +++ b/tests/custom-program/programs/custom-program/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "custom-program" +version = "0.1.0" +description = "Created with Anchor" +edition = "2018" + +[lib] +crate-type = ["cdylib", "lib"] +name = "custom_program" + +[features] +no-entrypoint = [] +cpi = ["no-entrypoint"] +idl-build = ["anchor-lang/idl-build"] + +[dependencies] +anchor-lang = { path = "../../../../lang" } diff --git a/tests/custom-program/programs/custom-program/Xargo.toml b/tests/custom-program/programs/custom-program/Xargo.toml new file mode 100644 index 0000000000..475fb71ed1 --- /dev/null +++ b/tests/custom-program/programs/custom-program/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/tests/custom-program/programs/custom-program/src/lib.rs b/tests/custom-program/programs/custom-program/src/lib.rs new file mode 100644 index 0000000000..56761f8a4e --- /dev/null +++ b/tests/custom-program/programs/custom-program/src/lib.rs @@ -0,0 +1,54 @@ +use anchor_lang::prelude::*; + +declare_id!("FdQ5d5kJDidxLP8qBm2d4G47QbDMWk6iWJ3QkYY2UAP7"); + +pub const CUSTOM_PROGRAM_ID: Pubkey = pubkey!("PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY"); +pub const NON_EXECUTABLE_ACCOUNT_ID: Pubkey = + pubkey!("2myyNegEA6pjAHmmEsJC6JdYhW51gwxQW7ZCTWvwaKTk"); +pub const CUSTOM_PROGRAM_ADDRESS: Pubkey = pubkey!("dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"); + +// Define a marker struct for our custom program ID +pub struct CustomProgramMarker; + +impl Id for CustomProgramMarker { + fn id() -> Pubkey { + id() + } +} + +#[program] +mod custom_program { + use super::*; + + pub fn test_program_validation(ctx: Context) -> Result<()> { + // This demonstrates both types of program validation: + // - generic_program: only validates executable (any program) + // - system_program: validates both program ID and executable + msg!( + "Generic program key: {}", + ctx.accounts.generic_program.key() + ); + msg!("System program key: {}", ctx.accounts.system_program.key()); + msg!( + "Custom program key: {}", + ctx.accounts.custom_program_input.key() + ); + Ok(()) + } +} + +#[derive(Accounts)] +pub struct TestProgramValidation<'info> { + /// Generic program - only validates executable (any program ID) + pub generic_program: Program<'info>, + + /// Specific system program - validates both program ID and executable + pub system_program: Program<'info, System>, + + /// Custom program with specific type - validates both program ID and executable + pub custom_program_input: Program<'info, CustomProgramMarker>, + + /// Program with an address constraint - validates both program ID and executable + #[account(address = CUSTOM_PROGRAM_ADDRESS)] + pub custom_program_address: Program<'info>, +} diff --git a/tests/custom-program/tests/custom-program.ts b/tests/custom-program/tests/custom-program.ts new file mode 100644 index 0000000000..8ac4fd2a13 --- /dev/null +++ b/tests/custom-program/tests/custom-program.ts @@ -0,0 +1,86 @@ +import * as anchor from "@coral-xyz/anchor"; +import { AnchorError, Program } from "@coral-xyz/anchor"; +import { CustomProgram } from "../target/types/custom_program"; +import { assert } from "chai"; + +const CUSTOM_PROGRAM_ID = "PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY"; + +// This was an Executable Data account for our custom program which is not executable +const NON_EXECUTABLE_ACCOUNT_ID = + "9cxLzxjrTeodcbaEU3KCNGE1a4yFZEcdJ7uEXN378S4U"; + +const CUSTOM_PROGRAM_ADDRESS = "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH"; + +describe("custom_program", () => { + anchor.setProvider(anchor.AnchorProvider.local()); + const program = anchor.workspace.CustomProgram as Program; + + it("Should pass test program validation", async () => { + try { + await program.methods + .testProgramValidation() + .accounts({ + genericProgram: new anchor.web3.PublicKey(CUSTOM_PROGRAM_ID), + systemProgram: anchor.web3.SystemProgram.programId, + customProgramInput: program.programId, + customProgramAddress: new anchor.web3.PublicKey( + CUSTOM_PROGRAM_ADDRESS + ), + }) + .rpc(); + assert.ok(true); + } catch (_err) { + assert(false); + } + }); + + it("Should fail test program validation", async () => { + try { + await program.methods + .testProgramValidation() + .accounts({ + genericProgram: new anchor.web3.PublicKey(CUSTOM_PROGRAM_ID), + systemProgram: anchor.web3.SystemProgram.programId, + customProgramInput: program.programId, + customProgramAddress: new anchor.web3.PublicKey( + NON_EXECUTABLE_ACCOUNT_ID + ), + }) + .rpc(); + assert.ok(false); + } catch (_err) { + assert.ok(true); + assert.isTrue(_err instanceof AnchorError); + const err: AnchorError = _err; + assert.strictEqual(err.error.errorCode.number, 3009); + assert.strictEqual( + err.error.errorMessage, + "Program account is not executable" + ); + } + }); + + it("Should fail test program address mismatch", async () => { + try { + await program.methods + .testProgramValidation() + .accounts({ + genericProgram: new anchor.web3.PublicKey(CUSTOM_PROGRAM_ID), + systemProgram: anchor.web3.SystemProgram.programId, + customProgramInput: program.programId, + customProgramAddress: new anchor.web3.PublicKey(CUSTOM_PROGRAM_ID), + }) + .rpc(); + assert.ok(false); + } catch (_err) { + assert.ok(true); + assert.isTrue(_err instanceof AnchorError); + const err: AnchorError = _err; + assert.strictEqual(err.error.errorCode.number, 2012); + assert.strictEqual( + err.error.errorMessage, + "An address constraint was violated" + ); + } + }); +}); diff --git a/tests/custom-program/tsconfig.json b/tests/custom-program/tsconfig.json new file mode 100644 index 0000000000..dc2b28af30 --- /dev/null +++ b/tests/custom-program/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai", "node"], + "typeRoots": ["./node_modules/@types"], + "lib": ["es2015"], + "module": "commonjs", + "target": "es6", + "esModuleInterop": true, + "skipLibCheck": true + } +} diff --git a/tests/declare-id/package.json b/tests/declare-id/package.json index e6b14c80ea..27231a501e 100644 --- a/tests/declare-id/package.json +++ b/tests/declare-id/package.json @@ -1,6 +1,6 @@ { "name": "declare-id", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/declare-program/package.json b/tests/declare-program/package.json index 65cba5172c..f060964a63 100644 --- a/tests/declare-program/package.json +++ b/tests/declare-program/package.json @@ -1,6 +1,6 @@ { "name": "declare-program", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/declare-program/programs/declare-program/src/lib.rs b/tests/declare-program/programs/declare-program/src/lib.rs index 2757532bc3..72afa164ff 100644 --- a/tests/declare-program/programs/declare-program/src/lib.rs +++ b/tests/declare-program/programs/declare-program/src/lib.rs @@ -22,7 +22,7 @@ pub mod declare_program { require_eq!(cpi_my_account.field, 0); let cpi_ctx = CpiContext::new( - ctx.accounts.external_program.to_account_info(), + ctx.accounts.external_program.key(), external::cpi::accounts::Update { authority: ctx.accounts.authority.to_account_info(), my_account: cpi_my_account.to_account_info(), @@ -41,7 +41,7 @@ pub mod declare_program { // Composite accounts that's also an instruction let cpi_ctx = CpiContext::new( - ctx.accounts.external_program.to_account_info(), + ctx.accounts.external_program.key(), external::cpi::accounts::UpdateComposite { update: external::cpi::accounts::Update { authority: ctx.accounts.authority.to_account_info(), @@ -55,7 +55,7 @@ pub mod declare_program { // Composite accounts but not an actual instruction let cpi_ctx = CpiContext::new( - ctx.accounts.external_program.to_account_info(), + ctx.accounts.external_program.key(), external::cpi::accounts::UpdateNonInstructionComposite { non_instruction_update: external::cpi::accounts::NonInstructionUpdate { authority: ctx.accounts.authority.to_account_info(), diff --git a/tests/errors/package.json b/tests/errors/package.json index 2cd1606d8b..f7e112858e 100644 --- a/tests/errors/package.json +++ b/tests/errors/package.json @@ -1,6 +1,6 @@ { "name": "errors", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/errors/tests/errors.ts b/tests/errors/tests/errors.ts index 09df19e7e0..e8f322a55b 100644 --- a/tests/errors/tests/errors.ts +++ b/tests/errors/tests/errors.ts @@ -46,6 +46,7 @@ describe("errors", () => { // because we cannot get logs for them (only through overkill `onLogs`) provider.opts.commitment = "confirmed"; anchor.setProvider(provider); + provider.opts.maxRetries = 3; const program = anchor.workspace.Errors as Program; diff --git a/tests/escrow/package.json b/tests/escrow/package.json index b561bfe645..842d770e24 100644 --- a/tests/escrow/package.json +++ b/tests/escrow/package.json @@ -1,6 +1,6 @@ { "name": "escrow", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/escrow/programs/escrow/src/lib.rs b/tests/escrow/programs/escrow/src/lib.rs index 79a21494c7..f124be8947 100644 --- a/tests/escrow/programs/escrow/src/lib.rs +++ b/tests/escrow/programs/escrow/src/lib.rs @@ -199,8 +199,8 @@ impl<'info> From<&mut InitializeEscrow<'info>> .clone(), current_authority: accounts.initializer.to_account_info(), }; - let cpi_program = accounts.token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = accounts.token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } @@ -210,8 +210,8 @@ impl<'info> CancelEscrow<'info> { account_or_mint: self.pda_deposit_token_account.to_account_info(), current_authority: self.pda_account.clone(), }; - let cpi_program = self.token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = self.token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } @@ -221,8 +221,8 @@ impl<'info> Exchange<'info> { account_or_mint: self.pda_deposit_token_account.to_account_info(), current_authority: self.pda_account.clone(), }; - let cpi_program = self.receive_token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = self.receive_token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } @@ -236,8 +236,8 @@ impl<'info> Exchange<'info> { to: self.taker_receive_token_account.to_account_info(), authority: self.pda_account.clone(), }; - let cpi_program = self.receive_token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = self.receive_token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } @@ -254,7 +254,7 @@ impl<'info> Exchange<'info> { .clone(), authority: self.taker.clone(), }; - let cpi_program = self.deposit_token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = self.deposit_token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } diff --git a/tests/events/package.json b/tests/events/package.json index edae225614..0443551f63 100644 --- a/tests/events/package.json +++ b/tests/events/package.json @@ -1,6 +1,6 @@ { "name": "events", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/events/tests/events.ts b/tests/events/tests/events.ts index 7cd2333a78..5cd4d43ac2 100644 --- a/tests/events/tests/events.ts +++ b/tests/events/tests/events.ts @@ -46,9 +46,15 @@ describe("Events", () => { }); describe("CPI event", () => { + const config = { + commitment: "confirmed", + preflightCommitment: "confirmed", + skipPreflight: true, + maxRetries: 3, + } as const; + it("Works without accounts being specified", async () => { const tx = await program.methods.testEventCpi().transaction(); - const config = { commitment: "confirmed" } as const; const txHash = await program.provider.sendAndConfirm(tx, [], config); const txResult = await program.provider.connection.getTransaction( txHash, @@ -91,7 +97,7 @@ describe("Events", () => { ); try { - await program.provider.sendAndConfirm(tx, []); + await program.provider.sendAndConfirm(tx, [], config); } catch (e) { if (e.logs.some((log) => log.includes("ConstraintSigner"))) return; console.log(e); diff --git a/tests/floats/package.json b/tests/floats/package.json index bc0c2ae55e..f99f7d7c0a 100644 --- a/tests/floats/package.json +++ b/tests/floats/package.json @@ -1,6 +1,6 @@ { "name": "floats", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/idl/package.json b/tests/idl/package.json index 22610f5d7b..b1ed76b143 100644 --- a/tests/idl/package.json +++ b/tests/idl/package.json @@ -1,6 +1,6 @@ { "name": "idl", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/ido-pool/package.json b/tests/ido-pool/package.json index 7fedb9992f..8e37cacf55 100644 --- a/tests/ido-pool/package.json +++ b/tests/ido-pool/package.json @@ -1,6 +1,6 @@ { "name": "ido-pool", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/ido-pool/programs/ido-pool/src/lib.rs b/tests/ido-pool/programs/ido-pool/src/lib.rs index 65a44ebd67..d2e1010275 100644 --- a/tests/ido-pool/programs/ido-pool/src/lib.rs +++ b/tests/ido-pool/programs/ido-pool/src/lib.rs @@ -50,13 +50,13 @@ pub mod ido_pool { ido_account.ido_times = ido_times; // Transfer Watermelon from ido_authority to pool account. + let cpi_program_id = ctx.accounts.token_program.key(); let cpi_accounts = Transfer { from: ctx.accounts.ido_authority_watermelon.to_account_info(), to: ctx.accounts.pool_watermelon.to_account_info(), authority: ctx.accounts.ido_authority.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts); + let cpi_ctx = CpiContext::new(cpi_program_id, cpi_accounts); token::transfer(cpi_ctx, num_ido_tokens)?; Ok(()) @@ -79,14 +79,15 @@ pub mod ido_pool { return err!(ErrorCode::LowUsdc); } + let cpi_program_id = ctx.accounts.token_program.key(); + // Transfer user's USDC to pool USDC account. let cpi_accounts = Transfer { from: ctx.accounts.user_usdc.to_account_info(), to: ctx.accounts.pool_usdc.to_account_info(), authority: ctx.accounts.user_authority.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts); + let cpi_ctx = CpiContext::new(cpi_program_id, cpi_accounts); token::transfer(cpi_ctx, amount)?; // Mint Redeemable to user Redeemable account. @@ -101,8 +102,7 @@ pub mod ido_pool { to: ctx.accounts.user_redeemable.to_account_info(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::mint_to(cpi_ctx, amount)?; Ok(()) @@ -131,6 +131,7 @@ pub mod ido_pool { &[ctx.accounts.ido_account.bumps.ido_account], ]; let signer = &[&seeds[..]]; + let cpi_program_id = ctx.accounts.token_program.key(); // Burn the user's redeemable tokens. let cpi_accounts = Burn { @@ -138,8 +139,7 @@ pub mod ido_pool { from: ctx.accounts.user_redeemable.to_account_info(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::burn(cpi_ctx, amount)?; // Transfer USDC from pool account to the user's escrow account. @@ -148,8 +148,7 @@ pub mod ido_pool { to: ctx.accounts.escrow_usdc.to_account_info(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::transfer(cpi_ctx, amount)?; Ok(()) @@ -180,14 +179,15 @@ pub mod ido_pool { ]; let signer = &[&seeds[..]]; + let cpi_program_id = ctx.accounts.token_program.key(); + // Burn the user's redeemable tokens. let cpi_accounts = Burn { mint: ctx.accounts.redeemable_mint.to_account_info(), from: ctx.accounts.user_redeemable.to_account_info(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::burn(cpi_ctx, amount)?; // Transfer Watermelon from pool account to user. @@ -196,8 +196,7 @@ pub mod ido_pool { to: ctx.accounts.user_watermelon.to_account_info(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::transfer(cpi_ctx, watermelon_amount as u64)?; // Send rent back to user if account is empty @@ -208,8 +207,7 @@ pub mod ido_pool { destination: ctx.accounts.user_authority.clone(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::close_account(cpi_ctx)?; } @@ -226,13 +224,13 @@ pub mod ido_pool { &[ctx.accounts.ido_account.bumps.ido_account], ]; let signer = &[&seeds[..]]; + let cpi_program_id = ctx.accounts.token_program.key(); let cpi_accounts = Transfer { from: ctx.accounts.pool_usdc.to_account_info(), to: ctx.accounts.ido_authority_usdc.to_account_info(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::transfer(cpi_ctx, ctx.accounts.pool_usdc.amount)?; Ok(()) @@ -252,6 +250,7 @@ pub mod ido_pool { &[ctx.accounts.ido_account.bumps.ido_account], ]; let signer = &[&seeds[..]]; + let cpi_program_id = ctx.accounts.token_program.key(); // Transfer USDC from user's escrow account to user's USDC account. let cpi_accounts = Transfer { @@ -259,8 +258,7 @@ pub mod ido_pool { to: ctx.accounts.user_usdc.to_account_info(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::transfer(cpi_ctx, amount)?; // Send rent back to user if account is empty @@ -271,8 +269,7 @@ pub mod ido_pool { destination: ctx.accounts.user_authority.clone(), authority: ctx.accounts.ido_account.to_account_info(), }; - let cpi_program = ctx.accounts.token_program.to_account_info(); - let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer); + let cpi_ctx = CpiContext::new_with_signer(cpi_program_id, cpi_accounts, signer); token::close_account(cpi_ctx)?; } diff --git a/tests/lazy-account/package.json b/tests/lazy-account/package.json index 3ad4c78128..76d177ac38 100644 --- a/tests/lazy-account/package.json +++ b/tests/lazy-account/package.json @@ -1,6 +1,6 @@ { "name": "lazy-account", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/lockup/package.json b/tests/lockup/package.json index 85db86dd62..0e246bfb80 100644 --- a/tests/lockup/package.json +++ b/tests/lockup/package.json @@ -1,6 +1,6 @@ { "name": "lockup", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/lockup/programs/registry/src/lib.rs b/tests/lockup/programs/registry/src/lib.rs index 20db9ed694..c7fe9e35f9 100644 --- a/tests/lockup/programs/registry/src/lib.rs +++ b/tests/lockup/programs/registry/src/lib.rs @@ -1011,7 +1011,7 @@ pub struct ExpireReward<'info> { #[account] pub struct Registrar { - /// Priviledged account. + /// Privileged account. pub authority: Pubkey, /// Nonce to derive the program-derived address owning the vaults. pub nonce: u8, diff --git a/tests/misc/package.json b/tests/misc/package.json index baad37e9e9..297e87dd90 100644 --- a/tests/misc/package.json +++ b/tests/misc/package.json @@ -1,6 +1,6 @@ { "name": "misc", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/misc/programs/lamports/src/lib.rs b/tests/misc/programs/lamports/src/lib.rs index e8ea9732f9..91caa0e143 100644 --- a/tests/misc/programs/lamports/src/lib.rs +++ b/tests/misc/programs/lamports/src/lib.rs @@ -18,7 +18,7 @@ pub mod lamports { // Transfer to the PDA anchor_lang::system_program::transfer( CpiContext::new( - ctx.accounts.system_program.to_account_info(), + ctx.accounts.system_program.key(), anchor_lang::system_program::Transfer { from: signer.to_account_info(), to: pda.to_account_info(), diff --git a/tests/multiple-suites/package.json b/tests/multiple-suites/package.json index 50166bf0ed..d86eabeb99 100644 --- a/tests/multiple-suites/package.json +++ b/tests/multiple-suites/package.json @@ -1,6 +1,6 @@ { "name": "multiple-suites", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/multisig/package.json b/tests/multisig/package.json index 99eecca871..b9efd0e8fd 100644 --- a/tests/multisig/package.json +++ b/tests/multisig/package.json @@ -1,6 +1,6 @@ { "name": "multisig", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/optional/package.json b/tests/optional/package.json index da225b87b4..0305bc2c26 100644 --- a/tests/optional/package.json +++ b/tests/optional/package.json @@ -1,6 +1,6 @@ { "name": "optional", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/package.json b/tests/package.json index 41c258ceb9..afb9d34a5b 100644 --- a/tests/package.json +++ b/tests/package.json @@ -16,6 +16,7 @@ "composite", "custom-coder", "custom-discriminator", + "custom-program", "declare-id", "declare-program", "errors", diff --git a/tests/pda-derivation/package.json b/tests/pda-derivation/package.json index 9e5e3aaad2..1837099b19 100644 --- a/tests/pda-derivation/package.json +++ b/tests/pda-derivation/package.json @@ -1,6 +1,6 @@ { "name": "pda-derivation", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/pyth/package.json b/tests/pyth/package.json index b06198a740..15433a06b4 100644 --- a/tests/pyth/package.json +++ b/tests/pyth/package.json @@ -1,6 +1,6 @@ { "name": "pyth", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/realloc/package.json b/tests/realloc/package.json index 9aad8d1464..413b40ac49 100644 --- a/tests/realloc/package.json +++ b/tests/realloc/package.json @@ -1,6 +1,6 @@ { "name": "realloc", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/relations-derivation/package.json b/tests/relations-derivation/package.json index fe5ddb06e6..a4017351d1 100644 --- a/tests/relations-derivation/package.json +++ b/tests/relations-derivation/package.json @@ -1,6 +1,6 @@ { "name": "relations-derivation", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/spl/metadata/Cargo.lock b/tests/spl/metadata/Cargo.lock index 3f7837ce8b..5f41374cd0 100644 --- a/tests/spl/metadata/Cargo.lock +++ b/tests/spl/metadata/Cargo.lock @@ -61,7 +61,7 @@ dependencies = [ [[package]] name = "anchor-attribute-access-control" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "proc-macro2", @@ -71,7 +71,7 @@ dependencies = [ [[package]] name = "anchor-attribute-account" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "bs58", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "anchor-attribute-constant" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -91,7 +91,7 @@ dependencies = [ [[package]] name = "anchor-attribute-error" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -100,7 +100,7 @@ dependencies = [ [[package]] name = "anchor-attribute-event" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "proc-macro2", @@ -110,7 +110,7 @@ dependencies = [ [[package]] name = "anchor-attribute-program" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-lang-idl", "anchor-syn", @@ -125,7 +125,7 @@ dependencies = [ [[package]] name = "anchor-derive-accounts" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "quote", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "anchor-derive-serde" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-syn", "borsh-derive-internal", @@ -145,7 +145,7 @@ dependencies = [ [[package]] name = "anchor-derive-space" -version = "0.31.1" +version = "0.32.1" dependencies = [ "proc-macro2", "quote", @@ -154,7 +154,7 @@ dependencies = [ [[package]] name = "anchor-lang" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-attribute-access-control", "anchor-attribute-account", @@ -170,7 +170,27 @@ dependencies = [ "bincode", "borsh 0.10.4", "bytemuck", - "solana-program", + "const-crypto", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-define-syscall", + "solana-feature-gate-interface", + "solana-instruction", + "solana-instructions-sysvar", + "solana-invoke", + "solana-loader-v3-interface 3.0.0", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", "thiserror 1.0.69", ] @@ -197,7 +217,7 @@ dependencies = [ [[package]] name = "anchor-spl" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anchor-lang", "mpl-token-metadata", @@ -211,7 +231,7 @@ dependencies = [ [[package]] name = "anchor-syn" -version = "0.31.1" +version = "0.32.1" dependencies = [ "anyhow", "bs58", @@ -495,6 +515,16 @@ dependencies = [ "web-sys", ] +[[package]] +name = "const-crypto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c06f1eb05f06cf2e380fdded278fbf056a38974299d77960555a311dcf91a52" +dependencies = [ + "keccak-const", + "sha2-const-stable", +] + [[package]] name = "constant_time_eq" version = "0.3.1" @@ -765,6 +795,12 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-const" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d8d8ce877200136358e0bbff3a77965875db3af755a11e1fa6b1b3e2df13ea" + [[package]] name = "lazy_static" version = "1.5.0" @@ -1291,6 +1327,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" @@ -1607,6 +1649,19 @@ dependencies = [ "solana-sysvar-id", ] +[[package]] +name = "solana-invoke" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f5693c6de226b3626658377168b0184e94e8292ff16e3d31d4766e65627565" +dependencies = [ + "solana-account-info", + "solana-define-syscall", + "solana-instruction", + "solana-program-entrypoint", + "solana-stable-layout", +] + [[package]] name = "solana-keccak-hasher" version = "2.2.1" @@ -1646,6 +1701,21 @@ dependencies = [ "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" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + [[package]] name = "solana-loader-v3-interface" version = "5.0.0" @@ -1775,7 +1845,7 @@ dependencies = [ "solana-keccak-hasher", "solana-last-restart-slot", "solana-loader-v2-interface", - "solana-loader-v3-interface", + "solana-loader-v3-interface 5.0.0", "solana-loader-v4-interface", "solana-message", "solana-msg", @@ -2216,9 +2286,9 @@ dependencies = [ [[package]] name = "spl-associated-token-account" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76fee7d65013667032d499adc3c895e286197a35a0d3a4643c80e7fd3e9969e3" +checksum = "ae179d4a26b3c7a20c839898e6aed84cb4477adf108a366c95532f058aea041b" dependencies = [ "borsh 1.5.7", "num-derive 0.4.2", @@ -2227,7 +2297,7 @@ dependencies = [ "spl-associated-token-account-client", "spl-token", "spl-token-2022", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] @@ -2278,12 +2348,22 @@ dependencies = [ [[package]] name = "spl-elgamal-registry" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" +checksum = "65edfeed09cd4231e595616aa96022214f9c9d2be02dea62c2b30d5695a6833a" dependencies = [ "bytemuck", - "solana-program", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", "solana-zk-sdk", "spl-pod", "spl-token-confidential-transfer-proof-extraction", @@ -2325,22 +2405,24 @@ dependencies = [ [[package]] name = "spl-program-error" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" dependencies = [ "num-derive 0.4.2", "num-traits", - "solana-program", + "solana-decode-error", + "solana-msg", + "solana-program-error", "spl-program-error-derive", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-program-error-derive" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" dependencies = [ "proc-macro2", "quote", @@ -2350,9 +2432,9 @@ dependencies = [ [[package]] name = "spl-tlv-account-resolution" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd99ff1e9ed2ab86e3fd582850d47a739fec1be9f4661cba1782d3a0f26805f3" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -2367,37 +2449,66 @@ dependencies = [ "spl-pod", "spl-program-error", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-token" -version = "7.0.0" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed320a6c934128d4f7e54fe00e16b8aeaecf215799d060ae14f93378da6dc834" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" dependencies = [ "arrayref", "bytemuck", "num-derive 0.4.2", "num-traits", "num_enum", - "solana-program", - "thiserror 1.0.69", + "solana-account-info", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sysvar", + "thiserror 2.0.14", ] [[package]] name = "spl-token-2022" -version = "6.0.0" +version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b27f7405010ef816587c944536b0eafbcc35206ab6ba0f2ca79f1d28e488f4f" +checksum = "31f0dfbb079eebaee55e793e92ca5f433744f4b71ee04880bfd6beefba5973e5" dependencies = [ "arrayref", "bytemuck", "num-derive 0.4.2", "num-traits", "num_enum", - "solana-program", + "solana-account-info", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-native-token", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", "solana-security-txt", + "solana-system-interface", + "solana-sysvar", "solana-zk-sdk", "spl-elgamal-registry", "spl-memo", @@ -2410,14 +2521,14 @@ dependencies = [ "spl-token-metadata-interface", "spl-transfer-hook-interface", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-token-confidential-transfer-ciphertext-arithmetic" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170378693c5516090f6d37ae9bad2b9b6125069be68d9acd4865bbe9fc8499fd" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" dependencies = [ "base64 0.22.1", "bytemuck", @@ -2427,13 +2538,19 @@ dependencies = [ [[package]] name = "spl-token-confidential-transfer-proof-extraction" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" +checksum = "fe2629860ff04c17bafa9ba4bed8850a404ecac81074113e1f840dbd0ebb7bd6" dependencies = [ "bytemuck", + "solana-account-info", "solana-curve25519", - "solana-program", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", "solana-zk-sdk", "spl-pod", "thiserror 2.0.14", @@ -2441,20 +2558,20 @@ dependencies = [ [[package]] name = "spl-token-confidential-transfer-proof-generation" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8627184782eec1894de8ea26129c61303f1f0adeed65c20e0b10bc584f09356d" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" dependencies = [ "curve25519-dalek", "solana-zk-sdk", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-token-group-interface" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d595667ed72dbfed8c251708f406d7c2814a3fa6879893b323d56a10bedfc799" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -2466,14 +2583,14 @@ dependencies = [ "solana-pubkey", "spl-discriminator", "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-token-metadata-interface" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" dependencies = [ "borsh 1.5.7", "num-derive 0.4.2", @@ -2487,14 +2604,14 @@ dependencies = [ "spl-discriminator", "spl-pod", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-transfer-hook-interface" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa7503d52107c33c88e845e1351565050362c2314036ddf19a36cd25137c043" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" dependencies = [ "arrayref", "bytemuck", @@ -2512,14 +2629,14 @@ dependencies = [ "spl-program-error", "spl-tlv-account-resolution", "spl-type-length-value", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] name = "spl-type-length-value" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba70ef09b13af616a4c987797870122863cba03acc4284f226a4473b043923f9" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -2530,7 +2647,7 @@ dependencies = [ "solana-program-error", "spl-discriminator", "spl-pod", - "thiserror 1.0.69", + "thiserror 2.0.14", ] [[package]] diff --git a/tests/spl/metadata/package.json b/tests/spl/metadata/package.json index f8d70f7b0f..cc8943fe23 100644 --- a/tests/spl/metadata/package.json +++ b/tests/spl/metadata/package.json @@ -1,6 +1,6 @@ { "name": "metadata", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/spl/token-extensions/package.json b/tests/spl/token-extensions/package.json index e9e4f7d727..5e7bff881b 100644 --- a/tests/spl/token-extensions/package.json +++ b/tests/spl/token-extensions/package.json @@ -1,6 +1,6 @@ { "name": "token-extensions", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/spl/token-extensions/programs/token-extensions/Cargo.toml b/tests/spl/token-extensions/programs/token-extensions/Cargo.toml index 1e98480cf1..903a4d3eeb 100644 --- a/tests/spl/token-extensions/programs/token-extensions/Cargo.toml +++ b/tests/spl/token-extensions/programs/token-extensions/Cargo.toml @@ -18,7 +18,7 @@ idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] [dependencies] anchor-lang = { path = "../../../../../lang", features = ["init-if-needed"] } anchor-spl = { path = "../../../../../spl" } -spl-tlv-account-resolution = "0.9" -spl-transfer-hook-interface = "0.9" -spl-type-length-value = "0.7" +spl-tlv-account-resolution = "0.10.0" +spl-transfer-hook-interface = "0.10.0" +spl-type-length-value = "0.8.0" spl-pod = "0.5" diff --git a/tests/spl/token-extensions/programs/token-extensions/src/instructions.rs b/tests/spl/token-extensions/programs/token-extensions/src/instructions.rs index a721120dc8..eaf98c5313 100644 --- a/tests/spl/token-extensions/programs/token-extensions/src/instructions.rs +++ b/tests/spl/token-extensions/programs/token-extensions/src/instructions.rs @@ -91,7 +91,7 @@ impl<'info> CreateMintAccount<'info> { mint_authority: self.authority.to_account_info(), update_authority: self.authority.to_account_info(), }; - let cpi_ctx = CpiContext::new(self.token_program.to_account_info(), cpi_accounts); + let cpi_ctx = CpiContext::new(self.token_program.key(), cpi_accounts); token_metadata_initialize(cpi_ctx, name, symbol, uri)?; Ok(()) } diff --git a/tests/spl/token-proxy/package.json b/tests/spl/token-proxy/package.json index 080766c1fc..069df7a4ff 100644 --- a/tests/spl/token-proxy/package.json +++ b/tests/spl/token-proxy/package.json @@ -1,6 +1,6 @@ { "name": "token-proxy", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/spl/token-proxy/programs/token-proxy/src/lib.rs b/tests/spl/token-proxy/programs/token-proxy/src/lib.rs index 9f3ff8d6b6..a5e7e2f353 100644 --- a/tests/spl/token-proxy/programs/token-proxy/src/lib.rs +++ b/tests/spl/token-proxy/programs/token-proxy/src/lib.rs @@ -30,8 +30,8 @@ mod token_proxy { to: ctx.accounts.to.to_account_info(), authority: ctx.accounts.authority.clone(), }; - let cpi_program = token_program.to_account_info(); - let cpi_context = CpiContext::new(cpi_program, cpi_accounts); + let cpi_program_id = token_program.key(); + let cpi_context = CpiContext::new(cpi_program_id, cpi_accounts); token_interface::transfer_checked(cpi_context, amount, mint.decimals) } else { let cpi_accounts = Transfer { @@ -39,8 +39,8 @@ mod token_proxy { to: ctx.accounts.to.to_account_info(), authority: ctx.accounts.authority.clone(), }; - let cpi_program = token_program.to_account_info(); - let cpi_context = CpiContext::new(cpi_program, cpi_accounts); + let cpi_program_id = token_program.key(); + let cpi_context = CpiContext::new(cpi_program_id, cpi_accounts); #[allow(deprecated)] token_interface::transfer(cpi_context, amount) } @@ -213,8 +213,8 @@ impl<'a, 'b, 'c, 'info> From<&mut ProxyTransfer<'info>> to: accounts.to.to_account_info(), authority: accounts.authority.clone(), }; - let cpi_program = accounts.token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = accounts.token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } @@ -227,8 +227,8 @@ impl<'a, 'b, 'c, 'info> From<&mut ProxyMintTo<'info>> to: accounts.to.to_account_info(), authority: accounts.authority.clone(), }; - let cpi_program = accounts.token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = accounts.token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } @@ -239,8 +239,8 @@ impl<'a, 'b, 'c, 'info> From<&mut ProxyBurn<'info>> for CpiContext<'a, 'b, 'c, ' from: accounts.from.to_account_info(), authority: accounts.authority.clone(), }; - let cpi_program = accounts.token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = accounts.token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } @@ -254,8 +254,8 @@ impl<'a, 'b, 'c, 'info> From<&mut ProxySetAuthority<'info>> account_or_mint: accounts.account_or_mint.clone(), current_authority: accounts.current_authority.clone(), }; // TODO: Support multisig signers - let cpi_program = accounts.token_program.to_account_info(); - CpiContext::new(cpi_program, cpi_accounts) + let cpi_program_id = accounts.token_program.key(); + CpiContext::new(cpi_program_id, cpi_accounts) } } diff --git a/tests/spl/token-wrapper/package.json b/tests/spl/token-wrapper/package.json index 07ad14dac6..00b4507b97 100644 --- a/tests/spl/token-wrapper/package.json +++ b/tests/spl/token-wrapper/package.json @@ -1,6 +1,6 @@ { "name": "token-wrapper", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/spl/token-wrapper/programs/token-wrapper/src/lib.rs b/tests/spl/token-wrapper/programs/token-wrapper/src/lib.rs index 58560d86a2..9f1886f244 100644 --- a/tests/spl/token-wrapper/programs/token-wrapper/src/lib.rs +++ b/tests/spl/token-wrapper/programs/token-wrapper/src/lib.rs @@ -26,7 +26,7 @@ pub mod token_wrapper { // deposit into vault token_interface::transfer_checked( CpiContext::new( - ctx.accounts.deposit_token_program.to_account_info(), + ctx.accounts.deposit_token_program.key(), token_interface::TransferChecked { from: ctx .accounts @@ -51,7 +51,7 @@ pub mod token_wrapper { let signer_seeds = &[&inner_seeds[..]]; token_interface::mint_to( CpiContext::new_with_signer( - ctx.accounts.wrapped_token_program.to_account_info(), + ctx.accounts.wrapped_token_program.key(), token_interface::MintTo { mint: ctx.accounts.wrapped_mint.to_account_info(), to: ctx @@ -72,7 +72,7 @@ pub mod token_wrapper { // deposit into vault token_interface::transfer_checked( CpiContext::new( - ctx.accounts.deposit_token_program.to_account_info(), + ctx.accounts.deposit_token_program.key(), token_interface::TransferChecked { from: ctx.accounts.user_deposit_token_account.to_account_info(), mint: ctx.accounts.deposit_mint.to_account_info(), @@ -94,7 +94,7 @@ pub mod token_wrapper { let signer_seeds = &[&inner_seeds[..]]; token_interface::mint_to( CpiContext::new_with_signer( - ctx.accounts.wrapped_token_program.to_account_info(), + ctx.accounts.wrapped_token_program.key(), token_interface::MintTo { mint: ctx.accounts.wrapped_mint.to_account_info(), to: ctx.accounts.user_wrapped_token_account.to_account_info(), @@ -112,7 +112,7 @@ pub mod token_wrapper { // burn wrapped tokens token_interface::burn( CpiContext::new( - ctx.accounts.wrapped_token_program.to_account_info(), + ctx.accounts.wrapped_token_program.key(), token_interface::Burn { mint: ctx.accounts.wrapped_mint.to_account_info(), from: ctx.accounts.user_wrapped_token_account.to_account_info(), @@ -132,7 +132,7 @@ pub mod token_wrapper { let signer_seeds = &[&inner_seeds[..]]; token_interface::transfer_checked( CpiContext::new_with_signer( - ctx.accounts.deposit_token_program.to_account_info(), + ctx.accounts.deposit_token_program.key(), token_interface::TransferChecked { from: ctx.accounts.deposit_token_vault.to_account_info(), mint: ctx.accounts.deposit_mint.to_account_info(), diff --git a/tests/spl/transfer-hook/package.json b/tests/spl/transfer-hook/package.json index 797aa1010a..748b0554c4 100644 --- a/tests/spl/transfer-hook/package.json +++ b/tests/spl/transfer-hook/package.json @@ -1,6 +1,6 @@ { "name": "transfer-hook", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/spl/transfer-hook/programs/transfer-hook/Cargo.toml b/tests/spl/transfer-hook/programs/transfer-hook/Cargo.toml index 9c9a149400..d89fb783ea 100644 --- a/tests/spl/transfer-hook/programs/transfer-hook/Cargo.toml +++ b/tests/spl/transfer-hook/programs/transfer-hook/Cargo.toml @@ -19,5 +19,5 @@ idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] anchor-lang = { path = "../../../../../lang", features = ["interface-instructions"] } anchor-spl = { path = "../../../../../spl" } spl-discriminator = "0.4" -spl-tlv-account-resolution = "0.9" -spl-transfer-hook-interface = "0.9" +spl-tlv-account-resolution = "0.10.0" +spl-transfer-hook-interface = "0.10.0" diff --git a/tests/spl/transfer-hook/tests/transfer-hook.ts b/tests/spl/transfer-hook/tests/transfer-hook.ts index 249cded332..e3ad29234f 100644 --- a/tests/spl/transfer-hook/tests/transfer-hook.ts +++ b/tests/spl/transfer-hook/tests/transfer-hook.ts @@ -136,11 +136,12 @@ describe("transfer hook", () => { "confirmed" ); - await sendAndConfirmTransaction(provider.connection, transaction, [ - payer, - mint, - mintAuthority, - ]); + await sendAndConfirmTransaction( + provider.connection, + transaction, + [payer, mint, mintAuthority], + { maxRetries: 3, skipPreflight: true } + ); }); it("can create an `InitializeExtraAccountMetaList` instruction with the proper discriminator", async () => { @@ -275,7 +276,8 @@ describe("transfer hook", () => { await sendAndConfirmTransaction( provider.connection, new Transaction().add(ix), - [payer, sourceAuthority] + [payer, sourceAuthority], + { maxRetries: 3, skipPreflight: true } ); // Check the resulting token balances diff --git a/tests/swap/package.json b/tests/swap/package.json index d23d1f2d46..c7e2d6caab 100644 --- a/tests/swap/package.json +++ b/tests/swap/package.json @@ -1,6 +1,6 @@ { "name": "swap", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/swap/programs/swap/src/lib.rs b/tests/swap/programs/swap/src/lib.rs index 1e4fa5f44c..c04102f1ba 100644 --- a/tests/swap/programs/swap/src/lib.rs +++ b/tests/swap/programs/swap/src/lib.rs @@ -347,7 +347,7 @@ impl<'info> OrderbookClient<'info> { token_program: self.token_program.clone(), rent: self.rent.clone(), }; - let mut ctx = CpiContext::new(self.dex_program.clone(), dex_accs); + let mut ctx = CpiContext::new(dex_accs); if let Some(referral) = referral { ctx = ctx.with_remaining_accounts(vec![referral]); } @@ -376,7 +376,7 @@ impl<'info> OrderbookClient<'info> { vault_signer: self.market.vault_signer.clone(), token_program: self.token_program.clone(), }; - let mut ctx = CpiContext::new(self.dex_program.clone(), settle_accs); + let mut ctx = CpiContext::new(settle_accs); if let Some(referral) = referral { ctx = ctx.with_remaining_accounts(vec![referral]); } diff --git a/tests/system-accounts/package.json b/tests/system-accounts/package.json index 3280b32361..e364d2c296 100644 --- a/tests/system-accounts/package.json +++ b/tests/system-accounts/package.json @@ -1,6 +1,6 @@ { "name": "system-accounts", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/sysvars/package.json b/tests/sysvars/package.json index 7d235be88e..02b38a583e 100644 --- a/tests/sysvars/package.json +++ b/tests/sysvars/package.json @@ -1,6 +1,6 @@ { "name": "sysvars", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/tictactoe/package.json b/tests/tictactoe/package.json index 2db8e34eba..6835567454 100644 --- a/tests/tictactoe/package.json +++ b/tests/tictactoe/package.json @@ -1,6 +1,6 @@ { "name": "tictactoe", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/typescript/package.json b/tests/typescript/package.json index ccd1f1bb1f..ab585181d6 100644 --- a/tests/typescript/package.json +++ b/tests/typescript/package.json @@ -1,6 +1,6 @@ { "name": "typescript-example", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/validator-clone/package.json b/tests/validator-clone/package.json index cd727df4f6..175673d82d 100644 --- a/tests/validator-clone/package.json +++ b/tests/validator-clone/package.json @@ -1,6 +1,6 @@ { "name": "validator-clone", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/zero-copy/package.json b/tests/zero-copy/package.json index 715611e72f..c811db2f4b 100644 --- a/tests/zero-copy/package.json +++ b/tests/zero-copy/package.json @@ -1,6 +1,6 @@ { "name": "zero-copy", - "version": "0.31.1", + "version": "0.32.1", "license": "(MIT OR Apache-2.0)", "homepage": "https://github.com/coral-xyz/anchor#readme", "bugs": { diff --git a/tests/zero-copy/programs/zero-copy/tests/compute_unit_test.rs b/tests/zero-copy/programs/zero-copy/tests/compute_unit_test.rs index 9457cfe970..593620ca46 100644 --- a/tests/zero-copy/programs/zero-copy/tests/compute_unit_test.rs +++ b/tests/zero-copy/programs/zero-copy/tests/compute_unit_test.rs @@ -3,8 +3,8 @@ use { anchor_client::{ anchor_lang::Discriminator, + solana_account::Account, solana_sdk::{ - account::Account, commitment_config::CommitmentConfig, pubkey::Pubkey, signature::{Keypair, Signer}, diff --git a/tests/zero-copy/programs/zero-cpi/src/lib.rs b/tests/zero-copy/programs/zero-cpi/src/lib.rs index 1ce2fdaa64..307be50fb0 100644 --- a/tests/zero-copy/programs/zero-cpi/src/lib.rs +++ b/tests/zero-copy/programs/zero-cpi/src/lib.rs @@ -9,13 +9,12 @@ declare_id!("ErjUjtqKE5AGWUsjseSJCVLtddM6rhaMbDqmhzraF9h6"); pub mod zero_cpi { use super::*; pub fn check_cpi(ctx: Context, data: u64) -> Result<()> { - let cpi_program = ctx.accounts.zero_copy_program.to_account_info(); let cpi_accounts = UpdateBar { authority: ctx.accounts.authority.clone(), bar: ctx.accounts.bar.to_account_info(), foo: ctx.accounts.foo.to_account_info(), }; - let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts); + let cpi_ctx = CpiContext::new(cpi_accounts); zero_copy::cpi::update_bar(cpi_ctx, data)?; Ok(()) } diff --git a/ts/packages/anchor-errors/package.json b/ts/packages/anchor-errors/package.json index 3459c58b3d..8b5e623340 100644 --- a/ts/packages/anchor-errors/package.json +++ b/ts/packages/anchor-errors/package.json @@ -1,6 +1,6 @@ { "name": "@coral-xyz/anchor-errors", - "version": "0.31.1", + "version": "0.32.1", "description": "Anchor error codes", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/ts/packages/anchor/package.json b/ts/packages/anchor/package.json index 6b54e99302..a521ff9d6e 100644 --- a/ts/packages/anchor/package.json +++ b/ts/packages/anchor/package.json @@ -1,6 +1,6 @@ { "name": "@coral-xyz/anchor", - "version": "0.31.1", + "version": "0.32.1", "description": "Anchor client", "module": "./dist/esm/index.js", "main": "./dist/cjs/index.js", diff --git a/ts/packages/anchor/src/idl.ts b/ts/packages/anchor/src/idl.ts index 6d7a044b87..6800bb6b1b 100644 --- a/ts/packages/anchor/src/idl.ts +++ b/ts/packages/anchor/src/idl.ts @@ -321,7 +321,11 @@ export function convertIdlToCamelCase(idl: I) { // `my_account.field` is getting converted to `myAccountField` but we // need `myAccount.field`. - const toCamelCase = (s: any) => s.split(".").map(camelCase).join("."); + const toCamelCase = (s: any) => + s + .split(".") + .map((part: any) => camelCase(part, { locale: false })) + .join("."); const recursivelyConvertNamesToCamelCase = (obj: Record) => { for (const key in obj) { diff --git a/ts/packages/borsh/package.json b/ts/packages/borsh/package.json index 6bb8183245..a584542d5d 100644 --- a/ts/packages/borsh/package.json +++ b/ts/packages/borsh/package.json @@ -1,6 +1,6 @@ { "name": "@coral-xyz/borsh", - "version": "0.31.1", + "version": "0.32.1", "description": "Anchor Borsh", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/ts/packages/spl-associated-token-account/package.json b/ts/packages/spl-associated-token-account/package.json index a6936bdaf2..118f58514c 100644 --- a/ts/packages/spl-associated-token-account/package.json +++ b/ts/packages/spl-associated-token-account/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-binary-option/package.json b/ts/packages/spl-binary-option/package.json index 3268a7780d..f5c9dcd316 100644 --- a/ts/packages/spl-binary-option/package.json +++ b/ts/packages/spl-binary-option/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-binary-oracle-pair/package.json b/ts/packages/spl-binary-oracle-pair/package.json index ccc5c07ed9..16d25d8f20 100644 --- a/ts/packages/spl-binary-oracle-pair/package.json +++ b/ts/packages/spl-binary-oracle-pair/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-feature-proposal/package.json b/ts/packages/spl-feature-proposal/package.json index d404590f97..604d478088 100644 --- a/ts/packages/spl-feature-proposal/package.json +++ b/ts/packages/spl-feature-proposal/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-governance/package.json b/ts/packages/spl-governance/package.json index e10830b780..48cbd0641d 100644 --- a/ts/packages/spl-governance/package.json +++ b/ts/packages/spl-governance/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-memo/package.json b/ts/packages/spl-memo/package.json index b5e3b55c01..ad00826079 100644 --- a/ts/packages/spl-memo/package.json +++ b/ts/packages/spl-memo/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1" + "@coral-xyz/anchor": "=0.32.1" }, "devDependencies": { "@rollup/plugin-commonjs": "=21.0.2", diff --git a/ts/packages/spl-name-service/package.json b/ts/packages/spl-name-service/package.json index e027aee566..37db2debe3 100644 --- a/ts/packages/spl-name-service/package.json +++ b/ts/packages/spl-name-service/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-record/package.json b/ts/packages/spl-record/package.json index bb4f3b9c44..9e9f4f6fdb 100644 --- a/ts/packages/spl-record/package.json +++ b/ts/packages/spl-record/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-stake-pool/package.json b/ts/packages/spl-stake-pool/package.json index 0fd564060c..921de77782 100644 --- a/ts/packages/spl-stake-pool/package.json +++ b/ts/packages/spl-stake-pool/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-stateless-asks/package.json b/ts/packages/spl-stateless-asks/package.json index 2ef6a3e997..6a7b12c0ea 100644 --- a/ts/packages/spl-stateless-asks/package.json +++ b/ts/packages/spl-stateless-asks/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-token-lending/package.json b/ts/packages/spl-token-lending/package.json index a9c429c4ef..f7a50b4820 100644 --- a/ts/packages/spl-token-lending/package.json +++ b/ts/packages/spl-token-lending/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-token-swap/package.json b/ts/packages/spl-token-swap/package.json index a5afa0176a..34e2b5da84 100644 --- a/ts/packages/spl-token-swap/package.json +++ b/ts/packages/spl-token-swap/package.json @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": { diff --git a/ts/packages/spl-token/package.json b/ts/packages/spl-token/package.json index b731a5bcc3..0384dc0eb8 100644 --- a/ts/packages/spl-token/package.json +++ b/ts/packages/spl-token/package.json @@ -1,7 +1,7 @@ { "name": "@coral-xyz/spl-token", "description": "Anchor client for Solana Program Library Token", - "version": "0.31.1", + "version": "0.32.1", "author": "acheron ", "license": "Apache-2.0", "repository": { @@ -27,7 +27,7 @@ "watch": "tsc -p tsconfig.cjs.json --watch" }, "dependencies": { - "@coral-xyz/anchor": "=0.31.1", + "@coral-xyz/anchor": "=0.32.1", "@native-to-anchor/buffer-layout": "=0.1.0" }, "devDependencies": {