From 020a3046582944030f17b6524006eeaf26951cb8 Mon Sep 17 00:00:00 2001 From: acheron <98934430+acheroncrypto@users.noreply.github.com> Date: Tue, 17 Sep 2024 19:02:09 +0200 Subject: [PATCH] Upgrade Solana to v2 and SPL to the latest (#3219) --- .github/actions/setup-solana/action.yaml | 14 +- .github/workflows/no-caching-tests.yaml | 3 +- .github/workflows/reusable-tests.yaml | 6 +- .github/workflows/tests.yaml | 3 +- .gitmodules | 3 - CHANGELOG.md | 1 + Cargo.lock | 1212 ++++++++--------- cli/Cargo.toml | 10 +- client/Cargo.toml | 6 +- client/example/Cargo.toml | 2 +- docker/Makefile | 2 +- docker/build/Dockerfile | 2 +- lang/Cargo.toml | 2 +- setup-tests.sh | 4 +- spl/Cargo.toml | 16 +- spl/src/token_2022_extensions/token_group.rs | 2 +- spl/src/token_interface.rs | 6 +- .../programs/auction-house/Cargo.toml | 2 - .../programs/auction-house/src/lib.rs | 14 +- .../programs/auction-house/src/utils.rs | 16 +- tests/errors/tests/errors.ts | 44 +- tests/misc/programs/misc-optional/Cargo.toml | 1 - tests/misc/programs/misc/Cargo.toml | 1 - .../programs/token-extensions/Cargo.toml | 8 +- .../token-extensions/src/instructions.rs | 6 +- .../programs/token-extensions/src/utils.rs | 8 - .../programs/transfer-hook/Cargo.toml | 6 +- tests/swap/Anchor.toml | 2 +- tests/swap/deps/openbook-dex | 1 - tests/swap/prebuilt-programs/openbook_dex.so | Bin 0 -> 184560 bytes tests/zero-copy/programs/zero-copy/Cargo.toml | 2 +- 31 files changed, 609 insertions(+), 796 deletions(-) delete mode 160000 tests/swap/deps/openbook-dex create mode 100755 tests/swap/prebuilt-programs/openbook_dex.so diff --git a/.github/actions/setup-solana/action.yaml b/.github/actions/setup-solana/action.yaml index 6ce55173fa..964a4b7e3d 100644 --- a/.github/actions/setup-solana/action.yaml +++ b/.github/actions/setup-solana/action.yaml @@ -19,19 +19,7 @@ runs: max_attempts: 10 retry_on: error shell: bash - command: sh -c "$(curl -sSfL https://release.solana.com/v${{ env.SOLANA_CLI_VERSION }}/install)" - - uses: nick-fields/retry@v2 - if: steps.cache-solana.outputs.cache-hit != 'true' - with: - retry_wait_seconds: 300 - timeout_minutes: 2 - max_attempts: 10 - retry_on: error - shell: bash - command: | - curl -sSL -o /home/runner/.local/share/solana/install/active_release/bin/solang \ - https://github.com/hyperledger/solang/releases/download/v${{ env.SOLANG_VERSION }}/solang-linux-x86-64 - chmod 755 /home/runner/.local/share/solana/install/active_release/bin/solang + command: sh -c "$(curl -sSfL https://release.anza.xyz/v${{ env.SOLANA_CLI_VERSION }}/install)" - run: echo "/home/runner/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH shell: bash - run: solana-keygen new --no-bip39-passphrase diff --git a/.github/workflows/no-caching-tests.yaml b/.github/workflows/no-caching-tests.yaml index 9c1497240d..c24565a4e5 100644 --- a/.github/workflows/no-caching-tests.yaml +++ b/.github/workflows/no-caching-tests.yaml @@ -11,8 +11,7 @@ jobs: uses: ./.github/workflows/reusable-tests.yaml with: cache: false - solana_cli_version: 1.18.17 - solang_version: 0.3.2 + solana_cli_version: 2.0.8 node_version: 20.16.0 cargo_profile: release anchor_binary_name: anchor-binary-no-caching diff --git a/.github/workflows/reusable-tests.yaml b/.github/workflows/reusable-tests.yaml index 97bc48a061..b6725485ee 100644 --- a/.github/workflows/reusable-tests.yaml +++ b/.github/workflows/reusable-tests.yaml @@ -9,9 +9,6 @@ on: solana_cli_version: required: true type: string - solang_version: - required: true - type: string node_version: required: true type: string @@ -24,7 +21,6 @@ on: env: CACHE: inputs.cache SOLANA_CLI_VERSION: ${{ inputs.solana_cli_version }} - SOLANG_VERSION: ${{ inputs.solang_version }} NODE_VERSION: ${{ inputs.node_version }} CARGO_PROFILE: ${{ inputs.cargo_profile }} ANCHOR_BINARY_NAME: ${{ inputs.anchor_binary_name }} @@ -396,7 +392,7 @@ jobs: # - cmd: cd tests/lockup && anchor test --skip-lint # path: tests/lockup # TODO: Re-enable after making it work with Solana v2 - # - cmd: cd tests/swap/deps/openbook-dex/dex && solana-install init 1.14.18 && cargo build-bpf -- --locked && cd ../../../ && solana-install init $SOLANA_CLI_VERSION && anchor test --skip-lint + # - cmd: cd tests/swap && anchor test --skip-lint # path: tests/swap - cmd: cd tests/escrow && anchor test --skip-lint && npx tsc --noEmit path: tests/escrow diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 9cc4ffa6c9..eed3754862 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -14,8 +14,7 @@ jobs: uses: ./.github/workflows/reusable-tests.yaml with: cache: true - solana_cli_version: 1.18.17 - solang_version: 0.3.2 + solana_cli_version: 2.0.8 node_version: 20.16.0 cargo_profile: debug anchor_binary_name: anchor-binary diff --git a/.gitmodules b/.gitmodules index c4887b4aa9..87bf99de3c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "examples/swap/deps/openbook-dex"] - path = tests/swap/deps/openbook-dex - url = https://github.com/openbook-dex/program [submodule "examples/cfo/deps/openbook-dex"] path = tests/cfo/deps/openbook-dex url = https://github.com/openbook-dex/program diff --git a/CHANGELOG.md b/CHANGELOG.md index 9428107cff..62c60f95c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,7 @@ The minor version will be incremented upon a breaking change and the patch versi - cli: Accept integers for `warp_slot` ([#3235](https://github.com/coral-xyz/anchor/pull/3235)). - lang: Remove `EventIndex` ([#3244](https://github.com/coral-xyz/anchor/pull/3244)). - spl: Remove `dex` feature ([#3257](https://github.com/coral-xyz/anchor/pull/3257)). +- client, lang, spl: Upgrade Solana to v2 and SPL to the latest ([#3219](https://github.com/coral-xyz/anchor/pull/3219)). ## [0.30.1] - 2024-06-20 diff --git a/Cargo.lock b/Cargo.lock index c8037db7b3..8ce63837b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,30 +29,30 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aead" -version = "0.4.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ + "crypto-common", "generic-array", ] [[package]] name = "aes" -version = "0.7.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", "cpufeatures", - "opaque-debug", ] [[package]] name = "aes-gcm-siv" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc" +checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" dependencies = [ "aead", "aes", @@ -63,17 +63,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom 0.2.10", - "once_cell", - "version_check", -] - [[package]] name = "ahash" version = "0.8.11" @@ -126,7 +115,7 @@ name = "anchor-attribute-account" version = "0.30.1" dependencies = [ "anchor-syn", - "bs58 0.5.0", + "bs58", "proc-macro2", "quote", "syn 1.0.109", @@ -167,7 +156,7 @@ dependencies = [ "anchor-lang-idl", "anchor-syn", "anyhow", - "bs58 0.5.0", + "bs58", "heck 0.3.3", "proc-macro2", "quote", @@ -243,7 +232,7 @@ name = "anchor-derive-serde" version = "0.30.1" dependencies = [ "anchor-syn", - "borsh-derive-internal 0.10.3", + "borsh-derive-internal", "proc-macro2", "quote", "syn 1.0.109", @@ -308,13 +297,13 @@ dependencies = [ "anchor-lang", "borsh 0.10.3", "mpl-token-metadata", - "spl-associated-token-account 3.0.2", + "spl-associated-token-account 5.0.0", "spl-memo", - "spl-pod 0.2.2", + "spl-pod 0.4.0", "spl-token", - "spl-token-2022 3.0.2", - "spl-token-group-interface 0.2.3", - "spl-token-metadata-interface 0.3.3", + "spl-token-2022 5.0.1", + "spl-token-group-interface 0.4.1", + "spl-token-metadata-interface 0.5.0", ] [[package]] @@ -322,7 +311,7 @@ name = "anchor-syn" version = "0.30.1" dependencies = [ "anyhow", - "bs58 0.5.0", + "bs58", "cargo_toml", "heck 0.3.3", "proc-macro2", @@ -409,9 +398,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "ark-bn254" @@ -454,7 +443,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version", @@ -477,7 +466,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -506,7 +495,7 @@ dependencies = [ "ark-serialize-derive", "ark-std", "digest 0.10.7", - "num-bigint 0.4.4", + "num-bigint 0.4.6", ] [[package]] @@ -532,9 +521,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -638,9 +627,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.79" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", @@ -716,10 +705,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] -name = "base64ct" -version = "1.6.0" +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bincode" @@ -760,20 +749,11 @@ dependencies = [ "serde", ] -[[package]] -name = "bitmaps" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" -dependencies = [ - "typenum", -] - [[package]] name = "blake3" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" dependencies = [ "arrayref", "arrayvec", @@ -808,16 +788,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" -[[package]] -name = "borsh" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" -dependencies = [ - "borsh-derive 0.9.3", - "hashbrown 0.11.2", -] - [[package]] name = "borsh" version = "0.10.3" @@ -830,25 +800,12 @@ dependencies = [ [[package]] name = "borsh" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" -dependencies = [ - "borsh-derive 1.3.1", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "0.9.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" dependencies = [ - "borsh-derive-internal 0.9.3", - "borsh-schema-derive-internal 0.9.3", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", + "borsh-derive 1.5.1", + "cfg_aliases 0.2.1", ] [[package]] @@ -857,8 +814,8 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" dependencies = [ - "borsh-derive-internal 0.10.3", - "borsh-schema-derive-internal 0.10.3", + "borsh-derive-internal", + "borsh-schema-derive-internal", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -866,9 +823,9 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ "once_cell", "proc-macro-crate 3.1.0", @@ -878,17 +835,6 @@ dependencies = [ "syn_derive", ] -[[package]] -name = "borsh-derive-internal" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "borsh-derive-internal" version = "0.10.3" @@ -900,17 +846,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "borsh-schema-derive-internal" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "borsh-schema-derive-internal" version = "0.10.3" @@ -945,15 +880,9 @@ dependencies = [ [[package]] name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - -[[package]] -name = "bs58" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ "tinyvec", ] @@ -976,18 +905,18 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2", "quote", @@ -1002,9 +931,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "caps" @@ -1048,11 +977,17 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1060,16 +995,17 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.5", + "windows-targets 0.52.4", ] [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array", + "crypto-common", + "inout", ] [[package]] @@ -1222,12 +1158,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "const-oid" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" - [[package]] name = "constant_time_eq" version = "0.3.0" @@ -1270,9 +1200,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -1297,7 +1227,7 @@ dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.9.0", + "memoffset", "scopeguard", ] @@ -1320,6 +1250,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", + "rand_core 0.6.4", "typenum", ] @@ -1335,9 +1266,9 @@ dependencies = [ [[package]] name = "ctr" -version = "0.8.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ "cipher", ] @@ -1410,15 +1341,6 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" -[[package]] -name = "der" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" -dependencies = [ - "const-oid", -] - [[package]] name = "der-parser" version = "8.2.0" @@ -1428,7 +1350,7 @@ dependencies = [ "asn1-rs", "displaydoc", "nom", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-traits", "rusticata-macros", ] @@ -1945,15 +1867,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash 0.7.6", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -1966,7 +1879,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.11", + "ahash", ] [[package]] @@ -2164,22 +2077,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "im" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" -dependencies = [ - "bitmaps", - "rand_core 0.6.4", - "rand_xoshiro", - "rayon", - "serde", - "sized-chunks", - "typenum", - "version_check", -] - [[package]] name = "indexmap" version = "1.9.3" @@ -2202,9 +2099,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", @@ -2213,6 +2110,15 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.12" @@ -2263,6 +2169,15 @@ dependencies = [ "either", ] +[[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.9" @@ -2347,9 +2262,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libsecp256k1" @@ -2399,18 +2314,6 @@ dependencies = [ "libsecp256k1-core", ] -[[package]] -name = "light-poseidon" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" -dependencies = [ - "ark-bn254", - "ark-ff", - "num-bigint 0.4.4", - "thiserror", -] - [[package]] name = "linux-raw-sys" version = "0.4.8" @@ -2429,9 +2332,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" @@ -2448,15 +2351,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.0" @@ -2522,9 +2416,9 @@ dependencies = [ [[package]] name = "mpl-token-metadata" -version = "4.1.2" +version = "5.0.0-beta.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf0f61b553e424a6234af1268456972ee66c2222e1da89079242251fa7479e5" +checksum = "b89cc55341b83e3331244447b3fa6d8711a386457799e9529c3423f9a9981a37" dependencies = [ "borsh 0.10.3", "num-derive 0.3.3", @@ -2541,15 +2435,15 @@ checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" [[package]] name = "nix" -version = "0.26.4" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "cfg-if", + "cfg_aliases 0.1.1", "libc", - "memoffset 0.7.1", - "pin-utils", + "memoffset", ] [[package]] @@ -2589,11 +2483,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -2638,11 +2531,10 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] @@ -2671,9 +2563,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -2690,39 +2582,18 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" -dependencies = [ - "num_enum_derive 0.6.1", -] - -[[package]] -name = "num_enum" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" -dependencies = [ - "num_enum_derive 0.7.2", -] - -[[package]] -name = "num_enum_derive" -version = "0.6.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.55", + "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", @@ -2928,17 +2799,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pkcs8" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" -dependencies = [ - "der", - "spki", - "zeroize", -] - [[package]] name = "pkg-config" version = "0.3.27" @@ -2953,9 +2813,9 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "polyval" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", "cpufeatures", @@ -3005,16 +2865,6 @@ dependencies = [ "toml 0.5.11", ] -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - [[package]] name = "proc-macro-crate" version = "3.1.0" @@ -3049,9 +2899,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -3065,17 +2915,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "qualifier_attr" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.55", -] - [[package]] name = "quinn" version = "0.10.2" @@ -3119,7 +2958,7 @@ checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", - "socket2 0.5.6", + "socket2 0.5.7", "tracing", "windows-sys 0.48.0", ] @@ -3204,15 +3043,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_xoshiro" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rayon" version = "1.10.0" @@ -3233,18 +3063,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "rcgen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" -dependencies = [ - "pem", - "ring 0.16.20", - "time", - "yasna", -] - [[package]] name = "redox_syscall" version = "0.2.16" @@ -3347,6 +3165,21 @@ dependencies = [ "winreg", ] +[[package]] +name = "reqwest-middleware" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a735987236a8e238bf0296c7e351b999c188ccc11477f311b82b55c93984216" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "task-local-extensions", + "thiserror", +] + [[package]] name = "ring" version = "0.16.20" @@ -3486,9 +3319,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" @@ -3575,15 +3408,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" dependencies = [ "serde_derive", ] @@ -3599,9 +3432,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" dependencies = [ "proc-macro2", "quote", @@ -3610,11 +3443,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -3664,9 +3498,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.33" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0623d197252096520c6f2a5e1171ee436e5af99a5d7caa2891e55e61950e6d9" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ "indexmap 2.2.6", "itoa", @@ -3768,16 +3602,6 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" -[[package]] -name = "sized-chunks" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" -dependencies = [ - "bitmaps", - "typenum", -] - [[package]] name = "slab" version = "0.4.9" @@ -3805,9 +3629,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3815,14 +3639,14 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4973213a11c2e1b924b36e0c6688682b5aa4623f8d4eeaa1204c32cee524e6d6" +checksum = "e92694b819c0baf7fe9d1f3d74c0360b08c49054e888f9bfbba731653bb7ff22" dependencies = [ "Inflector", - "base64 0.21.7", + "base64 0.22.1", "bincode", - "bs58 0.4.0", + "bs58", "bv", "lazy_static", "serde", @@ -3831,18 +3655,18 @@ dependencies = [ "solana-config-program", "solana-sdk", "spl-token", - "spl-token-2022 1.0.0", - "spl-token-group-interface 0.1.0", - "spl-token-metadata-interface 0.2.0", + "spl-token-2022 4.0.0", + "spl-token-group-interface 0.3.0", + "spl-token-metadata-interface 0.4.0", "thiserror", "zstd", ] [[package]] name = "solana-clap-utils" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909f4553d0b31bb5b97533a6b64cc321a4eace9112d6efbabcf4408ea1b3f1db" +checksum = "bf985fe4abeed8401b715d3c3cf08551455ea18bfe1e6fcf96f995f20723e053" dependencies = [ "chrono", "clap 2.34.0", @@ -3857,9 +3681,9 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2242c4a0776cdaec1358d0ffc61b32131985a7b2210c491fa465d28c313eb880" +checksum = "fe3d1d535798e8becae4d742d37269d0791f454a34443a95c810865b776ac378" dependencies = [ "dirs-next", "lazy_static", @@ -3873,9 +3697,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cc431df6cc1dd964134fa4ec7df765d3af3fae9c2148f96a3c4fb500290633" +checksum = "9a455a20e3e03d2da6d1e4f6c1f122c4ba4ab119651f02bd6744cc5af03e7774" dependencies = [ "async-trait", "bincode", @@ -3904,11 +3728,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-compute-budget" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1610de88eddf42a9a4b0a8f31eb3f7f9863850dedf51355508550975e8895cd" +dependencies = [ + "rustc_version", + "solana-sdk", +] + [[package]] name = "solana-config-program" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e38b040d3a42e8f7d80c4a86bb0d49d7aed663b56b0fe0ae135d2d145fb7ae3a" +checksum = "4e7961fbad7a0facdc03037b484bacbf80198f68347d37ed84b2866b63c24015" dependencies = [ "bincode", "chrono", @@ -3920,9 +3754,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae02622c63943485f0af3d0896626eaf6478e734f0b6bc61c7cc5320963c6e75" +checksum = "163e56d6851952e4ccde37a9b3fb6edab0207b6eb871da506434d55df4e8de94" dependencies = [ "async-trait", "bincode", @@ -3932,7 +3766,6 @@ dependencies = [ "log", "rand 0.8.5", "rayon", - "rcgen", "solana-measure", "solana-metrics", "solana-sdk", @@ -3940,11 +3773,24 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-curve25519" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147c81e77b74f5d0a52579c1cf982fffb8c4491fb3baabf0e4fa19e2f6f39030" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "solana-program", + "thiserror", +] + [[package]] name = "solana-faucet" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb2e8702fea7c9549d4e946c9b30894f99c94778d80cc8a669d8fdccb131ce3" +checksum = "044ee289987278e800857536e4eafaa04fba676e19edd11d06d1302cbded6f92" dependencies = [ "bincode", "byteorder", @@ -3965,47 +3811,21 @@ dependencies = [ ] [[package]] -name = "solana-frozen-abi" -version = "1.18.17" +name = "solana-inline-spl" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4867f66e9527fa44451c861c1dc6d9b2a7c7a668d7c6a297cdefbe39f4395b33" +checksum = "0f101319f4740095125c5006be1dc6d4b6108180def37ae94df42f16e78b93f4" dependencies = [ - "block-buffer 0.10.4", - "bs58 0.4.0", - "bv", - "either", - "generic-array", - "im", - "lazy_static", - "log", - "memmap2", - "rustc_version", - "serde", - "serde_bytes", - "serde_derive", - "sha2 0.10.8", - "solana-frozen-abi-macro", - "subtle", - "thiserror", -] - -[[package]] -name = "solana-frozen-abi-macro" -version = "1.18.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168f24d97347b85f05192df58d6be3e3047a4aadc4001bc1b9e711a5ec878eea" -dependencies = [ - "proc-macro2", - "quote", + "bytemuck", "rustc_version", - "syn 2.0.55", + "solana-sdk", ] [[package]] name = "solana-logger" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0511082fc62f2d086520fff5aa1917c389d8c840930c08ad255ae05952c08a2" +checksum = "dcc3c188176db5d4e60c137525439c4b881dfd262dd306abcac4c568f15177a6" dependencies = [ "env_logger", "lazy_static", @@ -4014,9 +3834,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55a3df105431d25f86f2a7da0cbbde5f54c1f0782ca59367ea4a8037bc6797" +checksum = "5fe09f58977e579c3e91f0a7032a1d741e76327924ae868d17beb5d496b40c8f" dependencies = [ "log", "solana-sdk", @@ -4024,9 +3844,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddec097ed7572804389195128dbd57958b427829153c6cd8ec3343c86fe3cd22" +checksum = "7860d18901af0b24e05d7631cd655924eb056d83a52040234f827cc3cc8da0c6" dependencies = [ "crossbeam-channel", "gethostname", @@ -4039,9 +3859,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258fa7c29fb7605b8d2ed89aa0d43c640d14f4147ad1f5b3fdad19a1ac145ca5" +checksum = "8b6723ddcc4393d9d2d5e258871461d0002e45c7d9b6ea895bff1011d16163e9" dependencies = [ "bincode", "clap 3.2.25", @@ -4051,21 +3871,22 @@ dependencies = [ "rand 0.8.5", "serde", "serde_derive", - "socket2 0.5.6", + "socket2 0.5.7", "solana-logger", "solana-sdk", "solana-version", + "static_assertions", "tokio", "url", ] [[package]] name = "solana-perf" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca422edcf16a6e64003ca118575ea641f7b750f14a0ad28c71dd84f33dcb912a" +checksum = "9393d11aa5643f6afdffa8ab7b12d8149b7b32409149f673f832f2be442fbe10" dependencies = [ - "ahash 0.8.11", + "ahash", "bincode", "bv", "caps", @@ -4080,8 +3901,6 @@ dependencies = [ "rayon", "rustc_version", "serde", - "solana-frozen-abi", - "solana-frozen-abi-macro", "solana-metrics", "solana-rayon-threadlimit", "solana-sdk", @@ -4090,38 +3909,34 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc5a636dc75e5c25651e34f7a36afc9ae60d38166687c5b0375abb580ac81a2" +checksum = "8d899c2a1d37290dcfeeb9d1c0032915a29bd48f35759f19ff1e0f6b096eca0b" dependencies = [ "ark-bn254", "ark-ec", "ark-ff", "ark-serialize", - "base64 0.21.7", + "base64 0.22.1", "bincode", "bitflags 2.5.0", "blake3", "borsh 0.10.3", - "borsh 0.9.3", - "borsh 1.3.1", - "bs58 0.4.0", + "borsh 1.5.1", + "bs58", "bv", "bytemuck", - "cc", + "bytemuck_derive", "console_error_panic_hook", "console_log", "curve25519-dalek", "getrandom 0.2.10", - "itertools 0.10.5", "js-sys", "lazy_static", - "libc", "libsecp256k1", - "light-poseidon", "log", - "memoffset 0.9.0", - "num-bigint 0.4.4", + "memoffset", + "num-bigint 0.4.6", "num-derive 0.4.0", "num-traits", "parking_lot", @@ -4131,29 +3946,24 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "serde_json", "sha2 0.10.8", "sha3 0.10.8", - "solana-frozen-abi", - "solana-frozen-abi-macro", "solana-sdk-macro", "thiserror", - "tiny-bip39", "wasm-bindgen", - "zeroize", ] [[package]] name = "solana-program-runtime" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf373c3da0387f47fee4c5ed2465a9628b9db026a62211a692a9285aa9251544" +checksum = "c2612ef05b38afcbf642f9be889819713b23564a26d3f612b2ab5616c9ea4c19" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "bincode", "eager", "enum-iterator", - "itertools 0.10.5", + "itertools 0.12.1", "libc", "log", "num-derive 0.4.0", @@ -4162,20 +3972,21 @@ dependencies = [ "rand 0.8.5", "rustc_version", "serde", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-compute-budget", "solana-measure", "solana-metrics", "solana-sdk", + "solana-type-overrides", + "solana-vote", "solana_rbpf", "thiserror", ] [[package]] name = "solana-pubsub-client" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b9abc76168d19927561db6a3685b98752bd0961b4ce4f8b7f85ee12238c017" +checksum = "be61b8e62654303ba158764fb37b4706cc280c7cd239dc977edaf599dfb79875" dependencies = [ "crossbeam-channel", "futures-util", @@ -4198,19 +4009,18 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7952c5306a0be5f5276448cd20246b31265bfa884f29a077a24303c6a16aeb34" +checksum = "1bcf89e7ed0daabc4db107d6c38453bbd0ef84150f0acec760c65579361378cb" dependencies = [ "async-mutex", "async-trait", "futures", - "itertools 0.10.5", + "itertools 0.12.1", "lazy_static", "log", "quinn", "quinn-proto", - "rcgen", "rustls", "solana-connection-cache", "solana-measure", @@ -4225,9 +4035,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4fa0cc66f8e73d769bca2ede3012ba2ef8ab67963e832808665369f2cf81743" +checksum = "45d6268135fcf812d9e9add2dff578b7ac8a0d003d6f95b996aec7a0311aad8e" dependencies = [ "lazy_static", "num_cpus", @@ -4235,9 +4045,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "289803796d4ff7b4699504d3ab9e9d9c5205ea3892b2ebe397b377494dbd75d4" +checksum = "fc12b8f2e668712995ae972c497663fdcb61f19b925029d104e19917b8d66428" dependencies = [ "console", "dialoguer", @@ -4254,17 +4064,18 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb55a08018776a62ecff52139fbcdab1a7baa4e8f077202be58156e8dde4d5f" +checksum = "846113929e8458f5dcb875d379cc28bdb9149ba68db80202b220795608bc3227" dependencies = [ "async-trait", - "base64 0.21.7", + "base64 0.22.1", "bincode", - "bs58 0.4.0", + "bs58", "indicatif", "log", "reqwest", + "reqwest-middleware", "semver", "serde", "serde_derive", @@ -4280,31 +4091,33 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a8403038f4d6ab65bc7e7afb3afe8d9824c592232553c5cef55cf3de36025d" +checksum = "272eb64c9baf966eccf4fa5c8ed9344fe162d2a13a2ac09cf2cd2b40a85a3a65" dependencies = [ - "base64 0.21.7", - "bs58 0.4.0", + "anyhow", + "base64 0.22.1", + "bs58", "jsonrpc-core", "reqwest", + "reqwest-middleware", "semver", "serde", "serde_derive", "serde_json", "solana-account-decoder", + "solana-inline-spl", "solana-sdk", "solana-transaction-status", "solana-version", - "spl-token-2022 1.0.0", "thiserror", ] [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4caca735caf76d51c074c3bacbfe38094bf7f92cfbe7b5b13f3bc4946e64f889" +checksum = "23cf6f2875e47a5ac67b00dda4306646bb63ae5bb79ef408758cf1bad810497b" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4315,17 +4128,16 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df43d3a1e1637397ab43cbc216a5a8f977ec8a3cc3f3ae8c3851c83a3255dbcf" +checksum = "b62d86ef4a245cec35b7b0c24a659e22cc2d1fbbad65c141e332cc5928ed04dc" dependencies = [ - "assert_matches", - "base64 0.21.7", "bincode", "bitflags 2.5.0", - "borsh 1.3.1", - "bs58 0.4.0", + "borsh 1.5.1", + "bs58", "bytemuck", + "bytemuck_derive", "byteorder", "chrono", "derivation-path", @@ -4333,19 +4145,17 @@ dependencies = [ "ed25519-dalek", "ed25519-dalek-bip32", "generic-array", + "getrandom 0.1.16", "hmac 0.12.1", - "itertools 0.10.5", + "itertools 0.12.1", "js-sys", "lazy_static", "libsecp256k1", "log", "memmap2", - "num-derive 0.4.0", - "num-traits", - "num_enum 0.7.2", + "num_enum", "pbkdf2 0.11.0", "qstring", - "qualifier_attr", "rand 0.7.3", "rand 0.8.5", "rustc_version", @@ -4358,9 +4168,6 @@ dependencies = [ "sha2 0.10.8", "sha3 0.10.8", "siphasher", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", "solana-program", "solana-sdk-macro", "thiserror", @@ -4370,11 +4177,11 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c76414183a325038ff020b22c07d1e9d2da0703ddc0244acfed37ee2921d96" +checksum = "23198ed620c4a61c97fe49bd907fc965659aea9a5ed0ea0cf90084eecc72a3c1" dependencies = [ - "bs58 0.4.0", + "bs58", "proc-macro2", "quote", "rustversion", @@ -4389,32 +4196,33 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-streamer" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad1bdb955ec6d23a1dbf87e403ff3e610d68616275693125a893d7ed4b2d323" +checksum = "2cef6776681796df95aeaacf5af2f017fd6e215579f6589ea67904bc384b4bcc" dependencies = [ "async-channel", "bytes", "crossbeam-channel", + "dashmap", "futures-util", "histogram", "indexmap 2.2.6", - "itertools 0.10.5", + "itertools 0.12.1", "libc", "log", "nix", "pem", "percentage", - "pkcs8", "quinn", "quinn-proto", "rand 0.8.5", - "rcgen", "rustls", "smallvec", + "solana-measure", "solana-metrics", "solana-perf", "solana-sdk", + "solana-transaction-metrics-tracker", "thiserror", "tokio", "x509-parser", @@ -4422,9 +4230,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc301310ba0755c449a8800136f67f8ad14419b366404629894cd10021495360" +checksum = "ff07c0d23dd839eda4324a02c8634855bdd1f72c385f4466e5caf78e7a5e2a25" dependencies = [ "bincode", "log", @@ -4437,9 +4245,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb887bd5078ff015e103e9ee54a6713380590efa8ff1804b3a653f07188928c6" +checksum = "fce3b3fb075bd06f360c74d77816d3527dbf9bb2f2e89f9e0a52a55c06575871" dependencies = [ "async-trait", "bincode", @@ -4459,17 +4267,33 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-transaction-metrics-tracker" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23895b81f3cc9ebf1472609bd2ce75b9bdea0f89a0c3245d5c72df354a92a4d" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "lazy_static", + "log", + "rand 0.8.5", + "solana-perf", + "solana-sdk", +] + [[package]] name = "solana-transaction-status" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0cdfdf63192fb60de094fae8e81159e4e3e9aac9659fe3f9ef0e707023fb32" +checksum = "4873ad4df45ef4f88b68982ac651caa93f489a4bfe62eedb2f59ea48da1df88e" dependencies = [ "Inflector", - "base64 0.21.7", + "base64 0.22.1", "bincode", - "borsh 0.10.3", - "bs58 0.4.0", + "borsh 1.5.1", + "bs58", "lazy_static", "log", "serde", @@ -4477,18 +4301,30 @@ dependencies = [ "serde_json", "solana-account-decoder", "solana-sdk", - "spl-associated-token-account 2.3.0", + "spl-associated-token-account 4.0.0", "spl-memo", "spl-token", - "spl-token-2022 1.0.0", + "spl-token-2022 4.0.0", + "spl-token-group-interface 0.3.0", + "spl-token-metadata-interface 0.4.0", "thiserror", ] +[[package]] +name = "solana-type-overrides" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "540b1df966da86b0e183e124e48fef59605daf57b22809842b5273cb49277a89" +dependencies = [ + "lazy_static", + "rand 0.8.5", +] + [[package]] name = "solana-udp-client" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea0d6d8d66e36371577f51c4d1d6192a66f1fa4efe7161a36d94677640dcadb" +checksum = "91423aac2b1410e5f81faeb8cf655d63249d525761c4bd3f92a2c8e7641060bb" dependencies = [ "async-trait", "solana-connection-cache", @@ -4501,25 +4337,38 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f4c2f531c22ce806b211118be8928a791425f97de4592371fb57b246ed33e34" +checksum = "cfc990baf7a1c8d08eff49add6b971b6f4c37c8a2ae4967b4c4300475226e71c" dependencies = [ "log", "rustc_version", "semver", "serde", "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", "solana-sdk", ] +[[package]] +name = "solana-vote" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5755419c8efaea27fd5fcd241ba43bcf248e7e420bb4733211236517ae93f38b" +dependencies = [ + "itertools 0.12.1", + "log", + "rustc_version", + "serde", + "serde_derive", + "solana-sdk", + "thiserror", +] + [[package]] name = "solana-vote-program" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d8a6486017e71a3714a8e1a635e17209135cc20535ba9808ccf106d80ff6e8b" +checksum = "8165c8bc37e34456f352715acb309eb65e014beca0297eaccdd4319dfea79981" dependencies = [ "bincode", "log", @@ -4528,8 +4377,6 @@ dependencies = [ "rustc_version", "serde", "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", "solana-metrics", "solana-program", "solana-program-runtime", @@ -4537,28 +4384,59 @@ dependencies = [ "thiserror", ] +[[package]] +name = "solana-zk-sdk" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b497ac230fa5ccc7509cfd99be56cb819b22b111cf57fc7e23eaf9e6ffcbb4fd" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek", + "itertools 0.12.1", + "lazy_static", + "merlin", + "num-derive 0.4.0", + "num-traits", + "rand 0.7.3", + "serde", + "serde_derive", + "serde_json", + "sha3 0.9.1", + "solana-program", + "solana-sdk", + "subtle", + "thiserror", + "zeroize", +] + [[package]] name = "solana-zk-token-sdk" -version = "1.18.17" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513407f88394e437b4ff5aad892bc5bf51a655ae2401e6e63549734d3695c46f" +checksum = "b286fa24abe68536297e232670d01d2c478f6d75a46311809c0a07bf251f3dfc" dependencies = [ "aes-gcm-siv", - "base64 0.21.7", + "base64 0.22.1", "bincode", "bytemuck", + "bytemuck_derive", "byteorder", "curve25519-dalek", - "getrandom 0.1.16", - "itertools 0.10.5", + "itertools 0.12.1", "lazy_static", "merlin", "num-derive 0.4.0", "num-traits", "rand 0.7.3", "serde", + "serde_derive", "serde_json", "sha3 0.9.1", + "solana-curve25519", "solana-program", "solana-sdk", "subtle", @@ -4568,9 +4446,9 @@ dependencies = [ [[package]] name = "solana_rbpf" -version = "0.8.0" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3" +checksum = "ff08afd63f70a1ba712fb0017be41e93b017f7e874785b54bb5ec9aa8949781d" dependencies = [ "byteorder", "combine", @@ -4611,79 +4489,56 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -[[package]] -name = "spki" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "spl-associated-token-account" -version = "2.3.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" +checksum = "68034596cf4804880d265f834af1ff2f821ad5293e41fa0f8f59086c181fc38e" dependencies = [ "assert_matches", - "borsh 0.10.3", + "borsh 1.5.1", "num-derive 0.4.0", "num-traits", "solana-program", "spl-token", - "spl-token-2022 1.0.0", + "spl-token-2022 4.0.0", "thiserror", ] [[package]] name = "spl-associated-token-account" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" +checksum = "d78b20903ab0fa951f07eeb4e24ea6a7f6ed91f655c2d75a5675f2ba6c73d64b" dependencies = [ - "assert_matches", - "borsh 1.3.1", + "borsh 1.5.1", "num-derive 0.4.0", "num-traits", "solana-program", + "spl-associated-token-account-client", "spl-token", - "spl-token-2022 3.0.2", + "spl-token-2022 5.0.1", "thiserror", ] [[package]] -name = "spl-discriminator" -version = "0.1.0" +name = "spl-associated-token-account-client" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +checksum = "0c5c1e2d53941ea7ebc4be3f86302a3c6c5178baa932bbc038468429e6900d36" dependencies = [ - "bytemuck", "solana-program", - "spl-discriminator-derive 0.1.1", ] [[package]] name = "spl-discriminator" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" +checksum = "a38ea8b6dedb7065887f12d62ed62c1743aa70749e8558f963609793f6fb12bc" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator-derive 0.2.0", -] - -[[package]] -name = "spl-discriminator-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadbefec4f3c678215ca72bd71862697bb06b41fd77c0088902dd3203354387b" -dependencies = [ - "quote", - "spl-discriminator-syn 0.1.1", - "syn 2.0.55", + "spl-discriminator-derive", ] [[package]] @@ -4693,21 +4548,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", - "spl-discriminator-syn 0.2.0", - "syn 2.0.55", -] - -[[package]] -name = "spl-discriminator-syn" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e5f2044ca42c8938d54d1255ce599c79a1ffd86b677dfab695caa20f9ffc3f2" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", + "spl-discriminator-syn", "syn 2.0.55", - "thiserror", ] [[package]] @@ -4725,82 +4567,59 @@ dependencies = [ [[package]] name = "spl-memo" -version = "4.0.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" +checksum = "a0dba2f2bb6419523405d21c301a32c9f9568354d4742552e7972af801f4bdb3" dependencies = [ "solana-program", ] [[package]] name = "spl-pod" -version = "0.1.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" +checksum = "c704c88fc457fa649ba3aabe195c79d885c3f26709efaddc453c8de352c90b87" dependencies = [ - "borsh 0.10.3", + "borsh 1.5.1", "bytemuck", + "bytemuck_derive", "solana-program", "solana-zk-token-sdk", - "spl-program-error 0.3.0", + "spl-program-error", ] [[package]] name = "spl-pod" -version = "0.2.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" +checksum = "00e38c99f09d58df06ca9a29fc0211786a4c34f4d099c1df27b1abaa206569a4" dependencies = [ - "borsh 1.3.1", + "borsh 1.5.1", "bytemuck", + "bytemuck_derive", "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.4.0", -] - -[[package]] -name = "spl-program-error" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" -dependencies = [ - "num-derive 0.4.0", - "num-traits", - "solana-program", - "spl-program-error-derive 0.3.1", - "thiserror", + "solana-zk-sdk", + "spl-program-error", ] [[package]] name = "spl-program-error" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5528f4dfa2a905012007999526955c79162c09668c69ad3c3f2ddfbd0b2984a4" +checksum = "d7b28bed65356558133751cc32b48a7a5ddfc59ac4e941314630bbed1ac10532" dependencies = [ "num-derive 0.4.0", "num-traits", "solana-program", - "spl-program-error-derive 0.4.0", + "spl-program-error-derive", "thiserror", ] [[package]] name = "spl-program-error-derive" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5269c8e868da17b6552ef35a51355a017bd8e0eae269c201fef830d35fa52c" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.55", -] - -[[package]] -name = "spl-program-error-derive" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "641aa3116b1d58481e921b5d41dafc26a67bd488cb288330dbde004641764dd4" +checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" dependencies = [ "proc-macro2", "quote", @@ -4810,206 +4629,237 @@ dependencies = [ [[package]] name = "spl-tlv-account-resolution" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" +checksum = "37a75a5f0fcc58126693ed78a17042e9dc53f07e357d6be91789f7d62aff61a4" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.0", - "spl-pod 0.1.1", - "spl-program-error 0.3.0", - "spl-type-length-value 0.3.0", + "spl-discriminator", + "spl-pod 0.3.1", + "spl-program-error", + "spl-type-length-value", ] [[package]] name = "spl-tlv-account-resolution" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" +checksum = "87d08a5889f14d182b19d9c4d33ee4b3402b6cbc2e057e33eda4e53f6d06029d" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-type-length-value 0.4.3", + "spl-discriminator", + "spl-pod 0.4.0", + "spl-program-error", + "spl-type-length-value", ] [[package]] name = "spl-token" -version = "4.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" +checksum = "70a0f06ac7f23dc0984931b1fe309468f14ea58e32660439c1cef19456f5d0e3" dependencies = [ "arrayref", "bytemuck", - "num-derive 0.3.3", + "num-derive 0.4.0", "num-traits", - "num_enum 0.6.1", + "num_enum", "solana-program", "thiserror", ] [[package]] name = "spl-token-2022" -version = "1.0.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" +checksum = "d9c10f3483e48679619c76598d4e4aebb955bc49b0a5cc63323afbf44135c9bf" dependencies = [ "arrayref", "bytemuck", "num-derive 0.4.0", "num-traits", - "num_enum 0.7.2", + "num_enum", "solana-program", "solana-security-txt", "solana-zk-token-sdk", "spl-memo", - "spl-pod 0.1.1", + "spl-pod 0.3.1", "spl-token", - "spl-token-group-interface 0.1.0", - "spl-token-metadata-interface 0.2.0", - "spl-transfer-hook-interface 0.4.1", - "spl-type-length-value 0.3.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", "thiserror", ] [[package]] name = "spl-token-2022" -version = "3.0.2" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" +checksum = "75a3c55d87de79715d19991e25dd41787364af534cfe5721814b28d8e2453050" dependencies = [ "arrayref", "bytemuck", "num-derive 0.4.0", "num-traits", - "num_enum 0.7.2", + "num_enum", "solana-program", "solana-security-txt", - "solana-zk-token-sdk", + "solana-zk-sdk", "spl-memo", - "spl-pod 0.2.2", + "spl-pod 0.4.0", "spl-token", - "spl-token-group-interface 0.2.3", - "spl-token-metadata-interface 0.3.3", - "spl-transfer-hook-interface 0.6.3", - "spl-type-length-value 0.4.3", + "spl-token-confidential-transfer-ciphertext-arithmetic", + "spl-token-confidential-transfer-proof-extraction", + "spl-token-confidential-transfer-proof-generation", + "spl-token-group-interface 0.4.1", + "spl-token-metadata-interface 0.5.0", + "spl-transfer-hook-interface 0.8.1", + "spl-type-length-value", "thiserror", ] [[package]] -name = "spl-token-group-interface" +name = "spl-token-confidential-transfer-ciphertext-arithmetic" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48df72fb98b4069979aa4806d4a634ad6f08cb0358e732e6fbac231c5dc075bd" +dependencies = [ + "base64 0.22.1", + "bytemuck", + "solana-curve25519", + "solana-zk-sdk", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae2ce92a0b9673c44207b21d99526b96d557d5a25752f36c38fae37c49129c3b" +dependencies = [ + "bytemuck", + "solana-curve25519", + "solana-zk-sdk", + "thiserror", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" +checksum = "216517cc8cd26dfe768521542f221f91049be102d1eefd8054cde881d1b5d267" +dependencies = [ + "curve25519-dalek", + "solana-zk-sdk", + "thiserror", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8752b85a5ecc1d9f3a43bce3dd9a6a053673aacf5deb513d1cbb88d3534ffd" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.0", - "spl-pod 0.1.1", - "spl-program-error 0.3.0", + "spl-discriminator", + "spl-pod 0.3.1", + "spl-program-error", ] [[package]] name = "spl-token-group-interface" -version = "0.2.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" +checksum = "7929b448f7a36d2065ae549a80883a0cf0e94215eecf59c79240eee0cce3620f" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", + "spl-discriminator", + "spl-pod 0.4.0", + "spl-program-error", ] [[package]] name = "spl-token-metadata-interface" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" +checksum = "c6c2318ddff97e006ed9b1291ebec0750a78547f870f62a69c56fe3b46a5d8fc" dependencies = [ - "borsh 0.10.3", + "borsh 1.5.1", "solana-program", - "spl-discriminator 0.1.0", - "spl-pod 0.1.1", - "spl-program-error 0.3.0", - "spl-type-length-value 0.3.0", + "spl-discriminator", + "spl-pod 0.3.1", + "spl-program-error", + "spl-type-length-value", ] [[package]] name = "spl-token-metadata-interface" -version = "0.3.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" +checksum = "e1cdf88690dc21db5a124bac7be5d2b6171c526a5bce157170afb1771238f049" dependencies = [ - "borsh 1.3.1", + "borsh 1.5.1", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-type-length-value 0.4.3", + "spl-discriminator", + "spl-pod 0.4.0", + "spl-program-error", + "spl-type-length-value", ] [[package]] name = "spl-transfer-hook-interface" -version = "0.4.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259" +checksum = "a110f33d941275d9f868b96daaa993f1e73b6806cc8836e43075b4d3ad8338a7" dependencies = [ "arrayref", "bytemuck", "solana-program", - "spl-discriminator 0.1.0", - "spl-pod 0.1.1", - "spl-program-error 0.3.0", - "spl-tlv-account-resolution 0.5.1", - "spl-type-length-value 0.3.0", + "spl-discriminator", + "spl-pod 0.3.1", + "spl-program-error", + "spl-tlv-account-resolution 0.7.0", + "spl-type-length-value", ] [[package]] name = "spl-transfer-hook-interface" -version = "0.6.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" +checksum = "d5864c1944c24f07c2823af91b6c578e7547d82301711506451734459a42872b" dependencies = [ "arrayref", "bytemuck", "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", - "spl-tlv-account-resolution 0.6.3", - "spl-type-length-value 0.4.3", + "spl-discriminator", + "spl-pod 0.4.0", + "spl-program-error", + "spl-tlv-account-resolution 0.8.0", + "spl-type-length-value", ] [[package]] name = "spl-type-length-value" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" +checksum = "bdcd73ec187bc409464c60759232e309f83b52a18a9c5610bf281c9c6432918c" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.0", - "spl-pod 0.1.1", - "spl-program-error 0.3.0", + "spl-discriminator", + "spl-pod 0.3.1", + "spl-program-error", ] [[package]] -name = "spl-type-length-value" -version = "0.4.3" +name = "static_assertions" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.0", -] +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" @@ -5044,9 +4894,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.4.1" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -5132,6 +4982,15 @@ dependencies = [ "xattr", ] +[[package]] +name = "task-local-extensions" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8" +dependencies = [ + "pin-utils", +] + [[package]] name = "tempfile" version = "3.8.0" @@ -5182,18 +5041,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", @@ -5288,7 +5147,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", + "socket2 0.5.7", "tokio-macros", "windows-sys 0.48.0", ] @@ -5316,9 +5175,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -5555,11 +5414,11 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "universal-hash" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "generic-array", + "crypto-common", "subtle", ] @@ -5602,9 +5461,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -5981,15 +5840,6 @@ dependencies = [ "libc", ] -[[package]] -name = "yasna" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" -dependencies = [ - "time", -] - [[package]] name = "zerocopy" version = "0.7.32" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 0c98d84e89..768a7069ab 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -36,11 +36,11 @@ semver = "1.0.4" serde = { version = "1.0.122", features = ["derive"] } serde_json = "1.0" shellexpand = "2.1.0" -solana-client = "1.17.3" -solana-cli-config = "1.17.3" -solana-faucet = "1.17.3" -solana-program = "1.17.3" -solana-sdk = "1.17.3" +solana-client = "2" +solana-cli-config = "2" +solana-faucet = "2" +solana-program = "2" +solana-sdk = "2" # Pin solang-parser because it may break in a backwards incompatible way in minor versions solang-parser = "=0.3.3" syn = { version = "1.0.60", features = ["full", "extra-traits"] } diff --git a/client/Cargo.toml b/client/Cargo.toml index 603c7ce1ee..c819b2497f 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -21,9 +21,9 @@ anyhow = "1" futures = "0.3" regex = "1" serde = { version = "1", features = ["derive"] } -solana-account-decoder = "1.17.3" -solana-client = "1.17.3" -solana-sdk = "1.17.3" +solana-account-decoder = "2" +solana-client = "2" +solana-sdk = "2" thiserror = "1" tokio = { version = "1", features = ["rt", "sync"] } url = "2" diff --git a/client/example/Cargo.toml b/client/example/Cargo.toml index 681d105e70..b167a8f0c8 100644 --- a/client/example/Cargo.toml +++ b/client/example/Cargo.toml @@ -19,5 +19,5 @@ events = { path = "../../tests/events/programs/events", features = ["no-entrypoi anyhow = "1.0.32" clap = { version = "4.2.4", features = ["derive"] } shellexpand = "2.1.0" -solana-sdk = "1.17.3" +solana-sdk = "2" tokio = { version = "1", features = ["full"] } diff --git a/docker/Makefile b/docker/Makefile index 33e564e142..4a1eacec65 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -6,7 +6,7 @@ ANCHOR_CLI=v0.30.1 # # Solana toolchain. # -SOLANA_CLI=v1.18.17 +SOLANA_CLI=v2.0.8 # # Build version should match the Anchor cli version. # diff --git a/docker/build/Dockerfile b/docker/build/Dockerfile index b7bc2cb0c7..83693c6a17 100644 --- a/docker/build/Dockerfile +++ b/docker/build/Dockerfile @@ -38,7 +38,7 @@ RUN . $NVM_DIR/nvm.sh && \ npm install -g yarn # Install Solana tools. -RUN sh -c "$(curl -sSfL https://release.solana.com/${SOLANA_CLI}/install)" +RUN sh -c "$(curl -sSfL https://release.anza.xyz/${SOLANA_CLI}/install)" # Install anchor. RUN cargo install --git https://github.com/coral-xyz/anchor --tag ${ANCHOR_CLI} anchor-cli --locked diff --git a/lang/Cargo.toml b/lang/Cargo.toml index 14f6f7d79c..f1678680fe 100644 --- a/lang/Cargo.toml +++ b/lang/Cargo.toml @@ -56,5 +56,5 @@ base64 = "0.21" bincode = "1" borsh = "0.10.3" bytemuck = "1" -solana-program = "1.17.3" +solana-program = "2" thiserror = "1" diff --git a/setup-tests.sh b/setup-tests.sh index 6907314e04..57410a8c5d 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" != "1.18.17" ]; then - solana-install init 1.18.17 +if [ "$active_version" != "2.0.8" ]; then + agave-install init 2.0.8 fi git submodule update --init --recursive --depth 1 diff --git a/spl/Cargo.toml b/spl/Cargo.toml index b455bf29d8..7d66df8fdf 100644 --- a/spl/Cargo.toml +++ b/spl/Cargo.toml @@ -27,11 +27,11 @@ token_2022_extensions = ["spl-token-2022", "spl-token-group-interface", "spl-tok [dependencies] anchor-lang = { path = "../lang", version = "0.30.1", features = ["derive"] } borsh = { version = "0.10.3", optional = true } -mpl-token-metadata = { version = "4", optional = true } -spl-associated-token-account = { version = "3", features = ["no-entrypoint"], optional = true } -spl-memo = { version = "4", features = ["no-entrypoint"], optional = true } -spl-token = { version = "4", features = ["no-entrypoint"], optional = true } -spl-token-2022 = { version = "3", features = ["no-entrypoint"], optional = true } -spl-token-group-interface = { version = "0.2.3", optional = true } -spl-token-metadata-interface = { version = "0.3.3", optional = true } -spl-pod = { version = "0.2.2", optional = true } +mpl-token-metadata = { version = "5.0.0-beta.0", optional = true } +spl-associated-token-account = { version = "5", features = ["no-entrypoint"], optional = true } +spl-memo = { version = "5", features = ["no-entrypoint"], optional = true } +spl-token = { version = "6", features = ["no-entrypoint"], optional = true } +spl-token-2022 = { version = "5.0.1", features = ["no-entrypoint"], optional = true } +spl-token-group-interface = { version = "0.4.1", optional = true } +spl-token-metadata-interface = { version = "0.5", optional = true } +spl-pod = { version = "0.4", optional = true } diff --git a/spl/src/token_2022_extensions/token_group.rs b/spl/src/token_2022_extensions/token_group.rs index 8dff9dea53..cb85e03514 100644 --- a/spl/src/token_2022_extensions/token_group.rs +++ b/spl/src/token_2022_extensions/token_group.rs @@ -6,7 +6,7 @@ use anchor_lang::{context::CpiContext, Accounts}; pub fn token_group_initialize<'info>( ctx: CpiContext<'_, '_, '_, 'info, TokenGroupInitialize<'info>>, update_authority: Option, - max_size: u32, + max_size: u64, ) -> Result<()> { let ix = spl_token_group_interface::instruction::initialize_group( ctx.accounts.program_id.key, diff --git a/spl/src/token_interface.rs b/spl/src/token_interface.rs index 5b1b4db2c6..6e6047cd4e 100644 --- a/spl/src/token_interface.rs +++ b/spl/src/token_interface.rs @@ -1,10 +1,8 @@ +use anchor_lang::__private::bytemuck::Pod; use anchor_lang::solana_program::program_pack::Pack; use anchor_lang::solana_program::pubkey::Pubkey; use spl_token_2022::extension::ExtensionType; -use spl_token_2022::{ - extension::{BaseStateWithExtensions, Extension, StateWithExtensions}, - solana_zk_token_sdk::instruction::Pod, -}; +use spl_token_2022::extension::{BaseStateWithExtensions, Extension, StateWithExtensions}; use std::ops::Deref; pub use crate::token_2022::*; diff --git a/tests/auction-house/programs/auction-house/Cargo.toml b/tests/auction-house/programs/auction-house/Cargo.toml index 2029f1932c..892e1368fd 100644 --- a/tests/auction-house/programs/auction-house/Cargo.toml +++ b/tests/auction-house/programs/auction-house/Cargo.toml @@ -19,7 +19,5 @@ idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] [dependencies] anchor-lang = { path = "../../../../lang" } anchor-spl = { path = "../../../../spl", features = ["metadata"] } -spl-token = { version = "3.2", features = ["no-entrypoint"] } -spl-associated-token-account = { version = "1.1.1", features = ["no-entrypoint"] } thiserror = "1.0" arrayref = "0.3.6" diff --git a/tests/auction-house/programs/auction-house/src/lib.rs b/tests/auction-house/programs/auction-house/src/lib.rs index 803be95af1..dd24b000cb 100644 --- a/tests/auction-house/programs/auction-house/src/lib.rs +++ b/tests/auction-house/programs/auction-house/src/lib.rs @@ -8,17 +8,21 @@ use { program::{invoke, invoke_signed}, system_instruction, }, - AnchorDeserialize, AnchorSerialize, }, anchor_spl::{ - associated_token::AssociatedToken, + associated_token::{spl_associated_token_account, AssociatedToken}, metadata::mpl_token_metadata, - token::{Mint, Token, TokenAccount}, + token::{ + spl_token::{ + self, + instruction::{approve, revoke}, + }, + Mint, Token, TokenAccount, + }, }, - spl_token::instruction::{approve, revoke}, }; -anchor_lang::declare_id!("hausS13jsjafwWwGqZTUQRmWyvyxn9EQpqMwV1PBBmk"); +declare_id!("hausS13jsjafwWwGqZTUQRmWyvyxn9EQpqMwV1PBBmk"); const PREFIX: &str = "auction_house"; const FEE_PAYER: &str = "fee_payer"; diff --git a/tests/auction-house/programs/auction-house/src/utils.rs b/tests/auction-house/programs/auction-house/src/utils.rs index 3082c8ddf8..497f6415cb 100644 --- a/tests/auction-house/programs/auction-house/src/utils.rs +++ b/tests/auction-house/programs/auction-house/src/utils.rs @@ -10,12 +10,16 @@ use { }, }, anchor_spl::{ + associated_token::spl_associated_token_account::{ + create_associated_token_account, get_associated_token_address, + }, metadata::mpl_token_metadata, - token::{Mint, Token, TokenAccount}, + token::{ + spl_token::{self, instruction::initialize_account2, state::Account}, + Mint, Token, TokenAccount, + }, }, arrayref::array_ref, - spl_associated_token_account::get_associated_token_address, - spl_token::{instruction::initialize_account2, state::Account}, std::{convert::TryInto, slice::Iter}, }; pub fn assert_is_ata(ata: &AccountInfo, wallet: &Pubkey, mint: &Pubkey) -> Result { @@ -46,11 +50,7 @@ pub fn make_ata<'a>( } invoke_signed( - &spl_associated_token_account::create_associated_token_account( - &fee_payer.key, - &wallet.key, - &mint.key, - ), + &create_associated_token_account(&fee_payer.key, &wallet.key, &mint.key), &[ ata, wallet, diff --git a/tests/errors/tests/errors.ts b/tests/errors/tests/errors.ts index 253fe95bb2..09df19e7e0 100644 --- a/tests/errors/tests/errors.ts +++ b/tests/errors/tests/errors.ts @@ -7,33 +7,27 @@ import { Errors } from "../target/types/errors"; const withLogTest = async (callback, expectedLogs) => { let logTestOk = false; - const listener = anchor.getProvider().connection.onLogs( - "all", - (logs) => { - const index = logs.logs.findIndex( - (logLine) => logLine === expectedLogs[0] - ); - if (index === -1) { - console.log("Expected: "); - console.log(expectedLogs); - console.log("Actual: "); - console.log(logs); - } else { - const actualLogs = logs.logs.slice(index, index + expectedLogs.length); - for (let i = 0; i < expectedLogs.length; i++) { - if (actualLogs[i] !== expectedLogs[i]) { - console.log("Expected: "); - console.log(expectedLogs); - console.log("Actual: "); - console.log(logs); - return; - } + const listener = anchor.getProvider().connection.onLogs("all", (logs) => { + const index = logs.logs.findIndex((logLine) => logLine === expectedLogs[0]); + if (index === -1) { + console.log("Expected: "); + console.log(expectedLogs); + console.log("Actual: "); + console.log(logs); + } else { + const actualLogs = logs.logs.slice(index, index + expectedLogs.length); + for (let i = 0; i < expectedLogs.length; i++) { + if (actualLogs[i] !== expectedLogs[i]) { + console.log("Expected: "); + console.log(expectedLogs); + console.log("Actual: "); + console.log(logs); + return; } - logTestOk = true; } - }, - "recent" - ); + logTestOk = true; + } + }); try { await callback(); } catch (err) { diff --git a/tests/misc/programs/misc-optional/Cargo.toml b/tests/misc/programs/misc-optional/Cargo.toml index d960fc7465..61129e3143 100644 --- a/tests/misc/programs/misc-optional/Cargo.toml +++ b/tests/misc/programs/misc-optional/Cargo.toml @@ -18,5 +18,4 @@ idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] [dependencies] anchor-lang = { path = "../../../../lang", features = ["init-if-needed"] } anchor-spl = { path = "../../../../spl" } -spl-associated-token-account = { version = "1.1.1", features = ["no-entrypoint"] } bytemuck = { version = "1.4.0", features = ["derive", "min_const_generics"] } diff --git a/tests/misc/programs/misc/Cargo.toml b/tests/misc/programs/misc/Cargo.toml index bab20265b0..37bdb58aea 100644 --- a/tests/misc/programs/misc/Cargo.toml +++ b/tests/misc/programs/misc/Cargo.toml @@ -19,5 +19,4 @@ my-feature = [] [dependencies] anchor-lang = { path = "../../../../lang", features = ["init-if-needed"] } anchor-spl = { path = "../../../../spl" } -spl-associated-token-account = { version = "1.1.1", features = ["no-entrypoint"] } bytemuck = { version = "1.4.0", features = ["derive", "min_const_generics"] } diff --git a/tests/spl/token-extensions/programs/token-extensions/Cargo.toml b/tests/spl/token-extensions/programs/token-extensions/Cargo.toml index 0425682514..a3f920a937 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.6.3" -spl-transfer-hook-interface = "0.6.3" -spl-type-length-value = "0.4.3" -spl-pod = "0.2.2" +spl-tlv-account-resolution = "0.8.0" +spl-transfer-hook-interface = "0.8.1" +spl-type-length-value = "0.6" +spl-pod = "0.4" 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 953666fe73..a721120dc8 100644 --- a/tests/spl/token-extensions/programs/token-extensions/src/instructions.rs +++ b/tests/spl/token-extensions/programs/token-extensions/src/instructions.rs @@ -8,14 +8,14 @@ use anchor_spl::{ transfer_hook::TransferHook, }, token_interface::{ - spl_token_metadata_interface::state::TokenMetadata, token_metadata_initialize, Mint, - Token2022, TokenAccount, TokenMetadataInitialize, + get_mint_extension_data, spl_token_metadata_interface::state::TokenMetadata, + token_metadata_initialize, Mint, Token2022, TokenAccount, TokenMetadataInitialize, }, }; use spl_pod::optional_keys::OptionalNonZeroPubkey; use crate::{ - get_meta_list_size, get_mint_extensible_extension_data, get_mint_extension_data, + get_meta_list_size, get_mint_extensible_extension_data, update_account_lamports_to_minimum_balance, META_LIST_ACCOUNT_SEED, }; diff --git a/tests/spl/token-extensions/programs/token-extensions/src/utils.rs b/tests/spl/token-extensions/programs/token-extensions/src/utils.rs index 9a65280554..da3be3a8aa 100644 --- a/tests/spl/token-extensions/programs/token-extensions/src/utils.rs +++ b/tests/spl/token-extensions/programs/token-extensions/src/utils.rs @@ -13,7 +13,6 @@ use anchor_lang::{ }; use anchor_spl::token_interface::spl_token_2022::{ extension::{BaseStateWithExtensions, Extension, StateWithExtensions}, - solana_zk_token_sdk::zk_token_proof_instruction::Pod, state::Mint, }; use spl_tlv_account_resolution::{account::ExtraAccountMeta, state::ExtraAccountMetaList}; @@ -46,13 +45,6 @@ pub fn get_mint_extensible_extension_data( Ok(extension_data) } -pub fn get_mint_extension_data(account: &mut AccountInfo) -> Result { - let mint_data = account.data.borrow(); - let mint_with_extension = StateWithExtensions::::unpack(&mint_data)?; - let extension_data = *mint_with_extension.get_extension::()?; - Ok(extension_data) -} - pub fn get_extra_meta_list_account_pda(mint: Pubkey) -> Pubkey { Pubkey::find_program_address(&[META_LIST_ACCOUNT_SEED, mint.as_ref()], &crate::id()).0 } diff --git a/tests/spl/transfer-hook/programs/transfer-hook/Cargo.toml b/tests/spl/transfer-hook/programs/transfer-hook/Cargo.toml index ba8d5bf552..31d69b004b 100644 --- a/tests/spl/transfer-hook/programs/transfer-hook/Cargo.toml +++ b/tests/spl/transfer-hook/programs/transfer-hook/Cargo.toml @@ -18,6 +18,6 @@ idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] [dependencies] anchor-lang = { path = "../../../../../lang", features = ["interface-instructions"] } anchor-spl = { path = "../../../../../spl" } -spl-discriminator = "0.2.5" -spl-tlv-account-resolution = "0.6.5" -spl-transfer-hook-interface = "0.6.5" +spl-discriminator = "0.3" +spl-tlv-account-resolution = "0.8" +spl-transfer-hook-interface = "0.8.1" diff --git a/tests/swap/Anchor.toml b/tests/swap/Anchor.toml index 8d0b36a487..2bf4164fcd 100644 --- a/tests/swap/Anchor.toml +++ b/tests/swap/Anchor.toml @@ -7,7 +7,7 @@ swap = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS" [[test.genesis]] address = "srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX" -program = "./deps/openbook-dex/dex/target/deploy/serum_dex.so" +program = "prebuilt-programs/openbook_dex.so" [scripts] test = "yarn run mocha -t 1000000 tests/" diff --git a/tests/swap/deps/openbook-dex b/tests/swap/deps/openbook-dex deleted file mode 160000 index 5420646709..0000000000 --- a/tests/swap/deps/openbook-dex +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5420646709df6edaaea90162d4f7476328077293 diff --git a/tests/swap/prebuilt-programs/openbook_dex.so b/tests/swap/prebuilt-programs/openbook_dex.so new file mode 100755 index 0000000000000000000000000000000000000000..891bf4bf0a68852bc8a10bdcc319fcc3c9dc8369 GIT binary patch literal 184560 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 KgY+Ed|Nj61+3x}X literal 0 HcmV?d00001 diff --git a/tests/zero-copy/programs/zero-copy/Cargo.toml b/tests/zero-copy/programs/zero-copy/Cargo.toml index df3dcba28e..d1a728a119 100644 --- a/tests/zero-copy/programs/zero-copy/Cargo.toml +++ b/tests/zero-copy/programs/zero-copy/Cargo.toml @@ -22,4 +22,4 @@ bytemuck = {version = "1.4.0", features = ["derive", "min_const_generics"]} [dev-dependencies] anchor-client = { path = "../../../../client", features = ["debug", "async"] } -solana-program-test = "1.17.3" +solana-program-test = "2"