From 877afc4fe14bef072ef92819c3a7c950a8de071c Mon Sep 17 00:00:00 2001 From: Stanislav Cherviakov Date: Tue, 10 Sep 2024 15:39:42 +0100 Subject: [PATCH 1/3] squashed all the changes related to batch mint and refactored the code a bit and used a correct account mint number --- Cargo.lock | 318 ++++++++++++++-------- blockbuster/Cargo.toml | 29 +- blockbuster/src/programs/bubblegum/mod.rs | 74 ++++- rust-toolchain.toml | 2 +- 4 files changed, 300 insertions(+), 123 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 633f0b0..053bb11 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -76,9 +76,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.5" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7d5a2cecb58716e47d67d5703a249964b14c7be1ec3cad3affc295b2d1c35d" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom 0.2.12", @@ -650,7 +650,7 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "blockbuster" -version = "2.3.1" +version = "2.4.0" dependencies = [ "anchor-lang", "async-trait", @@ -673,7 +673,7 @@ dependencies = [ "solana-transaction-status", "solana-zk-token-sdk", "spl-account-compression", - "spl-concurrent-merkle-tree", + "spl-concurrent-merkle-tree 0.2.0", "spl-noop", "spl-pod", "spl-token", @@ -681,6 +681,7 @@ dependencies = [ "spl-token-group-interface", "spl-token-metadata-interface", "thiserror", + "triomphe", ] [[package]] @@ -703,6 +704,16 @@ dependencies = [ "hashbrown 0.13.2", ] +[[package]] +name = "borsh" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +dependencies = [ + "borsh-derive 1.5.1", + "cfg_aliases", +] + [[package]] name = "borsh-derive" version = "0.9.3" @@ -729,6 +740,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-derive" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.55", + "syn_derive", +] + [[package]] name = "borsh-derive-internal" version = "0.9.3" @@ -827,9 +852,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" dependencies = [ "bytemuck_derive", ] @@ -883,6 +908,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.35" @@ -1168,12 +1199,15 @@ dependencies = [ [[package]] name = "dashmap" -version = "4.0.2" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "num_cpus", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", ] [[package]] @@ -1664,7 +1698,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.5", + "ahash 0.8.11", ] [[package]] @@ -1977,6 +2011,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e623cca1f0e2a0919032c1bdabbf81dd9aa34658d5066aca7bb90d608317ab91" dependencies = [ "borsh 0.10.3", + "serde", ] [[package]] @@ -2182,23 +2217,24 @@ dependencies = [ [[package]] name = "mpl-bubblegum" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3cbca5deb859e66a1a21ada94f2eaab3eb5caa4584c0c8ade0efac29a5414b8" +version = "1.4.0" +source = "git+https://github.com/adm-metaex/mpl-bubblegum?rev=afebaf7#afebaf7e72a659bae028c72149c63f8009557736" dependencies = [ "borsh 0.10.3", "kaigan", "num-derive 0.3.3", "num-traits", + "serde", + "serde_with 3.7.0", "solana-program", "thiserror", ] [[package]] name = "mpl-core" -version = "0.7.1" +version = "0.8.0-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefa4362d05dec8fb97ebebf20fb2dc5224228c8c9550d9da8f2d1b657b49954" +checksum = "1178d8a405352e2a2478abf5b62e2a4d6a91ed6f0470307ab6732614662dbf85" dependencies = [ "base64 0.22.0", "borsh 0.10.3", @@ -2574,9 +2610,9 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "plerkle_serialization" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f832646491065468aa8e222b47d41dd5250e4be7866725bef5f0d31c64538f5f" +checksum = "69341a546676367be06201860e72bc7ebb8f228e7dcd1999aae715207ca0a816" dependencies = [ "bs58 0.4.0", "chrono", @@ -2645,6 +2681,29 @@ dependencies = [ "toml_edit 0.21.1", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro2" version = "1.0.79" @@ -3042,9 +3101,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring 0.17.8", @@ -3351,6 +3410,12 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "sized-chunks" version = "0.6.5" @@ -3388,9 +3453,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d76c43ef61f527d719b5c6bfa5a62ebba60839739125da9e8a00fb82349afd2" +checksum = "f5e54ec43b0262c19a3c87bf2dbd52c6bc6d4f9307246fe4b666fd87f06305e5" dependencies = [ "Inflector", "base64 0.21.7", @@ -3413,9 +3478,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb19b9bbd92eee2d8f637026559a9fb48bd98aba534caedf070498a50c91fce8" +checksum = "117bf11e4d15b529dd9dfa2680abaf8bd3c1d8f7cb0586a5accdac5a2ecc7cc5" dependencies = [ "chrono", "clap 2.34.0", @@ -3430,9 +3495,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9538e3db584a8b1e70060f1f24222b8e0429f18b607f531fb45eb826f4917265" +checksum = "1501330d85c1a790f45f11330616bd6f0b9acd2193477268a65a38ce3b7cfdd0" dependencies = [ "async-trait", "bincode", @@ -3463,9 +3528,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3afd4e309d304e296765cab716fb1fd66c66ec300465c8b26f8cce763275132" +checksum = "d00d0d031f3d97e3f59305c4aabf9da7359fad86dbaeb43b61a1ea13224e0b8a" dependencies = [ "bincode", "chrono", @@ -3477,9 +3542,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92716758e8c0e1c0bc2a5ac2eb3df443a0337fd3991cd38a3b02b12c3fbd18ce" +checksum = "90fa9ff6c33772441670e446b1d43e787aa315e95f2f9c14e3e9508b814bc8e5" dependencies = [ "async-trait", "bincode", @@ -3499,17 +3564,13 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1b8230474ae9f7c841060c299999124582e8d2a0448d7847720792e98cc64e" +checksum = "4bfcde2fc6946c99c7e3400fadd04d1628d675bfd66cb34d461c0f3224bd27d1" dependencies = [ - "ahash 0.8.5", - "blake3", "block-buffer 0.10.4", "bs58 0.4.0", "bv", - "byteorder", - "cc", "either", "generic-array", "im", @@ -3520,7 +3581,6 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "serde_json", "sha2 0.10.8", "solana-frozen-abi-macro", "subtle", @@ -3529,9 +3589,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793910ab733b113b80c357f8f492dda2fabd5671c4ea03db3aa4e46b938fdbe3" +checksum = "d5024d241425f4e99f112ee03bfa89e526c86c7ca9bd7e13448a7f2dffb7e060" dependencies = [ "proc-macro2", "quote", @@ -3541,9 +3601,9 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-interface" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f633425dc9409c6d3f019658b90bb1ad53747ed55acd45e0a18f58b95a0b89e5" +checksum = "54ef73ad1ae2cf9a487b7c2867ee969748f7d91221daae45a6bf51ad8d470874" dependencies = [ "log", "solana-sdk", @@ -3553,9 +3613,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3f819af39632dc538a566c937253bf46256e4c0e60f621c6db448bc7c76294" +checksum = "10948c30d138d6fbfc2ae78a4882be5a9ebffa4bb1239c4efc386104ebc35b7f" dependencies = [ "env_logger", "lazy_static", @@ -3564,9 +3624,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb045f0235b16f7d926f6e0338db822747d61559a1368c3cb017ba6e02c516d0" +checksum = "379355a731abf50bb5ef1e4afba02ac8c835c25bb18e32229bb481657d5c9eca" dependencies = [ "log", "solana-sdk", @@ -3574,9 +3634,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1af84362ad5804dc64ca88b1ca5c35bd41321e12d42c798ac06a6fbb60dd0e70" +checksum = "82a6f767cf39d69104bff52602f3141d6abfbdd55b4eb310f8fbbbf862b27e6f" dependencies = [ "crossbeam-channel", "gethostname", @@ -3589,9 +3649,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8e640a95d317cad1322015c5a2b6a71697fd8dabebcb8dd33ed7f5a22869d12" +checksum = "c81ade42b553c7de08fb97cf3cfe44545f59a247e90042a67d224d62a8a189d7" dependencies = [ "bincode", "clap 3.2.25", @@ -3611,11 +3671,11 @@ dependencies = [ [[package]] name = "solana-perf" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4266c4bd46620a925b8d508c26578d5559e97fcff6735fd22e39f369c3996ee1" +checksum = "9ecdf31e535743515d31392f210d132463300b5d3de7c3e26f6b344b6c941c42" dependencies = [ - "ahash 0.8.5", + "ahash 0.8.11", "bincode", "bv", "caps", @@ -3640,9 +3700,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f38a870bffbe623d900c68579984671f8dfa35bbfb3309d7134de22ce8652" +checksum = "76056fecde0fe0ece8b457b719729c17173333471c72ad41969982975a10d6e0" dependencies = [ "ark-bn254", "ark-ec", @@ -3654,6 +3714,7 @@ dependencies = [ "blake3", "borsh 0.10.3", "borsh 0.9.3", + "borsh 1.5.1", "bs58 0.4.0", "bv", "bytemuck", @@ -3671,7 +3732,7 @@ dependencies = [ "log", "memoffset 0.9.0", "num-bigint 0.4.4", - "num-derive 0.3.3", + "num-derive 0.4.2", "num-traits", "parking_lot", "rand 0.8.5", @@ -3694,9 +3755,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490b6f65aced077e0c5e57c20f151a134458fc350905c20d7dcf3f2162eaa6f6" +checksum = "e566a9e61ecdc250824314864654dd370abf561fa8328f6e08b3bc96ccc5b80d" dependencies = [ "base64 0.21.7", "bincode", @@ -3705,7 +3766,7 @@ dependencies = [ "itertools", "libc", "log", - "num-derive 0.3.3", + "num-derive 0.4.2", "num-traits", "percentage", "rand 0.8.5", @@ -3722,9 +3783,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0dc2b26a7a9860f180ce11f69b0ff2a8bea0d4b9e97daee741b1e76565b3c82" +checksum = "a5d997840e6d033edc4fca8f06b920726dc18d3a5bbc1e538b2154cc3b71acd1" dependencies = [ "crossbeam-channel", "futures-util", @@ -3747,9 +3808,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727474945d51be37ffe03e7b1d6c9630da41228c7b298a8f45098c203a78ac89" +checksum = "6e689a97cefa6a005cd305210234f3dc78aacc934c0f76d210a264fae36ee432" dependencies = [ "async-mutex", "async-trait", @@ -3774,9 +3835,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853794cccf3bd1984419a594040dfed19666e5a9ad33b0906d4174bc394b22af" +checksum = "bbf70f0441603e553fc3db30c1eec9f10cecc27849e7dc74d5f692d5a41a56ca" dependencies = [ "lazy_static", "num_cpus", @@ -3784,14 +3845,14 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b368f270526a5f92ec47c45a6b74ac304b62b08c169b45cf91e0d2f1703889bd" +checksum = "9651b3f2c3df39a1a6fc87fe792bdb3ec3d84a8169c0a57c86335b48d6cb1491" dependencies = [ "console", "dialoguer", "log", - "num-derive 0.3.3", + "num-derive 0.4.2", "num-traits", "parking_lot", "qstring", @@ -3803,9 +3864,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b766876b0c56950ab530d8495ef7eeaeb79e162f03dadaffc0d6852de9e844" +checksum = "d753d116aacc43ef64a2bc8d25f8b20af47c366b29aa859186124e226d6e3819" dependencies = [ "async-trait", "base64 0.21.7", @@ -3829,9 +3890,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876b2e410cc2403ea3216893f05034b02a180431100eb831d0b67b14fca4d29f" +checksum = "617df2c53f948c821cefca6824e376aac04ff0d844bb27f4d3ada9e211bcffe7" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -3851,9 +3912,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebdb3f02fb3cce3c967f718bc77b79433c24aa801b63dc70f374e8759b2424e4" +checksum = "c2d34cf36289cc35a0b18cd518a256312090368a37f40b448520e260923558a9" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -3864,15 +3925,15 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d70ab837cc79ed67df6fdb145f1ffd544f1eaa60b0757b750f4864b90498bad" +checksum = "b4b3f2080eddef6552fde7f149c429cf05b9bb0605a068b0d28e19d793e24df4" dependencies = [ "assert_matches", "base64 0.21.7", "bincode", "bitflags 2.5.0", - "borsh 0.10.3", + "borsh 1.5.1", "bs58 0.4.0", "bytemuck", "byteorder", @@ -3889,9 +3950,9 @@ dependencies = [ "libsecp256k1", "log", "memmap2", - "num-derive 0.3.3", + "num-derive 0.4.2", "num-traits", - "num_enum 0.6.1", + "num_enum 0.7.2", "pbkdf2 0.11.0", "qstring", "qualifier_attr", @@ -3906,6 +3967,7 @@ dependencies = [ "serde_with 2.3.3", "sha2 0.10.8", "sha3 0.10.8", + "siphasher", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-logger", @@ -3918,9 +3980,9 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9d0433c4084a3260a32ec67f6b4272c4232d15e732be542cd5dfdf0ae1e784" +checksum = "2a8613ca80150f7e277e773620ba65d2c5fcc3a08eb8026627d601421ab43aef" dependencies = [ "bs58 0.4.0", "proc-macro2", @@ -3937,9 +3999,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-streamer" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d70eda40efb5bc57ad50b1ac8452485065c1adae0e701a0348b397db054e2ab5" +checksum = "979d470dd7c589679a2e036078921989a2563f333b73b31e2fdceb09a6d55a29" dependencies = [ "async-channel", "bytes", @@ -3959,6 +4021,7 @@ dependencies = [ "rand 0.8.5", "rcgen", "rustls", + "smallvec", "solana-metrics", "solana-perf", "solana-sdk", @@ -3969,9 +4032,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3c510144695c3d1ee1f84dd9975af7f7d35c168447c484bbd35c21e903c515" +checksum = "851b9ae239d098c766aee3558330cc16edd0524c9cf3f9cf7c64f53b1024d507" dependencies = [ "bincode", "log", @@ -3984,9 +4047,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f27c8fec609179a7dfc287060df2a926c8cd89329235c4b8d78bd019a72462" +checksum = "6a7a7e5a522fe5333fcb47e02fb7da73ff614d917754167937b5523c383ce161" dependencies = [ "async-trait", "bincode", @@ -4008,9 +4071,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f58f2f864d900eddf2e21a99ebe445b6be525d597e44952f075d8237035b8e" +checksum = "51be349fb9301d2a0fdd0b9ba5341e5f72bf4900ca4c0ede04748bc9038d15e8" dependencies = [ "Inflector", "base64 0.21.7", @@ -4033,9 +4096,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ead118c5d549e4345dc59cbc5d9b282164f3e5334707f186e3aa10d40e3b30" +checksum = "3274b4bfccd57ecffcf4037cd09fc61777633e0d0c5f8b76abcaa10ee83f3ae5" dependencies = [ "async-trait", "solana-connection-cache", @@ -4048,9 +4111,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532f5d631562587facc5fe88abd2e31c0d1f29012b6766c664db9f05a39fb05b" +checksum = "aaf45873439f73420f60a5e0f87b529923c3489d24a228d5eb8f5ce6955bdc1b" dependencies = [ "log", "rustc_version", @@ -4064,13 +4127,13 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c684430058b0a2e733936a8851c8843a3a6316ccd5c969d39411a479d6489642" +checksum = "0e7c7525bda137bbb9bc0dc967a4ffca82786147eb2d1efbf76a8dc52978f0b8" dependencies = [ "bincode", "log", - "num-derive 0.3.3", + "num-derive 0.4.2", "num-traits", "rustc_version", "serde", @@ -4086,9 +4149,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.17.28" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aef1b48d9fdb2619349d2d15942d83c99aabe995ff945d9b418176373aa823c" +checksum = "39a57b2f269f24088b6b8e426de05e5c1faa6b5d6f26175c06eb80df96ec685e" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -4100,7 +4163,7 @@ dependencies = [ "itertools", "lazy_static", "merlin", - "num-derive 0.3.3", + "num-derive 0.4.2", "num-traits", "rand 0.7.3", "serde", @@ -4115,9 +4178,9 @@ dependencies = [ [[package]] name = "solana_rbpf" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3" +checksum = "da5d083187e3b3f453e140f292c09186881da8a02a7b5e27f645ee26de3d9cc5" dependencies = [ "byteorder", "combine", @@ -4156,13 +4219,13 @@ dependencies = [ [[package]] name = "spl-account-compression" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c43bd4455d9fb29b9e4f83c087ccffa2f6f41fecfc0549932ae391d00f3378" +version = "0.3.1" +source = "git+https://github.com/StanChe/solana-program-library.git?rev=f343436#f343436322f3d61f26058057ee9a83f42cc4b125" dependencies = [ "anchor-lang", "bytemuck", - "spl-concurrent-merkle-tree", + "solana-program", + "spl-concurrent-merkle-tree 0.3.0", "spl-noop", ] @@ -4193,6 +4256,16 @@ dependencies = [ "thiserror", ] +[[package]] +name = "spl-concurrent-merkle-tree" +version = "0.3.0" +source = "git+https://github.com/StanChe/solana-program-library.git?rev=f343436#f343436322f3d61f26058057ee9a83f42cc4b125" +dependencies = [ + "bytemuck", + "solana-program", + "thiserror", +] + [[package]] name = "spl-discriminator" version = "0.1.1" @@ -4240,8 +4313,7 @@ dependencies = [ [[package]] name = "spl-noop" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd67ea3d0070a12ff141f5da46f9695f49384a03bce1203a5608f5739437950" +source = "git+https://github.com/StanChe/solana-program-library.git?rev=f343436#f343436322f3d61f26058057ee9a83f42cc4b125" dependencies = [ "solana-program", ] @@ -4395,6 +4467,12 @@ dependencies = [ "spl-program-error", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -4441,6 +4519,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.55", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -4518,18 +4608,18 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", @@ -4756,6 +4846,16 @@ dependencies = [ "once_cell", ] +[[package]] +name = "triomphe" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee8098afad3fb0c54a9007aab6804558410503ad676d4633f9c2559a00ac0f" +dependencies = [ + "serde", + "stable_deref_trait", +] + [[package]] name = "try-lock" version = "0.2.5" diff --git a/blockbuster/Cargo.toml b/blockbuster/Cargo.toml index fc34029..62acbbf 100644 --- a/blockbuster/Cargo.toml +++ b/blockbuster/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "blockbuster" description = "Metaplex canonical program parsers, for indexing, analytics etc...." -version = "2.3.1" +version = "2.4.0" authors = ["Metaplex Developers "] repository = "https://github.com/metaplex-foundation/blockbuster" license = "AGPL-3.0" @@ -9,12 +9,16 @@ edition = "2021" readme = "../README.md" [dependencies] -bytemuck = { version = "1.14.0", features = ["derive"] } +bytemuck = { version = "1.17.0", features = ["derive"] } spl-token-2022 = { version = "1.0", features = ["no-entrypoint"] } -spl-account-compression = { version = "0.3.0", features = ["no-entrypoint"] } -spl-noop = { version = "0.2.0", features = ["no-entrypoint"] } -mpl-bubblegum = "1.2.0" -mpl-core = { version = "0.7.1", features = ["serde"] } + +# Update these deps to original SPL crate after merging 'feature/init_with_root' changes into original repo. +spl-account-compression = { git = "https://github.com/StanChe/solana-program-library.git", rev = "f343436", features = ["no-entrypoint"] } +spl-noop = { git = "https://github.com/StanChe/solana-program-library.git", rev = "f343436", features = ["no-entrypoint"] } +mpl-bubblegum = { git = "https://github.com/adm-metaex/mpl-bubblegum", rev = "afebaf7", features = ["test-sbf", "serde"] } +# ^^^ + +mpl-core = { version = "=0.8.0-beta.1", features = ["serde"] } mpl-token-metadata = { version = "4.1.1", features = ["serde"] } spl-token = { version = "4.0.0", features = ["no-entrypoint"] } async-trait = "0.1.57" @@ -23,20 +27,21 @@ lazy_static = "1.4.0" borsh = "~0.10.3" thiserror = "1.0.32" log = "0.4.17" -solana-sdk = "1.17.16" -solana-transaction-status = "1.17.16" +solana-sdk = "~1.18.15" +solana-transaction-status = "~1.18.15" spl-token-metadata-interface = "0.2.0" spl-token-group-interface = "0.1.0" spl-pod = { version = "0.1.0", features = ["serde-traits"] } serde = "1.0.140" -solana-zk-token-sdk = "1.17.16" +solana-zk-token-sdk = "~1.18.15" anchor-lang = { version = "0.29.0" } +triomphe = "=0.1.9" [dev-dependencies] flatbuffers = "23.1.21" -plerkle_serialization = "1.8.0" +plerkle_serialization = { version = "1.9.0" } rand = "0.8.5" serde_json = "1.0.89" -solana-client = "~1.17" -solana-geyser-plugin-interface = "~1.17" +solana-client = "~1.18.15" +solana-geyser-plugin-interface = "~1.18.15" spl-concurrent-merkle-tree = "0.2.0" diff --git a/blockbuster/src/programs/bubblegum/mod.rs b/blockbuster/src/programs/bubblegum/mod.rs index faa1b8a..6e7568b 100644 --- a/blockbuster/src/programs/bubblegum/mod.rs +++ b/blockbuster/src/programs/bubblegum/mod.rs @@ -9,7 +9,9 @@ use log::warn; use mpl_bubblegum::{ get_instruction_type, instructions::{ - UnverifyCreatorInstructionArgs, UpdateMetadataInstructionArgs, VerifyCreatorInstructionArgs, + FinalizeTreeWithRootAndCollectionInstructionArgs, FinalizeTreeWithRootInstructionArgs, + UnverifyCreatorInstructionArgs, UpdateMetadataInstructionArgs, + VerifyCreatorInstructionArgs, }, types::{BubblegumEventType, MetadataArgs, UpdateArgs}, }; @@ -53,6 +55,12 @@ pub enum Payload { update_args: UpdateArgs, tree_id: Pubkey, }, + FinalizeTreeWithRoot { + args: FinalizeTreeWithRootInstructionArgs, + staker: Pubkey, + collection_mint: Option, + tree_id: Pubkey, + }, } //TODO add more of the parsing here to minimize program transformer code pub struct BubblegumInstruction { @@ -206,6 +214,14 @@ impl ProgramParser for BubblegumParser { InstructionName::UpdateMetadata => { b_inst.payload = Some(build_update_metadata_payload(keys, ix_data)?); } + InstructionName::FinalizeTreeWithRoot => { + b_inst.payload = Some(build_create_tree_with_root_payload(keys, ix_data)?); + } + InstructionName::FinalizeTreeWithRootAndCollection => { + b_inst.payload = Some(build_create_tree_with_root_and_collection_payload( + keys, ix_data, + )?); + } _ => {} }; } @@ -299,3 +315,59 @@ fn build_update_metadata_payload( tree_id, }) } + +// See Bubblegum for offsets and positions: +// https://github.com/metaplex-foundation/mpl-bubblegum/blob/main/programs/bubblegum/README.md +fn build_create_tree_with_root_payload( + keys: &[Pubkey], + ix_data: &[u8], +) -> Result { + let args = FinalizeTreeWithRootInstructionArgs::try_from_slice(ix_data)?; + + let tree_id = *keys + .get(1) + .ok_or(BlockbusterError::InstructionParsingError)?; + let staker = *keys + .get(4) + .ok_or(BlockbusterError::InstructionParsingError)?; + + Ok(Payload::FinalizeTreeWithRoot { + args, + staker, + collection_mint: None, + tree_id, + }) +} + +// See Bubblegum for offsets and positions: +// https://github.com/metaplex-foundation/mpl-bubblegum/blob/main/programs/bubblegum/README.md +fn build_create_tree_with_root_and_collection_payload( + keys: &[Pubkey], + ix_data: &[u8], +) -> Result { + let args = FinalizeTreeWithRootAndCollectionInstructionArgs::try_from_slice(ix_data)?; + + let tree_id = *keys + .get(1) + .ok_or(BlockbusterError::InstructionParsingError)?; + let staker = *keys + .get(4) + .ok_or(BlockbusterError::InstructionParsingError)?; + let collection_mint = *keys + .get(11) + .ok_or(BlockbusterError::InstructionParsingError)?; + let args = FinalizeTreeWithRootInstructionArgs { + root: args.root, + rightmost_leaf: args.rightmost_leaf, + rightmost_index: args.rightmost_index, + metadata_url: args.metadata_url, + metadata_hash: args.metadata_hash, + }; + + Ok(Payload::FinalizeTreeWithRoot { + args, + staker, + collection_mint: Some(collection_mint), + tree_id, + }) +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml index f4ec842..3cf2110 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.73.0" \ No newline at end of file +channel = "1.81.0" \ No newline at end of file From c80b2dfe1f43a5af1a7e4e7fb18fb72b594c1d77 Mon Sep 17 00:00:00 2001 From: Stanislav Cherviakov Date: Thu, 12 Sep 2024 13:13:58 +0100 Subject: [PATCH 2/3] using rust toolchain 1.75 --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 3cf2110..4dd8e5c 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.81.0" \ No newline at end of file +channel = "1.75.0" \ No newline at end of file From b2a040adab94fc471d7dd5331bb62725b7c069bf Mon Sep 17 00:00:00 2001 From: Stanislav Cherviakov Date: Wed, 25 Sep 2024 12:12:55 +0100 Subject: [PATCH 3/3] updated cargo deps --- Cargo.lock | 21 ++++++++++++--------- blockbuster/Cargo.toml | 9 ++++----- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 053bb11..30f0e68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2217,10 +2217,10 @@ dependencies = [ [[package]] name = "mpl-bubblegum" -version = "1.4.0" -source = "git+https://github.com/adm-metaex/mpl-bubblegum?rev=afebaf7#afebaf7e72a659bae028c72149c63f8009557736" +version = "1.5.0" +source = "git+https://github.com/metaplex-foundation/mpl-bubblegum?rev=c3010c1#c3010c19fd30b5f3893bca08b51f3ae150f41cff" dependencies = [ - "borsh 0.10.3", + "borsh 0.9.3", "kaigan", "num-derive 0.3.3", "num-traits", @@ -4219,13 +4219,14 @@ dependencies = [ [[package]] name = "spl-account-compression" -version = "0.3.1" -source = "git+https://github.com/StanChe/solana-program-library.git?rev=f343436#f343436322f3d61f26058057ee9a83f42cc4b125" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f461e20e8efb539d7f3f30cd82931ee128651c6366abe326f083b07253a1d6" dependencies = [ "anchor-lang", "bytemuck", "solana-program", - "spl-concurrent-merkle-tree 0.3.0", + "spl-concurrent-merkle-tree 0.4.0", "spl-noop", ] @@ -4258,8 +4259,9 @@ dependencies = [ [[package]] name = "spl-concurrent-merkle-tree" -version = "0.3.0" -source = "git+https://github.com/StanChe/solana-program-library.git?rev=f343436#f343436322f3d61f26058057ee9a83f42cc4b125" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85d1bbb97252d8a1b90d3d56425038928382a306b71dbba4c836973c94b33f96" dependencies = [ "bytemuck", "solana-program", @@ -4313,7 +4315,8 @@ dependencies = [ [[package]] name = "spl-noop" version = "0.2.0" -source = "git+https://github.com/StanChe/solana-program-library.git?rev=f343436#f343436322f3d61f26058057ee9a83f42cc4b125" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd67ea3d0070a12ff141f5da46f9695f49384a03bce1203a5608f5739437950" dependencies = [ "solana-program", ] diff --git a/blockbuster/Cargo.toml b/blockbuster/Cargo.toml index 62acbbf..3afdf46 100644 --- a/blockbuster/Cargo.toml +++ b/blockbuster/Cargo.toml @@ -12,11 +12,10 @@ readme = "../README.md" bytemuck = { version = "1.17.0", features = ["derive"] } spl-token-2022 = { version = "1.0", features = ["no-entrypoint"] } -# Update these deps to original SPL crate after merging 'feature/init_with_root' changes into original repo. -spl-account-compression = { git = "https://github.com/StanChe/solana-program-library.git", rev = "f343436", features = ["no-entrypoint"] } -spl-noop = { git = "https://github.com/StanChe/solana-program-library.git", rev = "f343436", features = ["no-entrypoint"] } -mpl-bubblegum = { git = "https://github.com/adm-metaex/mpl-bubblegum", rev = "afebaf7", features = ["test-sbf", "serde"] } -# ^^^ +spl-account-compression = { version = "0.4.0", features = ["no-entrypoint"] } +spl-noop = { version = "0.2.0", features = ["no-entrypoint"] } +## TODO: replace with a crate as soon as it's published +mpl-bubblegum = { git = "https://github.com/metaplex-foundation/mpl-bubblegum", rev = "c3010c1", features = ["test-sbf", "serde"] } mpl-core = { version = "=0.8.0-beta.1", features = ["serde"] } mpl-token-metadata = { version = "4.1.1", features = ["serde"] }