diff --git a/.circleci/config.yml b/.circleci/config.yml index 02a835509a..9ed8c89b58 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -65,6 +65,7 @@ workflows: - arm64 - package_crypto - package_check + - package_core - package_schema - package_schema_derive - package_std @@ -171,6 +172,10 @@ jobs: name: "contracts/staking: integration-test" working_directory: ~/project/contracts/staking command: cargo wasm --locked && cargo integration-test --locked + - run: + name: "packages/core: test" + working_directory: ~/project/packages/core + command: cargo test --all-features --locked - run: name: "packages/crypto: test" working_directory: ~/project/packages/crypto @@ -285,6 +290,62 @@ jobs: - target/debug/deps key: cargocache-v2-package_check-rust:1.73-{{ checksum "Cargo.lock" }} + package_core: + docker: + - image: rust:1.73 + environment: + # Limit the number of parallel jobs to avoid OOM crashes during doc testing + RUST_TEST_THREADS: 8 + steps: + - checkout + - run: + name: Version information + command: rustc --version; cargo --version; rustup --version; rustup target list --installed + - restore_cache: + keys: + - cargocache-v2-package_core-rust:1.73-{{ checksum "Cargo.lock" }} + - run: + name: Add thumbv7em-none-eabi target + command: rustup target add thumbv7em-none-eabi && rustup target list --installed + - run: + name: Add wasm32 target + command: rustup target add wasm32-unknown-unknown && rustup target list --installed + - run: + name: Build library for native target (no features) + working_directory: ~/project/packages/core + command: cargo build --locked --no-default-features + - run: + name: Build library for wasm target (no features) + working_directory: ~/project/packages/core + command: cargo wasm --locked --no-default-features + - run: + name: Build library for no_std target (no features) + working_directory: ~/project/packages/core + command: cargo no-std --locked --no-default-features + - run: + name: Run unit tests (no features) + working_directory: ~/project/packages/core + command: cargo test --locked --no-default-features + - run: + name: Build library for native target (all features) + working_directory: ~/project/packages/core + command: cargo build --locked --features std + - run: + name: Build library for wasm target (all features) + working_directory: ~/project/packages/core + command: cargo wasm --locked --features std + - run: + name: Run unit tests (all features) + working_directory: ~/project/packages/core + command: cargo test --locked --features std + - save_cache: + paths: + - /usr/local/cargo/registry + - target/debug/.fingerprint + - target/debug/build + - target/debug/deps + key: cargocache-v2-package_core-rust:1.73-{{ checksum "Cargo.lock" }} + package_schema: docker: - image: rust:1.73 @@ -925,6 +986,14 @@ jobs: name: Clippy linting on schema-derive working_directory: ~/project/packages/schema-derive command: cargo clippy --all-targets --tests -- -D warnings + - run: + name: Clippy linting on core (no feature flags) + working_directory: ~/project/packages/core + command: cargo clippy --all-targets -- -D warnings + - run: + name: Clippy linting on core (all feature flags) + working_directory: ~/project/packages/core + command: cargo clippy --all-features --all-targets -- -D warnings - run: name: Clippy linting on std (no feature flags) working_directory: ~/project/packages/std @@ -997,8 +1066,9 @@ jobs: name: Run tests with coverage command: | mkdir -p reports - cargo test + cargo test --all-features + grcov . -s packages/core --binary-path ./target/debug -t lcov -o ./reports/core.info grcov . -s packages/crypto --binary-path ./target/debug -t lcov -o ./reports/crypto.info grcov . -s packages/derive --binary-path ./target/debug -t lcov -o ./reports/derive.info grcov . -s packages/schema --binary-path ./target/debug -t lcov -o ./reports/schema.info @@ -1007,6 +1077,9 @@ jobs: environment: RUSTFLAGS: "-Cinstrument-coverage" LLVM_PROFILE_FILE: "cosmwasm-%p-%m.profraw" + - codecov/upload: + file: reports/core.info + flags: cosmwasm-core - codecov/upload: file: reports/crypto.info flags: cosmwasm-crypto diff --git a/Cargo.lock b/Cargo.lock index cdb687df18..e1a4b08833 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -180,12 +180,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - [[package]] name = "bech32" version = "0.11.0" @@ -423,12 +417,29 @@ dependencies = [ [[package]] name = "cosmwasm-core" version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "cosmwasm-std", + "crc32fast", + "derive_more", + "hex", + "hex-literal", + "schemars", + "serde", + "serde_json", + "sha2", + "static_assertions", + "thiserror", +] [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ "criterion", + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -485,22 +496,21 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", "chrono", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", "cosmwasm-schema", "crc32fast", - "derivative", - "forward_ref", + "derive_more", "hex", "hex-literal", + "rand_core", "schemars", "serde", "serde-json-wasm", "serde_json", "sha2", - "static_assertions", "thiserror", ] @@ -523,6 +533,7 @@ dependencies = [ "hex-literal", "leb128", "rand", + "rand_core", "schemars", "serde", "serde_json", @@ -632,9 +643,9 @@ checksum = "393bc73c451830ff8dbb3a07f61843d6cb41a084f9996319917c0b291ed785bb" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -822,7 +833,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -846,6 +856,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", + "unicode-xid", +] + [[package]] name = "dhat" version = "0.3.3" @@ -929,7 +960,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -938,8 +968,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -954,7 +982,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -977,8 +1004,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -1105,12 +1130,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "funty" version = "2.0.0" @@ -1349,9 +1368,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1563,31 +1580,12 @@ dependencies = [ "windows-sys 0.45.0", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1963,9 +1961,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1975,9 +1973,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -2006,7 +2004,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -2025,9 +2022,9 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -2054,9 +2051,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", @@ -2076,9 +2073,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -2087,9 +2084,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -2144,16 +2141,6 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -2265,18 +2252,18 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", @@ -2392,6 +2379,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "utf8parse" version = "0.2.1" diff --git a/README.md b/README.md index 9338f6653f..b5517340c5 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ The following packages are maintained here: | cosmwasm-crypto | Internal only | [![cosmwasm-crypto on crates.io](https://img.shields.io/crates/v/cosmwasm-crypto.svg)](https://crates.io/crates/cosmwasm-crypto) | [![Docs](https://docs.rs/cosmwasm-crypto/badge.svg)](https://docs.rs/cosmwasm-crypto) | [![Coverage][cov-badge-crypto]][cov-link-crypto] | | cosmwasm-derive | Internal only | [![cosmwasm-derive on crates.io](https://img.shields.io/crates/v/cosmwasm-derive.svg)](https://crates.io/crates/cosmwasm-derive) | [![Docs](https://docs.rs/cosmwasm-derive/badge.svg)](https://docs.rs/cosmwasm-derive) | [![Coverage][cov-badge-derive]][cov-link-derive] | | cosmwasm-schema | Contract development | [![cosmwasm-schema on crates.io](https://img.shields.io/crates/v/cosmwasm-schema.svg)](https://crates.io/crates/cosmwasm-schema) | [![Docs](https://docs.rs/cosmwasm-schema/badge.svg)](https://docs.rs/cosmwasm-schema) | [![Coverage][cov-badge-schema]][cov-link-schema] | +| cosmwasm-core | Internal only | [![cosmwasm-core on crates.io](https://img.shields.io/crates/v/cosmwasm-core.svg)](https://crates.io/crates/cosmwasm-core) | [![Docs](https://docs.rs/cosmwasm-core/badge.svg)](https://docs.rs/cosmwasm-core) | [![Coverage][cov-badge-core]][cov-link-core] | | cosmwasm-std | Contract development | [![cosmwasm-std on crates.io](https://img.shields.io/crates/v/cosmwasm-std.svg)](https://crates.io/crates/cosmwasm-std) | [![Docs](https://docs.rs/cosmwasm-std/badge.svg)](https://docs.rs/cosmwasm-std) | [![Coverage][cov-badge-std]][cov-link-std] | | cosmwasm-vm | Host environments | [![cosmwasm-vm on crates.io](https://img.shields.io/crates/v/cosmwasm-vm.svg)](https://crates.io/crates/cosmwasm-vm) | [![Docs](https://docs.rs/cosmwasm-vm/badge.svg)](https://docs.rs/cosmwasm-vm) | [![Coverage][cov-badge-vm]][cov-link-vm] | | cosmwasm-check | Contract development | [![cosmwasm-check on crates.io](https://img.shields.io/crates/v/cosmwasm-check.svg)](https://crates.io/crates/cosmwasm-check) | `cosmwasm-check -h` | N/A | @@ -27,6 +28,8 @@ maintained and has been dropped in favor of https://codecov.io/gh/CosmWasm/cosmwasm/branch/main/graph/badge.svg?flag=cosmwasm-derive [cov-badge-schema]: https://codecov.io/gh/CosmWasm/cosmwasm/branch/main/graph/badge.svg?flag=cosmwasm-schema +[cov-badge-core]: + https://codecov.io/gh/CosmWasm/cosmwasm/branch/main/graph/badge.svg?flag=cosmwasm-core [cov-badge-std]: https://codecov.io/gh/CosmWasm/cosmwasm/branch/main/graph/badge.svg?flag=cosmwasm-std [cov-badge-vm]: @@ -37,6 +40,7 @@ maintained and has been dropped in favor of https://codecov.io/gh/CosmWasm/cosmwasm/tree/main/packages/derive [cov-link-schema]: https://codecov.io/gh/CosmWasm/cosmwasm/tree/main/packages/schema +[cov-link-core]: https://codecov.io/gh/CosmWasm/cosmwasm/tree/main/packages/core [cov-link-std]: https://codecov.io/gh/CosmWasm/cosmwasm/tree/main/packages/std [cov-link-vm]: https://codecov.io/gh/CosmWasm/cosmwasm/tree/main/packages/vm diff --git a/contracts/burner/Cargo.lock b/contracts/burner/Cargo.lock index cfbc3edc9e..bf40b531fd 100644 --- a/contracts/burner/Cargo.lock +++ b/contracts/burner/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -212,10 +206,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -231,7 +242,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -251,7 +262,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -260,17 +271,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -286,6 +296,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -489,7 +500,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -523,7 +534,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -546,7 +557,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -561,6 +571,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -616,7 +647,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -625,8 +655,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -641,7 +669,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -664,8 +691,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -710,7 +735,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -747,12 +772,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -902,9 +921,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1051,31 +1068,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1289,9 +1287,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1301,9 +1299,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1332,7 +1330,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1351,9 +1348,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1380,13 +1377,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1413,9 +1410,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1460,16 +1457,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1501,7 +1488,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1523,9 +1510,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1577,7 +1564,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1601,6 +1588,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1978,7 +1971,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1998,5 +1991,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/crypto-verify/Cargo.lock b/contracts/crypto-verify/Cargo.lock index 0a6322ff57..c949e716bc 100644 --- a/contracts/crypto-verify/Cargo.lock +++ b/contracts/crypto-verify/Cargo.lock @@ -87,9 +87,9 @@ checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" [[package]] name = "base64ct" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bech32" @@ -201,10 +201,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +237,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +257,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +266,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +291,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -496,7 +513,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -519,7 +536,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -530,7 +547,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -553,7 +570,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -568,6 +584,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -632,8 +669,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -648,7 +683,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -671,7 +705,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", "pkcs8", "rand_core", "sec1", @@ -717,7 +750,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -754,12 +787,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -915,9 +942,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1070,15 +1095,6 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" @@ -1324,9 +1340,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1336,9 +1352,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1386,9 +1402,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1415,13 +1431,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1448,9 +1464,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1507,9 +1523,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", @@ -1546,7 +1562,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1568,9 +1584,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1622,7 +1638,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1646,6 +1662,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -2023,7 +2045,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -2043,5 +2065,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/cyberpunk/Cargo.lock b/contracts/cyberpunk/Cargo.lock index 808d6e1a55..1508ee0e12 100644 --- a/contracts/cyberpunk/Cargo.lock +++ b/contracts/cyberpunk/Cargo.lock @@ -97,12 +97,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -230,10 +224,27 @@ dependencies = [ "windows-sys 0.33.0", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64 0.22.0", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -249,7 +260,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -269,7 +280,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -278,17 +289,16 @@ version = "2.0.1" dependencies = [ "base64 0.22.0", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -304,6 +314,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -507,7 +518,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -542,7 +553,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -553,7 +564,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -576,7 +587,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -591,6 +601,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -646,7 +677,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -655,8 +685,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -671,7 +699,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -694,8 +721,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -740,7 +765,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -807,12 +832,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -988,9 +1007,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1143,31 +1160,12 @@ dependencies = [ "windows-targets 0.48.0", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1406,9 +1404,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1418,9 +1416,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1449,7 +1447,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1468,9 +1465,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1497,13 +1494,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1530,9 +1527,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1577,16 +1574,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1618,7 +1605,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1640,9 +1627,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1707,7 +1694,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1731,6 +1718,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -2183,7 +2176,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -2203,5 +2196,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/empty/Cargo.lock b/contracts/empty/Cargo.lock index c48eb2c769..7f256a5b85 100644 --- a/contracts/empty/Cargo.lock +++ b/contracts/empty/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -709,7 +734,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -746,12 +771,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -901,9 +920,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1050,31 +1067,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1288,9 +1286,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1300,9 +1298,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1331,7 +1329,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1350,9 +1347,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1379,13 +1376,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1412,9 +1409,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1459,16 +1456,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1500,7 +1487,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1522,9 +1509,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1576,7 +1563,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1600,6 +1587,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1977,7 +1970,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1997,5 +1990,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/floaty/Cargo.lock b/contracts/floaty/Cargo.lock index f4dd69504b..4ade5373ba 100644 --- a/contracts/floaty/Cargo.lock +++ b/contracts/floaty/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -699,7 +724,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -748,12 +773,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -903,9 +922,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1052,31 +1069,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1306,9 +1304,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1318,9 +1316,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1349,7 +1347,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1368,9 +1365,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1397,13 +1394,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -1430,9 +1427,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1477,16 +1474,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1518,7 +1505,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -1540,9 +1527,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.32" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1594,7 +1581,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -1618,6 +1605,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1995,7 +1988,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] [[package]] @@ -2015,5 +2008,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.52", ] diff --git a/contracts/hackatom/Cargo.lock b/contracts/hackatom/Cargo.lock index 36df027161..936911c156 100644 --- a/contracts/hackatom/Cargo.lock +++ b/contracts/hackatom/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -699,7 +724,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -736,12 +761,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -904,9 +923,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1053,31 +1070,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1291,9 +1289,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1303,9 +1301,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1334,7 +1332,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1353,9 +1350,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1382,13 +1379,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1415,9 +1412,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1462,16 +1459,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1503,7 +1490,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1525,9 +1512,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1579,7 +1566,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1603,6 +1590,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1980,7 +1973,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -2000,5 +1993,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/ibc-reflect-send/Cargo.lock b/contracts/ibc-reflect-send/Cargo.lock index e0ec441894..1a26458f65 100644 --- a/contracts/ibc-reflect-send/Cargo.lock +++ b/contracts/ibc-reflect-send/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -699,7 +724,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -736,12 +761,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -902,9 +921,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1051,31 +1068,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1289,9 +1287,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1301,9 +1299,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1332,7 +1330,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1351,9 +1348,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1380,13 +1377,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1413,9 +1410,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1460,16 +1457,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1501,7 +1488,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1523,9 +1510,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1577,7 +1564,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1601,6 +1588,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1978,7 +1971,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1998,5 +1991,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/ibc-reflect/Cargo.lock b/contracts/ibc-reflect/Cargo.lock index f03b79ab28..1149e062ad 100644 --- a/contracts/ibc-reflect/Cargo.lock +++ b/contracts/ibc-reflect/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -699,7 +724,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -736,12 +761,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -902,9 +921,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1051,31 +1068,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1289,9 +1287,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1301,9 +1299,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1332,7 +1330,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1351,9 +1348,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1380,13 +1377,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1413,9 +1410,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1460,16 +1457,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1501,7 +1488,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1523,9 +1510,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1577,7 +1564,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1601,6 +1588,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1978,7 +1971,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1998,5 +1991,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/queue/Cargo.lock b/contracts/queue/Cargo.lock index 658f0f88e8..2e30b080d8 100644 --- a/contracts/queue/Cargo.lock +++ b/contracts/queue/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -699,7 +724,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -736,12 +761,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -891,9 +910,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1040,31 +1057,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1289,9 +1287,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1301,9 +1299,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1332,7 +1330,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1351,9 +1348,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1380,13 +1377,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1413,9 +1410,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1460,16 +1457,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1501,7 +1488,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1523,9 +1510,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1577,7 +1564,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1601,6 +1588,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1978,7 +1971,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1998,5 +1991,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/reflect/Cargo.lock b/contracts/reflect/Cargo.lock index 62696ce9e9..6ae7c92024 100644 --- a/contracts/reflect/Cargo.lock +++ b/contracts/reflect/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -699,7 +724,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -736,12 +761,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -891,9 +910,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1040,31 +1057,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1290,9 +1288,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1302,9 +1300,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1333,7 +1331,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1352,9 +1349,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1381,13 +1378,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1414,9 +1411,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1461,16 +1458,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1502,7 +1489,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1524,9 +1511,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1578,7 +1565,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1602,6 +1589,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1979,7 +1972,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1999,5 +1992,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/staking/Cargo.lock b/contracts/staking/Cargo.lock index 4f41bd0955..b3c391445c 100644 --- a/contracts/staking/Cargo.lock +++ b/contracts/staking/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -699,7 +724,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -736,12 +761,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -891,9 +910,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1040,31 +1057,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1278,9 +1276,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1290,9 +1288,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1321,7 +1319,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1340,9 +1337,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1369,13 +1366,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1402,9 +1399,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1467,17 +1464,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.37", -] - -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", + "syn 2.0.52", ] [[package]] @@ -1523,7 +1510,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1545,9 +1532,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1599,7 +1586,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1623,6 +1610,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -2000,7 +1993,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -2020,5 +2013,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/contracts/virus/Cargo.lock b/contracts/virus/Cargo.lock index b089bd4302..770cbced79 100644 --- a/contracts/virus/Cargo.lock +++ b/contracts/virus/Cargo.lock @@ -85,12 +85,6 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" -[[package]] -name = "base64ct" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" - [[package]] name = "bech32" version = "0.11.0" @@ -201,10 +195,27 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "cosmwasm-core" +version = "2.0.1" +dependencies = [ + "base64", + "bnum", + "cosmwasm-crypto", + "derive_more", + "hex", + "schemars", + "serde", + "sha2", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-crypto" version = "2.0.1" dependencies = [ + "derive_more", "digest", "ecdsa", "ed25519-zebra", @@ -220,7 +231,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -240,7 +251,7 @@ version = "2.0.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -249,17 +260,16 @@ version = "2.0.1" dependencies = [ "base64", "bech32", - "bnum", + "cosmwasm-core", "cosmwasm-crypto", "cosmwasm-derive", - "derivative", - "forward_ref", + "derive_more", "hex", + "rand_core", "schemars", "serde", "serde-json-wasm", "sha2", - "static_assertions", "thiserror", ] @@ -275,6 +285,7 @@ dependencies = [ "crc32fast", "derivative", "hex", + "rand_core", "schemars", "serde", "serde_json", @@ -478,7 +489,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -501,7 +512,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -512,7 +523,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -535,7 +546,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -550,6 +560,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7abbfc297053be59290e3152f8cbcd52c8642e0728b69ee187d991d4c1af08d" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bba3e9872d7c58ce7ef0fcf1844fcc3e23ef2a58377b50df35dd98e42a5726e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -605,7 +636,6 @@ dependencies = [ "elliptic-curve", "rfc6979", "signature", - "spki", ] [[package]] @@ -614,8 +644,6 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "serde", "signature", ] @@ -630,7 +658,6 @@ dependencies = [ "hashbrown 0.14.3", "hex", "rand_core", - "serde", "sha2", "zeroize", ] @@ -653,8 +680,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", - "pkcs8", "rand_core", "sec1", "subtle", @@ -699,7 +724,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -736,12 +761,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - [[package]] name = "fxhash" version = "0.2.1" @@ -891,9 +910,7 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] @@ -1040,31 +1057,12 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "pin-project-lite" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "platforms" version = "3.4.0" @@ -1278,9 +1276,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -1290,9 +1288,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -1321,7 +1319,6 @@ dependencies = [ "base16ct", "der", "generic-array", - "pkcs8", "subtle", "zeroize", ] @@ -1340,9 +1337,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -1369,13 +1366,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1402,9 +1399,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1449,16 +1446,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" -[[package]] -name = "spki" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1490,7 +1477,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1512,9 +1499,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -1566,7 +1553,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1590,6 +1577,12 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "version_check" version = "0.9.4" @@ -1979,7 +1972,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1999,5 +1992,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] diff --git a/packages/core/.cargo/config b/packages/core/.cargo/config new file mode 100644 index 0000000000..54e2d5481e --- /dev/null +++ b/packages/core/.cargo/config @@ -0,0 +1,5 @@ +[alias] +no-std = "build --release --lib --target thumbv7em-none-eabi" +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +unit-test = "test --lib" diff --git a/packages/core/Cargo.toml b/packages/core/Cargo.toml index 2de1ec3e3f..05dfbcb478 100644 --- a/packages/core/Cargo.toml +++ b/packages/core/Cargo.toml @@ -11,3 +11,23 @@ readme = "README.md" release = false [dependencies] +base64 = { version = "0.22.0", default-features = false, features = ["alloc"] } +bnum = "0.11.0" +cosmwasm-crypto = { version = "2.0.1", path = "../crypto" } +derive_more = { version = "1.0.0-beta.6", default-features = false, features = ["display", "from"] } +hex = { version = "0.4.3", default-features = false, features = ["alloc"] } +schemars = { version = "0.8.16", optional = true } +serde = { version = "1.0.197", default-features = false, features = ["alloc", "derive"] } +sha2 = { version = "0.10.8", default-features = false } +static_assertions = "1.1.0" +thiserror = { version = "1.0.26", optional = true } + +[features] +std = ["dep:schemars", "dep:thiserror"] + +[dev-dependencies] +# Cyclic dependencies for doc tests.. +cosmwasm-std = { path = "../std", version = "2.0.1" } +crc32fast = { version = "1.4.0", default-features = false } +hex-literal = "0.4.1" +serde_json = "1.0.114" diff --git a/packages/core/src/__internal.rs b/packages/core/src/__internal.rs new file mode 100644 index 0000000000..6df23be4fb --- /dev/null +++ b/packages/core/src/__internal.rs @@ -0,0 +1,9 @@ +//! +//! # âš  DO NOT DEPEND ON THIS AS AN OUTSIDE CONSUMER +//! +//! **THIS MODULE IS SEMVER EXEMPT AND ONLY MEANT TO SHARE TYPES BETWEEN CORE AND STD** +//! +//! Module for re-exporting implementation details from `core` to `std` +//! + +pub use crate::__internal__forward_ref_partial_eq as forward_ref_partial_eq; diff --git a/packages/std/src/addresses.rs b/packages/core/src/addresses.rs similarity index 98% rename from packages/std/src/addresses.rs rename to packages/core/src/addresses.rs index 66b07c4267..c4e18e98aa 100644 --- a/packages/std/src/addresses.rs +++ b/packages/core/src/addresses.rs @@ -1,16 +1,14 @@ -use alloc::borrow::Cow; +use alloc::{borrow::Cow, string::String, vec::Vec}; use core::fmt; use core::ops::Deref; -use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use sha2::{ digest::{Digest, Update}, Sha256, }; -use thiserror::Error; -use crate::prelude::*; -use crate::{binary::Binary, forward_ref_partial_eq, HexBinary}; +use crate::Binary; +use crate::{forward_ref_partial_eq, HexBinary}; /// A human readable address. /// @@ -28,9 +26,8 @@ use crate::{binary::Binary, forward_ref_partial_eq, HexBinary}; /// This type is immutable. If you really need to mutate it (Really? Are you sure?), create /// a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` /// instance. -#[derive( - Serialize, Deserialize, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, JsonSchema, -)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] pub struct Addr(String); forward_ref_partial_eq!(Addr, Addr); @@ -130,7 +127,8 @@ impl<'a> From<&'a Addr> for Cow<'a, Addr> { /// addition to that there are many unsafe ways to convert any binary data into an instance. /// So the type should be treated as a marker to express the intended data type, not as /// a validity guarantee of any sort. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, Hash, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] pub struct CanonicalAddr(Binary); /// Implement `CanonicalAddr == Binary` @@ -251,7 +249,8 @@ impl fmt::Display for CanonicalAddr { } } -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum Instantiate2AddressError { /// Checksum must be 32 bytes InvalidChecksumLength, @@ -361,6 +360,8 @@ fn hash(ty: &str, key: &[u8]) -> Vec { mod tests { use super::*; use crate::assert_hash_works; + use crate::HexBinary; + use hex_literal::hex; #[test] diff --git a/packages/std/src/binary.rs b/packages/core/src/binary.rs similarity index 90% rename from packages/std/src/binary.rs rename to packages/core/src/binary.rs index 48498b78be..1d445c7a5a 100644 --- a/packages/std/src/binary.rs +++ b/packages/core/src/binary.rs @@ -1,32 +1,24 @@ +use alloc::{string::String, vec::Vec}; use core::fmt; use core::ops::Deref; -use base64::engine::{Engine, GeneralPurpose}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use crate::errors::{StdError, StdResult}; -use crate::prelude::*; +use crate::{ + encoding::{from_base64, to_base64}, + errors::{CoreError, CoreResult}, +}; /// Binary is a wrapper around Vec to add base64 de/serialization /// with serde. It also adds some helper methods to help encode inline. /// /// This is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. /// See also . -#[derive(Clone, Default, PartialEq, Eq, Hash, PartialOrd, Ord, JsonSchema)] -pub struct Binary(#[schemars(with = "String")] Vec); +#[derive(Clone, Default, PartialEq, Eq, Hash, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Binary(#[cfg_attr(feature = "std", schemars(with = "String"))] Vec); impl Binary { - /// Base64 encoding engine used in conversion to/from base64. - /// - /// The engine adds padding when encoding and accepts strings with or - /// without padding when decoding. - const B64_ENGINE: GeneralPurpose = GeneralPurpose::new( - &base64::alphabet::STANDARD, - base64::engine::GeneralPurposeConfig::new() - .with_decode_padding_mode(base64::engine::DecodePaddingMode::Indifferent), - ); - /// Creates a new `Binary` containing the given data. pub const fn new(data: Vec) -> Self { Self(data) @@ -34,17 +26,14 @@ impl Binary { /// take an (untrusted) string and decode it into bytes. /// fails if it is not valid base64 - pub fn from_base64(encoded: &str) -> StdResult { - Self::B64_ENGINE - .decode(encoded.as_bytes()) - .map(Binary::from) - .map_err(StdError::invalid_base64) + pub fn from_base64(encoded: &str) -> CoreResult { + from_base64(encoded).map(Self::new) } /// encode to base64 string (guaranteed to be success as we control the data inside). /// this returns normalized form (with trailing = if needed) pub fn to_base64(&self) -> String { - Self::B64_ENGINE.encode(self.0.as_slice()) + to_base64(&self.0) } pub fn as_slice(&self) -> &[u8] { @@ -72,9 +61,9 @@ impl Binary { /// let num = u64::from_be_bytes(binary.to_array().unwrap()); /// assert_eq!(num, 10045108015024774967); /// ``` - pub fn to_array(&self) -> StdResult<[u8; LENGTH]> { + pub fn to_array(&self) -> CoreResult<[u8; LENGTH]> { if self.len() != LENGTH { - return Err(StdError::invalid_data_size(LENGTH, self.len())); + return Err(CoreError::invalid_data_size(LENGTH, self.len())); } let mut out: [u8; LENGTH] = [0; LENGTH]; @@ -249,7 +238,7 @@ impl<'de> de::Visitor<'de> for Base64Visitor { { match Binary::from_base64(v) { Ok(binary) => Ok(binary), - Err(_) => Err(E::custom(format!("invalid base64: {v}"))), + Err(_) => Err(E::custom(format_args!("invalid base64: {v}"))), } } } @@ -258,7 +247,7 @@ impl<'de> de::Visitor<'de> for Base64Visitor { mod tests { use super::*; use crate::assert_hash_works; - use crate::serde::{from_json, to_json_vec}; + use crate::errors::CoreError; #[test] fn to_array_works() { @@ -276,7 +265,7 @@ mod tests { let binary = Binary::from(&[1, 2, 3]); let error = binary.to_array::<8>().unwrap_err(); match error { - StdError::InvalidDataSize { + CoreError::InvalidDataSize { expected, actual, .. } => { assert_eq!(expected, 8); @@ -335,7 +324,7 @@ mod tests { ("cmFuZ", "Invalid input length: 5"), ] { match Binary::from_base64(invalid_base64) { - Err(StdError::InvalidBase64 { msg, .. }) => assert_eq!(want, msg), + Err(CoreError::InvalidBase64 { msg, .. }) => assert_eq!(want, msg), result => panic!("Unexpected result: {result:?}"), } } @@ -455,8 +444,8 @@ mod tests { fn serialization_works() { let binary = Binary(vec![0u8, 187, 61, 11, 250, 0]); - let json = to_json_vec(&binary).unwrap(); - let deserialized: Binary = from_json(json).unwrap(); + let json = serde_json::to_vec(&binary).unwrap(); + let deserialized: Binary = serde_json::from_slice(&json).unwrap(); assert_eq!(binary, deserialized); } @@ -467,16 +456,16 @@ mod tests { // this is the binary behind above string let expected = vec![0u8, 187, 61, 11, 250, 0]; - let serialized = to_json_vec(&b64_str).unwrap(); - let deserialized: Binary = from_json(serialized).unwrap(); + let serialized = serde_json::to_vec(&b64_str).unwrap(); + let deserialized: Binary = serde_json::from_slice(&serialized).unwrap(); assert_eq!(expected, deserialized.as_slice()); } #[test] fn deserialize_from_invalid_string() { let invalid_str = "**BAD!**"; - let serialized = to_json_vec(&invalid_str).unwrap(); - let res = from_json::(&serialized); + let serialized = serde_json::to_vec(&invalid_str).unwrap(); + let res = serde_json::from_slice::(&serialized); assert!(res.is_err()); } diff --git a/packages/core/src/encoding.rs b/packages/core/src/encoding.rs new file mode 100644 index 0000000000..9a8e2a44a2 --- /dev/null +++ b/packages/core/src/encoding.rs @@ -0,0 +1,94 @@ +use alloc::{string::String, vec::Vec}; +use base64::{engine::GeneralPurpose, Engine}; + +use crate::{CoreError, CoreResult}; + +/// Base64 encoding engine used in conversion to/from base64. +/// +/// The engine adds padding when encoding and accepts strings with or +/// without padding when decoding. +const B64_ENGINE: GeneralPurpose = GeneralPurpose::new( + &base64::alphabet::STANDARD, + base64::engine::GeneralPurposeConfig::new() + .with_decode_padding_mode(base64::engine::DecodePaddingMode::Indifferent), +); + +/// Deserialize a bag of bytes from Base64 into a vector of bytes +pub fn from_base64(input: I) -> CoreResult> +where + I: AsRef<[u8]>, +{ + B64_ENGINE.decode(input).map_err(CoreError::invalid_base64) +} + +/// Encode a bag of bytes into the Base64 format +pub fn to_base64(input: I) -> String +where + I: AsRef<[u8]>, +{ + B64_ENGINE.encode(input) +} + +/// Decode a bag of bytes from hex into a vector of bytes +pub fn from_hex(input: I) -> CoreResult> +where + I: AsRef<[u8]>, +{ + hex::decode(input).map_err(CoreError::invalid_hex) +} + +/// Encode a bag of bytes into the hex format +pub fn to_hex(input: I) -> String +where + I: AsRef<[u8]>, +{ + hex::encode(input) +} + +#[cfg(test)] +mod test { + use crate::{from_base64, from_hex, to_base64, to_hex}; + + const BASE64_FOOBAR: &str = "Zm9vYmFy"; // utf-8 encoded "foobar" + const HEX_FOOBAR: &str = "666f6f626172"; // utf-8 encoded "foobar" + + #[test] + fn from_base64_works() { + let decoded = from_base64(BASE64_FOOBAR).unwrap(); + assert_eq!(decoded, b"foobar"); + } + + #[test] + fn to_base64_works() { + let encoded = to_base64("foobar"); + assert_eq!(encoded, BASE64_FOOBAR); + } + + #[test] + fn base64_roundtrip_works() { + let decoded = from_base64(BASE64_FOOBAR).unwrap(); + assert_eq!(decoded, b"foobar"); + let encoded = to_base64(decoded); + assert_eq!(encoded, BASE64_FOOBAR); + } + + #[test] + fn from_hex_works() { + let decoded = from_hex(HEX_FOOBAR).unwrap(); + assert_eq!(decoded, b"foobar"); + } + + #[test] + fn to_hex_works() { + let encoded = to_hex("foobar"); + assert_eq!(encoded, HEX_FOOBAR); + } + + #[test] + fn hex_roundtrip_works() { + let decoded = from_hex(HEX_FOOBAR).unwrap(); + assert_eq!(decoded, b"foobar"); + let encoded = to_hex(decoded); + assert_eq!(encoded, HEX_FOOBAR); + } +} diff --git a/packages/std/src/errors/backtrace.rs b/packages/core/src/errors/backtrace.rs similarity index 98% rename from packages/std/src/errors/backtrace.rs rename to packages/core/src/errors/backtrace.rs index 7575a1f406..14b92d851e 100644 --- a/packages/std/src/errors/backtrace.rs +++ b/packages/core/src/errors/backtrace.rs @@ -1,7 +1,6 @@ +use alloc::boxed::Box; use core::fmt::{Debug, Display, Formatter, Result}; -use crate::prelude::*; - /// This wraps an actual backtrace to achieve two things: /// - being able to fill this with a stub implementation in `no_std` environments /// - being able to use this in conjunction with [`thiserror::Error`] diff --git a/packages/std/src/errors/std_error.rs b/packages/core/src/errors/core_error.rs similarity index 67% rename from packages/std/src/errors/std_error.rs rename to packages/core/src/errors/core_error.rs index 8b997178b6..39fefad28e 100644 --- a/packages/std/src/errors/std_error.rs +++ b/packages/core/src/errors/core_error.rs @@ -1,10 +1,10 @@ +use alloc::string::{String, ToString}; use core::fmt; +use derive_more::{Display, From}; use super::{impl_from_err, BT}; -use thiserror::Error; use crate::errors::{RecoverPubkeyError, VerificationError}; -use crate::prelude::*; /// Structured error type for init, execute and query. /// @@ -21,61 +21,62 @@ use crate::prelude::*; /// Checklist for adding a new error: /// - Add enum case /// - Add creator function in std_error_helpers.rs -#[derive(Error, Debug)] -pub enum StdError { - #[error("Verification error: {source}")] +#[derive(Display, Debug)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +pub enum CoreError { + #[display("Verification error: {source}")] VerificationErr { source: VerificationError, backtrace: BT, }, - #[error("Recover pubkey error: {source}")] + #[display("Recover pubkey error: {source}")] RecoverPubkeyErr { source: RecoverPubkeyError, backtrace: BT, }, /// Whenever there is no specific error type available - #[error("Generic error: {msg}")] + #[display("Generic error: {msg}")] GenericErr { msg: String, backtrace: BT }, - #[error("Invalid Base64 string: {msg}")] + #[display("Invalid Base64 string: {msg}")] InvalidBase64 { msg: String, backtrace: BT }, - #[error("Invalid data size: expected={expected} actual={actual}")] + #[display("Invalid data size: expected={expected} actual={actual}")] InvalidDataSize { expected: u64, actual: u64, backtrace: BT, }, - #[error("Invalid hex string: {msg}")] + #[display("Invalid hex string: {msg}")] InvalidHex { msg: String, backtrace: BT }, /// Whenever UTF-8 bytes cannot be decoded into a unicode string, e.g. in String::from_utf8 or str::from_utf8. - #[error("Cannot decode UTF8 bytes into string: {msg}")] + #[display("Cannot decode UTF8 bytes into string: {msg}")] InvalidUtf8 { msg: String, backtrace: BT }, - #[error("{kind} not found")] + #[display("{kind} not found")] NotFound { kind: String, backtrace: BT }, - #[error("Error parsing into type {target_type}: {msg}")] + #[display("Error parsing into type {target_type}: {msg}")] ParseErr { /// the target type that was attempted target_type: String, msg: String, backtrace: BT, }, - #[error("Error serializing type {source_type}: {msg}")] + #[display("Error serializing type {source_type}: {msg}")] SerializeErr { /// the source type that was attempted source_type: String, msg: String, backtrace: BT, }, - #[error("Overflow: {source}")] + #[display("Overflow: {source}")] Overflow { source: OverflowError, backtrace: BT, }, - #[error("Divide by zero: {source}")] + #[display("Divide by zero: {source}")] DivideByZero { source: DivideByZeroError, backtrace: BT, }, - #[error("Conversion error: ")] + #[display("Conversion error: ")] ConversionOverflow { source: ConversionOverflowError, backtrace: BT, @@ -84,41 +85,41 @@ pub enum StdError { impl_from_err!( ConversionOverflowError, - StdError, - StdError::ConversionOverflow + CoreError, + CoreError::ConversionOverflow ); -impl StdError { +impl CoreError { pub fn verification_err(source: VerificationError) -> Self { - StdError::VerificationErr { + CoreError::VerificationErr { source, backtrace: BT::capture(), } } pub fn recover_pubkey_err(source: RecoverPubkeyError) -> Self { - StdError::RecoverPubkeyErr { + CoreError::RecoverPubkeyErr { source, backtrace: BT::capture(), } } pub fn generic_err(msg: impl Into) -> Self { - StdError::GenericErr { + CoreError::GenericErr { msg: msg.into(), backtrace: BT::capture(), } } pub fn invalid_base64(msg: impl ToString) -> Self { - StdError::InvalidBase64 { + CoreError::InvalidBase64 { msg: msg.to_string(), backtrace: BT::capture(), } } pub fn invalid_data_size(expected: usize, actual: usize) -> Self { - StdError::InvalidDataSize { + CoreError::InvalidDataSize { // Cast is safe because usize is 32 or 64 bit large in all environments we support expected: expected as u64, actual: actual as u64, @@ -127,28 +128,28 @@ impl StdError { } pub fn invalid_hex(msg: impl ToString) -> Self { - StdError::InvalidHex { + CoreError::InvalidHex { msg: msg.to_string(), backtrace: BT::capture(), } } pub fn invalid_utf8(msg: impl ToString) -> Self { - StdError::InvalidUtf8 { + CoreError::InvalidUtf8 { msg: msg.to_string(), backtrace: BT::capture(), } } pub fn not_found(kind: impl Into) -> Self { - StdError::NotFound { + CoreError::NotFound { kind: kind.into(), backtrace: BT::capture(), } } pub fn parse_err(target: impl Into, msg: impl ToString) -> Self { - StdError::ParseErr { + CoreError::ParseErr { target_type: target.into(), msg: msg.to_string(), backtrace: BT::capture(), @@ -156,7 +157,7 @@ impl StdError { } pub fn serialize_err(source: impl Into, msg: impl ToString) -> Self { - StdError::SerializeErr { + CoreError::SerializeErr { source_type: source.into(), msg: msg.to_string(), backtrace: BT::capture(), @@ -164,28 +165,28 @@ impl StdError { } pub fn overflow(source: OverflowError) -> Self { - StdError::Overflow { + CoreError::Overflow { source, backtrace: BT::capture(), } } pub fn divide_by_zero(source: DivideByZeroError) -> Self { - StdError::DivideByZero { + CoreError::DivideByZero { source, backtrace: BT::capture(), } } } -impl PartialEq for StdError { - fn eq(&self, rhs: &StdError) -> bool { +impl PartialEq for CoreError { + fn eq(&self, rhs: &CoreError) -> bool { match self { - StdError::VerificationErr { + CoreError::VerificationErr { source, backtrace: _, } => { - if let StdError::VerificationErr { + if let CoreError::VerificationErr { source: rhs_source, backtrace: _, } = rhs @@ -195,11 +196,11 @@ impl PartialEq for StdError { false } } - StdError::RecoverPubkeyErr { + CoreError::RecoverPubkeyErr { source, backtrace: _, } => { - if let StdError::RecoverPubkeyErr { + if let CoreError::RecoverPubkeyErr { source: rhs_source, backtrace: _, } = rhs @@ -209,8 +210,8 @@ impl PartialEq for StdError { false } } - StdError::GenericErr { msg, backtrace: _ } => { - if let StdError::GenericErr { + CoreError::GenericErr { msg, backtrace: _ } => { + if let CoreError::GenericErr { msg: rhs_msg, backtrace: _, } = rhs @@ -220,8 +221,8 @@ impl PartialEq for StdError { false } } - StdError::InvalidBase64 { msg, backtrace: _ } => { - if let StdError::InvalidBase64 { + CoreError::InvalidBase64 { msg, backtrace: _ } => { + if let CoreError::InvalidBase64 { msg: rhs_msg, backtrace: _, } = rhs @@ -231,12 +232,12 @@ impl PartialEq for StdError { false } } - StdError::InvalidDataSize { + CoreError::InvalidDataSize { expected, actual, backtrace: _, } => { - if let StdError::InvalidDataSize { + if let CoreError::InvalidDataSize { expected: rhs_expected, actual: rhs_actual, backtrace: _, @@ -247,8 +248,8 @@ impl PartialEq for StdError { false } } - StdError::InvalidHex { msg, backtrace: _ } => { - if let StdError::InvalidHex { + CoreError::InvalidHex { msg, backtrace: _ } => { + if let CoreError::InvalidHex { msg: rhs_msg, backtrace: _, } = rhs @@ -258,8 +259,8 @@ impl PartialEq for StdError { false } } - StdError::InvalidUtf8 { msg, backtrace: _ } => { - if let StdError::InvalidUtf8 { + CoreError::InvalidUtf8 { msg, backtrace: _ } => { + if let CoreError::InvalidUtf8 { msg: rhs_msg, backtrace: _, } = rhs @@ -269,8 +270,8 @@ impl PartialEq for StdError { false } } - StdError::NotFound { kind, backtrace: _ } => { - if let StdError::NotFound { + CoreError::NotFound { kind, backtrace: _ } => { + if let CoreError::NotFound { kind: rhs_kind, backtrace: _, } = rhs @@ -280,12 +281,12 @@ impl PartialEq for StdError { false } } - StdError::ParseErr { + CoreError::ParseErr { target_type, msg, backtrace: _, } => { - if let StdError::ParseErr { + if let CoreError::ParseErr { target_type: rhs_target_type, msg: rhs_msg, backtrace: _, @@ -296,12 +297,12 @@ impl PartialEq for StdError { false } } - StdError::SerializeErr { + CoreError::SerializeErr { source_type, msg, backtrace: _, } => { - if let StdError::SerializeErr { + if let CoreError::SerializeErr { source_type: rhs_source_type, msg: rhs_msg, backtrace: _, @@ -312,11 +313,11 @@ impl PartialEq for StdError { false } } - StdError::Overflow { + CoreError::Overflow { source, backtrace: _, } => { - if let StdError::Overflow { + if let CoreError::Overflow { source: rhs_source, backtrace: _, } = rhs @@ -326,11 +327,11 @@ impl PartialEq for StdError { false } } - StdError::DivideByZero { + CoreError::DivideByZero { source, backtrace: _, } => { - if let StdError::DivideByZero { + if let CoreError::DivideByZero { source: rhs_source, backtrace: _, } = rhs @@ -340,11 +341,11 @@ impl PartialEq for StdError { false } } - StdError::ConversionOverflow { + CoreError::ConversionOverflow { source, backtrace: _, } => { - if let StdError::ConversionOverflow { + if let CoreError::ConversionOverflow { source: rhs_source, backtrace: _, } = rhs @@ -358,37 +359,37 @@ impl PartialEq for StdError { } } -impl From for StdError { +impl From for CoreError { fn from(source: core::str::Utf8Error) -> Self { Self::invalid_utf8(source) } } -impl From for StdError { +impl From for CoreError { fn from(source: alloc::string::FromUtf8Error) -> Self { Self::invalid_utf8(source) } } -impl From for StdError { +impl From for CoreError { fn from(source: VerificationError) -> Self { Self::verification_err(source) } } -impl From for StdError { +impl From for CoreError { fn from(source: RecoverPubkeyError) -> Self { Self::recover_pubkey_err(source) } } -impl From for StdError { +impl From for CoreError { fn from(source: OverflowError) -> Self { Self::overflow(source) } } -impl From for StdError { +impl From for CoreError { fn from(source: DivideByZeroError) -> Self { Self::divide_by_zero(source) } @@ -397,11 +398,11 @@ impl From for StdError { /// The return type for init, execute and query. Since the error type cannot be serialized to JSON, /// this is only available within the contract and its unit tests. /// -/// The prefix "Std" means "the standard result within the standard library". This is not the only -/// result/error type in cosmwasm-std. -pub type StdResult = core::result::Result; +/// The prefix "Core"/"Std" means "the standard result within the core/standard library". This is not the only +/// result/error type in cosmwasm-core/cosmwasm-std. +pub type CoreResult = core::result::Result; -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq)] pub enum OverflowOperation { Add, Sub, @@ -417,8 +418,9 @@ impl fmt::Display for OverflowOperation { } } -#[derive(Error, Debug, PartialEq, Eq)] -#[error("Cannot {operation} with given operands")] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("Cannot {operation} with given operands")] pub struct OverflowError { pub operation: OverflowOperation, } @@ -435,8 +437,9 @@ impl OverflowError { /// [`TryFrom`]: core::convert::TryFrom /// [`Uint256`]: crate::Uint256 /// [`Uint128`]: crate::Uint128 -#[derive(Error, Debug, PartialEq, Eq)] -#[error("Error converting {source_type} to {target_type}")] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("Error converting {source_type} to {target_type}")] pub struct ConversionOverflowError { pub source_type: &'static str, pub target_type: &'static str, @@ -451,8 +454,9 @@ impl ConversionOverflowError { } } -#[derive(Error, Debug, Default, PartialEq, Eq)] -#[error("Cannot divide by zero")] +#[derive(Display, Debug, Default, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("Cannot divide by zero")] pub struct DivideByZeroError; impl DivideByZeroError { @@ -461,72 +465,81 @@ impl DivideByZeroError { } } -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum DivisionError { - #[error("Divide by zero")] + #[display("Divide by zero")] DivideByZero, - #[error("Overflow in division")] + #[display("Overflow in division")] Overflow, } -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[cfg_attr(not(feature = "std"), derive(From))] pub enum CheckedMultiplyFractionError { - #[error("{0}")] + #[display("{_0}")] DivideByZero(#[from] DivideByZeroError), - #[error("{0}")] + #[display("{_0}")] ConversionOverflow(#[from] ConversionOverflowError), - #[error("{0}")] + #[display("{_0}")] Overflow(#[from] OverflowError), } -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum CheckedMultiplyRatioError { - #[error("Denominator must not be zero")] + #[display("Denominator must not be zero")] DivideByZero, - #[error("Multiplication overflow")] + #[display("Multiplication overflow")] Overflow, } -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum CheckedFromRatioError { - #[error("Denominator must not be zero")] + #[display("Denominator must not be zero")] DivideByZero, - #[error("Overflow")] + #[display("Overflow")] Overflow, } -#[derive(Error, Debug, PartialEq, Eq)] -#[error("Round up operation failed because of overflow")] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("Round up operation failed because of overflow")] pub struct RoundUpOverflowError; -#[derive(Error, Debug, PartialEq, Eq)] -#[error("Round down operation failed because of overflow")] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("Round down operation failed because of overflow")] pub struct RoundDownOverflowError; -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum CoinsError { - #[error("Duplicate denom")] + #[display("Duplicate denom")] DuplicateDenom, } -impl From for StdError { +impl From for CoreError { fn from(value: CoinsError) -> Self { Self::generic_err(format!("Creating Coins: {value}")) } } -#[derive(Error, Debug, PartialEq, Eq)] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum CoinFromStrError { - #[error("Missing denominator")] + #[display("Missing denominator")] MissingDenom, - #[error("Missing amount or non-digit characters in amount")] + #[display("Missing amount or non-digit characters in amount")] MissingAmount, - #[error("Invalid amount: {0}")] + #[display("Invalid amount: {_0}")] InvalidAmount(core::num::ParseIntError), } @@ -536,7 +549,7 @@ impl From for CoinFromStrError { } } -impl From for StdError { +impl From for CoreError { fn from(value: CoinFromStrError) -> Self { Self::generic_err(format!("Parsing Coin: {value}")) } @@ -553,9 +566,9 @@ mod tests { #[test] fn generic_err_owned() { let guess = 7; - let error = StdError::generic_err(format!("{guess} is too low")); + let error = CoreError::generic_err(format!("{guess} is too low")); match error { - StdError::GenericErr { msg, .. } => { + CoreError::GenericErr { msg, .. } => { assert_eq!(msg, String::from("7 is too low")); } e => panic!("unexpected error, {e:?}"), @@ -565,18 +578,18 @@ mod tests { // example of reporting static contract errors #[test] fn generic_err_ref() { - let error = StdError::generic_err("not implemented"); + let error = CoreError::generic_err("not implemented"); match error { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "not implemented"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "not implemented"), e => panic!("unexpected error, {e:?}"), } } #[test] fn invalid_base64_works_for_strings() { - let error = StdError::invalid_base64("my text"); + let error = CoreError::invalid_base64("my text"); match error { - StdError::InvalidBase64 { msg, .. } => { + CoreError::InvalidBase64 { msg, .. } => { assert_eq!(msg, "my text"); } _ => panic!("expect different error"), @@ -586,9 +599,9 @@ mod tests { #[test] fn invalid_base64_works_for_errors() { let original = base64::DecodeError::InvalidLength(10); - let error = StdError::invalid_base64(original); + let error = CoreError::invalid_base64(original); match error { - StdError::InvalidBase64 { msg, .. } => { + CoreError::InvalidBase64 { msg, .. } => { assert_eq!(msg, "Invalid input length: 10"); } _ => panic!("expect different error"), @@ -597,9 +610,9 @@ mod tests { #[test] fn invalid_data_size_works() { - let error = StdError::invalid_data_size(31, 14); + let error = CoreError::invalid_data_size(31, 14); match error { - StdError::InvalidDataSize { + CoreError::InvalidDataSize { expected, actual, .. } => { assert_eq!(expected, 31); @@ -611,9 +624,9 @@ mod tests { #[test] fn invalid_hex_works_for_strings() { - let error = StdError::invalid_hex("my text"); + let error = CoreError::invalid_hex("my text"); match error { - StdError::InvalidHex { msg, .. } => { + CoreError::InvalidHex { msg, .. } => { assert_eq!(msg, "my text"); } _ => panic!("expect different error"), @@ -623,9 +636,9 @@ mod tests { #[test] fn invalid_hex_works_for_errors() { let original = hex::FromHexError::OddLength; - let error = StdError::invalid_hex(original); + let error = CoreError::invalid_hex(original); match error { - StdError::InvalidHex { msg, .. } => { + CoreError::InvalidHex { msg, .. } => { assert_eq!(msg, "Odd number of digits"); } _ => panic!("expect different error"), @@ -634,9 +647,9 @@ mod tests { #[test] fn invalid_utf8_works_for_strings() { - let error = StdError::invalid_utf8("my text"); + let error = CoreError::invalid_utf8("my text"); match error { - StdError::InvalidUtf8 { msg, .. } => { + CoreError::InvalidUtf8 { msg, .. } => { assert_eq!(msg, "my text"); } _ => panic!("expect different error"), @@ -646,9 +659,9 @@ mod tests { #[test] fn invalid_utf8_works_for_errors() { let original = String::from_utf8(vec![0x80]).unwrap_err(); - let error = StdError::invalid_utf8(original); + let error = CoreError::invalid_utf8(original); match error { - StdError::InvalidUtf8 { msg, .. } => { + CoreError::InvalidUtf8 { msg, .. } => { assert_eq!(msg, "invalid utf-8 sequence of 1 bytes from index 0"); } _ => panic!("expect different error"), @@ -657,18 +670,18 @@ mod tests { #[test] fn not_found_works() { - let error = StdError::not_found("gold"); + let error = CoreError::not_found("gold"); match error { - StdError::NotFound { kind, .. } => assert_eq!(kind, "gold"), + CoreError::NotFound { kind, .. } => assert_eq!(kind, "gold"), _ => panic!("expect different error"), } } #[test] fn parse_err_works() { - let error = StdError::parse_err("Book", "Missing field: title"); + let error = CoreError::parse_err("Book", "Missing field: title"); match error { - StdError::ParseErr { + CoreError::ParseErr { target_type, msg, .. } => { assert_eq!(target_type, "Book"); @@ -680,9 +693,9 @@ mod tests { #[test] fn serialize_err_works() { - let error = StdError::serialize_err("Book", "Content too long"); + let error = CoreError::serialize_err("Book", "Content too long"); match error { - StdError::SerializeErr { + CoreError::SerializeErr { source_type, msg, .. } => { assert_eq!(source_type, "Book"); @@ -694,10 +707,10 @@ mod tests { #[test] fn underflow_works_for_u128() { - let error = StdError::overflow(OverflowError::new(OverflowOperation::Sub)); + let error = CoreError::overflow(OverflowError::new(OverflowOperation::Sub)); assert!(matches!( error, - StdError::Overflow { + CoreError::Overflow { source: OverflowError { operation: OverflowOperation::Sub }, @@ -708,10 +721,10 @@ mod tests { #[test] fn overflow_works_for_i64() { - let error = StdError::overflow(OverflowError::new(OverflowOperation::Sub)); + let error = CoreError::overflow(OverflowError::new(OverflowOperation::Sub)); assert!(matches!( error, - StdError::Overflow { + CoreError::Overflow { source: OverflowError { operation: OverflowOperation::Sub }, @@ -722,10 +735,10 @@ mod tests { #[test] fn divide_by_zero_works() { - let error = StdError::divide_by_zero(DivideByZeroError); + let error = CoreError::divide_by_zero(DivideByZeroError); assert!(matches!( error, - StdError::DivideByZero { + CoreError::DivideByZero { source: DivideByZeroError, .. } @@ -734,7 +747,7 @@ mod tests { #[test] fn implements_debug() { - let error: StdError = StdError::from(OverflowError::new(OverflowOperation::Sub)); + let error: CoreError = CoreError::from(OverflowError::new(OverflowOperation::Sub)); let embedded = format!("Debug: {error:?}"); let expected = r#"Debug: Overflow { source: OverflowError { operation: Sub }, backtrace: }"#; assert_eq!(embedded, expected); @@ -742,7 +755,7 @@ mod tests { #[test] fn implements_display() { - let error: StdError = StdError::from(OverflowError::new(OverflowOperation::Sub)); + let error: CoreError = CoreError::from(OverflowError::new(OverflowOperation::Sub)); let embedded = format!("Display: {error}"); assert_eq!( embedded, @@ -752,11 +765,11 @@ mod tests { #[test] fn implements_partial_eq() { - let u1 = StdError::from(OverflowError::new(OverflowOperation::Sub)); - let u2 = StdError::from(OverflowError::new(OverflowOperation::Sub)); - let s1 = StdError::serialize_err("Book", "Content too long"); - let s2 = StdError::serialize_err("Book", "Content too long"); - let s3 = StdError::serialize_err("Book", "Title too long"); + let u1 = CoreError::from(OverflowError::new(OverflowOperation::Sub)); + let u2 = CoreError::from(OverflowError::new(OverflowOperation::Sub)); + let s1 = CoreError::serialize_err("Book", "Content too long"); + let s2 = CoreError::serialize_err("Book", "Content too long"); + let s3 = CoreError::serialize_err("Book", "Title too long"); assert_eq!(u1, u2); assert_ne!(u1, s1); assert_eq!(s1, s2); @@ -766,9 +779,9 @@ mod tests { #[test] fn from_std_str_utf8error_works() { let broken = Vec::from(b"Hello \xF0\x90\x80World" as &[u8]); - let error: StdError = str::from_utf8(&broken).unwrap_err().into(); + let error: CoreError = str::from_utf8(&broken).unwrap_err().into(); match error { - StdError::InvalidUtf8 { msg, .. } => { + CoreError::InvalidUtf8 { msg, .. } => { assert_eq!(msg, "invalid utf-8 sequence of 3 bytes from index 6") } err => panic!("Unexpected error: {err:?}"), @@ -777,11 +790,11 @@ mod tests { #[test] fn from_std_string_from_utf8error_works() { - let error: StdError = String::from_utf8(b"Hello \xF0\x90\x80World".to_vec()) + let error: CoreError = String::from_utf8(b"Hello \xF0\x90\x80World".to_vec()) .unwrap_err() .into(); match error { - StdError::InvalidUtf8 { msg, .. } => { + CoreError::InvalidUtf8 { msg, .. } => { assert_eq!(msg, "invalid utf-8 sequence of 3 bytes from index 6") } err => panic!("Unexpected error: {err:?}"), diff --git a/packages/std/src/errors/mod.rs b/packages/core/src/errors/mod.rs similarity index 59% rename from packages/std/src/errors/mod.rs rename to packages/core/src/errors/mod.rs index f85e7774d9..60533e027d 100644 --- a/packages/std/src/errors/mod.rs +++ b/packages/core/src/errors/mod.rs @@ -1,16 +1,16 @@ mod backtrace; +mod core_error; mod recover_pubkey_error; -mod std_error; mod system_error; mod verification_error; pub(crate) use backtrace::{impl_from_err, BT}; -pub use recover_pubkey_error::RecoverPubkeyError; -pub use std_error::{ +pub use core_error::{ CheckedFromRatioError, CheckedMultiplyFractionError, CheckedMultiplyRatioError, - CoinFromStrError, CoinsError, ConversionOverflowError, DivideByZeroError, DivisionError, - OverflowError, OverflowOperation, RoundDownOverflowError, RoundUpOverflowError, StdError, - StdResult, + CoinFromStrError, CoinsError, ConversionOverflowError, CoreError, CoreResult, + DivideByZeroError, DivisionError, OverflowError, OverflowOperation, RoundDownOverflowError, + RoundUpOverflowError, }; +pub use recover_pubkey_error::RecoverPubkeyError; pub use system_error::SystemError; pub use verification_error::VerificationError; diff --git a/packages/std/src/errors/recover_pubkey_error.rs b/packages/core/src/errors/recover_pubkey_error.rs similarity index 87% rename from packages/std/src/errors/recover_pubkey_error.rs rename to packages/core/src/errors/recover_pubkey_error.rs index ac2b174a26..d9b432120d 100644 --- a/packages/std/src/errors/recover_pubkey_error.rs +++ b/packages/core/src/errors/recover_pubkey_error.rs @@ -1,19 +1,20 @@ use core::fmt::Debug; #[cfg(not(target_arch = "wasm32"))] use cosmwasm_crypto::CryptoError; +use derive_more::Display; use super::BT; -use thiserror::Error; -#[derive(Error, Debug)] +#[derive(Display, Debug)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum RecoverPubkeyError { - #[error("Invalid hash format")] + #[display("Invalid hash format")] InvalidHashFormat, - #[error("Invalid signature format")] + #[display("Invalid signature format")] InvalidSignatureFormat, - #[error("Invalid recovery parameter. Supported values: 0 and 1.")] + #[display("Invalid recovery parameter. Supported values: 0 and 1.")] InvalidRecoveryParam, - #[error("Unknown error: {error_code}")] + #[display("Unknown error: {error_code}")] UnknownErr { error_code: u32, backtrace: BT }, } diff --git a/packages/std/src/errors/system_error.rs b/packages/core/src/errors/system_error.rs similarity index 85% rename from packages/std/src/errors/system_error.rs rename to packages/core/src/errors/system_error.rs index e7a0b5a865..b146233da2 100644 --- a/packages/std/src/errors/system_error.rs +++ b/packages/core/src/errors/system_error.rs @@ -1,7 +1,6 @@ -use schemars::JsonSchema; +use alloc::string::String; use serde::{Deserialize, Serialize}; -use crate::prelude::*; use crate::Binary; /// SystemError is used for errors inside the VM and is API friendly (i.e. serializable). @@ -13,7 +12,8 @@ use crate::Binary; /// /// Such errors are only created by the VM. The error type is defined in the standard library, to ensure /// the contract understands the error format without creating a dependency on cosmwasm-vm. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema, thiserror::Error))] #[serde(rename_all = "snake_case")] #[non_exhaustive] pub enum SystemError { @@ -40,9 +40,6 @@ pub enum SystemError { }, } -#[cfg(feature = "std")] -impl std::error::Error for SystemError {} - impl core::fmt::Display for SystemError { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { match self { @@ -71,7 +68,6 @@ impl core::fmt::Display for SystemError { #[cfg(test)] mod tests { use super::*; - use crate::{from_json, to_json_vec}; #[test] fn system_error_no_such_contract_serialization() { @@ -80,14 +76,15 @@ mod tests { }; // ser - let json = to_json_vec(&err).unwrap(); + let json = serde_json::to_vec(&err).unwrap(); assert_eq!( String::from_utf8_lossy(&json), r#"{"no_such_contract":{"addr":"gibtsnicht"}}"#, ); // de - let err: SystemError = from_json(br#"{"no_such_contract":{"addr":"nada"}}"#).unwrap(); + let err: SystemError = + serde_json::from_slice(br#"{"no_such_contract":{"addr":"nada"}}"#).unwrap(); assert_eq!( err, SystemError::NoSuchContract { @@ -101,14 +98,15 @@ mod tests { let err = SystemError::NoSuchCode { code_id: 13 }; // ser - let json = to_json_vec(&err).unwrap(); + let json = serde_json::to_vec(&err).unwrap(); assert_eq!( String::from_utf8_lossy(&json), r#"{"no_such_code":{"code_id":13}}"#, ); // de - let err: SystemError = from_json(br#"{"no_such_code":{"code_id":987}}"#).unwrap(); + let err: SystemError = + serde_json::from_slice(br#"{"no_such_code":{"code_id":987}}"#).unwrap(); assert_eq!(err, SystemError::NoSuchCode { code_id: 987 },); } } diff --git a/packages/std/src/errors/verification_error.rs b/packages/core/src/errors/verification_error.rs similarity index 87% rename from packages/std/src/errors/verification_error.rs rename to packages/core/src/errors/verification_error.rs index d4366c5206..c13139a980 100644 --- a/packages/std/src/errors/verification_error.rs +++ b/packages/core/src/errors/verification_error.rs @@ -1,26 +1,27 @@ use core::fmt::Debug; +use derive_more::Display; use super::BT; -use thiserror::Error; #[cfg(not(target_arch = "wasm32"))] use cosmwasm_crypto::CryptoError; -#[derive(Error, Debug)] +#[derive(Display, Debug)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum VerificationError { - #[error("Batch error")] + #[display("Batch error")] BatchErr, - #[error("Generic error")] + #[display("Generic error")] GenericErr, - #[error("Invalid hash format")] + #[display("Invalid hash format")] InvalidHashFormat, - #[error("Invalid signature format")] + #[display("Invalid signature format")] InvalidSignatureFormat, - #[error("Invalid public key format")] + #[display("Invalid public key format")] InvalidPubkeyFormat, - #[error("Invalid recovery parameter. Supported values: 0 and 1.")] + #[display("Invalid recovery parameter. Supported values: 0 and 1.")] InvalidRecoveryParam, - #[error("Unknown error: {error_code}")] + #[display("Unknown error: {error_code}")] UnknownErr { error_code: u32, backtrace: BT }, } diff --git a/packages/core/src/forward_ref.rs b/packages/core/src/forward_ref.rs new file mode 100644 index 0000000000..7be5b91686 --- /dev/null +++ b/packages/core/src/forward_ref.rs @@ -0,0 +1,84 @@ +/// # âš  THIS IS AN INTERNAL IMPLEMENTATION DETAIL. DO NOT USE. +/// +/// Given an implementation of `T == U`, implements: +/// - `&T == U` +/// - `T == &U` +/// +/// We don't need to add `&T == &U` here because this is implemented automatically. +#[doc(hidden)] +#[macro_export] +macro_rules! __internal__forward_ref_partial_eq { + ($t:ty, $u:ty) => { + // `&T == U` + impl<'a> PartialEq<$u> for &'a $t { + #[inline] + fn eq(&self, rhs: &$u) -> bool { + **self == *rhs // Implement via T == U + } + } + + // `T == &U` + impl PartialEq<&$u> for $t { + #[inline] + fn eq(&self, rhs: &&$u) -> bool { + *self == **rhs // Implement via T == U + } + } + }; +} + +/// implements binary operators "&T op U", "T op &U", "&T op &U" +/// based on "T op U" where T and U are expected to be `Copy`able +/// +/// Copied from `libcore` +macro_rules! forward_ref_binop { + (impl $imp:ident, $method:ident for $t:ty, $u:ty) => { + impl<'a> $imp<$u> for &'a $t { + type Output = <$t as $imp<$u>>::Output; + + #[inline] + #[track_caller] + fn $method(self, other: $u) -> <$t as $imp<$u>>::Output { + $imp::$method(*self, other) + } + } + + impl $imp<&$u> for $t { + type Output = <$t as $imp<$u>>::Output; + + #[inline] + #[track_caller] + fn $method(self, other: &$u) -> <$t as $imp<$u>>::Output { + $imp::$method(self, *other) + } + } + + impl $imp<&$u> for &$t { + type Output = <$t as $imp<$u>>::Output; + + #[inline] + #[track_caller] + fn $method(self, other: &$u) -> <$t as $imp<$u>>::Output { + $imp::$method(*self, *other) + } + } + }; +} + +/// implements "T op= &U", based on "T op= U" +/// where U is expected to be `Copy`able +/// +/// Copied from `libcore` +macro_rules! forward_ref_op_assign { + (impl $imp:ident, $method:ident for $t:ty, $u:ty) => { + impl $imp<&$u> for $t { + #[inline] + #[track_caller] + fn $method(&mut self, other: &$u) { + $imp::$method(self, *other); + } + } + }; +} + +pub(crate) use {forward_ref_binop, forward_ref_op_assign}; diff --git a/packages/std/src/hex_binary.rs b/packages/core/src/hex_binary.rs similarity index 92% rename from packages/std/src/hex_binary.rs rename to packages/core/src/hex_binary.rs index 91ceca1a3a..f55a8daeae 100644 --- a/packages/std/src/hex_binary.rs +++ b/packages/core/src/hex_binary.rs @@ -1,28 +1,30 @@ +use alloc::{string::String, vec::Vec}; use core::fmt; use core::ops::Deref; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use crate::prelude::*; -use crate::{Binary, StdError, StdResult}; +use crate::{ + encoding::{from_hex, to_hex}, + Binary, CoreError, CoreResult, +}; /// This is a wrapper around Vec to add hex de/serialization /// with serde. It also adds some helper methods to help encode inline. /// /// This is similar to `cosmwasm_std::Binary` but uses hex. /// See also . -#[derive(Clone, Default, PartialEq, Eq, Hash, PartialOrd, Ord, JsonSchema)] -pub struct HexBinary(#[schemars(with = "String")] Vec); +#[derive(Clone, Default, PartialEq, Eq, Hash, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct HexBinary(#[cfg_attr(feature = "std", schemars(with = "String"))] Vec); impl HexBinary { - pub fn from_hex(input: &str) -> StdResult { - let vec = hex::decode(input).map_err(StdError::invalid_hex)?; - Ok(Self(vec)) + pub fn from_hex(input: &str) -> CoreResult { + from_hex(input).map(Self) } pub fn to_hex(&self) -> String { - hex::encode(&self.0) + to_hex(&self.0) } pub fn as_slice(&self) -> &[u8] { @@ -50,9 +52,9 @@ impl HexBinary { /// let num = u64::from_be_bytes(data.to_array().unwrap()); /// assert_eq!(num, 10045108015024774967); /// ``` - pub fn to_array(&self) -> StdResult<[u8; LENGTH]> { + pub fn to_array(&self) -> CoreResult<[u8; LENGTH]> { if self.len() != LENGTH { - return Err(StdError::invalid_data_size(LENGTH, self.len())); + return Err(CoreError::invalid_data_size(LENGTH, self.len())); } let mut out: [u8; LENGTH] = [0; LENGTH]; @@ -248,7 +250,7 @@ impl<'de> de::Visitor<'de> for HexVisitor { mod tests { use super::*; - use crate::{assert_hash_works, from_json, to_json_vec}; + use crate::{assert_hash_works, CoreError}; #[test] fn from_hex_works() { @@ -268,21 +270,21 @@ mod tests { // odd match HexBinary::from_hex("123").unwrap_err() { - StdError::InvalidHex { msg, .. } => { + CoreError::InvalidHex { msg, .. } => { assert_eq!(msg, "Odd number of digits") } _ => panic!("Unexpected error type"), } // non-hex match HexBinary::from_hex("efgh").unwrap_err() { - StdError::InvalidHex { msg, .. } => { + CoreError::InvalidHex { msg, .. } => { assert_eq!(msg, "Invalid character 'g' at position 2") } _ => panic!("Unexpected error type"), } // 0x prefixed match HexBinary::from_hex("0xaa").unwrap_err() { - StdError::InvalidHex { msg, .. } => { + CoreError::InvalidHex { msg, .. } => { assert_eq!(msg, "Invalid character 'x' at position 1") } _ => panic!("Unexpected error type"), @@ -290,19 +292,19 @@ mod tests { // spaces assert!(matches!( HexBinary::from_hex("aa ").unwrap_err(), - StdError::InvalidHex { .. } + CoreError::InvalidHex { .. } )); assert!(matches!( HexBinary::from_hex(" aa").unwrap_err(), - StdError::InvalidHex { .. } + CoreError::InvalidHex { .. } )); assert!(matches!( HexBinary::from_hex("a a").unwrap_err(), - StdError::InvalidHex { .. } + CoreError::InvalidHex { .. } )); assert!(matches!( HexBinary::from_hex(" aa ").unwrap_err(), - StdError::InvalidHex { .. } + CoreError::InvalidHex { .. } )); } @@ -337,7 +339,7 @@ mod tests { let binary = HexBinary::from(&[1, 2, 3]); let error = binary.to_array::<8>().unwrap_err(); match error { - StdError::InvalidDataSize { + CoreError::InvalidDataSize { expected, actual, .. } => { assert_eq!(expected, 8); @@ -516,8 +518,8 @@ mod tests { fn serialization_works() { let binary = HexBinary(vec![0u8, 187, 61, 11, 250, 0]); - let json = to_json_vec(&binary).unwrap(); - let deserialized: HexBinary = from_json(json).unwrap(); + let json = serde_json::to_vec(&binary).unwrap(); + let deserialized: HexBinary = serde_json::from_slice(&json).unwrap(); assert_eq!(binary, deserialized); } @@ -528,16 +530,16 @@ mod tests { // this is the binary behind above string let expected = vec![0u8, 187, 61, 11, 250, 0]; - let serialized = to_json_vec(&hex).unwrap(); - let deserialized: HexBinary = from_json(serialized).unwrap(); + let serialized = serde_json::to_vec(&hex).unwrap(); + let deserialized: HexBinary = serde_json::from_slice(&serialized).unwrap(); assert_eq!(expected, deserialized.as_slice()); } #[test] fn deserialize_from_invalid_string() { let invalid_str = "**BAD!**"; - let serialized = to_json_vec(&invalid_str).unwrap(); - let res = from_json::(&serialized); + let serialized = serde_json::to_vec(&invalid_str).unwrap(); + let res = serde_json::from_slice::(&serialized); assert!(res.is_err()); } diff --git a/packages/core/src/lib.rs b/packages/core/src/lib.rs index 5af8387c67..faed6f21c0 100644 --- a/packages/core/src/lib.rs +++ b/packages/core/src/lib.rs @@ -1,3 +1,45 @@ //! cosmwasm-core contains components of cosmwasm-std that can be used in a no_std environment. //! All symbols are re-exported by cosmwasm-std, such that contract developers don't need to //! add this dependency directly. It is recommended to only use cosmwasm-std whenever possible. + +#![cfg_attr(not(feature = "std"), no_std)] + +#[macro_use] +extern crate alloc; + +#[cfg(test)] +extern crate std; // allow for file I/O during tests + +mod addresses; +mod binary; +mod encoding; +mod errors; +mod forward_ref; +mod hex_binary; +mod math; + +#[doc(hidden)] +pub mod __internal; + +use crate::__internal__forward_ref_partial_eq as forward_ref_partial_eq; + +pub use crate::addresses::{instantiate2_address, Addr, CanonicalAddr, Instantiate2AddressError}; +pub use crate::binary::Binary; +pub use crate::encoding::{from_base64, from_hex, to_base64, to_hex}; +pub use crate::errors::{ + CheckedFromRatioError, CheckedMultiplyFractionError, CheckedMultiplyRatioError, + CoinFromStrError, CoinsError, ConversionOverflowError, CoreError, CoreResult, + DivideByZeroError, DivisionError, OverflowError, OverflowOperation, RecoverPubkeyError, + RoundDownOverflowError, RoundUpOverflowError, SystemError, VerificationError, +}; +pub use crate::hex_binary::HexBinary; +pub use crate::math::{ + Decimal, Decimal256, Decimal256RangeExceeded, DecimalRangeExceeded, Fraction, Int128, Int256, + Int512, Int64, Isqrt, SignedDecimal, SignedDecimal256, SignedDecimal256RangeExceeded, + SignedDecimalRangeExceeded, Uint128, Uint256, Uint512, Uint64, +}; + +/// Exposed for testing only +/// Both unit tests and integration tests are compiled to native code, so everything in here does not need to compile to Wasm. +#[cfg(not(target_arch = "wasm32"))] +pub mod testing; diff --git a/packages/std/src/math/conversion.rs b/packages/core/src/math/conversion.rs similarity index 99% rename from packages/std/src/math/conversion.rs rename to packages/core/src/math/conversion.rs index c649dca7d7..8b31b84617 100644 --- a/packages/std/src/math/conversion.rs +++ b/packages/core/src/math/conversion.rs @@ -1,3 +1,6 @@ +#[cfg(test)] +use alloc::string::String; + /// Grows a big endian signed integer to a bigger size. /// See pub const fn grow_be_int( @@ -195,7 +198,7 @@ where + core::cmp::PartialEq + core::fmt::Debug, String: From, - >::Error: std::fmt::Debug, + >::Error: core::fmt::Debug, { if core::mem::size_of::() <= core::mem::size_of::() { // if the input type is smaller than the output type, then `I::MAX` should fit into `O` diff --git a/packages/std/src/math/decimal.rs b/packages/core/src/math/decimal.rs similarity index 95% rename from packages/std/src/math/decimal.rs rename to packages/core/src/math/decimal.rs index 9f1de8607a..831b956d80 100644 --- a/packages/std/src/math/decimal.rs +++ b/packages/core/src/math/decimal.rs @@ -1,17 +1,16 @@ +use alloc::string::ToString; use core::cmp::Ordering; use core::fmt::{self, Write}; use core::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Rem, RemAssign, Sub, SubAssign}; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; +use derive_more::Display; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use thiserror::Error; use crate::errors::{ - CheckedFromRatioError, CheckedMultiplyRatioError, DivideByZeroError, OverflowError, - OverflowOperation, RoundUpOverflowError, StdError, + CheckedFromRatioError, CheckedMultiplyRatioError, CoreError, DivideByZeroError, OverflowError, + OverflowOperation, RoundUpOverflowError, }; -use crate::prelude::*; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{forward_ref_partial_eq, Decimal256, SignedDecimal, SignedDecimal256}; use super::Fraction; @@ -21,13 +20,15 @@ use super::{Uint128, Uint256}; /// A fixed-point decimal value with 18 fractional digits, i.e. Decimal(1_000_000_000_000_000_000) == 1.0 /// /// The greatest possible value that can be represented is 340282366920938463463.374607431768211455 (which is (2^128 - 1) / 10^18) -#[derive(Copy, Clone, Default, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Decimal(#[schemars(with = "String")] Uint128); +#[derive(Copy, Clone, Default, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Decimal(#[cfg_attr(feature = "std", schemars(with = "String"))] Uint128); forward_ref_partial_eq!(Decimal, Decimal); -#[derive(Error, Debug, PartialEq, Eq)] -#[error("Decimal range exceeded")] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("Decimal range exceeded")] pub struct DecimalRangeExceeded; impl Decimal { @@ -537,7 +538,7 @@ impl TryFrom for Decimal { } impl FromStr for Decimal { - type Err = StdError; + type Err = CoreError; /// Converts the decimal string to a Decimal /// Possible inputs: "1.23", "1", "000012", "1.123000000" @@ -551,18 +552,18 @@ impl FromStr for Decimal { let whole_part = parts_iter.next().unwrap(); // split always returns at least one element let whole = whole_part .parse::() - .map_err(|_| StdError::generic_err("Error parsing whole"))?; + .map_err(|_| CoreError::generic_err("Error parsing whole"))?; let mut atomics = whole .checked_mul(Self::DECIMAL_FRACTIONAL) - .map_err(|_| StdError::generic_err("Value too big"))?; + .map_err(|_| CoreError::generic_err("Value too big"))?; if let Some(fractional_part) = parts_iter.next() { let fractional = fractional_part .parse::() - .map_err(|_| StdError::generic_err("Error parsing fractional"))?; + .map_err(|_| CoreError::generic_err("Error parsing fractional"))?; let exp = (Self::DECIMAL_PLACES.checked_sub(fractional_part.len() as u32)).ok_or_else( || { - StdError::generic_err(format!( + CoreError::generic_err(format!( "Cannot parse more than {} fractional digits", Self::DECIMAL_PLACES )) @@ -576,11 +577,11 @@ impl FromStr for Decimal { // fractional < 10^DECIMAL_PLACES && fractional_factor <= 10^DECIMAL_PLACES fractional.checked_mul(fractional_factor).unwrap(), ) - .map_err(|_| StdError::generic_err("Value too big"))?; + .map_err(|_| CoreError::generic_err("Value too big"))?; } if parts_iter.next().is_some() { - return Err(StdError::generic_err("Unexpected number of dots")); + return Err(CoreError::generic_err("Unexpected number of dots")); } Ok(Decimal(atomics)) @@ -775,7 +776,7 @@ impl<'de> de::Visitor<'de> for DecimalVisitor { { match Decimal::from_str(v) { Ok(d) => Ok(d), - Err(e) => Err(E::custom(format!("Error parsing decimal '{v}': {e}"))), + Err(e) => Err(E::custom(format_args!("Error parsing decimal '{v}': {e}"))), } } } @@ -783,7 +784,8 @@ impl<'de> de::Visitor<'de> for DecimalVisitor { #[cfg(test)] mod tests { use super::*; - use crate::{from_json, to_json_vec}; + + use alloc::vec::Vec; fn dec(input: &str) -> Decimal { Decimal::from_str(input).unwrap() @@ -1090,17 +1092,17 @@ mod tests { #[test] fn decimal_from_str_errors_for_broken_whole_part() { match Decimal::from_str("").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), e => panic!("Unexpected error: {e:?}"), } match Decimal::from_str(" ").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), e => panic!("Unexpected error: {e:?}"), } match Decimal::from_str("-1").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), e => panic!("Unexpected error: {e:?}"), } } @@ -1108,22 +1110,22 @@ mod tests { #[test] fn decimal_from_str_errors_for_broken_fractional_part() { match Decimal::from_str("1.").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), e => panic!("Unexpected error: {e:?}"), } match Decimal::from_str("1. ").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), e => panic!("Unexpected error: {e:?}"), } match Decimal::from_str("1.e").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), e => panic!("Unexpected error: {e:?}"), } match Decimal::from_str("1.2e3").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), e => panic!("Unexpected error: {e:?}"), } } @@ -1131,7 +1133,7 @@ mod tests { #[test] fn decimal_from_str_errors_for_more_than_18_fractional_digits() { match Decimal::from_str("7.1234567890123456789").unwrap_err() { - StdError::GenericErr { msg, .. } => { + CoreError::GenericErr { msg, .. } => { assert_eq!(msg, "Cannot parse more than 18 fractional digits",) } e => panic!("Unexpected error: {e:?}"), @@ -1139,7 +1141,7 @@ mod tests { // No special rules for trailing zeros. This could be changed but adds gas cost for the happy path. match Decimal::from_str("7.1230000000000000000").unwrap_err() { - StdError::GenericErr { msg, .. } => { + CoreError::GenericErr { msg, .. } => { assert_eq!(msg, "Cannot parse more than 18 fractional digits") } e => panic!("Unexpected error: {e:?}"), @@ -1149,12 +1151,12 @@ mod tests { #[test] fn decimal_from_str_errors_for_invalid_number_of_dots() { match Decimal::from_str("1.2.3").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Unexpected number of dots"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Unexpected number of dots"), e => panic!("Unexpected error: {e:?}"), } match Decimal::from_str("1.2.3.4").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Unexpected number of dots"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Unexpected number of dots"), e => panic!("Unexpected error: {e:?}"), } } @@ -1163,17 +1165,17 @@ mod tests { fn decimal_from_str_errors_for_more_than_max_value() { // Integer match Decimal::from_str("340282366920938463464").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), e => panic!("Unexpected error: {e:?}"), } // Decimal match Decimal::from_str("340282366920938463464.0").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), e => panic!("Unexpected error: {e:?}"), } match Decimal::from_str("340282366920938463463.374607431768211456").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), e => panic!("Unexpected error: {e:?}"), } } @@ -1899,35 +1901,59 @@ mod tests { #[test] fn decimal_serialize() { - assert_eq!(to_json_vec(&Decimal::zero()).unwrap(), br#""0""#); - assert_eq!(to_json_vec(&Decimal::one()).unwrap(), br#""1""#); - assert_eq!(to_json_vec(&Decimal::percent(8)).unwrap(), br#""0.08""#); - assert_eq!(to_json_vec(&Decimal::percent(87)).unwrap(), br#""0.87""#); - assert_eq!(to_json_vec(&Decimal::percent(876)).unwrap(), br#""8.76""#); - assert_eq!(to_json_vec(&Decimal::percent(8765)).unwrap(), br#""87.65""#); + assert_eq!(serde_json::to_vec(&Decimal::zero()).unwrap(), br#""0""#); + assert_eq!(serde_json::to_vec(&Decimal::one()).unwrap(), br#""1""#); + assert_eq!( + serde_json::to_vec(&Decimal::percent(8)).unwrap(), + br#""0.08""# + ); + assert_eq!( + serde_json::to_vec(&Decimal::percent(87)).unwrap(), + br#""0.87""# + ); + assert_eq!( + serde_json::to_vec(&Decimal::percent(876)).unwrap(), + br#""8.76""# + ); + assert_eq!( + serde_json::to_vec(&Decimal::percent(8765)).unwrap(), + br#""87.65""# + ); } #[test] fn decimal_deserialize() { - assert_eq!(from_json::(br#""0""#).unwrap(), Decimal::zero()); - assert_eq!(from_json::(br#""1""#).unwrap(), Decimal::one()); - assert_eq!(from_json::(br#""000""#).unwrap(), Decimal::zero()); - assert_eq!(from_json::(br#""001""#).unwrap(), Decimal::one()); + assert_eq!( + serde_json::from_slice::(br#""0""#).unwrap(), + Decimal::zero() + ); + assert_eq!( + serde_json::from_slice::(br#""1""#).unwrap(), + Decimal::one() + ); + assert_eq!( + serde_json::from_slice::(br#""000""#).unwrap(), + Decimal::zero() + ); + assert_eq!( + serde_json::from_slice::(br#""001""#).unwrap(), + Decimal::one() + ); assert_eq!( - from_json::(br#""0.08""#).unwrap(), + serde_json::from_slice::(br#""0.08""#).unwrap(), Decimal::percent(8) ); assert_eq!( - from_json::(br#""0.87""#).unwrap(), + serde_json::from_slice::(br#""0.87""#).unwrap(), Decimal::percent(87) ); assert_eq!( - from_json::(br#""8.76""#).unwrap(), + serde_json::from_slice::(br#""8.76""#).unwrap(), Decimal::percent(876) ); assert_eq!( - from_json::(br#""87.65""#).unwrap(), + serde_json::from_slice::(br#""87.65""#).unwrap(), Decimal::percent(8765) ); } diff --git a/packages/std/src/math/decimal256.rs b/packages/core/src/math/decimal256.rs similarity index 95% rename from packages/std/src/math/decimal256.rs rename to packages/core/src/math/decimal256.rs index 1fb73b31b7..5cdaf4863e 100644 --- a/packages/std/src/math/decimal256.rs +++ b/packages/core/src/math/decimal256.rs @@ -1,17 +1,16 @@ +use alloc::string::ToString; use core::cmp::Ordering; use core::fmt::{self, Write}; use core::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Rem, RemAssign, Sub, SubAssign}; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; +use derive_more::Display; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use thiserror::Error; use crate::errors::{ - CheckedFromRatioError, CheckedMultiplyRatioError, DivideByZeroError, OverflowError, - OverflowOperation, RoundUpOverflowError, StdError, + CheckedFromRatioError, CheckedMultiplyRatioError, CoreError, DivideByZeroError, OverflowError, + OverflowOperation, RoundUpOverflowError, }; -use crate::prelude::*; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{forward_ref_partial_eq, Decimal, SignedDecimal, SignedDecimal256, Uint512}; use super::Fraction; @@ -23,13 +22,15 @@ use super::Uint256; /// The greatest possible value that can be represented is /// 115792089237316195423570985008687907853269984665640564039457.584007913129639935 /// (which is (2^256 - 1) / 10^18) -#[derive(Copy, Clone, Default, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Decimal256(#[schemars(with = "String")] Uint256); +#[derive(Copy, Clone, Default, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Decimal256(#[cfg_attr(feature = "std", schemars(with = "String"))] Uint256); forward_ref_partial_eq!(Decimal256, Decimal256); -#[derive(Error, Debug, PartialEq, Eq)] -#[error("Decimal256 range exceeded")] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("Decimal256 range exceeded")] pub struct Decimal256RangeExceeded; impl Decimal256 { @@ -536,17 +537,8 @@ impl TryFrom for Decimal256 { } } -impl TryFrom for Decimal256 { - type Error = Decimal256RangeExceeded; - - #[inline] - fn try_from(value: Uint256) -> Result { - Self::from_atomics(value, 0) - } -} - impl FromStr for Decimal256 { - type Err = StdError; + type Err = CoreError; /// Converts the decimal string to a Decimal256 /// Possible inputs: "1.23", "1", "000012", "1.123000000" @@ -560,18 +552,18 @@ impl FromStr for Decimal256 { let whole_part = parts_iter.next().unwrap(); // split always returns at least one element let whole = whole_part .parse::() - .map_err(|_| StdError::generic_err("Error parsing whole"))?; + .map_err(|_| CoreError::generic_err("Error parsing whole"))?; let mut atomics = whole .checked_mul(Self::DECIMAL_FRACTIONAL) - .map_err(|_| StdError::generic_err("Value too big"))?; + .map_err(|_| CoreError::generic_err("Value too big"))?; if let Some(fractional_part) = parts_iter.next() { let fractional = fractional_part .parse::() - .map_err(|_| StdError::generic_err("Error parsing fractional"))?; + .map_err(|_| CoreError::generic_err("Error parsing fractional"))?; let exp = (Self::DECIMAL_PLACES.checked_sub(fractional_part.len() as u32)).ok_or_else( || { - StdError::generic_err(format!( + CoreError::generic_err(format!( "Cannot parse more than {} fractional digits", Self::DECIMAL_PLACES )) @@ -585,11 +577,11 @@ impl FromStr for Decimal256 { // fractional < 10^DECIMAL_PLACES && fractional_factor <= 10^DECIMAL_PLACES fractional.checked_mul(fractional_factor).unwrap(), ) - .map_err(|_| StdError::generic_err("Value too big"))?; + .map_err(|_| CoreError::generic_err("Value too big"))?; } if parts_iter.next().is_some() { - return Err(StdError::generic_err("Unexpected number of dots")); + return Err(CoreError::generic_err("Unexpected number of dots")); } Ok(Self(atomics)) @@ -784,7 +776,7 @@ impl<'de> de::Visitor<'de> for Decimal256Visitor { { match Self::Value::from_str(v) { Ok(d) => Ok(d), - Err(e) => Err(E::custom(format!("Error parsing decimal '{v}': {e}"))), + Err(e) => Err(E::custom(format_args!("Error parsing decimal '{v}': {e}"))), } } } @@ -792,19 +784,14 @@ impl<'de> de::Visitor<'de> for Decimal256Visitor { #[cfg(test)] mod tests { use super::*; - use crate::{from_json, to_json_vec}; + use crate::errors::CoreError; + + use alloc::vec::Vec; fn dec(input: &str) -> Decimal256 { Decimal256::from_str(input).unwrap() } - #[test] - fn decimal256_try_from_integer() { - let int = Uint256::from_u128(0xDEADBEEF); - let decimal = Decimal256::try_from(int).unwrap(); - assert_eq!(int.to_string(), decimal.to_string()); - } - #[test] fn decimal256_new() { let expected = Uint256::from(300u128); @@ -1131,17 +1118,17 @@ mod tests { #[test] fn decimal256_from_str_errors_for_broken_whole_part() { match Decimal256::from_str("").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), e => panic!("Unexpected error: {e:?}"), } match Decimal256::from_str(" ").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), e => panic!("Unexpected error: {e:?}"), } match Decimal256::from_str("-1").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing whole"), e => panic!("Unexpected error: {e:?}"), } } @@ -1149,22 +1136,22 @@ mod tests { #[test] fn decimal256_from_str_errors_for_broken_fractional_part() { match Decimal256::from_str("1.").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), e => panic!("Unexpected error: {e:?}"), } match Decimal256::from_str("1. ").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), e => panic!("Unexpected error: {e:?}"), } match Decimal256::from_str("1.e").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), e => panic!("Unexpected error: {e:?}"), } match Decimal256::from_str("1.2e3").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Error parsing fractional"), e => panic!("Unexpected error: {e:?}"), } } @@ -1172,7 +1159,7 @@ mod tests { #[test] fn decimal256_from_str_errors_for_more_than_36_fractional_digits() { match Decimal256::from_str("7.1234567890123456789").unwrap_err() { - StdError::GenericErr { msg, .. } => { + CoreError::GenericErr { msg, .. } => { assert_eq!(msg, "Cannot parse more than 18 fractional digits") } e => panic!("Unexpected error: {e:?}"), @@ -1180,7 +1167,7 @@ mod tests { // No special rules for trailing zeros. This could be changed but adds gas cost for the happy path. match Decimal256::from_str("7.1230000000000000000").unwrap_err() { - StdError::GenericErr { msg, .. } => { + CoreError::GenericErr { msg, .. } => { assert_eq!(msg, "Cannot parse more than 18 fractional digits") } e => panic!("Unexpected error: {e:?}"), @@ -1190,12 +1177,12 @@ mod tests { #[test] fn decimal256_from_str_errors_for_invalid_number_of_dots() { match Decimal256::from_str("1.2.3").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Unexpected number of dots"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Unexpected number of dots"), e => panic!("Unexpected error: {e:?}"), } match Decimal256::from_str("1.2.3.4").unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Unexpected number of dots"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Unexpected number of dots"), e => panic!("Unexpected error: {e:?}"), } } @@ -1206,7 +1193,7 @@ mod tests { match Decimal256::from_str("115792089237316195423570985008687907853269984665640564039458") .unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), e => panic!("Unexpected error: {e:?}"), } @@ -1214,7 +1201,7 @@ mod tests { match Decimal256::from_str("115792089237316195423570985008687907853269984665640564039458.0") .unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), e => panic!("Unexpected error: {e:?}"), } match Decimal256::from_str( @@ -1222,7 +1209,7 @@ mod tests { ) .unwrap_err() { - StdError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), + CoreError::GenericErr { msg, .. } => assert_eq!(msg, "Value too big"), e => panic!("Unexpected error: {e:?}"), } } @@ -1976,16 +1963,22 @@ mod tests { #[test] fn decimal256_serialize() { - assert_eq!(to_json_vec(&Decimal256::zero()).unwrap(), br#""0""#); - assert_eq!(to_json_vec(&Decimal256::one()).unwrap(), br#""1""#); - assert_eq!(to_json_vec(&Decimal256::percent(8)).unwrap(), br#""0.08""#); - assert_eq!(to_json_vec(&Decimal256::percent(87)).unwrap(), br#""0.87""#); + assert_eq!(serde_json::to_vec(&Decimal256::zero()).unwrap(), br#""0""#); + assert_eq!(serde_json::to_vec(&Decimal256::one()).unwrap(), br#""1""#); + assert_eq!( + serde_json::to_vec(&Decimal256::percent(8)).unwrap(), + br#""0.08""# + ); + assert_eq!( + serde_json::to_vec(&Decimal256::percent(87)).unwrap(), + br#""0.87""# + ); assert_eq!( - to_json_vec(&Decimal256::percent(876)).unwrap(), + serde_json::to_vec(&Decimal256::percent(876)).unwrap(), br#""8.76""# ); assert_eq!( - to_json_vec(&Decimal256::percent(8765)).unwrap(), + serde_json::to_vec(&Decimal256::percent(8765)).unwrap(), br#""87.65""# ); } @@ -1993,36 +1986,36 @@ mod tests { #[test] fn decimal256_deserialize() { assert_eq!( - from_json::(br#""0""#).unwrap(), + serde_json::from_slice::(br#""0""#).unwrap(), Decimal256::zero() ); assert_eq!( - from_json::(br#""1""#).unwrap(), + serde_json::from_slice::(br#""1""#).unwrap(), Decimal256::one() ); assert_eq!( - from_json::(br#""000""#).unwrap(), + serde_json::from_slice::(br#""000""#).unwrap(), Decimal256::zero() ); assert_eq!( - from_json::(br#""001""#).unwrap(), + serde_json::from_slice::(br#""001""#).unwrap(), Decimal256::one() ); assert_eq!( - from_json::(br#""0.08""#).unwrap(), + serde_json::from_slice::(br#""0.08""#).unwrap(), Decimal256::percent(8) ); assert_eq!( - from_json::(br#""0.87""#).unwrap(), + serde_json::from_slice::(br#""0.87""#).unwrap(), Decimal256::percent(87) ); assert_eq!( - from_json::(br#""8.76""#).unwrap(), + serde_json::from_slice::(br#""8.76""#).unwrap(), Decimal256::percent(876) ); assert_eq!( - from_json::(br#""87.65""#).unwrap(), + serde_json::from_slice::(br#""87.65""#).unwrap(), Decimal256::percent(8765) ); } diff --git a/packages/std/src/math/fraction.rs b/packages/core/src/math/fraction.rs similarity index 100% rename from packages/std/src/math/fraction.rs rename to packages/core/src/math/fraction.rs diff --git a/packages/std/src/math/int128.rs b/packages/core/src/math/int128.rs similarity index 97% rename from packages/std/src/math/int128.rs rename to packages/core/src/math/int128.rs index aa86525b8e..6eae7422e0 100644 --- a/packages/std/src/math/int128.rs +++ b/packages/core/src/math/int128.rs @@ -1,15 +1,16 @@ +use alloc::string::{String, ToString}; use core::fmt; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Not, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use crate::errors::{DivideByZeroError, DivisionError, OverflowError, OverflowOperation, StdError}; -use crate::prelude::*; +use crate::errors::{ + CoreError, DivideByZeroError, DivisionError, OverflowError, OverflowOperation, +}; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{ forward_ref_partial_eq, CheckedMultiplyRatioError, Int256, Int512, Int64, Uint128, Uint256, Uint512, Uint64, @@ -31,8 +32,9 @@ use super::num_consts::NumConsts; /// let a = Int128::from(258i128); /// assert_eq!(a.i128(), 258); /// ``` -#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Int128(#[schemars(with = "String")] pub(crate) i128); +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Int128(#[cfg_attr(feature = "std", schemars(with = "String"))] pub(crate) i128); forward_ref_partial_eq!(Int128, Int128); @@ -356,7 +358,7 @@ impl From for Int128 { } impl TryFrom<&str> for Int128 { - type Error = StdError; + type Error = CoreError; fn try_from(val: &str) -> Result { Self::from_str(val) @@ -364,12 +366,12 @@ impl TryFrom<&str> for Int128 { } impl FromStr for Int128 { - type Err = StdError; + type Err = CoreError; fn from_str(s: &str) -> Result { match s.parse::() { Ok(u) => Ok(Self(u)), - Err(e) => Err(StdError::generic_err(format!("Parsing Int128: {e}"))), + Err(e) => Err(CoreError::generic_err(format!("Parsing Int128: {e}"))), } } } @@ -555,7 +557,7 @@ impl<'de> de::Visitor<'de> for Int128Visitor { where E: de::Error, { - Int128::try_from(v).map_err(|e| E::custom(format!("invalid Int128 '{v}' - {e}"))) + Int128::try_from(v).map_err(|e| E::custom(format_args!("invalid Int128 '{v}' - {e}"))) } } @@ -571,7 +573,7 @@ where #[cfg(test)] mod tests { use super::*; - use crate::{from_json, math::conversion::test_try_from_uint_to_int, to_json_vec}; + use crate::math::conversion::test_try_from_uint_to_int; #[test] fn size_of_works() { @@ -823,9 +825,9 @@ mod tests { #[test] fn int128_json() { let orig = Int128::from(1234567890987654321i128); - let serialized = to_json_vec(&orig).unwrap(); + let serialized = serde_json::to_vec(&orig).unwrap(); assert_eq!(serialized.as_slice(), b"\"1234567890987654321\""); - let parsed: Int128 = from_json(serialized).unwrap(); + let parsed: Int128 = serde_json::from_slice(&serialized).unwrap(); assert_eq!(parsed, orig); } diff --git a/packages/std/src/math/int256.rs b/packages/core/src/math/int256.rs similarity index 98% rename from packages/std/src/math/int256.rs rename to packages/core/src/math/int256.rs index 64e5771f07..7c2f0e5a9b 100644 --- a/packages/std/src/math/int256.rs +++ b/packages/core/src/math/int256.rs @@ -1,15 +1,16 @@ +use alloc::string::{String, ToString}; use core::fmt; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Not, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use crate::errors::{DivideByZeroError, DivisionError, OverflowError, OverflowOperation, StdError}; -use crate::prelude::*; +use crate::errors::{ + CoreError, DivideByZeroError, DivisionError, OverflowError, OverflowOperation, +}; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{ forward_ref_partial_eq, CheckedMultiplyRatioError, Int128, Int512, Int64, Uint128, Uint256, Uint512, Uint64, @@ -42,8 +43,9 @@ use super::num_consts::NumConsts; /// ]); /// assert_eq!(a, b); /// ``` -#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Int256(#[schemars(with = "String")] pub(crate) I256); +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Int256(#[cfg_attr(feature = "std", schemars(with = "String"))] pub(crate) I256); forward_ref_partial_eq!(Int256, Int256); @@ -431,7 +433,7 @@ impl From for Int256 { } impl TryFrom<&str> for Int256 { - type Error = StdError; + type Error = CoreError; fn try_from(val: &str) -> Result { Self::from_str(val) @@ -439,12 +441,12 @@ impl TryFrom<&str> for Int256 { } impl FromStr for Int256 { - type Err = StdError; + type Err = CoreError; fn from_str(s: &str) -> Result { match I256::from_str_radix(s, 10) { Ok(u) => Ok(Self(u)), - Err(e) => Err(StdError::generic_err(format!("Parsing Int256: {e}"))), + Err(e) => Err(CoreError::generic_err(format!("Parsing Int256: {e}"))), } } } @@ -630,7 +632,7 @@ impl<'de> de::Visitor<'de> for Int256Visitor { where E: de::Error, { - Int256::try_from(v).map_err(|e| E::custom(format!("invalid Int256 '{v}' - {e}"))) + Int256::try_from(v).map_err(|e| E::custom(format_args!("invalid Int256 '{v}' - {e}"))) } } @@ -646,7 +648,7 @@ where #[cfg(test)] mod tests { use super::*; - use crate::{from_json, math::conversion::test_try_from_uint_to_int, to_json_vec}; + use crate::math::conversion::test_try_from_uint_to_int; #[test] fn size_of_works() { @@ -930,9 +932,9 @@ mod tests { #[test] fn int256_json() { let orig = Int256::from(1234567890987654321u128); - let serialized = to_json_vec(&orig).unwrap(); + let serialized = serde_json::to_vec(&orig).unwrap(); assert_eq!(serialized.as_slice(), b"\"1234567890987654321\""); - let parsed: Int256 = from_json(serialized).unwrap(); + let parsed: Int256 = serde_json::from_slice(&serialized).unwrap(); assert_eq!(parsed, orig); } diff --git a/packages/std/src/math/int512.rs b/packages/core/src/math/int512.rs similarity index 98% rename from packages/std/src/math/int512.rs rename to packages/core/src/math/int512.rs index 32499b657c..ebf72bdf6a 100644 --- a/packages/std/src/math/int512.rs +++ b/packages/core/src/math/int512.rs @@ -1,15 +1,16 @@ +use alloc::string::{String, ToString}; use core::fmt; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Not, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use crate::errors::{DivideByZeroError, DivisionError, OverflowError, OverflowOperation, StdError}; -use crate::prelude::*; +use crate::errors::{ + CoreError, DivideByZeroError, DivisionError, OverflowError, OverflowOperation, +}; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{forward_ref_partial_eq, Int128, Int256, Int64, Uint128, Uint256, Uint512, Uint64}; /// Used internally - we don't want to leak this type since we might change @@ -43,8 +44,9 @@ use super::num_consts::NumConsts; /// ]); /// assert_eq!(a, b); /// ``` -#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Int512(#[schemars(with = "String")] pub(crate) I512); +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Int512(#[cfg_attr(feature = "std", schemars(with = "String"))] pub(crate) I512); forward_ref_partial_eq!(Int512, Int512); @@ -428,7 +430,7 @@ impl From for Int512 { } impl TryFrom<&str> for Int512 { - type Error = StdError; + type Error = CoreError; fn try_from(val: &str) -> Result { Self::from_str(val) @@ -436,12 +438,12 @@ impl TryFrom<&str> for Int512 { } impl FromStr for Int512 { - type Err = StdError; + type Err = CoreError; fn from_str(s: &str) -> Result { match I512::from_str_radix(s, 10) { Ok(u) => Ok(Self(u)), - Err(e) => Err(StdError::generic_err(format!("Parsing Int512: {e}"))), + Err(e) => Err(CoreError::generic_err(format!("Parsing Int512: {e}"))), } } } @@ -643,7 +645,7 @@ where #[cfg(test)] mod tests { use super::*; - use crate::{from_json, math::conversion::test_try_from_uint_to_int, to_json_vec}; + use crate::math::conversion::test_try_from_uint_to_int; #[test] fn size_of_works() { @@ -958,9 +960,9 @@ mod tests { #[test] fn int512_json() { let orig = Int512::from(1234567890987654321u128); - let serialized = to_json_vec(&orig).unwrap(); + let serialized = serde_json::to_vec(&orig).unwrap(); assert_eq!(serialized.as_slice(), b"\"1234567890987654321\""); - let parsed: Int512 = from_json(serialized).unwrap(); + let parsed: Int512 = serde_json::from_slice(&serialized).unwrap(); assert_eq!(parsed, orig); } diff --git a/packages/std/src/math/int64.rs b/packages/core/src/math/int64.rs similarity index 97% rename from packages/std/src/math/int64.rs rename to packages/core/src/math/int64.rs index de88022811..20d956e4ef 100644 --- a/packages/std/src/math/int64.rs +++ b/packages/core/src/math/int64.rs @@ -1,15 +1,16 @@ +use alloc::string::{String, ToString}; use core::fmt; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Not, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use crate::errors::{DivideByZeroError, DivisionError, OverflowError, OverflowOperation, StdError}; -use crate::prelude::*; +use crate::errors::{ + CoreError, DivideByZeroError, DivisionError, OverflowError, OverflowOperation, +}; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{ forward_ref_partial_eq, CheckedMultiplyRatioError, Int128, Int256, Int512, Uint128, Uint256, Uint512, Uint64, @@ -31,8 +32,9 @@ use super::num_consts::NumConsts; /// let a = Int64::from(258i64); /// assert_eq!(a.i64(), 258); /// ``` -#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Int64(#[schemars(with = "String")] pub(crate) i64); +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Int64(#[cfg_attr(feature = "std", schemars(with = "String"))] pub(crate) i64); forward_ref_partial_eq!(Int64, Int64); @@ -335,7 +337,7 @@ forward_try_from!(Uint256, Int64); forward_try_from!(Uint512, Int64); impl TryFrom<&str> for Int64 { - type Error = StdError; + type Error = CoreError; fn try_from(val: &str) -> Result { Self::from_str(val) @@ -343,12 +345,12 @@ impl TryFrom<&str> for Int64 { } impl FromStr for Int64 { - type Err = StdError; + type Err = CoreError; fn from_str(s: &str) -> Result { match s.parse::() { Ok(u) => Ok(Self(u)), - Err(e) => Err(StdError::generic_err(format!("Parsing Int64: {e}"))), + Err(e) => Err(CoreError::generic_err(format!("Parsing Int64: {e}"))), } } } @@ -534,7 +536,7 @@ impl<'de> de::Visitor<'de> for Int64Visitor { where E: de::Error, { - Int64::try_from(v).map_err(|e| E::custom(format!("invalid Int64 '{v}' - {e}"))) + Int64::try_from(v).map_err(|e| E::custom(format_args!("invalid Int64 '{v}' - {e}"))) } } @@ -550,7 +552,7 @@ where #[cfg(test)] mod tests { use super::*; - use crate::{from_json, math::conversion::test_try_from_uint_to_int, to_json_vec}; + use crate::math::conversion::test_try_from_uint_to_int; #[test] fn size_of_works() { @@ -795,9 +797,9 @@ mod tests { #[test] fn int64_json() { let orig = Int64::from(1234567890987654321i64); - let serialized = to_json_vec(&orig).unwrap(); + let serialized = serde_json::to_vec(&orig).unwrap(); assert_eq!(serialized.as_slice(), b"\"1234567890987654321\""); - let parsed: Int64 = from_json(serialized).unwrap(); + let parsed: Int64 = serde_json::from_slice(&serialized).unwrap(); assert_eq!(parsed, orig); } diff --git a/packages/std/src/math/isqrt.rs b/packages/core/src/math/isqrt.rs similarity index 100% rename from packages/std/src/math/isqrt.rs rename to packages/core/src/math/isqrt.rs diff --git a/packages/std/src/math/mod.rs b/packages/core/src/math/mod.rs similarity index 100% rename from packages/std/src/math/mod.rs rename to packages/core/src/math/mod.rs diff --git a/packages/std/src/math/num_consts.rs b/packages/core/src/math/num_consts.rs similarity index 100% rename from packages/std/src/math/num_consts.rs rename to packages/core/src/math/num_consts.rs diff --git a/packages/std/src/math/signed_decimal.rs b/packages/core/src/math/signed_decimal.rs similarity index 96% rename from packages/std/src/math/signed_decimal.rs rename to packages/core/src/math/signed_decimal.rs index 6dea96717d..bffd426bc3 100644 --- a/packages/std/src/math/signed_decimal.rs +++ b/packages/core/src/math/signed_decimal.rs @@ -1,19 +1,18 @@ +use alloc::string::ToString; use core::cmp::Ordering; use core::fmt::{self, Write}; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Rem, RemAssign, Sub, SubAssign, }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; +use derive_more::Display; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use thiserror::Error; use crate::errors::{ - CheckedFromRatioError, CheckedMultiplyRatioError, DivideByZeroError, OverflowError, - OverflowOperation, RoundDownOverflowError, RoundUpOverflowError, StdError, + CheckedFromRatioError, CheckedMultiplyRatioError, CoreError, DivideByZeroError, OverflowError, + OverflowOperation, RoundDownOverflowError, RoundUpOverflowError, }; -use crate::prelude::*; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{forward_ref_partial_eq, Decimal, Decimal256, Int256, SignedDecimal256}; use super::Fraction; @@ -23,13 +22,15 @@ use super::Int128; /// /// The greatest possible value that can be represented is 170141183460469231731.687303715884105727 (which is (2^127 - 1) / 10^18) /// and the smallest is -170141183460469231731.687303715884105728 (which is -2^127 / 10^18). -#[derive(Copy, Clone, Default, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct SignedDecimal(#[schemars(with = "String")] Int128); +#[derive(Copy, Clone, Default, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct SignedDecimal(#[cfg_attr(feature = "std", schemars(with = "String"))] Int128); forward_ref_partial_eq!(SignedDecimal, SignedDecimal); -#[derive(Error, Debug, PartialEq, Eq)] -#[error("SignedDecimal range exceeded")] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("SignedDecimal range exceeded")] pub struct SignedDecimalRangeExceeded; impl SignedDecimal { @@ -648,7 +649,7 @@ impl TryFrom for SignedDecimal { } impl FromStr for SignedDecimal { - type Err = StdError; + type Err = CoreError; /// Converts the decimal string to a SignedDecimal /// Possible inputs: "1.23", "1", "000012", "1.123000000", "-1.12300" @@ -664,18 +665,18 @@ impl FromStr for SignedDecimal { let whole = whole_part .parse::() - .map_err(|_| StdError::generic_err("Error parsing whole"))?; + .map_err(|_| CoreError::generic_err("Error parsing whole"))?; let mut atomics = whole .checked_mul(Self::DECIMAL_FRACTIONAL) - .map_err(|_| StdError::generic_err("Value too big"))?; + .map_err(|_| CoreError::generic_err("Value too big"))?; if let Some(fractional_part) = parts_iter.next() { let fractional = fractional_part .parse::() // u64 is enough for 18 decimal places - .map_err(|_| StdError::generic_err("Error parsing fractional"))?; + .map_err(|_| CoreError::generic_err("Error parsing fractional"))?; let exp = (Self::DECIMAL_PLACES.checked_sub(fractional_part.len() as u32)).ok_or_else( || { - StdError::generic_err(format!( + CoreError::generic_err(format!( "Cannot parse more than {} fractional digits", Self::DECIMAL_PLACES )) @@ -696,11 +697,11 @@ impl FromStr for SignedDecimal { } else { atomics.checked_add(fractional_part) } - .map_err(|_| StdError::generic_err("Value too big"))?; + .map_err(|_| CoreError::generic_err("Value too big"))?; } if parts_iter.next().is_some() { - return Err(StdError::generic_err("Unexpected number of dots")); + return Err(CoreError::generic_err("Unexpected number of dots")); } Ok(SignedDecimal(atomics)) @@ -900,7 +901,7 @@ impl<'de> de::Visitor<'de> for SignedDecimalVisitor { { match SignedDecimal::from_str(v) { Ok(d) => Ok(d), - Err(e) => Err(E::custom(format!("Error parsing decimal '{v}': {e}"))), + Err(e) => Err(E::custom(format_args!("Error parsing decimal '{v}': {e}"))), } } } @@ -908,8 +909,8 @@ impl<'de> de::Visitor<'de> for SignedDecimalVisitor { #[cfg(test)] mod tests { use super::*; - use crate::{from_json, to_json_vec}; - use schemars::schema_for; + + use alloc::vec::Vec; fn dec(input: &str) -> SignedDecimal { SignedDecimal::from_str(input).unwrap() @@ -1357,7 +1358,7 @@ mod tests { #[test] fn signed_decimal_from_str_errors_for_broken_whole_part() { - let expected_err = StdError::generic_err("Error parsing whole"); + let expected_err = CoreError::generic_err("Error parsing whole"); assert_eq!(SignedDecimal::from_str("").unwrap_err(), expected_err); assert_eq!(SignedDecimal::from_str(" ").unwrap_err(), expected_err); assert_eq!(SignedDecimal::from_str("-").unwrap_err(), expected_err); @@ -1365,7 +1366,7 @@ mod tests { #[test] fn signed_decimal_from_str_errors_for_broken_fractional_part() { - let expected_err = StdError::generic_err("Error parsing fractional"); + let expected_err = CoreError::generic_err("Error parsing fractional"); assert_eq!(SignedDecimal::from_str("1.").unwrap_err(), expected_err); assert_eq!(SignedDecimal::from_str("1. ").unwrap_err(), expected_err); assert_eq!(SignedDecimal::from_str("1.e").unwrap_err(), expected_err); @@ -1375,7 +1376,7 @@ mod tests { #[test] fn signed_decimal_from_str_errors_for_more_than_18_fractional_digits() { - let expected_err = StdError::generic_err("Cannot parse more than 18 fractional digits"); + let expected_err = CoreError::generic_err("Cannot parse more than 18 fractional digits"); assert_eq!( SignedDecimal::from_str("7.1234567890123456789").unwrap_err(), expected_err @@ -1389,7 +1390,7 @@ mod tests { #[test] fn signed_decimal_from_str_errors_for_invalid_number_of_dots() { - let expected_err = StdError::generic_err("Unexpected number of dots"); + let expected_err = CoreError::generic_err("Unexpected number of dots"); assert_eq!(SignedDecimal::from_str("1.2.3").unwrap_err(), expected_err); assert_eq!( SignedDecimal::from_str("1.2.3.4").unwrap_err(), @@ -1399,7 +1400,7 @@ mod tests { #[test] fn signed_decimal_from_str_errors_for_more_than_max_value() { - let expected_err = StdError::generic_err("Value too big"); + let expected_err = CoreError::generic_err("Value too big"); // Integer assert_eq!( SignedDecimal::from_str("170141183460469231732").unwrap_err(), @@ -2439,34 +2440,40 @@ mod tests { #[test] fn signed_decimal_serialize() { - assert_eq!(to_json_vec(&SignedDecimal::zero()).unwrap(), br#""0""#); - assert_eq!(to_json_vec(&SignedDecimal::one()).unwrap(), br#""1""#); assert_eq!( - to_json_vec(&SignedDecimal::percent(8)).unwrap(), + serde_json::to_vec(&SignedDecimal::zero()).unwrap(), + br#""0""# + ); + assert_eq!( + serde_json::to_vec(&SignedDecimal::one()).unwrap(), + br#""1""# + ); + assert_eq!( + serde_json::to_vec(&SignedDecimal::percent(8)).unwrap(), br#""0.08""# ); assert_eq!( - to_json_vec(&SignedDecimal::percent(87)).unwrap(), + serde_json::to_vec(&SignedDecimal::percent(87)).unwrap(), br#""0.87""# ); assert_eq!( - to_json_vec(&SignedDecimal::percent(876)).unwrap(), + serde_json::to_vec(&SignedDecimal::percent(876)).unwrap(), br#""8.76""# ); assert_eq!( - to_json_vec(&SignedDecimal::percent(8765)).unwrap(), + serde_json::to_vec(&SignedDecimal::percent(8765)).unwrap(), br#""87.65""# ); assert_eq!( - to_json_vec(&SignedDecimal::percent(-87654)).unwrap(), + serde_json::to_vec(&SignedDecimal::percent(-87654)).unwrap(), br#""-876.54""# ); assert_eq!( - to_json_vec(&SignedDecimal::negative_one()).unwrap(), + serde_json::to_vec(&SignedDecimal::negative_one()).unwrap(), br#""-1""# ); assert_eq!( - to_json_vec(&-SignedDecimal::percent(8)).unwrap(), + serde_json::to_vec(&-SignedDecimal::percent(8)).unwrap(), br#""-0.08""# ); } @@ -2474,54 +2481,54 @@ mod tests { #[test] fn signed_decimal_deserialize() { assert_eq!( - from_json::(br#""0""#).unwrap(), + serde_json::from_slice::(br#""0""#).unwrap(), SignedDecimal::zero() ); assert_eq!( - from_json::(br#""1""#).unwrap(), + serde_json::from_slice::(br#""1""#).unwrap(), SignedDecimal::one() ); assert_eq!( - from_json::(br#""000""#).unwrap(), + serde_json::from_slice::(br#""000""#).unwrap(), SignedDecimal::zero() ); assert_eq!( - from_json::(br#""001""#).unwrap(), + serde_json::from_slice::(br#""001""#).unwrap(), SignedDecimal::one() ); assert_eq!( - from_json::(br#""0.08""#).unwrap(), + serde_json::from_slice::(br#""0.08""#).unwrap(), SignedDecimal::percent(8) ); assert_eq!( - from_json::(br#""0.87""#).unwrap(), + serde_json::from_slice::(br#""0.87""#).unwrap(), SignedDecimal::percent(87) ); assert_eq!( - from_json::(br#""8.76""#).unwrap(), + serde_json::from_slice::(br#""8.76""#).unwrap(), SignedDecimal::percent(876) ); assert_eq!( - from_json::(br#""87.65""#).unwrap(), + serde_json::from_slice::(br#""87.65""#).unwrap(), SignedDecimal::percent(8765) ); // negative numbers assert_eq!( - from_json::(br#""-0""#).unwrap(), + serde_json::from_slice::(br#""-0""#).unwrap(), SignedDecimal::zero() ); assert_eq!( - from_json::(br#""-1""#).unwrap(), + serde_json::from_slice::(br#""-1""#).unwrap(), SignedDecimal::negative_one() ); assert_eq!( - from_json::(br#""-001""#).unwrap(), + serde_json::from_slice::(br#""-001""#).unwrap(), SignedDecimal::negative_one() ); assert_eq!( - from_json::(br#""-0.08""#).unwrap(), + serde_json::from_slice::(br#""-0.08""#).unwrap(), SignedDecimal::percent(-8) ); } @@ -3091,8 +3098,9 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn signed_decimal_has_defined_json_schema() { - let schema = schema_for!(SignedDecimal); + let schema = schemars::schema_for!(SignedDecimal); assert_eq!( "SignedDecimal", schema.schema.metadata.unwrap().title.unwrap() diff --git a/packages/std/src/math/signed_decimal_256.rs b/packages/core/src/math/signed_decimal_256.rs similarity index 97% rename from packages/std/src/math/signed_decimal_256.rs rename to packages/core/src/math/signed_decimal_256.rs index 5a696c3279..d47649e6f3 100644 --- a/packages/std/src/math/signed_decimal_256.rs +++ b/packages/core/src/math/signed_decimal_256.rs @@ -1,19 +1,18 @@ +use alloc::string::ToString; use core::cmp::Ordering; use core::fmt::{self, Write}; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Rem, RemAssign, Sub, SubAssign, }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; +use derive_more::Display; use serde::{de, ser, Deserialize, Deserializer, Serialize}; -use thiserror::Error; use crate::errors::{ - CheckedFromRatioError, CheckedMultiplyRatioError, DivideByZeroError, OverflowError, - OverflowOperation, RoundDownOverflowError, RoundUpOverflowError, StdError, + CheckedFromRatioError, CheckedMultiplyRatioError, CoreError, DivideByZeroError, OverflowError, + OverflowOperation, RoundDownOverflowError, RoundUpOverflowError, }; -use crate::prelude::*; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{forward_ref_partial_eq, Decimal, Decimal256, Int512, SignedDecimal}; use super::Fraction; @@ -28,13 +27,15 @@ use super::Int256; /// and the smallest is /// -57896044618658097711785492504343953926634992332820282019728.792003956564819968 /// (which is -2^255 / 10^18). -#[derive(Copy, Clone, Default, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct SignedDecimal256(#[schemars(with = "String")] Int256); +#[derive(Copy, Clone, Default, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct SignedDecimal256(#[cfg_attr(feature = "std", schemars(with = "String"))] Int256); forward_ref_partial_eq!(SignedDecimal256, SignedDecimal256); -#[derive(Error, Debug, PartialEq, Eq)] -#[error("SignedDecimal256 range exceeded")] +#[derive(Display, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] +#[display("SignedDecimal256 range exceeded")] pub struct SignedDecimal256RangeExceeded; impl SignedDecimal256 { @@ -649,7 +650,7 @@ impl TryFrom for SignedDecimal256 { } impl FromStr for SignedDecimal256 { - type Err = StdError; + type Err = CoreError; /// Converts the decimal string to a SignedDecimal256 /// Possible inputs: "1.23", "1", "000012", "1.123000000", "-1.12300" @@ -665,18 +666,18 @@ impl FromStr for SignedDecimal256 { let whole = whole_part .parse::() - .map_err(|_| StdError::generic_err("Error parsing whole"))?; + .map_err(|_| CoreError::generic_err("Error parsing whole"))?; let mut atomics = whole .checked_mul(Self::DECIMAL_FRACTIONAL) - .map_err(|_| StdError::generic_err("Value too big"))?; + .map_err(|_| CoreError::generic_err("Value too big"))?; if let Some(fractional_part) = parts_iter.next() { let fractional = fractional_part .parse::() // u64 is enough for 18 decimal places - .map_err(|_| StdError::generic_err("Error parsing fractional"))?; + .map_err(|_| CoreError::generic_err("Error parsing fractional"))?; let exp = (Self::DECIMAL_PLACES.checked_sub(fractional_part.len() as u32)).ok_or_else( || { - StdError::generic_err(format!( + CoreError::generic_err(format!( "Cannot parse more than {} fractional digits", Self::DECIMAL_PLACES )) @@ -697,11 +698,11 @@ impl FromStr for SignedDecimal256 { } else { atomics.checked_add(fractional_part) } - .map_err(|_| StdError::generic_err("Value too big"))?; + .map_err(|_| CoreError::generic_err("Value too big"))?; } if parts_iter.next().is_some() { - return Err(StdError::generic_err("Unexpected number of dots")); + return Err(CoreError::generic_err("Unexpected number of dots")); } Ok(SignedDecimal256(atomics)) @@ -901,7 +902,7 @@ impl<'de> de::Visitor<'de> for SignedDecimal256Visitor { { match SignedDecimal256::from_str(v) { Ok(d) => Ok(d), - Err(e) => Err(E::custom(format!("Error parsing decimal '{v}': {e}"))), + Err(e) => Err(E::custom(format_args!("Error parsing decimal '{v}': {e}"))), } } } @@ -909,8 +910,8 @@ impl<'de> de::Visitor<'de> for SignedDecimal256Visitor { #[cfg(test)] mod tests { use super::*; - use crate::{from_json, to_json_vec}; - use schemars::schema_for; + + use alloc::vec::Vec; fn dec(input: &str) -> SignedDecimal256 { SignedDecimal256::from_str(input).unwrap() @@ -1364,7 +1365,7 @@ mod tests { #[test] fn signed_decimal_256_from_str_errors_for_broken_whole_part() { - let expected_err = StdError::generic_err("Error parsing whole"); + let expected_err = CoreError::generic_err("Error parsing whole"); assert_eq!(SignedDecimal256::from_str("").unwrap_err(), expected_err); assert_eq!(SignedDecimal256::from_str(" ").unwrap_err(), expected_err); assert_eq!(SignedDecimal256::from_str("-").unwrap_err(), expected_err); @@ -1372,7 +1373,7 @@ mod tests { #[test] fn signed_decimal_256_from_str_errors_for_broken_fractional_part() { - let expected_err = StdError::generic_err("Error parsing fractional"); + let expected_err = CoreError::generic_err("Error parsing fractional"); assert_eq!(SignedDecimal256::from_str("1.").unwrap_err(), expected_err); assert_eq!(SignedDecimal256::from_str("1. ").unwrap_err(), expected_err); assert_eq!(SignedDecimal256::from_str("1.e").unwrap_err(), expected_err); @@ -1388,7 +1389,7 @@ mod tests { #[test] fn signed_decimal_256_from_str_errors_for_more_than_18_fractional_digits() { - let expected_err = StdError::generic_err("Cannot parse more than 18 fractional digits"); + let expected_err = CoreError::generic_err("Cannot parse more than 18 fractional digits"); assert_eq!( SignedDecimal256::from_str("7.1234567890123456789").unwrap_err(), expected_err @@ -1402,7 +1403,7 @@ mod tests { #[test] fn signed_decimal_256_from_str_errors_for_invalid_number_of_dots() { - let expected_err = StdError::generic_err("Unexpected number of dots"); + let expected_err = CoreError::generic_err("Unexpected number of dots"); assert_eq!( SignedDecimal256::from_str("1.2.3").unwrap_err(), expected_err @@ -1415,7 +1416,7 @@ mod tests { #[test] fn signed_decimal_256_from_str_errors_for_more_than_max_value() { - let expected_err = StdError::generic_err("Value too big"); + let expected_err = CoreError::generic_err("Value too big"); // Integer assert_eq!( SignedDecimal256::from_str( @@ -2542,34 +2543,40 @@ mod tests { #[test] fn signed_decimal_256_serialize() { - assert_eq!(to_json_vec(&SignedDecimal256::zero()).unwrap(), br#""0""#); - assert_eq!(to_json_vec(&SignedDecimal256::one()).unwrap(), br#""1""#); assert_eq!( - to_json_vec(&SignedDecimal256::percent(8)).unwrap(), + serde_json::to_vec(&SignedDecimal256::zero()).unwrap(), + br#""0""# + ); + assert_eq!( + serde_json::to_vec(&SignedDecimal256::one()).unwrap(), + br#""1""# + ); + assert_eq!( + serde_json::to_vec(&SignedDecimal256::percent(8)).unwrap(), br#""0.08""# ); assert_eq!( - to_json_vec(&SignedDecimal256::percent(87)).unwrap(), + serde_json::to_vec(&SignedDecimal256::percent(87)).unwrap(), br#""0.87""# ); assert_eq!( - to_json_vec(&SignedDecimal256::percent(876)).unwrap(), + serde_json::to_vec(&SignedDecimal256::percent(876)).unwrap(), br#""8.76""# ); assert_eq!( - to_json_vec(&SignedDecimal256::percent(8765)).unwrap(), + serde_json::to_vec(&SignedDecimal256::percent(8765)).unwrap(), br#""87.65""# ); assert_eq!( - to_json_vec(&SignedDecimal256::percent(-87654)).unwrap(), + serde_json::to_vec(&SignedDecimal256::percent(-87654)).unwrap(), br#""-876.54""# ); assert_eq!( - to_json_vec(&SignedDecimal256::negative_one()).unwrap(), + serde_json::to_vec(&SignedDecimal256::negative_one()).unwrap(), br#""-1""# ); assert_eq!( - to_json_vec(&-SignedDecimal256::percent(8)).unwrap(), + serde_json::to_vec(&-SignedDecimal256::percent(8)).unwrap(), br#""-0.08""# ); } @@ -2577,54 +2584,54 @@ mod tests { #[test] fn signed_decimal_256_deserialize() { assert_eq!( - from_json::(br#""0""#).unwrap(), + serde_json::from_slice::(br#""0""#).unwrap(), SignedDecimal256::zero() ); assert_eq!( - from_json::(br#""1""#).unwrap(), + serde_json::from_slice::(br#""1""#).unwrap(), SignedDecimal256::one() ); assert_eq!( - from_json::(br#""000""#).unwrap(), + serde_json::from_slice::(br#""000""#).unwrap(), SignedDecimal256::zero() ); assert_eq!( - from_json::(br#""001""#).unwrap(), + serde_json::from_slice::(br#""001""#).unwrap(), SignedDecimal256::one() ); assert_eq!( - from_json::(br#""0.08""#).unwrap(), + serde_json::from_slice::(br#""0.08""#).unwrap(), SignedDecimal256::percent(8) ); assert_eq!( - from_json::(br#""0.87""#).unwrap(), + serde_json::from_slice::(br#""0.87""#).unwrap(), SignedDecimal256::percent(87) ); assert_eq!( - from_json::(br#""8.76""#).unwrap(), + serde_json::from_slice::(br#""8.76""#).unwrap(), SignedDecimal256::percent(876) ); assert_eq!( - from_json::(br#""87.65""#).unwrap(), + serde_json::from_slice::(br#""87.65""#).unwrap(), SignedDecimal256::percent(8765) ); // negative numbers assert_eq!( - from_json::(br#""-0""#).unwrap(), + serde_json::from_slice::(br#""-0""#).unwrap(), SignedDecimal256::zero() ); assert_eq!( - from_json::(br#""-1""#).unwrap(), + serde_json::from_slice::(br#""-1""#).unwrap(), SignedDecimal256::negative_one() ); assert_eq!( - from_json::(br#""-001""#).unwrap(), + serde_json::from_slice::(br#""-001""#).unwrap(), SignedDecimal256::negative_one() ); assert_eq!( - from_json::(br#""-0.08""#).unwrap(), + serde_json::from_slice::(br#""-0.08""#).unwrap(), SignedDecimal256::percent(-8) ); } @@ -3264,8 +3271,9 @@ mod tests { } #[test] + #[cfg(feature = "std")] fn signed_decimal_256_has_defined_json_schema() { - let schema = schema_for!(SignedDecimal256); + let schema = schemars::schema_for!(SignedDecimal256); assert_eq!( "SignedDecimal256", schema.schema.metadata.unwrap().title.unwrap() diff --git a/packages/std/src/math/uint128.rs b/packages/core/src/math/uint128.rs similarity index 98% rename from packages/std/src/math/uint128.rs rename to packages/core/src/math/uint128.rs index 9ee5c9841c..9c04c54fc2 100644 --- a/packages/std/src/math/uint128.rs +++ b/packages/core/src/math/uint128.rs @@ -1,3 +1,4 @@ +use alloc::string::{String, ToString}; use core::fmt; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Not, Rem, RemAssign, Shl, ShlAssign, Shr, @@ -5,15 +6,13 @@ use core::ops::{ }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; use crate::errors::{ - CheckedMultiplyFractionError, CheckedMultiplyRatioError, DivideByZeroError, OverflowError, - OverflowOperation, StdError, + CheckedMultiplyFractionError, CheckedMultiplyRatioError, CoreError, DivideByZeroError, + OverflowError, OverflowOperation, }; -use crate::prelude::*; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{ forward_ref_partial_eq, impl_mul_fraction, Fraction, Int128, Int256, Int512, Int64, Uint256, Uint64, @@ -41,8 +40,9 @@ use super::num_consts::NumConsts; /// let c = Uint128::from(70u32); /// assert_eq!(c.u128(), 70); /// ``` -#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Uint128(#[schemars(with = "String")] pub(crate) u128); +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Uint128(#[cfg_attr(feature = "std", schemars(with = "String"))] pub(crate) u128); forward_ref_partial_eq!(Uint128, Uint128); @@ -332,7 +332,7 @@ forward_try_from!(Int256, Uint128); forward_try_from!(Int512, Uint128); impl TryFrom<&str> for Uint128 { - type Error = StdError; + type Error = CoreError; fn try_from(val: &str) -> Result { Self::from_str(val) @@ -340,12 +340,12 @@ impl TryFrom<&str> for Uint128 { } impl FromStr for Uint128 { - type Err = StdError; + type Err = CoreError; fn from_str(s: &str) -> Result { match s.parse::() { Ok(u) => Ok(Uint128(u)), - Err(e) => Err(StdError::generic_err(format!("Parsing u128: {e}"))), + Err(e) => Err(CoreError::generic_err(format!("Parsing u128: {e}"))), } } } @@ -592,7 +592,7 @@ impl<'de> de::Visitor<'de> for Uint128Visitor { { match v.parse::() { Ok(u) => Ok(Uint128(u)), - Err(e) => Err(E::custom(format!("invalid Uint128 '{v}' - {e}"))), + Err(e) => Err(E::custom(format_args!("invalid Uint128 '{v}' - {e}"))), } } } @@ -610,7 +610,7 @@ where mod tests { use crate::errors::CheckedMultiplyFractionError::{ConversionOverflow, DivideByZero}; use crate::math::conversion::test_try_from_int_to_uint; - use crate::{from_json, to_json_vec, ConversionOverflowError, Decimal}; + use crate::{ConversionOverflowError, Decimal}; use super::*; @@ -782,9 +782,9 @@ mod tests { #[test] fn uint128_json() { let orig = Uint128(1234567890987654321); - let serialized = to_json_vec(&orig).unwrap(); + let serialized = serde_json::to_vec(&orig).unwrap(); assert_eq!(serialized.as_slice(), b"\"1234567890987654321\""); - let parsed: Uint128 = from_json(serialized).unwrap(); + let parsed: Uint128 = serde_json::from_slice(&serialized).unwrap(); assert_eq!(parsed, orig); } diff --git a/packages/std/src/math/uint256.rs b/packages/core/src/math/uint256.rs similarity index 98% rename from packages/std/src/math/uint256.rs rename to packages/core/src/math/uint256.rs index 6b4814feea..a81942cf19 100644 --- a/packages/std/src/math/uint256.rs +++ b/packages/core/src/math/uint256.rs @@ -1,18 +1,17 @@ +use alloc::string::{String, ToString}; use core::fmt; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Not, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; use crate::errors::{ - CheckedMultiplyFractionError, CheckedMultiplyRatioError, ConversionOverflowError, - DivideByZeroError, OverflowError, OverflowOperation, StdError, + CheckedMultiplyFractionError, CheckedMultiplyRatioError, ConversionOverflowError, CoreError, + DivideByZeroError, OverflowError, OverflowOperation, }; -use crate::prelude::*; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{ forward_ref_partial_eq, impl_mul_fraction, Fraction, Int128, Int256, Int512, Int64, Uint128, Uint512, Uint64, @@ -45,8 +44,9 @@ use super::num_consts::NumConsts; /// ]); /// assert_eq!(a, b); /// ``` -#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Uint256(#[schemars(with = "String")] pub(crate) U256); +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Uint256(#[cfg_attr(feature = "std", schemars(with = "String"))] pub(crate) U256); forward_ref_partial_eq!(Uint256, Uint256); @@ -402,7 +402,7 @@ try_from_int_to_uint!(Int256, Uint256); try_from_int_to_uint!(Int512, Uint256); impl TryFrom<&str> for Uint256 { - type Error = StdError; + type Error = CoreError; fn try_from(val: &str) -> Result { Self::from_str(val) @@ -410,16 +410,18 @@ impl TryFrom<&str> for Uint256 { } impl FromStr for Uint256 { - type Err = StdError; + type Err = CoreError; fn from_str(s: &str) -> Result { if s.is_empty() { - return Err(StdError::generic_err("Parsing u256: received empty string")); + return Err(CoreError::generic_err( + "Parsing u256: received empty string", + )); } match U256::from_str_radix(s, 10) { Ok(u) => Ok(Uint256(u)), - Err(e) => Err(StdError::generic_err(format!("Parsing u256: {e}"))), + Err(e) => Err(CoreError::generic_err(format!("Parsing u256: {e}"))), } } } @@ -655,7 +657,7 @@ impl<'de> de::Visitor<'de> for Uint256Visitor { where E: de::Error, { - Uint256::try_from(v).map_err(|e| E::custom(format!("invalid Uint256 '{v}' - {e}"))) + Uint256::try_from(v).map_err(|e| E::custom(format_args!("invalid Uint256 '{v}' - {e}"))) } } @@ -673,7 +675,7 @@ mod tests { use super::*; use crate::errors::CheckedMultiplyFractionError::{ConversionOverflow, DivideByZero}; use crate::math::conversion::test_try_from_int_to_uint; - use crate::{from_json, to_json_vec, Decimal, Decimal256}; + use crate::{Decimal, Decimal256}; #[test] fn size_of_works() { @@ -1295,9 +1297,9 @@ mod tests { #[test] fn uint256_json() { let orig = Uint256::from(1234567890987654321u128); - let serialized = to_json_vec(&orig).unwrap(); + let serialized = serde_json::to_vec(&orig).unwrap(); assert_eq!(serialized.as_slice(), b"\"1234567890987654321\""); - let parsed: Uint256 = from_json(serialized).unwrap(); + let parsed: Uint256 = serde_json::from_slice(&serialized).unwrap(); assert_eq!(parsed, orig); } diff --git a/packages/std/src/math/uint512.rs b/packages/core/src/math/uint512.rs similarity index 98% rename from packages/std/src/math/uint512.rs rename to packages/core/src/math/uint512.rs index 2842b726bd..bd26d255a2 100644 --- a/packages/std/src/math/uint512.rs +++ b/packages/core/src/math/uint512.rs @@ -1,17 +1,16 @@ +use alloc::string::{String, ToString}; use core::fmt; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Not, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, }; use core::str::FromStr; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; use crate::errors::{ - ConversionOverflowError, DivideByZeroError, OverflowError, OverflowOperation, StdError, + ConversionOverflowError, CoreError, DivideByZeroError, OverflowError, OverflowOperation, }; -use crate::prelude::*; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{forward_ref_partial_eq, Int128, Int256, Int512, Int64, Uint128, Uint256, Uint64}; /// Used internally - we don't want to leak this type since we might change @@ -45,8 +44,9 @@ use super::num_consts::NumConsts; /// ]); /// assert_eq!(a, b); /// ``` -#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Uint512(#[schemars(with = "String")] pub(crate) U512); +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Uint512(#[cfg_attr(feature = "std", schemars(with = "String"))] pub(crate) U512); forward_ref_partial_eq!(Uint512, Uint512); @@ -387,7 +387,7 @@ try_from_int_to_uint!(Int256, Uint512); try_from_int_to_uint!(Int512, Uint512); impl TryFrom<&str> for Uint512 { - type Error = StdError; + type Error = CoreError; fn try_from(val: &str) -> Result { Self::from_str(val) @@ -395,12 +395,12 @@ impl TryFrom<&str> for Uint512 { } impl FromStr for Uint512 { - type Err = StdError; + type Err = CoreError; fn from_str(s: &str) -> Result { match U512::from_str_radix(s, 10) { Ok(u) => Ok(Self(u)), - Err(e) => Err(StdError::generic_err(format!("Parsing u512: {e}"))), + Err(e) => Err(CoreError::generic_err(format!("Parsing u512: {e}"))), } } } @@ -624,7 +624,7 @@ impl<'de> de::Visitor<'de> for Uint512Visitor { where E: de::Error, { - Uint512::try_from(v).map_err(|e| E::custom(format!("invalid Uint512 '{v}' - {e}"))) + Uint512::try_from(v).map_err(|e| E::custom(format_args!("invalid Uint512 '{v}' - {e}"))) } } @@ -640,7 +640,7 @@ where #[cfg(test)] mod tests { use super::*; - use crate::{from_json, math::conversion::test_try_from_int_to_uint, to_json_vec}; + use crate::math::conversion::test_try_from_int_to_uint; #[test] fn size_of_works() { @@ -1002,9 +1002,9 @@ mod tests { #[test] fn uint512_json() { let orig = Uint512::from(1234567890987654321u128); - let serialized = to_json_vec(&orig).unwrap(); + let serialized = serde_json::to_vec(&orig).unwrap(); assert_eq!(serialized.as_slice(), b"\"1234567890987654321\""); - let parsed: Uint512 = from_json(serialized).unwrap(); + let parsed: Uint512 = serde_json::from_slice(&serialized).unwrap(); assert_eq!(parsed, orig); } diff --git a/packages/std/src/math/uint64.rs b/packages/core/src/math/uint64.rs similarity index 98% rename from packages/std/src/math/uint64.rs rename to packages/core/src/math/uint64.rs index 188115b4ac..804cc6d751 100644 --- a/packages/std/src/math/uint64.rs +++ b/packages/core/src/math/uint64.rs @@ -1,17 +1,16 @@ +use alloc::string::{String, ToString}; use core::fmt; use core::ops::{ Add, AddAssign, Div, DivAssign, Mul, MulAssign, Not, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, }; -use forward_ref::{forward_ref_binop, forward_ref_op_assign}; -use schemars::JsonSchema; use serde::{de, ser, Deserialize, Deserializer, Serialize}; use crate::errors::{ - CheckedMultiplyFractionError, CheckedMultiplyRatioError, DivideByZeroError, OverflowError, - OverflowOperation, StdError, + CheckedMultiplyFractionError, CheckedMultiplyRatioError, CoreError, DivideByZeroError, + OverflowError, OverflowOperation, }; -use crate::prelude::*; +use crate::forward_ref::{forward_ref_binop, forward_ref_op_assign}; use crate::{ forward_ref_partial_eq, impl_mul_fraction, Fraction, Int128, Int256, Int512, Int64, Uint128, }; @@ -35,8 +34,9 @@ use super::num_consts::NumConsts; /// let b = Uint64::from(70u32); /// assert_eq!(b.u64(), 70); /// ``` -#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] -pub struct Uint64(#[schemars(with = "String")] pub(crate) u64); +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "std", derive(schemars::JsonSchema))] +pub struct Uint64(#[cfg_attr(feature = "std", schemars(with = "String"))] pub(crate) u64); forward_ref_partial_eq!(Uint64, Uint64); @@ -313,12 +313,12 @@ forward_try_from!(Int256, Uint64); forward_try_from!(Int512, Uint64); impl TryFrom<&str> for Uint64 { - type Error = StdError; + type Error = CoreError; fn try_from(val: &str) -> Result { match val.parse::() { Ok(u) => Ok(Uint64(u)), - Err(e) => Err(StdError::generic_err(format!("Parsing u64: {e}"))), + Err(e) => Err(CoreError::generic_err(format!("Parsing u64: {e}"))), } } } @@ -557,7 +557,7 @@ impl<'de> de::Visitor<'de> for Uint64Visitor { { match v.parse::() { Ok(u) => Ok(Uint64(u)), - Err(e) => Err(E::custom(format!("invalid Uint64 '{v}' - {e}"))), + Err(e) => Err(E::custom(format_args!("invalid Uint64 '{v}' - {e}"))), } } } @@ -576,7 +576,9 @@ mod tests { use super::*; use crate::errors::CheckedMultiplyFractionError::{ConversionOverflow, DivideByZero}; use crate::math::conversion::test_try_from_int_to_uint; - use crate::{from_json, to_json_vec, ConversionOverflowError}; + use crate::ConversionOverflowError; + + use alloc::string::ToString; #[test] fn size_of_works() { @@ -707,9 +709,9 @@ mod tests { #[test] fn uint64_json() { let orig = Uint64(1234567890987654321); - let serialized = to_json_vec(&orig).unwrap(); + let serialized = serde_json::to_vec(&orig).unwrap(); assert_eq!(serialized.as_slice(), b"\"1234567890987654321\""); - let parsed: Uint64 = from_json(serialized).unwrap(); + let parsed: Uint64 = serde_json::from_slice(&serialized).unwrap(); assert_eq!(parsed, orig); } diff --git a/packages/std/src/testing/assertions.rs b/packages/core/src/testing/assertions.rs similarity index 99% rename from packages/std/src/testing/assertions.rs rename to packages/core/src/testing/assertions.rs index 01d68b29cd..757d0d69f1 100644 --- a/packages/std/src/testing/assertions.rs +++ b/packages/core/src/testing/assertions.rs @@ -1,5 +1,6 @@ -use crate::prelude::*; use crate::{Decimal, Uint128}; + +use alloc::string::String; #[cfg(test)] use core::hash::{Hash, Hasher}; use core::str::FromStr as _; diff --git a/packages/core/src/testing/mod.rs b/packages/core/src/testing/mod.rs new file mode 100644 index 0000000000..abe4990132 --- /dev/null +++ b/packages/core/src/testing/mod.rs @@ -0,0 +1,5 @@ +mod assertions; + +pub use assertions::assert_approx_eq_impl; +#[cfg(test)] +pub use assertions::assert_hash_works_impl; diff --git a/packages/std/testdata/instantiate2_addresses.json b/packages/core/testdata/instantiate2_addresses.json similarity index 100% rename from packages/std/testdata/instantiate2_addresses.json rename to packages/core/testdata/instantiate2_addresses.json diff --git a/packages/crypto/Cargo.toml b/packages/crypto/Cargo.toml index 77eddd57bc..ae90529986 100644 --- a/packages/crypto/Cargo.toml +++ b/packages/crypto/Cargo.toml @@ -9,23 +9,26 @@ license = "Apache-2.0" [features] default = [] +std = ["dep:thiserror"] [lib] # See https://bheisler.github.io/criterion.rs/book/faq.html#cargo-bench-gives-unrecognized-option-errors-for-valid-command-line-options bench = false [dependencies] -k256 = { version = "0.13.3", features = ["ecdsa"] } -ed25519-zebra = "4.0.3" +derive_more = { version = "1.0.0-beta.6", default-features = false, features = ["display", "from"] } +k256 = { version = "0.13.3", default-features = false, features = ["ecdsa"] } +ed25519-zebra = { version = "4.0.3", default-features = false } digest = "0.10" -rand_core = { version = "0.6", features = ["getrandom"] } -thiserror = "1.0.38" +rand_core = "0.6" # Not used directly, but needed to bump transitive dependency, see: https://github.com/CosmWasm/cosmwasm/pull/1899 for details. ecdsa = "0.16.2" -p256 = { version = "0.13.2", features = ["ecdsa"] } +p256 = { version = "0.13.2", default-features = false, features = ["ecdsa"] } +thiserror = { version = "1.0.26", optional = true } [dev-dependencies] criterion = "0.5.1" +rand_core = { version = "0.6", features = ["getrandom"] } serde = { version = "1.0.103", default-features = false, features = ["derive", "alloc"] } serde_json = "1.0.40" sha2 = "0.10" diff --git a/packages/crypto/benches/main.rs b/packages/crypto/benches/main.rs index 74422cdc1a..ca1ba3077e 100644 --- a/packages/crypto/benches/main.rs +++ b/packages/crypto/benches/main.rs @@ -1,4 +1,5 @@ use criterion::{criterion_group, criterion_main, Criterion, PlottingBackend}; +use rand_core::OsRng; use std::time::Duration; use english_numbers::convert_no_fmt; @@ -158,6 +159,7 @@ fn bench_crypto(c: &mut Criterion) { |b| { b.iter(|| { assert!(ed25519_batch_verify( + &mut OsRng, &messages[..n], &signatures[..n], &public_keys[..n] @@ -189,6 +191,7 @@ fn bench_crypto(c: &mut Criterion) { |b| { b.iter(|| { assert!(ed25519_batch_verify( + &mut OsRng, &messages.repeat(n), &signatures.repeat(n), &public_keys diff --git a/packages/crypto/src/backtrace.rs b/packages/crypto/src/backtrace.rs index 549279132b..56415bd9a1 100644 --- a/packages/crypto/src/backtrace.rs +++ b/packages/crypto/src/backtrace.rs @@ -1,18 +1,32 @@ +use alloc::boxed::Box; use core::fmt::{Debug, Display, Formatter, Result}; -use std::backtrace::Backtrace; /// This wraps an actual backtrace to achieve two things: /// - being able to fill this with a stub implementation in `no_std` environments /// - being able to use this in conjunction with [`thiserror::Error`] -pub struct BT(Backtrace); +pub struct BT(Box); impl BT { #[track_caller] pub fn capture() -> Self { - BT(Backtrace::capture()) + // in case of no_std, we can fill with a stub here + #[cfg(feature = "std")] + { + #[cfg(target_arch = "wasm32")] + return BT(Box::new(std::backtrace::Backtrace::disabled())); + #[cfg(not(target_arch = "wasm32"))] + return BT(Box::new(std::backtrace::Backtrace::capture())); + } + #[cfg(not(feature = "std"))] + { + BT(Box::new(Stub)) + } } } +trait Printable: Debug + Display {} +impl Printable for T where T: Debug + Display {} + impl Debug for BT { fn fmt(&self, f: &mut Formatter<'_>) -> Result { Debug::fmt(&self.0, f) @@ -24,3 +38,18 @@ impl Display for BT { Display::fmt(&self.0, f) } } + +#[allow(unused)] +struct Stub; + +impl Debug for Stub { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + write!(f, "") + } +} + +impl Display for Stub { + fn fmt(&self, f: &mut Formatter<'_>) -> Result { + write!(f, "") + } +} diff --git a/packages/crypto/src/ed25519.rs b/packages/crypto/src/ed25519.rs index 7b87affcd8..31e2bc1aa2 100644 --- a/packages/crypto/src/ed25519.rs +++ b/packages/crypto/src/ed25519.rs @@ -1,5 +1,5 @@ use ed25519_zebra::{batch, Signature, VerificationKey}; -use rand_core::OsRng; +use rand_core::CryptoRngCore; use crate::errors::{CryptoError, CryptoResult}; @@ -60,11 +60,15 @@ pub fn ed25519_verify(message: &[u8], signature: &[u8], public_key: &[u8]) -> Cr /// - The "one-public key, with zero messages and zero signatures" case, is considered the empty /// case. /// - The empty case (no messages, no signatures and no public keys) returns true. -pub fn ed25519_batch_verify( +pub fn ed25519_batch_verify( + rng: &mut R, messages: &[&[u8]], signatures: &[&[u8]], public_keys: &[&[u8]], -) -> CryptoResult { +) -> CryptoResult +where + R: CryptoRngCore, +{ // Structural checks let messages_len = messages.len(); let signatures_len = signatures.len(); @@ -103,7 +107,7 @@ pub fn ed25519_batch_verify( } // Batch verification - match batch.verify(OsRng) { + match batch.verify(rng) { Ok(()) => Ok(true), Err(_) => Ok(false), } @@ -138,7 +142,9 @@ fn read_pubkey(data: &[u8]) -> Result<[u8; 32], InvalidEd25519PubkeyFormat> { #[cfg(test)] mod tests { use super::*; + use alloc::{string::String, vec, vec::Vec}; use ed25519_zebra::SigningKey; + use rand_core::OsRng; use serde::Deserialize; // For generic signature verification @@ -282,7 +288,7 @@ mod tests { let public_keys: Vec<&[u8]> = public_keys.iter().map(|m| m.as_slice()).collect(); // ed25519_batch_verify() works - assert!(ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); } // structural tests @@ -293,7 +299,7 @@ mod tests { let public_keys: Vec<&[u8]> = vec![]; // ed25519_batch_verify() works for empty msgs / sigs / pubkeys - assert!(ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); } #[test] @@ -320,12 +326,12 @@ mod tests { let mut public_keys: Vec<&[u8]> = public_keys.iter().map(|m| m.as_slice()).collect(); // Check the whole set passes - assert!(ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); // Remove one message let msg = messages.pop().unwrap(); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -340,7 +346,7 @@ mod tests { // Remove one signature let sig = signatures.pop().unwrap(); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -355,7 +361,7 @@ mod tests { // Remove one public key let pubkey = public_keys.pop().unwrap(); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -370,7 +376,7 @@ mod tests { // Add one message messages.push(messages[0]); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -384,7 +390,7 @@ mod tests { // Add one signature signatures.push(signatures[0]); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -398,7 +404,7 @@ mod tests { // Add one public keys public_keys.push(public_keys[0]); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -432,18 +438,18 @@ mod tests { let mut public_keys: Vec<&[u8]> = public_keys.iter().map(|m| m.as_slice()).collect(); // Check the whole set passes - assert!(ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); // Just one message messages.truncate(1); // Check (in passing) this fails verification - assert!(!ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(!ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); // Remove one sig let sig = signatures.pop().unwrap(); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -458,7 +464,7 @@ mod tests { // Remove one public key let pubkey = public_keys.pop().unwrap(); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -495,18 +501,18 @@ mod tests { let mut public_keys: Vec<&[u8]> = public_keys.iter().map(|m| m.as_slice()).collect(); // Check the whole set passes - assert!(ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); // Just one public key public_keys.truncate(1); // Check (in passing) this fails verification - assert!(!ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(!ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); // Remove one sig let sig = signatures.pop().unwrap(); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -521,7 +527,7 @@ mod tests { // Remove one msg let msg = messages.pop().unwrap(); - let res = ed25519_batch_verify(&messages, &signatures, &public_keys); + let res = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); match res.unwrap_err() { CryptoError::BatchErr { msg, .. } => assert_eq!( msg, @@ -551,7 +557,7 @@ mod tests { let messages: Vec<&[u8]> = messages.iter().map(|m| m.as_slice()).collect(); // ed25519_batch_verify() works for empty sigs / pubkeys - assert!(ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); } #[test] @@ -571,6 +577,6 @@ mod tests { let public_keys: Vec<&[u8]> = public_keys.iter().map(|m| m.as_slice()).collect(); // ed25519_batch_verify() works for empty msgs / sigs - assert!(ed25519_batch_verify(&messages, &signatures, &public_keys).unwrap()); + assert!(ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys).unwrap()); } } diff --git a/packages/crypto/src/errors.rs b/packages/crypto/src/errors.rs index db4ba3fe11..989427fba7 100644 --- a/packages/crypto/src/errors.rs +++ b/packages/crypto/src/errors.rs @@ -1,22 +1,25 @@ +use alloc::string::String; +use core::fmt::Debug; +use derive_more::Display; + use crate::BT; -use std::fmt::Debug; -use thiserror::Error; pub type CryptoResult = core::result::Result; -#[derive(Error, Debug)] +#[derive(Display, Debug)] +#[cfg_attr(feature = "std", derive(thiserror::Error))] pub enum CryptoError { - #[error("Batch verify error: {msg}")] + #[display("Batch verify error: {msg}")] BatchErr { msg: String, backtrace: BT }, - #[error("Crypto error: {msg}")] + #[display("Crypto error: {msg}")] GenericErr { msg: String, backtrace: BT }, - #[error("Invalid hash format")] + #[display("Invalid hash format")] InvalidHashFormat { backtrace: BT }, - #[error("Invalid public key format")] + #[display("Invalid public key format")] InvalidPubkeyFormat { backtrace: BT }, - #[error("Invalid signature format")] + #[display("Invalid signature format")] InvalidSignatureFormat { backtrace: BT }, - #[error("Invalid recovery parameter. Supported values: 0 and 1.")] + #[display("Invalid recovery parameter. Supported values: 0 and 1.")] InvalidRecoveryParam { backtrace: BT }, } diff --git a/packages/crypto/src/lib.rs b/packages/crypto/src/lib.rs index f8a3967655..04667b7320 100644 --- a/packages/crypto/src/lib.rs +++ b/packages/crypto/src/lib.rs @@ -2,6 +2,14 @@ //! Please don't use any of these types directly, as //! they might change frequently, or be removed in the future. //! This crate does not adhere to semantic versioning. + +#![cfg_attr(not(feature = "std"), no_std)] + +extern crate alloc; + +#[cfg(test)] +extern crate std; // allow for file I/O during tests + mod backtrace; mod ecdsa; mod ed25519; diff --git a/packages/crypto/src/secp256k1.rs b/packages/crypto/src/secp256k1.rs index bbbe2a103d..c5ab3bb559 100644 --- a/packages/crypto/src/secp256k1.rs +++ b/packages/crypto/src/secp256k1.rs @@ -1,3 +1,4 @@ +use alloc::{string::ToString, vec::Vec}; use digest::{Digest, Update}; // trait use k256::{ ecdsa::signature::DigestVerifier, // traits @@ -168,6 +169,7 @@ fn check_pubkey(data: &[u8]) -> Result<(), InvalidSecp256k1PubkeyFormat> { mod tests { use super::*; + use alloc::{format, string::String}; use hex_literal::hex; use k256::{ ecdsa::signature::DigestSigner, // trait diff --git a/packages/crypto/src/secp256r1.rs b/packages/crypto/src/secp256r1.rs index eacb74fa33..574f625500 100644 --- a/packages/crypto/src/secp256r1.rs +++ b/packages/crypto/src/secp256r1.rs @@ -1,3 +1,5 @@ +use alloc::{string::ToString, vec::Vec}; +use core::convert::TryInto; use digest::{Digest, Update}; // trait use ecdsa::RecoveryId; use p256::{ @@ -144,6 +146,9 @@ mod tests { use std::fs::File; use std::io::BufReader; + use crate::secp256r1_recover_pubkey; + use alloc::string::String; + use ecdsa::RecoveryId; use p256::{ ecdsa::signature::DigestSigner, ecdsa::SigningKey, elliptic_curve::rand_core::OsRng, }; diff --git a/packages/std/Cargo.toml b/packages/std/Cargo.toml index 34f686be6a..32d3573214 100644 --- a/packages/std/Cargo.toml +++ b/packages/std/Cargo.toml @@ -12,13 +12,15 @@ readme = "README.md" features = ["abort", "stargate", "staking", "cosmwasm_2_0"] [features] -default = ["iterator", "abort", "std"] +default = ["iterator", "abort"] abort = [] -# This feature can be used in the future to provide support for no_std environments, -# but disabling it will not provide any benefit at the moment. Even with this feature disabled, -# we currently require an std environment. -# You probably want to keep this enabled for now to avoid possible breaking changes later. -std = ["serde/std", "serde-json-wasm/std"] +# LEGACY. REMOVE NEXT BREAKING RELEASE. +# +# This feature is unused. This library is not intended to run without the `std` library. +# Use `cosmwasm-core` instead if you *really* need a `no_std` environment. +# +# If you need any types exclusive to `cosmwasm-std` in a `no_std` environment, open an issue to discuss moving it to `cosmwasm-core`. +std = [] # iterator allows us to iterate over all DB items in a given range # optional as some merkle stores (like tries) don't support this # given Ethereum 1.0, 2.0, Substrate, and other major projects use Tries @@ -56,22 +58,22 @@ cosmwasm_2_1 = ["cosmwasm_2_0"] [dependencies] base64 = "0.22.0" cosmwasm-derive = { version = "2.0.1", path = "../derive" } -derivative = { version = "2", features = ["use_core"] } -forward_ref = "1" +cosmwasm-core = { path = "../core", version = "2.0.1", features = ["std"] } +derive_more = { version = "1.0.0-beta.6", default-features = false, features = ["debug"] } hex = "0.4" schemars = { workspace = true } sha2 = "0.10.3" -serde = { workspace = true } -serde-json-wasm = { version = "1.0.1", default-features = false } +serde = { workspace = true, features = ["std"] } +serde-json-wasm = { version = "1.0.1", default-features = false, features = ["std"] } thiserror = "1.0.26" -bnum = "0.11.0" -static_assertions = "1.1.0" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] bech32 = "0.11.0" cosmwasm-crypto = { version = "2.0.1", path = "../crypto" } +rand_core = { version = "0.6.4", features = ["getrandom"] } [dev-dependencies] +cosmwasm-core = { path = "../core", version = "2.0.1" } cosmwasm-schema = { version = "2.0.1", path = "../schema" } # The chrono dependency is only used in an example, which Rust compiles for us. If this causes trouble, remove it. chrono = { version = "0.4", default-features = false, features = ["alloc", "std"] } diff --git a/packages/std/src/coin.rs b/packages/std/src/coin.rs index daf1df1738..9807eaa007 100644 --- a/packages/std/src/coin.rs +++ b/packages/std/src/coin.rs @@ -1,9 +1,10 @@ use core::{fmt, str::FromStr}; +use cosmwasm_core::Uint128; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use crate::prelude::*; -use crate::{errors::CoinFromStrError, math::Uint128}; +use crate::CoinFromStrError; #[derive(Serialize, Deserialize, Clone, Default, PartialEq, Eq, JsonSchema)] pub struct Coin { diff --git a/packages/std/src/coins.rs b/packages/std/src/coins.rs index 967ab7067f..dc916dc5ca 100644 --- a/packages/std/src/coins.rs +++ b/packages/std/src/coins.rs @@ -3,9 +3,7 @@ use core::fmt; use core::str::FromStr; use crate::prelude::*; -use crate::{ - errors::CoinsError, Coin, OverflowError, OverflowOperation, StdError, StdResult, Uint128, -}; +use crate::{Coin, CoinsError, OverflowError, OverflowOperation, StdError, StdResult, Uint128}; /// A collection of coins, similar to Cosmos SDK's `sdk.Coins` struct. /// diff --git a/packages/std/src/forward_ref.rs b/packages/std/src/forward_ref.rs deleted file mode 100644 index 16385fbc97..0000000000 --- a/packages/std/src/forward_ref.rs +++ /dev/null @@ -1,25 +0,0 @@ -/// Given an implementation of `T == U`, implements: -/// - `&T == U` -/// - `T == &U` -/// -/// We don't need to add `&T == &U` here because this is implemented automatically. -#[macro_export] -macro_rules! forward_ref_partial_eq { - ($t:ty, $u:ty) => { - // `&T == U` - impl<'a> PartialEq<$u> for &'a $t { - #[inline] - fn eq(&self, rhs: &$u) -> bool { - **self == *rhs // Implement via T == U - } - } - - // `T == &U` - impl PartialEq<&$u> for $t { - #[inline] - fn eq(&self, rhs: &&$u) -> bool { - *self == **rhs // Implement via T == U - } - } - }; -} diff --git a/packages/std/src/ibc.rs b/packages/std/src/ibc.rs index f66ffb8aff..21fa941ad5 100644 --- a/packages/std/src/ibc.rs +++ b/packages/std/src/ibc.rs @@ -1,18 +1,17 @@ // The CosmosMsg variants are defined in results/cosmos_msg.rs // The rest of the IBC related functionality is defined here -use core::cmp::Ordering; +use core::cmp::{Ord, Ordering, PartialOrd}; +use cosmwasm_core::Addr; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::addresses::Addr; -use crate::binary::Binary; use crate::coin::Coin; -use crate::errors::StdResult; use crate::prelude::*; use crate::results::{Attribute, CosmosMsg, Empty, Event, SubMsg}; -use crate::serde::to_json_binary; use crate::timestamp::Timestamp; +use crate::StdResult; +use crate::{to_json_binary, Binary}; /// These are messages in the IBC lifecycle. Only usable by IBC-enabled contracts /// (contracts that directly speak the IBC protocol via 6 entry points) diff --git a/packages/std/src/imports.rs b/packages/std/src/imports.rs index 306a6d2f9b..ef970f2286 100644 --- a/packages/std/src/imports.rs +++ b/packages/std/src/imports.rs @@ -1,7 +1,6 @@ use alloc::vec::Vec; +use cosmwasm_core::{Addr, CanonicalAddr}; -use crate::addresses::{Addr, CanonicalAddr}; -use crate::errors::{RecoverPubkeyError, StdError, StdResult, SystemError, VerificationError}; use crate::import_helpers::{from_high_half, from_low_half}; use crate::memory::{alloc, build_region, consume_region, Region}; use crate::results::SystemResult; @@ -15,6 +14,7 @@ use crate::{ iterator::{Order, Record}, memory::get_optional_region_address, }; +use crate::{RecoverPubkeyError, StdError, StdResult, SystemError, VerificationError}; /// An upper bound for typical canonical address lengths (e.g. 20 in Cosmos SDK/Ethereum or 32 in Nano/Substrate) const CANONICAL_ADDRESS_BUFFER_LENGTH: usize = 64; diff --git a/packages/std/src/iterator.rs b/packages/std/src/iterator.rs index 00190aa5ca..b1d0c1f004 100644 --- a/packages/std/src/iterator.rs +++ b/packages/std/src/iterator.rs @@ -1,4 +1,4 @@ -use crate::errors::StdError; +use crate::StdError; /// A record of a key-value storage that is created through an iterator API. /// The first element (key) is always raw binary data. The second element diff --git a/packages/std/src/lib.rs b/packages/std/src/lib.rs index 75ab78e1e2..3cfd308935 100644 --- a/packages/std/src/lib.rs +++ b/packages/std/src/lib.rs @@ -1,30 +1,18 @@ +#[macro_use] extern crate alloc; -#[cfg(not(feature = "std"))] -core::compile_error!( - r#"Please enable `cosmwasm-std`'s `std` feature, as we might move existing functionality to that feature in the future. -Builds without the std feature are currently not expected to work. If you need no_std support see #1484. -"# -); - // Exposed on all platforms -mod addresses; mod assertions; -mod binary; mod checksum; mod coin; mod coins; mod conversion; mod deps; -mod errors; -mod forward_ref; -mod hex_binary; mod ibc; mod import_helpers; #[cfg(feature = "iterator")] mod iterator; -mod math; mod metadata; mod never; mod pagination; @@ -47,19 +35,10 @@ pub(crate) mod prelude; /// contract devs to use it directly. pub mod storage_keys; -pub use crate::addresses::{instantiate2_address, Addr, CanonicalAddr, Instantiate2AddressError}; -pub use crate::binary::Binary; pub use crate::checksum::{Checksum, ChecksumError}; pub use crate::coin::{coin, coins, has_coins, Coin}; pub use crate::coins::Coins; pub use crate::deps::{Deps, DepsMut, OwnedDeps}; -pub use crate::errors::{ - CheckedFromRatioError, CheckedMultiplyFractionError, CheckedMultiplyRatioError, - CoinFromStrError, CoinsError, ConversionOverflowError, DivideByZeroError, DivisionError, - OverflowError, OverflowOperation, RecoverPubkeyError, StdError, StdResult, SystemError, - VerificationError, -}; -pub use crate::hex_binary::HexBinary; pub use crate::ibc::IbcChannelOpenResponse; pub use crate::ibc::{ Ibc3ChannelOpenResponse, IbcAcknowledgement, IbcBasicResponse, IbcChannel, IbcChannelCloseMsg, @@ -69,11 +48,6 @@ pub use crate::ibc::{ }; #[cfg(feature = "iterator")] pub use crate::iterator::{Order, Record}; -pub use crate::math::{ - Decimal, Decimal256, Decimal256RangeExceeded, DecimalRangeExceeded, Fraction, Int128, Int256, - Int512, Int64, Isqrt, SignedDecimal, SignedDecimal256, SignedDecimal256RangeExceeded, - SignedDecimalRangeExceeded, Uint128, Uint256, Uint512, Uint64, -}; pub use crate::metadata::{DenomMetadata, DenomUnit}; pub use crate::never::Never; pub use crate::pagination::PageRequest; @@ -134,4 +108,20 @@ pub mod testing; // Re-exports +pub use cosmwasm_core::CoreError as StdError; +pub use cosmwasm_core::CoreResult as StdResult; +pub use cosmwasm_core::{ + from_base64, from_hex, instantiate2_address, to_base64, to_hex, Addr, Binary, CanonicalAddr, + CheckedFromRatioError, CheckedMultiplyFractionError, CheckedMultiplyRatioError, + CoinFromStrError, CoinsError, ConversionOverflowError, Decimal, Decimal256, + Decimal256RangeExceeded, DecimalRangeExceeded, DivideByZeroError, DivisionError, Fraction, + HexBinary, Instantiate2AddressError, Int128, Int256, Int512, Int64, Isqrt, OverflowError, + OverflowOperation, RecoverPubkeyError, SignedDecimal, SignedDecimal256, + SignedDecimal256RangeExceeded, SignedDecimalRangeExceeded, SystemError, Uint128, Uint256, + Uint512, Uint64, VerificationError, +}; + +#[cfg(not(target_arch = "wasm32"))] +pub use cosmwasm_core::assert_approx_eq; + pub use cosmwasm_derive::entry_point; diff --git a/packages/std/src/pagination.rs b/packages/std/src/pagination.rs index d5e979f9f7..d9d1d8ef96 100644 --- a/packages/std/src/pagination.rs +++ b/packages/std/src/pagination.rs @@ -1,7 +1,6 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::prelude::*; use crate::Binary; /// Simplified version of the PageRequest type for pagination from the cosmos-sdk diff --git a/packages/std/src/prelude.rs b/packages/std/src/prelude.rs index ad2d30b855..7a3311ad1a 100644 --- a/packages/std/src/prelude.rs +++ b/packages/std/src/prelude.rs @@ -1,6 +1,3 @@ pub use alloc::boxed::Box; -pub use alloc::format; pub use alloc::string::{String, ToString}; -pub use alloc::vec; pub use alloc::vec::Vec; -pub use core::option::Option::{self, None, Some}; diff --git a/packages/std/src/results/cosmos_msg.rs b/packages/std/src/results/cosmos_msg.rs index 35ede3d123..4f76c49b98 100644 --- a/packages/std/src/results/cosmos_msg.rs +++ b/packages/std/src/results/cosmos_msg.rs @@ -1,19 +1,18 @@ #![allow(deprecated)] use core::fmt; -use derivative::Derivative; +use derive_more::Debug; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::binary::Binary; use crate::coin::Coin; -use crate::errors::StdResult; #[cfg(feature = "stargate")] use crate::ibc::IbcMsg; use crate::prelude::*; -use crate::serde::to_json_binary; #[cfg(all(feature = "stargate", feature = "cosmwasm_1_2"))] use crate::Decimal; +use crate::StdResult; +use crate::{to_json_binary, Binary}; use super::Empty; @@ -140,10 +139,14 @@ pub struct AnyMsg { pub value: Binary, } -fn binary_to_string(data: &Binary, fmt: &mut core::fmt::Formatter) -> core::fmt::Result { - match core::str::from_utf8(data.as_slice()) { - Ok(s) => fmt.write_str(s), - Err(_) => fmt::Debug::fmt(data, fmt), +struct BinaryToStringEncoder<'a>(&'a Binary); + +impl fmt::Display for BinaryToStringEncoder<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match core::str::from_utf8(self.0.as_slice()) { + Ok(s) => f.write_str(s), + Err(_) => fmt::Debug::fmt(self.0, f), + } } } @@ -151,8 +154,7 @@ fn binary_to_string(data: &Binary, fmt: &mut core::fmt::Formatter) -> core::fmt: /// /// See https://github.com/CosmWasm/wasmd/blob/v0.14.0/x/wasm/internal/types/tx.proto #[non_exhaustive] -#[derive(Serialize, Deserialize, Clone, Derivative, PartialEq, Eq, JsonSchema)] -#[derivative(Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum WasmMsg { /// Dispatches a call to another contract at a known address (with known ABI). @@ -162,7 +164,7 @@ pub enum WasmMsg { Execute { contract_addr: String, /// msg is the json-encoded ExecuteMsg struct (as raw Binary) - #[derivative(Debug(format_with = "binary_to_string"))] + #[debug("{}", BinaryToStringEncoder(msg))] msg: Binary, funds: Vec, }, @@ -179,7 +181,7 @@ pub enum WasmMsg { admin: Option, code_id: u64, /// msg is the JSON-encoded InstantiateMsg struct (as raw Binary) - #[derivative(Debug(format_with = "binary_to_string"))] + #[debug("{}", BinaryToStringEncoder(msg))] msg: Binary, funds: Vec, /// A human-readable label for the contract. @@ -209,7 +211,7 @@ pub enum WasmMsg { /// - not start / end with whitespace label: String, /// msg is the JSON-encoded InstantiateMsg struct (as raw Binary) - #[derivative(Debug(format_with = "binary_to_string"))] + #[debug("{}", BinaryToStringEncoder(msg))] msg: Binary, funds: Vec, salt: Binary, @@ -226,7 +228,7 @@ pub enum WasmMsg { /// the code_id of the new logic to place in the given contract new_code_id: u64, /// msg is the json-encoded MigrateMsg struct that will be passed to the new code - #[derivative(Debug(format_with = "binary_to_string"))] + #[debug("{}", BinaryToStringEncoder(msg))] msg: Binary, }, /// Sets a new admin (for migrate) on the given contract. diff --git a/packages/std/src/results/empty.rs b/packages/std/src/results/empty.rs index 9efd96d908..c3d3771d20 100644 --- a/packages/std/src/results/empty.rs +++ b/packages/std/src/results/empty.rs @@ -1,8 +1,6 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::prelude::*; - /// An empty struct that serves as a placeholder in different places, /// such as contracts that don't set a custom message. /// @@ -16,7 +14,7 @@ pub struct Empty {} mod tests { use super::*; - use crate::serde::{from_json, to_json_vec}; + use crate::{from_json, to_json_vec}; #[test] fn empty_can_be_instantiated() { diff --git a/packages/std/src/results/events.rs b/packages/std/src/results/events.rs index 2ed593ae68..6ab3957202 100644 --- a/packages/std/src/results/events.rs +++ b/packages/std/src/results/events.rs @@ -1,7 +1,7 @@ +use cosmwasm_core::__internal::forward_ref_partial_eq; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::forward_ref_partial_eq; use crate::prelude::*; /// A full [*Cosmos SDK* event]. diff --git a/packages/std/src/results/query.rs b/packages/std/src/results/query.rs index 588bc7ffe5..6db3a13d0d 100644 --- a/packages/std/src/results/query.rs +++ b/packages/std/src/results/query.rs @@ -1,3 +1 @@ -use crate::binary::Binary; - -pub type QueryResponse = Binary; +pub type QueryResponse = cosmwasm_core::Binary; diff --git a/packages/std/src/results/system_result.rs b/packages/std/src/results/system_result.rs index 624fe0bc3b..0623d08589 100644 --- a/packages/std/src/results/system_result.rs +++ b/packages/std/src/results/system_result.rs @@ -2,9 +2,8 @@ use core::fmt; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use super::super::errors::SystemError; - use crate::prelude::*; +use crate::SystemError; /// This is the outer result type returned by a querier to the contract. /// diff --git a/packages/std/src/serde.rs b/packages/std/src/serde.rs index 5adaf24567..0f97b61a61 100644 --- a/packages/std/src/serde.rs +++ b/packages/std/src/serde.rs @@ -2,12 +2,12 @@ // The reason is two fold: // 1. To easily ensure that all calling libraries use the same version (minimize code size) // 2. To allow us to switch out to eg. serde-json-core more easily + use core::any::type_name; use serde::{de::DeserializeOwned, Serialize}; -use crate::binary::Binary; -use crate::errors::{StdError, StdResult}; -use crate::prelude::*; +use crate::Binary; +use crate::{StdError, StdResult}; #[deprecated = "use from_json instead"] pub fn from_slice(value: &[u8]) -> StdResult { diff --git a/packages/std/src/stdack.rs b/packages/std/src/stdack.rs index 1d65a7d8f4..50b72a6ae6 100644 --- a/packages/std/src/stdack.rs +++ b/packages/std/src/stdack.rs @@ -1,7 +1,7 @@ +use cosmwasm_core::Binary; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::binary::Binary; use crate::prelude::*; use crate::to_json_binary; diff --git a/packages/std/src/testing/mock.rs b/packages/std/src/testing/mock.rs index c25b42cefa..c03bd03b6a 100644 --- a/packages/std/src/testing/mock.rs +++ b/packages/std/src/testing/mock.rs @@ -7,23 +7,21 @@ use bech32::{encode, Bech32, Hrp}; use core::marker::PhantomData; #[cfg(feature = "cosmwasm_1_3")] use core::ops::Bound; +use cosmwasm_core::{Addr, CanonicalAddr}; +use rand_core::OsRng; use serde::de::DeserializeOwned; #[cfg(feature = "stargate")] use serde::Serialize; use sha2::{Digest, Sha256}; -use crate::addresses::{Addr, CanonicalAddr}; -use crate::binary::Binary; use crate::coin::Coin; use crate::deps::OwnedDeps; -use crate::errors::{RecoverPubkeyError, StdError, StdResult, SystemError, VerificationError}; #[cfg(feature = "stargate")] use crate::ibc::{ IbcAcknowledgement, IbcChannel, IbcChannelCloseMsg, IbcChannelConnectMsg, IbcChannelOpenMsg, IbcEndpoint, IbcOrder, IbcPacket, IbcPacketAckMsg, IbcPacketReceiveMsg, IbcPacketTimeoutMsg, IbcTimeoutBlock, }; -use crate::math::Uint128; #[cfg(feature = "cosmwasm_1_1")] use crate::query::SupplyResponse; use crate::query::{ @@ -37,11 +35,11 @@ use crate::query::{ #[cfg(feature = "cosmwasm_1_3")] use crate::query::{DelegatorWithdrawAddressResponse, DistributionQuery}; use crate::results::{ContractResult, Empty, SystemResult}; -use crate::serde::{from_json, to_json_binary}; use crate::storage::MemoryStorage; use crate::timestamp::Timestamp; use crate::traits::{Api, Querier, QuerierResult}; use crate::types::{BlockInfo, ContractInfo, Env, MessageInfo, TransactionInfo}; +use crate::{from_json, to_json_binary, Binary, Uint128}; #[cfg(feature = "cosmwasm_1_3")] use crate::{ query::{AllDenomMetadataResponse, DecCoin, DenomMetadataResponse}, @@ -52,6 +50,7 @@ use crate::{Attribute, DenomMetadata}; use crate::{ChannelResponse, IbcQuery, ListChannelsResponse, PortIdResponse}; #[cfg(feature = "cosmwasm_1_4")] use crate::{Decimal256, DelegationRewardsResponse, DelegatorValidatorsResponse}; +use crate::{RecoverPubkeyError, StdError, StdResult, SystemError, VerificationError}; pub const MOCK_CONTRACT_ADDR: &str = "cosmos2contract"; @@ -219,6 +218,7 @@ impl Api for MockApi { public_keys: &[&[u8]], ) -> Result { Ok(cosmwasm_crypto::ed25519_batch_verify( + &mut OsRng, messages, signatures, public_keys, @@ -226,7 +226,6 @@ impl Api for MockApi { } fn debug(&self, #[allow(unused)] message: &str) { - #[cfg(feature = "std")] println!("{message}"); } } @@ -2457,7 +2456,7 @@ mod tests { } #[test] - #[cfg(all(feature = "cosmwasm_1_3", feature = "std"))] + #[cfg(feature = "cosmwasm_1_3")] fn distribution_querier_new_works() { let addresses = [ ("addr0000".to_string(), "addr0001".to_string()), diff --git a/packages/std/src/testing/mod.rs b/packages/std/src/testing/mod.rs index 820580c40c..5810a7cf27 100644 --- a/packages/std/src/testing/mod.rs +++ b/packages/std/src/testing/mod.rs @@ -3,12 +3,9 @@ // Exposed for testing only // Both unit tests and integration tests are compiled to native code, so everything in here does not need to compile to Wasm. -mod assertions; mod mock; -pub use assertions::assert_approx_eq_impl; -#[cfg(test)] -pub use assertions::assert_hash_works_impl; +pub use cosmwasm_core::testing::*; #[cfg(feature = "cosmwasm_1_3")] pub use mock::DistributionQuerier; diff --git a/packages/std/src/timestamp.rs b/packages/std/src/timestamp.rs index 8421e3b1b6..dbee152e15 100644 --- a/packages/std/src/timestamp.rs +++ b/packages/std/src/timestamp.rs @@ -1,10 +1,8 @@ use core::fmt; +use cosmwasm_core::Uint64; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::math::Uint64; -use crate::prelude::*; - /// A point in time in nanosecond precision. /// /// This type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z. diff --git a/packages/std/src/traits.rs b/packages/std/src/traits.rs index fd974cd619..1b51b2be4e 100644 --- a/packages/std/src/traits.rs +++ b/packages/std/src/traits.rs @@ -1,11 +1,9 @@ use core::marker::PhantomData; use core::ops::Deref; +use cosmwasm_core::{Addr, CanonicalAddr}; use serde::{de::DeserializeOwned, Serialize}; -use crate::addresses::{Addr, CanonicalAddr}; -use crate::binary::Binary; use crate::coin::Coin; -use crate::errors::{RecoverPubkeyError, StdError, StdResult, VerificationError}; #[cfg(feature = "iterator")] use crate::iterator::{Order, Record}; use crate::prelude::*; @@ -27,10 +25,11 @@ use crate::query::{ DistributionQuery, }; use crate::results::{ContractResult, Empty, SystemResult}; -use crate::serde::{from_json, to_json_binary, to_json_vec}; use crate::ContractInfoResponse; +use crate::{from_json, to_json_binary, to_json_vec, Binary}; #[cfg(feature = "cosmwasm_1_3")] use crate::{DenomMetadata, PageRequest}; +use crate::{RecoverPubkeyError, StdError, StdResult, VerificationError}; /// Storage provides read and write access to a persistent storage. /// If you only want to provide read access, provide `&Storage` diff --git a/packages/std/src/types.rs b/packages/std/src/types.rs index 6a77eccd80..654da76dab 100644 --- a/packages/std/src/types.rs +++ b/packages/std/src/types.rs @@ -1,7 +1,7 @@ +use cosmwasm_core::Addr; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use crate::addresses::Addr; use crate::coin::Coin; use crate::prelude::*; use crate::timestamp::Timestamp; diff --git a/packages/vm/Cargo.toml b/packages/vm/Cargo.toml index 647b8ae2f3..f140107243 100644 --- a/packages/vm/Cargo.toml +++ b/packages/vm/Cargo.toml @@ -46,9 +46,10 @@ crc32fast = "1.3.2" bech32 = "0.11.0" # Uses the path when built locally; uses the given version from crates.io when published cosmwasm-std = { version = "2.0.1", path = "../std", default-features = false, features = ["std"] } -cosmwasm-crypto = { version = "2.0.1", path = "../crypto" } +cosmwasm-crypto = { version = "2.0.1", path = "../crypto", features = ["std"] } derivative = "2" hex = "0.4" +rand_core = { version = "0.6", features = ["getrandom"] } schemars = { workspace = true } serde = { workspace = true } serde_json = "1.0.40" @@ -75,10 +76,10 @@ tracing = "0.1.32" criterion = { version = "0.5.1", features = ["html_reports"] } glob = "0.3.1" hex-literal = "0.4.1" +rand = "0.8" tempfile = "3.1.0" wat = "1.0" clap = "4" -rand = "0.8" leb128 = "0.2" target-lexicon = "0.12" time = { version = "0.3.28", features = ["formatting"] } diff --git a/packages/vm/src/imports.rs b/packages/vm/src/imports.rs index 4be82c6744..b0324f16f5 100644 --- a/packages/vm/src/imports.rs +++ b/packages/vm/src/imports.rs @@ -10,6 +10,7 @@ use cosmwasm_crypto::{ use cosmwasm_crypto::{ ECDSA_PUBKEY_MAX_LEN, ECDSA_SIGNATURE_LEN, EDDSA_PUBKEY_LEN, MESSAGE_HASH_MAX_LEN, }; +use rand_core::OsRng; #[cfg(feature = "iterator")] use cosmwasm_std::Order; @@ -484,7 +485,7 @@ pub fn do_ed25519_batch_verify< } * signatures.len() as u64; let gas_info = GasInfo::with_cost(max(gas_cost, data.gas_config.ed25519_verify_cost)); process_gas_info(data, &mut store, gas_info)?; - let result = ed25519_batch_verify(&messages, &signatures, &public_keys); + let result = ed25519_batch_verify(&mut OsRng, &messages, &signatures, &public_keys); let code = match result { Ok(valid) => { if valid {