diff --git a/Cargo.lock b/Cargo.lock index 8997efbaba4..aa99c992e68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -425,30 +425,22 @@ checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" [[package]] name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bincode" -version = "2.0.0-rc.3" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" dependencies = [ "bincode_derive", "serde", + "unty", ] [[package]] name = "bincode_derive" -version = "2.0.0-rc.3" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e30759b3b99a1b802a7a3aa21c85c3ded5c28e1c83170d82d70f08bbf7f3e4c" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" dependencies = [ - "virtue 0.0.13", + "virtue 0.0.18", ] [[package]] @@ -1389,10 +1381,10 @@ dependencies = [ [[package]] name = "dash-network" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "bincode_derive", "hex", "serde", @@ -1467,12 +1459,12 @@ dependencies = [ [[package]] name = "dash-spv" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ "anyhow", "async-trait", - "bincode 1.3.3", + "bincode", "blsful", "chrono", "clap", @@ -1498,8 +1490,8 @@ dependencies = [ [[package]] name = "dash-spv-ffi" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ "cbindgen 0.29.2", "clap", @@ -1524,13 +1516,13 @@ dependencies = [ [[package]] name = "dashcore" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ "anyhow", "base64-compat", "bech32 0.9.1", - "bincode 2.0.0-rc.3", + "bincode", "bincode_derive", "bitvec", "blake3", @@ -1550,13 +1542,13 @@ dependencies = [ [[package]] name = "dashcore-private" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" [[package]] name = "dashcore-rpc" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ "dashcore-rpc-json", "hex", @@ -1568,10 +1560,10 @@ dependencies = [ [[package]] name = "dashcore-rpc-json" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "dashcore", "hex", "key-wallet", @@ -1583,10 +1575,10 @@ dependencies = [ [[package]] name = "dashcore_hashes" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "dashcore-private", "rs-x11-hash", "secp256k1", @@ -1771,8 +1763,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "bech32 0.11.1", - "bincode 2.0.0-rc.3", - "bincode_derive", + "bincode", "bs58", "byteorder", "chrono", @@ -1826,7 +1817,7 @@ dependencies = [ "arc-swap", "assert_matches", "base64 0.22.1", - "bincode 2.0.0-rc.3", + "bincode", "bs58", "byteorder", "chrono", @@ -1867,7 +1858,7 @@ dependencies = [ "arc-swap", "assert_matches", "async-trait", - "bincode 2.0.0-rc.3", + "bincode", "bls-signatures", "chrono", "ciborium", @@ -1919,7 +1910,7 @@ dependencies = [ name = "drive-proof-verifier" version = "3.0.0-rc.1" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "dapi-grpc", "dash-context-provider", "derive_more 1.0.0", @@ -2483,10 +2474,10 @@ dependencies = [ [[package]] name = "grovedb" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ "axum 0.8.8", - "bincode 2.0.0-rc.3", + "bincode", "bincode_derive", "blake3", "grovedb-costs", @@ -2516,7 +2507,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ "integer-encoding", "intmap", @@ -2526,9 +2517,9 @@ dependencies = [ [[package]] name = "grovedb-element" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "bincode_derive", "grovedb-path", "grovedb-version", @@ -2541,7 +2532,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ "grovedb-costs", "hex", @@ -2553,9 +2544,9 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "bincode_derive", "blake3", "byteorder", @@ -2578,7 +2569,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ "hex", ] @@ -2586,7 +2577,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ "blake3", "grovedb-costs", @@ -2605,7 +2596,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ "thiserror 2.0.17", "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2614,7 +2605,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ "hex", "itertools 0.14.0", @@ -2623,7 +2614,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "4.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a7bc60a6760c395e90489c655eee84ae75003af4#a7bc60a6760c395e90489c655eee84ae75003af4" +source = "git+https://github.com/dashpay/grovedb?rev=a526c1e5988c8f47544ac6db7ec7bd56621136eb#a526c1e5988c8f47544ac6db7ec7bd56621136eb" dependencies = [ "serde", "serde_with 3.16.1", @@ -3402,13 +3393,13 @@ dependencies = [ [[package]] name = "key-wallet" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ "aes", "async-trait", "base58ck", - "bincode 2.0.0-rc.3", + "bincode", "bincode_derive", "bip39", "bitflags 2.10.0", @@ -3432,8 +3423,8 @@ dependencies = [ [[package]] name = "key-wallet-ffi" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ "cbindgen 0.29.2", "dash-network", @@ -3448,11 +3439,11 @@ dependencies = [ [[package]] name = "key-wallet-manager" -version = "0.40.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=e7792c431c55c0d28efb0344b3a1948f576be5ce#e7792c431c55c0d28efb0344b3a1948f576be5ce" +version = "0.41.0" +source = "git+https://github.com/dashpay/rust-dashcore?rev=852431229405e91004cc891cb4f676eafed68812#852431229405e91004cc891cb4f676eafed68812" dependencies = [ "async-trait", - "bincode 2.0.0-rc.3", + "bincode", "dashcore", "dashcore_hashes", "key-wallet", @@ -4279,7 +4270,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" name = "platform-serialization" version = "3.0.0-rc.1" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "platform-version", ] @@ -4298,7 +4289,7 @@ name = "platform-value" version = "3.0.0-rc.1" dependencies = [ "base64 0.22.1", - "bincode 2.0.0-rc.3", + "bincode", "bs58", "ciborium", "hex", @@ -4324,7 +4315,7 @@ dependencies = [ name = "platform-version" version = "3.0.0-rc.1" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "grovedb-version", "once_cell", "thiserror 2.0.17", @@ -5192,7 +5183,7 @@ dependencies = [ name = "rs-sdk-ffi" version = "3.0.0-rc.1" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "bs58", "cbindgen 0.27.0", "dash-sdk", @@ -5897,7 +5888,7 @@ name = "simple-signer" version = "3.0.0-rc.1" dependencies = [ "base64 0.22.1", - "bincode 2.0.0-rc.3", + "bincode", "dpp", "hex", "tracing", @@ -5993,7 +5984,7 @@ dependencies = [ name = "strategy-tests" version = "3.0.0-rc.1" dependencies = [ - "bincode 2.0.0-rc.3", + "bincode", "dpp", "drive", "hex", @@ -6985,6 +6976,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "ureq" version = "3.1.4" @@ -7087,15 +7084,15 @@ source = "git+https://github.com/dashpay/versioned-feature-core#560157096c8405a4 [[package]] name = "virtue" -version = "0.0.13" +version = "0.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dcc60c0624df774c82a0ef104151231d37da4962957d691c011c852b2473314" +checksum = "7302ac74a033bf17b6e609ceec0f891ca9200d502d31f02dc7908d3d98767c9d" [[package]] name = "virtue" -version = "0.0.17" +version = "0.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7302ac74a033bf17b6e609ceec0f891ca9200d502d31f02dc7908d3d98767c9d" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" [[package]] name = "vsss-rs" @@ -7263,7 +7260,7 @@ version = "3.0.0-rc.1" dependencies = [ "anyhow", "async-trait", - "bincode 2.0.0-rc.3", + "bincode", "dpp", "hex", "itertools 0.13.0", @@ -7286,7 +7283,7 @@ name = "wasm-dpp2" version = "3.0.0-rc.1" dependencies = [ "anyhow", - "bincode 2.0.0-rc.3", + "bincode", "dpp", "hex", "js-sys", @@ -7303,7 +7300,7 @@ name = "wasm-drive-verify" version = "3.0.0-rc.1" dependencies = [ "base64 0.22.1", - "bincode 2.0.0-rc.3", + "bincode", "bs58", "ciborium", "console_error_panic_hook", diff --git a/packages/rs-dapi/Cargo.toml b/packages/rs-dapi/Cargo.toml index b9e69520106..a3af03c65d9 100644 --- a/packages/rs-dapi/Cargo.toml +++ b/packages/rs-dapi/Cargo.toml @@ -87,8 +87,8 @@ prometheus = "0.14" once_cell = "1.19" # Dash Core RPC client -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce" } -dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce" } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812" } +dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812" } rs-dash-event-bus = { path = "../rs-dash-event-bus" } diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 4805c7aa63f..c5dd09728fd 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -24,7 +24,7 @@ chrono = { version = "0.4.35", default-features = false, features = [ ] } chrono-tz = { version = "0.8", optional = true } ciborium = { version = "0.2.2", optional = true } -dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce", features = [ +dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812", features = [ "std", "secp-recovery", "rand", @@ -32,10 +32,10 @@ dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c "serde", "eddsa", ], default-features = false } -key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce", optional = true } -key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce", optional = true } -dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce", optional = true } -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce", optional = true } +key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812", optional = true } +key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812", optional = true } +dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812", optional = true } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812", optional = true } env_logger = { version = "0.11" } getrandom = { version = "0.2", features = ["js"] } @@ -48,8 +48,7 @@ jsonschema = { git = "https://github.com/dashpay/jsonschema-rs", branch = "confi ], optional = true } lazy_static = { version = "1.4" } num_enum = "0.7" -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } -bincode_derive = { version = "=2.0.0-rc.3" } +bincode = { version = "=2.0.1", features = ["serde"] } rand = { version = "0.8.5", features = ["small_rng"] } regex = { version = "1.10.4" } serde = { version = "1.0.219", features = ["derive"] } @@ -330,7 +329,3 @@ token-reward-explanations = ["dep:chrono-tz"] factories = [] client = ["factories", "state-transitions"] - -[package.metadata.cargo-machete] -# bincode_derive is referenced here to ensure that we use correct version =2.0.0-rc.3; otherwise it gets updated to 2.0.1 -ignored = ["bincode_derive"] diff --git a/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs b/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs index 1905ced0249..dae89b41b64 100644 --- a/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs +++ b/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs @@ -2,7 +2,7 @@ pub mod deduct_fee_from_inputs_and_outputs; pub use deduct_fee_from_inputs_and_outputs::FeeDeductionResult; -use bincode_derive::{Decode, Encode}; +use bincode::{Decode, Encode}; #[cfg(feature = "state-transition-serde-conversion")] use serde::{Deserialize, Serialize}; diff --git a/packages/rs-dpp/src/address_funds/witness.rs b/packages/rs-dpp/src/address_funds/witness.rs index e4a057dbaa2..c8d6aa2fc69 100644 --- a/packages/rs-dpp/src/address_funds/witness.rs +++ b/packages/rs-dpp/src/address_funds/witness.rs @@ -53,8 +53,8 @@ impl Encode for AddressWitness { } } -impl Decode for AddressWitness { - fn decode(decoder: &mut D) -> Result { +impl Decode for AddressWitness { + fn decode>(decoder: &mut D) -> Result { let discriminant = u8::decode(decoder)?; match discriminant { 0 => { @@ -77,8 +77,10 @@ impl Decode for AddressWitness { } } -impl<'de> bincode::BorrowDecode<'de> for AddressWitness { - fn borrow_decode>(decoder: &mut D) -> Result { +impl<'de, C> bincode::BorrowDecode<'de, C> for AddressWitness { + fn borrow_decode>( + decoder: &mut D, + ) -> Result { let discriminant = u8::borrow_decode(decoder)?; match discriminant { 0 => { diff --git a/packages/rs-dpp/src/block/epoch/mod.rs b/packages/rs-dpp/src/block/epoch/mod.rs index 419930b4cf3..a08cda6a0e2 100644 --- a/packages/rs-dpp/src/block/epoch/mod.rs +++ b/packages/rs-dpp/src/block/epoch/mod.rs @@ -96,8 +96,8 @@ impl<'de> Deserialize<'de> for Epoch { } } -impl Decode for Epoch { - fn decode( +impl Decode for Epoch { + fn decode>( decoder: &mut D, ) -> Result { let index = EpochIndex::decode(decoder)?; @@ -105,8 +105,8 @@ impl Decode for Epoch { } } -impl<'de> BorrowDecode<'de> for Epoch { - fn borrow_decode>( +impl<'de, C> BorrowDecode<'de, C> for Epoch { + fn borrow_decode>( decoder: &mut D, ) -> Result { let index = EpochIndex::borrow_decode(decoder)?; diff --git a/packages/rs-dpp/src/core_types/validator/v0/mod.rs b/packages/rs-dpp/src/core_types/validator/v0/mod.rs index fe45fe675da..c6040b1e2aa 100644 --- a/packages/rs-dpp/src/core_types/validator/v0/mod.rs +++ b/packages/rs-dpp/src/core_types/validator/v0/mod.rs @@ -81,8 +81,8 @@ impl Encode for ValidatorV0 { } #[cfg(feature = "core-types-serialization")] -impl Decode for ValidatorV0 { - fn decode(decoder: &mut D) -> Result { +impl Decode for ValidatorV0 { + fn decode>(decoder: &mut D) -> Result { // Decode each field in the same order as they were encoded // Decode ProTxHash diff --git a/packages/rs-dpp/src/core_types/validator_set/v0/mod.rs b/packages/rs-dpp/src/core_types/validator_set/v0/mod.rs index 8366ab31932..b128fea1a62 100644 --- a/packages/rs-dpp/src/core_types/validator_set/v0/mod.rs +++ b/packages/rs-dpp/src/core_types/validator_set/v0/mod.rs @@ -1,7 +1,7 @@ use crate::bls_signatures::PublicKey as BlsPublicKey; use crate::core_types::validator::v0::ValidatorV0; #[cfg(feature = "core-types-serialization")] -use bincode::de::Decoder; +use bincode::de::{BorrowDecoder, Decoder}; #[cfg(feature = "core-types-serialization")] use bincode::enc::Encoder; #[cfg(feature = "core-types-serialization")] @@ -95,8 +95,10 @@ impl Encode for ValidatorSetV0 { } #[cfg(feature = "core-types-serialization")] -impl Decode for ValidatorSetV0 { - fn decode(decoder: &mut D) -> Result { +impl Decode for ValidatorSetV0 { + fn decode>( + decoder: &mut D, + ) -> Result { // Decode the quorum hash directly as a [u8; 32] array let quorum_hash = <[u8; 32]>::decode(decoder)?; let quorum_index = Option::::decode(decoder)?; @@ -139,8 +141,10 @@ impl Decode for ValidatorSetV0 { } #[cfg(feature = "core-types-serialization")] -impl BorrowDecode<'_> for ValidatorSetV0 { - fn borrow_decode(decoder: &mut D) -> Result { +impl<'de, C> BorrowDecode<'de, C> for ValidatorSetV0 { + fn borrow_decode>( + decoder: &mut D, + ) -> Result { // Decode each field in the same order as they were encoded // Decode the quorum hash directly as a [u8; 32] array diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/encode.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/encode.rs index 0b6c6393d2c..a68fc360248 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/encode.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/encode.rs @@ -151,8 +151,8 @@ impl Encode for DistributionFunction { } } -impl Decode for DistributionFunction { - fn decode( +impl Decode for DistributionFunction { + fn decode>( decoder: &mut D, ) -> Result { let variant = u8::decode(decoder)?; @@ -301,8 +301,8 @@ impl Decode for DistributionFunction { } } -impl<'de> BorrowDecode<'de> for DistributionFunction { - fn borrow_decode>( +impl<'de, C> BorrowDecode<'de, C> for DistributionFunction { + fn borrow_decode>( decoder: &mut D, ) -> Result { let variant = u8::borrow_decode(decoder)?; diff --git a/packages/rs-dpp/src/document/extended_document/serialize.rs b/packages/rs-dpp/src/document/extended_document/serialize.rs index 8abf17aab50..7da18080d1c 100644 --- a/packages/rs-dpp/src/document/extended_document/serialize.rs +++ b/packages/rs-dpp/src/document/extended_document/serialize.rs @@ -70,7 +70,7 @@ impl PlatformVersionEncode for ExtendedDocument { } impl PlatformVersionedDecode for ExtendedDocument { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { diff --git a/packages/rs-dpp/src/identity/core_script.rs b/packages/rs-dpp/src/identity/core_script.rs index 19380c8ab75..ba3b217411e 100644 --- a/packages/rs-dpp/src/identity/core_script.rs +++ b/packages/rs-dpp/src/identity/core_script.rs @@ -92,16 +92,18 @@ impl Encode for CoreScript { } // Implement the bincode::Decode trait for CoreScript -impl Decode for CoreScript { - fn decode(decoder: &mut D) -> Result { +impl Decode for CoreScript { + fn decode>(decoder: &mut D) -> Result { let bytes = Vec::::decode(decoder)?; // Create a CoreScript instance using the decoded DashCoreScript Ok(CoreScript(ScriptBuf(bytes))) } } -impl<'de> BorrowDecode<'de> for CoreScript { - fn borrow_decode>(decoder: &mut D) -> Result { +impl<'de, C> BorrowDecode<'de, C> for CoreScript { + fn borrow_decode>( + decoder: &mut D, + ) -> Result { // Read the serialized bytes from the decoder into a Vec let mut bytes = Vec::new(); loop { diff --git a/packages/rs-dpp/src/lib.rs b/packages/rs-dpp/src/lib.rs index 09b04bd2a8d..d160ad35b99 100644 --- a/packages/rs-dpp/src/lib.rs +++ b/packages/rs-dpp/src/lib.rs @@ -131,6 +131,7 @@ pub mod prelude { } pub use bincode; +pub use bincode::enc::Encode; #[cfg(feature = "bls-signatures")] pub use dashcore::blsful as bls_signatures; #[cfg(feature = "ed25519-dalek")] @@ -140,4 +141,5 @@ pub use data_contracts; #[cfg(feature = "jsonschema")] pub use jsonschema; pub use platform_serialization; +pub use platform_serialization::de::{BorrowDecode, Decode, DefaultBorrowDecode, DefaultDecode}; pub use platform_value; diff --git a/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs b/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs index 72d8e1fd565..260e94aa952 100644 --- a/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs +++ b/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::data_contract::UnknownGasFeesPaidByError; use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode_derive::{Decode, Encode}; +use bincode::{Decode, Encode}; use derive_more::Display; #[cfg(any( feature = "state-transition-serde-conversion", diff --git a/packages/rs-dpp/src/tokens/token_payment_info/mod.rs b/packages/rs-dpp/src/tokens/token_payment_info/mod.rs index 50aaf097079..760b4031d8c 100644 --- a/packages/rs-dpp/src/tokens/token_payment_info/mod.rs +++ b/packages/rs-dpp/src/tokens/token_payment_info/mod.rs @@ -49,7 +49,7 @@ use crate::tokens::token_payment_info::methods::v0::TokenPaymentInfoMethodsV0; use crate::tokens::token_payment_info::v0::v0_accessors::TokenPaymentInfoAccessorsV0; use crate::tokens::token_payment_info::v0::TokenPaymentInfoV0; use crate::ProtocolError; -use bincode_derive::{Decode, Encode}; +use bincode::{Decode, Encode}; use derive_more::{Display, From}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::btreemap_extensions::BTreeValueMapHelper; diff --git a/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs b/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs index 8719cba8b26..919c7434b6f 100644 --- a/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs @@ -5,7 +5,7 @@ use crate::data_contract::TokenContractPosition; use crate::tokens::gas_fees_paid_by::GasFeesPaidBy; use crate::tokens::token_payment_info::v0::v0_accessors::TokenPaymentInfoAccessorsV0; use crate::ProtocolError; -use bincode_derive::{Decode, Encode}; +use bincode::{Decode, Encode}; use derive_more::Display; use platform_value::btreemap_extensions::BTreeValueRemoveFromMapHelper; use platform_value::{Identifier, Value}; diff --git a/packages/rs-dpp/src/tokens/token_pricing_schedule.rs b/packages/rs-dpp/src/tokens/token_pricing_schedule.rs index 504837c2294..66e3d9efa5d 100644 --- a/packages/rs-dpp/src/tokens/token_pricing_schedule.rs +++ b/packages/rs-dpp/src/tokens/token_pricing_schedule.rs @@ -1,7 +1,7 @@ use crate::balances::credits::TokenAmount; use crate::errors::ProtocolError; use crate::fee::Credits; -use bincode_derive::{Decode, Encode}; +use bincode::{Decode, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; #[cfg(feature = "state-transition-serde-conversion")] use serde::{Deserialize, Serialize}; diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 8f2c402b20c..4fd96de0a8e 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -14,7 +14,7 @@ license = "MIT" [dependencies] arc-swap = "1.7.0" -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } +bincode = { version = "=2.0.1", features = ["serde"] } ciborium = { version = "0.2.2" } chrono = "0.4.35" serde = { version = "1.0.219", features = ["derive"] } diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index 471319bc502..648c5061313 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -32,7 +32,7 @@ dpp = { path = "../rs-dpp", features = [ dash-context-provider = { path = "../rs-context-provider", features = [ "mocks", ] } -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } +bincode = { version = "=2.0.1", features = ["serde"] } platform-serialization-derive = { path = "../rs-platform-serialization-derive", optional = true } platform-serialization = { path = "../rs-platform-serialization" } tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", tag = "v1.5.0-dev.2", features = [ diff --git a/packages/rs-drive-proof-verifier/src/types.rs b/packages/rs-drive-proof-verifier/src/types.rs index ec2c938c744..05be5edfc8c 100644 --- a/packages/rs-drive-proof-verifier/src/types.rs +++ b/packages/rs-drive-proof-verifier/src/types.rs @@ -333,7 +333,7 @@ impl PlatformVersionEncode for ContestedResources { #[cfg(feature = "mocks")] impl PlatformVersionedDecode for ContestedResources { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &platform_version::PlatformVersion, ) -> Result { @@ -587,7 +587,7 @@ impl PlatformVersionEncode for MasternodeProtocolVote { #[cfg(feature = "mocks")] impl PlatformVersionedDecode for MasternodeProtocolVote { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 33fc6524e9e..6f190b5db79 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -14,7 +14,7 @@ license = "MIT" resolver = "2" [dependencies] -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } +bincode = { version = "=2.0.1", features = ["serde"] } platform-version = { path = "../rs-platform-version" } # used to convert integers to bytes, needed in verifier integer-encoding = { version = "4.0.0" } @@ -52,12 +52,12 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "a7bc60a6760c395e90489c655eee84ae75003af4", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "a7bc60a6760c395e90489c655eee84ae75003af4", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "a7bc60a6760c395e90489c655eee84ae75003af4" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "a7bc60a6760c395e90489c655eee84ae75003af4", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a7bc60a6760c395e90489c655eee84ae75003af4" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "a7bc60a6760c395e90489c655eee84ae75003af4" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "a526c1e5988c8f47544ac6db7ec7bd56621136eb", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "a526c1e5988c8f47544ac6db7ec7bd56621136eb", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "a526c1e5988c8f47544ac6db7ec7bd56621136eb" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "a526c1e5988c8f47544ac6db7ec7bd56621136eb", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a526c1e5988c8f47544ac6db7ec7bd56621136eb" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "a526c1e5988c8f47544ac6db7ec7bd56621136eb" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-platform-serialization-derive/src/derive_bincode_enum.rs b/packages/rs-platform-serialization-derive/src/derive_bincode_enum.rs index c89f5aef88c..5ae10c3921e 100644 --- a/packages/rs-platform-serialization-derive/src/derive_bincode_enum.rs +++ b/packages/rs-platform-serialization-derive/src/derive_bincode_enum.rs @@ -246,7 +246,13 @@ impl DeriveEnum { Ok(()) })? .generate_fn("platform_versioned_decode") - .with_generic_deps("__D", [format!("{}::de::Decoder", crate_name)]) + .with_generic_deps( + "__D", + [format!( + "{}::de::Decoder", + crate_name, crate_name + )], + ) .with_arg("decoder", "&mut __D") .with_arg("platform_version", "&platform_version::version::PlatformVersion") .with_return_type(format!("core::result::Result", crate_name)) @@ -259,7 +265,7 @@ impl DeriveEnum { } else { fn_builder .push_parsed(format!( - "let variant_index = ::decode(decoder)?;", + "let variant_index = ::decode(decoder)?;", crate_name ))?; fn_builder.push_parsed("match variant_index")?; @@ -296,7 +302,7 @@ impl DeriveEnum { if attributes.with_serde { variant_body .push_parsed(format!( - " as {0}::Decode>::decode(decoder)?.0,", + " as {0}::DefaultDecode>::decode(decoder)?.0,", crate_name ))?; } else if attributes.with_platform_version { @@ -308,7 +314,7 @@ impl DeriveEnum { } else { variant_body .push_parsed(format!( - "{}::Decode::decode(decoder)?,", + "{}::DefaultDecode::decode(decoder)?,", crate_name ))?; } @@ -353,7 +359,13 @@ impl DeriveEnum { Ok(()) })? .generate_fn("platform_versioned_borrow_decode") - .with_generic_deps("__D", [format!("{}::de::BorrowDecoder<'__de>", crate_name)]) + .with_generic_deps( + "__D", + [format!( + "{}::de::BorrowDecoder<'__de, Context = {}::BincodeContext>", + crate_name, crate_name + )], + ) .with_arg("decoder", "&mut __D") .with_arg("platform_version", "&platform_version::version::PlatformVersion") .with_return_type(format!("core::result::Result", crate_name)) @@ -365,7 +377,7 @@ impl DeriveEnum { ))?; } else { fn_builder - .push_parsed(format!("let variant_index = ::decode(decoder)?;", crate_name))?; + .push_parsed(format!("let variant_index = ::decode(decoder)?;", crate_name))?; fn_builder.push_parsed("match variant_index")?; fn_builder.group(Delimiter::Brace, |variant_case| { for (mut variant_index, variant) in self.iter_fields() { @@ -399,11 +411,11 @@ impl DeriveEnum { let attributes = field.attributes().get_attribute::()?.unwrap_or_default(); if attributes.with_serde { variant_body - .push_parsed(format!(" as {0}::BorrowDecode>::borrow_decode(decoder)?.0,", crate_name))?; + .push_parsed(format!(" as {0}::DefaultBorrowDecode>::borrow_decode(decoder)?.0,", crate_name))?; } else if attributes.with_platform_version { variant_body.push_parsed(format!("{}::PlatformVersionedBorrowDecode::platform_versioned_borrow_decode(decoder, platform_version)?,", crate_name))?; } else { - variant_body.push_parsed(format!("{}::BorrowDecode::borrow_decode(decoder)?,", crate_name))?; + variant_body.push_parsed(format!("{}::DefaultBorrowDecode::borrow_decode(decoder)?,", crate_name))?; } } } diff --git a/packages/rs-platform-serialization-derive/src/derive_bincode_struct.rs b/packages/rs-platform-serialization-derive/src/derive_bincode_struct.rs index 824991e6b8c..fcc55797b78 100644 --- a/packages/rs-platform-serialization-derive/src/derive_bincode_struct.rs +++ b/packages/rs-platform-serialization-derive/src/derive_bincode_struct.rs @@ -86,7 +86,13 @@ impl DeriveStruct { Ok(()) })? .generate_fn("platform_versioned_decode") - .with_generic_deps("__D", [format!("{}::de::Decoder", crate_name)]) + .with_generic_deps( + "__D", + [format!( + "{}::de::Decoder", + crate_name, crate_name + )], + ) .with_arg("decoder", "&mut __D") .with_arg("platform_version", "&platform_version::version::PlatformVersion") .with_return_type(format!("core::result::Result", crate_name)) @@ -108,7 +114,7 @@ impl DeriveStruct { if attributes.with_serde { struct_body .push_parsed(format!( - "{1}: ( as {0}::Decode>::decode(decoder)?).0,", + "{1}: ( as {0}::DefaultDecode>::decode(decoder)?).0,", crate_name, field ))?; @@ -122,7 +128,7 @@ impl DeriveStruct { } else { struct_body .push_parsed(format!( - "{1}: {0}::Decode::decode(decoder)?,", + "{1}: {0}::DefaultDecode::decode(decoder)?,", crate_name, field ))?; @@ -152,7 +158,13 @@ impl DeriveStruct { where_constraints.push_parsed_constraint(bounds).map_err(|e| e.with_span(lit.span()))?; } else { for g in generics.iter_generics() { - where_constraints.push_constraint(g, format!("{}::de::BorrowDecode<'__de>", crate_name)).unwrap(); + where_constraints.push_constraint( + g, + format!( + "{}::de::BorrowDecode<'__de, {}::BincodeContext>", + crate_name, crate_name + ), + ).unwrap(); } for lt in generics.iter_lifetimes() { where_constraints.push_parsed_constraint(format!("'__de: '{}", lt.ident))?; @@ -161,7 +173,13 @@ impl DeriveStruct { Ok(()) })? .generate_fn("platform_versioned_borrow_decode") - .with_generic_deps("__D", [format!("{}::de::BorrowDecoder<'__de>", crate_name)]) + .with_generic_deps( + "__D", + [format!( + "{}::de::BorrowDecoder<'__de, Context = {}::BincodeContext>", + crate_name, crate_name + )], + ) .with_arg("decoder", "&mut __D") .with_arg("platform_version", "&platform_version::version::PlatformVersion") .with_return_type(format!("core::result::Result", crate_name)) @@ -177,7 +195,7 @@ impl DeriveStruct { if attributes.with_serde { struct_body .push_parsed(format!( - "{1}: ( as {0}::BorrowDecode>::borrow_decode(decoder)?).0,", + "{1}: ( as {0}::DefaultBorrowDecode>::borrow_decode(decoder)?).0,", crate_name, field ))?; @@ -191,7 +209,7 @@ impl DeriveStruct { } else { struct_body .push_parsed(format!( - "{1}: {0}::BorrowDecode::borrow_decode(decoder)?,", + "{1}: {0}::DefaultBorrowDecode::borrow_decode(decoder)?,", crate_name, field ))?; diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index aebd99314b8..7f83bc4226e 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -8,5 +8,5 @@ rust-version.workspace = true license = "MIT" [dependencies] -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } +bincode = { version = "=2.0.1", features = ["serde"] } platform-version = { path = "../rs-platform-version" } diff --git a/packages/rs-platform-serialization/src/de/impl_tuples.rs b/packages/rs-platform-serialization/src/de/impl_tuples.rs index bad7c6bb23e..4b4fcbabf6f 100644 --- a/packages/rs-platform-serialization/src/de/impl_tuples.rs +++ b/packages/rs-platform-serialization/src/de/impl_tuples.rs @@ -13,7 +13,7 @@ macro_rules! impl_tuple { $extra : PlatformVersionedBorrowDecode<'de>, )* { - fn platform_versioned_borrow_decode>(decoder: &mut BD, platform_version: &PlatformVersion) -> Result { + fn platform_versioned_borrow_decode>(decoder: &mut BD, platform_version: &PlatformVersion) -> Result { Ok(( $first::platform_versioned_borrow_decode(decoder, platform_version)?, $($extra :: platform_versioned_borrow_decode(decoder, platform_version)?, )* @@ -28,7 +28,7 @@ macro_rules! impl_tuple { $extra : PlatformVersionedDecode, )* { - fn platform_versioned_decode(decoder: &mut DE, platform_version: &PlatformVersion) -> Result { + fn platform_versioned_decode>(decoder: &mut DE, platform_version: &PlatformVersion) -> Result { Ok(( $first::platform_versioned_decode(decoder, platform_version)?, $($extra :: platform_versioned_decode(decoder, platform_version)?, )* diff --git a/packages/rs-platform-serialization/src/de/impls.rs b/packages/rs-platform-serialization/src/de/impls.rs index 36ed3cb3fdd..1c11192e761 100644 --- a/packages/rs-platform-serialization/src/de/impls.rs +++ b/packages/rs-platform-serialization/src/de/impls.rs @@ -17,7 +17,7 @@ use core::{ use platform_version::version::PlatformVersion; impl PlatformVersionedDecode for bool { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -28,7 +28,7 @@ impl_platform_versioned_borrow_decode!(bool); impl PlatformVersionedDecode for u8 { #[inline] - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -38,7 +38,7 @@ impl PlatformVersionedDecode for u8 { impl_platform_versioned_borrow_decode!(u8); impl PlatformVersionedDecode for NonZeroU8 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -48,7 +48,7 @@ impl PlatformVersionedDecode for NonZeroU8 { impl_platform_versioned_borrow_decode!(NonZeroU8); impl PlatformVersionedDecode for u16 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -58,7 +58,7 @@ impl PlatformVersionedDecode for u16 { impl_platform_versioned_borrow_decode!(u16); impl PlatformVersionedDecode for NonZeroU16 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -68,7 +68,7 @@ impl PlatformVersionedDecode for NonZeroU16 { impl_platform_versioned_borrow_decode!(NonZeroU16); impl PlatformVersionedDecode for u32 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -78,7 +78,7 @@ impl PlatformVersionedDecode for u32 { impl_platform_versioned_borrow_decode!(u32); impl PlatformVersionedDecode for NonZeroU32 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -88,7 +88,7 @@ impl PlatformVersionedDecode for NonZeroU32 { impl_platform_versioned_borrow_decode!(NonZeroU32); impl PlatformVersionedDecode for u64 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -98,7 +98,7 @@ impl PlatformVersionedDecode for u64 { impl_platform_versioned_borrow_decode!(u64); impl PlatformVersionedDecode for NonZeroU64 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -108,7 +108,7 @@ impl PlatformVersionedDecode for NonZeroU64 { impl_platform_versioned_borrow_decode!(NonZeroU64); impl PlatformVersionedDecode for u128 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -118,7 +118,7 @@ impl PlatformVersionedDecode for u128 { impl_platform_versioned_borrow_decode!(u128); impl PlatformVersionedDecode for NonZeroU128 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -128,7 +128,7 @@ impl PlatformVersionedDecode for NonZeroU128 { impl_platform_versioned_borrow_decode!(NonZeroU128); impl PlatformVersionedDecode for usize { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -138,7 +138,7 @@ impl PlatformVersionedDecode for usize { impl_platform_versioned_borrow_decode!(usize); impl PlatformVersionedDecode for NonZeroUsize { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -148,7 +148,7 @@ impl PlatformVersionedDecode for NonZeroUsize { impl_platform_versioned_borrow_decode!(NonZeroUsize); impl PlatformVersionedDecode for i8 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -158,7 +158,7 @@ impl PlatformVersionedDecode for i8 { impl_platform_versioned_borrow_decode!(i8); impl PlatformVersionedDecode for NonZeroI8 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -168,7 +168,7 @@ impl PlatformVersionedDecode for NonZeroI8 { impl_platform_versioned_borrow_decode!(NonZeroI8); impl PlatformVersionedDecode for i16 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -178,7 +178,7 @@ impl PlatformVersionedDecode for i16 { impl_platform_versioned_borrow_decode!(i16); impl PlatformVersionedDecode for NonZeroI16 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -188,7 +188,7 @@ impl PlatformVersionedDecode for NonZeroI16 { impl_platform_versioned_borrow_decode!(NonZeroI16); impl PlatformVersionedDecode for i32 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -198,7 +198,7 @@ impl PlatformVersionedDecode for i32 { impl_platform_versioned_borrow_decode!(i32); impl PlatformVersionedDecode for NonZeroI32 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -208,7 +208,7 @@ impl PlatformVersionedDecode for NonZeroI32 { impl_platform_versioned_borrow_decode!(NonZeroI32); impl PlatformVersionedDecode for i64 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -218,7 +218,7 @@ impl PlatformVersionedDecode for i64 { impl_platform_versioned_borrow_decode!(i64); impl PlatformVersionedDecode for NonZeroI64 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -228,7 +228,7 @@ impl PlatformVersionedDecode for NonZeroI64 { impl_platform_versioned_borrow_decode!(NonZeroI64); impl PlatformVersionedDecode for i128 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -238,7 +238,7 @@ impl PlatformVersionedDecode for i128 { impl_platform_versioned_borrow_decode!(i128); impl PlatformVersionedDecode for NonZeroI128 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -248,7 +248,7 @@ impl PlatformVersionedDecode for NonZeroI128 { impl_platform_versioned_borrow_decode!(NonZeroI128); impl PlatformVersionedDecode for isize { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -258,7 +258,7 @@ impl PlatformVersionedDecode for isize { impl_platform_versioned_borrow_decode!(isize); impl PlatformVersionedDecode for NonZeroIsize { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -268,7 +268,7 @@ impl PlatformVersionedDecode for NonZeroIsize { impl_platform_versioned_borrow_decode!(NonZeroIsize); impl PlatformVersionedDecode for f32 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -278,7 +278,7 @@ impl PlatformVersionedDecode for f32 { impl_platform_versioned_borrow_decode!(f32); impl PlatformVersionedDecode for f64 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -288,7 +288,7 @@ impl PlatformVersionedDecode for f64 { impl_platform_versioned_borrow_decode!(f64); impl PlatformVersionedDecode for char { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -298,7 +298,7 @@ impl PlatformVersionedDecode for char { impl_platform_versioned_borrow_decode!(char); impl<'a, 'de: 'a> PlatformVersionedBorrowDecode<'de> for &'a [u8] { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -307,7 +307,7 @@ impl<'a, 'de: 'a> PlatformVersionedBorrowDecode<'de> for &'a [u8] { } impl<'a, 'de: 'a> PlatformVersionedBorrowDecode<'de> for &'a str { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -319,7 +319,7 @@ impl PlatformVersionedDecode for [T; N] where T: PlatformVersionedDecode + Sized + 'static, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -353,7 +353,7 @@ impl<'de, T, const N: usize> PlatformVersionedBorrowDecode<'de> for [T; N] where T: PlatformVersionedBorrowDecode<'de> + Sized + 'static, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -384,7 +384,7 @@ where } impl PlatformVersionedDecode for () { - fn platform_versioned_decode( + fn platform_versioned_decode>( _: &mut D, _platform_version: &PlatformVersion, ) -> Result { @@ -394,7 +394,7 @@ impl PlatformVersionedDecode for () { impl_platform_versioned_borrow_decode!(()); impl PlatformVersionedDecode for core::marker::PhantomData { - fn platform_versioned_decode( + fn platform_versioned_decode>( _: &mut D, _platform_version: &PlatformVersion, ) -> Result { @@ -402,7 +402,7 @@ impl PlatformVersionedDecode for core::marker::PhantomData { } } impl<'de, T> PlatformVersionedBorrowDecode<'de> for core::marker::PhantomData { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( _: &mut D, _platform_version: &PlatformVersion, ) -> Result { @@ -414,7 +414,7 @@ impl PlatformVersionedDecode for Option where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -432,7 +432,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Option where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -451,7 +451,7 @@ where // We'll want to implement BorrowDecode for both Option<&[u8]> and Option<&[T: Encode]>, // but those implementations overlap because &'a [u8] also implements BorrowDecode // impl<'a, 'de: 'a> PlatformVersionedBorrowDecode<'de> for Option<&'a [u8]> { -// fn platform_versioned_borrow_decode>(decoder: &mut D, platform_version: &PlatformVersion) -> Result { +// fn platform_versioned_borrow_decode>(decoder: &mut D, platform_version: &PlatformVersion) -> Result { // match super::decode_option_variant(decoder, core::any::type_name::>())? { // Some(_) => { // let val = BorrowDecode::platform_versioned_borrow_decode(decoder, platform_version)?; @@ -467,7 +467,7 @@ where T: PlatformVersionedDecode, U: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -495,7 +495,7 @@ where T: PlatformVersionedBorrowDecode<'de>, U: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -522,7 +522,7 @@ impl PlatformVersionedDecode for Cell where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -535,7 +535,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Cell where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -548,7 +548,7 @@ impl PlatformVersionedDecode for RefCell where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -561,7 +561,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for RefCell where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -571,7 +571,7 @@ where } impl PlatformVersionedDecode for Duration { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -584,7 +584,7 @@ impl PlatformVersionedDecode for Range where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -597,7 +597,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Range where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -611,7 +611,7 @@ impl PlatformVersionedDecode for RangeInclusive where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -625,7 +625,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for RangeInclusive where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -639,7 +639,7 @@ impl PlatformVersionedDecode for Bound where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -666,7 +666,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Bound where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { diff --git a/packages/rs-platform-serialization/src/de/mod.rs b/packages/rs-platform-serialization/src/de/mod.rs index b71ace8f6e1..309d6edfb79 100644 --- a/packages/rs-platform-serialization/src/de/mod.rs +++ b/packages/rs-platform-serialization/src/de/mod.rs @@ -6,9 +6,38 @@ mod impls; pub use bincode::de::{BorrowDecoder, Decoder}; pub use bincode::error::DecodeError; -pub use bincode::Decode; +pub use bincode::{BorrowDecode, Decode}; use platform_version::version::PlatformVersion; +/// Decode with the default `()` context to avoid repeated generic arguments. +pub trait DefaultDecode: bincode::Decode { + fn decode>( + decoder: &mut D, + ) -> Result + where + Self: Sized, + { + >::decode(decoder) + } +} +impl DefaultDecode for T where T: bincode::Decode {} + +/// BorrowDecode with the default `()` context. +pub trait DefaultBorrowDecode<'de>: bincode::BorrowDecode<'de, crate::BincodeContext> { + fn borrow_decode>( + decoder: &mut D, + ) -> Result + where + Self: Sized, + { + >::borrow_decode(decoder) + } +} +impl<'de, T> DefaultBorrowDecode<'de> for T where + T: bincode::BorrowDecode<'de, crate::BincodeContext> +{ +} + /// Trait that makes a type able to be decoded, akin to serde's `DeserializeOwned` trait. /// /// This trait should be implemented for types which do not have references to data in the reader. For types that contain e.g. `&str` and `&[u8]`, implement [BorrowDecode] instead. @@ -48,7 +77,7 @@ use platform_version::version::PlatformVersion; /// } /// } /// impl<'de> bincode::BorrowDecode<'de> for Entity { -/// fn borrow_decode>( +/// fn borrow_decode>( /// decoder: &mut D, /// ) -> core::result::Result { /// Ok(Self { @@ -77,7 +106,7 @@ use platform_version::version::PlatformVersion; /// ``` pub trait PlatformVersionedDecode: Sized { /// Attempt to decode this type with the given [Decode]. - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result; @@ -90,7 +119,7 @@ pub trait PlatformVersionedDecode: Sized { /// This trait will be automatically implemented if you enable the `derive` feature and add `#[derive(bincode::Decode)]` to a type with a lifetime. pub trait PlatformVersionedBorrowDecode<'de>: Sized { /// Attempt to decode this type with the given [BorrowDecode]. - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result; @@ -101,7 +130,9 @@ pub trait PlatformVersionedBorrowDecode<'de>: Sized { macro_rules! impl_platform_versioned_borrow_decode { ($ty:ty) => { impl<'de> $crate::PlatformVersionedBorrowDecode<'de> for $ty { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode< + D: bincode::de::BorrowDecoder<'de, Context = $crate::BincodeContext>, + >( decoder: &mut D, platform_version: &PlatformVersion, ) -> core::result::Result { @@ -119,11 +150,11 @@ macro_rules! impl_platform_versioned_borrow_decode { /// Decodes only the option variant from the decoder. Will not read any more data than that. #[inline] -pub(crate) fn decode_option_variant( +pub(crate) fn decode_option_variant>( decoder: &mut D, type_name: &'static str, ) -> Result, DecodeError> { - let is_some = u8::decode(decoder)?; + let is_some = ::decode(decoder)?; match is_some { 0 => Ok(None), 1 => Ok(Some(())), @@ -137,8 +168,10 @@ pub(crate) fn decode_option_variant( /// Decodes the length of any slice, container, etc from the decoder #[inline] -pub(crate) fn decode_slice_len(decoder: &mut D) -> Result { - let v = u64::decode(decoder)?; +pub(crate) fn decode_slice_len>( + decoder: &mut D, +) -> Result { + let v = ::decode(decoder)?; v.try_into().map_err(|_| DecodeError::OutsideUsizeRange(v)) } diff --git a/packages/rs-platform-serialization/src/features/impl_alloc.rs b/packages/rs-platform-serialization/src/features/impl_alloc.rs index 96768d3be1b..43164833587 100644 --- a/packages/rs-platform-serialization/src/features/impl_alloc.rs +++ b/packages/rs-platform-serialization/src/features/impl_alloc.rs @@ -72,7 +72,7 @@ impl PlatformVersionedDecode for BinaryHeap where T: PlatformVersionedDecode + Ord, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -94,7 +94,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for BinaryHeap where T: PlatformVersionedBorrowDecode<'de> + Ord, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -135,7 +135,7 @@ where K: PlatformVersionedDecode + Ord, V: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -159,7 +159,7 @@ where K: PlatformVersionedBorrowDecode<'de> + Ord, V: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -202,7 +202,7 @@ impl PlatformVersionedDecode for BTreeSet where T: PlatformVersionedDecode + Ord, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -224,7 +224,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for BTreeSet where T: PlatformVersionedBorrowDecode<'de> + Ord, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -264,7 +264,7 @@ impl PlatformVersionedDecode for VecDeque where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -286,7 +286,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for VecDeque where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -326,7 +326,7 @@ impl PlatformVersionedDecode for Vec where T: PlatformVersionedDecode + 'static, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -357,7 +357,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Vec where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -401,7 +401,7 @@ where } impl PlatformVersionedDecode for String { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -411,7 +411,7 @@ impl PlatformVersionedDecode for String { impl_platform_versioned_borrow_decode!(String); impl PlatformVersionedDecode for Box { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -434,7 +434,7 @@ impl PlatformVersionedDecode for Box where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -446,7 +446,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Box where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -472,7 +472,7 @@ impl PlatformVersionedDecode for Box<[T]> where T: PlatformVersionedDecode + 'static, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -485,7 +485,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Box<[T]> where T: PlatformVersionedBorrowDecode<'de> + 'de, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -499,7 +499,7 @@ where T: ToOwned + ?Sized, ::Owned: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -512,7 +512,7 @@ where T: ToOwned + ?Sized, &'cow T: PlatformVersionedBorrowDecode<'cow>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -564,7 +564,7 @@ impl PlatformVersionedDecode for Rc where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -577,7 +577,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Rc where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -603,7 +603,7 @@ impl PlatformVersionedDecode for Rc<[T]> where T: PlatformVersionedDecode + 'static, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -616,7 +616,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Rc<[T]> where T: PlatformVersionedBorrowDecode<'de> + 'de, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -630,7 +630,7 @@ impl PlatformVersionedDecode for Arc where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -641,7 +641,7 @@ where #[cfg(target_has_atomic = "ptr")] impl PlatformVersionedDecode for Arc { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -654,7 +654,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Arc where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_versioned: &PlatformVersion, ) -> Result { @@ -665,7 +665,7 @@ where #[cfg(target_has_atomic = "ptr")] impl<'de> PlatformVersionedBorrowDecode<'de> for Arc { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -692,7 +692,7 @@ impl PlatformVersionedDecode for Arc<[T]> where T: PlatformVersionedDecode + 'static, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -706,7 +706,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Arc<[T]> where T: PlatformVersionedBorrowDecode<'de> + 'de, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { diff --git a/packages/rs-platform-serialization/src/features/impl_std.rs b/packages/rs-platform-serialization/src/features/impl_std.rs index 93c7327781c..29789ea67fb 100644 --- a/packages/rs-platform-serialization/src/features/impl_std.rs +++ b/packages/rs-platform-serialization/src/features/impl_std.rs @@ -29,12 +29,16 @@ use std::{ #[allow(dead_code)] #[deprecated(note = "This function is marked as unused.")] #[allow(deprecated)] -pub fn platform_versioned_decode_from_std_read( +pub fn platform_versioned_decode_from_std_read< + D: Decode, + C: Config, + R: std::io::Read, +>( src: &mut R, config: C, ) -> Result { let reader = IoReader::new(src); - let mut decoder = DecoderImpl::<_, C>::new(reader, config); + let mut decoder = DecoderImpl::<_, C, crate::BincodeContext>::new(reader, config, ()); D::decode(&mut decoder) } @@ -144,7 +148,7 @@ impl PlatformVersionEncode for CString { } impl PlatformVersionedDecode for CString { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -173,7 +177,7 @@ impl PlatformVersionedDecode for Mutex where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -185,7 +189,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for Mutex where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -214,7 +218,7 @@ impl PlatformVersionedDecode for RwLock where T: PlatformVersionedDecode, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -226,7 +230,7 @@ impl<'de, T> PlatformVersionedBorrowDecode<'de> for RwLock where T: PlatformVersionedBorrowDecode<'de>, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -246,7 +250,7 @@ impl PlatformVersionEncode for SystemTime { } impl PlatformVersionedDecode for SystemTime { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -266,7 +270,7 @@ impl PlatformVersionEncode for &'_ Path { } impl<'de> PlatformVersionedBorrowDecode<'de> for &'de Path { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -285,7 +289,7 @@ impl PlatformVersionEncode for PathBuf { } impl PlatformVersionedDecode for PathBuf { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -306,7 +310,7 @@ impl PlatformVersionEncode for IpAddr { } impl PlatformVersionedDecode for IpAddr { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _platform_version: &PlatformVersion, ) -> Result { @@ -326,7 +330,7 @@ impl PlatformVersionEncode for Ipv4Addr { } impl PlatformVersionedDecode for Ipv4Addr { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _platform_version: &PlatformVersion, ) -> Result { @@ -346,7 +350,7 @@ impl PlatformVersionEncode for Ipv6Addr { } impl PlatformVersionedDecode for Ipv6Addr { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -366,7 +370,7 @@ impl PlatformVersionEncode for SocketAddr { } impl PlatformVersionedDecode for SocketAddr { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -386,7 +390,7 @@ impl PlatformVersionEncode for SocketAddrV4 { } impl PlatformVersionedDecode for SocketAddrV4 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -406,7 +410,7 @@ impl PlatformVersionEncode for SocketAddrV6 { } impl PlatformVersionedDecode for SocketAddrV6 { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, _: &PlatformVersion, ) -> Result { @@ -440,7 +444,7 @@ where V: PlatformVersionedDecode, S: std::hash::BuildHasher + Default, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -466,7 +470,7 @@ where V: PlatformVersionedBorrowDecode<'de>, S: std::hash::BuildHasher + Default, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -492,7 +496,7 @@ where T: PlatformVersionedDecode + Eq + Hash, S: std::hash::BuildHasher + Default, { - fn platform_versioned_decode( + fn platform_versioned_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { @@ -517,7 +521,7 @@ where T: PlatformVersionedBorrowDecode<'de> + Eq + Hash, S: std::hash::BuildHasher + Default, { - fn platform_versioned_borrow_decode>( + fn platform_versioned_borrow_decode>( decoder: &mut D, platform_version: &PlatformVersion, ) -> Result { diff --git a/packages/rs-platform-serialization/src/lib.rs b/packages/rs-platform-serialization/src/lib.rs index a0841e768d5..3a29cff435f 100644 --- a/packages/rs-platform-serialization/src/lib.rs +++ b/packages/rs-platform-serialization/src/lib.rs @@ -10,13 +10,18 @@ use bincode::enc::{write, EncoderImpl}; pub use enc::PlatformVersionEncode; pub use features::platform_encode_to_vec; +/// Alias for the decoding context used across this crate. +pub type BincodeContext = (); + +pub use de::DefaultBorrowDecode; +pub use de::DefaultDecode; pub use de::PlatformVersionedBorrowDecode; pub use de::PlatformVersionedDecode; -pub use bincode::de::BorrowDecode; -pub use bincode::de::Decode; pub use bincode::enc::Encode; pub use bincode::error; +pub use de::BorrowDecode; +pub use de::Decode; use platform_version::version::PlatformVersion; extern crate alloc; @@ -65,7 +70,7 @@ pub fn platform_versioned_decode_from_slice Result { let reader = read::SliceReader::new(src); - let mut decoder = DecoderImpl::<_, C>::new(reader, config); + let mut decoder = DecoderImpl::<_, C, crate::BincodeContext>::new(reader, config, ()); D::platform_versioned_decode(&mut decoder, platform_version) } @@ -84,7 +89,7 @@ pub fn platform_versioned_borrow_decode_from_slice< platform_version: &PlatformVersion, ) -> Result { let reader = read::SliceReader::new(src); - let mut decoder = DecoderImpl::<_, C>::new(reader, config); + let mut decoder = DecoderImpl::<_, C, crate::BincodeContext>::new(reader, config, ()); D::platform_versioned_borrow_decode(&mut decoder, platform_version) } @@ -98,6 +103,6 @@ pub fn platform_versioned_decode_from_reader Result { - let mut decoder = DecoderImpl::<_, C>::new(reader, config); + let mut decoder = DecoderImpl::<_, C, crate::BincodeContext>::new(reader, config, ()); D::platform_versioned_decode(&mut decoder, platform_version) } diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index 7f091525b1b..fda79d9f595 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -8,7 +8,7 @@ rust-version.workspace = true license = "MIT" [dependencies] -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } +bincode = { version = "=2.0.1", features = ["serde"] } ciborium = { version = "0.2.2", optional = true } thiserror = "2.0.12" bs58 = "0.5.1" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 0834fcf9522..0311cf0aba2 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -9,9 +9,9 @@ license = "MIT" [dependencies] thiserror = { version = "2.0.12" } -bincode = { version = "=2.0.0-rc.3" } +bincode = { version = "=2.0.1" } versioned-feature-core = { git = "https://github.com/dashpay/versioned-feature-core", version = "1.0.0" } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a7bc60a6760c395e90489c655eee84ae75003af4" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a526c1e5988c8f47544ac6db7ec7bd56621136eb" } once_cell = "1.19.0" [features] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 67d52b22e2c..37d637df37e 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -11,11 +11,11 @@ description = "Platform wallet with identity management support" dpp = { path = "../rs-dpp" } # Key wallet dependencies (from rust-dashcore) -key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce" } -key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce", optional = true } +key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812" } +key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812", optional = true } # Core dependencies -dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce" } +dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812" } # Standard dependencies thiserror = "1.0" diff --git a/packages/rs-platform-wallet/examples/basic_usage.rs b/packages/rs-platform-wallet/examples/basic_usage.rs index 04a7e0d6ef4..f3a4f8bf6fe 100644 --- a/packages/rs-platform-wallet/examples/basic_usage.rs +++ b/packages/rs-platform-wallet/examples/basic_usage.rs @@ -25,7 +25,7 @@ fn main() -> Result<(), PlatformWalletError> { { use key_wallet_manager::wallet_manager::WalletManager; - let _wallet_manager = WalletManager::::new(); + let _wallet_manager = WalletManager::::new(network); println!("Platform wallet successfully integrated with wallet managers!"); } diff --git a/packages/rs-platform-wallet/src/lib.rs b/packages/rs-platform-wallet/src/lib.rs index b911f515e35..330330f6404 100644 --- a/packages/rs-platform-wallet/src/lib.rs +++ b/packages/rs-platform-wallet/src/lib.rs @@ -3,6 +3,7 @@ //! This crate provides a wallet implementation that combines traditional //! wallet functionality with Dash Platform identity management. +use dashcore::prelude::CoreBlockHeight; use dashcore::Address as DashAddress; use dashcore::Transaction; use dpp::async_trait::async_trait; @@ -14,9 +15,6 @@ use key_wallet::account::ManagedAccountCollection; use key_wallet::bip32::ExtendedPubKey; use key_wallet::transaction_checking::account_checker::TransactionCheckResult; use key_wallet::transaction_checking::{TransactionContext, WalletTransactionChecker}; -use key_wallet::wallet::immature_transaction::{ - ImmatureTransaction, ImmatureTransactionCollection, -}; use key_wallet::wallet::managed_wallet_info::fee::FeeLevel; use key_wallet::wallet::managed_wallet_info::managed_account_operations::ManagedAccountOperations; use key_wallet::wallet::managed_wallet_info::transaction_building::{ @@ -241,11 +239,11 @@ impl WalletInfoInterface for PlatformWalletInfo { self.wallet_info.set_description(description) } - fn birth_height(&self) -> Option { + fn birth_height(&self) -> CoreBlockHeight { self.wallet_info.birth_height() } - fn set_birth_height(&mut self, height: Option) { + fn set_birth_height(&mut self, height: CoreBlockHeight) { self.wallet_info.set_birth_height(height) } @@ -261,6 +259,10 @@ impl WalletInfoInterface for PlatformWalletInfo { self.wallet_info.update_last_synced(timestamp) } + fn synced_height(&self) -> CoreBlockHeight { + self.wallet_info.synced_height() + } + fn monitored_addresses(&self) -> Vec { self.wallet_info.monitored_addresses() } @@ -270,11 +272,7 @@ impl WalletInfoInterface for PlatformWalletInfo { } fn get_spendable_utxos(&self) -> BTreeSet<&Utxo> { - // Use the default trait implementation which filters utxos - self.utxos() - .into_iter() - .filter(|utxo| !utxo.is_locked && (utxo.is_confirmed || utxo.is_instantlocked)) - .collect() + self.wallet_info.get_spendable_utxos() } fn balance(&self) -> WalletBalance { @@ -297,23 +295,10 @@ impl WalletInfoInterface for PlatformWalletInfo { self.wallet_info.accounts() } - fn process_matured_transactions(&mut self, current_height: u32) -> Vec { - self.wallet_info - .process_matured_transactions(current_height) - } - - fn add_immature_transaction(&mut self, tx: ImmatureTransaction) { - self.wallet_info.add_immature_transaction(tx) - } - - fn immature_transactions(&self) -> &ImmatureTransactionCollection { + fn immature_transactions(&self) -> Vec { self.wallet_info.immature_transactions() } - fn immature_balance(&self) -> u64 { - self.wallet_info.immature_balance() - } - fn create_unsigned_payment_transaction( &mut self, wallet: &Wallet, @@ -332,8 +317,9 @@ impl WalletInfoInterface for PlatformWalletInfo { current_block_height, ) } - fn update_chain_height(&mut self, current_height: u32) { - self.wallet_info.update_chain_height(current_height) + + fn update_synced_height(&mut self, current_height: u32) { + self.wallet_info.update_synced_height(current_height) } fn network(&self) -> Network { diff --git a/packages/rs-sdk-ffi/Cargo.toml b/packages/rs-sdk-ffi/Cargo.toml index 815cb5b0887..442a908eb47 100644 --- a/packages/rs-sdk-ffi/Cargo.toml +++ b/packages/rs-sdk-ffi/Cargo.toml @@ -22,12 +22,12 @@ rs-sdk-trusted-context-provider = { path = "../rs-sdk-trusted-context-provider", simple-signer = { path = "../simple-signer" } # Core SDK integration (always included for unified SDK) -dash-spv-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "e7792c431c55c0d28efb0344b3a1948f576be5ce", optional = true } +dash-spv-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "852431229405e91004cc891cb4f676eafed68812", optional = true } # FFI and serialization serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } +bincode = { version = "=2.0.1", features = ["serde"] } # Async runtime tokio = { version = "1.41", features = ["rt-multi-thread", "macros"] } diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index abc21e0b163..4768cb05f6c 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -16,7 +16,7 @@ state-transitions = [ ] [dependencies] -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } +bincode = { version = "=2.0.1", features = ["serde"] } dpp = { path = "../rs-dpp", default-features = false, features = [ "ed25519-dalek", ] } diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index 3e6a1507341..c5bc00526a4 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -12,7 +12,7 @@ license = "MIT" [dependencies] tracing = "0.1.41" -bincode = { version = "=2.0.0-rc.3", features = ["serde"] } +bincode = { version = "=2.0.1", features = ["serde"] } drive = { path = "../rs-drive", default-features = false, features = [ "verify", ] } diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index 3d0d6a190be..10015e76d90 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -55,7 +55,7 @@ anyhow = { version = "1.0.75" } # required, cargo-machete false positive wasm-bindgen-futures = "0.4.49" async-trait = "0.1.59" -bincode = { version = "=2.0.0-rc.3" } +bincode = { version = "=2.0.1" } [profile.release] lto = true diff --git a/packages/wasm-dpp2/Cargo.toml b/packages/wasm-dpp2/Cargo.toml index 3cdade28bdc..0481f70263f 100644 --- a/packages/wasm-dpp2/Cargo.toml +++ b/packages/wasm-dpp2/Cargo.toml @@ -9,8 +9,10 @@ crate-type = ["cdylib", "lib"] [dependencies] # TODO: Consider to use talc allocator #talc = { version = "=4.4.2", default-features = false, features = ["lock_api"] } -bincode = "=2.0.0-rc.3" -wasm-bindgen = { version = "=0.2.103", default-features = false, features = ["serde-serialize"] } +bincode = "=2.0.1" +wasm-bindgen = { version = "=0.2.103", default-features = false, features = [ + "serde-serialize", +] } dpp = { path = "../rs-dpp", default-features = false, features = [ "state-transition-signing", "state-transition-value-conversion", @@ -24,7 +26,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ "platform-value", "state-transitions", "state-transition-serde-conversion", - "vote-serde-conversion" + "vote-serde-conversion", ] } serde-wasm-bindgen = { git = "https://github.com/dashpay/serde-wasm-bindgen", branch = "fix/uint8array-to-bytes" } serde = { version = "1.0.197", features = ["derive"] } diff --git a/packages/wasm-drive-verify/Cargo.toml b/packages/wasm-drive-verify/Cargo.toml index 91d9f40e4e0..7ec72ab367f 100644 --- a/packages/wasm-drive-verify/Cargo.toml +++ b/packages/wasm-drive-verify/Cargo.toml @@ -26,6 +26,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ "platform-value-json", ] } +bincode = { version = "=2.0.1" } wasm-bindgen = { version = "=0.2.103" } serde = { version = "1.0.193", default-features = false, features = [ "alloc", @@ -44,7 +45,6 @@ ciborium = { version = "0.2.1" } base64 = { version = "0.22.0" } bs58 = { version = "0.5.1" } indexmap = { version = "2.11.4" } -bincode = { version = "2.0.0-rc.3" } [dev-dependencies] wasm-bindgen-test = "0.3.53"