diff --git a/Cargo.lock b/Cargo.lock index 2c294d752c..5b38c81c4d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,12 +107,6 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - [[package]] name = "arrayvec" version = "0.7.2" @@ -354,21 +348,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "blake3" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "cc", - "cfg-if 0.1.10", - "constant_time_eq", - "crypto-mac", - "digest 0.9.0", -] - [[package]] name = "blake3" version = "1.3.1" @@ -376,7 +355,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" dependencies = [ "arrayref", - "arrayvec 0.7.2", + "arrayvec", "cc", "cfg-if 1.0.0", "constant_time_eq", @@ -474,12 +453,6 @@ dependencies = [ "syn 1.0.91", ] -[[package]] -name = "bs58" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" - [[package]] name = "bs58" version = "0.4.0" @@ -1044,19 +1017,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "curve25519-dalek" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" -dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "3.2.1" @@ -1247,7 +1207,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek 3.2.1", + "curve25519-dalek", "ed25519", "rand 0.7.3", "serde", @@ -1333,19 +1293,6 @@ dependencies = [ "syn 1.0.91", ] -[[package]] -name = "env_logger" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - [[package]] name = "env_logger" version = "0.9.0" @@ -2081,15 +2028,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.10.3" @@ -2324,25 +2262,6 @@ dependencies = [ "libz-sys", ] -[[package]] -name = "libsecp256k1" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" -dependencies = [ - "arrayref", - "base64 0.12.3", - "digest 0.9.0", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "typenum", -] - [[package]] name = "libsecp256k1" version = "0.6.0" @@ -2465,15 +2384,6 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" -[[package]] -name = "memmap2" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" -dependencies = [ - "libc", -] - [[package]] name = "memmap2" version = "0.5.3" @@ -3113,7 +3023,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c6ce811d0b2e103743eec01db1c50612221f173084ce2f7941053e94b6bb474" dependencies = [ "difflib", - "itertools 0.10.3", + "itertools", "predicates-core", ] @@ -3256,7 +3166,7 @@ dependencies = [ "cfg-if 1.0.0", "cmake", "heck", - "itertools 0.10.3", + "itertools", "lazy_static", "log", "multimap", @@ -3275,7 +3185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df35198f0777b75e9ff669737c6da5136b59dba33cf5a010a6d1cc4d56defc6f" dependencies = [ "anyhow", - "itertools 0.10.3", + "itertools", "proc-macro2 1.0.32", "quote 1.0.10", "syn 1.0.91", @@ -3548,7 +3458,7 @@ dependencies = [ "solana-bpf-loader-program", "solana-logger 1.11.0", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana_rbpf", ] @@ -4263,16 +4173,17 @@ dependencies = [ "Inflector", "base64 0.13.0", "bincode", - "bs58 0.4.0", + "bs58", "bv", "lazy_static", "serde", "serde_derive", "serde_json", "solana-config-program", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", "spl-token", + "spl-token-2022", "thiserror", "zstd", ] @@ -4287,7 +4198,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-measure", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", ] @@ -4310,7 +4221,7 @@ dependencies = [ "solana-measure", "solana-net-utils", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-test-validator", "solana-transaction-status", @@ -4333,7 +4244,7 @@ dependencies = [ "solana-frozen-abi-macro 1.11.0", "solana-program 1.11.0", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", ] @@ -4345,7 +4256,7 @@ dependencies = [ "bincode", "solana-address-lookup-table-program", "solana-program-test", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -4365,7 +4276,7 @@ dependencies = [ "solana-perf", "solana-poh", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-version", ] @@ -4380,7 +4291,7 @@ dependencies = [ "solana-banks-server", "solana-program 1.11.0", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "tarpc", "thiserror", "tokio", @@ -4392,7 +4303,7 @@ name = "solana-banks-interface" version = "1.11.0" dependencies = [ "serde", - "solana-sdk", + "solana-sdk 1.11.0", "tarpc", ] @@ -4405,7 +4316,7 @@ dependencies = [ "futures 0.3.21", "solana-banks-interface", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-send-transaction-service", "tarpc", "tokio", @@ -4449,7 +4360,7 @@ dependencies = [ "solana-net-utils", "solana-rpc", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-test-validator", "solana-version", @@ -4470,7 +4381,7 @@ dependencies = [ "serde_derive", "solana-frozen-abi 1.11.0", "solana-frozen-abi-macro 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -4479,15 +4390,15 @@ version = "1.11.0" dependencies = [ "bincode", "byteorder", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", "rand 0.7.3", "solana-measure", "solana-metrics", "solana-program-runtime", "solana-runtime", - "solana-sdk", - "solana-zk-token-sdk", + "solana-sdk 1.11.0", + "solana-zk-token-sdk 1.11.0", "solana_rbpf", "thiserror", ] @@ -4498,13 +4409,13 @@ version = "1.11.0" dependencies = [ "fs_extra", "log", - "memmap2 0.5.3", + "memmap2", "modular-bitfield", "rand 0.7.3", "rayon", "solana-logger 1.11.0", "solana-measure", - "solana-sdk", + "solana-sdk 1.11.0", "tempfile", ] @@ -4518,7 +4429,7 @@ dependencies = [ "regex", "serial_test", "solana-download-utils", - "solana-sdk", + "solana-sdk 1.11.0", "tar", ] @@ -4539,7 +4450,7 @@ dependencies = [ "rpassword", "solana-perf", "solana-remote-wallet", - "solana-sdk", + "solana-sdk 1.11.0", "tempfile", "thiserror", "tiny-bip39", @@ -4556,7 +4467,7 @@ dependencies = [ "rpassword", "solana-perf", "solana-remote-wallet", - "solana-sdk", + "solana-sdk 1.11.0", "tempfile", "thiserror", "tiny-bip39", @@ -4569,7 +4480,7 @@ name = "solana-cli" version = "1.11.0" dependencies = [ "bincode", - "bs58 0.4.0", + "bs58", "clap 2.33.3", "console", "const_format", @@ -4596,7 +4507,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-program-runtime", "solana-remote-wallet", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-test-validator", "solana-transaction-status", @@ -4620,7 +4531,7 @@ dependencies = [ "serde_derive", "serde_yaml", "solana-clap-utils", - "solana-sdk", + "solana-sdk 1.11.0", "url 2.2.2", ] @@ -4644,7 +4555,7 @@ dependencies = [ "solana-clap-utils", "solana-cli-config", "solana-client", - "solana-sdk", + "solana-sdk 1.11.0", "solana-transaction-status", "solana-vote-program", "spl-memo", @@ -4660,14 +4571,14 @@ dependencies = [ "async-trait", "base64 0.13.0", "bincode", - "bs58 0.4.0", + "bs58", "bytes", "clap 2.33.3", "crossbeam-channel", "futures 0.3.21", "futures-util", "indicatif", - "itertools 0.10.3", + "itertools", "jsonrpc-core", "jsonrpc-http-server", "lazy_static", @@ -4691,7 +4602,7 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-net-utils", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-transaction-status", "solana-version", @@ -4721,7 +4632,7 @@ dependencies = [ "solana-rayon-threadlimit", "solana-rpc", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-test-validator", "solana-transaction-status", @@ -4735,7 +4646,7 @@ name = "solana-compute-budget-program" version = "1.11.0" dependencies = [ "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -4748,7 +4659,7 @@ dependencies = [ "serde_derive", "solana-logger 1.11.0", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -4758,14 +4669,14 @@ dependencies = [ "ahash", "base64 0.13.0", "bincode", - "bs58 0.4.0", + "bs58", "chrono", "crossbeam-channel", "dashmap", "etcd-client", "fs_extra", "histogram", - "itertools 0.10.3", + "itertools", "log", "lru", "matches", @@ -4799,7 +4710,7 @@ dependencies = [ "solana-rayon-threadlimit", "solana-rpc", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-send-transaction-service", "solana-stake-program", "solana-streamer", @@ -4832,7 +4743,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-net-utils", "solana-perf", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-version", ] @@ -4846,7 +4757,7 @@ dependencies = [ "log", "reqwest", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -4857,7 +4768,7 @@ dependencies = [ "ed25519-dalek", "rand 0.7.3", "solana-program-test", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -4879,7 +4790,7 @@ dependencies = [ "solana-metrics", "solana-perf", "solana-rayon-threadlimit", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -4897,7 +4808,7 @@ dependencies = [ "solana-cli-config", "solana-logger 1.11.0", "solana-metrics", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", "spl-memo", "thiserror", @@ -4906,21 +4817,23 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.8.2" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab31b4bda342736987ec16526a6cac4fa817f86ced9634f020ce1dcfac0867f" +checksum = "55e139feda2afd510dea2027584cc35a9ee9ebac0bfef1ab4d23647bf5c091a6" dependencies = [ - "bs58 0.3.1", + "bs58", "bv", "generic-array 0.14.5", + "im", + "lazy_static", "log", - "memmap2 0.1.0", - "rustc_version 0.2.3", + "memmap2", + "rustc_version 0.4.0", "serde", + "serde_bytes", "serde_derive", - "sha2 0.9.9", - "solana-frozen-abi-macro 1.8.2", - "solana-logger 1.8.2", + "sha2 0.10.2", + "solana-frozen-abi-macro 1.10.9", "thiserror", ] @@ -4928,13 +4841,13 @@ dependencies = [ name = "solana-frozen-abi" version = "1.11.0" dependencies = [ - "bs58 0.4.0", + "bs58", "bv", "generic-array 0.14.5", "im", "lazy_static", "log", - "memmap2 0.5.3", + "memmap2", "rustc_version 0.4.0", "serde", "serde_bytes", @@ -4947,13 +4860,13 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.8.2" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d532b5214f70604ac067250a004478389c0ebea8923ae58a49fa7dadd0e69f61" +checksum = "798b851026ff2366b318f7818a64846dd1ebc7e613f7893fba07a61cd55e6a48" dependencies = [ "proc-macro2 1.0.32", "quote 1.0.10", - "rustc_version 0.2.3", + "rustc_version 0.4.0", "syn 1.0.91", ] @@ -4982,7 +4895,7 @@ dependencies = [ "solana-ledger", "solana-logger 1.11.0", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-stake-program", "solana-version", "solana-vote-program", @@ -4995,7 +4908,7 @@ version = "1.11.0" dependencies = [ "solana-download-utils", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -5003,7 +4916,7 @@ name = "solana-geyser-plugin-interface" version = "1.11.0" dependencies = [ "log", - "solana-sdk", + "solana-sdk 1.11.0", "solana-transaction-status", "thiserror", ] @@ -5012,7 +4925,7 @@ dependencies = [ name = "solana-geyser-plugin-manager" version = "1.11.0" dependencies = [ - "bs58 0.4.0", + "bs58", "crossbeam-channel", "json5", "libloading", @@ -5023,7 +4936,7 @@ dependencies = [ "solana-metrics", "solana-rpc", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-transaction-status", "thiserror", ] @@ -5038,7 +4951,7 @@ dependencies = [ "crossbeam-channel", "flate2", "indexmap", - "itertools 0.10.3", + "itertools", "log", "lru", "matches", @@ -5066,7 +4979,7 @@ dependencies = [ "solana-perf", "solana-rayon-threadlimit", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-version", "solana-vote-program", @@ -5097,7 +5010,7 @@ dependencies = [ "solana-client", "solana-config-program", "solana-logger 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", "tar", "tempfile", @@ -5110,14 +5023,14 @@ dependencies = [ name = "solana-keygen" version = "1.11.0" dependencies = [ - "bs58 0.4.0", + "bs58", "clap 2.33.3", "dirs-next", "num_cpus", "solana-clap-utils", "solana-cli-config", "solana-remote-wallet", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", "tiny-bip39", ] @@ -5135,7 +5048,7 @@ dependencies = [ "crossbeam-channel", "fs_extra", "futures 0.3.21", - "itertools 0.10.3", + "itertools", "lazy_static", "libc", "log", @@ -5166,7 +5079,7 @@ dependencies = [ "solana-program-runtime", "solana-rayon-threadlimit", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-storage-bigtable", "solana-storage-proto", "solana-transaction-status", @@ -5183,14 +5096,14 @@ name = "solana-ledger-tool" version = "1.11.0" dependencies = [ "assert_cmd", - "bs58 0.4.0", + "bs58", "bytecount", "clap 2.33.3", "crossbeam-channel", "csv", "dashmap", "histogram", - "itertools 0.10.3", + "itertools", "log", "regex", "serde", @@ -5204,7 +5117,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-measure", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-stake-program", "solana-storage-bigtable", "solana-transaction-status", @@ -5222,7 +5135,7 @@ dependencies = [ "crossbeam-channel", "fs_extra", "gag", - "itertools 0.10.3", + "itertools", "log", "rand 0.7.3", "rayon", @@ -5236,7 +5149,7 @@ dependencies = [ "solana-ledger", "solana-logger 1.11.0", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-stake-program", "solana-streamer", "solana-vote-program", @@ -5257,11 +5170,11 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.8.2" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356fc4bc5395d26e7d0f3c7e6272b1a28dc591a81f1ee6e577c1d8859e946422" +checksum = "f63d0e97c25935253d93bf9c4740a990264185d1cf59a638a87066278ed817f0" dependencies = [ - "env_logger 0.8.4", + "env_logger", "lazy_static", "log", ] @@ -5270,7 +5183,7 @@ dependencies = [ name = "solana-logger" version = "1.11.0" dependencies = [ - "env_logger 0.9.0", + "env_logger", "lazy_static", "log", ] @@ -5280,7 +5193,7 @@ name = "solana-measure" version = "1.11.0" dependencies = [ "log", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -5292,7 +5205,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-measure", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", ] @@ -5311,14 +5224,14 @@ name = "solana-metrics" version = "1.11.0" dependencies = [ "crossbeam-channel", - "env_logger 0.9.0", + "env_logger", "gethostname", "lazy_static", "log", "rand 0.7.3", "reqwest", "serial_test", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -5346,7 +5259,7 @@ dependencies = [ "serde_derive", "socket2", "solana-logger 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", "tokio", "url 2.2.2", @@ -5369,7 +5282,7 @@ dependencies = [ "bincode", "bv", "caps", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "dlopen", "dlopen_derive", "fnv", @@ -5384,7 +5297,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-metrics", "solana-rayon-threadlimit", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", ] @@ -5405,7 +5318,7 @@ dependencies = [ "solana-metrics", "solana-perf", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-sys-tuner", "thiserror", ] @@ -5422,45 +5335,50 @@ dependencies = [ "solana-logger 1.11.0", "solana-measure", "solana-perf", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", ] [[package]] name = "solana-program" -version = "1.8.2" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6ebce89024394bc7d9289978f14220ab3bd7dac568ec4e081c2d9eb35d92c8f" +checksum = "80e41ae6eb080e3ab14e9eda4474b676861af63fb0871db8b9149b0c69aada4d" dependencies = [ "base64 0.13.0", "bincode", - "blake3 0.3.8", + "bitflags", + "blake3", "borsh", "borsh-derive", - "bs58 0.3.1", + "bs58", "bv", "bytemuck", - "curve25519-dalek 2.1.3", - "hex", - "itertools 0.9.0", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.1.16", + "itertools", + "js-sys", "lazy_static", - "libsecp256k1 0.5.0", + "libsecp256k1", "log", "num-derive", "num-traits", + "parking_lot 0.12.0", "rand 0.7.3", - "rustc_version 0.2.3", + "rustc_version 0.4.0", "rustversion", "serde", "serde_bytes", "serde_derive", - "sha2 0.9.9", - "sha3 0.9.1", - "solana-frozen-abi 1.8.2", - "solana-frozen-abi-macro 1.8.2", - "solana-logger 1.8.2", - "solana-sdk-macro 1.8.2", + "sha2 0.10.2", + "sha3 0.10.1", + "solana-frozen-abi 1.10.9", + "solana-frozen-abi-macro 1.10.9", + "solana-sdk-macro 1.10.9", "thiserror", + "wasm-bindgen", ] [[package]] @@ -5472,20 +5390,20 @@ dependencies = [ "base64 0.13.0", "bincode", "bitflags", - "blake3 1.3.1", + "blake3", "borsh", "borsh-derive", - "bs58 0.4.0", + "bs58", "bv", "bytemuck", "console_error_panic_hook", "console_log", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "getrandom 0.1.16", - "itertools 0.10.3", + "itertools", "js-sys", "lazy_static", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", "memoffset", "num-derive", @@ -5516,7 +5434,7 @@ dependencies = [ "base64 0.13.0", "bincode", "enum-iterator", - "itertools 0.10.3", + "itertools", "libc", "libloading", "log", @@ -5528,7 +5446,7 @@ dependencies = [ "solana-frozen-abi-macro 1.11.0", "solana-logger 1.11.0", "solana-measure", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", ] @@ -5549,7 +5467,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-program-runtime", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", "thiserror", "tokio", @@ -5576,7 +5494,7 @@ dependencies = [ "parking_lot 0.12.0", "qstring", "semver 1.0.7", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", "uriparse", ] @@ -5587,10 +5505,10 @@ version = "1.11.0" dependencies = [ "base64 0.13.0", "bincode", - "bs58 0.4.0", + "bs58", "crossbeam-channel", "dashmap", - "itertools 0.10.3", + "itertools", "jsonrpc-core", "jsonrpc-core-client", "jsonrpc-derive", @@ -5619,7 +5537,7 @@ dependencies = [ "solana-poh", "solana-rayon-threadlimit", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-send-transaction-service", "solana-stake-program", "solana-storage-bigtable", @@ -5640,7 +5558,7 @@ name = "solana-rpc-test" version = "1.11.0" dependencies = [ "bincode", - "bs58 0.4.0", + "bs58", "crossbeam-channel", "futures-util", "log", @@ -5651,7 +5569,7 @@ dependencies = [ "solana-client", "solana-logger 1.11.0", "solana-rpc", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-test-validator", "solana-transaction-status", @@ -5665,7 +5583,7 @@ dependencies = [ "arrayref", "assert_matches", "bincode", - "blake3 1.3.1", + "blake3", "bv", "bytemuck", "byteorder", @@ -5678,11 +5596,11 @@ dependencies = [ "fnv", "im", "index_list", - "itertools 0.10.3", + "itertools", "lazy_static", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", - "memmap2 0.5.3", + "memmap2", "num-derive", "num-traits", "num_cpus", @@ -5705,11 +5623,11 @@ dependencies = [ "solana-metrics", "solana-program-runtime", "solana-rayon-threadlimit", - "solana-sdk", + "solana-sdk 1.11.0", "solana-stake-program", "solana-vote-program", "solana-zk-token-proof-program", - "solana-zk-token-sdk", + "solana-zk-token-sdk 1.11.0", "symlink", "tar", "tempfile", @@ -5717,6 +5635,57 @@ dependencies = [ "zstd", ] +[[package]] +name = "solana-sdk" +version = "1.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef63e9db435bcc173d37073d769871379bb90c0fc60b20616f87edc0b06d890" +dependencies = [ + "assert_matches", + "base64 0.13.0", + "bincode", + "bitflags", + "borsh", + "bs58", + "bytemuck", + "byteorder", + "chrono", + "derivation-path", + "digest 0.10.3", + "ed25519-dalek", + "ed25519-dalek-bip32", + "generic-array 0.14.5", + "hmac 0.12.1", + "itertools", + "js-sys", + "lazy_static", + "libsecp256k1", + "log", + "memmap2", + "num-derive", + "num-traits", + "pbkdf2 0.10.1", + "qstring", + "rand 0.7.3", + "rand_chacha 0.2.2", + "rustc_version 0.4.0", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.10.2", + "sha3 0.10.1", + "solana-frozen-abi 1.10.9", + "solana-frozen-abi-macro 1.10.9", + "solana-logger 1.10.9", + "solana-program 1.10.9", + "solana-sdk-macro 1.10.9", + "thiserror", + "uriparse", + "wasm-bindgen", +] + [[package]] name = "solana-sdk" version = "1.11.0" @@ -5727,23 +5696,23 @@ dependencies = [ "bincode", "bitflags", "borsh", - "bs58 0.4.0", + "bs58", "bytemuck", "byteorder", "chrono", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "derivation-path", "digest 0.10.3", "ed25519-dalek", "ed25519-dalek-bip32", "generic-array 0.14.5", "hmac 0.12.1", - "itertools 0.10.3", + "itertools", "js-sys", "lazy_static", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", - "memmap2 0.5.3", + "memmap2", "num-derive", "num-traits", "pbkdf2 0.10.1", @@ -5771,11 +5740,11 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.8.2" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49de94601f4af95d8834817ac6c6f3cbedac8fd582a5c5b940e78fe07803b78b" +checksum = "5f4d6c73b2dea5705afd28266015a00e7a9c3496a98a45104733fa81e8dabbb5" dependencies = [ - "bs58 0.3.1", + "bs58", "proc-macro2 1.0.32", "quote 1.0.10", "rustversion", @@ -5786,7 +5755,7 @@ dependencies = [ name = "solana-sdk-macro" version = "1.11.0" dependencies = [ - "bs58 0.4.0", + "bs58", "proc-macro2 1.0.32", "quote 1.0.10", "rustversion", @@ -5804,7 +5773,7 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -5817,7 +5786,7 @@ dependencies = [ "solana-client", "solana-remote-wallet", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-stake-program", ] @@ -5839,7 +5808,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-metrics", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", "thiserror", ] @@ -5862,7 +5831,7 @@ dependencies = [ "serde_derive", "smpl_jwt", "solana-metrics", - "solana-sdk", + "solana-sdk 1.11.0", "solana-storage-proto", "solana-transaction-status", "thiserror", @@ -5875,12 +5844,12 @@ name = "solana-storage-proto" version = "1.11.0" dependencies = [ "bincode", - "bs58 0.4.0", + "bs58", "enum-iterator", "prost", "serde", "solana-account-decoder", - "solana-sdk", + "solana-sdk 1.11.0", "solana-transaction-status", "tonic-build", ] @@ -5903,7 +5872,7 @@ dependencies = [ "crossbeam-channel", "futures-util", "histogram", - "itertools 0.10.3", + "itertools", "libc", "log", "nix", @@ -5916,7 +5885,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-metrics", "solana-perf", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", "tokio", ] @@ -5955,7 +5924,7 @@ dependencies = [ "solana-program-test", "solana-rpc", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "tokio", ] @@ -5980,7 +5949,7 @@ dependencies = [ "solana-client", "solana-logger 1.11.0", "solana-remote-wallet", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-test-validator", "solana-transaction-status", @@ -6011,7 +5980,7 @@ dependencies = [ "solana-measure", "solana-net-utils", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-transaction-status", "solana-version", @@ -6024,7 +5993,7 @@ dependencies = [ "Inflector", "base64 0.13.0", "bincode", - "bs58 0.4.0", + "bs58", "lazy_static", "log", "serde", @@ -6034,11 +6003,12 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", "spl-associated-token-account", "spl-memo", "spl-token", + "spl-token-2022", "thiserror", ] @@ -6090,7 +6060,7 @@ dependencies = [ "solana-poh", "solana-rpc", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-send-transaction-service", "solana-storage-bigtable", "solana-streamer", @@ -6111,7 +6081,7 @@ dependencies = [ "serde_derive", "solana-frozen-abi 1.11.0", "solana-frozen-abi-macro 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -6130,7 +6100,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-metrics", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", ] @@ -6148,7 +6118,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-metrics", "solana-notifier", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", ] @@ -6161,8 +6131,38 @@ dependencies = [ "num-derive", "num-traits", "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", + "solana-sdk 1.11.0", + "solana-zk-token-sdk 1.11.0", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79e20a90b9e8c10baa62cbb396fd9af6a1e3d7b0c1c3ce84189d08d0f273ea8" +dependencies = [ + "aes-gcm-siv", + "arrayref", + "base64 0.13.0", + "bincode", + "bytemuck", + "byteorder", + "cipher 0.3.0", + "curve25519-dalek", + "getrandom 0.1.16", + "lazy_static", + "merlin", + "num-derive", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", + "sha3 0.9.1", + "solana-program 1.10.9", + "solana-sdk 1.10.9", + "subtle", + "thiserror", + "zeroize", ] [[package]] @@ -6176,7 +6176,7 @@ dependencies = [ "bytemuck", "byteorder", "cipher 0.4.3", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "getrandom 0.1.16", "lazy_static", "merlin", @@ -6187,7 +6187,7 @@ dependencies = [ "serde_json", "sha3 0.9.1", "solana-program 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", "subtle", "thiserror", "zeroize", @@ -6239,7 +6239,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "393e2240d521c3dd770806bff25c2c00d761ac962be106e14e22dd912007f428" dependencies = [ - "solana-program 1.8.2", + "solana-program 1.10.9", "spl-token", ] @@ -6249,7 +6249,7 @@ version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0dc6f70db6bacea7ff25870b016a65ba1d1b6013536f08e4fd79a8f9005325" dependencies = [ - "solana-program 1.8.2", + "solana-program 1.10.9", ] [[package]] @@ -6262,7 +6262,23 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 1.8.2", + "solana-program 1.10.9", + "thiserror", +] + +[[package]] +name = "spl-token-2022" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94151293267493245acd17c27702bd340619c8b91bbf6bda1322a2adf42d3faf" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program 1.10.9", + "solana-zk-token-sdk 0.4.0", "thiserror", ] diff --git a/account-decoder/Cargo.toml b/account-decoder/Cargo.toml index 6e677bba17..d90f3e8870 100644 --- a/account-decoder/Cargo.toml +++ b/account-decoder/Cargo.toml @@ -23,6 +23,7 @@ solana-config-program = { path = "../programs/config", version = "=1.11.0" } solana-sdk = { path = "../sdk", version = "=1.11.0" } solana-vote-program = { path = "../programs/vote", version = "=1.11.0" } spl-token = { version = "=3.2.0", features = ["no-entrypoint"] } +spl-token-2022 = { version = "=0.1.0", features = ["no-entrypoint"] } thiserror = "1.0" zstd = "0.11.1" diff --git a/account-decoder/src/parse_token.rs b/account-decoder/src/parse_token.rs index 638b80a142..9368baa7ee 100644 --- a/account-decoder/src/parse_token.rs +++ b/account-decoder/src/parse_token.rs @@ -19,14 +19,20 @@ fn spl_token_id() -> Pubkey { Pubkey::new_from_array(spl_token::id().to_bytes()) } +// A helper function to convert spl_token_2022::id() as spl_sdk::pubkey::Pubkey to +// solana_sdk::pubkey::Pubkey +fn spl_token_2022_id() -> Pubkey { + Pubkey::new_from_array(spl_token_2022::id().to_bytes()) +} + // Returns all known SPL Token program ids pub fn spl_token_ids() -> Vec { - vec![spl_token_id()] + vec![spl_token_id(), spl_token_2022_id()] } // Check if the provided program id as a known SPL Token program id pub fn is_known_spl_token_id(program_id: &Pubkey) -> bool { - *program_id == spl_token_id() + *program_id == spl_token_id() || *program_id == spl_token_2022_id() } // A helper function to convert spl_token::native_mint::id() as spl_sdk::pubkey::Pubkey to diff --git a/programs/bpf/Cargo.lock b/programs/bpf/Cargo.lock index 8569923e3a..943b6d4eec 100644 --- a/programs/bpf/Cargo.lock +++ b/programs/bpf/Cargo.lock @@ -24,7 +24,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" dependencies = [ - "generic-array 0.14.5", + "generic-array", ] [[package]] @@ -101,12 +101,6 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" -[[package]] -name = "arrayvec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" - [[package]] name = "arrayvec" version = "0.7.1" @@ -204,21 +198,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "blake3" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" -dependencies = [ - "arrayref", - "arrayvec 0.5.1", - "cc", - "cfg-if 0.1.10", - "constant_time_eq", - "crypto-mac", - "digest 0.9.0", -] - [[package]] name = "blake3" version = "1.3.1" @@ -226,7 +205,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" dependencies = [ "arrayref", - "arrayvec 0.7.1", + "arrayvec", "cc", "cfg-if 1.0.0", "constant_time_eq", @@ -240,7 +219,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ "block-padding", - "generic-array 0.14.5", + "generic-array", ] [[package]] @@ -249,7 +228,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1d36a02058e76b040de25a4464ba1c80935655595b661505c8b39b664828b95" dependencies = [ - "generic-array 0.14.5", + "generic-array", ] [[package]] @@ -276,7 +255,7 @@ checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" dependencies = [ "borsh-derive-internal", "borsh-schema-derive-internal", - "proc-macro-crate", + "proc-macro-crate 0.1.5", "proc-macro2 1.0.36", "syn 1.0.91", ] @@ -303,12 +282,6 @@ dependencies = [ "syn 1.0.91", ] -[[package]] -name = "bs58" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" - [[package]] name = "bs58" version = "0.4.0" @@ -457,7 +430,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.5", + "generic-array", ] [[package]] @@ -651,7 +624,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" dependencies = [ - "generic-array 0.14.5", + "generic-array", "typenum", ] @@ -661,7 +634,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.5", + "generic-array", "subtle", ] @@ -674,19 +647,6 @@ dependencies = [ "cipher 0.3.0", ] -[[package]] -name = "curve25519-dalek" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d85653f070353a16313d0046f173f70d1aadd5b42600a14de626f0dfb3473a5" -dependencies = [ - "byteorder 1.4.3", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "3.2.1" @@ -727,17 +687,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" -[[package]] -name = "derivative" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaed5874effa6cde088c644ddcdcb4ffd1511391c5be4fdd7a5ccd02c7e4a183" -dependencies = [ - "proc-macro2 1.0.36", - "quote 1.0.6", - "syn 1.0.91", -] - [[package]] name = "dialoguer" version = "0.10.0" @@ -749,22 +698,13 @@ dependencies = [ "zeroize", ] -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.3", -] - [[package]] name = "digest" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.5", + "generic-array", ] [[package]] @@ -846,7 +786,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek 3.2.1", + "curve25519-dalek", "ed25519", "rand 0.7.3", "serde", @@ -941,19 +881,6 @@ dependencies = [ "syn 1.0.91", ] -[[package]] -name = "env_logger" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - [[package]] name = "env_logger" version = "0.9.0" @@ -1147,15 +1074,6 @@ dependencies = [ "byteorder 1.4.3", ] -[[package]] -name = "generic-array" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -dependencies = [ - "typenum", -] - [[package]] name = "generic-array" version = "0.14.5" @@ -1257,12 +1175,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - [[package]] name = "histogram" version = "0.6.9" @@ -1295,7 +1207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ "digest 0.9.0", - "generic-array 0.14.5", + "generic-array", "hmac 0.8.1", ] @@ -1436,7 +1348,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1f03d4ab4d5dc9ec2d219f86c15d2a15fc08239d1cd3b2d6a19717c0a2f443" dependencies = [ - "generic-array 0.14.5", + "generic-array", ] [[package]] @@ -1454,15 +1366,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.10.3" @@ -1545,25 +1448,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "libsecp256k1" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" -dependencies = [ - "arrayref", - "base64 0.12.3", - "digest 0.9.0", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "typenum", -] - [[package]] name = "libsecp256k1" version = "0.6.0" @@ -1657,15 +1541,6 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" -[[package]] -name = "memmap2" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" -dependencies = [ - "libc", -] - [[package]] name = "memmap2" version = "0.5.3" @@ -1853,21 +1728,20 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b45a5c2ac4dd696ed30fa6b94b057ad909c7b7fc2e0d0808192bced894066" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" dependencies = [ - "derivative", "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.1.3", "proc-macro2 1.0.36", "quote 1.0.6", "syn 1.0.91", @@ -2100,6 +1974,16 @@ dependencies = [ "toml", ] +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror", + "toml", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2468,22 +2352,13 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.7", + "semver", ] [[package]] @@ -2618,27 +2493,12 @@ dependencies = [ "libc", ] -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - [[package]] name = "semver" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.136" @@ -2823,16 +2683,17 @@ dependencies = [ "Inflector", "base64 0.13.0", "bincode", - "bs58 0.4.0", + "bs58", "bv", "lazy_static", "serde", "serde_derive", "serde_json", "solana-config-program", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", "spl-token", + "spl-token-2022", "thiserror", "zstd", ] @@ -2846,13 +2707,13 @@ dependencies = [ "log", "num-derive", "num-traits", - "rustc_version 0.4.0", + "rustc_version", "serde", "solana-frozen-abi 1.11.0", "solana-frozen-abi-macro 1.11.0", "solana-program 1.11.0", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", ] @@ -2864,7 +2725,7 @@ dependencies = [ "futures", "solana-banks-interface", "solana-program 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", "tarpc", "thiserror", "tokio", @@ -2876,7 +2737,7 @@ name = "solana-banks-interface" version = "1.11.0" dependencies = [ "serde", - "solana-sdk", + "solana-sdk 1.11.0", "tarpc", ] @@ -2889,7 +2750,7 @@ dependencies = [ "futures", "solana-banks-interface", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-send-transaction-service", "tarpc", "tokio", @@ -2903,13 +2764,13 @@ version = "1.11.0" dependencies = [ "bincode", "byteorder 1.4.3", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", "solana-measure", "solana-metrics", "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", + "solana-sdk 1.11.0", + "solana-zk-token-sdk 1.11.0", "solana_rbpf", "thiserror", ] @@ -2921,7 +2782,7 @@ dependencies = [ "bincode", "byteorder 1.4.3", "elf", - "itertools 0.10.3", + "itertools", "log", "miow", "net2", @@ -2935,7 +2796,7 @@ dependencies = [ "solana-measure", "solana-program-runtime", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-transaction-status", "solana_rbpf", "walkdir", @@ -3117,7 +2978,7 @@ dependencies = [ "solana-program 1.11.0", "solana-program-runtime", "solana-program-test", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3202,7 +3063,7 @@ dependencies = [ "solana-program 1.11.0", "solana-program-runtime", "solana-program-test", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3216,7 +3077,7 @@ dependencies = [ name = "solana-bpf-rust-sha" version = "1.11.0" dependencies = [ - "blake3 1.3.1", + "blake3", "solana-program 1.11.0", ] @@ -3255,7 +3116,7 @@ dependencies = [ "solana-program 1.11.0", "solana-program-runtime", "solana-program-test", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3277,7 +3138,7 @@ name = "solana-bpf-rust-zk_token_elgamal" version = "1.11.0" dependencies = [ "solana-program 1.11.0", - "solana-zk-token-sdk", + "solana-zk-token-sdk 1.11.0", ] [[package]] @@ -3285,11 +3146,11 @@ name = "solana-bucket-map" version = "1.11.0" dependencies = [ "log", - "memmap2 0.5.3", + "memmap2", "modular-bitfield", "rand 0.7.3", "solana-measure", - "solana-sdk", + "solana-sdk 1.11.0", "tempfile", ] @@ -3302,7 +3163,7 @@ dependencies = [ "rpassword", "solana-perf", "solana-remote-wallet", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", "tiny-bip39", "uriparse", @@ -3319,7 +3180,7 @@ dependencies = [ "serde_derive", "serde_yaml", "solana-clap-utils", - "solana-sdk", + "solana-sdk 1.11.0", "url", ] @@ -3335,14 +3196,14 @@ dependencies = [ "humantime", "indicatif", "pretty-hex", - "semver 1.0.7", + "semver", "serde", "serde_json", "solana-account-decoder", "solana-clap-utils", "solana-cli-config", "solana-client", - "solana-sdk", + "solana-sdk 1.11.0", "solana-transaction-status", "solana-vote-program", "spl-memo", @@ -3356,14 +3217,14 @@ dependencies = [ "async-trait", "base64 0.13.0", "bincode", - "bs58 0.4.0", + "bs58", "bytes 1.1.0", "clap 2.33.3", "crossbeam-channel", "futures", "futures-util", "indicatif", - "itertools 0.10.3", + "itertools", "jsonrpc-core", "lazy_static", "log", @@ -3375,7 +3236,7 @@ dependencies = [ "rayon", "reqwest", "rustls", - "semver 1.0.7", + "semver", "serde", "serde_derive", "serde_json", @@ -3385,7 +3246,7 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-net-utils", - "solana-sdk", + "solana-sdk 1.11.0", "solana-streamer", "solana-transaction-status", "solana-version", @@ -3403,7 +3264,7 @@ name = "solana-compute-budget-program" version = "1.11.0" dependencies = [ "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3415,7 +3276,7 @@ dependencies = [ "serde", "serde_derive", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3433,7 +3294,7 @@ dependencies = [ "solana-cli-config", "solana-logger 1.11.0", "solana-metrics", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", "spl-memo", "thiserror", @@ -3442,21 +3303,23 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.7.6" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b98d31e0662fedf3a1ee30919c655713874d578e19e65affe46109b1b927f9" +checksum = "55e139feda2afd510dea2027584cc35a9ee9ebac0bfef1ab4d23647bf5c091a6" dependencies = [ - "bs58 0.3.1", + "bs58", "bv", - "generic-array 0.14.5", + "generic-array", + "im", + "lazy_static", "log", - "memmap2 0.1.0", - "rustc_version 0.2.3", + "memmap2", + "rustc_version", "serde", + "serde_bytes", "serde_derive", - "sha2 0.9.9", - "solana-frozen-abi-macro 1.7.6", - "solana-logger 1.7.6", + "sha2 0.10.2", + "solana-frozen-abi-macro 1.10.9", "thiserror", ] @@ -3464,14 +3327,14 @@ dependencies = [ name = "solana-frozen-abi" version = "1.11.0" dependencies = [ - "bs58 0.4.0", + "bs58", "bv", - "generic-array 0.14.5", + "generic-array", "im", "lazy_static", "log", - "memmap2 0.5.3", - "rustc_version 0.4.0", + "memmap2", + "rustc_version", "serde", "serde_bytes", "serde_derive", @@ -3482,13 +3345,13 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.7.6" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceac6e8ad1a784c92ff5f3d6ad68a8d664d389b08055b674c38b2b9abb69e6d4" +checksum = "798b851026ff2366b318f7818a64846dd1ebc7e613f7893fba07a61cd55e6a48" dependencies = [ "proc-macro2 1.0.36", "quote 1.0.6", - "rustc_version 0.2.3", + "rustc_version", "syn 1.0.91", ] @@ -3498,17 +3361,17 @@ version = "1.11.0" dependencies = [ "proc-macro2 1.0.36", "quote 1.0.6", - "rustc_version 0.4.0", + "rustc_version", "syn 1.0.91", ] [[package]] name = "solana-logger" -version = "1.7.6" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7c514fe57f8c5042fa88c19f5711c67f264db723d9d79379fcb78dd1f09bbf" +checksum = "f63d0e97c25935253d93bf9c4740a990264185d1cf59a638a87066278ed817f0" dependencies = [ - "env_logger 0.8.4", + "env_logger", "lazy_static", "log", ] @@ -3517,7 +3380,7 @@ dependencies = [ name = "solana-logger" version = "1.11.0" dependencies = [ - "env_logger 0.9.0", + "env_logger", "lazy_static", "log", ] @@ -3527,7 +3390,7 @@ name = "solana-measure" version = "1.11.0" dependencies = [ "log", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3539,7 +3402,7 @@ dependencies = [ "lazy_static", "log", "reqwest", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3556,7 +3419,7 @@ dependencies = [ "serde_derive", "socket2", "solana-logger 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", "solana-version", "tokio", "url", @@ -3570,7 +3433,7 @@ dependencies = [ "bincode", "bv", "caps", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "dlopen", "dlopen_derive", "fnv", @@ -3583,43 +3446,50 @@ dependencies = [ "serde", "solana-metrics", "solana-rayon-threadlimit", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", ] [[package]] name = "solana-program" -version = "1.7.6" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bfe6a5dfc5372c0a946018ecdd8115e38af78cea8275bac48cf3d105c6b1fb3" +checksum = "80e41ae6eb080e3ab14e9eda4474b676861af63fb0871db8b9149b0c69aada4d" dependencies = [ + "base64 0.13.0", "bincode", - "blake3 0.3.8", + "bitflags", + "blake3", "borsh", "borsh-derive", - "bs58 0.3.1", + "bs58", "bv", - "curve25519-dalek 2.1.0", - "hex", - "itertools 0.9.0", + "bytemuck", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.1.14", + "itertools", + "js-sys", "lazy_static", - "libsecp256k1 0.5.0", + "libsecp256k1", "log", "num-derive", "num-traits", + "parking_lot", "rand 0.7.3", - "rustc_version 0.2.3", + "rustc_version", "rustversion", "serde", "serde_bytes", "serde_derive", - "sha2 0.9.9", - "sha3 0.9.1", - "solana-frozen-abi 1.7.6", - "solana-frozen-abi-macro 1.7.6", - "solana-logger 1.7.6", - "solana-sdk-macro 1.7.6", + "sha2 0.10.2", + "sha3 0.10.1", + "solana-frozen-abi 1.10.9", + "solana-frozen-abi-macro 1.10.9", + "solana-sdk-macro 1.10.9", "thiserror", + "wasm-bindgen", ] [[package]] @@ -3629,27 +3499,27 @@ dependencies = [ "base64 0.13.0", "bincode", "bitflags", - "blake3 1.3.1", + "blake3", "borsh", "borsh-derive", - "bs58 0.4.0", + "bs58", "bv", "bytemuck", "console_error_panic_hook", "console_log", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "getrandom 0.1.14", - "itertools 0.10.3", + "itertools", "js-sys", "lazy_static", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", "memoffset", "num-derive", "num-traits", "parking_lot", "rand 0.7.3", - "rustc_version 0.4.0", + "rustc_version", "rustversion", "serde", "serde_bytes", @@ -3670,18 +3540,18 @@ dependencies = [ "base64 0.13.0", "bincode", "enum-iterator", - "itertools 0.10.3", + "itertools", "libc", "libloading", "log", "num-derive", "num-traits", - "rustc_version 0.4.0", + "rustc_version", "serde", "solana-frozen-abi 1.11.0", "solana-frozen-abi-macro 1.11.0", "solana-measure", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", ] @@ -3702,7 +3572,7 @@ dependencies = [ "solana-logger 1.11.0", "solana-program-runtime", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", "thiserror", "tokio", @@ -3727,8 +3597,8 @@ dependencies = [ "num-traits", "parking_lot", "qstring", - "semver 1.0.7", - "solana-sdk", + "semver", + "solana-sdk 1.11.0", "thiserror", "uriparse", ] @@ -3739,7 +3609,7 @@ version = "1.11.0" dependencies = [ "arrayref", "bincode", - "blake3 1.3.1", + "blake3", "bv", "bytemuck", "byteorder 1.4.3", @@ -3751,10 +3621,10 @@ dependencies = [ "fnv", "im", "index_list", - "itertools 0.10.3", + "itertools", "lazy_static", "log", - "memmap2 0.5.3", + "memmap2", "num-derive", "num-traits", "num_cpus", @@ -3762,7 +3632,7 @@ dependencies = [ "rand 0.7.3", "rayon", "regex", - "rustc_version 0.4.0", + "rustc_version", "serde", "serde_derive", "solana-address-lookup-table-program", @@ -3775,11 +3645,11 @@ dependencies = [ "solana-metrics", "solana-program-runtime", "solana-rayon-threadlimit", - "solana-sdk", + "solana-sdk 1.11.0", "solana-stake-program", "solana-vote-program", "solana-zk-token-proof-program", - "solana-zk-token-sdk", + "solana-zk-token-sdk 1.11.0", "symlink", "tar", "tempfile", @@ -3787,6 +3657,57 @@ dependencies = [ "zstd", ] +[[package]] +name = "solana-sdk" +version = "1.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef63e9db435bcc173d37073d769871379bb90c0fc60b20616f87edc0b06d890" +dependencies = [ + "assert_matches", + "base64 0.13.0", + "bincode", + "bitflags", + "borsh", + "bs58", + "bytemuck", + "byteorder 1.4.3", + "chrono", + "derivation-path", + "digest 0.10.3", + "ed25519-dalek", + "ed25519-dalek-bip32", + "generic-array", + "hmac 0.12.1", + "itertools", + "js-sys", + "lazy_static", + "libsecp256k1", + "log", + "memmap2", + "num-derive", + "num-traits", + "pbkdf2 0.10.1", + "qstring", + "rand 0.7.3", + "rand_chacha 0.2.2", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.10.2", + "sha3 0.10.1", + "solana-frozen-abi 1.10.9", + "solana-frozen-abi-macro 1.10.9", + "solana-logger 1.10.9", + "solana-program 1.10.9", + "solana-sdk-macro 1.10.9", + "thiserror", + "uriparse", + "wasm-bindgen", +] + [[package]] name = "solana-sdk" version = "1.11.0" @@ -3796,7 +3717,7 @@ dependencies = [ "bincode", "bitflags", "borsh", - "bs58 0.4.0", + "bs58", "bytemuck", "byteorder 1.4.3", "chrono", @@ -3804,21 +3725,21 @@ dependencies = [ "digest 0.10.3", "ed25519-dalek", "ed25519-dalek-bip32", - "generic-array 0.14.5", + "generic-array", "hmac 0.12.1", - "itertools 0.10.3", + "itertools", "js-sys", "lazy_static", - "libsecp256k1 0.6.0", + "libsecp256k1", "log", - "memmap2 0.5.3", + "memmap2", "num-derive", "num-traits", "pbkdf2 0.10.1", "qstring", "rand 0.7.3", "rand_chacha 0.2.2", - "rustc_version 0.4.0", + "rustc_version", "rustversion", "serde", "serde_bytes", @@ -3838,11 +3759,11 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.7.6" +version = "1.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84710ce45a21cccd9f2b09d8e9aad529080bb2540f27b1253874b6e732b465b9" +checksum = "5f4d6c73b2dea5705afd28266015a00e7a9c3496a98a45104733fa81e8dabbb5" dependencies = [ - "bs58 0.3.1", + "bs58", "proc-macro2 1.0.36", "quote 1.0.6", "rustversion", @@ -3853,7 +3774,7 @@ dependencies = [ name = "solana-sdk-macro" version = "1.11.0" dependencies = [ - "bs58 0.4.0", + "bs58", "proc-macro2 1.0.36", "quote 1.0.6", "rustversion", @@ -3870,7 +3791,7 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3881,7 +3802,7 @@ dependencies = [ "log", "num-derive", "num-traits", - "rustc_version 0.4.0", + "rustc_version", "serde", "serde_derive", "solana-config-program", @@ -3889,7 +3810,7 @@ dependencies = [ "solana-frozen-abi-macro 1.11.0", "solana-metrics", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", "thiserror", ] @@ -3901,7 +3822,7 @@ dependencies = [ "crossbeam-channel", "futures-util", "histogram", - "itertools 0.10.3", + "itertools", "libc", "log", "nix", @@ -3913,7 +3834,7 @@ dependencies = [ "rustls", "solana-metrics", "solana-perf", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", "tokio", ] @@ -3925,7 +3846,7 @@ dependencies = [ "Inflector", "base64 0.13.0", "bincode", - "bs58 0.4.0", + "bs58", "lazy_static", "log", "serde", @@ -3935,11 +3856,12 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "solana-vote-program", "spl-associated-token-account", "spl-memo", "spl-token", + "spl-token-2022", "thiserror", ] @@ -3948,12 +3870,12 @@ name = "solana-version" version = "1.11.0" dependencies = [ "log", - "rustc_version 0.4.0", + "rustc_version", "serde", "serde_derive", "solana-frozen-abi 1.11.0", "solana-frozen-abi-macro 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", ] [[package]] @@ -3964,14 +3886,14 @@ dependencies = [ "log", "num-derive", "num-traits", - "rustc_version 0.4.0", + "rustc_version", "serde", "serde_derive", "solana-frozen-abi 1.11.0", "solana-frozen-abi-macro 1.11.0", "solana-metrics", "solana-program-runtime", - "solana-sdk", + "solana-sdk 1.11.0", "thiserror", ] @@ -3984,8 +3906,38 @@ dependencies = [ "num-derive", "num-traits", "solana-program-runtime", - "solana-sdk", - "solana-zk-token-sdk", + "solana-sdk 1.11.0", + "solana-zk-token-sdk 1.11.0", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79e20a90b9e8c10baa62cbb396fd9af6a1e3d7b0c1c3ce84189d08d0f273ea8" +dependencies = [ + "aes-gcm-siv", + "arrayref", + "base64 0.13.0", + "bincode", + "bytemuck", + "byteorder 1.4.3", + "cipher 0.3.0", + "curve25519-dalek", + "getrandom 0.1.14", + "lazy_static", + "merlin", + "num-derive", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", + "sha3 0.9.1", + "solana-program 1.10.9", + "solana-sdk 1.10.9", + "subtle", + "thiserror", + "zeroize", ] [[package]] @@ -3999,7 +3951,7 @@ dependencies = [ "bytemuck", "byteorder 1.4.3", "cipher 0.4.3", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "getrandom 0.1.14", "lazy_static", "merlin", @@ -4010,7 +3962,7 @@ dependencies = [ "serde_json", "sha3 0.9.1", "solana-program 1.11.0", - "solana-sdk", + "solana-sdk 1.11.0", "subtle", "thiserror", "zeroize", @@ -4056,7 +4008,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "393e2240d521c3dd770806bff25c2c00d761ac962be106e14e22dd912007f428" dependencies = [ - "solana-program 1.7.6", + "solana-program 1.10.9", "spl-token", ] @@ -4066,7 +4018,7 @@ version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0dc6f70db6bacea7ff25870b016a65ba1d1b6013536f08e4fd79a8f9005325" dependencies = [ - "solana-program 1.7.6", + "solana-program 1.10.9", ] [[package]] @@ -4079,7 +4031,23 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 1.7.6", + "solana-program 1.10.9", + "thiserror", +] + +[[package]] +name = "spl-token-2022" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94151293267493245acd17c27702bd340619c8b91bbf6bda1322a2adf42d3faf" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program 1.10.9", + "solana-zk-token-sdk 0.4.0", "thiserror", ] @@ -4577,7 +4545,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" dependencies = [ - "generic-array 0.14.5", + "generic-array", "subtle", ] diff --git a/transaction-status/Cargo.toml b/transaction-status/Cargo.toml index e86bb8a17d..479cebfe40 100644 --- a/transaction-status/Cargo.toml +++ b/transaction-status/Cargo.toml @@ -28,6 +28,7 @@ solana-vote-program = { path = "../programs/vote", version = "=1.11.0" } spl-associated-token-account = { version = "=1.0.3", features = ["no-entrypoint"] } spl-memo = { version = "=3.0.1", features = ["no-entrypoint"] } spl-token = { version = "=3.2.0", features = ["no-entrypoint"] } +spl-token-2022 = { version = "=0.1.0", features = ["no-entrypoint"] } thiserror = "1.0" [package.metadata.docs.rs] diff --git a/transaction-status/src/parse_associated_token.rs b/transaction-status/src/parse_associated_token.rs index e4ff83ef7b..15457232d2 100644 --- a/transaction-status/src/parse_associated_token.rs +++ b/transaction-status/src/parse_associated_token.rs @@ -51,8 +51,9 @@ fn check_num_associated_token_accounts( mod test { use { super::*, + solana_account_decoder::parse_token::pubkey_from_spl_token, spl_associated_token_account::{ - create_associated_token_account, + create_associated_token_account, get_associated_token_address, solana_program::{ instruction::CompiledInstruction as SplAssociatedTokenCompiledInstruction, message::Message, pubkey::Pubkey as SplAssociatedTokenPubkey, @@ -74,33 +75,46 @@ mod test { } } + fn convert_account_keys(message: &Message) -> Vec { + message + .account_keys + .iter() + .map(pubkey_from_spl_token) + .collect() + } + #[test] fn test_parse_associated_token() { - let mut keys: Vec = vec![]; - for _ in 0..7 { - keys.push(solana_sdk::pubkey::new_rand()); - } + let funder = Pubkey::new_unique(); + let wallet_address = Pubkey::new_unique(); + let mint = Pubkey::new_unique(); + let associated_account_address = + get_associated_token_address(&convert_pubkey(wallet_address), &convert_pubkey(mint)); + let rent_sysvar = solana_sdk::sysvar::rent::id(); let create_ix = create_associated_token_account( - &convert_pubkey(keys[0]), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), + &convert_pubkey(funder), + &convert_pubkey(wallet_address), + &convert_pubkey(mint), ); let message = Message::new(&[create_ix], None); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); - let account_keys = AccountKeys::new(&keys, None); assert_eq!( - parse_associated_token(&compiled_instruction, &account_keys).unwrap(), + parse_associated_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "create".to_string(), info: json!({ - "source": keys[0].to_string(), - "account": keys[1].to_string(), - "wallet": keys[2].to_string(), - "mint": keys[3].to_string(), - "systemProgram": keys[4].to_string(), - "tokenProgram": keys[5].to_string(), - "rentSysvar": keys[6].to_string(), + "source": funder.to_string(), + "account": associated_account_address.to_string(), + "wallet": wallet_address.to_string(), + "mint": mint.to_string(), + "systemProgram": solana_sdk::system_program::id().to_string(), + "tokenProgram": spl_token::id().to_string(), + "rentSysvar": rent_sysvar.to_string(), }) } ); diff --git a/transaction-status/src/parse_token.rs b/transaction-status/src/parse_token.rs index 3e84fd9dee..5891b87418 100644 --- a/transaction-status/src/parse_token.rs +++ b/transaction-status/src/parse_token.rs @@ -483,463 +483,580 @@ mod test { } } - #[test] - #[allow(clippy::same_item_push)] - fn test_parse_token() { - let mut keys: Vec = vec![]; - for _ in 0..10 { - keys.push(solana_sdk::pubkey::new_rand()); - } + fn convert_account_keys(message: &Message) -> Vec { + message + .account_keys + .iter() + .map(pubkey_from_spl_token) + .collect() + } + + // TODO: remove this hacky approach when update SPL token dependencies + fn make_coerced_message( + mut instruction: SplTokenInstruction, + program_id: &SplTokenPubkey, + ) -> Message { + instruction.program_id = *program_id; + Message::new(&[instruction], None) + } + + fn test_parse_token(program_id: &SplTokenPubkey) { + let mint_pubkey = Pubkey::new_unique(); + let mint_authority = Pubkey::new_unique(); + let freeze_authority = Pubkey::new_unique(); + let rent_sysvar = solana_sdk::sysvar::rent::id(); // Test InitializeMint variations let initialize_mint_ix = initialize_mint( - &spl_token::id(), - &convert_pubkey(keys[0]), - &convert_pubkey(keys[2]), - Some(&convert_pubkey(keys[3])), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(mint_pubkey), + &convert_pubkey(mint_authority), + Some(&convert_pubkey(freeze_authority)), 2, ) .unwrap(); - let message = Message::new(&[initialize_mint_ix], None); + let message = make_coerced_message(initialize_mint_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "initializeMint".to_string(), info: json!({ - "mint": keys[0].to_string(), + "mint": mint_pubkey.to_string(), "decimals": 2, - "mintAuthority": keys[2].to_string(), - "freezeAuthority": keys[3].to_string(), - "rentSysvar": keys[1].to_string(), + "mintAuthority": mint_authority.to_string(), + "freezeAuthority": freeze_authority.to_string(), + "rentSysvar": rent_sysvar.to_string(), }) } ); let initialize_mint_ix = initialize_mint( - &spl_token::id(), - &convert_pubkey(keys[0]), - &convert_pubkey(keys[2]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(mint_pubkey), + &convert_pubkey(mint_authority), None, 2, ) .unwrap(); - let message = Message::new(&[initialize_mint_ix], None); + let message = make_coerced_message(initialize_mint_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "initializeMint".to_string(), info: json!({ - "mint": keys[0].to_string(), - "decimals": 2, - "mintAuthority": keys[2].to_string(), - "rentSysvar": keys[1].to_string(), + "mint": mint_pubkey.to_string(), + "decimals": 2, + "mintAuthority": mint_authority.to_string(), + "rentSysvar": rent_sysvar.to_string(), }) } ); // Test InitializeAccount + let account_pubkey = Pubkey::new_unique(); + let owner = Pubkey::new_unique(); let initialize_account_ix = initialize_account( - &spl_token::id(), - &convert_pubkey(keys[0]), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(owner), ) .unwrap(); - let message = Message::new(&[initialize_account_ix], None); + let message = make_coerced_message(initialize_account_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "initializeAccount".to_string(), info: json!({ - "account": keys[0].to_string(), - "mint": keys[1].to_string(), - "owner": keys[2].to_string(), - "rentSysvar": keys[3].to_string(), + "account": account_pubkey.to_string(), + "mint": mint_pubkey.to_string(), + "owner": owner.to_string(), + "rentSysvar": rent_sysvar.to_string(), }) } ); // Test InitializeMultisig + let multisig_pubkey = Pubkey::new_unique(); + let multisig_signer0 = Pubkey::new_unique(); + let multisig_signer1 = Pubkey::new_unique(); + let multisig_signer2 = Pubkey::new_unique(); let initialize_multisig_ix = initialize_multisig( - &spl_token::id(), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(multisig_pubkey), &[ - &convert_pubkey(keys[2]), - &convert_pubkey(keys[3]), - &convert_pubkey(keys[4]), + &convert_pubkey(multisig_signer0), + &convert_pubkey(multisig_signer1), + &convert_pubkey(multisig_signer2), ], 2, ) .unwrap(); - let message = Message::new(&[initialize_multisig_ix], None); + let message = make_coerced_message(initialize_multisig_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "initializeMultisig".to_string(), info: json!({ - "multisig": keys[0].to_string(), - "m": 2, - "rentSysvar": keys[1].to_string(), - "signers": keys[2..5].iter().map(|key| key.to_string()).collect::>(), + "multisig": multisig_pubkey.to_string(), + "m": 2, + "rentSysvar": rent_sysvar.to_string(), + "signers": vec![ + multisig_signer0.to_string(), + multisig_signer1.to_string(), + multisig_signer2.to_string(), + ], }) } ); // Test Transfer, incl multisig + let recipient = Pubkey::new_unique(); let transfer_ix = transfer( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(owner), &[], 42, ) .unwrap(); - let message = Message::new(&[transfer_ix], None); + let message = make_coerced_message(transfer_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "transfer".to_string(), info: json!({ - "source": keys[1].to_string(), - "destination": keys[2].to_string(), - "authority": keys[0].to_string(), - "amount": "42", + "source": account_pubkey.to_string(), + "destination": recipient.to_string(), + "authority": owner.to_string(), + "amount": "42", }) } ); let transfer_ix = transfer( - &spl_token::id(), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[3]), - &convert_pubkey(keys[4]), - &[&convert_pubkey(keys[0]), &convert_pubkey(keys[1])], + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(multisig_pubkey), + &[ + &convert_pubkey(multisig_signer0), + &convert_pubkey(multisig_signer1), + ], 42, ) .unwrap(); let message = Message::new(&[transfer_ix], None); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "transfer".to_string(), info: json!({ - "source": keys[2].to_string(), - "destination": keys[3].to_string(), - "multisigAuthority": keys[4].to_string(), - "signers": keys[0..2].iter().map(|key| key.to_string()).collect::>(), - "amount": "42", + "source": account_pubkey.to_string(), + "destination": recipient.to_string(), + "multisigAuthority": multisig_pubkey.to_string(), + "signers": vec![ + multisig_signer0.to_string(), + multisig_signer1.to_string(), + ], + "amount": "42", }) } ); // Test Approve, incl multisig let approve_ix = approve( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(owner), &[], 42, ) .unwrap(); - let message = Message::new(&[approve_ix], None); + let message = make_coerced_message(approve_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "approve".to_string(), info: json!({ - "source": keys[1].to_string(), - "delegate": keys[2].to_string(), - "owner": keys[0].to_string(), - "amount": "42", + "source": account_pubkey.to_string(), + "delegate": recipient.to_string(), + "owner": owner.to_string(), + "amount": "42", }) } ); let approve_ix = approve( - &spl_token::id(), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[3]), - &convert_pubkey(keys[4]), - &[&convert_pubkey(keys[0]), &convert_pubkey(keys[1])], + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(multisig_pubkey), + &[ + &convert_pubkey(multisig_signer0), + &convert_pubkey(multisig_signer1), + ], 42, ) .unwrap(); - let message = Message::new(&[approve_ix], None); + let message = make_coerced_message(approve_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "approve".to_string(), info: json!({ - "source": keys[2].to_string(), - "delegate": keys[3].to_string(), - "multisigOwner": keys[4].to_string(), - "signers": keys[0..2].iter().map(|key| key.to_string()).collect::>(), - "amount": "42", + "source": account_pubkey.to_string(), + "delegate": recipient.to_string(), + "multisigOwner": multisig_pubkey.to_string(), + "signers": vec![ + multisig_signer0.to_string(), + multisig_signer1.to_string(), + ], + "amount": "42", }) } ); // Test Revoke let revoke_ix = revoke( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(owner), &[], ) .unwrap(); - let message = Message::new(&[revoke_ix], None); + let message = make_coerced_message(revoke_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "revoke".to_string(), info: json!({ - "source": keys[1].to_string(), - "owner": keys[0].to_string(), + "source": account_pubkey.to_string(), + "owner": owner.to_string(), }) } ); // Test SetOwner + let new_freeze_authority = Pubkey::new_unique(); let set_authority_ix = set_authority( - &spl_token::id(), - &convert_pubkey(keys[0]), - Some(&convert_pubkey(keys[2])), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(mint_pubkey), + Some(&convert_pubkey(new_freeze_authority)), AuthorityType::FreezeAccount, - &convert_pubkey(keys[1]), + &convert_pubkey(freeze_authority), &[], ) .unwrap(); - let message = Message::new(&[set_authority_ix], None); + let message = make_coerced_message(set_authority_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "setAuthority".to_string(), info: json!({ - "mint": keys[1].to_string(), - "newAuthority": keys[2].to_string(), - "authority": keys[0].to_string(), - "authorityType": "freezeAccount".to_string(), + "mint": mint_pubkey.to_string(), + "newAuthority": new_freeze_authority.to_string(), + "authority": freeze_authority.to_string(), + "authorityType": "freezeAccount".to_string(), }) } ); let set_authority_ix = set_authority( - &spl_token::id(), - &convert_pubkey(keys[1]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), None, AuthorityType::CloseAccount, - &convert_pubkey(keys[0]), + &convert_pubkey(owner), &[], ) .unwrap(); - let message = Message::new(&[set_authority_ix], None); + let message = make_coerced_message(set_authority_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); let new_authority: Option = None; assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "setAuthority".to_string(), info: json!({ - "account": keys[1].to_string(), - "newAuthority": new_authority, - "authority": keys[0].to_string(), - "authorityType": "closeAccount".to_string(), + "account": account_pubkey.to_string(), + "newAuthority": new_authority, + "authority": owner.to_string(), + "authorityType": "closeAccount".to_string(), }) } ); // Test MintTo let mint_to_ix = mint_to( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(mint_pubkey), + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_authority), &[], 42, ) .unwrap(); - let message = Message::new(&[mint_to_ix], None); + let message = make_coerced_message(mint_to_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "mintTo".to_string(), info: json!({ - "mint": keys[1].to_string(), - "account": keys[2].to_string(), - "mintAuthority": keys[0].to_string(), - "amount": "42", + "mint": mint_pubkey.to_string(), + "account": account_pubkey.to_string(), + "mintAuthority": mint_authority.to_string(), + "amount": "42", }) } ); // Test Burn let burn_ix = burn( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(owner), &[], 42, ) .unwrap(); - let message = Message::new(&[burn_ix], None); + let message = make_coerced_message(burn_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "burn".to_string(), info: json!({ - "account": keys[1].to_string(), - "mint": keys[2].to_string(), - "authority": keys[0].to_string(), - "amount": "42", + "account": account_pubkey.to_string(), + "mint": mint_pubkey.to_string(), + "authority": owner.to_string(), + "amount": "42", }) } ); // Test CloseAccount let close_account_ix = close_account( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(owner), &[], ) .unwrap(); - let message = Message::new(&[close_account_ix], None); + let message = make_coerced_message(close_account_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "closeAccount".to_string(), info: json!({ - "account": keys[1].to_string(), - "destination": keys[2].to_string(), - "owner": keys[0].to_string(), + "account": account_pubkey.to_string(), + "destination": recipient.to_string(), + "owner": owner.to_string(), }) } ); // Test FreezeAccount let freeze_account_ix = freeze_account( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(freeze_authority), &[], ) .unwrap(); - let message = Message::new(&[freeze_account_ix], None); + let message = make_coerced_message(freeze_account_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "freezeAccount".to_string(), info: json!({ - "account": keys[1].to_string(), - "mint": keys[2].to_string(), - "freezeAuthority": keys[0].to_string(), + "account": account_pubkey.to_string(), + "mint": mint_pubkey.to_string(), + "freezeAuthority": freeze_authority.to_string(), }) } ); // Test ThawAccount let thaw_account_ix = thaw_account( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(freeze_authority), &[], ) .unwrap(); - let message = Message::new(&[thaw_account_ix], None); + let message = make_coerced_message(thaw_account_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "thawAccount".to_string(), info: json!({ - "account": keys[1].to_string(), - "mint": keys[2].to_string(), - "freezeAuthority": keys[0].to_string(), + "account": account_pubkey.to_string(), + "mint": mint_pubkey.to_string(), + "freezeAuthority": freeze_authority.to_string(), }) } ); // Test TransferChecked, incl multisig let transfer_ix = transfer_checked( - &spl_token::id(), - &convert_pubkey(keys[0]), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[3]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(owner), &[], 42, 2, ) .unwrap(); - let message = Message::new(&[transfer_ix], None); + let message = make_coerced_message(transfer_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "transferChecked".to_string(), info: json!({ - "source": keys[1].to_string(), - "destination": keys[2].to_string(), - "mint": keys[3].to_string(), - "authority": keys[0].to_string(), - "tokenAmount": { - "uiAmount": 0.42, - "decimals": 2, - "amount": "42", - "uiAmountString": "0.42", + "source": account_pubkey.to_string(), + "destination": recipient.to_string(), + "mint": mint_pubkey.to_string(), + "authority": owner.to_string(), + "tokenAmount": { + "uiAmount": 0.42, + "decimals": 2, + "amount": "42", + "uiAmountString": "0.42", } }) } ); let transfer_ix = transfer_checked( - &spl_token::id(), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[3]), - &convert_pubkey(keys[4]), - &convert_pubkey(keys[5]), - &[&convert_pubkey(keys[0]), &convert_pubkey(keys[1])], + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(multisig_pubkey), + &[ + &convert_pubkey(multisig_signer0), + &convert_pubkey(multisig_signer1), + ], 42, 2, ) .unwrap(); - let message = Message::new(&[transfer_ix], None); + let message = make_coerced_message(transfer_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "transferChecked".to_string(), info: json!({ - "source": keys[2].to_string(), - "destination": keys[3].to_string(), - "mint": keys[4].to_string(), - "multisigAuthority": keys[5].to_string(), - "signers": keys[0..2].iter().map(|key| key.to_string()).collect::>(), - "tokenAmount": { - "uiAmount": 0.42, - "decimals": 2, - "amount": "42", - "uiAmountString": "0.42", + "source": account_pubkey.to_string(), + "destination": recipient.to_string(), + "mint": mint_pubkey.to_string(), + "multisigAuthority": multisig_pubkey.to_string(), + "signers": vec![ + multisig_signer0.to_string(), + multisig_signer1.to_string(), + ], + "tokenAmount": { + "uiAmount": 0.42, + "decimals": 2, + "amount": "42", + "uiAmountString": "0.42", } }) } @@ -947,60 +1064,74 @@ mod test { // Test ApproveChecked, incl multisig let approve_ix = approve_checked( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[3]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(owner), &[], 42, 2, ) .unwrap(); - let message = Message::new(&[approve_ix], None); + let message = make_coerced_message(approve_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "approveChecked".to_string(), info: json!({ - "source": keys[1].to_string(), - "mint": keys[2].to_string(), - "delegate": keys[3].to_string(), - "owner": keys[0].to_string(), - "tokenAmount": { - "uiAmount": 0.42, - "decimals": 2, - "amount": "42", - "uiAmountString": "0.42", - } + "source": account_pubkey.to_string(), + "mint": mint_pubkey.to_string(), + "delegate": recipient.to_string(), + "owner": owner.to_string(), + "tokenAmount": { + "uiAmount": 0.42, + "decimals": 2, + "amount": "42", + "uiAmountString": "0.42", + } }) } ); let approve_ix = approve_checked( - &spl_token::id(), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[3]), - &convert_pubkey(keys[4]), - &convert_pubkey(keys[5]), - &[&convert_pubkey(keys[0]), &convert_pubkey(keys[1])], + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(recipient), + &convert_pubkey(multisig_pubkey), + &[ + &convert_pubkey(multisig_signer0), + &convert_pubkey(multisig_signer1), + ], 42, 2, ) .unwrap(); - let message = Message::new(&[approve_ix], None); + let message = make_coerced_message(approve_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "approveChecked".to_string(), info: json!({ - "source": keys[2].to_string(), - "mint": keys[3].to_string(), - "delegate": keys[4].to_string(), - "multisigOwner": keys[5].to_string(), - "signers": keys[0..2].iter().map(|key| key.to_string()).collect::>(), + "source": account_pubkey.to_string(), + "mint": mint_pubkey.to_string(), + "delegate": recipient.to_string(), + "multisigOwner": multisig_pubkey.to_string(), + "signers": vec![ + multisig_signer0.to_string(), + multisig_signer1.to_string(), + ], "tokenAmount": { "uiAmount": 0.42, "decimals": 2, @@ -1013,76 +1144,92 @@ mod test { // Test MintToChecked let mint_to_ix = mint_to_checked( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(mint_pubkey), + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_authority), &[], 42, 2, ) .unwrap(); - let message = Message::new(&[mint_to_ix], None); + let message = make_coerced_message(mint_to_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "mintToChecked".to_string(), info: json!({ - "mint": keys[1].to_string(), - "account": keys[2].to_string(), - "mintAuthority": keys[0].to_string(), - "tokenAmount": { - "uiAmount": 0.42, - "decimals": 2, - "amount": "42", - "uiAmountString": "0.42", - } + "mint": mint_pubkey.to_string(), + "account": account_pubkey.to_string(), + "mintAuthority": mint_authority.to_string(), + "tokenAmount": { + "uiAmount": 0.42, + "decimals": 2, + "amount": "42", + "uiAmountString": "0.42", + } }) } ); // Test BurnChecked let burn_ix = burn_checked( - &spl_token::id(), - &convert_pubkey(keys[1]), - &convert_pubkey(keys[2]), - &convert_pubkey(keys[0]), + &spl_token::id(), // TODO: replace with `program_id` + &convert_pubkey(account_pubkey), + &convert_pubkey(mint_pubkey), + &convert_pubkey(owner), &[], 42, 2, ) .unwrap(); - let message = Message::new(&[burn_ix], None); + let message = make_coerced_message(burn_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "burnChecked".to_string(), info: json!({ - "account": keys[1].to_string(), - "mint": keys[2].to_string(), - "authority": keys[0].to_string(), - "tokenAmount": { - "uiAmount": 0.42, - "decimals": 2, - "amount": "42", - "uiAmountString": "0.42", - } + "account": account_pubkey.to_string(), + "mint": mint_pubkey.to_string(), + "authority": owner.to_string(), + "tokenAmount": { + "uiAmount": 0.42, + "decimals": 2, + "amount": "42", + "uiAmountString": "0.42", + } }) } ); // Test SyncNative - let sync_native_ix = sync_native(&spl_token::id(), &convert_pubkey(keys[0])).unwrap(); - let message = Message::new(&[sync_native_ix], None); + let sync_native_ix = sync_native( + &spl_token::id(), // TODO: replace with `program_id`, + &convert_pubkey(account_pubkey), + ) + .unwrap(); + let message = make_coerced_message(sync_native_ix, program_id); let compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert_eq!( - parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).unwrap(), + parse_token( + &compiled_instruction, + &AccountKeys::new(&convert_account_keys(&message), None) + ) + .unwrap(), ParsedInstructionEnum { instruction_type: "syncNative".to_string(), info: json!({ - "account": keys[0].to_string(), + "account": account_pubkey.to_string(), }) } ); @@ -1090,7 +1237,17 @@ mod test { #[test] #[allow(clippy::same_item_push)] - fn test_token_ix_not_enough_keys() { + fn test_parse_token_v3() { + test_parse_token(&spl_token::id()); + } + + #[test] + #[allow(clippy::same_item_push)] + fn test_parse_token_2022() { + test_parse_token(&spl_token_2022::id()); + } + + fn test_token_ix_not_enough_keys(program_id: &SplTokenPubkey) { let mut keys: Vec = vec![]; for _ in 0..10 { keys.push(solana_sdk::pubkey::new_rand()); @@ -1105,7 +1262,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[initialize_mint_ix], None); + let message = make_coerced_message(initialize_mint_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..1], None)).is_err()); compiled_instruction.accounts = @@ -1120,7 +1277,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[initialize_mint_ix], None); + let message = make_coerced_message(initialize_mint_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..1], None)).is_err()); compiled_instruction.accounts = @@ -1135,7 +1292,7 @@ mod test { &convert_pubkey(keys[2]), ) .unwrap(); - let message = Message::new(&[initialize_account_ix], None); + let message = make_coerced_message(initialize_account_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..3], None)).is_err()); compiled_instruction.accounts = @@ -1154,7 +1311,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[initialize_multisig_ix], None); + let message = make_coerced_message(initialize_multisig_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..4], None)).is_err()); compiled_instruction.accounts = @@ -1171,7 +1328,7 @@ mod test { 42, ) .unwrap(); - let message = Message::new(&[transfer_ix], None); + let message = make_coerced_message(transfer_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1187,7 +1344,7 @@ mod test { 42, ) .unwrap(); - let message = Message::new(&[transfer_ix], None); + let message = make_coerced_message(transfer_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..4], None)).is_err()); compiled_instruction.accounts = @@ -1204,7 +1361,7 @@ mod test { 42, ) .unwrap(); - let message = Message::new(&[approve_ix], None); + let message = make_coerced_message(approve_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1220,7 +1377,7 @@ mod test { 42, ) .unwrap(); - let message = Message::new(&[approve_ix], None); + let message = make_coerced_message(approve_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..4], None)).is_err()); compiled_instruction.accounts = @@ -1235,7 +1392,7 @@ mod test { &[], ) .unwrap(); - let message = Message::new(&[revoke_ix], None); + let message = make_coerced_message(revoke_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..1], None)).is_err()); compiled_instruction.accounts = @@ -1252,7 +1409,7 @@ mod test { &[], ) .unwrap(); - let message = Message::new(&[set_authority_ix], None); + let message = make_coerced_message(set_authority_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..1], None)).is_err()); compiled_instruction.accounts = @@ -1269,7 +1426,7 @@ mod test { 42, ) .unwrap(); - let message = Message::new(&[mint_to_ix], None); + let message = make_coerced_message(mint_to_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1286,7 +1443,7 @@ mod test { 42, ) .unwrap(); - let message = Message::new(&[burn_ix], None); + let message = make_coerced_message(burn_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1302,7 +1459,7 @@ mod test { &[], ) .unwrap(); - let message = Message::new(&[close_account_ix], None); + let message = make_coerced_message(close_account_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1318,7 +1475,7 @@ mod test { &[], ) .unwrap(); - let message = Message::new(&[freeze_account_ix], None); + let message = make_coerced_message(freeze_account_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1334,7 +1491,7 @@ mod test { &[], ) .unwrap(); - let message = Message::new(&[thaw_account_ix], None); + let message = make_coerced_message(thaw_account_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1353,7 +1510,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[transfer_ix], None); + let message = make_coerced_message(transfer_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..3], None)).is_err()); compiled_instruction.accounts = @@ -1371,7 +1528,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[transfer_ix], None); + let message = make_coerced_message(transfer_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..5], None)).is_err()); compiled_instruction.accounts = @@ -1390,7 +1547,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[approve_ix], None); + let message = make_coerced_message(approve_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..3], None)).is_err()); compiled_instruction.accounts = @@ -1408,7 +1565,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[approve_ix], None); + let message = make_coerced_message(approve_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..5], None)).is_err()); compiled_instruction.accounts = @@ -1426,7 +1583,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[mint_to_ix], None); + let message = make_coerced_message(mint_to_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1444,7 +1601,7 @@ mod test { 2, ) .unwrap(); - let message = Message::new(&[burn_ix], None); + let message = make_coerced_message(burn_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys[0..2], None)).is_err()); compiled_instruction.accounts = @@ -1453,11 +1610,23 @@ mod test { // Test SyncNative let sync_native_ix = sync_native(&spl_token::id(), &convert_pubkey(keys[0])).unwrap(); - let message = Message::new(&[sync_native_ix], None); + let message = make_coerced_message(sync_native_ix, program_id); let mut compiled_instruction = convert_compiled_instruction(&message.instructions[0]); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&[], None)).is_err()); compiled_instruction.accounts = compiled_instruction.accounts[0..compiled_instruction.accounts.len() - 1].to_vec(); assert!(parse_token(&compiled_instruction, &AccountKeys::new(&keys, None)).is_err()); } + + #[test] + #[allow(clippy::same_item_push)] + fn test_not_enough_keys_token_v3() { + test_token_ix_not_enough_keys(&spl_token::id()); + } + + #[test] + #[allow(clippy::same_item_push)] + fn test_not_enough_keys_token_2022() { + test_token_ix_not_enough_keys(&spl_token_2022::id()); + } }