diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f9e8d3bb3..dec8f940b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,7 @@ The minor version will be incremented upon a breaking change and the patch versi - cli: Fix excessive test validator requests ([#2828](https://github.com/coral-xyz/anchor/pull/2828)). - client: Fix `parse_logs_response` to prevent panics when more than 1 outer instruction exists in logs ([#2856](https://github.com/coral-xyz/anchor/pull/2856)). - avm, cli: Fix `stdsimd` feature compilation error from `ahash` when installing the CLI using newer Rust versions ([#2867](https://github.com/coral-xyz/anchor/pull/2867)). +- spl: Fix not being able to deserialize newer token 2022 extensions ([#2876](https://github.com/coral-xyz/anchor/pull/2876)). ### Breaking diff --git a/Cargo.lock b/Cargo.lock index 7af9cfec74..feb5516902 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -309,7 +309,7 @@ dependencies = [ "spl-associated-token-account", "spl-memo", "spl-token 4.0.0", - "spl-token-2022 0.9.0", + "spl-token-2022 3.0.2", "toml_edit 0.21.0", ] @@ -3878,8 +3878,8 @@ dependencies = [ "solana-sdk", "spl-token 4.0.0", "spl-token-2022 1.0.0", - "spl-token-group-interface", - "spl-token-metadata-interface", + "spl-token-group-interface 0.1.0", + "spl-token-metadata-interface 0.2.0", "thiserror", "zstd", ] @@ -4690,7 +4690,18 @@ checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator-derive", + "spl-discriminator-derive 0.1.1", +] + +[[package]] +name = "spl-discriminator" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive 0.2.0", ] [[package]] @@ -4700,7 +4711,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fadbefec4f3c678215ca72bd71862697bb06b41fd77c0088902dd3203354387b" dependencies = [ "quote", - "spl-discriminator-syn", + "spl-discriminator-syn 0.1.1", + "syn 2.0.55", +] + +[[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 0.2.0", "syn 2.0.55", ] @@ -4717,6 +4739,19 @@ dependencies = [ "thiserror", ] +[[package]] +name = "spl-discriminator-syn" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.55", + "thiserror", +] + [[package]] name = "spl-memo" version = "4.0.0" @@ -4736,7 +4771,20 @@ dependencies = [ "bytemuck", "solana-program", "solana-zk-token-sdk", - "spl-program-error", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-pod" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" +dependencies = [ + "borsh 1.3.1", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error 0.4.0", ] [[package]] @@ -4748,7 +4796,20 @@ dependencies = [ "num-derive 0.4.0", "num-traits", "solana-program", - "spl-program-error-derive", + "spl-program-error-derive 0.3.1", + "thiserror", +] + +[[package]] +name = "spl-program-error" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5528f4dfa2a905012007999526955c79162c09668c69ad3c3f2ddfbd0b2984a4" +dependencies = [ + "num-derive 0.4.0", + "num-traits", + "solana-program", + "spl-program-error-derive 0.4.0", "thiserror", ] @@ -4765,17 +4826,15 @@ dependencies = [ ] [[package]] -name = "spl-tlv-account-resolution" +name = "spl-program-error-derive" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062e148d3eab7b165582757453632ffeef490c02c86a48bfdb4988f63eefb3b9" +checksum = "641aa3116b1d58481e921b5d41dafc26a67bd488cb288330dbde004641764dd4" dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.55", ] [[package]] @@ -4786,10 +4845,24 @@ checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-type-length-value 0.3.0", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" +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", ] [[package]] @@ -4824,9 +4897,9 @@ dependencies = [ [[package]] name = "spl-token-2022" -version = "0.9.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4abf34a65ba420584a0c35f3903f8d727d1f13ababbdc3f714c6b065a686e86" +checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" dependencies = [ "arrayref", "bytemuck", @@ -4834,21 +4907,23 @@ dependencies = [ "num-traits", "num_enum 0.7.2", "solana-program", + "solana-security-txt", "solana-zk-token-sdk", "spl-memo", - "spl-pod", + "spl-pod 0.1.0", "spl-token 4.0.0", - "spl-token-metadata-interface", - "spl-transfer-hook-interface 0.3.0", - "spl-type-length-value", + "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", "thiserror", ] [[package]] name = "spl-token-2022" -version = "1.0.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" +checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" dependencies = [ "arrayref", "bytemuck", @@ -4859,12 +4934,12 @@ dependencies = [ "solana-security-txt", "solana-zk-token-sdk", "spl-memo", - "spl-pod", + "spl-pod 0.2.2", "spl-token 4.0.0", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface 0.4.1", - "spl-type-length-value", + "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", "thiserror", ] @@ -4876,9 +4951,22 @@ checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.0", ] [[package]] @@ -4889,26 +4977,24 @@ checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" dependencies = [ "borsh 0.10.3", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-type-length-value 0.3.0", ] [[package]] -name = "spl-transfer-hook-interface" -version = "0.3.0" +name = "spl-token-metadata-interface" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051d31803f873cabe71aec3c1b849f35248beae5d19a347d93a5c9cccc5d5a9b" +checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" dependencies = [ - "arrayref", - "bytemuck", + "borsh 1.3.1", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-tlv-account-resolution 0.4.0", - "spl-type-length-value", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.0", + "spl-type-length-value 0.4.3", ] [[package]] @@ -4920,11 +5006,27 @@ dependencies = [ "arrayref", "bytemuck", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", "spl-tlv-account-resolution 0.5.1", - "spl-type-length-value", + "spl-type-length-value 0.3.0", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" +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", ] [[package]] @@ -4935,9 +5037,22 @@ checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-type-length-value" +version = "0.4.3" +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", ] [[package]] diff --git a/bench/COMPUTE_UNITS.md b/bench/COMPUTE_UNITS.md index b6a3b6964f..4206ca870e 100644 --- a/bench/COMPUTE_UNITS.md +++ b/bench/COMPUTE_UNITS.md @@ -70,21 +70,21 @@ Solana version: 1.18.8 | boxedAccountUnsized4 | 2,019 | 🟢 **-527 (20.70%)** | | boxedAccountUnsizedInit8 | 37,496 | 🟢 **-2,879 (7.13%)** | | boxedAccountUnsized8 | 3,776 | 🟢 **-983 (20.66%)** | -| boxedInterfaceAccountMint1 | 1,503 | 🟢 **-693 (31.56%)** | -| boxedInterfaceAccountMint2 | 2,555 | 🟢 **-1,292 (33.58%)** | -| boxedInterfaceAccountMint4 | 4,645 | 🟢 **-2,487 (34.87%)** | -| boxedInterfaceAccountMint8 | 8,859 | 🟢 **-4,884 (35.54%)** | -| boxedInterfaceAccountToken1 | 2,285 | 🔴 **+159 (7.48%)** | -| boxedInterfaceAccountToken2 | 4,118 | 🔴 **+412 (11.12%)** | -| boxedInterfaceAccountToken4 | 7,774 | 🔴 **+921 (13.44%)** | -| boxedInterfaceAccountToken8 | 15,116 | 🔴 **+1,932 (14.65%)** | -| interfaceAccountMint1 | 1,603 | 🟢 **-682 (29.85%)** | -| interfaceAccountMint2 | 2,893 | 🟢 **-1,285 (30.76%)** | -| interfaceAccountMint4 | 5,475 | 🟢 **-2,489 (31.25%)** | -| interfaceAccountMint8 | 10,636 | 🟢 **-4,902 (31.55%)** | -| interfaceAccountToken1 | 2,359 | 🔴 **+147 (6.65%)** | -| interfaceAccountToken2 | 4,386 | 🔴 **+356 (8.83%)** | -| interfaceAccountToken4 | 8,437 | 🔴 **+774 (10.10%)** | +| boxedInterfaceAccountMint1 | 1,372 | 🟢 **-824 (37.52%)** | +| boxedInterfaceAccountMint2 | 2,293 | 🟢 **-1,554 (40.40%)** | +| boxedInterfaceAccountMint4 | 4,121 | 🟢 **-3,011 (42.22%)** | +| boxedInterfaceAccountMint8 | 7,811 | 🟢 **-5,932 (43.16%)** | +| boxedInterfaceAccountToken1 | 2,056 | 🟢 **-70 (3.29%)** | +| boxedInterfaceAccountToken2 | 3,660 | 🟢 **-46 (1.24%)** | +| boxedInterfaceAccountToken4 | 6,858 | 🔴 **+5 (0.07%)** | +| boxedInterfaceAccountToken8 | 13,284 | 🔴 **+100 (0.76%)** | +| interfaceAccountMint1 | 1,472 | 🟢 **-813 (35.58%)** | +| interfaceAccountMint2 | 2,631 | 🟢 **-1,547 (37.03%)** | +| interfaceAccountMint4 | 4,951 | 🟢 **-3,013 (37.83%)** | +| interfaceAccountMint8 | 9,588 | 🟢 **-5,950 (38.29%)** | +| interfaceAccountToken1 | 2,130 | 🟢 **-82 (3.71%)** | +| interfaceAccountToken2 | 3,928 | 🟢 **-102 (2.53%)** | +| interfaceAccountToken4 | 7,521 | 🟢 **-142 (1.85%)** | | interface1 | 600 | 🟢 **-141 (19.03%)** | | interface2 | 745 | 🟢 **-189 (20.24%)** | | interface4 | 1,033 | 🟢 **-282 (21.44%)** | diff --git a/spl/Cargo.toml b/spl/Cargo.toml index 74a129d471..41815c0a51 100644 --- a/spl/Cargo.toml +++ b/spl/Cargo.toml @@ -34,7 +34,7 @@ solana-program = "1.16" spl-associated-token-account = { version = "2.2", 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 = "0.9", features = ["no-entrypoint"], optional = true } +spl-token-2022 = { version = "3", features = ["no-entrypoint"], optional = true } # TODO: Remove after https://github.com/coral-xyz/anchor/pull/2795 is merged. # `toml_edit 0.21.1` has MSRV of `1.69.0` which is above `1.68.0` that comes from `solana-cli 1.17`. diff --git a/tests/bench/bench.json b/tests/bench/bench.json index a96ce8d555..2ea0674739 100644 --- a/tests/bench/bench.json +++ b/tests/bench/bench.json @@ -616,21 +616,21 @@ "boxedAccountUnsized4": 2019, "boxedAccountUnsizedInit8": 37496, "boxedAccountUnsized8": 3776, - "boxedInterfaceAccountMint1": 1503, - "boxedInterfaceAccountMint2": 2555, - "boxedInterfaceAccountMint4": 4645, - "boxedInterfaceAccountMint8": 8859, - "boxedInterfaceAccountToken1": 2285, - "boxedInterfaceAccountToken2": 4118, - "boxedInterfaceAccountToken4": 7774, - "boxedInterfaceAccountToken8": 15116, - "interfaceAccountMint1": 1603, - "interfaceAccountMint2": 2893, - "interfaceAccountMint4": 5475, - "interfaceAccountMint8": 10636, - "interfaceAccountToken1": 2359, - "interfaceAccountToken2": 4386, - "interfaceAccountToken4": 8437, + "boxedInterfaceAccountMint1": 1372, + "boxedInterfaceAccountMint2": 2293, + "boxedInterfaceAccountMint4": 4121, + "boxedInterfaceAccountMint8": 7811, + "boxedInterfaceAccountToken1": 2056, + "boxedInterfaceAccountToken2": 3660, + "boxedInterfaceAccountToken4": 6858, + "boxedInterfaceAccountToken8": 13284, + "interfaceAccountMint1": 1472, + "interfaceAccountMint2": 2631, + "interfaceAccountMint4": 4951, + "interfaceAccountMint8": 9588, + "interfaceAccountToken1": 2130, + "interfaceAccountToken2": 3928, + "interfaceAccountToken4": 7521, "interface1": 600, "interface2": 745, "interface4": 1033,