diff --git a/Cargo.lock b/Cargo.lock index 0963c23..5afb4b4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -86,9 +86,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "blake2b-ref" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95916998c798756098a4eb1b3f2cd510659705a9817bf203d61abd30fbec3e7b" +checksum = "294d17c72e0ba59fad763caa112368d0672083779cdebbb97164f4bb4c1e339a" [[package]] name = "blake2b-rs" @@ -205,7 +205,7 @@ dependencies = [ "atty", "chrono", "ckb-sdk", - "ckb-testtool 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-testtool 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap", "ctrlc", "env_logger", @@ -231,9 +231,9 @@ dependencies = [ [[package]] name = "ckb-chain-spec" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78df45446aaa86b06a77b8b145cffa79950e7ede293cebcd114a62e74c29dbf" +checksum = "dbd58081d4ac4f08d068b52c5a07f0b379d93aad0dfa8344c6890429a9b73c2b" dependencies = [ "ckb-constant", "ckb-crypto", @@ -253,24 +253,24 @@ dependencies = [ [[package]] name = "ckb-channel" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "920f26cc48cadcaf6f7bcc3960fde9f9f355633b6361da8ef31e1e1c00fc8858" +checksum = "701e6829c3dcbae46dd2442de63d080046480a6c2bb4951dbf419ad092459402" dependencies = [ "crossbeam-channel", ] [[package]] name = "ckb-constant" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302566408e5b296663ac5e8245bf71824ca2c7c2ef19a57fcc15939dd66527e9" +checksum = "9d5c980d4724770f72a37bceffa26ea64dd914891e45e856e2a3792fdb4a5a18" [[package]] name = "ckb-crypto" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac31177b0a8bf3acd563c042775e40494e437b2bbbae96ac2473eec3a4da95d" +checksum = "df80db694e42b64a5774ae551daff3c8310cd99bb528643dbe0dd409abb298e7" dependencies = [ "ckb-fixed-hash", "faster-hex", @@ -282,9 +282,9 @@ dependencies = [ [[package]] name = "ckb-dao" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b70944b9013ead64287b87ac19608a3ca5ab19a9f29b7a76f637ad7831510e88" +checksum = "76cb0dd4d284d6908595fa809668555ad36bc89538ea9440d11208090481c240" dependencies = [ "byteorder", "ckb-chain-spec", @@ -295,9 +295,9 @@ dependencies = [ [[package]] name = "ckb-dao-utils" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1929c9627923fe1d22151361d74f5a5aa0dda77016d020307a54486eae11cb3c" +checksum = "5e158ce5a4e9d1fcd08d9dee87332474572c629c6273cca0aea80ba24892a403" dependencies = [ "byteorder", "ckb-error", @@ -306,9 +306,9 @@ dependencies = [ [[package]] name = "ckb-error" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446a519d8a847d97f1c8ece739dc1748751a9a2179249c96c45cced0825a7aa5" +checksum = "34cfd733cabcb4262ee679c02733864b13c8fa879e3aabc078fe0ec727cd95d6" dependencies = [ "anyhow", "ckb-occupied-capacity", @@ -318,9 +318,9 @@ dependencies = [ [[package]] name = "ckb-fixed-hash" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00cbbc455b23748b32e06d16628a03e30d56ffa057f17093fdf5b42d4fb6c879" +checksum = "3b1dfab045fffa31cae9680d73e1f09833ca1abfb807dc4b9544739c94c23fd0" dependencies = [ "ckb-fixed-hash-core", "ckb-fixed-hash-macros", @@ -328,9 +328,9 @@ dependencies = [ [[package]] name = "ckb-fixed-hash-core" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4e644a4e026625b4be5a04cdf6c02043080e79feaf77d9cdbb2f0e6553f751" +checksum = "bdd1727a6ecd4d0bcab604cb1ef707fe92e939fa6e9a438f9f25bf05208cb080" dependencies = [ "faster-hex", "serde", @@ -339,9 +339,9 @@ dependencies = [ [[package]] name = "ckb-fixed-hash-macros" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cfc980ef88c217825172eb46df269f47890f5e78a38214416f13b3bd17a4b4" +checksum = "7b5da34c32585c35715fcde4e3a1dd3b0346d7af43506c5e51c613f01483e4f9" dependencies = [ "ckb-fixed-hash-core", "proc-macro2", @@ -349,11 +349,26 @@ dependencies = [ "syn 1.0.99", ] +[[package]] +name = "ckb-gen-types" +version = "0.111.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3bc54ca99b09e1eb5fc6c49bb1156644ce57fce9c6f52b5c13110b9a3143f7e" +dependencies = [ + "cfg-if 1.0.0", + "ckb-error", + "ckb-fixed-hash", + "ckb-hash", + "ckb-occupied-capacity", + "molecule", + "numext-fixed-uint", +] + [[package]] name = "ckb-hash" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d9b683e89ae4ffdd5aaf4172eab00b6bbe7ea24e2abf77d3eb850ba36e8983" +checksum = "8c88e5e2d6454be488fa5cf8b49175879353c6af969ff210dd6416f315b53120" dependencies = [ "blake2b-ref", "blake2b-rs", @@ -361,9 +376,9 @@ dependencies = [ [[package]] name = "ckb-jsonrpc-types" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac087657eaf964e729f40b3c929d3dac74a2cd8bb38d5e588756e2495711f810" +checksum = "d789a71538da07871c11aecbd28d6c632bb426bdfeed5fc2fa1b455e31152468" dependencies = [ "ckb-types", "faster-hex", @@ -373,9 +388,9 @@ dependencies = [ [[package]] name = "ckb-logger" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911c4695ddf82f78da8f514b359092bbe231f58c2669c93b1cfc9a2030b125bb" +checksum = "939fa09ca3534248d3d452552546f016fc7e11346644fbc5b55d2ad38d3e80e7" dependencies = [ "log", ] @@ -389,11 +404,23 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "ckb-mock-tx-types" +version = "0.111.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcd5b156c36f03ad6053e174e26a874088c8e9098c3a2e80ec93dc9831ecfac3" +dependencies = [ + "ckb-jsonrpc-types", + "ckb-traits", + "ckb-types", + "serde", +] + [[package]] name = "ckb-occupied-capacity" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2a1dd0d4ba5dafba1e30d437c1148b20f42edb76b6794323e05bda626754eb" +checksum = "358ad364465a5a359575642c12952ba8735a148382789d65ddd5231cd21899fc" dependencies = [ "ckb-occupied-capacity-core", "ckb-occupied-capacity-macros", @@ -401,18 +428,18 @@ dependencies = [ [[package]] name = "ckb-occupied-capacity-core" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ebba3d564098a84c83f4740e1dce48a5e2da759becdb47e3c7965f0808e6e92" +checksum = "de2dc06db98f8a995cb7145bc56dbd17bb0c8ab2e59a07aaa40f2c956c2451dd" dependencies = [ "serde", ] [[package]] name = "ckb-occupied-capacity-macros" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6321bba85cdf9724029d8c906851dd4a90906869b42f9100b16645a1261d4c" +checksum = "b1709e0f101026c4ef29b1593692e480b03cdb4e0dace1e348494c6554d50d35" dependencies = [ "ckb-occupied-capacity-core", "quote", @@ -421,9 +448,9 @@ dependencies = [ [[package]] name = "ckb-pow" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9167b427f42874e68e20e6946d5211709979ff1d86c0061a71c2f6a6aa17659" +checksum = "481e76388993d7e6e0dd797e8532c60398901787e28d0638ca114254257b8813" dependencies = [ "byteorder", "ckb-hash", @@ -435,9 +462,9 @@ dependencies = [ [[package]] name = "ckb-rational" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2519249f8d47fa758d3fb3cf3049327c69ce0f2acd79d61427482c8661d3dbd" +checksum = "bd3959391a4fb05d6a2578aa8db75732ada1ce381fb34d6eeaf09d395702e63c" dependencies = [ "numext-fixed-uint", "serde", @@ -445,9 +472,9 @@ dependencies = [ [[package]] name = "ckb-resource" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3abddc968d7f1e70584ab04180c347380a44acbe0b60e26cc96208ec8885279" +checksum = "03222b0613cf3f55cb181471d7a84879b6fba5e920e2e1c7ba2c2315614bd387" dependencies = [ "ckb-system-scripts", "ckb-types", @@ -460,9 +487,9 @@ dependencies = [ [[package]] name = "ckb-script" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b4754a2f0ccea5ea1934822bd18a3a66c46344d8c3872cb20ffdcf0851fab9" +checksum = "8c9075ad901eae97925f491b6be675d7b19bf7b10eaa94a88f6e8070c0cd00ba" dependencies = [ "byteorder", "ckb-chain-spec", @@ -478,23 +505,27 @@ dependencies = [ [[package]] name = "ckb-sdk" -version = "2.5.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b201220ac5762353f9313fbbc3c4cee2a6a924c16c17df51517644991575cc1" +checksum = "718c12dee9e39d9e438a6cc6da0168ac83ca8dc17ace32ce08a2568d4b574398" dependencies = [ "anyhow", "bech32", "bitflags", "bytes", + "ckb-chain-spec", "ckb-crypto", "ckb-dao-utils", "ckb-hash", "ckb-jsonrpc-types", + "ckb-mock-tx-types", "ckb-resource", "ckb-script", "ckb-traits", "ckb-types", "dashmap", + "derive-getters", + "dyn-clone", "enum-repr-derive", "futures", "jsonrpc-core", @@ -529,13 +560,13 @@ dependencies = [ [[package]] name = "ckb-systemtime" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243197680f69d6bb6cb1caf16199ce4a8162a258c757d5af8f727af0d8aabe9e" +checksum = "d5c03dd01263a66eaf171fb1bbadd12d80a0b54abe19aa55a2c53c5ae3300cda" [[package]] name = "ckb-testtool" -version = "0.9.1" +version = "0.10.0" dependencies = [ "ckb-always-success-script", "ckb-chain-spec", @@ -554,9 +585,9 @@ dependencies = [ [[package]] name = "ckb-testtool" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ed676eb4411676d2e507067a714905fea8842ba2e0c0ac5ede68fe350b5547" +checksum = "61f7426eb44c6cfc703a68fb99c74b675a378fdca12df5af94683b27a60d377e" dependencies = [ "ckb-always-success-script", "ckb-chain-spec", @@ -575,40 +606,44 @@ dependencies = [ [[package]] name = "ckb-traits" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9d5827f20a396dfb785398db484fe50de93d76c02e1e32287832604a9dda91" +checksum = "ca049aba2cb2d1208c6044accb497b17290ad56de629f6a4b95eded67a43fd40" dependencies = [ "ckb-types", ] [[package]] name = "ckb-types" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c22b3b1ca8f88a8f48e2f73321c0605281c9c6f1e1c4d651c6138265c22291e" +checksum = "b6ec737e4957418bbd0f4091e8565a89bbd8f6fc37a20360820e44d1f1e44e58" dependencies = [ "bit-vec", "bytes", "ckb-channel", + "ckb-constant", "ckb-error", "ckb-fixed-hash", + "ckb-gen-types", "ckb-hash", "ckb-merkle-mountain-range", "ckb-occupied-capacity", "ckb-rational", "derive_more", + "golomb-coded-set", "merkle-cbt", "molecule", "numext-fixed-uint", "once_cell", + "paste", ] [[package]] name = "ckb-util" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d165c6958601dfbfa4cd00c9263ecfb013b4ccb6d9e1d3187bfa62801abc7d" +checksum = "011b907b18aa706fc224a1309f14eadd9cc14c42cf2258ca3010d1324bc20f10" dependencies = [ "linked-hash-map", "once_cell", @@ -618,9 +653,9 @@ dependencies = [ [[package]] name = "ckb-verification" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbc1745cf02f6d628ac04cf58145b853a359ad4d74fdb418207e99773185ad11" +checksum = "fe3338bb8cf49c5a21de636eeb448deeba1e379491d34b67f2201fc77a08e215" dependencies = [ "ckb-chain-spec", "ckb-dao", @@ -638,9 +673,9 @@ dependencies = [ [[package]] name = "ckb-verification-traits" -version = "0.108.0" +version = "0.111.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88de577410c2e72ccd18e00cb63fc0000d41be50604a895946a1566a02272730" +checksum = "ba1bbfdeff1f930f26c60103b59442494dba83493254bb255f1ba318be2f27fe" dependencies = [ "bitflags", "ckb-error", @@ -648,9 +683,9 @@ dependencies = [ [[package]] name = "ckb-vm" -version = "0.22.2" +version = "0.24.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1223acc8054ce96f91c5d99d4942898d0bdadd618c3b14f1acd3e67212991d8e" +checksum = "0cc004a826b9bc9319ffae0b8415690e1b5f1482266d55fbd43843aa40ddcd63" dependencies = [ "byteorder", "bytes", @@ -666,9 +701,12 @@ dependencies = [ [[package]] name = "ckb-vm-definitions" -version = "0.22.2" +version = "0.24.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4af800ae2b6c54b70efa398dab015a09a52eeac2dd1ac3ad32c9bbe224974225" +checksum = "c4ced3ff9d79b53d93c106720f6c1f855694290e33581850e05c859500eee83f" +dependencies = [ + "paste", +] [[package]] name = "clap" @@ -836,6 +874,17 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "derive-getters" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0122f262bf9c9a367829da84f808d9fb128c10ef283bbe7b0922a77cf07b2747" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.99", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -865,6 +914,12 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "dyn-clone" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" + [[package]] name = "eaglesong" version = "0.1.0" @@ -1149,6 +1204,15 @@ dependencies = [ "scroll", ] +[[package]] +name = "golomb-coded-set" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7076c0cd6257d84b785b0f22c36443dd47a5e86a1256d7ef82c8cb88ea9a7e" +dependencies = [ + "siphasher", +] + [[package]] name = "h2" version = "0.3.13" @@ -1559,9 +1623,9 @@ dependencies = [ [[package]] name = "molecule" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc8276c02a006bddad7d1c28c1a88f30421e1b5f0ba0ca96ceb8077c7d20c01" +checksum = "d4fd9767ab5e5f2ea40f71ff4c8bdb633c50509052e093c2fdd0e390a749dfa3" dependencies = [ "bytes", "cfg-if 1.0.0", @@ -1754,6 +1818,12 @@ dependencies = [ "regex", ] +[[package]] +name = "paste" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" + [[package]] name = "path_macro" version = "1.0.0" @@ -2464,7 +2534,7 @@ version = "0.1.0" dependencies = [ "anyhow", "ckb-system-scripts", - "ckb-testtool 0.9.1", + "ckb-testtool 0.10.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d170bde..f5869d5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ anyhow = "1.0" tera = "1.2" lazy_static = "1.4" serde = { version = "1.0", features = [ "derive" ] } -ckb-testtool = "0.9.1" +ckb-testtool = "0.10" secp256k1 = "0.24" serde_json = "1.0" rpassword = "4.0" @@ -38,7 +38,7 @@ chrono = { version = "0.4.24", default-features = false, features = ["std"] } # 0.2.3 breaks color output: https://github.com/matklad/xshell/issues/63 xshell = "=0.2.2" path_macro = "1.0.0" -ckb-sdk = "2.5.0" +ckb-sdk = "3.0" [build-dependencies] includedir_codegen = "0.6" diff --git a/crates/testtool/Cargo.toml b/crates/testtool/Cargo.toml index d07af9a..e3512d1 100644 --- a/crates/testtool/Cargo.toml +++ b/crates/testtool/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-testtool" -version = "0.9.1" +version = "0.10.0" authors = ["Nervos Network"] edition = "2021" license = "MIT" @@ -13,13 +13,13 @@ repository = "https://github.com/nervosnetwork/capsule" ckb-always-success-script = "0.0.1" rand = "0.8" lazy_static = "1.4" -ckb-chain-spec = "0.108.0" -ckb-types = "0.108.0" -ckb-error = "0.108.0" -ckb-script = "0.108.0" -ckb-hash = "0.108.0" -ckb-jsonrpc-types = "0.108.0" -ckb-crypto = "0.108.0" -ckb-resource = "0.108.0" -ckb-verification = "0.108.0" -ckb-traits = "0.108.0" +ckb-chain-spec = "0.111.0" +ckb-types = "0.111.0" +ckb-error = "0.111.0" +ckb-script = "0.111.0" +ckb-hash = "0.111.0" +ckb-jsonrpc-types = "0.111.0" +ckb-crypto = "0.111.0" +ckb-resource = "0.111.0" +ckb-verification = "0.111.0" +ckb-traits = "0.111.0" diff --git a/crates/testtool/src/context.rs b/crates/testtool/src/context.rs index d490e38..f026b97 100644 --- a/crates/testtool/src/context.rs +++ b/crates/testtool/src/context.rs @@ -1,14 +1,15 @@ use crate::tx_verifier::OutputsDataVerifier; -use ckb_chain_spec::consensus::TYPE_ID_CODE_HASH; +use ckb_chain_spec::consensus::{ConsensusBuilder, TYPE_ID_CODE_HASH}; use ckb_error::Error as CKBError; -use ckb_script::TransactionScriptsVerifier; -use ckb_traits::{CellDataProvider, HeaderProvider}; +use ckb_script::{TransactionScriptsVerifier, TxVerifyEnv}; +use ckb_traits::{CellDataProvider, ExtensionProvider, HeaderProvider}; use ckb_types::{ bytes::Bytes, core::{ cell::{CellMeta, CellMetaBuilder, ResolvedTransaction}, - Capacity, Cycle, DepType, EpochExt, HeaderView, ScriptHashType, TransactionInfo, - TransactionView, + hardfork::{HardForks, CKB2021, CKB2023}, + Capacity, Cycle, DepType, EpochExt, HeaderBuilder, HeaderView, ScriptHashType, + TransactionInfo, TransactionView, }, packed::{Byte32, CellDep, CellOutput, OutPoint, Script}, prelude::*, @@ -48,12 +49,13 @@ pub struct Message { } /// Verification Context -#[derive(Default)] +#[derive(Clone, Default)] pub struct Context { pub cells: HashMap, pub transaction_infos: HashMap, pub headers: HashMap, pub epoches: HashMap, + pub block_extensions: HashMap, pub cells_by_data_hash: HashMap, pub cells_by_type_hash: HashMap, capture_debug: bool, @@ -183,7 +185,7 @@ impl Context { ) -> Option