From d3170b9dff037abbf5eb525b75dffbdec2291c86 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Mon, 22 Jul 2024 21:59:27 +0700 Subject: [PATCH 01/37] fix(platform)!: add hyphen to match for contested documents on Dashpay (#1982) --- .../dpns-contract/schema/v1/dpns-contract-documents.json | 4 ++-- .../initialization/create_genesis_state/v0/mod.rs | 4 ++-- packages/rs-drive-abci/tests/strategy_tests/main.rs | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/dpns-contract/schema/v1/dpns-contract-documents.json b/packages/dpns-contract/schema/v1/dpns-contract-documents.json index aa6380b5867..ecb3be1ae40 100644 --- a/packages/dpns-contract/schema/v1/dpns-contract-documents.json +++ b/packages/dpns-contract/schema/v1/dpns-contract-documents.json @@ -21,11 +21,11 @@ "fieldMatches": [ { "field": "normalizedLabel", - "regexPattern": "^[a-zA-Z01]{3,19}$" + "regexPattern": "^[a-zA-Z01-]{3,19}$" } ], "resolution": 0, - "description": "If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place." + "description": "If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name" } }, { diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs index 412ef546372..7f9f31758e6 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs @@ -295,8 +295,8 @@ mod tests { assert_eq!( root_hash, [ - 37, 162, 178, 238, 218, 180, 162, 24, 34, 199, 191, 38, 43, 39, 197, 101, 133, - 229, 130, 128, 20, 135, 168, 126, 219, 15, 235, 112, 139, 89, 187, 115 + 122, 78, 218, 93, 76, 126, 219, 4, 222, 149, 39, 191, 51, 199, 229, 9, 180, + 151, 132, 38, 91, 7, 107, 20, 46, 4, 39, 59, 203, 2, 86, 79 ] ) } diff --git a/packages/rs-drive-abci/tests/strategy_tests/main.rs b/packages/rs-drive-abci/tests/strategy_tests/main.rs index 321c7eac208..1c1ee9867c3 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/main.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/main.rs @@ -1194,7 +1194,7 @@ mod tests { .unwrap() .unwrap() ), - "11f2f5b4a38234430b5257634470fc4edd7abfedff309139ca95c5e371890bc7".to_string() + "57818d17af37f038e4a1cf89608e872ab7fef928822e7820c660eb26141fb733".to_string() ) } @@ -1915,7 +1915,7 @@ mod tests { .unwrap() .unwrap() ), - "cae9c984e5fe548cc7a3edd720ab0f58a2d25e5a16071402605a9ff8cfe870c7".to_string() + "462125a9dbf2165b27fc301c1336dad343de526a4b1904604c8a7d78ad1bcede".to_string() ) } @@ -2050,7 +2050,7 @@ mod tests { .unwrap() .unwrap() ), - "6cbe10061aac832a35ec0eb9b22826aebfcbe697cec76fe899afa1b1803dd2c7".to_string() + "e3c946107bfe02895a832339616153131bb09550a6378b680d18aca088ac266a".to_string() ) } From 319c597f9dfdeb4a60f3a6a3593b66809de2a074 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Tue, 23 Jul 2024 20:50:05 +0700 Subject: [PATCH 02/37] fix(platform)!: document types should not have a contested unique index with a unique index (#1984) --- .../schema/v1/dpns-contract-documents.json | 33 +- .../test/unit/dpnsContract.spec.js | 52 +- .../platform-test-suite/test/e2e/dpns.spec.js | 18 +- .../document/v0/document-meta.json | 3 + .../class_methods/try_from_schema/v0/mod.rs | 41 + .../data_contract/document_type/index/mod.rs | 12 + .../document_type/index/random_index.rs | 1 + .../document_type/index_level/mod.rs | 32 +- .../src/data_contract/document_type/mod.rs | 2 + .../rs-dpp/src/document/accessors/v0/mod.rs | 7 + .../src/document/extended_document/mod.rs | 6 +- .../src/errors/consensus/basic/basic_error.rs | 15 +- ...ue_index_on_mutable_document_type_error.rs | 2 +- ...ed_unique_index_with_unique_index_error.rs | 56 ++ .../consensus/basic/data_contract/mod.rs | 2 + packages/rs-dpp/src/errors/consensus/codes.rs | 1 + .../methods/mod.rs | 1 + .../methods/v0/mod.rs | 1 + .../v0/v0_methods.rs | 1 + .../src/tests/payloads/document_dpns.json | 2 +- .../create_genesis_state/v0/mod.rs | 7 +- .../data_contract_create/mod.rs | 204 ++++ .../state_transitions/documents_batch/mod.rs | 894 +++++++++++++++++- .../state_transitions/masternode_vote/mod.rs | 428 +++++++-- .../state_transition/state_transitions/mod.rs | 344 ++++++- .../tests/strategy_tests/failures.rs | 4 +- .../tests/strategy_tests/main.rs | 6 +- .../tests/strategy_tests/voting_tests.rs | 50 +- ...d-unique-index-and-other-unique-index.json | 188 ++++ ...with-contract-id-null-searchable-true.json | 185 ++++ ...ntested-unique-index-with-contract-id.json | 187 ++++ .../dpns-contract-contested-unique-index.json | 169 ++++ packages/rs-drive/src/config.rs | 3 +- .../v0/mod.rs | 36 +- .../mod.rs | 2 + .../v0/mod.rs | 4 + .../v0/mod.rs | 2 + .../mod.rs | 6 +- .../v0/mod.rs | 13 +- .../mod.rs | 2 + .../v0/mod.rs | 6 +- .../v0/mod.rs | 2 + .../mod.rs | 6 +- .../v0/mod.rs | 10 +- .../rs-drive/src/drive/document/insert/mod.rs | 4 +- .../mod.rs | 47 + .../v0/mod.rs | 115 +++ .../shared/shared_estimation_costs/mod.rs | 1 + .../rs-drive/src/util/test_helpers/mod.rs | 2 +- packages/rs-drive/tests/query_tests.rs | 36 +- .../contract/dpns/domain0.json | 2 +- .../contract/dpns/domains-no-alias.json | 30 +- .../contract/dpns/domains.json | 28 +- .../dpns-contract-label-not-required.json | 2 +- .../dpns/dpns-contract-update-v2-test.json | 2 +- .../contract/dpns/dpns-contract.json | 2 +- .../src/version/drive_versions.rs | 2 + .../src/version/mocks/v2_test.rs | 1 + .../src/version/mocks/v3_test.rs | 1 + .../rs-platform-version/src/version/v1.rs | 1 + .../contested_resource_identity_votes.rs | 2 +- packages/rs-sdk/tests/fetch/document.rs | 4 +- ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...12bea6a47c9f7bf30133713b6b5cfec3a4d57.json | Bin 160712 -> 162026 bytes ...799af81392b7b0cbb7e86412da37ab13aef4b.json | Bin 67879 -> 73360 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...6557d0524384797bb450e22f41f66743d5d11.json | Bin 38834 -> 40517 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...68d03ded364f01c4f4e27c4653a50b864e7f3.json | Bin 62425 -> 0 bytes ...b599280513ad72637c1060cef59b6a1199be4.json | Bin 0 -> 70669 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215576 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...dbd43fab2e54a98aa44bc88c049e1cf72f5fb.json | Bin 48614 -> 48644 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215576 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...12bea6a47c9f7bf30133713b6b5cfec3a4d57.json | Bin 160712 -> 162026 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...c0041cdc16404006d1b30577292c6ce106cdb.json | Bin 140321 -> 143255 bytes ...12bea6a47c9f7bf30133713b6b5cfec3a4d57.json | Bin 160712 -> 162026 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...12bea6a47c9f7bf30133713b6b5cfec3a4d57.json | Bin 160712 -> 162026 bytes ...cb09aa9794d86af9557da8e538eb53b0e47a1.json | Bin 0 -> 82178 bytes ...efc91ec50975505e3aaf1b1844aa7915cae07.json | Bin 0 -> 82121 bytes ...62b6c9d24b4ad3348d6f75a2faff16c63cfab.json | Bin 0 -> 87368 bytes ...446e95f0736cba1a5fd37810e297f62b63b1f.json | Bin 80340 -> 0 bytes ...c3a4731a1b8aa97446a4026f8d1d3d60853e3.json | Bin 80459 -> 0 bytes ...3b53686c9e1a275ef3cc276057c008a3b4404.json | Bin 85649 -> 0 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...5bce08c84a0cf72b34f6a408982f7babce2c2.json | Bin 60056 -> 61784 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...d84b9984fd04a4ca40a146aea81c3ea5c39ef.json | Bin 48261 -> 48294 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...bfa6b1eff43954af904bce8f123fed7515132.json | Bin 50614 -> 50626 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...f67620695a23f63dc7376bd4a509e93335ce9.json | Bin 56684 -> 58421 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...ce28a227def58e23c39e0384e0cc02fe6360b.json | Bin 67889 -> 73373 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...d5387b9cca48a3062a4db8bf0341a839f2bae.json | Bin 56618 -> 56603 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...133635b1b3857f232307ebd29de8a64932ccf.json | Bin 0 -> 66294 bytes ...649a7d9108f9b96fc074e1da61f0fa19d3b5b.json | Bin 67888 -> 73372 bytes ...222cd7ff997de97488542625315fd760149be.json | Bin 60615 -> 0 bytes ...ed11f384144320c099f54b2530f0be42f8664.json | Bin 64004 -> 65696 bytes ...1f4a723908b4ee33c4612727d101cf58f3394.json | Bin 63919 -> 63850 bytes ...1cf33dd52735f597de4b4c804effd2600d135.json | Bin 67878 -> 73359 bytes ...df4d1517394bad4f2c19e0ab2d34f3330f888.json | Bin 60547 -> 66154 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...828d50a4fa7b3230d23ddfac563877efd61e2.json | Bin 56722 -> 58459 bytes ...de225f2e3e2d9b20b75d91a6b66a30a3358db.json | Bin 0 -> 60090 bytes ...1d4e66aec36ada2efbb1072f2196b5b856222.json | Bin 60213 -> 61941 bytes ...7d2680b608c398a70ca34c7276dbc079b932c.json | Bin 0 -> 73550 bytes ...dd268f3555081d2a3a5e112886b1c78b4009f.json | Bin 67887 -> 73371 bytes ...3c4cd53b525ef27be36077437e8b9b8ffadd8.json | Bin 67877 -> 73358 bytes ...afd9ccac7a5573423da7f914846cfedf3306f.json | Bin 60548 -> 66155 bytes ...d9b0e583a50f6346ab371062a60862a9d2516.json | Bin 64206 -> 65898 bytes ...f2d4ab07892cc88e51b95c474bb8dd4834773.json | Bin 64135 -> 69631 bytes ...b2600d58dd5d92a107adf42838108dfe5c919.json | Bin 0 -> 70077 bytes ...77aa3058a5e96a54279f3cd7b134ef5efcbb1.json | Bin 68110 -> 73594 bytes ...48fa433a252c86c18a917e755de75cca4224e.json | Bin 60616 -> 62332 bytes ...cac5d02500f0820e02acc5683d6e595156559.json | Bin 60127 -> 64066 bytes ...de2e1793e52a4d1c6d31841fdf00b1fc6bbf4.json | Bin 0 -> 56617 bytes ...5d377ddbe6cbdccdff3bb18a89ec8aee7fcec.json | Bin 64619 -> 70112 bytes ...b5b3824af0e042d8e162e18ef77ebe75079f7.json | Bin 64606 -> 66295 bytes ...acc54486a15e18a88964be1e2c67d40cb91e0.json | Bin 68085 -> 69768 bytes ...a48b308997c85873162805a8915fbe02467b7.json | Bin 56648 -> 60506 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...c12823a7175b930f49aebb8d9844065da5b44.json | Bin 131795 -> 133292 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...49e64e07602f543bda42d5a5d223f0e6102a9.json | Bin 71282 -> 73076 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...12bea6a47c9f7bf30133713b6b5cfec3a4d57.json | Bin 160712 -> 162026 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...dbc80a6caf537196a9513dae8967f325ab485.json | Bin 142680 -> 144033 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...285016c5d0ac679c299447df687e866154090.json | Bin 140355 -> 141822 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...5839e9ea0c40cd94caac5746b19857d52533a.json | Bin 125915 -> 127448 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b6bc0d6ecdc7cb5d6b35db326a8f223aef08c.json | Bin 62894 -> 0 bytes ...59871252af6af1d297bdc4cbe6ed3e56115b3.json | Bin 0 -> 58540 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215576 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...cf9097aed37b7ba84546304bc9a526eabdef1.json | Bin 62894 -> 0 bytes ...db8fe248a5ed482cd554d72915f9801a6c369.json | Bin 0 -> 58540 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215576 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b6bc0d6ecdc7cb5d6b35db326a8f223aef08c.json | Bin 62894 -> 0 bytes ...8c226964b8cf50c559a15ffd8d6ed2e47b682.json | Bin 0 -> 58666 bytes ...c3c845c6d5300f29be59c60a7457af66e60a7.json | Bin 63020 -> 0 bytes ...59871252af6af1d297bdc4cbe6ed3e56115b3.json | Bin 0 -> 58540 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215576 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...501c1ba166a2dd8f6efb31b0289dc011da983.json | Bin 25787 -> 25748 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...bda70790612b96c9c7618ffb72ddc689eda15.json | Bin 55778 -> 0 bytes ...2fdc372b8e12d3f368264a10a00877c92018f.json | Bin 0 -> 53032 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215576 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...1ad49d3ae7bc38d217d85b1570274493c4d7e.json | Bin 56918 -> 58667 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215591 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6d0f8eae6a541345c97b96a9a442e311f1870.json | 1 + ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...ce28a227def58e23c39e0384e0cc02fe6360b.json | Bin 67889 -> 73373 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215579 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 244541 -> 215576 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...48c03122daf7ab2e77108f4bf44af1ad15eae.json | Bin 25787 -> 25748 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...067bd9ccc29eca3092a5664a5a9ba3bb7e967.json | Bin 247584 -> 218619 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...abbc4ac6ad7e80f0e55fe98bbcfbebf6c0878.json | Bin 25548 -> 25509 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...6caf3663c40a12d3b03827006d66058e439ac.json | Bin 71161 -> 71170 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67495 -> 67504 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...67089535588985622579e77969e0ffd68afc7.json | Bin 65804 -> 65813 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67495 -> 67504 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...add01a7428085ffdcf1e11cccf19c48c5f7a1.json | Bin 72026 -> 72029 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67495 -> 67504 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...d592c8fe7361bed628d9a36747664c9789bf1.json | Bin 83865 -> 83856 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67495 -> 67504 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...b0b93d9d2e841a5e3d60755f8e7be3b93315b.json | Bin 91119 -> 91110 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67495 -> 67504 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...7776113debe4287515ae60d0645da450a80a1.json | Bin 34960 -> 34969 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...7776113debe4287515ae60d0645da450a80a1.json | Bin 62023 -> 62062 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...8fa69b4749b19cc1f5ef0abf37fa0c04ab2ef.json | Bin 43692 -> 43743 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...4a459dc7a67570ea6df3f8858d3fae7820ffe.json | Bin 47149 -> 47170 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...c53464633a072722c5a04b15ee01f3a45de99.json | Bin 75794 -> 75803 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...c53464633a072722c5a04b15ee01f3a45de99.json | Bin 75794 -> 75803 bytes ...07ee2b2cdf1fb10a44a586e6a3ad5d805373f.json | Bin 91986 -> 0 bytes ...8c50b25146fb7a02561df7c93f0ec8066213b.json | Bin 0 -> 88209 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...48c03122daf7ab2e77108f4bf44af1ad15eae.json | Bin 32306 -> 33938 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...47fda31dfa79cd84f0c1462fb9a2fc86d12a3.json | Bin 0 -> 34608 bytes ...3784127eff182965d29945dc6f68a09081666.json | Bin 32967 -> 0 bytes ...ca1b6ba4883a92f4533995dbfdbc5875d8bef.json | Bin 69539 -> 83006 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...9550f0ea4a6af6f68037e7d50ff4e4de74509.json | Bin 26538 -> 26571 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...106e5eda740be44679cc960ea35f2134af628.json | Bin 33746 -> 33758 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...bf1acc3394d29ac72f662d38e81344496631e.json | Bin 33702 -> 33714 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...9b1a05862cb8d40c088b193b59ca3564210bc.json | Bin 34818 -> 34878 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...22dfc69cc7b123be24b7ad993281979b2a3a2.json | Bin 34060 -> 34072 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...79602fa0640b81485adb7715226122e31357b.json | Bin 0 -> 47179 bytes ...2db7aed80d12dad424fc095b2fd7ec1465edd.json | Bin 57634 -> 0 bytes ...c362866cbab6d8388743fdcf5d797910561df.json | Bin 57568 -> 57460 bytes ...69266464b2ec54193e3ad5aaefd939015fe1f.json | Bin 0 -> 35585 bytes ...f75e3bdfb677d0fa1246dbeebfa3d97c4119b.json | Bin 0 -> 59119 bytes ...7686a168bd79e8751279ec53efb41381dd431.json | Bin 69615 -> 83082 bytes ...ca9948235077e8ed7be0a41a49203165d4dc8.json | Bin 33938 -> 0 bytes ...be8c6db1347a705fa268e2786d6064e6a2e12.json | Bin 0 -> 59173 bytes ...09f65453497787bce2c6aedfb234506b9d9ef.json | Bin 45535 -> 0 bytes ...a8b48b99591c7df94f5881038008fcd17189c.json | Bin 0 -> 59603 bytes ...6c15221b0892c8cb8146a5b7909e9ce5d729c.json | Bin 45965 -> 0 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...ca1b6ba4883a92f4533995dbfdbc5875d8bef.json | Bin 69539 -> 83006 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + ...e942470ee2b9dff806909798d12c40bc6cf8b.json | Bin 69549 -> 83019 bytes ...ca1b6ba4883a92f4533995dbfdbc5875d8bef.json | Bin 69539 -> 83006 bytes ...99c38f098a6a4c56c2504d00e9715df44b2da.json | 1 - ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 + .../src/errors/consensus/consensus_error.rs | 5 +- 328 files changed, 3073 insertions(+), 410 deletions(-) create mode 100644 packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs create mode 100644 packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-and-other-unique-index.json create mode 100644 packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id-null-searchable-true.json create mode 100644 packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id.json create mode 100644 packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index.json create mode 100644 packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/mod.rs create mode 100644 packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs delete mode 100644 packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/msg_GetContestedResourceIdentityVotesRequest_3f86c200574547c3c17a7bea48968d03ded364f01c4f4e27c4653a50b864e7f3.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/msg_GetContestedResourceIdentityVotesRequest_bb82f59de13ddcfebb86f44e50cb599280513ad72637c1060cef59b6a1199be4.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_0e43e4a6b936a0ac5616284eafbcb09aa9794d86af9557da8e538eb53b0e47a1.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_1b1a7fba98768253d52b080f988efc91ec50975505e3aaf1b1844aa7915cae07.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_4fef665cf10f94bb365a870370362b6c9d24b4ad3348d6f75a2faff16c63cfab.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_67082f2b71379472262479acaf5446e95f0736cba1a5fd37810e297f62b63b1f.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_bca2e79428ae36d599c37b8322dc3a4731a1b8aa97446a4026f8d1d3d60853e3.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_ec6a9ee367cf4f0e6306a31a6533b53686c9e1a275ef3cc276057c008a3b4404.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_3559237b68be75d94ba88b7f926133635b1b3857f232307ebd29de8a64932ccf.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_38dcee95631eea6c56b08ca2d0b222cd7ff997de97488542625315fd760149be.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_0fe029a8b0fd66ec380809675d4de225f2e3e2d9b20b75d91a6b66a30a3358db.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_1f873b2573e67617507772a3caf7d2680b608c398a70ca34c7276dbc079b932c.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_4f5ac50380991aed36c40cdc546b2600d58dd5d92a107adf42838108dfe5c919.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_879762fe9d8ee181f913f723bebde2e1793e52a4d1c6d31841fdf00b1fc6bbf4.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resources_start_at_value/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resources_start_at_value/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_6d2b2e80663ec452ad3cfde5b5db6bc0d6ecdc7cb5d6b35db326a8f223aef08c.json create mode 100644 packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json delete mode 100644 packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/document_list_drive_query/msg_DocumentQuery_26703958b80c47b518541a36e10cf9097aed37b7ba84546304bc9a526eabdef1.json create mode 100644 packages/rs-sdk/tests/vectors/document_list_drive_query/msg_DocumentQuery_b3bc8802a726d411f7538d368a4db8fe248a5ed482cd554d72915f9801a6c369.json delete mode 100644 packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_6d2b2e80663ec452ad3cfde5b5db6bc0d6ecdc7cb5d6b35db326a8f223aef08c.json create mode 100644 packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_89cfecedc9547d64bca1385ce338c226964b8cf50c559a15ffd8d6ed2e47b682.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_919edb4fc5157813072e6b909adc3c845c6d5300f29be59c60a7457af66e60a7.json create mode 100644 packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read_no_document/msg_DocumentQuery_8c2203b455d749bfae5ad943deabda70790612b96c9c7618ffb72ddc689eda15.json create mode 100644 packages/rs-sdk/tests/vectors/document_read_no_document/msg_DocumentQuery_94a308d4004116900a729399e242fdc372b8e12d3f368264a10a00877c92018f.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_contested_resource_voters_for_identity_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_contested_resource_voters_for_identity_not_found/quorum_pubkey-106-47438231771b1fdb3275f198a7c6d0f8eae6a541345c97b96a9a442e311f1870.json delete mode 100644 packages/rs-sdk/tests/vectors/test_contested_resources_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_contested_resources_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_current/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_current/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_future/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_future/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_854a82d10a8609fdf770532739c07ee2b2cdf1fb10a44a586e6a3ad5d805373f.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_aab024dadbfad013c93705f5cc48c50b25146fb7a02561df7c93f0ec8066213b.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_ok/msg_GetPrefundedSpecializedBalanceRequest_008d2955a77110519958e06d86047fda31dfa79cd84f0c1462fb9a2fc86d12a3.json delete mode 100644 packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_ok/msg_GetPrefundedSpecializedBalanceRequest_4e32db23cb5b6b0a01e11458ea23784127eff182965d29945dc6f68a09081666.json delete mode 100644 packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_limit_2/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_limit_2/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_none/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_none/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_01dd0d925e0cdb7817c908b74e379602fa0640b81485adb7715226122e31357b.json delete mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_179557cdf6c1b0d79777fb612c32db7aed80d12dad424fc095b2fd7ec1465edd.json create mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_6e5891e317a44532f7c4ed7cf7e69266464b2ec54193e3ad5aaefd939015fe1f.json create mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_881edc845ea288c9aa4664730b0f75e3bdfb677d0fa1246dbeebfa3d97c4119b.json delete mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_d16c8e8b03c855309acbf860e1dca9948235077e8ed7be0a41a49203165d4dc8.json create mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_ddcc945f1edfbf9fbc63b0f6dc1be8c6db1347a705fa268e2786d6064e6a2e12.json delete mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_e02e45966b98d6e253bff3131ab09f65453497787bce2c6aedfb234506b9d9ef.json create mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_ef32264ccc024ed9d6982a6fed2a8b48b99591c7df94f5881038008fcd17189c.json delete mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_efe823d551ebbb85ecfce4621de6c15221b0892c8cb8146a5b7909e9ce5d729c.json delete mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_order/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json create mode 100644 packages/rs-sdk/tests/vectors/vote_polls_by_ts_order/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json diff --git a/packages/dpns-contract/schema/v1/dpns-contract-documents.json b/packages/dpns-contract/schema/v1/dpns-contract-documents.json index ecb3be1ae40..973d7fe9366 100644 --- a/packages/dpns-contract/schema/v1/dpns-contract-documents.json +++ b/packages/dpns-contract/schema/v1/dpns-contract-documents.json @@ -29,19 +29,11 @@ } }, { - "name": "dashIdentityId", + "name": "identityId", + "nullSearchable": false, "properties": [ { - "records.dashUniqueIdentityId": "asc" - } - ], - "unique": true - }, - { - "name": "dashAlias", - "properties": [ - { - "records.dashAliasIdentityId": "asc" + "records.identity": "asc" } ] } @@ -91,32 +83,19 @@ "records": { "type": "object", "properties": { - "dashUniqueIdentityId": { - "type": "array", - "byteArray": true, - "minItems": 32, - "maxItems": 32, - "position": 0, - "contentMediaType": "application/x.dash.dpp.identifier", - "description": "Identity ID to be used to create the primary name the Identity", - "$comment": "Must be equal to the document owner" - }, - "dashAliasIdentityId": { + "identity": { "type": "array", "byteArray": true, "minItems": 32, "maxItems": 32, "position": 1, "contentMediaType": "application/x.dash.dpp.identifier", - "description": "Identity ID to be used to create alias names for the Identity", - "$comment": "Must be equal to the document owner" + "description": "Identifier name record that refers to an Identity" } }, "minProperties": 1, - "maxProperties": 1, "position": 5, - "additionalProperties": false, - "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`" + "additionalProperties": false }, "subdomainRules": { "type": "object", diff --git a/packages/dpns-contract/test/unit/dpnsContract.spec.js b/packages/dpns-contract/test/unit/dpnsContract.spec.js index faa88951511..cd57e61f180 100644 --- a/packages/dpns-contract/test/unit/dpnsContract.spec.js +++ b/packages/dpns-contract/test/unit/dpnsContract.spec.js @@ -158,7 +158,7 @@ describe('DPNS Contract', () => { normalizedParentDomainName: 'dash', preorderSalt: crypto.randomBytes(32), records: { - dashUniqueIdentityId: await generateRandomIdentifier(), + identity: await generateRandomIdentifier(), }, subdomainRules: { allowSubdomains: false, @@ -468,54 +468,10 @@ describe('DPNS Contract', () => { }); describe('Dash Identity', () => { - it('should have either `dashUniqueIdentityId` or `dashAliasIdentityId`', async () => { - rawDomainDocument.records = { - dashUniqueIdentityId: identityId, - dashAliasIdentityId: identityId, - }; - - const document = dpp.document.create(dataContract, identityId, 'domain', rawDomainDocument); - const validationResult = document.validate(dpp.protocolVersion); - const error = expectJsonSchemaError(validationResult); - - expect(error.keyword) - .to - .equal('maxProperties'); - expect(error.instancePath) - .to - .equal('/records'); - }); - - describe('dashUniqueIdentityId', () => { - it('should no less than 32 bytes', async () => { - rawDomainDocument.records = { - dashUniqueIdentityId: crypto.randomBytes(30), - }; - - expect(() => { - dpp.document.create(dataContract, identityId, 'domain', rawDomainDocument); - }) - .to - .throw(); - }); - - it('should no more than 32 bytes', async () => { - rawDomainDocument.records = { - dashUniqueIdentityId: crypto.randomBytes(64), - }; - - expect(() => { - dpp.document.create(dataContract, identityId, 'domain', rawDomainDocument); - }) - .to - .throw(); - }); - }); - - describe('dashAliasIdentityId', () => { + describe('identity record', () => { it('should no less than 32 bytes', async () => { rawDomainDocument.records = { - dashAliasIdentityId: crypto.randomBytes(30), + identity: crypto.randomBytes(30), }; expect(() => { @@ -527,7 +483,7 @@ describe('DPNS Contract', () => { it('should no more than 32 bytes', async () => { rawDomainDocument.records = { - dashAliasIdentityId: crypto.randomBytes(64), + identity: crypto.randomBytes(64), }; expect(() => { diff --git a/packages/platform-test-suite/test/e2e/dpns.spec.js b/packages/platform-test-suite/test/e2e/dpns.spec.js index 3ff78cdd6f2..dd3dc06c1b7 100644 --- a/packages/platform-test-suite/test/e2e/dpns.spec.js +++ b/packages/platform-test-suite/test/e2e/dpns.spec.js @@ -80,7 +80,7 @@ describe('DPNS', () => { // skip if DPNS owner private key is not passed and use `dash` in tests above it('should be able to register a TLD', async () => { createdTLD = await ownerClient.platform.names.register(newTopLevelDomain, { - dashAliasIdentityId: identity.getId(), + identity: identity.getId(), }, identity); // Additional wait time to mitigate testnet latency @@ -148,7 +148,7 @@ describe('DPNS', () => { try { await client.platform.names.register(getRandomDomain(), { - dashAliasIdentityId: identity.getId(), + identity: identity.getId(), }, identity); } catch (e) { broadcastError = e; @@ -161,7 +161,7 @@ describe('DPNS', () => { it('should be able to register a second level domain', async () => { registeredDomain = await client.platform.names.register(`${secondLevelDomain}0.${topLevelDomain}`, { - dashUniqueIdentityId: identity.getId(), + identity: identity.getId(), }, identity); // Additional wait time to mitigate testnet latency @@ -179,7 +179,7 @@ describe('DPNS', () => { const domain = `${secondLevelDomain}O.${topLevelDomain}`; await client.platform.names.register(domain, { - dashAliasIdentityId: identity.getId(), + identity: identity.getId(), }, identity); expect.fail('should throw error'); @@ -199,7 +199,7 @@ describe('DPNS', () => { const domain = `${getRandomDomain()}.${getRandomDomain()}`; await client.platform.names.register(domain, { - dashAliasIdentityId: identity.getId(), + identity: identity.getId(), }, identity); expect.fail('should throw error'); @@ -252,8 +252,8 @@ describe('DPNS', () => { it('should be able to resolve domain by it\'s record', async () => { const [document] = await client.platform.names.resolveByRecord( - 'dashUniqueIdentityId', - registeredDomain.getData().records.dashUniqueIdentityId, + 'identity', + registeredDomain.getData().records.identity, ); const rawDocument = document.toObject(); @@ -310,9 +310,9 @@ describe('DPNS', () => { expect(broadcastError.code).to.equal(40500); }); - it('should not be able to register two domains with same `dashAliasIdentityId` record'); + it('should not be able to register two domains with same `identity` record'); - it('should be able to register many domains with same `dashAliasIdentityId` record'); + it('should be able to register many domains with same `identity` record'); it('should not be able to update preorder'); diff --git a/packages/rs-dpp/schema/meta_schemas/document/v0/document-meta.json b/packages/rs-dpp/schema/meta_schemas/document/v0/document-meta.json index 1eb76edd5cd..5afb60c77bb 100644 --- a/packages/rs-dpp/schema/meta_schemas/document/v0/document-meta.json +++ b/packages/rs-dpp/schema/meta_schemas/document/v0/document-meta.json @@ -333,6 +333,9 @@ "unique": { "type": "boolean" }, + "nullSearchable": { + "type": "boolean" + }, "contested": { "type": "object", "properties": { diff --git a/packages/rs-dpp/src/data_contract/document_type/class_methods/try_from_schema/v0/mod.rs b/packages/rs-dpp/src/data_contract/document_type/class_methods/try_from_schema/v0/mod.rs index 0a92614363a..cab211ddc31 100644 --- a/packages/rs-dpp/src/data_contract/document_type/class_methods/try_from_schema/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/class_methods/try_from_schema/v0/mod.rs @@ -23,6 +23,8 @@ use std::convert::TryInto; #[cfg(feature = "validation")] use crate::consensus::basic::data_contract::ContestedUniqueIndexOnMutableDocumentTypeError; +#[cfg(feature = "validation")] +use crate::consensus::basic::data_contract::ContestedUniqueIndexWithUniqueIndexError; #[cfg(any(test, feature = "validation"))] use crate::consensus::basic::data_contract::InvalidDocumentTypeNameError; #[cfg(feature = "validation")] @@ -50,6 +52,7 @@ use crate::version::PlatformVersion; use crate::ProtocolError; use platform_value::btreemap_extensions::BTreeValueMapHelper; use platform_value::{Identifier, Value}; + const NOT_ALLOWED_SYSTEM_PROPERTIES: [&str; 1] = ["$id"]; const SYSTEM_PROPERTIES: [&str; 11] = [ @@ -282,6 +285,12 @@ impl DocumentTypeV0 { #[cfg(feature = "validation")] let mut unique_indices_count = 0; + #[cfg(feature = "validation")] + let mut last_non_contested_unique_index_name: Option = None; + + #[cfg(feature = "validation")] + let mut last_contested_unique_index_name: Option = None; + #[cfg(feature = "validation")] let mut contested_indices_count = 0; @@ -330,6 +339,23 @@ impl DocumentTypeV0 { .into(), ))); } + + if let Some(last_contested_unique_index_name) = + last_contested_unique_index_name.as_ref() + { + return Err(ProtocolError::ConsensusError(Box::new( + ContestedUniqueIndexWithUniqueIndexError::new( + name.to_string(), + last_contested_unique_index_name.clone(), + index.name, + ) + .into(), + ))); + } + + if index.contested_index.is_none() { + last_non_contested_unique_index_name = Some(index.name.clone()); + } } if index.contested_index.is_some() { @@ -355,6 +381,19 @@ impl DocumentTypeV0 { ))); } + if let Some(last_unique_index_name) = + last_non_contested_unique_index_name.as_ref() + { + return Err(ProtocolError::ConsensusError(Box::new( + ContestedUniqueIndexWithUniqueIndexError::new( + name.to_string(), + index.name, + last_unique_index_name.clone(), + ) + .into(), + ))); + } + if documents_mutable { return Err(ProtocolError::ConsensusError(Box::new( ContestedUniqueIndexOnMutableDocumentTypeError::new( @@ -364,6 +403,8 @@ impl DocumentTypeV0 { .into(), ))); } + + last_contested_unique_index_name = Some(index.name.clone()); } // Index names must be unique for the document type diff --git a/packages/rs-dpp/src/data_contract/document_type/index/mod.rs b/packages/rs-dpp/src/data_contract/document_type/index/mod.rs index 465fc292b11..a8768ed8f5d 100644 --- a/packages/rs-dpp/src/data_contract/document_type/index/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/index/mod.rs @@ -261,6 +261,9 @@ pub struct Index { pub name: String, pub properties: Vec, pub unique: bool, + /// Null searchable indicates what to do if all members of the index are null + /// If this is set to false then we do not insert references which makes such items non-searchable + pub null_searchable: bool, /// Contested indexes are useful when a resource is considered valuable pub contested_index: Option, } @@ -431,6 +434,9 @@ impl TryFrom<&[(Value, Value)]> for Index { // For properties, we iterate each and move it to IndexProperty let mut unique = false; + // The default for null searchable should be true. Do not change this without very + // careful thought and consideration. + let mut null_searchable = true; let mut name = None; let mut contested_index = None; let mut index_properties: Vec = Vec::new(); @@ -454,6 +460,11 @@ impl TryFrom<&[(Value, Value)]> for Index { unique = value_value.as_bool().expect("confirmed as bool"); } } + "nullSearchable" => { + if value_value.is_bool() { + null_searchable = value_value.as_bool().expect("confirmed as bool"); + } + } "contested" => { let contested_properties_value_map = value_value.to_map()?; @@ -580,6 +591,7 @@ impl TryFrom<&[(Value, Value)]> for Index { name, properties: index_properties, unique, + null_searchable, contested_index, }) } diff --git a/packages/rs-dpp/src/data_contract/document_type/index/random_index.rs b/packages/rs-dpp/src/data_contract/document_type/index/random_index.rs index 8cabbc60f13..bad9be1a883 100644 --- a/packages/rs-dpp/src/data_contract/document_type/index/random_index.rs +++ b/packages/rs-dpp/src/data_contract/document_type/index/random_index.rs @@ -58,6 +58,7 @@ impl Index { name: index_name, properties, unique, + null_searchable: true, contested_index: None, }) } diff --git a/packages/rs-dpp/src/data_contract/document_type/index_level/mod.rs b/packages/rs-dpp/src/data_contract/document_type/index_level/mod.rs index 75242ec6af5..e2c6a132750 100644 --- a/packages/rs-dpp/src/data_contract/document_type/index_level/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/index_level/mod.rs @@ -29,6 +29,14 @@ pub enum IndexType { ContestedResourceIndex, } +#[derive(Debug, PartialEq, Copy, Clone)] +pub struct IndexLevelTypeInfo { + /// should we insert if all fields up to here are null + pub should_insert_with_all_null: bool, + /// The index type + pub index_type: IndexType, +} + impl IndexType { pub fn is_unique(&self) -> bool { match self { @@ -39,12 +47,14 @@ impl IndexType { } } +pub type ShouldInsertWithAllNull = bool; + #[derive(Debug, PartialEq, Clone)] pub struct IndexLevel { /// the lower index levels from this level sub_index_levels: BTreeMap, /// did an index terminate at this level - has_index_with_type: Option, + has_index_with_type: Option, /// unique level identifier level_identifier: u64, } @@ -58,7 +68,7 @@ impl IndexLevel { &self.sub_index_levels } - pub fn has_index_with_type(&self) -> Option { + pub fn has_index_with_type(&self) -> Option { self.has_index_with_type } @@ -199,7 +209,12 @@ impl IndexLevel { NonUniqueIndex }; - current_level.has_index_with_type = Some(index_type); + // if things are null searchable that means we should insert with all null + + current_level.has_index_with_type = Some(IndexLevelTypeInfo { + should_insert_with_all_null: index.null_searchable, + index_type, + }); } } } @@ -265,6 +280,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }]; @@ -291,6 +307,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }]; @@ -302,6 +319,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }, Index { @@ -311,6 +329,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }, ]; @@ -346,6 +365,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }, Index { @@ -355,6 +375,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }, ]; @@ -366,6 +387,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }]; @@ -399,6 +421,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }]; @@ -415,6 +438,7 @@ mod tests { }, ], unique: false, + null_searchable: true, contested_index: None, }]; @@ -454,6 +478,7 @@ mod tests { }, ], unique: false, + null_searchable: true, contested_index: None, }]; @@ -464,6 +489,7 @@ mod tests { ascending: false, }], unique: false, + null_searchable: true, contested_index: None, }]; diff --git a/packages/rs-dpp/src/data_contract/document_type/mod.rs b/packages/rs-dpp/src/data_contract/document_type/mod.rs index 748e571ae47..182bfe881a8 100644 --- a/packages/rs-dpp/src/data_contract/document_type/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/mod.rs @@ -7,6 +7,7 @@ pub mod methods; pub use index::*; mod index_level; pub use index_level::IndexLevel; +pub use index_level::IndexLevelTypeInfo; pub use index_level::IndexType; #[cfg(feature = "random-documents")] @@ -42,6 +43,7 @@ mod property_names { pub const REQUIRES_IDENTITY_DECRYPTION_BOUNDED_KEY: &str = "requiresIdentityDecryptionBoundedKey"; pub const INDICES: &str = "indices"; + pub const NULL_SEARCHABLE: &str = "nullSearchable"; pub const PROPERTIES: &str = "properties"; pub const POSITION: &str = "position"; pub const REQUIRED: &str = "required"; diff --git a/packages/rs-dpp/src/document/accessors/v0/mod.rs b/packages/rs-dpp/src/document/accessors/v0/mod.rs index e8274af2219..671ac05c4a6 100644 --- a/packages/rs-dpp/src/document/accessors/v0/mod.rs +++ b/packages/rs-dpp/src/document/accessors/v0/mod.rs @@ -79,6 +79,13 @@ pub trait DocumentV0Setters: DocumentV0Getters { } } + /// Removes the value under the given path. + /// The path supports syntax from the `lodash` JS library. Example: "root.people[0].name". + /// If parents are not present, they will be automatically created. + fn remove(&mut self, path: &str) -> Option { + self.properties_mut().remove(path) + } + /// Sets a `u8` value for the specified property name. fn set_u8(&mut self, property_name: &str, value: u8) { self.properties_mut() diff --git a/packages/rs-dpp/src/document/extended_document/mod.rs b/packages/rs-dpp/src/document/extended_document/mod.rs index fc7c78858e1..2901850d30b 100644 --- a/packages/rs-dpp/src/document/extended_document/mod.rs +++ b/packages/rs-dpp/src/document/extended_document/mod.rs @@ -452,12 +452,12 @@ mod test { println!( "{:?}", doc.properties() - .get_at_path("records.dashUniqueIdentityId") + .get_at_path("records.identity") .expect("expected to get value") ); assert_eq!( doc.properties() - .get_at_path("records.dashUniqueIdentityId") + .get_at_path("records.identity") .expect("expected to get value"), &Value::Identifier( bs58::decode("HBNMY5QWuBVKNFLhgBTC1VmpEnscrmqKPMXpnYSHwhfn") @@ -549,7 +549,7 @@ mod test { let string = serde_json::to_string(&document)?; assert_eq!( - "{\"version\":0,\"$type\":\"domain\",\"$dataContractId\":\"566vcJkmebVCAb2Dkj2yVMSgGFcsshupnQqtsz1RFbcy\",\"document\":{\"$version\":\"0\",\"$id\":\"4veLBZPHDkaCPF9LfZ8fX3JZiS5q5iUVGhdBbaa9ga5E\",\"$ownerId\":\"HBNMY5QWuBVKNFLhgBTC1VmpEnscrmqKPMXpnYSHwhfn\",\"$dataContractId\":\"566vcJkmebVCAb2Dkj2yVMSgGFcsshupnQqtsz1RFbcy\",\"$protocolVersion\":0,\"$type\":\"domain\",\"label\":\"user-9999\",\"normalizedLabel\":\"user-9999\",\"normalizedParentDomainName\":\"dash\",\"preorderSalt\":\"BzQi567XVqc8wYiVHS887sJtL6MDbxLHNnp+UpTFSB0=\",\"records\":{\"dashUniqueIdentityId\":\"HBNMY5QWuBVKNFLhgBTC1VmpEnscrmqKPMXpnYSHwhfn\"},\"subdomainRules\":{\"allowSubdomains\":false},\"$revision\":1,\"$createdAt\":null,\"$updatedAt\":null,\"$transferredAt\":null,\"$createdAtBlockHeight\":null,\"$updatedAtBlockHeight\":null,\"$transferredAtBlockHeight\":null,\"$createdAtCoreBlockHeight\":null,\"$updatedAtCoreBlockHeight\":null,\"$transferredAtCoreBlockHeight\":null}}", + "{\"version\":0,\"$type\":\"domain\",\"$dataContractId\":\"566vcJkmebVCAb2Dkj2yVMSgGFcsshupnQqtsz1RFbcy\",\"document\":{\"$version\":\"0\",\"$id\":\"4veLBZPHDkaCPF9LfZ8fX3JZiS5q5iUVGhdBbaa9ga5E\",\"$ownerId\":\"HBNMY5QWuBVKNFLhgBTC1VmpEnscrmqKPMXpnYSHwhfn\",\"$dataContractId\":\"566vcJkmebVCAb2Dkj2yVMSgGFcsshupnQqtsz1RFbcy\",\"$protocolVersion\":0,\"$type\":\"domain\",\"label\":\"user-9999\",\"normalizedLabel\":\"user-9999\",\"normalizedParentDomainName\":\"dash\",\"preorderSalt\":\"BzQi567XVqc8wYiVHS887sJtL6MDbxLHNnp+UpTFSB0=\",\"records\":{\"identity\":\"HBNMY5QWuBVKNFLhgBTC1VmpEnscrmqKPMXpnYSHwhfn\"},\"subdomainRules\":{\"allowSubdomains\":false},\"$revision\":1,\"$createdAt\":null,\"$updatedAt\":null,\"$transferredAt\":null,\"$createdAtBlockHeight\":null,\"$updatedAtBlockHeight\":null,\"$transferredAtBlockHeight\":null,\"$createdAtCoreBlockHeight\":null,\"$updatedAtCoreBlockHeight\":null,\"$transferredAtCoreBlockHeight\":null}}", string ); diff --git a/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs index 002db4bd104..e2f2f25012e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs @@ -7,12 +7,12 @@ use crate::consensus::basic::data_contract::data_contract_max_depth_exceed_error #[cfg(feature = "json-schema-validation")] use crate::consensus::basic::data_contract::InvalidJsonSchemaRefError; use crate::consensus::basic::data_contract::{ - ContestedUniqueIndexOnMutableDocumentTypeError, DataContractHaveNewUniqueIndexError, - DataContractImmutablePropertiesUpdateError, DataContractInvalidIndexDefinitionUpdateError, - DataContractUniqueIndicesChangedError, DuplicateIndexError, DuplicateIndexNameError, - IncompatibleDataContractSchemaError, IncompatibleDocumentTypeSchemaError, - IncompatibleRe2PatternError, InvalidCompoundIndexError, InvalidDataContractIdError, - InvalidDataContractVersionError, InvalidDocumentTypeNameError, + ContestedUniqueIndexOnMutableDocumentTypeError, ContestedUniqueIndexWithUniqueIndexError, + DataContractHaveNewUniqueIndexError, DataContractImmutablePropertiesUpdateError, + DataContractInvalidIndexDefinitionUpdateError, DataContractUniqueIndicesChangedError, + DuplicateIndexError, DuplicateIndexNameError, IncompatibleDataContractSchemaError, + IncompatibleDocumentTypeSchemaError, IncompatibleRe2PatternError, InvalidCompoundIndexError, + InvalidDataContractIdError, InvalidDataContractVersionError, InvalidDocumentTypeNameError, InvalidDocumentTypeRequiredSecurityLevelError, InvalidIndexPropertyTypeError, InvalidIndexedPropertyConstraintError, SystemPropertyIndexAlreadyPresentError, UndefinedIndexPropertyError, UniqueIndicesLimitReachedError, @@ -385,6 +385,9 @@ pub enum BasicError { #[error(transparent)] ContestedUniqueIndexOnMutableDocumentTypeError(ContestedUniqueIndexOnMutableDocumentTypeError), + #[error(transparent)] + ContestedUniqueIndexWithUniqueIndexError(ContestedUniqueIndexWithUniqueIndexError), + #[error(transparent)] OverflowError(OverflowError), diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs index ecd22d8e245..def757d547f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs @@ -9,7 +9,7 @@ use thiserror::Error; Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, )] #[error( - "Document type '{document_type}' has a contested unique index '{contested_unique_index_name}'" + "Document type '{document_type}' has a contested unique index '{contested_unique_index_name}' but is set as mutable which is not allowed" )] #[platform_serialize(unversioned)] pub struct ContestedUniqueIndexOnMutableDocumentTypeError { diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs new file mode 100644 index 00000000000..cfaa8b9fe12 --- /dev/null +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs @@ -0,0 +1,56 @@ +use crate::consensus::basic::BasicError; +use crate::consensus::ConsensusError; +use crate::errors::ProtocolError; +use bincode::{Decode, Encode}; +use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use thiserror::Error; + +#[derive( + Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, +)] +#[error( + "Document type '{document_type}' has a contested unique index '{contested_unique_index_name}' and a unique index '{unique_index_name}' as well which is not allowed" +)] +#[platform_serialize(unversioned)] +pub struct ContestedUniqueIndexWithUniqueIndexError { + /* + + DO NOT CHANGE ORDER OF FIELDS WITHOUT INTRODUCING OF NEW VERSION + + */ + document_type: String, + contested_unique_index_name: String, + unique_index_name: String, +} + +impl ContestedUniqueIndexWithUniqueIndexError { + pub fn new( + document_type: String, + contested_unique_index_name: String, + unique_index_name: String, + ) -> Self { + Self { + document_type, + contested_unique_index_name, + unique_index_name, + } + } + + pub fn document_type(&self) -> &str { + &self.document_type + } + + pub fn contested_unique_index_name(&self) -> &str { + &self.contested_unique_index_name + } + + pub fn unique_index_name(&self) -> &str { + &self.unique_index_name + } +} + +impl From for ConsensusError { + fn from(err: ContestedUniqueIndexWithUniqueIndexError) -> Self { + Self::BasicError(BasicError::ContestedUniqueIndexWithUniqueIndexError(err)) + } +} diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/mod.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/mod.rs index 1bd974b0998..9e7bedab0d9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/mod.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/mod.rs @@ -1,4 +1,5 @@ mod contested_unique_index_on_mutable_document_type_error; +mod contested_unique_index_with_unique_index_error; mod data_contract_have_new_unique_index_error; mod data_contract_immutable_properties_update_error; mod data_contract_invalid_index_definition_update_error; @@ -51,6 +52,7 @@ pub use undefined_index_property_error::*; pub use unique_indices_limit_reached_error::*; pub use contested_unique_index_on_mutable_document_type_error::*; +pub use contested_unique_index_with_unique_index_error::*; pub use incompatible_document_type_schema_error::*; pub use invalid_document_type_name_error::*; pub use unknown_document_creation_restriction_mode_error::*; diff --git a/packages/rs-dpp/src/errors/consensus/codes.rs b/packages/rs-dpp/src/errors/consensus/codes.rs index 3cc2cc8dfbf..2d6cd6ddadb 100644 --- a/packages/rs-dpp/src/errors/consensus/codes.rs +++ b/packages/rs-dpp/src/errors/consensus/codes.rs @@ -97,6 +97,7 @@ impl ErrorWithCode for BasicError { Self::IncompatibleDocumentTypeSchemaError { .. } => 10246, Self::ContractError(DataContractError::RegexError(_)) => 10247, Self::ContestedUniqueIndexOnMutableDocumentTypeError(_) => 10248, + Self::ContestedUniqueIndexWithUniqueIndexError(_) => 10249, // Document Errors: 10400-10499 Self::DataContractNotPresentError { .. } => 10400, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/methods/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/methods/mod.rs index a149b7d0512..96b2654046a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/methods/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/methods/mod.rs @@ -12,6 +12,7 @@ use crate::identity::Identity; #[cfg(feature = "state-transition-signing")] use crate::identity::core_script::CoreScript; +#[cfg(feature = "state-transition-signing")] use crate::identity::IdentityPublicKey; #[cfg(feature = "state-transition-signing")] use crate::prelude::{IdentityNonce, UserFeeIncrease}; diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/methods/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/methods/v0/mod.rs index 6fd9bbeccec..0341f253f1f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/methods/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/methods/v0/mod.rs @@ -4,6 +4,7 @@ use crate::identity::core_script::CoreScript; use crate::identity::signer::Signer; #[cfg(feature = "state-transition-signing")] use crate::identity::Identity; +#[cfg(feature = "state-transition-signing")] use crate::identity::IdentityPublicKey; #[cfg(feature = "state-transition-signing")] use crate::prelude::{IdentityNonce, UserFeeIncrease}; diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/v0_methods.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/v0_methods.rs index 65e63b3bd8f..ca9d0ecec96 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/v0_methods.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/v0_methods.rs @@ -4,6 +4,7 @@ use crate::identity::accessors::IdentityGettersV0; use crate::identity::core_script::CoreScript; #[cfg(feature = "state-transition-signing")] use crate::identity::signer::Signer; +#[cfg(feature = "state-transition-signing")] use crate::identity::IdentityPublicKey; #[cfg(feature = "state-transition-signing")] use crate::identity::{Identity, KeyType, Purpose, SecurityLevel}; diff --git a/packages/rs-dpp/src/tests/payloads/document_dpns.json b/packages/rs-dpp/src/tests/payloads/document_dpns.json index 49b2a388bd8..1e6e854ac4a 100644 --- a/packages/rs-dpp/src/tests/payloads/document_dpns.json +++ b/packages/rs-dpp/src/tests/payloads/document_dpns.json @@ -7,7 +7,7 @@ "$revision": 1, "label": "user-9999", "records": { - "dashUniqueIdentityId": "HBNMY5QWuBVKNFLhgBTC1VmpEnscrmqKPMXpnYSHwhfn" + "identity": "HBNMY5QWuBVKNFLhgBTC1VmpEnscrmqKPMXpnYSHwhfn" }, "preorderSalt": "BzQi567XVqc8wYiVHS887sJtL6MDbxLHNnp+UpTFSB0", "subdomainRules": { diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs index 7f9f31758e6..cab90f7575b 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs @@ -293,11 +293,8 @@ mod tests { .expect("should obtain root hash"); assert_eq!( - root_hash, - [ - 122, 78, 218, 93, 76, 126, 219, 4, 222, 149, 39, 191, 51, 199, 229, 9, 180, - 151, 132, 38, 91, 7, 107, 20, 46, 4, 39, 59, 203, 2, 86, 79 - ] + hex::encode(root_hash), + "edc1f51a2725e13e02f0a5dd9aad1b3de07872c9cd03e83388a10b0016a27f86" ) } } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/data_contract_create/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/data_contract_create/mod.rs index 0aa45d57e4f..8805afb60fd 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/data_contract_create/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/data_contract_create/mod.rs @@ -138,3 +138,207 @@ impl StateTransitionStateValidationV0 for DataContractCreateTransition { } } } + +#[cfg(test)] +mod tests { + use crate::execution::validation::state_transition::state_transitions::tests::setup_identity; + use crate::platform_types::state_transitions_processing_result::StateTransitionExecutionResult; + use crate::test::helpers::setup::TestPlatformBuilder; + use assert_matches::assert_matches; + use dpp::block::block_info::BlockInfo; + use dpp::consensus::basic::BasicError; + use dpp::consensus::ConsensusError; + use dpp::dash_to_credits; + use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; + use dpp::serialization::PlatformSerializable; + use dpp::state_transition::data_contract_create_transition::methods::DataContractCreateTransitionMethodsV0; + use dpp::state_transition::data_contract_create_transition::DataContractCreateTransition; + use dpp::tests::json_document::json_document_to_contract_with_ids; + use platform_version::version::PlatformVersion; + + #[test] + fn test_data_contract_creation_with_contested_unique_index() { + let platform_version = PlatformVersion::latest(); + let mut platform = TestPlatformBuilder::new() + .build_with_mock_rpc() + .set_genesis_state(); + + let platform_state = platform.state.load(); + + let (identity, signer, key) = setup_identity(&mut platform, 958, dash_to_credits!(0.1)); + + let data_contract = json_document_to_contract_with_ids( + "tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index.json", + None, + None, + false, //no need to validate the data contracts in tests for drive + platform_version, + ) + .expect("expected to get json based contract"); + + let data_contract_create_transition = DataContractCreateTransition::new_from_data_contract( + data_contract, + 1, + &identity.into_partial_identity_info(), + key.id(), + &signer, + platform_version, + None, + ) + .expect("expect to create documents batch transition"); + + let data_contract_create_serialized_transition = data_contract_create_transition + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![data_contract_create_serialized_transition.clone()], + &platform_state, + &BlockInfo::default(), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + assert_matches!( + processing_result.execution_results().as_slice(), + [StateTransitionExecutionResult::SuccessfulExecution(_, _)] + ); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + } + + #[test] + fn test_dpns_contract_creation_with_contract_id_non_contested() { + let platform_version = PlatformVersion::latest(); + let mut platform = TestPlatformBuilder::new() + .build_with_mock_rpc() + .set_genesis_state(); + + let platform_state = platform.state.load(); + + let (identity, signer, key) = setup_identity(&mut platform, 958, dash_to_credits!(0.1)); + + let data_contract = json_document_to_contract_with_ids( + "tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id.json", + None, + None, + false, //no need to validate the data contracts in tests for drive + platform_version, + ) + .expect("expected to get json based contract"); + + let data_contract_create_transition = DataContractCreateTransition::new_from_data_contract( + data_contract, + 1, + &identity.into_partial_identity_info(), + key.id(), + &signer, + platform_version, + None, + ) + .expect("expect to create documents batch transition"); + + let data_contract_create_serialized_transition = data_contract_create_transition + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![data_contract_create_serialized_transition.clone()], + &platform_state, + &BlockInfo::default(), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + assert_matches!( + processing_result.execution_results().as_slice(), + [StateTransitionExecutionResult::SuccessfulExecution(_, _)] + ); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + } + + #[test] + fn test_data_contract_creation_with_contested_unique_index_and_unique_index_should_fail() { + let platform_version = PlatformVersion::latest(); + let mut platform = TestPlatformBuilder::new() + .build_with_mock_rpc() + .set_genesis_state(); + + let platform_state = platform.state.load(); + + let (identity, signer, key) = setup_identity(&mut platform, 958, dash_to_credits!(0.1)); + + let data_contract = json_document_to_contract_with_ids( + "tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-and-other-unique-index.json", + None, + None, + false, //no need to validate the data contracts in tests for drive + platform_version, + ) + .expect("expected to get json based contract"); + + let data_contract_create_transition = DataContractCreateTransition::new_from_data_contract( + data_contract, + 1, + &identity.into_partial_identity_info(), + key.id(), + &signer, + platform_version, + None, + ) + .expect("expect to create documents batch transition"); + + let data_contract_create_serialized_transition = data_contract_create_transition + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![data_contract_create_serialized_transition.clone()], + &platform_state, + &BlockInfo::default(), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + assert_matches!( + processing_result.execution_results().as_slice(), + [StateTransitionExecutionResult::PaidConsensusError( + ConsensusError::BasicError(BasicError::ContestedUniqueIndexWithUniqueIndexError(_)), + _ + )] + ); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + } +} diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs index 459b3cec0f4..fc64b77912b 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs @@ -292,7 +292,7 @@ mod tests { use drive::query::vote_poll_vote_state_query::ContestedDocumentVotePollDriveQueryResultType::DocumentsAndVoteTally; use drive::query::vote_poll_vote_state_query::ResolvedContestedDocumentVotePollDriveQuery; use drive::util::test_helpers::setup_contract; - use crate::execution::validation::state_transition::state_transitions::tests::{add_contender_to_dpns_name_contest, create_dpns_name_contest, create_dpns_name_contest_give_key_info, fast_forward_to_block, perform_votes_multi}; + use crate::execution::validation::state_transition::state_transitions::tests::{add_contender_to_dpns_name_contest, create_dpns_identity_name_contest, create_dpns_name_contest_give_key_info, fast_forward_to_block, perform_votes_multi}; use crate::platform_types::platform_state::v0::PlatformStateV0Methods; use crate::platform_types::state_transitions_processing_result::StateTransitionExecutionResult::PaidConsensusError; @@ -578,14 +578,14 @@ mod tests { document_1.set("normalizedParentDomainName", "dash".into()); document_1.set("label", "quantum".into()); document_1.set("normalizedLabel", "quantum".into()); - document_1.set("records.dashUniqueIdentityId", document_1.owner_id().into()); + document_1.set("records.identity", document_1.owner_id().into()); document_1.set("subdomainRules.allowSubdomains", false.into()); document_2.set("parentDomainName", "dash".into()); document_2.set("normalizedParentDomainName", "dash".into()); document_2.set("label", "quantum".into()); document_2.set("normalizedLabel", "quantum".into()); - document_2.set("records.dashUniqueIdentityId", document_2.owner_id().into()); + document_2.set("records.identity", document_2.owner_id().into()); document_2.set("subdomainRules.allowSubdomains", false.into()); let salt_1: [u8; 32] = rng.gen(); @@ -954,7 +954,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -1100,7 +1100,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -5420,4 +5420,888 @@ mod tests { ); } } + + mod dpns_tests { + use super::*; + use crate::execution::validation::state_transition::tests::setup_identity; + use crate::test::helpers::setup::TestPlatformBuilder; + use dpp::dash_to_credits; + use dpp::data_contract::document_type::random_document::{ + DocumentFieldFillSize, DocumentFieldFillType, + }; + use dpp::platform_value::Bytes32; + use dpp::state_transition::documents_batch_transition::DocumentsBatchTransition; + use dpp::util::hash::hash_double; + use drive::query::{InternalClauses, OrderClause, WhereClause, WhereOperator}; + use drive::util::test_helpers::setup_contract; + use indexmap::IndexMap; + use platform_version::version::PlatformVersion; + use rand::prelude::StdRng; + use rand::Rng; + use std::collections::BTreeMap; + + #[test] + fn test_dpns_contract_references_with_no_contested_unique_index() { + let platform_version = PlatformVersion::latest(); + let mut platform = TestPlatformBuilder::new() + .build_with_mock_rpc() + .set_genesis_state(); + + let mut rng = StdRng::seed_from_u64(433); + + let platform_state = platform.state.load(); + + let (identity_1, signer_1, key_1) = + setup_identity(&mut platform, 958, dash_to_credits!(0.5)); + + let (identity_2, signer_2, key_2) = + setup_identity(&mut platform, 93, dash_to_credits!(0.5)); + + let (identity_3, signer_3, key_3) = + setup_identity(&mut platform, 98, dash_to_credits!(0.5)); + + let dashpay_contract = setup_contract( + &platform.drive, + "tests/supporting_files/contract/dashpay/dashpay-contract-all-mutable.json", + None, + None, + ); + + let card_game = setup_contract( + &platform.drive, + "tests/supporting_files/contract/crypto-card-game/crypto-card-game-direct-purchase.json", + None, + None, + ); + + let dpns_contract = setup_contract( + &platform.drive, + "tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id.json", + None, + None, + ); + + let preorder = dpns_contract + .document_type_for_name("preorder") + .expect("expected a profile document type"); + + assert!(!preorder.documents_mutable()); + assert!(preorder.documents_can_be_deleted()); + assert!(!preorder.documents_transferable().is_transferable()); + + let domain = dpns_contract + .document_type_for_name("domain") + .expect("expected a profile document type"); + + assert!(!domain.documents_mutable()); + // Deletion is disabled with data trigger + assert!(domain.documents_can_be_deleted()); + assert!(domain.documents_transferable().is_transferable()); + + let entropy = Bytes32::random_with_rng(&mut rng); + + let mut preorder_document_1 = preorder + .random_document_with_identifier_and_entropy( + &mut rng, + identity_1.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut preorder_document_2 = preorder + .random_document_with_identifier_and_entropy( + &mut rng, + identity_2.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut preorder_document_3 = preorder + .random_document_with_identifier_and_entropy( + &mut rng, + identity_3.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut document_1 = domain + .random_document_with_identifier_and_entropy( + &mut rng, + identity_1.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut document_2 = domain + .random_document_with_identifier_and_entropy( + &mut rng, + identity_2.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut document_3 = domain + .random_document_with_identifier_and_entropy( + &mut rng, + identity_3.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + document_1.set("parentDomainName", "dash".into()); + document_1.set("normalizedParentDomainName", "dash".into()); + document_1.set("label", "quantum123".into()); + document_1.set("normalizedLabel", "quantum123".into()); + document_1.set("records.contract", dashpay_contract.id().into()); + document_1.set("subdomainRules.allowSubdomains", false.into()); + + document_2.set("parentDomainName", "dash".into()); + document_2.set("normalizedParentDomainName", "dash".into()); + document_2.set("label", "van89".into()); + document_2.set("normalizedLabel", "van89".into()); + document_2.set("records.contract", card_game.id().into()); + document_2.set("subdomainRules.allowSubdomains", false.into()); + + document_3.set("parentDomainName", "dash".into()); + document_3.set("normalizedParentDomainName", "dash".into()); + document_3.set("label", "jazz65".into()); + document_3.set("normalizedLabel", "jazz65".into()); + document_3.set("records.identity", document_3.owner_id().into()); + document_3.set("subdomainRules.allowSubdomains", false.into()); + + let salt_1: [u8; 32] = rng.gen(); + let salt_2: [u8; 32] = rng.gen(); + let salt_3: [u8; 32] = rng.gen(); + + let mut salted_domain_buffer_1: Vec = vec![]; + salted_domain_buffer_1.extend(salt_1); + salted_domain_buffer_1.extend("quantum123.dash".as_bytes()); + + let salted_domain_hash_1 = hash_double(salted_domain_buffer_1); + + let mut salted_domain_buffer_2: Vec = vec![]; + salted_domain_buffer_2.extend(salt_2); + salted_domain_buffer_2.extend("van89.dash".as_bytes()); + + let salted_domain_hash_2 = hash_double(salted_domain_buffer_2); + + let mut salted_domain_buffer_3: Vec = vec![]; + salted_domain_buffer_3.extend(salt_3); + salted_domain_buffer_3.extend("jazz65.dash".as_bytes()); + + let salted_domain_hash_3 = hash_double(salted_domain_buffer_3); + + preorder_document_1.set("saltedDomainHash", salted_domain_hash_1.into()); + preorder_document_2.set("saltedDomainHash", salted_domain_hash_2.into()); + preorder_document_3.set("saltedDomainHash", salted_domain_hash_3.into()); + + document_1.set("preorderSalt", salt_1.into()); + document_2.set("preorderSalt", salt_2.into()); + document_3.set("preorderSalt", salt_3.into()); + + let documents_batch_create_preorder_transition_1 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + preorder_document_1, + preorder, + entropy.0, + &key_1, + 2, + 0, + &signer_1, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_preorder_transition_1 = + documents_batch_create_preorder_transition_1 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_preorder_transition_2 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + preorder_document_2, + preorder, + entropy.0, + &key_2, + 2, + 0, + &signer_2, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_preorder_transition_2 = + documents_batch_create_preorder_transition_2 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_preorder_transition_3 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + preorder_document_3, + preorder, + entropy.0, + &key_3, + 2, + 0, + &signer_3, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_preorder_transition_3 = + documents_batch_create_preorder_transition_3 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_transition_1 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + document_1, + domain, + entropy.0, + &key_1, + 3, + 0, + &signer_1, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_transition_1 = + documents_batch_create_transition_1 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_transition_2 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + document_2, + domain, + entropy.0, + &key_2, + 3, + 0, + &signer_2, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_transition_2 = + documents_batch_create_transition_2 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_transition_3 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + document_3.clone(), + domain, + entropy.0, + &key_3, + 3, + 0, + &signer_3, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_transition_3 = + documents_batch_create_transition_3 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![ + documents_batch_create_serialized_preorder_transition_1.clone(), + documents_batch_create_serialized_preorder_transition_2.clone(), + documents_batch_create_serialized_preorder_transition_3.clone(), + ], + &platform_state, + &BlockInfo::default(), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + + assert_eq!(processing_result.valid_count(), 3); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![ + documents_batch_create_serialized_transition_1.clone(), + documents_batch_create_serialized_transition_2.clone(), + documents_batch_create_serialized_transition_3.clone(), + ], + &platform_state, + &BlockInfo::default(), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + + assert_eq!(processing_result.valid_count(), 3); + + let mut order_by = IndexMap::new(); + + order_by.insert( + "records.identity".to_string(), + OrderClause { + field: "records.identity".to_string(), + ascending: true, + }, + ); + + let drive_query = DriveDocumentQuery { + contract: &dpns_contract, + document_type: domain, + internal_clauses: InternalClauses { + primary_key_in_clause: None, + primary_key_equal_clause: None, + in_clause: None, + range_clause: Some(WhereClause { + field: "records.identity".to_string(), + operator: WhereOperator::LessThanOrEquals, + value: Value::Bytes32([255; 32]), + }), + equal_clauses: Default::default(), + }, + offset: None, + limit: None, + order_by, + start_at: None, + start_at_included: false, + block_time_ms: None, + }; + + let documents = platform + .drive + .query_documents(drive_query, None, false, None, None) + .expect("expected to get back documents") + .documents_owned(); + + assert!(documents + .get(0) + .expect("expected a document") + .is_equal_ignoring_time_based_fields(&document_3, platform_version) + .expect("expected to run is equal")); + + let drive_query = DriveDocumentQuery { + contract: &dpns_contract, + document_type: domain, + internal_clauses: InternalClauses { + primary_key_in_clause: None, + primary_key_equal_clause: None, + in_clause: None, + range_clause: None, + equal_clauses: BTreeMap::from([( + "records.identity".to_string(), + WhereClause { + field: "records.identity".to_string(), + operator: WhereOperator::Equal, + value: Value::Null, + }, + )]), + }, + offset: None, + limit: None, + order_by: Default::default(), + start_at: None, + start_at_included: false, + block_time_ms: None, + }; + + let documents = platform + .drive + .query_documents(drive_query, None, false, None, None) + .expect("expected to get back documents") + .documents_owned(); + + // This is normal because we set that we could not query on null + assert_eq!(documents.len(), 0); + } + + #[test] + fn test_dpns_contract_references_with_no_contested_unique_index_null_searchable_true() { + let platform_version = PlatformVersion::latest(); + let mut platform = TestPlatformBuilder::new() + .build_with_mock_rpc() + .set_genesis_state(); + + let mut rng = StdRng::seed_from_u64(433); + + let platform_state = platform.state.load(); + + let (identity_1, signer_1, key_1) = + setup_identity(&mut platform, 958, dash_to_credits!(0.5)); + + let (identity_2, signer_2, key_2) = + setup_identity(&mut platform, 93, dash_to_credits!(0.5)); + + let (identity_3, signer_3, key_3) = + setup_identity(&mut platform, 98, dash_to_credits!(0.5)); + + let dashpay_contract = setup_contract( + &platform.drive, + "tests/supporting_files/contract/dashpay/dashpay-contract-all-mutable.json", + None, + None, + ); + + let card_game = setup_contract( + &platform.drive, + "tests/supporting_files/contract/crypto-card-game/crypto-card-game-direct-purchase.json", + None, + None, + ); + + let dpns_contract = setup_contract( + &platform.drive, + "tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id-null-searchable-true.json", + None, + None, + ); + + let preorder = dpns_contract + .document_type_for_name("preorder") + .expect("expected a profile document type"); + + assert!(!preorder.documents_mutable()); + assert!(preorder.documents_can_be_deleted()); + assert!(!preorder.documents_transferable().is_transferable()); + + let domain = dpns_contract + .document_type_for_name("domain") + .expect("expected a profile document type"); + + assert!(!domain.documents_mutable()); + // Deletion is disabled with data trigger + assert!(domain.documents_can_be_deleted()); + assert!(domain.documents_transferable().is_transferable()); + + let entropy = Bytes32::random_with_rng(&mut rng); + + let mut preorder_document_1 = preorder + .random_document_with_identifier_and_entropy( + &mut rng, + identity_1.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut preorder_document_2 = preorder + .random_document_with_identifier_and_entropy( + &mut rng, + identity_2.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut preorder_document_3 = preorder + .random_document_with_identifier_and_entropy( + &mut rng, + identity_3.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut document_1 = domain + .random_document_with_identifier_and_entropy( + &mut rng, + identity_1.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut document_2 = domain + .random_document_with_identifier_and_entropy( + &mut rng, + identity_2.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut document_3 = domain + .random_document_with_identifier_and_entropy( + &mut rng, + identity_3.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + document_1.set("parentDomainName", "dash".into()); + document_1.set("normalizedParentDomainName", "dash".into()); + document_1.set("label", "quantum123".into()); + document_1.set("normalizedLabel", "quantum123".into()); + document_1.set("records.contract", dashpay_contract.id().into()); + document_1.set("subdomainRules.allowSubdomains", false.into()); + + document_2.set("parentDomainName", "dash".into()); + document_2.set("normalizedParentDomainName", "dash".into()); + document_2.set("label", "van89".into()); + document_2.set("normalizedLabel", "van89".into()); + document_2.set("records.contract", card_game.id().into()); + document_2.set("subdomainRules.allowSubdomains", false.into()); + + document_3.set("parentDomainName", "dash".into()); + document_3.set("normalizedParentDomainName", "dash".into()); + document_3.set("label", "jazz65".into()); + document_3.set("normalizedLabel", "jazz65".into()); + document_3.set("records.identity", document_3.owner_id().into()); + document_3.set("subdomainRules.allowSubdomains", false.into()); + + let salt_1: [u8; 32] = rng.gen(); + let salt_2: [u8; 32] = rng.gen(); + let salt_3: [u8; 32] = rng.gen(); + + let mut salted_domain_buffer_1: Vec = vec![]; + salted_domain_buffer_1.extend(salt_1); + salted_domain_buffer_1.extend("quantum123.dash".as_bytes()); + + let salted_domain_hash_1 = hash_double(salted_domain_buffer_1); + + let mut salted_domain_buffer_2: Vec = vec![]; + salted_domain_buffer_2.extend(salt_2); + salted_domain_buffer_2.extend("van89.dash".as_bytes()); + + let salted_domain_hash_2 = hash_double(salted_domain_buffer_2); + + let mut salted_domain_buffer_3: Vec = vec![]; + salted_domain_buffer_3.extend(salt_3); + salted_domain_buffer_3.extend("jazz65.dash".as_bytes()); + + let salted_domain_hash_3 = hash_double(salted_domain_buffer_3); + + preorder_document_1.set("saltedDomainHash", salted_domain_hash_1.into()); + preorder_document_2.set("saltedDomainHash", salted_domain_hash_2.into()); + preorder_document_3.set("saltedDomainHash", salted_domain_hash_3.into()); + + document_1.set("preorderSalt", salt_1.into()); + document_2.set("preorderSalt", salt_2.into()); + document_3.set("preorderSalt", salt_3.into()); + + let documents_batch_create_preorder_transition_1 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + preorder_document_1, + preorder, + entropy.0, + &key_1, + 2, + 0, + &signer_1, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_preorder_transition_1 = + documents_batch_create_preorder_transition_1 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_preorder_transition_2 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + preorder_document_2, + preorder, + entropy.0, + &key_2, + 2, + 0, + &signer_2, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_preorder_transition_2 = + documents_batch_create_preorder_transition_2 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_preorder_transition_3 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + preorder_document_3, + preorder, + entropy.0, + &key_3, + 2, + 0, + &signer_3, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_preorder_transition_3 = + documents_batch_create_preorder_transition_3 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_transition_1 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + document_1, + domain, + entropy.0, + &key_1, + 3, + 0, + &signer_1, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_transition_1 = + documents_batch_create_transition_1 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_transition_2 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + document_2, + domain, + entropy.0, + &key_2, + 3, + 0, + &signer_2, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_transition_2 = + documents_batch_create_transition_2 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_transition_3 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + document_3.clone(), + domain, + entropy.0, + &key_3, + 3, + 0, + &signer_3, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_transition_3 = + documents_batch_create_transition_3 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![ + documents_batch_create_serialized_preorder_transition_1.clone(), + documents_batch_create_serialized_preorder_transition_2.clone(), + documents_batch_create_serialized_preorder_transition_3.clone(), + ], + &platform_state, + &BlockInfo::default(), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + + assert_eq!(processing_result.valid_count(), 3); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![ + documents_batch_create_serialized_transition_1.clone(), + documents_batch_create_serialized_transition_2.clone(), + documents_batch_create_serialized_transition_3.clone(), + ], + &platform_state, + &BlockInfo::default(), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + + assert_eq!(processing_result.valid_count(), 3); + + let mut order_by = IndexMap::new(); + + order_by.insert( + "records.identity".to_string(), + OrderClause { + field: "records.identity".to_string(), + ascending: true, + }, + ); + + let drive_query = DriveDocumentQuery { + contract: &dpns_contract, + document_type: domain, + internal_clauses: InternalClauses { + primary_key_in_clause: None, + primary_key_equal_clause: None, + in_clause: None, + range_clause: Some(WhereClause { + field: "records.identity".to_string(), + operator: WhereOperator::LessThanOrEquals, + value: Value::Bytes32([255; 32]), + }), + equal_clauses: Default::default(), + }, + offset: None, + limit: None, + order_by, + start_at: None, + start_at_included: false, + block_time_ms: None, + }; + + let documents = platform + .drive + .query_documents(drive_query, None, false, None, None) + .expect("expected to get back documents") + .documents_owned(); + + // here we will get all 3 documents + assert_eq!(documents.len(), 3); + + let drive_query = DriveDocumentQuery { + contract: &dpns_contract, + document_type: domain, + internal_clauses: InternalClauses { + primary_key_in_clause: None, + primary_key_equal_clause: None, + in_clause: None, + range_clause: None, + equal_clauses: BTreeMap::from([( + "records.identity".to_string(), + WhereClause { + field: "records.identity".to_string(), + operator: WhereOperator::Equal, + value: Value::Null, + }, + )]), + }, + offset: None, + limit: None, + order_by: Default::default(), + start_at: None, + start_at_included: false, + block_time_ms: None, + }; + + let documents = platform + .drive + .query_documents(drive_query, None, false, None, None) + .expect("expected to get back documents") + .documents_owned(); + + assert_eq!(documents.len(), 2); + } + } } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs index 6383ac871bc..f2ce1e36626 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs @@ -159,7 +159,7 @@ mod tests { }; use dpp::fee::Credits; use drive::drive::Drive; - use crate::execution::validation::state_transition::state_transitions::tests::{create_dpns_name_contest, verify_dpns_name_contest, perform_vote, setup_masternode_identity, get_proved_vote_states, get_vote_states, perform_votes_multi}; + use crate::execution::validation::state_transition::state_transitions::tests::{create_dpns_identity_name_contest, verify_dpns_name_contest, perform_vote, setup_masternode_identity, get_proved_vote_states, get_vote_states, perform_votes_multi}; use dapi_grpc::platform::v0::get_contested_resource_vote_state_response::get_contested_resource_vote_state_response_v0::{finished_vote_info, FinishedVoteInfo}; use dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo; use dapi_grpc::platform::v0::get_vote_polls_by_end_date_request::get_vote_polls_by_end_date_request_v0; @@ -179,7 +179,7 @@ mod tests { let platform_state = platform.state.load(); - let (identity_1, identity_2, dpns_contract) = create_dpns_name_contest( + let (identity_1, identity_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -197,7 +197,7 @@ mod tests { platform_version, ); - let (identity_3, identity_4, dpns_contract) = create_dpns_name_contest( + let (identity_3, identity_4, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -280,7 +280,7 @@ mod tests { let platform_state = platform.state.load(); - let (_identity_1, _identity_2, _dpns_contract) = create_dpns_name_contest( + let (_identity_1, _identity_2, _dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -288,7 +288,7 @@ mod tests { platform_version, ); - let (_identity_3, _identity_4, dpns_contract) = create_dpns_name_contest( + let (_identity_3, _identity_4, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -374,7 +374,7 @@ mod tests { let platform_state = platform.state.load(); - let (_contender_1, _contender_2, dpns_contract) = create_dpns_name_contest( + let (_contender_1, _contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -507,7 +507,7 @@ mod tests { let platform_state = platform.state.load(); - let (_contender_1, _contender_2, dpns_contract) = create_dpns_name_contest( + let (_contender_1, _contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -647,7 +647,7 @@ mod tests { let platform_state = platform.state.load(); - let (_contender_1, _contender_2, dpns_contract) = create_dpns_name_contest( + let (_contender_1, _contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -791,7 +791,7 @@ mod tests { let platform_state = platform.state.load(); - let (_contender_1, _contender_2, dpns_contract) = create_dpns_name_contest( + let (_contender_1, _contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -925,7 +925,7 @@ mod tests { let platform_state = platform.state.load(); - let (_contender_1, _contender_2, dpns_contract) = create_dpns_name_contest( + let (_contender_1, _contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -1023,23 +1023,25 @@ mod tests { let platform_state = platform.state.load(); - let (_contender_1, _contender_2, _dpns_contract) = create_dpns_name_contest( - &mut platform, - &platform_state, - 7, - "quantum", - platform_version, - ); + let (_contender_1, _contender_2, _dpns_contract) = + create_dpns_identity_name_contest( + &mut platform, + &platform_state, + 7, + "quantum", + platform_version, + ); - let (_contender_3, _contender_4, _dpns_contract) = create_dpns_name_contest( - &mut platform, - &platform_state, - 8, - "coya", - platform_version, - ); + let (_contender_3, _contender_4, _dpns_contract) = + create_dpns_identity_name_contest( + &mut platform, + &platform_state, + 8, + "coya", + platform_version, + ); - let (_contender_5, _contender_6, dpns_contract) = create_dpns_name_contest( + let (_contender_5, _contender_6, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -1172,23 +1174,25 @@ mod tests { let platform_state = platform.state.load(); - let (_contender_1, _contender_2, _dpns_contract) = create_dpns_name_contest( - &mut platform, - &platform_state, - 7, - "quantum", - platform_version, - ); + let (_contender_1, _contender_2, _dpns_contract) = + create_dpns_identity_name_contest( + &mut platform, + &platform_state, + 7, + "quantum", + platform_version, + ); - let (_contender_3, _contender_4, _dpns_contract) = create_dpns_name_contest( - &mut platform, - &platform_state, - 8, - "coya", - platform_version, - ); + let (_contender_3, _contender_4, _dpns_contract) = + create_dpns_identity_name_contest( + &mut platform, + &platform_state, + 8, + "coya", + platform_version, + ); - let (_contender_5, _contender_6, dpns_contract) = create_dpns_name_contest( + let (_contender_5, _contender_6, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -1351,7 +1355,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -1501,7 +1505,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -1648,7 +1652,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -1903,7 +1907,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -2213,7 +2217,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -2338,7 +2342,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -2478,7 +2482,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, _dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, _dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -2486,7 +2490,7 @@ mod tests { platform_version, ); - let (contender_3, _contender_4, _dpns_contract) = create_dpns_name_contest( + let (contender_3, _contender_4, _dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -2494,7 +2498,7 @@ mod tests { platform_version, ); - let (_contender_5, _contender_6, dpns_contract) = create_dpns_name_contest( + let (_contender_5, _contender_6, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -2638,7 +2642,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, _dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, _dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -2646,7 +2650,7 @@ mod tests { platform_version, ); - let (contender_3, _contender_4, _dpns_contract) = create_dpns_name_contest( + let (contender_3, _contender_4, _dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -2654,7 +2658,7 @@ mod tests { platform_version, ); - let (_contender_5, _contender_6, dpns_contract) = create_dpns_name_contest( + let (_contender_5, _contender_6, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -3001,7 +3005,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -3009,7 +3013,7 @@ mod tests { platform_version, ); - let (contender_3, _, _) = create_dpns_name_contest( + let (contender_3, _, _) = create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -3244,7 +3248,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -3252,7 +3256,7 @@ mod tests { platform_version, ); - let (contender_3, _, _) = create_dpns_name_contest( + let (contender_3, _, _) = create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -3552,7 +3556,7 @@ mod tests { let platform_state = platform.state.load(); let (contender_1_quantum, _contender_2_quantum, _dpns_contract) = - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -3561,7 +3565,7 @@ mod tests { ); let (_contender_1_cooldog, contender_2_cooldog, _dpns_contract) = - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -3570,7 +3574,7 @@ mod tests { ); let (_contender_1_superman, _contender_2_superman, dpns_contract) = - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -3714,7 +3718,7 @@ mod tests { let platform_state = platform.state.load(); let (contender_1_quantum, _contender_2_quantum, _dpns_contract) = - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -3723,7 +3727,7 @@ mod tests { ); let (_contender_1_cooldog, contender_2_cooldog, _dpns_contract) = - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -3732,7 +3736,7 @@ mod tests { ); let (_contender_1_superman, _contender_2_superman, dpns_contract) = - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -3878,7 +3882,7 @@ mod tests { let platform_state = platform.state.load(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -3979,7 +3983,7 @@ mod tests { let platform_state = platform.state.load(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -4068,7 +4072,7 @@ mod tests { let platform_state = platform.state.load(); let mut platform_state = (**platform_state).clone(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -4100,7 +4104,7 @@ mod tests { )); // we create two new contenders, but we are on the same contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -4109,7 +4113,7 @@ mod tests { ); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -4255,7 +4259,7 @@ mod tests { let platform_state = platform.state.load(); let mut platform_state = (**platform_state).clone(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -4287,7 +4291,7 @@ mod tests { )); // we create two new contenders, but we are on the same contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -4296,7 +4300,7 @@ mod tests { ); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -4405,7 +4409,7 @@ mod tests { let platform_state = platform.state.load(); let mut platform_state = (**platform_state).clone(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -4437,7 +4441,7 @@ mod tests { )); // we create two new contenders, but we are on the same contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -4446,7 +4450,7 @@ mod tests { ); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -4478,7 +4482,7 @@ mod tests { )); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 10, @@ -4661,7 +4665,7 @@ mod tests { let platform_state = platform.state.load(); let mut platform_state = (**platform_state).clone(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -4693,7 +4697,7 @@ mod tests { )); // we create two new contenders, but we are on the same contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -4702,7 +4706,7 @@ mod tests { ); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -4734,7 +4738,7 @@ mod tests { )); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 10, @@ -4819,7 +4823,7 @@ mod tests { let platform_state = platform.state.load(); let mut platform_state = (**platform_state).clone(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -4851,7 +4855,7 @@ mod tests { )); // we create two new contenders, but we are on the same contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -4860,7 +4864,7 @@ mod tests { ); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -4892,7 +4896,7 @@ mod tests { )); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 10, @@ -4973,7 +4977,7 @@ mod tests { let platform_state = platform.state.load(); let mut platform_state = (**platform_state).clone(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -5005,7 +5009,7 @@ mod tests { )); // we create two new contenders, but we are on the same contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -5014,7 +5018,7 @@ mod tests { ); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -5046,7 +5050,7 @@ mod tests { )); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 10, @@ -5144,7 +5148,7 @@ mod tests { let platform_state = platform.state.load(); let mut platform_state = (**platform_state).clone(); - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -5176,7 +5180,7 @@ mod tests { )); // we create two new contenders, but we are on the same contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 8, @@ -5185,7 +5189,7 @@ mod tests { ); // we create a new contest - create_dpns_name_contest( + create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -5512,7 +5516,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -5530,7 +5534,7 @@ mod tests { assert_eq!(start_balance, dash_to_credits!(0.4)); - let (_contender_3, _contender_4, _) = create_dpns_name_contest( + let (_contender_3, _contender_4, _) = create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -5620,7 +5624,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -5638,7 +5642,7 @@ mod tests { assert_eq!(start_balance, dash_to_credits!(0.4)); - let (_contender_3, _contender_4, _) = create_dpns_name_contest( + let (_contender_3, _contender_4, _) = create_dpns_identity_name_contest( &mut platform, &platform_state, 9, @@ -5722,6 +5726,7 @@ mod tests { mod document_distribution { use super::*; + use crate::execution::validation::state_transition::tests::create_dpns_contract_name_contest; #[test] fn test_document_distribution() { @@ -5732,7 +5737,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -5945,7 +5950,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -6158,7 +6163,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -6371,7 +6376,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -6579,7 +6584,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -6778,7 +6783,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -6987,7 +6992,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -7176,7 +7181,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -7355,6 +7360,219 @@ mod tests { assert_eq!(locking, Some(50)); } } + + #[test] + fn test_document_distribution_to_contract() { + let platform_version = PlatformVersion::latest(); + let mut platform = TestPlatformBuilder::new() + .build_with_mock_rpc() + .set_genesis_state(); + + let platform_state = platform.state.load(); + + let (contender_1, contender_2, dpns_contract) = create_dpns_contract_name_contest( + &mut platform, + &platform_state, + 600, + "cards", + platform_version, + ); + + perform_votes_multi( + &mut platform, + &dpns_contract, + vec![ + (TowardsIdentity(contender_1.id()), 50), + (TowardsIdentity(contender_2.id()), 5), + (ResourceVoteChoice::Abstain, 10), + (ResourceVoteChoice::Lock, 3), + ], + "cards", + 10, + platform_version, + ); + + let platform_state = platform.state.load(); + + let (contenders, abstaining, locking, finished_vote_info) = get_vote_states( + &platform, + &platform_state, + &dpns_contract, + "cards", + None, + true, + None, + ResultType::DocumentsAndVoteTally, + platform_version, + ); + + assert_eq!(finished_vote_info, None); + + assert_eq!(contenders.len(), 2); + + let first_contender = contenders.first().unwrap(); + + let second_contender = contenders.last().unwrap(); + + assert_ne!(first_contender.document(), second_contender.document()); + + assert_eq!(first_contender.identity_id(), contender_1.id()); + + assert_eq!(second_contender.identity_id(), contender_2.id()); + + assert_eq!(first_contender.vote_tally(), Some(50)); + + assert_eq!(second_contender.vote_tally(), Some(5)); + + assert_eq!(abstaining, Some(10)); + + assert_eq!(locking, Some(3)); + + let mut platform_state = (**platform_state).clone(); + + let block_info = BlockInfo { + time_ms: 1_209_900_000, //2 weeks and 300s + height: 10000, + core_height: 42, + epoch: Default::default(), + }; + + platform_state.set_last_committed_block_info(Some( + ExtendedBlockInfoV0 { + basic_info: block_info, + app_hash: platform + .drive + .grove + .root_hash(None, &platform_version.drive.grove_version) + .unwrap() + .unwrap(), + quorum_hash: [0u8; 32], + block_id_hash: [0u8; 32], + proposer_pro_tx_hash: [0u8; 32], + signature: [0u8; 96], + round: 0, + } + .into(), + )); + + platform.state.store(Arc::new(platform_state)); + + let platform_state = platform.state.load(); + + let transaction = platform.drive.grove.start_transaction(); + + platform + .check_for_ended_vote_polls( + &platform_state, + &block_info, + Some(&transaction), + platform_version, + ) + .expect("expected to check for ended vote polls"); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + + // At this point the document should have been awarded to contender 1. + + { + let (contenders, abstaining, locking, finished_vote_info) = get_vote_states( + &platform, + &platform_state, + &dpns_contract, + "cards", + None, + true, + None, + ResultType::DocumentsAndVoteTally, + platform_version, + ); + + assert_eq!( + finished_vote_info, + Some(FinishedVoteInfo { + finished_vote_outcome: + finished_vote_info::FinishedVoteOutcome::TowardsIdentity as i32, + won_by_identity_id: Some(contender_1.id().to_vec()), + finished_at_block_height: 10000, + finished_at_core_block_height: 42, + finished_at_block_time_ms: 1209900000, + finished_at_epoch: 0 + }) + ); + + assert_eq!(contenders.len(), 2); + + let first_contender = contenders.first().unwrap(); + + let second_contender = contenders.last().unwrap(); + + assert_eq!(first_contender.document(), &None); + + assert_eq!(second_contender.document(), &None); + + assert_eq!(first_contender.identity_id(), contender_1.id()); + + assert_eq!(second_contender.identity_id(), contender_2.id()); + + assert_eq!(first_contender.vote_tally(), Some(50)); + + assert_eq!(second_contender.vote_tally(), Some(5)); + + assert_eq!(abstaining, Some(10)); + + assert_eq!(locking, Some(3)); + } + + { + let (contenders, abstaining, locking, finished_vote_info) = + get_proved_vote_states( + &platform, + &platform_state, + &dpns_contract, + "cards", + None, + true, + None, + ResultType::DocumentsAndVoteTally, + platform_version, + ); + + assert_eq!( + finished_vote_info, + Some(( + ContestedDocumentVotePollWinnerInfo::WonByIdentity(contender_1.id()), + block_info + )) + ); + + assert_eq!(contenders.len(), 2); + + let first_contender = contenders.first().unwrap(); + + let second_contender = contenders.last().unwrap(); + + assert_eq!(first_contender.document(), &None); + + assert_eq!(second_contender.document(), &None); + + assert_eq!(first_contender.identity_id(), contender_1.id()); + + assert_eq!(second_contender.identity_id(), contender_2.id()); + + assert_eq!(first_contender.vote_tally(), Some(50)); + + assert_eq!(second_contender.vote_tally(), Some(5)); + + assert_eq!(abstaining, Some(10)); + + assert_eq!(locking, Some(3)); + } + } } mod changing_vote { use super::*; @@ -7368,7 +7586,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, _contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, _contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -7419,7 +7637,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -7500,7 +7718,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, @@ -7611,7 +7829,7 @@ mod tests { let platform_state = platform.state.load(); - let (contender_1, contender_2, dpns_contract) = create_dpns_name_contest( + let (contender_1, contender_2, dpns_contract) = create_dpns_identity_name_contest( &mut platform, &platform_state, 7, diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs index a37f1fe65e8..d1145c3f56a 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs @@ -110,6 +110,7 @@ pub(crate) mod tests { use drive::drive::votes::resolved::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePollWithContractInfoAllowBorrowed; use drive::query::vote_poll_vote_state_query::ContestedDocumentVotePollDriveQueryResultType::DocumentsAndVoteTally; use drive::query::vote_poll_vote_state_query::{ContestedDocumentVotePollDriveQueryResultType, ResolvedContestedDocumentVotePollDriveQuery}; + use drive::util::test_helpers::setup_contract; use crate::execution::types::block_execution_context::BlockExecutionContext; use crate::execution::types::block_execution_context::v0::BlockExecutionContextV0; use crate::expect_match; @@ -540,7 +541,7 @@ pub(crate) mod tests { ) } - pub(crate) fn create_dpns_name_contest( + pub(crate) fn create_dpns_identity_name_contest( platform: &mut TempPlatform, platform_state: &PlatformState, seed: u64, @@ -573,6 +574,55 @@ pub(crate) mod tests { (identity_1_info.0, identity_2_info.0, dpns_contract) } + pub(crate) fn create_dpns_contract_name_contest( + platform: &mut TempPlatform, + platform_state: &PlatformState, + seed: u64, + name: &str, + platform_version: &PlatformVersion, + ) -> (Identity, Identity, DataContract) { + let mut rng = StdRng::seed_from_u64(seed); + + let identity_1_info = setup_identity(platform, rng.gen(), dash_to_credits!(0.5)); + + let identity_2_info = setup_identity(platform, rng.gen(), dash_to_credits!(0.5)); + + // Flip them if needed so identity 1 id is always smaller than identity 2 id + let (identity_1_info, identity_2_info) = if identity_1_info.0.id() < identity_2_info.0.id() + { + (identity_1_info, identity_2_info) + } else { + (identity_2_info, identity_1_info) + }; + + let dashpay_contract = setup_contract( + &platform.drive, + "tests/supporting_files/contract/dashpay/dashpay-contract-all-mutable.json", + None, + None, + ); + + let card_game = setup_contract( + &platform.drive, + "tests/supporting_files/contract/crypto-card-game/crypto-card-game-direct-purchase.json", + None, + None, + ); + + let (_, _, dpns_contract) = create_dpns_name_contest_on_identities_for_contract_records( + platform, + &identity_1_info, + &identity_2_info, + &dashpay_contract, + &card_game, + platform_state, + rng, + name, + platform_version, + ); + (identity_1_info.0, identity_2_info.0, dpns_contract) + } + fn create_dpns_name_contest_on_identities( platform: &mut TempPlatform, identity_1: &(Identity, SimpleSigner, IdentityPublicKey), @@ -663,7 +713,286 @@ pub(crate) mod tests { "normalizedLabel", convert_to_homograph_safe_chars(name).into(), ); - document_1.set("records.dashUniqueIdentityId", document_1.owner_id().into()); + document_1.set("records.identity", document_1.owner_id().into()); + document_1.set("subdomainRules.allowSubdomains", false.into()); + + document_2.set("parentDomainName", "dash".into()); + document_2.set("normalizedParentDomainName", "dash".into()); + document_2.set("label", name.into()); + document_2.set( + "normalizedLabel", + convert_to_homograph_safe_chars(name).into(), + ); + document_2.set("records.identity", document_2.owner_id().into()); + document_2.set("subdomainRules.allowSubdomains", false.into()); + + let salt_1: [u8; 32] = rng.gen(); + let salt_2: [u8; 32] = rng.gen(); + + let mut salted_domain_buffer_1: Vec = vec![]; + salted_domain_buffer_1.extend(salt_1); + salted_domain_buffer_1.extend((convert_to_homograph_safe_chars(name) + ".dash").as_bytes()); + + let salted_domain_hash_1 = hash_double(salted_domain_buffer_1); + + let mut salted_domain_buffer_2: Vec = vec![]; + salted_domain_buffer_2.extend(salt_2); + salted_domain_buffer_2.extend((convert_to_homograph_safe_chars(name) + ".dash").as_bytes()); + + let salted_domain_hash_2 = hash_double(salted_domain_buffer_2); + + preorder_document_1.set("saltedDomainHash", salted_domain_hash_1.into()); + preorder_document_2.set("saltedDomainHash", salted_domain_hash_2.into()); + + document_1.set("preorderSalt", salt_1.into()); + document_2.set("preorderSalt", salt_2.into()); + + let documents_batch_create_preorder_transition_1 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + preorder_document_1.clone(), + preorder, + entropy.0, + key_1, + 2, + 0, + signer_1, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_preorder_transition_1 = + documents_batch_create_preorder_transition_1 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_preorder_transition_2 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + preorder_document_2.clone(), + preorder, + entropy.0, + key_2, + 2, + 0, + signer_2, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_preorder_transition_2 = + documents_batch_create_preorder_transition_2 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_transition_1 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + document_1.clone(), + domain, + entropy.0, + key_1, + 3, + 0, + signer_1, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_transition_1 = documents_batch_create_transition_1 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let documents_batch_create_transition_2 = + DocumentsBatchTransition::new_document_creation_transition_from_document( + document_2.clone(), + domain, + entropy.0, + key_2, + 3, + 0, + signer_2, + platform_version, + None, + None, + None, + ) + .expect("expect to create documents batch transition"); + + let documents_batch_create_serialized_transition_2 = documents_batch_create_transition_2 + .serialize_to_bytes() + .expect("expected documents batch serialized state transition"); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![ + documents_batch_create_serialized_preorder_transition_1.clone(), + documents_batch_create_serialized_preorder_transition_2.clone(), + ], + platform_state, + &BlockInfo::default_with_time( + platform_state + .last_committed_block_time_ms() + .unwrap_or_default() + + 3000, + ), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + + assert_eq!(processing_result.valid_count(), 2); + + let transaction = platform.drive.grove.start_transaction(); + + let processing_result = platform + .platform + .process_raw_state_transitions( + &vec![ + documents_batch_create_serialized_transition_1.clone(), + documents_batch_create_serialized_transition_2.clone(), + ], + platform_state, + &BlockInfo::default_with_time( + platform_state + .last_committed_block_time_ms() + .unwrap_or_default() + + 3000, + ), + &transaction, + platform_version, + ) + .expect("expected to process state transition"); + + platform + .drive + .grove + .commit_transaction(transaction) + .unwrap() + .expect("expected to commit transaction"); + + assert_eq!(processing_result.valid_count(), 2); + ( + ((preorder_document_1, entropy), (document_1, entropy)), + ((preorder_document_2, entropy), (document_2, entropy)), + dpns_contract, + ) + } + + fn create_dpns_name_contest_on_identities_for_contract_records( + platform: &mut TempPlatform, + identity_1: &(Identity, SimpleSigner, IdentityPublicKey), + identity_2: &(Identity, SimpleSigner, IdentityPublicKey), + contract_1: &DataContract, + contract_2: &DataContract, + platform_state: &PlatformState, + mut rng: StdRng, + name: &str, + platform_version: &PlatformVersion, + ) -> ( + ((Document, Bytes32), (Document, Bytes32)), + ((Document, Bytes32), (Document, Bytes32)), + DataContract, + ) { + let (identity_1, signer_1, key_1) = identity_1; + + let (identity_2, signer_2, key_2) = identity_2; + + let dpns_contract = setup_contract( + &platform.drive, + "tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id.json", + None, + None, + ); + + let preorder = dpns_contract + .document_type_for_name("preorder") + .expect("expected a profile document type"); + + assert!(!preorder.documents_mutable()); + assert!(preorder.documents_can_be_deleted()); + assert!(!preorder.documents_transferable().is_transferable()); + + let domain = dpns_contract + .document_type_for_name("domain") + .expect("expected a profile document type"); + + assert!(!domain.documents_mutable()); + // Deletion is disabled with data trigger + assert!(domain.documents_can_be_deleted()); + assert!(domain.documents_transferable().is_transferable()); + + let entropy = Bytes32::random_with_rng(&mut rng); + + let mut preorder_document_1 = preorder + .random_document_with_identifier_and_entropy( + &mut rng, + identity_1.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut preorder_document_2 = preorder + .random_document_with_identifier_and_entropy( + &mut rng, + identity_2.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut document_1 = domain + .random_document_with_identifier_and_entropy( + &mut rng, + identity_1.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + let mut document_2 = domain + .random_document_with_identifier_and_entropy( + &mut rng, + identity_2.id(), + entropy, + DocumentFieldFillType::FillIfNotRequired, + DocumentFieldFillSize::AnyDocumentFillSize, + platform_version, + ) + .expect("expected a random document"); + + document_1.set("parentDomainName", "dash".into()); + document_1.set("normalizedParentDomainName", "dash".into()); + document_1.set("label", name.into()); + document_1.set( + "normalizedLabel", + convert_to_homograph_safe_chars(name).into(), + ); + document_1.remove("records.identity"); + document_1.set("records.contract", contract_1.id().into()); document_1.set("subdomainRules.allowSubdomains", false.into()); document_2.set("parentDomainName", "dash".into()); @@ -673,7 +1002,8 @@ pub(crate) mod tests { "normalizedLabel", convert_to_homograph_safe_chars(name).into(), ); - document_2.set("records.dashUniqueIdentityId", document_2.owner_id().into()); + document_2.remove("records.identity"); + document_2.set("records.contract", contract_2.id().into()); document_2.set("subdomainRules.allowSubdomains", false.into()); let salt_1: [u8; 32] = rng.gen(); @@ -900,7 +1230,7 @@ pub(crate) mod tests { "normalizedLabel", convert_to_homograph_safe_chars(name).into(), ); - document_1.set("records.dashUniqueIdentityId", document_1.owner_id().into()); + document_1.set("records.identity", document_1.owner_id().into()); document_1.set("subdomainRules.allowSubdomains", false.into()); let salt_1: [u8; 32] = rng.gen(); @@ -1506,7 +1836,7 @@ pub(crate) mod tests { let dash_encoded = bincode::encode_to_vec(Value::Text("dash".to_string()), config) .expect("expected to encode the word dash"); - let quantum_encoded = + let name_encoded = bincode::encode_to_vec(Value::Text(convert_to_homograph_safe_chars(name)), config) .expect("expected to encode the word quantum"); @@ -1520,7 +1850,7 @@ pub(crate) mod tests { contract_id: dpns_contract.id().to_vec(), document_type_name: domain.name().clone(), index_name: index_name.clone(), - index_values: vec![dash_encoded.clone(), quantum_encoded.clone()], + index_values: vec![dash_encoded.clone(), name_encoded.clone()], result_type: result_type as i32, allow_include_locked_and_abstaining_vote_tally, start_at_identifier_info, @@ -1556,7 +1886,7 @@ pub(crate) mod tests { index_name: index_name.clone(), index_values: vec![ Value::Text("dash".to_string()), - Value::Text("quantum".to_string()), + Value::Text(convert_to_homograph_safe_chars(name)), ], }, result_type: ContestedDocumentVotePollDriveQueryResultType::try_from( diff --git a/packages/rs-drive-abci/tests/strategy_tests/failures.rs b/packages/rs-drive-abci/tests/strategy_tests/failures.rs index abb651ddd8f..9c2cb59c924 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/failures.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/failures.rs @@ -285,7 +285,7 @@ mod tests { // ( // "records".into(), // BTreeMap::from([( - // "dashUniqueIdentityId", + // "identity", // Value::from(start_identities.first().unwrap().0.id()), // )]) // .into(), @@ -308,7 +308,7 @@ mod tests { // ( // "records".into(), // BTreeMap::from([( - // "dashUniqueIdentityId", + // "identity", // Value::from(start_identities.last().unwrap().0.id()), // )]) // .into(), diff --git a/packages/rs-drive-abci/tests/strategy_tests/main.rs b/packages/rs-drive-abci/tests/strategy_tests/main.rs index 1c1ee9867c3..8ce28932b4b 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/main.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/main.rs @@ -1194,7 +1194,7 @@ mod tests { .unwrap() .unwrap() ), - "57818d17af37f038e4a1cf89608e872ab7fef928822e7820c660eb26141fb733".to_string() + "5d71ec297867cf1e9b6655451385b0c72b56d582abc1576885a78e5754ac5f14".to_string() ) } @@ -1915,7 +1915,7 @@ mod tests { .unwrap() .unwrap() ), - "462125a9dbf2165b27fc301c1336dad343de526a4b1904604c8a7d78ad1bcede".to_string() + "36116eb13b2dfada15853aa54f9c81ebb2590aa99d512c12604c4bd5d622c49a".to_string() ) } @@ -2050,7 +2050,7 @@ mod tests { .unwrap() .unwrap() ), - "e3c946107bfe02895a832339616153131bb09550a6378b680d18aca088ac266a".to_string() + "ee6682a2acd816d3277c55b5886199029ed33c13dc902ea8efab3ba7f20271e2".to_string() ) } diff --git a/packages/rs-drive-abci/tests/strategy_tests/voting_tests.rs b/packages/rs-drive-abci/tests/strategy_tests/voting_tests.rs index fe94b47fce9..0244fe3f132 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/voting_tests.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/voting_tests.rs @@ -116,8 +116,7 @@ mod tests { ("normalizedParentDomainName".into(), "dash".into()), ( "records".into(), - BTreeMap::from([("dashUniqueIdentityId", Value::from(identity1_id))]) - .into(), + BTreeMap::from([("identity", Value::from(identity1_id))]).into(), ), ]), Some(start_identities.first().unwrap().0.id()), @@ -137,7 +136,7 @@ mod tests { ( "records".into(), BTreeMap::from([( - "dashUniqueIdentityId", + "identity", Value::from(start_identities.last().unwrap().0.id()), )]) .into(), @@ -292,35 +291,13 @@ mod tests { let second_contender = contenders.last().unwrap(); assert_eq!( - first_contender.document, - Some(vec![ - 0, 23, 127, 36, 121, 9, 10, 2, 134, 166, 125, 106, 31, 103, 181, 99, 181, 21, 24, - 237, 214, 238, 160, 70, 24, 41, 247, 214, 48, 253, 101, 112, 141, 41, 18, 75, 231, - 232, 111, 151, 233, 89, 137, 74, 103, 169, 204, 7, 140, 62, 1, 6, 212, 191, 207, - 191, 52, 188, 64, 58, 79, 9, 153, 37, 180, 1, 0, 7, 0, 0, 1, 135, 105, 8, 149, 152, - 0, 0, 1, 135, 105, 8, 149, 152, 0, 0, 1, 135, 105, 8, 149, 152, 0, 7, 113, 117, 97, - 110, 116, 117, 109, 7, 113, 117, 97, 110, 116, 117, 109, 0, 4, 100, 97, 115, 104, - 97, 228, 155, 126, 30, 18, 134, 198, 154, 239, 219, 139, 51, 36, 53, 36, 212, 198, - 180, 139, 46, 87, 130, 184, 52, 174, 119, 176, 192, 51, 239, 245, 34, 1, 41, 18, - 75, 231, 232, 111, 151, 233, 89, 137, 74, 103, 169, 204, 7, 140, 62, 1, 6, 212, - 191, 207, 191, 52, 188, 64, 58, 79, 9, 153, 37, 180, 0, 1, 1 - ]) + first_contender.document.as_ref().map(hex::encode), + Some("00177f2479090a0286a67d6a1f67b563b51518edd6eea0461829f7d630fd65708d29124be7e86f97e959894a67a9cc078c3e0106d4bfcfbf34bc403a4f099925b401000700000187690895980000018769089598000001876908959800077175616e74756d077175616e74756d00046461736861e49b7e1e1286c69aefdb8b33243524d4c6b48b2e5782b834ae77b0c033eff5210129124be7e86f97e959894a67a9cc078c3e0106d4bfcfbf34bc403a4f099925b40101".to_string()) ); assert_eq!( - second_contender.document, - Some(vec![ - 0, 73, 14, 33, 37, 147, 161, 211, 204, 106, 225, 123, 241, 7, 171, 156, 180, 101, - 23, 94, 120, 119, 252, 247, 208, 133, 237, 47, 206, 39, 190, 17, 214, 139, 137, 72, - 166, 128, 21, 1, 187, 224, 67, 30, 61, 153, 77, 207, 113, 207, 90, 42, 9, 57, 254, - 81, 176, 230, 0, 7, 97, 153, 171, 164, 251, 1, 0, 7, 0, 0, 1, 135, 105, 8, 149, - 152, 0, 0, 1, 135, 105, 8, 149, 152, 0, 0, 1, 135, 105, 8, 149, 152, 0, 7, 113, - 117, 97, 110, 116, 117, 109, 7, 113, 117, 97, 110, 116, 117, 109, 0, 4, 100, 97, - 115, 104, 148, 190, 52, 134, 51, 240, 205, 206, 235, 85, 72, 228, 129, 105, 99, - 173, 158, 47, 240, 100, 50, 213, 109, 127, 82, 26, 217, 2, 184, 229, 172, 129, 34, - 1, 139, 137, 72, 166, 128, 21, 1, 187, 224, 67, 30, 61, 153, 77, 207, 113, 207, 90, - 42, 9, 57, 254, 81, 176, 230, 0, 7, 97, 153, 171, 164, 251, 0, 1, 0 - ]) + second_contender.document.as_ref().map(hex::encode), + Some("00490e212593a1d3cc6ae17bf107ab9cb465175e7877fcf7d085ed2fce27be11d68b8948a6801501bbe0431e3d994dcf71cf5a2a0939fe51b0e600076199aba4fb01000700000187690895980000018769089598000001876908959800077175616e74756d077175616e74756d00046461736894be348633f0cdceeb5548e4816963ad9e2ff06432d56d7f521ad902b8e5ac8121018b8948a6801501bbe0431e3d994dcf71cf5a2a0939fe51b0e600076199aba4fb0100".to_string()) ); assert_eq!(first_contender.identifier, identity2_id.to_vec()); @@ -415,8 +392,7 @@ mod tests { ("normalizedParentDomainName".into(), "dash".into()), ( "records".into(), - BTreeMap::from([("dashUniqueIdentityId", Value::from(identity1_id))]) - .into(), + BTreeMap::from([("identity", Value::from(identity1_id))]).into(), ), ]), Some(start_identities.first().unwrap().0.id()), @@ -436,7 +412,7 @@ mod tests { ( "records".into(), BTreeMap::from([( - "dashUniqueIdentityId", + "identity", Value::from(start_identities.last().unwrap().0.id()), )]) .into(), @@ -772,8 +748,7 @@ mod tests { ("normalizedParentDomainName".into(), "dash".into()), ( "records".into(), - BTreeMap::from([("dashUniqueIdentityId", Value::from(identity1_id))]) - .into(), + BTreeMap::from([("identity", Value::from(identity1_id))]).into(), ), ]), Some(start_identities.first().unwrap().0.id()), @@ -793,7 +768,7 @@ mod tests { ( "records".into(), BTreeMap::from([( - "dashUniqueIdentityId", + "identity", Value::from(start_identities.last().unwrap().0.id()), )]) .into(), @@ -1141,8 +1116,7 @@ mod tests { ("normalizedParentDomainName".into(), "dash".into()), ( "records".into(), - BTreeMap::from([("dashUniqueIdentityId", Value::from(identity1_id))]) - .into(), + BTreeMap::from([("identity", Value::from(identity1_id))]).into(), ), ]), Some(start_identities.first().unwrap().0.id()), @@ -1162,7 +1136,7 @@ mod tests { ( "records".into(), BTreeMap::from([( - "dashUniqueIdentityId", + "identity", Value::from(start_identities.last().unwrap().0.id()), )]) .into(), diff --git a/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-and-other-unique-index.json b/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-and-other-unique-index.json new file mode 100644 index 00000000000..07ceec6a4fb --- /dev/null +++ b/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-and-other-unique-index.json @@ -0,0 +1,188 @@ +{ + "$format_version": "0", + "id": "DWBXe9EXFPHxvbArQgT45uQR5gMmi8dfMpLhR5KSbwnZ", + "ownerId": "2QjL594djCH2NyDsn45vd6yQjEDHupMKo7CEGVTHtQxU", + "version": 1, + "documentSchemas": { + "domain": { + "documentsMutable": false, + "canBeDeleted": true, + "transferable": 1, + "tradeMode": 1, + "type": "object", + "indices": [ + { + "name": "parentNameAndLabel", + "properties": [ + { + "normalizedParentDomainName": "asc" + }, + { + "normalizedLabel": "asc" + } + ], + "unique": true, + "contested": { + "fieldMatches": [ + { + "field": "normalizedLabel", + "regexPattern": "^[a-zA-Z01]{3,19}$" + } + ], + "resolution": 0, + "description": "If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place." + } + }, + { + "name": "dashIdentityId", + "properties": [ + { + "records.dashUniqueIdentityId": "asc" + } + ], + "unique": true + }, + { + "name": "dashAlias", + "properties": [ + { + "records.dashAliasIdentityId": "asc" + } + ] + } + ], + "properties": { + "label": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 3, + "maxLength": 63, + "position": 0, + "description": "Domain label. e.g. 'Bob'." + }, + "normalizedLabel": { + "type": "string", + "pattern": "^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$", + "maxLength": 63, + "position": 1, + "description": "Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'", + "$comment": "Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"." + }, + "parentDomainName": { + "type": "string", + "pattern": "^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 2, + "description": "A full parent domain name. e.g. 'dash'." + }, + "normalizedParentDomainName": { + "type": "string", + "pattern": "^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 3, + "description": "A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'", + "$comment": "Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains." + }, + "preorderSalt": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 4, + "description": "Salt used in the preorder document" + }, + "records": { + "type": "object", + "properties": { + "dashUniqueIdentityId": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 0, + "contentMediaType": "application/x.dash.dpp.identifier", + "description": "Identity ID to be used to create the primary name the Identity", + "$comment": "Must be equal to the document owner" + }, + "dashAliasIdentityId": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 1, + "contentMediaType": "application/x.dash.dpp.identifier", + "description": "Identity ID to be used to create alias names for the Identity", + "$comment": "Must be equal to the document owner" + } + }, + "minProperties": 1, + "maxProperties": 1, + "position": 5, + "additionalProperties": false, + "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`" + }, + "subdomainRules": { + "type": "object", + "properties": { + "allowSubdomains": { + "type": "boolean", + "description": "This option defines who can create subdomains: true - anyone; false - only the domain owner", + "$comment": "Only the domain owner is allowed to create subdomains for non top-level domains", + "position": 0 + } + }, + "position": 6, + "description": "Subdomain rules allow domain owners to define rules for subdomains", + "additionalProperties": false, + "required": ["allowSubdomains"] + } + }, + "required": [ + "$createdAt", + "$updatedAt", + "$transferredAt", + "label", + "normalizedLabel", + "normalizedParentDomainName", + "preorderSalt", + "records", + "subdomainRules" + ], + "additionalProperties": false, + "$comment": "In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted" + }, + "preorder": { + "documentsMutable": false, + "canBeDeleted": true, + "type": "object", + "indices": [ + { + "name": "saltedHash", + "properties": [ + { + "saltedDomainHash": "asc" + } + ], + "unique": true + } + ], + "properties": { + "saltedDomainHash": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 0, + "description": "Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name" + } + }, + "required": [ + "saltedDomainHash" + ], + "additionalProperties": false, + "$comment": "Preorder documents are immutable: modification and deletion are restricted" + } + } +} \ No newline at end of file diff --git a/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id-null-searchable-true.json b/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id-null-searchable-true.json new file mode 100644 index 00000000000..c3135f6aa50 --- /dev/null +++ b/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id-null-searchable-true.json @@ -0,0 +1,185 @@ +{ + "$format_version": "0", + "id": "DWBXe9EXFPHxvbArQgT45uQR5gMmi8dfMpLhR5KSbwnZ", + "ownerId": "2QjL594djCH2NyDsn45vd6yQjEDHupMKo7CEGVTHtQxU", + "version": 1, + "documentSchemas": { + "domain": { + "documentsMutable": false, + "canBeDeleted": true, + "transferable": 1, + "tradeMode": 1, + "type": "object", + "indices": [ + { + "name": "parentNameAndLabel", + "properties": [ + { + "normalizedParentDomainName": "asc" + }, + { + "normalizedLabel": "asc" + } + ], + "unique": true, + "contested": { + "fieldMatches": [ + { + "field": "normalizedLabel", + "regexPattern": "^[a-zA-Z01]{3,19}$" + } + ], + "resolution": 0, + "description": "If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place." + } + }, + { + "name": "identityId", + "properties": [ + { + "records.identity": "asc" + } + ] + }, + { + "name": "contractId", + "properties": [ + { + "records.contract": "asc" + } + ] + } + ], + "properties": { + "label": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 3, + "maxLength": 63, + "position": 0, + "description": "Domain label. e.g. 'Bob'." + }, + "normalizedLabel": { + "type": "string", + "pattern": "^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$", + "maxLength": 63, + "position": 1, + "description": "Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'", + "$comment": "Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"." + }, + "parentDomainName": { + "type": "string", + "pattern": "^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 2, + "description": "A full parent domain name. e.g. 'dash'." + }, + "normalizedParentDomainName": { + "type": "string", + "pattern": "^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 3, + "description": "A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'", + "$comment": "Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains." + }, + "preorderSalt": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 4, + "description": "Salt used in the preorder document" + }, + "records": { + "type": "object", + "properties": { + "identity": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 1, + "contentMediaType": "application/x.dash.dpp.identifier", + "description": "Identifier name record that refers to an Identity" + }, + "contract": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 1, + "contentMediaType": "application/x.dash.dpp.identifier", + "description": "Identifier name record that refers to a Contract" + } + }, + "minProperties": 1, + "position": 5, + "additionalProperties": false + }, + "subdomainRules": { + "type": "object", + "properties": { + "allowSubdomains": { + "type": "boolean", + "description": "This option defines who can create subdomains: true - anyone; false - only the domain owner", + "$comment": "Only the domain owner is allowed to create subdomains for non top-level domains", + "position": 0 + } + }, + "position": 6, + "description": "Subdomain rules allow domain owners to define rules for subdomains", + "additionalProperties": false, + "required": [ + "allowSubdomains" + ] + } + }, + "required": [ + "$createdAt", + "$updatedAt", + "$transferredAt", + "label", + "normalizedLabel", + "normalizedParentDomainName", + "preorderSalt", + "records", + "subdomainRules" + ], + "additionalProperties": false, + "$comment": "In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted" + }, + "preorder": { + "documentsMutable": false, + "canBeDeleted": true, + "type": "object", + "indices": [ + { + "name": "saltedHash", + "properties": [ + { + "saltedDomainHash": "asc" + } + ], + "unique": true + } + ], + "properties": { + "saltedDomainHash": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 0, + "description": "Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name" + } + }, + "required": [ + "saltedDomainHash" + ], + "additionalProperties": false, + "$comment": "Preorder documents are immutable: modification and deletion are restricted" + } + } +} \ No newline at end of file diff --git a/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id.json b/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id.json new file mode 100644 index 00000000000..238c1ad59ee --- /dev/null +++ b/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index-with-contract-id.json @@ -0,0 +1,187 @@ +{ + "$format_version": "0", + "id": "DWBXe9EXFPHxvbArQgT45uQR5gMmi8dfMpLhR5KSbwnZ", + "ownerId": "2QjL594djCH2NyDsn45vd6yQjEDHupMKo7CEGVTHtQxU", + "version": 1, + "documentSchemas": { + "domain": { + "documentsMutable": false, + "canBeDeleted": true, + "transferable": 1, + "tradeMode": 1, + "type": "object", + "indices": [ + { + "name": "parentNameAndLabel", + "properties": [ + { + "normalizedParentDomainName": "asc" + }, + { + "normalizedLabel": "asc" + } + ], + "unique": true, + "contested": { + "fieldMatches": [ + { + "field": "normalizedLabel", + "regexPattern": "^[a-zA-Z01]{3,19}$" + } + ], + "resolution": 0, + "description": "If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place." + } + }, + { + "name": "identityId", + "nullSearchable": false, + "properties": [ + { + "records.identity": "asc" + } + ] + }, + { + "name": "contractId", + "nullSearchable": false, + "properties": [ + { + "records.contract": "asc" + } + ] + } + ], + "properties": { + "label": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 3, + "maxLength": 63, + "position": 0, + "description": "Domain label. e.g. 'Bob'." + }, + "normalizedLabel": { + "type": "string", + "pattern": "^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$", + "maxLength": 63, + "position": 1, + "description": "Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'", + "$comment": "Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"." + }, + "parentDomainName": { + "type": "string", + "pattern": "^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 2, + "description": "A full parent domain name. e.g. 'dash'." + }, + "normalizedParentDomainName": { + "type": "string", + "pattern": "^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 3, + "description": "A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'", + "$comment": "Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains." + }, + "preorderSalt": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 4, + "description": "Salt used in the preorder document" + }, + "records": { + "type": "object", + "properties": { + "identity": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 1, + "contentMediaType": "application/x.dash.dpp.identifier", + "description": "Identifier name record that refers to an Identity" + }, + "contract": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 1, + "contentMediaType": "application/x.dash.dpp.identifier", + "description": "Identifier name record that refers to a Contract" + } + }, + "minProperties": 1, + "position": 5, + "additionalProperties": false + }, + "subdomainRules": { + "type": "object", + "properties": { + "allowSubdomains": { + "type": "boolean", + "description": "This option defines who can create subdomains: true - anyone; false - only the domain owner", + "$comment": "Only the domain owner is allowed to create subdomains for non top-level domains", + "position": 0 + } + }, + "position": 6, + "description": "Subdomain rules allow domain owners to define rules for subdomains", + "additionalProperties": false, + "required": [ + "allowSubdomains" + ] + } + }, + "required": [ + "$createdAt", + "$updatedAt", + "$transferredAt", + "label", + "normalizedLabel", + "normalizedParentDomainName", + "preorderSalt", + "records", + "subdomainRules" + ], + "additionalProperties": false, + "$comment": "In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted" + }, + "preorder": { + "documentsMutable": false, + "canBeDeleted": true, + "type": "object", + "indices": [ + { + "name": "saltedHash", + "properties": [ + { + "saltedDomainHash": "asc" + } + ], + "unique": true + } + ], + "properties": { + "saltedDomainHash": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 0, + "description": "Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name" + } + }, + "required": [ + "saltedDomainHash" + ], + "additionalProperties": false, + "$comment": "Preorder documents are immutable: modification and deletion are restricted" + } + } +} \ No newline at end of file diff --git a/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index.json b/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index.json new file mode 100644 index 00000000000..8e05c7829fc --- /dev/null +++ b/packages/rs-drive-abci/tests/supporting_files/contract/dpns/dpns-contract-contested-unique-index.json @@ -0,0 +1,169 @@ +{ + "$format_version": "0", + "id": "DWBXe9EXFPHxvbArQgT45uQR5gMmi8dfMpLhR5KSbwnZ", + "ownerId": "2QjL594djCH2NyDsn45vd6yQjEDHupMKo7CEGVTHtQxU", + "version": 1, + "documentSchemas": { + "domain": { + "documentsMutable": false, + "canBeDeleted": true, + "transferable": 1, + "tradeMode": 1, + "type": "object", + "indices": [ + { + "name": "parentNameAndLabel", + "properties": [ + { + "normalizedParentDomainName": "asc" + }, + { + "normalizedLabel": "asc" + } + ], + "unique": true, + "contested": { + "fieldMatches": [ + { + "field": "normalizedLabel", + "regexPattern": "^[a-zA-Z01]{3,19}$" + } + ], + "resolution": 0, + "description": "If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place." + } + }, + { + "name": "identityId", + "nullSearchable": false, + "properties": [ + { + "records.identity": "asc" + } + ] + } + ], + "properties": { + "label": { + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 3, + "maxLength": 63, + "position": 0, + "description": "Domain label. e.g. 'Bob'." + }, + "normalizedLabel": { + "type": "string", + "pattern": "^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$", + "maxLength": 63, + "position": 1, + "description": "Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'", + "$comment": "Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"." + }, + "parentDomainName": { + "type": "string", + "pattern": "^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 2, + "description": "A full parent domain name. e.g. 'dash'." + }, + "normalizedParentDomainName": { + "type": "string", + "pattern": "^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$", + "minLength": 0, + "maxLength": 63, + "position": 3, + "description": "A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'", + "$comment": "Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains." + }, + "preorderSalt": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 4, + "description": "Salt used in the preorder document" + }, + "records": { + "type": "object", + "properties": { + "identity": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 1, + "contentMediaType": "application/x.dash.dpp.identifier", + "description": "Identifier name record that refers to an Identity" + } + }, + "minProperties": 1, + "position": 5, + "additionalProperties": false + }, + "subdomainRules": { + "type": "object", + "properties": { + "allowSubdomains": { + "type": "boolean", + "description": "This option defines who can create subdomains: true - anyone; false - only the domain owner", + "$comment": "Only the domain owner is allowed to create subdomains for non top-level domains", + "position": 0 + } + }, + "position": 6, + "description": "Subdomain rules allow domain owners to define rules for subdomains", + "additionalProperties": false, + "required": [ + "allowSubdomains" + ] + } + }, + "required": [ + "$createdAt", + "$updatedAt", + "$transferredAt", + "label", + "normalizedLabel", + "normalizedParentDomainName", + "preorderSalt", + "records", + "subdomainRules" + ], + "additionalProperties": false, + "$comment": "In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted" + }, + "preorder": { + "documentsMutable": false, + "canBeDeleted": true, + "type": "object", + "indices": [ + { + "name": "saltedHash", + "properties": [ + { + "saltedDomainHash": "asc" + } + ], + "unique": true + } + ], + "properties": { + "saltedDomainHash": { + "type": "array", + "byteArray": true, + "minItems": 32, + "maxItems": 32, + "position": 0, + "description": "Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name" + } + }, + "required": [ + "saltedDomainHash" + ], + "additionalProperties": false, + "$comment": "Preorder documents are immutable: modification and deletion are restricted" + } + } +} \ No newline at end of file diff --git a/packages/rs-drive/src/config.rs b/packages/rs-drive/src/config.rs index 620b9514b8e..b65fc7ec8ef 100644 --- a/packages/rs-drive/src/config.rs +++ b/packages/rs-drive/src/config.rs @@ -162,7 +162,8 @@ fn default_data_contracts_cache_size() -> u64 { DEFAULT_DATA_CONTRACTS_CACHE_SIZE } -fn default_grovedb_visualizer_address() -> std::net::SocketAddr { +/// The default grovedb visualizer_address +pub fn default_grovedb_visualizer_address() -> std::net::SocketAddr { "127.0.0.1:8083".parse().unwrap() } diff --git a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs index febae1d0255..ba04d65bc61 100644 --- a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs @@ -11,6 +11,7 @@ use dpp::data_contract::DataContract; use dpp::serialization::PlatformSerializableWithPlatformVersion; +use crate::drive::votes::paths::vote_contested_resource_active_polls_contract_document_tree_path; use crate::util::type_constants::{DEFAULT_FLOAT_SIZE, DEFAULT_FLOAT_SIZE_U8}; use dpp::version::PlatformVersion; use grovedb::batch::KeyInfoPath; @@ -41,6 +42,37 @@ impl Drive { None }; + let document_types_with_contested_unique_indexes = + contract.document_types_with_contested_indexes(); + + if !document_types_with_contested_unique_indexes.is_empty() { + Self::add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded( + contract, + estimated_costs_only_with_layer_info, + &platform_version.drive, + )?; + + for document_type_name in document_types_with_contested_unique_indexes.keys() { + estimated_costs_only_with_layer_info.insert( + KeyInfoPath::from_known_path( + vote_contested_resource_active_polls_contract_document_tree_path( + contract.id_ref().as_bytes(), + document_type_name.as_str(), + ), + ), + EstimatedLayerInformation { + is_sum_tree: false, + estimated_layer_count: ApproximateElements(2), + estimated_layer_sizes: AllSubtrees( + ESTIMATED_AVERAGE_INDEX_NAME_SIZE, + NoSumTrees, + None, + ), + }, + ); + } + } + for document_type_name in contract.document_types().keys() { estimated_costs_only_with_layer_info.insert( KeyInfoPath::from_known_path(contract_document_type_path( @@ -60,8 +92,8 @@ impl Drive { } if contract.config().keeps_history() { - // we are dealing with a sibling reference - // sibling reference serialized size is going to be the encoded time size + // We are dealing with a sibling reference. + // The sibling reference serialized size is going to be the encoded time size // (DEFAULT_FLOAT_SIZE) plus 1 byte for reference type and 1 byte for the space of // the encoded time let reference_size = DEFAULT_FLOAT_SIZE + 2; diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/mod.rs index ef843873c91..a10973b5714 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/mod.rs @@ -39,6 +39,7 @@ impl Drive { index_path_info: PathInfo<0>, index_level: &IndexLevel, any_fields_null: bool, + all_fields_null: bool, storage_flags: &Option<&StorageFlags>, previous_batch_operations: &Option<&mut Vec>, estimated_costs_only_with_layer_info: &mut Option< @@ -61,6 +62,7 @@ impl Drive { index_path_info, index_level, any_fields_null, + all_fields_null, storage_flags, previous_batch_operations, estimated_costs_only_with_layer_info, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs index 7d3799088fd..6ad033a0f41 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs @@ -33,6 +33,7 @@ impl Drive { index_path_info: PathInfo<0>, index_level: &IndexLevel, mut any_fields_null: bool, + mut all_fields_null: bool, storage_flags: &Option<&StorageFlags>, previous_batch_operations: &Option<&mut Vec>, estimated_costs_only_with_layer_info: &mut Option< @@ -67,6 +68,7 @@ impl Drive { index_path_info.clone(), index_type, any_fields_null, + all_fields_null, storage_flags, previous_batch_operations, estimated_costs_only_with_layer_info, @@ -129,6 +131,7 @@ impl Drive { // Iteration 2. the index path is now something likeDataContracts/ContractID/Documents(1)/$ownerId//toUserId//accountReference any_fields_null |= document_index_field.is_empty(); + all_fields_null &= document_index_field.is_empty(); // we push the actual value of the index path sub_level_index_path_info.push(document_index_field)?; @@ -139,6 +142,7 @@ impl Drive { sub_level_index_path_info, sub_level, any_fields_null, + all_fields_null, storage_flags, previous_batch_operations, estimated_costs_only_with_layer_info, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs index 3b714588e27..332e9214519 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs @@ -131,6 +131,7 @@ impl Drive { } let any_fields_null = document_top_field.is_empty(); + let all_fields_null = document_top_field.is_empty(); let mut index_path_info = if document_and_contract_info .owned_document_info @@ -152,6 +153,7 @@ impl Drive { index_path_info, sub_level, any_fields_null, + all_fields_null, &storage_flags, previous_batch_operations, estimated_costs_only_with_layer_info, diff --git a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/mod.rs index 0dfc00efc54..bf35d3504cf 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/mod.rs @@ -11,7 +11,7 @@ use dpp::version::PlatformVersion; use grovedb::batch::KeyInfoPath; -use dpp::data_contract::document_type::IndexType; +use dpp::data_contract::document_type::IndexLevelTypeInfo; use grovedb::{EstimatedLayerInformation, TransactionArg}; use std::collections::HashMap; @@ -38,8 +38,9 @@ impl Drive { &self, document_and_contract_info: &DocumentAndContractInfo, index_path_info: PathInfo<0>, - index_type: IndexType, + index_type: IndexLevelTypeInfo, any_fields_null: bool, + all_fields_null: bool, storage_flags: &Option<&StorageFlags>, previous_batch_operations: &Option<&mut Vec>, estimated_costs_only_with_layer_info: &mut Option< @@ -62,6 +63,7 @@ impl Drive { index_path_info, index_type, any_fields_null, + all_fields_null, storage_flags, previous_batch_operations, estimated_costs_only_with_layer_info, diff --git a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs index 2ebd38f356c..0ee9619ac03 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs @@ -5,7 +5,7 @@ use grovedb::EstimatedLayerCount::PotentiallyAtMaxElements; use grovedb::EstimatedLayerSizes::{AllReference, AllSubtrees}; use grovedb::{EstimatedLayerInformation, TransactionArg}; -use dpp::data_contract::document_type::IndexType; +use dpp::data_contract::document_type::IndexLevelTypeInfo; use dpp::data_contract::document_type::IndexType::{ContestedResourceIndex, NonUniqueIndex}; use grovedb::EstimatedSumTrees::NoSumTrees; use std::collections::HashMap; @@ -30,8 +30,9 @@ impl Drive { &self, document_and_contract_info: &DocumentAndContractInfo, index_path_info: PathInfo<0>, - index_type: IndexType, + index_type: IndexLevelTypeInfo, any_fields_null: bool, + all_fields_null: bool, storage_flags: &Option<&StorageFlags>, previous_batch_operations: &Option<&mut Vec>, estimated_costs_only_with_layer_info: &mut Option< @@ -42,13 +43,19 @@ impl Drive { batch_operations: &mut Vec, platform_version: &PlatformVersion, ) -> Result<(), Error> { + if all_fields_null && !index_type.should_insert_with_all_null { + return Ok(()); + } let mut key_info_path = index_path_info.convert_to_key_info_path(); let document_type = document_and_contract_info.document_type; // unique indexes will be stored under key "0" // non unique indices should have a tree at key "0" that has all elements based off of primary key - if index_type == NonUniqueIndex || index_type == ContestedResourceIndex || any_fields_null { + if index_type.index_type == NonUniqueIndex + || index_type.index_type == ContestedResourceIndex + || any_fields_null + { key_info_path.push(KnownKey(vec![0])); if let Some(estimated_costs_only_with_layer_info) = estimated_costs_only_with_layer_info diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/mod.rs index 19463c7ce7e..b7b2ac40608 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/mod.rs @@ -24,6 +24,7 @@ impl Drive { index_path_info: PathInfo<0>, index_level: &IndexLevel, any_fields_null: bool, + all_fields_null: bool, previous_batch_operations: &mut Option<&mut Vec>, storage_flags: &Option<&StorageFlags>, estimated_costs_only_with_layer_info: &mut Option< @@ -46,6 +47,7 @@ impl Drive { index_path_info, index_level, any_fields_null, + all_fields_null, previous_batch_operations, storage_flags, estimated_costs_only_with_layer_info, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs index a3347d7302c..2725cc80b1c 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs @@ -26,6 +26,7 @@ impl Drive { index_path_info: PathInfo<0>, index_level: &IndexLevel, mut any_fields_null: bool, + mut all_fields_null: bool, previous_batch_operations: &mut Option<&mut Vec>, storage_flags: &Option<&StorageFlags>, estimated_costs_only_with_layer_info: &mut Option< @@ -42,6 +43,7 @@ impl Drive { index_path_info.clone(), index_type, any_fields_null, + all_fields_null, previous_batch_operations, storage_flags, estimated_costs_only_with_layer_info, @@ -165,16 +167,18 @@ impl Drive { )?; any_fields_null |= document_index_field.is_empty(); + all_fields_null &= document_index_field.is_empty(); // we push the actual value of the index path sub_level_index_path_info.push(document_index_field)?; // Iteration 1. the index path is now something likeDataContracts/ContractID/Documents(1)/$ownerId//toUserId// // Iteration 2. the index path is now something likeDataContracts/ContractID/Documents(1)/$ownerId//toUserId//accountReference/ - self.add_indices_for_index_level_for_contract_operations( + self.add_indices_for_index_level_for_contract_operations_v0( document_and_contract_info, sub_level_index_path_info, sub_level, any_fields_null, + all_fields_null, previous_batch_operations, storage_flags, estimated_costs_only_with_layer_info, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs index f178fad0317..c21146a1832 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs @@ -158,6 +158,7 @@ impl Drive { } let any_fields_null = document_top_field.is_empty(); + let all_fields_null = document_top_field.is_empty(); let mut index_path_info = if document_and_contract_info .owned_document_info @@ -179,6 +180,7 @@ impl Drive { index_path_info, sub_level, any_fields_null, + all_fields_null, previous_batch_operations, &storage_flags, estimated_costs_only_with_layer_info, diff --git a/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/mod.rs b/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/mod.rs index 12192298cf9..bb95aa19332 100644 --- a/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/mod.rs @@ -11,7 +11,7 @@ use dpp::version::drive_versions::DriveVersion; use grovedb::batch::KeyInfoPath; -use dpp::data_contract::document_type::IndexType; +use dpp::data_contract::document_type::IndexLevelTypeInfo; use grovedb::{EstimatedLayerInformation, TransactionArg}; use std::collections::HashMap; @@ -21,8 +21,9 @@ impl Drive { &self, document_and_contract_info: &DocumentAndContractInfo, index_path_info: PathInfo<0>, - index_type: IndexType, + index_type: IndexLevelTypeInfo, any_fields_null: bool, + all_fields_null: bool, previous_batch_operations: &mut Option<&mut Vec>, storage_flags: &Option<&StorageFlags>, estimated_costs_only_with_layer_info: &mut Option< @@ -43,6 +44,7 @@ impl Drive { index_path_info, index_type, any_fields_null, + all_fields_null, previous_batch_operations, storage_flags, estimated_costs_only_with_layer_info, diff --git a/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs index c4847e1cb5e..be2ec0515d1 100644 --- a/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs @@ -16,7 +16,7 @@ use crate::util::object_size_info::{DocumentAndContractInfo, PathInfo, PathKeyEl use crate::util::storage_flags::StorageFlags; use crate::util::type_constants::DEFAULT_HASH_SIZE_U8; use dpp::data_contract::document_type::methods::DocumentTypeV0Methods; -use dpp::data_contract::document_type::IndexType; +use dpp::data_contract::document_type::IndexLevelTypeInfo; use dpp::document::DocumentV0Getters; use dpp::version::drive_versions::DriveVersion; use grovedb::batch::key_info::KeyInfo; @@ -33,8 +33,9 @@ impl Drive { &self, document_and_contract_info: &DocumentAndContractInfo, mut index_path_info: PathInfo<0>, - index_type: IndexType, + index_type: IndexLevelTypeInfo, any_fields_null: bool, + all_fields_null: bool, previous_batch_operations: &mut Option<&mut Vec>, storage_flags: &Option<&StorageFlags>, estimated_costs_only_with_layer_info: &mut Option< @@ -44,9 +45,12 @@ impl Drive { batch_operations: &mut Vec, drive_version: &DriveVersion, ) -> Result<(), Error> { + if all_fields_null && !index_type.should_insert_with_all_null { + return Ok(()); + } // unique indexes will be stored under key "0" // non-unique indices should have a tree at key "0" that has all elements based off of primary key - if !index_type.is_unique() || any_fields_null { + if !index_type.index_type.is_unique() || any_fields_null { // Tree generation, this happens for both non unique indexes, unique indexes with a null inside // a member of the path let key_path_info = KeyRef(&[0]); diff --git a/packages/rs-drive/src/drive/document/insert/mod.rs b/packages/rs-drive/src/drive/document/insert/mod.rs index bd87b1aab58..e2e2f378900 100644 --- a/packages/rs-drive/src/drive/document/insert/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/mod.rs @@ -671,12 +671,12 @@ mod tests { assert_eq!( fee_result, FeeResult { - storage_fee: 1761 + storage_fee: 1840 * Epoch::new(0).unwrap().cost_for_known_cost_item( &EPOCH_CHANGE_FEE_VERSION_TEST, StorageDiskUsageCreditPerByte, ), - processing_fee: 1227900, + processing_fee: 1264300, ..Default::default() } ); diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/mod.rs new file mode 100644 index 00000000000..ccb294ad2ba --- /dev/null +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/mod.rs @@ -0,0 +1,47 @@ +mod v0; + +use crate::drive::Drive; +use crate::error::drive::DriveError; +use crate::error::Error; +use dpp::version::drive_versions::DriveVersion; +use grovedb::batch::KeyInfoPath; + +use grovedb::EstimatedLayerInformation; + +use dpp::data_contract::DataContract; +use std::collections::HashMap; + +impl Drive { + /// This function calls the versioned `add_estimation_costs_for_contested_document_tree_levels_up_to_contract_v0` + /// function based on the version provided in the `DriveVersion` parameter. It returns an error if the + /// version doesn't match any existing versioned functions. + /// + /// # Parameters + /// - `estimated_costs_only_with_layer_info`: A mutable reference to a `HashMap` that holds the estimated layer information. + /// - `drive_version`: A reference to the `DriveVersion` object that specifies the version of the function to call. + pub(in crate::drive) fn add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded( + contract: &DataContract, + estimated_costs_only_with_layer_info: &mut HashMap, + drive_version: &DriveVersion, + ) -> Result<(), Error> { + match drive_version + .methods + .estimated_costs + .add_estimation_costs_for_contested_document_tree_levels_up_to_contract + { + 0 => { + Self::add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded_v0( + contract, + estimated_costs_only_with_layer_info, + ); + Ok(()) + } + version => Err(Error::Drive(DriveError::UnknownVersionMismatch { + method: "add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded" + .to_string(), + known_versions: vec![0], + received: version, + })), + } + } +} diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs new file mode 100644 index 00000000000..83f8c8dbc50 --- /dev/null +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs @@ -0,0 +1,115 @@ +use crate::drive::constants::ESTIMATED_AVERAGE_DOCUMENT_TYPE_NAME_SIZE; + +use crate::drive::Drive; + +use grovedb::batch::KeyInfoPath; +use grovedb::EstimatedLayerCount::{ApproximateElements, EstimatedLevel, PotentiallyAtMaxElements}; +use grovedb::EstimatedLayerInformation; +use grovedb::EstimatedLayerSizes::AllSubtrees; + +use crate::drive::votes::paths::{ + vote_contested_resource_active_polls_contract_tree_path, + vote_contested_resource_active_polls_tree_path, vote_contested_resource_tree_path, + vote_root_path, +}; +use crate::util::type_constants::DEFAULT_HASH_SIZE_U8; +use dpp::data_contract::accessors::v0::DataContractV0Getters; +use dpp::data_contract::DataContract; +use grovedb::EstimatedSumTrees::{NoSumTrees, SomeSumTrees}; +use std::collections::HashMap; + +impl Drive { + /// Adds estimated costs for layers up to the contract level. + /// + /// This function populates the `estimated_costs_only_with_layer_info` hashmap with estimated layer information for the top level and the contract layer. + /// These estimates are useful for optimizing GroveDB operations. + /// + /// # Parameters + /// + /// - `estimated_costs_only_with_layer_info`: A mutable reference to a hashmap that will be populated with estimated layer information for the top level and the contract layer. + /// + /// # Estimated Layer Information + /// + /// The function estimates two layers: + /// + /// 1. The top layer, which is an empty layer. + /// 2. The contract layer, which contains all global contracts. + /// + /// These estimates are useful for optimizing batch insertions, deletions, and other operations in GroveDB. + /// + /// # Usage + /// + /// This function is intended to be used internally within the Drive implementation. + /// + pub(in crate::drive) fn add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded_v0( + contract: &DataContract, + estimated_costs_only_with_layer_info: &mut HashMap, + ) { + // we have constructed the top layer so contract/documents tree are at the top + estimated_costs_only_with_layer_info.insert( + KeyInfoPath::from_known_path([]), + EstimatedLayerInformation { + is_sum_tree: false, + estimated_layer_count: EstimatedLevel(2, false), //voting is on level 2 + // We have balances in the middle which is a sum tree + estimated_layer_sizes: AllSubtrees( + 1, + SomeSumTrees { + sum_trees_weight: 1, + non_sum_trees_weight: 2, + }, + None, + ), + }, + ); + + // we then need to insert the contract layer + estimated_costs_only_with_layer_info.insert( + KeyInfoPath::from_known_path(vote_root_path()), + EstimatedLayerInformation { + is_sum_tree: false, + // contested resource tree is a key of "c" so it should be on the top layer of the merk + estimated_layer_count: EstimatedLevel(0, false), + estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), + }, + ); + + // we then need to insert the contract layer + estimated_costs_only_with_layer_info.insert( + KeyInfoPath::from_known_path(vote_contested_resource_tree_path()), + EstimatedLayerInformation { + is_sum_tree: false, + // active poll "p", with "e" and "i" first so it should be on the second layer of the merk + estimated_layer_count: EstimatedLevel(1, false), + estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), + }, + ); + + // we then need to insert the contract layer + estimated_costs_only_with_layer_info.insert( + KeyInfoPath::from_known_path(vote_contested_resource_active_polls_tree_path()), + EstimatedLayerInformation { + is_sum_tree: false, + estimated_layer_count: PotentiallyAtMaxElements, + estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), + }, + ); + + let document_type_count = contract.document_types().len() as u32; + + estimated_costs_only_with_layer_info.insert( + KeyInfoPath::from_known_path(vote_contested_resource_active_polls_contract_tree_path( + contract.id_ref().as_bytes(), + )), + EstimatedLayerInformation { + is_sum_tree: false, + estimated_layer_count: ApproximateElements(document_type_count), + estimated_layer_sizes: AllSubtrees( + ESTIMATED_AVERAGE_DOCUMENT_TYPE_NAME_SIZE, + NoSumTrees, + None, + ), + }, + ); + } +} diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/mod.rs index c2d99dfcc2e..d0d2bb88ca1 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/mod.rs @@ -1,3 +1,4 @@ mod add_estimation_costs_for_contested_document_tree_levels_up_to_contract; +mod add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded; mod add_estimation_costs_for_levels_up_to_contract; mod add_estimation_costs_for_levels_up_to_contract_document_type_excluded; diff --git a/packages/rs-drive/src/util/test_helpers/mod.rs b/packages/rs-drive/src/util/test_helpers/mod.rs index b92848fd1df..81447b46915 100644 --- a/packages/rs-drive/src/util/test_helpers/mod.rs +++ b/packages/rs-drive/src/util/test_helpers/mod.rs @@ -35,7 +35,7 @@ pub mod setup; pub mod test_utils; #[cfg(feature = "fixtures-and-mocks")] -/// Serializes to CBOR and applies to Drive a JSON contract from the file system. +/// Applies to Drive a JSON contract from the file system. pub fn setup_contract( drive: &Drive, path: &str, diff --git a/packages/rs-drive/tests/query_tests.rs b/packages/rs-drive/tests/query_tests.rs index 503e1669182..f29741e83d1 100644 --- a/packages/rs-drive/tests/query_tests.rs +++ b/packages/rs-drive/tests/query_tests.rs @@ -3167,8 +3167,8 @@ fn test_dpns_query() { .expect("there is always a root hash"); let expected_app_hash = vec![ - 244, 146, 123, 117, 189, 33, 121, 197, 170, 145, 77, 125, 25, 189, 87, 118, 50, 94, 170, 7, - 21, 208, 63, 241, 89, 4, 243, 50, 118, 21, 49, 24, + 142, 246, 25, 166, 52, 184, 158, 102, 192, 111, 173, 255, 155, 125, 53, 233, 98, 241, 201, + 233, 2, 58, 47, 90, 209, 207, 147, 204, 83, 68, 183, 143, ]; assert_eq!(root_hash.as_slice(), expected_app_hash); @@ -3450,7 +3450,7 @@ fn test_dpns_query() { assert_eq!(record_id_base68, a_record_id_base58); - // A query getting elements by the dashUniqueIdentityId desc + // A query getting elements by the identity desc let query_value = json!({ "where": [ @@ -3506,7 +3506,7 @@ fn test_dpns_query() { assert_eq!(root_hash, proof_root_hash); assert_eq!(results, proof_results); - // A query getting 2 elements asc by the dashUniqueIdentityId + // A query getting 2 elements asc by the identity let query_value = json!({ "where": [ @@ -3719,8 +3719,8 @@ fn test_dpns_query_start_at() { .expect("there is always a root hash"); let expected_app_hash = vec![ - 244, 146, 123, 117, 189, 33, 121, 197, 170, 145, 77, 125, 25, 189, 87, 118, 50, 94, 170, 7, - 21, 208, 63, 241, 89, 4, 243, 50, 118, 21, 49, 24, + 142, 246, 25, 166, 52, 184, 158, 102, 192, 111, 173, 255, 155, 125, 53, 233, 98, 241, 201, + 233, 2, 58, 47, 90, 209, 207, 147, 204, 83, 68, 183, 143, ]; assert_eq!(root_hash.as_slice(), expected_app_hash,); @@ -3813,8 +3813,8 @@ fn test_dpns_query_start_after() { .expect("there is always a root hash"); let expected_app_hash = vec![ - 244, 146, 123, 117, 189, 33, 121, 197, 170, 145, 77, 125, 25, 189, 87, 118, 50, 94, 170, 7, - 21, 208, 63, 241, 89, 4, 243, 50, 118, 21, 49, 24, + 142, 246, 25, 166, 52, 184, 158, 102, 192, 111, 173, 255, 155, 125, 53, 233, 98, 241, 201, + 233, 2, 58, 47, 90, 209, 207, 147, 204, 83, 68, 183, 143, ]; assert_eq!(root_hash.as_slice(), expected_app_hash); @@ -3907,8 +3907,8 @@ fn test_dpns_query_start_at_desc() { .expect("there is always a root hash"); let expected_app_hash = vec![ - 244, 146, 123, 117, 189, 33, 121, 197, 170, 145, 77, 125, 25, 189, 87, 118, 50, 94, 170, 7, - 21, 208, 63, 241, 89, 4, 243, 50, 118, 21, 49, 24, + 142, 246, 25, 166, 52, 184, 158, 102, 192, 111, 173, 255, 155, 125, 53, 233, 98, 241, 201, + 233, 2, 58, 47, 90, 209, 207, 147, 204, 83, 68, 183, 143, ]; assert_eq!(root_hash.as_slice(), expected_app_hash); @@ -4001,8 +4001,8 @@ fn test_dpns_query_start_after_desc() { .expect("there is always a root hash"); let expected_app_hash = vec![ - 244, 146, 123, 117, 189, 33, 121, 197, 170, 145, 77, 125, 25, 189, 87, 118, 50, 94, 170, 7, - 21, 208, 63, 241, 89, 4, 243, 50, 118, 21, 49, 24, + 142, 246, 25, 166, 52, 184, 158, 102, 192, 111, 173, 255, 155, 125, 53, 233, 98, 241, 201, + 233, 2, 58, 47, 90, 209, 207, 147, 204, 83, 68, 183, 143, ]; assert_eq!(root_hash.as_slice(), expected_app_hash); @@ -4195,8 +4195,8 @@ fn test_dpns_query_start_at_with_null_id() { .expect("there is always a root hash"); let expected_app_hash = vec![ - 217, 196, 25, 2, 88, 47, 16, 244, 117, 34, 65, 18, 208, 158, 14, 207, 158, 105, 191, 62, - 108, 124, 189, 159, 196, 137, 212, 243, 65, 230, 231, 95, + 72, 138, 172, 70, 225, 95, 64, 122, 142, 96, 131, 223, 154, 119, 132, 79, 182, 97, 202, 63, + 120, 116, 39, 217, 25, 208, 176, 49, 242, 138, 67, 112, ]; assert_eq!(root_hash.as_slice(), expected_app_hash); @@ -4398,8 +4398,8 @@ fn test_dpns_query_start_after_with_null_id() { .expect("there is always a root hash"); let expected_app_hash = vec![ - 217, 196, 25, 2, 88, 47, 16, 244, 117, 34, 65, 18, 208, 158, 14, 207, 158, 105, 191, 62, - 108, 124, 189, 159, 196, 137, 212, 243, 65, 230, 231, 95, + 72, 138, 172, 70, 225, 95, 64, 122, 142, 96, 131, 223, 154, 119, 132, 79, 182, 97, 202, 63, + 120, 116, 39, 217, 25, 208, 176, 49, 242, 138, 67, 112, ]; assert_eq!(root_hash.as_slice(), expected_app_hash); @@ -4605,8 +4605,8 @@ fn test_dpns_query_start_after_with_null_id_desc() { .expect("there is always a root hash"); let expected_app_hash = vec![ - 217, 196, 25, 2, 88, 47, 16, 244, 117, 34, 65, 18, 208, 158, 14, 207, 158, 105, 191, 62, - 108, 124, 189, 159, 196, 137, 212, 243, 65, 230, 231, 95, + 72, 138, 172, 70, 225, 95, 64, 122, 142, 96, 131, 223, 154, 119, 132, 79, 182, 97, 202, 63, + 120, 116, 39, 217, 25, 208, 176, 49, 242, 138, 67, 112, ]; assert_eq!(root_hash.as_slice(), expected_app_hash,); diff --git a/packages/rs-drive/tests/supporting_files/contract/dpns/domain0.json b/packages/rs-drive/tests/supporting_files/contract/dpns/domain0.json index e06db44a998..7432ca43bd1 100644 --- a/packages/rs-drive/tests/supporting_files/contract/dpns/domain0.json +++ b/packages/rs-drive/tests/supporting_files/contract/dpns/domain0.json @@ -8,7 +8,7 @@ "normalizedParentDomainName": "dashpay", "preorderSalt": "SysX9ol1uoyAaEbFzImAcPP2JCO+ydh/Lb6ES0wU8Tc=", "records": { - "dashUniqueIdentityId": "AYjYxDqLy2hvGQADqE6FAkBnQEpJSzNd3CRw1tpS6vZ7" + "identity": "AYjYxDqLy2hvGQADqE6FAkBnQEpJSzNd3CRw1tpS6vZ7" }, "subdomainRules": { "allowSubdomains": false diff --git a/packages/rs-drive/tests/supporting_files/contract/dpns/domains-no-alias.json b/packages/rs-drive/tests/supporting_files/contract/dpns/domains-no-alias.json index ae83c66e53b..a296ea78f10 100644 --- a/packages/rs-drive/tests/supporting_files/contract/dpns/domains-no-alias.json +++ b/packages/rs-drive/tests/supporting_files/contract/dpns/domains-no-alias.json @@ -1,15 +1,15 @@ -{"$id":"2HCQ3QgktL5tfCuUu4xhu9i5VW92eHVt5cZ6jBabwFGG","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ","$revision":1,"label":"RT-Jedediah-47528","records":{"dashUniqueIdentityId":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ"},"preorderSalt":"Z83UCDxOABjdcqI+dR98pc6zTsbtxqXu8Bl3KnxIceY=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jedediah-47528","normalizedParentDomainName":"dash"} -{"$id":"2R9tFPCwDSMMYwbfB4A48XSoq2U5X3nNgwF52r4qihDs","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"7XKBbdV8ssVEq6kAKkHp6kBjPGg1x6GBqRRXkcnRZeca","$revision":1,"label":"hashengineering","records":{"dashUniqueIdentityId":"7XKBbdV8ssVEq6kAKkHp6kBjPGg1x6GBqRRXkcnRZeca"},"preorderSalt":"a9C399pRllqBfa9FWfOuZZz/KPBlKMk+6eylyKe7Dj4=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"hashengineering","normalizedParentDomainName":"dash"} -{"$id":"38vXTn9FumExznoHNe4qZdsUT3mKCgg1d5S1Fkt5eyd3","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy","$revision":1,"label":"RT-Alta-70919","records":{"dashUniqueIdentityId":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy"},"preorderSalt":"WWPIhvivw3W2v6gQEZCI00SiipAWMySKa/bVTrvUDYA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-alta-70919","normalizedParentDomainName":"dash"} -{"$id":"3DWLuFmCHY6NDgWjrXjQTfyS9ZbUi7mjx9wxhPEt4D7g","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U","$revision":1,"label":"RT-Estell-99471","records":{"dashUniqueIdentityId":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U"},"preorderSalt":"dnhq+WWF1ANM12/zQHTnHKHG02pp8TCGgnR5F8bzk80=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-estell-99471","normalizedParentDomainName":"dash"} -{"$id":"41LDvKuqVr41iL4EWU3akg3jZnYzXZmpsGqfYvspSdSA","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"5MFdCrwbALwjqjF9PqzZqQL4p9BW8CnGUa6QwNVsccde","$revision":1,"label":"asd3","records":{"dashUniqueIdentityId":"5MFdCrwbALwjqjF9PqzZqQL4p9BW8CnGUa6QwNVsccde"},"preorderSalt":"iXcdrXRu30Pvwc+ZrQz2LpcNq4BxXT4Lz7eD3elAOOA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd3","normalizedParentDomainName":"dash"} -{"$id":"4nSpskBnwxis3UTcSwCkbVxNQY1fGS1W7KDBKB7B6DKu","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2","$revision":1,"label":"RT-Taya-58833","records":{"dashUniqueIdentityId":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2"},"preorderSalt":"eaTqXniy9+6zp+VthiSjXJj5yxZRuvPcf78Za+h3tNc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-taya-58833","normalizedParentDomainName":"dash"} -{"$id":"5xu7tGM4phqbo2gsqLhPqQcE6rMQwX7DgpHdebYsWY7o","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3","$revision":1,"label":"RT-Jaylin-1631","records":{"dashUniqueIdentityId":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3"},"preorderSalt":"8z5uJDgukshjYyJg5vlkNoj2VnIyGnXOvdIV1yaArtA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jaylin-1631","normalizedParentDomainName":"dash"} -{"$id":"7dLjvs5Yq9HP3gKu55QMhtfS1MyVTsgfyEoYPzKhoJZb","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"5BhfbUG2tYRoGiQPfVAX5vc9ZdHy1DsmZKCvFGgrAoc2","$revision":1,"label":"asd1","records":{"dashUniqueIdentityId":"5BhfbUG2tYRoGiQPfVAX5vc9ZdHy1DsmZKCvFGgrAoc2"},"preorderSalt":"QjL1p6aRqHUigJVDty4xNqMbpzdk0vVrJUBaEdVGgrw=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd1","normalizedParentDomainName":"dash"} -{"$id":"8ixRzw8p8AXAuxzmMLjNQEjX82nHbrwHBP7Z8mPh1WCW","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm","$revision":1,"label":"RT-Lessie-54694","records":{"dashUniqueIdentityId":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm"},"preorderSalt":"yzS0UdomizuVdTGpJRGTAc5LnAy/uMsHeSy8Me7+OF4=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-lessie-54694","normalizedParentDomainName":"dash"} -{"$id":"CLQWPJbD83seWkTsVgwFsfBFoJNcpUoVw5cdKfvCSRaT","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3","$revision":1,"label":"RT-Kelli-12496","records":{"dashUniqueIdentityId":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3"},"preorderSalt":"3JTrcf/fwnXF5eFZGIH0gG4Bfx4gqX8iq5W/Tgq0WDc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-kelli-12496","normalizedParentDomainName":"dash"} -{"$id":"EATdWbRvUW6ku8QkYSzQAA6ptjD3TkiHmB7jRLxNXFje","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CNgFhr7PcRCyv35mvtjnXSSFHTb1Go9cj5QhKxJFu9cz","$revision":1,"label":"hashalgorithm","records":{"dashUniqueIdentityId":"CNgFhr7PcRCyv35mvtjnXSSFHTb1Go9cj5QhKxJFu9cz"},"preorderSalt":"JBW3GK+RH48O/x9EXQGPrk1EBrU5gDxRhL/mc0sf+6M=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"hashalgorithm","normalizedParentDomainName":"dash"} -{"$id":"F88sCqKELoK5xRmJdb6PrY1yzRNDFZaBMvrnk6V6i8up","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J","$revision":1,"label":"RT-Hipolito-3704","records":{"dashUniqueIdentityId":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J"},"preorderSalt":"H3IlKGdiXWK7luuP+OtT4xEPdAyEyFTL6/V7biUmK5U=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-hipolito-3704","normalizedParentDomainName":"dash"} -{"$id":"FXyN2NZAdRFADgBQfb1XM1Qq7pWoEcgSWj1GaiQJqcrS","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","$revision":1,"label":"dash","records":{"dashUniqueIdentityId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF"},"preorderSalt":"4LUIxaNoJaIGaTofQUqhPtvs9DxB48eZ6p5ze0+aoiY=","subdomainRules":{"allowSubdomains":true},"normalizedLabel":"dash","normalizedParentDomainName":"","$createdAt":1640872805000} -{"$id":"GCCMoVogQWanv81cJbhyirneUbAdBvBsq3Q5N2L79Bss","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"D9GuSxitfyiF3MUPoA8VfRtbPo618dd5eXGe8koSNdX9","$revision":1,"label":"asd2","records":{"dashUniqueIdentityId":"D9GuSxitfyiF3MUPoA8VfRtbPo618dd5eXGe8koSNdX9"},"preorderSalt":"20A81OSpsxzPVmeGv6xrSa118cWK5EsbTaLJni0zoOk=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd2","normalizedParentDomainName":"dash"} -{"$id":"HqCR7WWDZPhmq1Tm4dM5sag9kp19ZfLY8BLdizdXWa7g","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2","$revision":1,"label":"RT-Deontae-75806","records":{"dashUniqueIdentityId":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2"},"preorderSalt":"+cjZQ09K7o6K234fNaL/6gwca4izTmwenyZDnwATbto=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-deontae-75806","normalizedParentDomainName":"dash"} \ No newline at end of file +{"$id":"2HCQ3QgktL5tfCuUu4xhu9i5VW92eHVt5cZ6jBabwFGG","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ","$revision":1,"label":"RT-Jedediah-47528","records":{"identity":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ"},"preorderSalt":"Z83UCDxOABjdcqI+dR98pc6zTsbtxqXu8Bl3KnxIceY=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jedediah-47528","normalizedParentDomainName":"dash"} +{"$id":"2R9tFPCwDSMMYwbfB4A48XSoq2U5X3nNgwF52r4qihDs","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"7XKBbdV8ssVEq6kAKkHp6kBjPGg1x6GBqRRXkcnRZeca","$revision":1,"label":"hashengineering","records":{"identity":"7XKBbdV8ssVEq6kAKkHp6kBjPGg1x6GBqRRXkcnRZeca"},"preorderSalt":"a9C399pRllqBfa9FWfOuZZz/KPBlKMk+6eylyKe7Dj4=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"hashengineering","normalizedParentDomainName":"dash"} +{"$id":"38vXTn9FumExznoHNe4qZdsUT3mKCgg1d5S1Fkt5eyd3","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy","$revision":1,"label":"RT-Alta-70919","records":{"identity":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy"},"preorderSalt":"WWPIhvivw3W2v6gQEZCI00SiipAWMySKa/bVTrvUDYA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-alta-70919","normalizedParentDomainName":"dash"} +{"$id":"3DWLuFmCHY6NDgWjrXjQTfyS9ZbUi7mjx9wxhPEt4D7g","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U","$revision":1,"label":"RT-Estell-99471","records":{"identity":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U"},"preorderSalt":"dnhq+WWF1ANM12/zQHTnHKHG02pp8TCGgnR5F8bzk80=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-estell-99471","normalizedParentDomainName":"dash"} +{"$id":"41LDvKuqVr41iL4EWU3akg3jZnYzXZmpsGqfYvspSdSA","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"5MFdCrwbALwjqjF9PqzZqQL4p9BW8CnGUa6QwNVsccde","$revision":1,"label":"asd3","records":{"identity":"5MFdCrwbALwjqjF9PqzZqQL4p9BW8CnGUa6QwNVsccde"},"preorderSalt":"iXcdrXRu30Pvwc+ZrQz2LpcNq4BxXT4Lz7eD3elAOOA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd3","normalizedParentDomainName":"dash"} +{"$id":"4nSpskBnwxis3UTcSwCkbVxNQY1fGS1W7KDBKB7B6DKu","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2","$revision":1,"label":"RT-Taya-58833","records":{"identity":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2"},"preorderSalt":"eaTqXniy9+6zp+VthiSjXJj5yxZRuvPcf78Za+h3tNc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-taya-58833","normalizedParentDomainName":"dash"} +{"$id":"5xu7tGM4phqbo2gsqLhPqQcE6rMQwX7DgpHdebYsWY7o","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3","$revision":1,"label":"RT-Jaylin-1631","records":{"identity":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3"},"preorderSalt":"8z5uJDgukshjYyJg5vlkNoj2VnIyGnXOvdIV1yaArtA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jaylin-1631","normalizedParentDomainName":"dash"} +{"$id":"7dLjvs5Yq9HP3gKu55QMhtfS1MyVTsgfyEoYPzKhoJZb","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"5BhfbUG2tYRoGiQPfVAX5vc9ZdHy1DsmZKCvFGgrAoc2","$revision":1,"label":"asd1","records":{"identity":"5BhfbUG2tYRoGiQPfVAX5vc9ZdHy1DsmZKCvFGgrAoc2"},"preorderSalt":"QjL1p6aRqHUigJVDty4xNqMbpzdk0vVrJUBaEdVGgrw=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd1","normalizedParentDomainName":"dash"} +{"$id":"8ixRzw8p8AXAuxzmMLjNQEjX82nHbrwHBP7Z8mPh1WCW","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm","$revision":1,"label":"RT-Lessie-54694","records":{"identity":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm"},"preorderSalt":"yzS0UdomizuVdTGpJRGTAc5LnAy/uMsHeSy8Me7+OF4=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-lessie-54694","normalizedParentDomainName":"dash"} +{"$id":"CLQWPJbD83seWkTsVgwFsfBFoJNcpUoVw5cdKfvCSRaT","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3","$revision":1,"label":"RT-Kelli-12496","records":{"identity":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3"},"preorderSalt":"3JTrcf/fwnXF5eFZGIH0gG4Bfx4gqX8iq5W/Tgq0WDc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-kelli-12496","normalizedParentDomainName":"dash"} +{"$id":"EATdWbRvUW6ku8QkYSzQAA6ptjD3TkiHmB7jRLxNXFje","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CNgFhr7PcRCyv35mvtjnXSSFHTb1Go9cj5QhKxJFu9cz","$revision":1,"label":"hashalgorithm","records":{"identity":"CNgFhr7PcRCyv35mvtjnXSSFHTb1Go9cj5QhKxJFu9cz"},"preorderSalt":"JBW3GK+RH48O/x9EXQGPrk1EBrU5gDxRhL/mc0sf+6M=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"hashalgorithm","normalizedParentDomainName":"dash"} +{"$id":"F88sCqKELoK5xRmJdb6PrY1yzRNDFZaBMvrnk6V6i8up","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J","$revision":1,"label":"RT-Hipolito-3704","records":{"identity":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J"},"preorderSalt":"H3IlKGdiXWK7luuP+OtT4xEPdAyEyFTL6/V7biUmK5U=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-hipolito-3704","normalizedParentDomainName":"dash"} +{"$id":"FXyN2NZAdRFADgBQfb1XM1Qq7pWoEcgSWj1GaiQJqcrS","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","$revision":1,"label":"dash","records":{"identity":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF"},"preorderSalt":"4LUIxaNoJaIGaTofQUqhPtvs9DxB48eZ6p5ze0+aoiY=","subdomainRules":{"allowSubdomains":true},"normalizedLabel":"dash","normalizedParentDomainName":"","$createdAt":1640872805000} +{"$id":"GCCMoVogQWanv81cJbhyirneUbAdBvBsq3Q5N2L79Bss","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"D9GuSxitfyiF3MUPoA8VfRtbPo618dd5eXGe8koSNdX9","$revision":1,"label":"asd2","records":{"identity":"D9GuSxitfyiF3MUPoA8VfRtbPo618dd5eXGe8koSNdX9"},"preorderSalt":"20A81OSpsxzPVmeGv6xrSa118cWK5EsbTaLJni0zoOk=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd2","normalizedParentDomainName":"dash"} +{"$id":"HqCR7WWDZPhmq1Tm4dM5sag9kp19ZfLY8BLdizdXWa7g","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2","$revision":1,"label":"RT-Deontae-75806","records":{"identity":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2"},"preorderSalt":"+cjZQ09K7o6K234fNaL/6gwca4izTmwenyZDnwATbto=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-deontae-75806","normalizedParentDomainName":"dash"} \ No newline at end of file diff --git a/packages/rs-drive/tests/supporting_files/contract/dpns/domains.json b/packages/rs-drive/tests/supporting_files/contract/dpns/domains.json index 6d754f0b810..68ec447c937 100644 --- a/packages/rs-drive/tests/supporting_files/contract/dpns/domains.json +++ b/packages/rs-drive/tests/supporting_files/contract/dpns/domains.json @@ -1,24 +1,24 @@ {"$id":"H4beHoyZrZqXkb5NF76fToAJ5xtBd4bdUsxNV5ynpEq","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2","$revision":1,"label":"RT-Taya-58833-alias","records":{"dashAliasIdentityId":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2"},"preorderSalt":"Nyt1RTwTtVMfZsFg7tF7HniTKjiRMAnULpAm1aDBoug=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-taya-58833-alias","normalizedParentDomainName":"dash"} {"$id":"jWE9BhZ7TE6SgpTS8eg31vxWc4kt5VahMDezA4vYyQc","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2","$revision":1,"label":"RT-Deontae-75806-alias","records":{"dashAliasIdentityId":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2"},"preorderSalt":"Nb8zvE4zzpbiGUx2jj6e4T+HnoyDvMG/wtMqUWSURxk=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-deontae-75806-alias","normalizedParentDomainName":"dash"} -{"$id":"2HCQ3QgktL5tfCuUu4xhu9i5VW92eHVt5cZ6jBabwFGG","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ","$revision":1,"label":"RT-Jedediah-47528","records":{"dashUniqueIdentityId":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ"},"preorderSalt":"Z83UCDxOABjdcqI+dR98pc6zTsbtxqXu8Bl3KnxIceY=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jedediah-47528","normalizedParentDomainName":"dash"} -{"$id":"2R9tFPCwDSMMYwbfB4A48XSoq2U5X3nNgwF52r4qihDs","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"7XKBbdV8ssVEq6kAKkHp6kBjPGg1x6GBqRRXkcnRZeca","$revision":1,"label":"hashengineering","records":{"dashUniqueIdentityId":"7XKBbdV8ssVEq6kAKkHp6kBjPGg1x6GBqRRXkcnRZeca"},"preorderSalt":"a9C399pRllqBfa9FWfOuZZz/KPBlKMk+6eylyKe7Dj4=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"hashengineering","normalizedParentDomainName":"dash"} +{"$id":"2HCQ3QgktL5tfCuUu4xhu9i5VW92eHVt5cZ6jBabwFGG","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ","$revision":1,"label":"RT-Jedediah-47528","records":{"identity":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ"},"preorderSalt":"Z83UCDxOABjdcqI+dR98pc6zTsbtxqXu8Bl3KnxIceY=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jedediah-47528","normalizedParentDomainName":"dash"} +{"$id":"2R9tFPCwDSMMYwbfB4A48XSoq2U5X3nNgwF52r4qihDs","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"7XKBbdV8ssVEq6kAKkHp6kBjPGg1x6GBqRRXkcnRZeca","$revision":1,"label":"hashengineering","records":{"identity":"7XKBbdV8ssVEq6kAKkHp6kBjPGg1x6GBqRRXkcnRZeca"},"preorderSalt":"a9C399pRllqBfa9FWfOuZZz/KPBlKMk+6eylyKe7Dj4=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"hashengineering","normalizedParentDomainName":"dash"} {"$id":"2n3a5fuJdMdB6QPwaJiCe9mW9onQZgMzfhi33NZctTqJ","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U","$revision":1,"label":"RT-Estell-99471-alias","records":{"dashAliasIdentityId":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U"},"preorderSalt":"fq64gibUhBxp0GerizGgVQNEFRiMb/GYDmkBoLb2h8w=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-estell-99471-alias","normalizedParentDomainName":"dash"} -{"$id":"38vXTn9FumExznoHNe4qZdsUT3mKCgg1d5S1Fkt5eyd3","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy","$revision":1,"label":"RT-Alta-70919","records":{"dashUniqueIdentityId":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy"},"preorderSalt":"WWPIhvivw3W2v6gQEZCI00SiipAWMySKa/bVTrvUDYA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-alta-70919","normalizedParentDomainName":"dash"} +{"$id":"38vXTn9FumExznoHNe4qZdsUT3mKCgg1d5S1Fkt5eyd3","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy","$revision":1,"label":"RT-Alta-70919","records":{"identity":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy"},"preorderSalt":"WWPIhvivw3W2v6gQEZCI00SiipAWMySKa/bVTrvUDYA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-alta-70919","normalizedParentDomainName":"dash"} {"$id":"3C5SvB62rAJeGwchMbwbBpUyFzHXAvHjjRAYcreex74M","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3","$revision":1,"label":"RT-Jaylin-1631-alias","records":{"dashAliasIdentityId":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3"},"preorderSalt":"7P1Sk5kk10b9DYMByveBsof0SpbfHRb5UBbUfVtqV48=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jaylin-1631-alias","normalizedParentDomainName":"dash"} -{"$id":"3DWLuFmCHY6NDgWjrXjQTfyS9ZbUi7mjx9wxhPEt4D7g","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U","$revision":1,"label":"RT-Estell-99471","records":{"dashUniqueIdentityId":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U"},"preorderSalt":"dnhq+WWF1ANM12/zQHTnHKHG02pp8TCGgnR5F8bzk80=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-estell-99471","normalizedParentDomainName":"dash"} -{"$id":"41LDvKuqVr41iL4EWU3akg3jZnYzXZmpsGqfYvspSdSA","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"5MFdCrwbALwjqjF9PqzZqQL4p9BW8CnGUa6QwNVsccde","$revision":1,"label":"asd3","records":{"dashUniqueIdentityId":"5MFdCrwbALwjqjF9PqzZqQL4p9BW8CnGUa6QwNVsccde"},"preorderSalt":"iXcdrXRu30Pvwc+ZrQz2LpcNq4BxXT4Lz7eD3elAOOA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd3","normalizedParentDomainName":"dash"} -{"$id":"4nSpskBnwxis3UTcSwCkbVxNQY1fGS1W7KDBKB7B6DKu","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2","$revision":1,"label":"RT-Taya-58833","records":{"dashUniqueIdentityId":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2"},"preorderSalt":"eaTqXniy9+6zp+VthiSjXJj5yxZRuvPcf78Za+h3tNc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-taya-58833","normalizedParentDomainName":"dash"} -{"$id":"5xu7tGM4phqbo2gsqLhPqQcE6rMQwX7DgpHdebYsWY7o","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3","$revision":1,"label":"RT-Jaylin-1631","records":{"dashUniqueIdentityId":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3"},"preorderSalt":"8z5uJDgukshjYyJg5vlkNoj2VnIyGnXOvdIV1yaArtA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jaylin-1631","normalizedParentDomainName":"dash"} +{"$id":"3DWLuFmCHY6NDgWjrXjQTfyS9ZbUi7mjx9wxhPEt4D7g","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U","$revision":1,"label":"RT-Estell-99471","records":{"identity":"3VwD23t6Sn5SPHfbh3NkaWUJeKVuxPqD9PHKHQkD3D9U"},"preorderSalt":"dnhq+WWF1ANM12/zQHTnHKHG02pp8TCGgnR5F8bzk80=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-estell-99471","normalizedParentDomainName":"dash"} +{"$id":"41LDvKuqVr41iL4EWU3akg3jZnYzXZmpsGqfYvspSdSA","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"5MFdCrwbALwjqjF9PqzZqQL4p9BW8CnGUa6QwNVsccde","$revision":1,"label":"asd3","records":{"identity":"5MFdCrwbALwjqjF9PqzZqQL4p9BW8CnGUa6QwNVsccde"},"preorderSalt":"iXcdrXRu30Pvwc+ZrQz2LpcNq4BxXT4Lz7eD3elAOOA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd3","normalizedParentDomainName":"dash"} +{"$id":"4nSpskBnwxis3UTcSwCkbVxNQY1fGS1W7KDBKB7B6DKu","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2","$revision":1,"label":"RT-Taya-58833","records":{"identity":"GaJYCnEBmzQupp7HQh1cW2j4pzjsJKbD1nbhX2gXvhM2"},"preorderSalt":"eaTqXniy9+6zp+VthiSjXJj5yxZRuvPcf78Za+h3tNc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-taya-58833","normalizedParentDomainName":"dash"} +{"$id":"5xu7tGM4phqbo2gsqLhPqQcE6rMQwX7DgpHdebYsWY7o","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3","$revision":1,"label":"RT-Jaylin-1631","records":{"identity":"8H8MsSTjYCk16aoEbkHbRnUbLQBeH8h8bhuCm4SoAPC3"},"preorderSalt":"8z5uJDgukshjYyJg5vlkNoj2VnIyGnXOvdIV1yaArtA=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jaylin-1631","normalizedParentDomainName":"dash"} {"$id":"7QUT57KxZkL1zrZdWgo1VnCssvnr5AMm1krtaafL2KVL","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy","$revision":1,"label":"RT-Alta-70919-alias","records":{"dashAliasIdentityId":"3k9UhUNPJqm7fDTFb7D8LZd33MsQFTbyZFiwPNGLZvdy"},"preorderSalt":"5DURDOV+eB/nv+M7PPryYJLs8n8zVrx+ymr6+prX0LY=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-alta-70919-alias","normalizedParentDomainName":"dash"} -{"$id":"7dLjvs5Yq9HP3gKu55QMhtfS1MyVTsgfyEoYPzKhoJZb","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"5BhfbUG2tYRoGiQPfVAX5vc9ZdHy1DsmZKCvFGgrAoc2","$revision":1,"label":"asd1","records":{"dashUniqueIdentityId":"5BhfbUG2tYRoGiQPfVAX5vc9ZdHy1DsmZKCvFGgrAoc2"},"preorderSalt":"QjL1p6aRqHUigJVDty4xNqMbpzdk0vVrJUBaEdVGgrw=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd1","normalizedParentDomainName":"dash"} +{"$id":"7dLjvs5Yq9HP3gKu55QMhtfS1MyVTsgfyEoYPzKhoJZb","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"5BhfbUG2tYRoGiQPfVAX5vc9ZdHy1DsmZKCvFGgrAoc2","$revision":1,"label":"asd1","records":{"identity":"5BhfbUG2tYRoGiQPfVAX5vc9ZdHy1DsmZKCvFGgrAoc2"},"preorderSalt":"QjL1p6aRqHUigJVDty4xNqMbpzdk0vVrJUBaEdVGgrw=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd1","normalizedParentDomainName":"dash"} {"$id":"8Vf4mGV5q3uxU51bSA5NEPzDkxeTAVAmGd8fuDXLKRSu","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm","$revision":1,"label":"RT-Lessie-54694-alias","records":{"dashAliasIdentityId":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm"},"preorderSalt":"b7o9Zx2wk01q0V+9tT/8vgGs/v+NAaXaqC+G2ADLmAI=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-lessie-54694-alias","normalizedParentDomainName":"dash"} -{"$id":"8ixRzw8p8AXAuxzmMLjNQEjX82nHbrwHBP7Z8mPh1WCW","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm","$revision":1,"label":"RT-Lessie-54694","records":{"dashUniqueIdentityId":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm"},"preorderSalt":"yzS0UdomizuVdTGpJRGTAc5LnAy/uMsHeSy8Me7+OF4=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-lessie-54694","normalizedParentDomainName":"dash"} +{"$id":"8ixRzw8p8AXAuxzmMLjNQEjX82nHbrwHBP7Z8mPh1WCW","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm","$revision":1,"label":"RT-Lessie-54694","records":{"identity":"AhxHSKuT7zv3XU3nVBjyxhee1XWMJLmSHDU7TQDtxMkm"},"preorderSalt":"yzS0UdomizuVdTGpJRGTAc5LnAy/uMsHeSy8Me7+OF4=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-lessie-54694","normalizedParentDomainName":"dash"} {"$id":"8rCzrJX6VC3JYnUQUW2guM7SMsLjQyUheomgs992XXe6","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ","$revision":1,"label":"RT-Jedediah-47528-alias","records":{"dashAliasIdentityId":"14oSa4dp8DoZsyQv353z2UtV9RUMt2SmSin7mMNP6NMQ"},"preorderSalt":"1jUL8ZROb3qbeXxhhyD4AFkPbjksHLc1VEVBX6wNnWw=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-jedediah-47528-alias","normalizedParentDomainName":"dash"} {"$id":"BxS8vPEnbqY4ViRrw5JDwMUE7yqSrnuHW2ye5BpaXyEH","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J","$revision":1,"label":"RT-Hipolito-3704-alias","records":{"dashAliasIdentityId":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J"},"preorderSalt":"cGAhl+rKc3Eh0A6whzoJ2of02BF6Ze9wFtWuYZYBkCc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-hipolito-3704-alias","normalizedParentDomainName":"dash"} -{"$id":"CLQWPJbD83seWkTsVgwFsfBFoJNcpUoVw5cdKfvCSRaT","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3","$revision":1,"label":"RT-Kelli-12496","records":{"dashUniqueIdentityId":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3"},"preorderSalt":"3JTrcf/fwnXF5eFZGIH0gG4Bfx4gqX8iq5W/Tgq0WDc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-kelli-12496","normalizedParentDomainName":"dash"} -{"$id":"EATdWbRvUW6ku8QkYSzQAA6ptjD3TkiHmB7jRLxNXFje","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CNgFhr7PcRCyv35mvtjnXSSFHTb1Go9cj5QhKxJFu9cz","$revision":1,"label":"hashalgorithm","records":{"dashUniqueIdentityId":"CNgFhr7PcRCyv35mvtjnXSSFHTb1Go9cj5QhKxJFu9cz"},"preorderSalt":"JBW3GK+RH48O/x9EXQGPrk1EBrU5gDxRhL/mc0sf+6M=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"hashalgorithm","normalizedParentDomainName":"dash"} -{"$id":"F88sCqKELoK5xRmJdb6PrY1yzRNDFZaBMvrnk6V6i8up","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J","$revision":1,"label":"RT-Hipolito-3704","records":{"dashUniqueIdentityId":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J"},"preorderSalt":"H3IlKGdiXWK7luuP+OtT4xEPdAyEyFTL6/V7biUmK5U=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-hipolito-3704","normalizedParentDomainName":"dash"} +{"$id":"CLQWPJbD83seWkTsVgwFsfBFoJNcpUoVw5cdKfvCSRaT","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3","$revision":1,"label":"RT-Kelli-12496","records":{"identity":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3"},"preorderSalt":"3JTrcf/fwnXF5eFZGIH0gG4Bfx4gqX8iq5W/Tgq0WDc=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-kelli-12496","normalizedParentDomainName":"dash"} +{"$id":"EATdWbRvUW6ku8QkYSzQAA6ptjD3TkiHmB7jRLxNXFje","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CNgFhr7PcRCyv35mvtjnXSSFHTb1Go9cj5QhKxJFu9cz","$revision":1,"label":"hashalgorithm","records":{"identity":"CNgFhr7PcRCyv35mvtjnXSSFHTb1Go9cj5QhKxJFu9cz"},"preorderSalt":"JBW3GK+RH48O/x9EXQGPrk1EBrU5gDxRhL/mc0sf+6M=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"hashalgorithm","normalizedParentDomainName":"dash"} +{"$id":"F88sCqKELoK5xRmJdb6PrY1yzRNDFZaBMvrnk6V6i8up","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J","$revision":1,"label":"RT-Hipolito-3704","records":{"identity":"Ftz3RptpL6cve2trop7MFS9gadZTCux9AvPuk8kYnZ8J"},"preorderSalt":"H3IlKGdiXWK7luuP+OtT4xEPdAyEyFTL6/V7biUmK5U=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-hipolito-3704","normalizedParentDomainName":"dash"} {"$id":"FXyN2NZAdRFADgBQfb1XM1Qq7pWoEcgSWj1GaiQJqcrS","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","$revision":1,"label":"dash","records":{"dashAliasIdentityId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF"},"preorderSalt":"4LUIxaNoJaIGaTofQUqhPtvs9DxB48eZ6p5ze0+aoiY=","subdomainRules":{"allowSubdomains":true},"normalizedLabel":"dash","normalizedParentDomainName":"","$createdAt":1640872805000} {"$id":"G8egwJgxMXo7FAwf3tujtHULxJSRPuHBc9pk8REQPjjh","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3","$revision":1,"label":"RT-Kelli-12496-alias","records":{"dashAliasIdentityId":"CL7uN4mh1HfBXFenyck8LUZof2KvsbTwLwivYmk6nQE3"},"preorderSalt":"qZdKJ+Pp+RCzhBWsmGy4gOR83PGSyff3tzbiKNBNbT8=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-kelli-12496-alias","normalizedParentDomainName":"dash"} -{"$id":"GCCMoVogQWanv81cJbhyirneUbAdBvBsq3Q5N2L79Bss","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"D9GuSxitfyiF3MUPoA8VfRtbPo618dd5eXGe8koSNdX9","$revision":1,"label":"asd2","records":{"dashUniqueIdentityId":"D9GuSxitfyiF3MUPoA8VfRtbPo618dd5eXGe8koSNdX9"},"preorderSalt":"20A81OSpsxzPVmeGv6xrSa118cWK5EsbTaLJni0zoOk=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd2","normalizedParentDomainName":"dash"} -{"$id":"HqCR7WWDZPhmq1Tm4dM5sag9kp19ZfLY8BLdizdXWa7g","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2","$revision":1,"label":"RT-Deontae-75806","records":{"dashUniqueIdentityId":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2"},"preorderSalt":"+cjZQ09K7o6K234fNaL/6gwca4izTmwenyZDnwATbto=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-deontae-75806","normalizedParentDomainName":"dash"} \ No newline at end of file +{"$id":"GCCMoVogQWanv81cJbhyirneUbAdBvBsq3Q5N2L79Bss","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"D9GuSxitfyiF3MUPoA8VfRtbPo618dd5eXGe8koSNdX9","$revision":1,"label":"asd2","records":{"identity":"D9GuSxitfyiF3MUPoA8VfRtbPo618dd5eXGe8koSNdX9"},"preorderSalt":"20A81OSpsxzPVmeGv6xrSa118cWK5EsbTaLJni0zoOk=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"asd2","normalizedParentDomainName":"dash"} +{"$id":"HqCR7WWDZPhmq1Tm4dM5sag9kp19ZfLY8BLdizdXWa7g","$type":"domain","$dataContractId":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","$ownerId":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2","$revision":1,"label":"RT-Deontae-75806","records":{"identity":"6DQQzyhurRmimQ6bVLKyFT3SGzeaWkDxEhhYUQwoXwA2"},"preorderSalt":"+cjZQ09K7o6K234fNaL/6gwca4izTmwenyZDnwATbto=","subdomainRules":{"allowSubdomains":false},"normalizedLabel":"rt-deontae-75806","normalizedParentDomainName":"dash"} \ No newline at end of file diff --git a/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract-label-not-required.json b/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract-label-not-required.json index 9208047e468..020255c4d40 100644 --- a/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract-label-not-required.json +++ b/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract-label-not-required.json @@ -95,7 +95,7 @@ "$comment": "Must be equal to the document owner" } }, - "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`", + "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `identity` or a `dashAliasIdentityId`", "minProperties": 1, "maxProperties": 1, "position": 4, diff --git a/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract-update-v2-test.json b/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract-update-v2-test.json index f852e7a63fa..ab68c409449 100644 --- a/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract-update-v2-test.json +++ b/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract-update-v2-test.json @@ -103,7 +103,7 @@ "description": "A new property to test serialization/deserialization" } }, - "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`", + "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `identity` or a `dashAliasIdentityId`", "minProperties": 1, "maxProperties": 1, "position": 4, diff --git a/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract.json b/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract.json index ef11e3d8e41..852bf5b0317 100644 --- a/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract.json +++ b/packages/rs-drive/tests/supporting_files/contract/dpns/dpns-contract.json @@ -95,7 +95,7 @@ "$comment": "Must be equal to the document owner" } }, - "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`", + "$comment": "Constraint with max and min properties ensure that only one identity record is used - either a `identity` or a `dashAliasIdentityId`", "minProperties": 1, "maxProperties": 1, "position": 4, diff --git a/packages/rs-platform-version/src/version/drive_versions.rs b/packages/rs-platform-version/src/version/drive_versions.rs index fd3027a0d38..41a0061a791 100644 --- a/packages/rs-platform-version/src/version/drive_versions.rs +++ b/packages/rs-platform-version/src/version/drive_versions.rs @@ -733,4 +733,6 @@ pub struct DriveEstimatedCostsMethodVersions { pub add_estimation_costs_for_levels_up_to_contract: FeatureVersion, pub add_estimation_costs_for_levels_up_to_contract_document_type_excluded: FeatureVersion, pub add_estimation_costs_for_contested_document_tree_levels_up_to_contract: FeatureVersion, + pub add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded: + FeatureVersion, } diff --git a/packages/rs-platform-version/src/version/mocks/v2_test.rs b/packages/rs-platform-version/src/version/mocks/v2_test.rs index de6aa2f7ede..3421fa7ee86 100644 --- a/packages/rs-platform-version/src/version/mocks/v2_test.rs +++ b/packages/rs-platform-version/src/version/mocks/v2_test.rs @@ -286,6 +286,7 @@ pub const TEST_PLATFORM_V2: PlatformVersion = PlatformVersion { add_estimation_costs_for_levels_up_to_contract: 0, add_estimation_costs_for_levels_up_to_contract_document_type_excluded: 0, add_estimation_costs_for_contested_document_tree_levels_up_to_contract: 0, + add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded: 0, }, asset_lock: DriveAssetLockMethodVersions { add_asset_lock_outpoint: 0, diff --git a/packages/rs-platform-version/src/version/mocks/v3_test.rs b/packages/rs-platform-version/src/version/mocks/v3_test.rs index aae61b3a10e..cf8059d819c 100644 --- a/packages/rs-platform-version/src/version/mocks/v3_test.rs +++ b/packages/rs-platform-version/src/version/mocks/v3_test.rs @@ -315,6 +315,7 @@ pub const TEST_PLATFORM_V3: PlatformVersion = PlatformVersion { add_estimation_costs_for_levels_up_to_contract: 0, add_estimation_costs_for_levels_up_to_contract_document_type_excluded: 0, add_estimation_costs_for_contested_document_tree_levels_up_to_contract: 0, + add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded: 0, }, asset_lock: DriveAssetLockMethodVersions { add_asset_lock_outpoint: 0, diff --git a/packages/rs-platform-version/src/version/v1.rs b/packages/rs-platform-version/src/version/v1.rs index e0e83f15673..d8bb9e9252e 100644 --- a/packages/rs-platform-version/src/version/v1.rs +++ b/packages/rs-platform-version/src/version/v1.rs @@ -285,6 +285,7 @@ pub const PLATFORM_V1: PlatformVersion = PlatformVersion { add_estimation_costs_for_levels_up_to_contract: 0, add_estimation_costs_for_levels_up_to_contract_document_type_excluded: 0, add_estimation_costs_for_contested_document_tree_levels_up_to_contract: 0, + add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded: 0, }, asset_lock: DriveAssetLockMethodVersions { add_asset_lock_outpoint: 0, diff --git a/packages/rs-sdk/tests/fetch/contested_resource_identity_votes.rs b/packages/rs-sdk/tests/fetch/contested_resource_identity_votes.rs index fa7c91eb488..edf37bbede2 100644 --- a/packages/rs-sdk/tests/fetch/contested_resource_identity_votes.rs +++ b/packages/rs-sdk/tests/fetch/contested_resource_identity_votes.rs @@ -88,7 +88,7 @@ async fn contested_resource_identity_votes_ok() { // Note: we hardcode default protxhash for offline testing in github actions let protx = cfg.existing_protxhash().unwrap_or_else(|_| { ProTxHash::from_byte_array( - hex::decode("eddaa22953d348b86f2044e6582a383ba9fb90cec4ef8c7f0f231e248bd00916") + hex::decode("74e26f433328be4b833b8958c04c51615e03853378e0d56fbe5ecf24977f884b") .expect("valid hex-encoded protx hash") .try_into() .expect("valid protx hash length"), diff --git a/packages/rs-sdk/tests/fetch/document.rs b/packages/rs-sdk/tests/fetch/document.rs index 64b09f8e74e..8263250d0b2 100644 --- a/packages/rs-sdk/tests/fetch/document.rs +++ b/packages/rs-sdk/tests/fetch/document.rs @@ -211,12 +211,12 @@ async fn document_list_bug_value_text_decode_base58_PLAN_653() { let query = DocumentQuery::new(Arc::clone(&contract), &cfg.existing_document_type_name) .expect("create SdkDocumentQuery") .with_where(WhereClause { - field: "records.dashUniqueIdentityId".to_string(), + field: "records.identity".to_string(), operator: drive::query::WhereOperator::Equal, value: dpp::platform_value::Value::Text("l".into()), }) .with_order_by(OrderClause { - field: "records.dashUniqueIdentityId".to_string(), + field: "records.identity".to_string(), ascending: true, }); diff --git a/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json b/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json index 9b701a67efb91bf9df826c0d07344559bb53d7ab..0483455616f901afd6c1123abf916b011e69d5ad 100644 GIT binary patch literal 162026 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

$5Kf{!V+EL|UDUms+zX!z9}SF$uN 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 diff --git a/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/msg_GetContestedResourcesRequest_8f71462d5f438e1b12fedf94ad5799af81392b7b0cbb7e86412da37ab13aef4b.json b/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/msg_GetContestedResourcesRequest_8f71462d5f438e1b12fedf94ad5799af81392b7b0cbb7e86412da37ab13aef4b.json index 9963152abbcb8cb8421f79da9dccf906d45596c7..4489c6cee2301894d2a68bc841f42923eec9eb28 100644 GIT binary patch literal 73360 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 literal 67879 zcmeI)&2Ah=mIdHh`zZ*mxnLDZN$lP12Qv@QFa(ao83=7thAbJ=F#PU)PDYwcS!y%B z?ABu11(YZj84>sAoO|w#EZIMQb9VOZr@Qw*zI}K9>`!Mu=WTy*@$h}#y?%H9;r;FF z53k<7$&dfMEa|f2<;D5Ko5RJ`=FQE^$2Tu;9=|`lxZb?EIBwp&*z7+ZH_MKfhsR}C z+f|$I4;LFN$K&?klt~Rz`Uatsz`>UyEZ{EHB`2F4ehgTo|`orC;``hpDf?9t1 z{q5WPXAi61-oLr~zlY!caQi+x{xfU;{r=5=-2V67caJN7{BZj|*e~mUy8Z6s-H)HJ z;E@k!XNL{!XJ?zh@~ewYhR@En@#L3>4c=XQ^}wrdKa20~{>^9JJVrmfz5VcNaWxD7 z=Uv>r|M=Z^523$)_woM2Z-4mi{hPb@uWo;Qo#Wr$|8IW%;r++Ehdn>MfA>@K*dHz) z{gSW0eDljU|Mtz#&;IK#&;Io1LwFVzT^^U$)%hXGI9wd^cfY^R_xW?^`z*RTzkbckAXwL#f-(AD!q~&(E)~&qKd_ zpF(_$b{w+(dUbvizm{;vxi{C#Pjc$wWpfcvYb$BWx-P${|8-&g%@ZEQk$QBfM^Cyl za+Hk!YU}DTwB-8f{mI41&B*uSdPBT^Jf~@iPuJ(y7w0+i`f~l6x7RP0UoGF{?Mwm> zhk9ESN}5<-J@4Bjtq#mkY$iEN@;^tW=xoRuryuCmU-j+HuWW06KZSF_dGRxeNc_w8 zU+ZJTl|#h-@20=u*G^N=fXk2)W<$&`)zIenn*Ah`O<#WhbaDOWkQT)Q9BXZtsVfv) zuzq7As{VVmva$0t6E}-XtK<3gleM_n@-!KKv-ru%*sO0chWLf+3ox(3xLqFzQX=!~ z6K`I!rR5kaDZY6tVIxJI^N(_VQWUSqr2({9sfoj)*3*HP8`-5+Qrm*aK(L}Mj+N)K zrBfi`p5=| zAw+|Rj36RXah5o`yAqfz8Mp`2zRovXyA^$UxLcx90iTk_fS1DTlUmMFki zMS;{iRVMzo%2dI2Y*{WP)=(0NI+jEU5Vm;X9=X)qdamLX>0}w0=1b#>= zmI@VOw4w#&l}I9(rFX1I6r-p~ooXe6fmrDfE&|m=MKdXOt?R%o@Ttx;u~*1O$fbm!MU?qRNLT?E?5eABext@7v65V{E|(TV^9Zh*k8NTH988j=OT9{U z$d=|R?A0xbV}>rAKte65@dkq8HmK6CI-1Isa+oSNvLNR-@W7{ATu;bEu@jdn(Q;oa z);maxB&=5=J}o7|y4Z>2Qc8Qc`k&EMvKr?(-k89U8-)Ugcjp!<(J$+~?L@gB%t=TB2_|wGtmhO_8ZH=oe z=#!j*oyMLrr|JkC)G}O2di|l?4in@RW{D;!vc!dC_!X3A*8BH`rJDq z2pr8V@izX547QGB4(WP2pNNz}0wH7F$obJg?JPk}`d5jeMEc6>=jR8Fw808$Js*1t zQIz~oaZ!C)@e0j2httC|C1jvu&WNDpd^|QG3@Ify?au{*?;yed6{AeCw~jj&6iP}Zun({)<^6}$8c3ArY4PUw26 zqpruvvs;oVC6x$B=|Mn*8#o>`x3Z0&9L8IQWMMrL&i#o1I6tuV@ zr==&-7wM8n;t^SJ*l9YNXrv}YPyy>n)j+!BAXJ(aEvlsuaLb> zmwFYALfo^SwOHD`_R%vC_83@iJ-hM>>@4!wQaj=$k10tj;*RDB#Jdxg2)=Urgso>esGFQlBn_|CUj_&0_pjZsQMqT zNQwiuBv$=twPK3Q|5P`PJ&`ra&q8ksA?IsFG^@hBYMMk*Rs;x2REQzm<9SjFq5j7o zngN7$9jIu1N@htZNU|9DX^Vl_ZjRHl0 z6r+h1Acp@&k7QL+q%IX=Ilm!Of<>iX9x<&^ zkea1@wBkfGC|+J1t`bp0Jj$oc+ZAncCRG!pls~zli&sf$%bB7M>trCQiPJr9{`#{F zy3`Xx5<+Cv0byf79E6+?1ZU~hgsO)WNJBvC)+-Xs(>?C9|IhaJfBRnuk|II5%ITUG z;O2{{om5aREB>F~^rc-+$U$i}7% z*{Bm#2``mSQP&yqKZ~2#9a-|Bk$BjSsRebq2v4hMaYqDO8iGhoEHBdbm5}p+#3hu4 znvnLPGSc%UQ9Xa?+kDigi}2|p{G|-^79iZK%u=t{F;zrnPgQE?T563HiFFU3T?~04 z6oz70*Oo+)Gm$&X=d{W-%&)XqvQcr)%!VyP=haR};#H?^%zU@V$sDgwqh?1+W-@#rQOJV}=`<;B$s}Nohj|nWR`4*-vrgh|{#Qy8O&t;^g zhuEo%gyA$8@5vHQ2r*%Z3)UsJ)1yT9B1zWRc3UA}^Xcuuj)3 ziC4|)5U6Rj>6XM!MYK#26nm}UU9V#^rB@cmpZQv|#Zvg1_OIkK<+<6w4!Gk6Gzeqy zX4)YR5K=?3NJZ2BvTM2$qle~yfJj+M$U_{Ab@9q2$h3WtEb^*><2)W@xP<&F zjPo2LHwsn=FJd_GWlF?~HQ+>R+&D2poT)R;yK5Q*#g znd%7zoI~1ZD2kv=>k~D8*3k1q4C-Y&61Bjwqx4!D(Xo!| zTb#pDIzkewi>wcIbwn4%C_SJ?OL^QUS&DiS(5=nX+78i>s4b<@VUd^C&Z5Skt9TV%&zBEXm2~Gryy_1P9^=wPa3@O=HPNrAy(BZi|2N#w zXXy_4!qwrG0f!IP26mdR210a7`QW9X6_+hkcOkhT(!=pWv`3ls1IJu&B)6u?DBvN+ z9>$6^6#@jVTNZl2Wo@jN@avTXqAj>lgd3<-wL(P^E>YBrn41X||511HRAEo4Vx#94 zhT~8lr4pTVy_c%GH0q8SyW@ioDT;8T*kSKZEc07d`bpjOd~A8$vWOu$rW&Gp-t(m& z5f=1}bj^s+Rymc(OCDJZeV5|DUD+Hw(5Zp&BHpAm|-CL*dq%OsTjHca^ z0whH6altULhbN>YflrjAUS*4xRp7w%()uva7=_QtTeAtABs5vt@nkH!#0q7}7B59% zSzSWjqXxpjR<{Vws<)~k1HS1}YOfLCx>(es^h?JSS!01p2z0*AMG-&*F7zXHsx%1- zYgUDR-GXyPbwIFg6nROm>J@gq(n)evEJXGj0(RB9q;;w!jFP7l2^`IB`i0I#SWWw^ zj9v40nFhWPcz%n5*z<`ef;b7(8mu_eEl!VyjMb`H8nI9ZFKMN~N9?4xV@tnIH%bfP z^aS|y1o*QI{Gpy}QN5fNpSZEj!1nupd2Z;0Hs7;4mr8$EPdX~gc-i%Srw9RP9?)q# zDY7VXq0p#fLV?I^M*q5Cxgc1g7C7|gvQBjKgVPcS4ZuZ2(iN9_x21tR>00g-P)+el zW^!Ac!{s4HLk@g0CwG0QD_N=)dC0Jupe&(FHIZCNX*7y#!J6$ZL8K-$SF*nT;G>dm z2}9%wcGD|~stH7p{GrA5Jk5eo!+w-_YeG{Lmk0%+cOeS|QglTv+>`rnLtd~3!4x1y zV#%ekg*7lkk>sj$BJ7q5GOwb^ghk*M29_cCh?4qmbxAr=f=yPb6E)r)54cjQT1rc< z=1JaIvPBrRa|LN*MA`k0iR3p$w2()FTIx3H`S5le~4j1R!`|Ri6-%KVj zBlqDle_rIzA%FTl-(TFE-(2UftMi-wW_){@l6+aaH(B|V1H+}3n5fV|XTDN8Ac<=A z{0Q9+VUc2Nw}jBFW{dE=TQpH47GXP8Ye_4I zhpxuhD8FR2DV337tq2MsDJ2uw@9I+g5zVY7Q=3SZB;?jwxJM=y-JmFHB`uZUPHqK@ zMj>-?)h{kdkv2<$U0n*vV`yHJ12;y|x)a1(N8(bW2ym#$rMg(r^}{O;To~Apbq-vj zCf*hf^(u(qoK`DBk`?rM-tHh(wrGJ%2o$dgptzlr$&+S2Td;PzODNIx$-l_{a4cUz z%`&|Uw}%MOmU^{Aoiy+SLfp&wlBh=Evj;aL)a2DGrD8Nwskp*C8 zi@2)ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/check_mn_voting_prerequisities/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/msg_GetContestedResourceIdentityVotesRequest_e000a8dfb1f42155770acb028f56557d0524384797bb450e22f41f66743d5d11.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/msg_GetContestedResourceIdentityVotesRequest_e000a8dfb1f42155770acb028f56557d0524384797bb450e22f41f66743d5d11.json index 2bec1a604254217fec3bb358bb10afa7d4fb6ac2..3297c3c448014f58200ccde2e55efafff5137ba9 100644 GIT binary patch literal 40517 zcmeI*-EI^~5(VJB<|z=@ec?7X;CYFCfYHc8i&Ui z{&g{_+3ETD?*DK8YB`vQ{Pqc&CvUF*eSH_;ZvJ@l=KjOCuV25r`ufw`S68=}FW>#+ z>gLt;%|El~?)HzX`$g~WUf$kazP!79|Mu?c^7prI-h>jD*Eg@{CKkbvtQn=*x~a&akK8$&69>wx1W7>qI*5vouBN^ z&-&q6%|AsuHaYzJY&-d%}?roU6{W);?dc~E(KeU zo*s8+K#`1pI%|nyppaZ24X3#nxf%IhTyKcy4^njRQ-4Utp6|||?aohU-ulVn?wSPd z_w}|Ylr%YgdfvB5S{+zJu{d%xxFz{tBU5w^$Qq~b>D6EL?ZqdyHNOwxTyS3eOw5DM z-(<}G^!)oCHvFE`6g1#6q=Y#j=C^9-Ar&8Hvgyn3j~CY$o3tqI;h42urcNjh!TREe zi@yJUtsIGBls2+UfQVs&IqNC5izFCcm2++;a3&W!DWr?J#jx9X_Vvl24B_K}6 za7i=v9FrXTqiT5wy~kdj5W9$1S{(xm%~BGpSfouK?a>E`Ekm$CxQfU)C zB85grgd38jZXUXd$P@^nQ}>U(ltY({^sb*+V!yoB^S1U0T+&|R{`@1>mqtmly7cP50;j00b|#ci z=W8$J(0Fm)7+%@bGz3kQc?P1`

Smud28r@G>Mt%_NlE7Qsk|^j4kI$}6d(hAeY< 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 YxO*}Fql3fG-}%K?KU%)wU%!3+FVghG6#xJL diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/msg_GetContestedResourceIdentityVotesRequest_3f86c200574547c3c17a7bea48968d03ded364f01c4f4e27c4653a50b864e7f3.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/msg_GetContestedResourceIdentityVotesRequest_3f86c200574547c3c17a7bea48968d03ded364f01c4f4e27c4653a50b864e7f3.json deleted file mode 100644 index a0529554646e3d673beda7171603e3b65fc4b1fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62425 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 LTE5ADe*E}vlc_w} diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/msg_GetContestedResourceIdentityVotesRequest_bb82f59de13ddcfebb86f44e50cb599280513ad72637c1060cef59b6a1199be4.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/msg_GetContestedResourceIdentityVotesRequest_bb82f59de13ddcfebb86f44e50cb599280513ad72637c1060cef59b6a1199be4.json new file mode 100644 index 0000000000000000000000000000000000000000..6fcecae1b53860866d9e5a9f231d882bc466f57d GIT binary patch literal 70669 zcmeI(>yA~|5d`4;_ET8=o*#4O0-U@=9>B7Y72^nnfQ7N8$nv|VYOlr29((X6SUETW}{PP!Ie);65m+yXf_4dt^KY#gizU>b#@4n7=ufBcx=KZVp|9tW4 z+x+;eZAq7%PERlHzPY;EeRDdU?tk<2+5OkIyPw}&-v9h`-hK1zcK3_x-HzMy{ujGr zpFiLI;(T@g&9hxl&vz%Ccbm^Q_v^3kzdT*%$kw1C;>L0J(hp0C{zJ7i8!?)jk_ruFy|McCrFW3P0C<-h&`swm=`%jdc?-owDKPO=}+=hACR2ufv z`y+bR^~LSw#qCXhc+=${vK@!)|Gv36C$25saqjtc`$Zr@eg-xSqv6}^`q$&i-FC+dkeiO-adfnE~b7F#GYN;KE1fT znz;2R0q}YWz|*PGmW7HYx6jD?Z9r=PD-uf}k0!T)|7&K-&Q7dh{Z3x}RlhxdP+ReR zNax1$7H4uEa{f)loUU$vKf4 zCqV8AEW3on85nLUV$Trdtbf!k_tbmt)d{JKbfwiXxKNY=ta6by{b-Ng0b7M&fpm)| z68Z>UU4L?*(v>K2($Y38t(R&cjpxu6B8>JIT`%Aa543!-pLYI4TW(9zEh6k>O|{nb zX?f&(QK__vUXenhE20fSsfS0dVlpK{;A2RNnnftsmcdwu^j4kI zsw=6ZrYv)K&)10sJ$dR}P#RI$1hR2awXfTPj$Rp1#gHeq>+yuUPu(Lhg>cu9#0nzU zGQOTQEk01u_~h78Rx1cc4m!V!N!6oAh-vhEe}hY{jD>OF0RgS46&e!|1A_uyvIBi4H=~3x8Agv@Wer}E4i74IiPXwx4C<}Zi zYKoAq5XFx3*ZWb{uP<&nV1Jn`sOLxp^@;;s%!{bGV_*m9=q-y9SiC@=``jV=jTp-s+9MxyDf{eLPIrMyL(4j*n_A;KVWlQNu zRMM@ct|*a=SOP4?GvcSLi;||iNgc+F!G-v6fkjlwc2s^{pAnRtEx^)@v5hfQL?PNx zits3foKJ(d`wYb&7S>hQ#pAWy9HTlqzw0HWX%|{?MU3iY1FIZX(o7BMcEz zuZZ^Kil&e^Z)HofNQFx7Wn6DL@X!=p)7kZ>f~(2qUzmy+C+BAm9#EngwFjsPKueTY{C2847PmJTORa z#$~*#=Cd94=Nc1d=S$ zcci-=GY9TF)DF-|s@RS3^@6Q#C8VA&+#T?oDpo^sXX`CeeJwqiF$(M^Lf|5nPS|EW zg_Ls8Qcc$49@B6ns@8QxMWu@GLa;N3J8enI-GSLVQ4va5+Epy};%+%GAc@E;4;eeF zB{{!Es-Ah^-%AA8TqKD!3(37)3_6x?>3V0pQK5}!FP@B0`stO5aBK<_(JnyehjARhTiGs);psz95Gp2TDH1q9u=x+7gT1k*NkNT0dq*B|Sz&Z94GE`ijIqh;QOL{Nx#j;7X5E)6Ny7 z_5+E>UBpErnc)XU|RzuRV6@Tj#B`Jy>W&oK#X`Yk znNkp~795Eui&@xe0+CQyQy++mDDm8a+%@-1mBdB1#GECUMkN)|sIo<^L$65UzNq@;=x}pkHTTo~I^uuuFfuHFVTM`wHUhQ9K zAVkDWnNo1)gd$BjV7^^XMXKvJ=Z6#|el5)EEf9%MRu8DsuFn-x(G`-e4{Jo+b_M0$ z{wu!M#C_;(kxB*i7FnOgeMt+hNJNJXDLvvqTaiQ#!i$1$?vhBki0unp-7=)I{G`+M z_=ZE(D~XJdddqTDs;ge1&XDS$kg{F|;D#ink@f5N@M3&FyuoMIk|H8-q8~cE`68Z` z5W3U2rGKvr6`h=GEs~RFRFrg(z_;moMarL0I$--zh_uMI2^>GPKei&IqK`NdrHqcm zrX32z=T+Mk($?dk+(uE05BG|p*yW9^R6-IWMo4r^-BJv> zBG)HPorSQ1TGt|{qJ*P(x6mLFgA!C{NFt|hiK0{<)G`p&gv3N7eyP*SRZ=d|(p-w_ zfyNplNVL(0WIdyj#JeR=Qers83Kdu@kf_>R0N&ziImYO^_IjYH9N{&(?5Wi@s3Vn zQjDm?Y^U1Arn)6ICAU<%@mndwZox7v(Gel(Fo}qwW(|rt6t3i=TT~=zvNBUO97M8?x9cUD7=xP_@UNdQ>N1JXP@d^P-@ot_!Ao;=h4O_PT1gS zS{q$Ygi%Nj6w!e$AgFTr;8;6_AzXAziVo$Mim;-?E=E8du)bEbSlN)1Z4rf=!;Bsz z@t0+Mr>I3LgU7hSAWFGOQTK`niGUsQ)`~bV-Xt)YRSvWvO1!~rxv$UIbBi!ij})b|1@4IAkWIy{JqO0n=|<(VqLU=BzwSI}hA6vk`$t(7)7L8+<`cdbtf z%S9hBb522(Fj9D*jR86dXM0`)RT?%3X zq}A=Q-Lf9tN)jn+D#cfq6mYc*k*wS)h!`KO0`=su$G>9R71i<%nH;1 zMScZGnxl6q=KYK z)4Zsk7F(esx)&`%9^TlfJ4F? zU{WH{_Buo}qyzF+)>70iBz5Bf*LwO#7{sERAqiY@OKx*A%G%)xMyxgYvfE2fAByeY zVj3J$vZhDlq>#j=j>4clsKbI7V+tO(DX)MRM=@T!go%6nhIzbdeTGF)8GQ&p7Sc5>>N6%|};CdT$Xr zrcO}6y+z@Q8i^GA=b#f_Vnm#wTnI{JJ3Sm(Terbb42y-MV7`8G7e_V}3{C|@%!GWS zO3PN$3ts|M3!lUjpgw;#wA|>+J2F_(g^^ydy-4s=kn4#gB&?}kA=WVjzn(?U7od86 z)JwBU#v!r=j7Qy-<4<)<-|1jR_=EzS7<&a)L|GQ?)zc)4q8i&Ippvz4-H>D~IZ`+> zGZfG9T6Tc0S8GC4=M@6f%tCXgtd|$7usaV()(R z^`i572tgziG;DF3Mxqj;WTR5DGXGqXWbmmL3x-uAVM5h$z};5%}Z`+-&Dr8E6f$c2t|d3HWMc)N<0%H;v(mZZhJ-SPPc>$=>@$- z)+Zz)uIDEtA!39?x1=s;OsdHB89Y~z4btLaI3lN_goAOnkPXJ1^$8^*iJTfz6s7VA zT+44Jm|-RuieD(x+NnyH)3n8uBU(^7rO0sx$l(=?AfJ$0?;`%GOaUs&sbeow)+^#F z*ms(Uz&me|+>3Bt64)d~q;g;?QwEEbFftQYc(K7XBmt@n<_c*jJzol>=L=9hKT(Nq zmu>-8r3$l_0ROE=8nc77-bM8a~fkh(5qsJ(icusp6Xppvy{uOX2&38WQv3P)kqHbINw2$FFvF38I3&x`>+4+wLwn@+%KrPtS=@r z&-@^>C=K3y7LZ9G045lkXL|k^kJs_ZEqShyL96SNiws)&XxZE|*wFlt^}=0&+Hzl? zYMOYm{-lbcl=D!A!DKygJy8;12TCT7JTT%A+x3_`KUwGBX^_ZMeF;gU%EP;i)~ySn zqax21ah^VTDIFvCW!tGp&~|1bQXt)uTj;$Dj4IV+U0?%>bk!_!3o#-hEZqVTDZGb^ zTurE?Y64J7G6W5!K`X&wpfdjak;<~Y%#snWD8hN6;g=MV3Qsi&NwR1#pFdK$ynp** z|A6+<*QJ|$Z0XfNI0tVw$A zFb!(!-7;R{$!txLx1c%_A)sa!GB0%tWxc%kfYlRgwF|{Fjv+m9QXoC+e=ww>3JwfA z@5D+NX+zODHVn#^G>CLYQh3)(QAAPtP(W>K0!y848~?bP#AZ8h9KiO#|Hpw*t#e(X zBXW^bxM=f|Eww2!kf2IMv~jJ9vXBnEPna!ILa53%z~{XG8my-LSF-0e-as3i48WYI1iDIZ)?|?MTava=@$cAD*WndgUjGe zSJGTUBD!u7!(LFqQ@aU?f^dffT90L322EdA5(teUciFOnZT_0A(>}xH=Dhj#hN0?|5-9jc2 zAENb%YNLZaRf{Hx2!jJI>%F7Sh{Q;jqDp5V29vb{l`LdSJs24;ss~1=^`Ryr6c(l% zNJveY)(6!TtVSiBszaHa&&^Y`t@S05x9%*RGmIG4J+>;C45+{)>TH|zn*3+n%(h%EG5e}}Q7sqp?S`SVj z1Zi3%2`{!L=g$g~Ej&a;a>#O6ARKXf-psOpnrvTf;V(XNX0hNCAFhSVryJb*&+p1=N#%? zo^yt%)>};1E8Ux@%z6B?6iVU9XcxLk9@>iscP?6+h@z;x&~iC($)ch~C!9LJ{Lj80 zmYUf<$mz#6JvyJ$q>XPM+pPBgeCYE$JM$+eo%>tfpB-Q3c^ML(kttt6AG1m5Ed8u8Q?hxY{5q7(GL(Zv>_V+ksosk7#YZ zh_)V{4{IL#_XF}7(C_~PhEqNZy6V4c=%-G*&w^(0|6!$_uG;8+E%{3np;NEX@m{MK;*A zz>DG#cVPJ*?#24;T#t3z@!MV8gW<#6K-V+Of$cwLUW}aLCOY5aHdyc{1B)jx0p40a zRL>Xi(<%f0@stn4x0qW-vx69z37M&Om^{)gX9yM(*tYtT4V$lxOO_KZ~B*f$-8SoF#)yG&g^=78#P zZtU7c8Ez;wL6p0xLI>!J1-v>+;FlfDg#O#|q7DA_w2seh=R*B~@CycAwd2P-_)HYN z+>UScaW^{O)O_lI?o(XHWT$3;S>eY|ikXQuV>EfD9fwXb4{V!k$Cc%bYIVTEQe8r4 z$M*eHbki6@ZntK_HC@2%rxgnD)<^|DhEMYmaCVvp8hWfcA1IGgqM4jL2^U4IEak2IJ z%S!c$UmoDrKlGIKPjxwqmc270c7Mo?@IXNbINZgQl(SeDSrsF3Ese;VZAQJTE zaJg{B6bd}q&;ecd;u2A#PObB_)YO+F?FjHLa8EvXNG-zNn%O@4bQ@a*Cn1Ef&vXmF`hhf6m-sZjfkNmw8= zWFDMT$j0uvWfXzgFflLuof}I|(3$kjk8PX+7OpGYJkQez3{CW7e<{Jc)h8f3UqH`w z*>`FVClWlo-UQ)~9hiHTi})tC5_89iO-DOcBc8w=pCF0*FL?WWP`D%MtE z_B}0r@|AlGbL+HV+7)2s3|$UNEAus5lS=OF9j#7F>Xh1a%{!cxm2Ki6_kp}u{2HBg z>_gV5@}m4OV(^s;A=O;PgsVkj_|Rr03@D~>Ke)cr)$te_ueCsSFJ;}tTQJ(d%-Acf z*j1x7%l9fESwuKrWR;kBpFt|u@gpX$x5RoYq)Hp{&)Eu$XuK68PSygs4yxjU)+(D1 zaQ21?*^h!MM%NU+3Wm-EQEa9TihbKrUWtE2&x#hUNvU{B3?v!opZe$sz9tnq^%29Z z#7>!aCAhjo{CzC|IrM#Q6 zFk7a1u;XRcm_Bw*D`UeOD4ko%-(lcfLOgbo1c$p!iRkLLGndnu%gii6dfrP>BWY(X zo6azDo&sey^I*EL>aMFb|9rg~BZ%cKqfXH7>Ok7|MRI5E6pvjh* zX9#DrmcBs0>UrXIdbXfS*?Nnf)-yo*~zP%g)!9SzJm*ciir-a z=^_}6K})-#<9qpej+%PG0?6n9cP)jElv|(vZeeX2KGzcFH~MH(T+^iifq5Q5+H5`& zV2VIXiPahyLTd?-ep`X+i_|BUoXl?;r{9aucN17wtx=H(V|9XzWf1%w`n66X~3eQ zCvka#{|pxYS}r#`^h_$?;DxIBKG^o>N3y4C-Yd7dEPm|(rAj_Q*$_M2SSQrc(hMn1 z(fT)F)@bnvDdk8?I|)imd7ID+Euujrc9Nwaa9$@;MW$Ny*B2RZw90aT z!e9>6#9;& z8eaIeOjw91u1V|icR>(`gHrcNttlnkaD?JceuE@W(x&w_0UMslJJLO}SZM%;{cBCN zgEI809}(ms^QmL4gY7UD0`h?piUes^Kop z(+hTN8=#W9%M693>ojF}>Nuf9UWQPqw_LDvS(und@~rR~kj}E_CHi%g|1DHNT0ooM u0b=#0uXr|wZIB-NRgwpfD8bXyxCNM%4vjiA=5Go%*9+QDpRieH1$=e&25fMeBP z{gGt%zVAJs&w0){dHAPeo__ypJ^e;W!ivYOSe@n4uINR)z#%x}^+i<9`-lmF5A5}$c z&df9Y^l43m@063KF;>>v~VRrtwD#{CfVHK8nrZ`$$PJIqD`r4KcAjqhP0q9 zVT%e|1D&=-$F@7!6Ut9JXNI}^T@|H|$4985)X#$p%n+B?Du;Wcro*X4<|v*M#WQWe zx|*;-f9*aMfBv-0@RtZ-~Y>Ir{UEhpKb_;RGfbj zF{894Y*XJcT&Pz88aUx_#T?Hmrun8zgO0_{C?i0ZUu1~^eB*rOS+b-l%F7yInxtUC z@-zik!=l&qcW$diZp2>yINZM5N4H&MiyS}QG%nov61+WPb;bhRa7pprp`gqAVGj?K z8!pYOicn9TpUXl>UN;P0)Zp;ZxDn;fh#8ZJShQzHz_;6ZNA#Acp#@j zJTMgi2R3t?ANaGMuDHLs%YLNWnmXEz(ycm6C+?YlGFu|oxN!R&X+xo?7cpL)7h zQ(@amNvO-+laQ_clRhmqH?aL0#XY5}o`chj1Dsl^)^Tc|TCLsT{>6x2#ghq6mIF@x zO-74|uH{0X(Wz+wsEd-b;Ug%o<$)Q7yl2EIvo-DM>6z%G%%{=LeJ)oFszs?AW$0_wTNNk5nWIK!&=_Th_%v&7u3r+s46iy$67Quuz`R+aY^LzHIKTP2EDWC^1 znUhBtXDjMEXmjeDxC^2H{#GN;{ZG|$U(j5|9p!-3S<(AM(Xj(zagZHY>A^^B<}VN1 zpN0dJUF=mu9@TK7OxIoaM=B0zO}c z+Es#X>(#+m4CIrB*GZk;=rAI^dJjHo#D-{V6$N|N2-!S45_Z%`%l|Wix<7LIM&uX0 zzg4%q{I$)-2SCi-4%xR~t8Zj)H(Jl)u)*)z*=4FWpYa=0O1>bu&5%;Iwf_+?N$YQJjbUJm~+VX7*ggJ8voO|263RtMS>H+n&<>22liIY>iO+ zJqhVwm{!jBig`1d3!w7u4M}J!_&zyOEs$TgBv|K~-PESQ(~sa!1f^(lOYRjL`Lw! z0>|@X?*k6_ZdXZ^d)9(DW%hm_lO3P*{0F^Yyk63z=YBu`wH|^`2NTp1x3nNmZ9^~~ zKPrY}yu&cLB>`>7w9OVoX!H864{?KKMx-@FY1BA*8bGp^mrUc#EP(V5+g!mvn2o;S z;N{?RFf~+-XrB!qndv=>r5AQ`Y>g& z(CB@oa2x|Awmv;K(&V}{ZdLjsN!cgU-uC+T)w2>-Dd=>AYI1xli_07%w}LeEiB0WFeKS)cEt1@rVe!#nFhI?}DQ_Qg#x z86OenBIyi=P2fT+8t3o;MC(4+{XCNMuc#R#dZ}2@dv<#1LR%<0dpYwG^GE*$Xc|G` diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/msg_GetContestedResourceVoteStateRequest_8789d5d98ad7f00573a87fd0860dbd43fab2e54a98aa44bc88c049e1cf72f5fb.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/msg_GetContestedResourceVoteStateRequest_8789d5d98ad7f00573a87fd0860dbd43fab2e54a98aa44bc88c049e1cf72f5fb.json index 5e0440c74a84826c103f03f720bd00751a973312..044e4ed8fa75276884e36cec81e0df6d3ac09c77 100644 GIT binary patch delta 4242 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 delta 4158 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json index 9b701a67efb91bf9df826c0d07344559bb53d7ab..0483455616f901afd6c1123abf916b011e69d5ad 100644 GIT binary patch literal 162026 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

$5Kf{!V+EL|UDUms+zX!z9}SF$uN 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/msg_GetContestedResourceVoteStateRequest_7a62b33ce71dec56fbbcb0302eac0041cdc16404006d1b30577292c6ce106cdb.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/msg_GetContestedResourceVoteStateRequest_7a62b33ce71dec56fbbcb0302eac0041cdc16404006d1b30577292c6ce106cdb.json index 5bb376c73b292252c306bb5b2c720d14a4ca57c5..5b45486772032fdc15c322a4f84e3ef88c0657a1 100644 GIT binary patch literal 143255 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 B9oPT> literal 140321 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 D@^I}F diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json index 9b701a67efb91bf9df826c0d07344559bb53d7ab..0483455616f901afd6c1123abf916b011e69d5ad 100644 GIT binary patch literal 162026 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

$5Kf{!V+EL|UDUms+zX!z9}SF$uN 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resource_vote_states_with_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json index 9b701a67efb91bf9df826c0d07344559bb53d7ab..0483455616f901afd6c1123abf916b011e69d5ad 100644 GIT binary patch literal 162026 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

$5Kf{!V+EL|UDUms+zX!z9}SF$uN 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_0e43e4a6b936a0ac5616284eafbcb09aa9794d86af9557da8e538eb53b0e47a1.json b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_0e43e4a6b936a0ac5616284eafbcb09aa9794d86af9557da8e538eb53b0e47a1.json new file mode 100644 index 0000000000000000000000000000000000000000..51403e20062ac955f0c434c9259e1789a93c61f1 GIT binary patch literal 82178 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 bKcwm5*f#i$e~0oLKX~x1^^5%VmtX$@ljmtO diff --git a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_bca2e79428ae36d599c37b8322dc3a4731a1b8aa97446a4026f8d1d3d60853e3.json b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_bca2e79428ae36d599c37b8322dc3a4731a1b8aa97446a4026f8d1d3d60853e3.json deleted file mode 100644 index ec0b6df54c8a417f1ef4af4c0019888d5cd9bfbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80459 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_ec6a9ee367cf4f0e6306a31a6533b53686c9e1a275ef3cc276057c008a3b4404.json b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetContestedResourceVotersForIdentityRequest_ec6a9ee367cf4f0e6306a31a6533b53686c9e1a275ef3cc276057c008a3b4404.json deleted file mode 100644 index d885dfa74b0cc0c77e46eb396b54d200b0433009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85649 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resource_voters_for_existing_contestant/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/msg_GetContestedResourcesRequest_25a3f1603510228a22726e0b4c35bce08c84a0cf72b34f6a408982f7babce2c2.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/msg_GetContestedResourcesRequest_25a3f1603510228a22726e0b4c35bce08c84a0cf72b34f6a408982f7babce2c2.json index 280f50bfa0220817b582562f020145ff5937cf73..edbd6eedaf6551f0c3ca3be2860785414e129866 100644 GIT binary patch literal 61784 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_0760ac4854fc8db803bbcbab8709f390bd31511a05e29cd3f170b48ca6b87584/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/msg_GetContestedResourcesRequest_80ba1d11caa6442b39ab0f05e7fd84b9984fd04a4ca40a146aea81c3ea5c39ef.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/msg_GetContestedResourcesRequest_80ba1d11caa6442b39ab0f05e7fd84b9984fd04a4ca40a146aea81c3ea5c39ef.json index d00a043b749dee90ac7a0bcbdee09449680c47eb..36159629d12a8b5d76eaf22153c74229f80d881a 100644 GIT binary patch delta 4099 zcmYjUdvH|M8K2;0FON(T0Tl_v1x3i_-o0n{?j{%tSwy8gLRO*TV1Pvw!GLTvAj3n_ zQmAFBg#9JHAYrROcq~oK%ZhE?nNFvFv>?tnt>S}B|LEXM(acnxv7KUn-#OXPnM^jD zJ$ui0zVG)s`@b7?^1D&pU*9w)V#i|gJq-(P^tQXeW0*$DJnIOW-Bx!Xc^w2fTALdj8u@-i3A zK?}8GY?QXvAl_&r6Zhjv%EQjp4%c~zPw?Yda}f7O6cWoU?3?SNr74WvI~}Oau71{+ zhwQZL!|f3VC6inXZm`fj#r&P9@?&sy2!qr8C^_$<8)58y+K)ikMe<=EIv%k3SU)OD z9Skk^VOu%N4ES(fDST0{kSdN~XmSwEWj zhtRb+g8HyGJPn8M3vqOQ7}t_4uEK{klWnBdSa`V4#k`|oAy6x1#1+K zY_Vnba2sq~TB=Ypga2RShZhJTcTDN${`$5kPB{*0f5x__Y@9hBM*Y4By0(XLVWVQ1 z5lo73J@@#W<4P`6X?FYb+8{18va>9s?`;R6CRc-|vd2lUchKrqAv@I_9+1MG=^Wld zg~1l7z|xHoY}F?eT8cc>IvzqDrlOWqzc&R>1Sw67yO+(HS|t?DdD44cI#IQJ%z)(l&yq%Ad|UY*rLK2@fUZ<}{}q zTjQ~OE1}KLLbC-V7Uqo|#@Wvul-^m0Sqnl4-0H^@x2trgLaCjHv9QKNE^A@`n@Tt8 zE8Zo6-bRVX z!#6tEdNhJW(1$r}$gCcP+`S&0O$yERu@Q(2j<;}SDv`J-f=tN6*&`%q)=J+SB&7Kj z_Tl;C=CA@~IZVw)jxwg$Q-y22j@v%)h)Q1tu%7pwl{bVH??}#B#7DmGsg<7hFC`kEMjlH_<3LSS) zr}(k7M9%ri{doc!42hoI_mr!NcWJ37uj#r~`YDN7giScYj<3@2S^E+PS`pISAFO1t z{5x0VN0KVAcR=KfL?t|zkp)A$2n0@WD5>!NGlcvBDhMU;`QxU&eJzeYS;s>%Q6DBw z@Njj&L-rk+s0%gDN^j!Q-5wt2S8L^8Yb_igSaKcmD6LUli~aa8BBdBrrQ;e6DDjpps~!Kb1Vsc9TnaAn$n4PS<^j(jQX>=>%63 z(gP!Bt9~ehHWFnFDNI}_mXK$!!lB0%ZhBeXM>W{{DL%UN4L-EJrEvYM;*^cFzW2rr zVn|5?{RBGKQQw9qEF87))vY()i}5uR1%u;BmS1qHdlYriL(i)o=EeDaB4ME4?hUN? zz(Q`04;N`oslDu5Hmac{=afU4SLsP%x`~o|fPz_T^dc{GvP7IP*JNSCi*yr`^Q$eQ z!K4uX_eDm&E_K_uem<%{6ONoXV{jvy{bz13$~Lx{x=Bz*+v}`f>+fyb@%1RZ;QePJICRj_U|+dR z9-`#rU3(+}RcozsDNf&P4r?Hp28rIAl%&Q{3JA!?5{G{44aXIQM<-L<2kbP>YAKyY zoPQ@z`8{Od8AqsEum@+L7qHa6awnUNK>=i_CxQMxp$do6Ds4qPofqgD01+Stc&gwCmBBC{1 zQl1nflL%4>Lo-(+Fe})bJb1Z)=1H`k@WE!*JN=H!$m!+1MD#|s+RNFfwI1>sV+6q@ z0Eve1+d_ z<1o0d4CM0_>_W8}V`-a17I}DSvQg}BHhb755rOiNoXK^sf23hzpQ3G?GaZxfw7MQz zI!WXzA6|RWFsfuTMg@9#nKHTK28(nq z3u&J`ZEMVSQAn@18_RsfWo6{KWL6WuM$|^;)5Y|2G>(!t-DV&=@?A zoRrxuR|Q6gy0FIN-gSn6wPRd-Mn5#uS!a^l?KTu zq^BH9{HQ1Ke>XLQ9q|(}o)kl+*#DKO%>A5z+*z}u9j(ZGgj_%V(=G$>>kA8sT~Lj; zrt=&GtoXI+7Afgn)2f61+w3k;C5e&8;-c3}IyA6!@E*&I3)kO8&rl8bJb=MR*Kp^Cn aEBt_xA;Q$g%YzK|dW}vbR9OS(Km8B#4K@$} literal 48261 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 Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_473cf8e4a270ced75e199e5a3e907b4df4cd66b64365d1ac77c45bcaed443a03/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/msg_GetContestedResourcesRequest_5396ff2dd55051d854e18e406fbbfa6b1eff43954af904bce8f123fed7515132.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/msg_GetContestedResourcesRequest_5396ff2dd55051d854e18e406fbbfa6b1eff43954af904bce8f123fed7515132.json index 943ef8323ab7326bede40e839d7c50144673e354..bcf3f21dd933012e0aadc686e080229e0df9c87d 100644 GIT binary patch literal 50626 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 P@q>@PwZ6z--@gA3L(_~q literal 50614 zcmeI)&u$#&5d`p@^%REAJaCt!$n`DvAb9}85EzLLgvg{pQAPqo@1CmpM&w9V#Q9Ca zLl6O!#1+3k-Bs1qJ-f1hd-mOT&wstTefQ?(`uX?Y{g#*gi{tz6^Xk>j_1*2|tGkzP zUgxiWn3iAS2bn)VF@$ll}@bLZa{A}^!c)xgYzSzItFP803b`Q%=m#Y@v z?~WI@?Dxxq_a_hA4~wIA`xg&C*ez1oFOJ&n7Q0Uu$1c|#mIp1?Uz|T&aI*OO{pn)E z$uf&&d>4xyyTjtB)5YBvXEOsoe!S}W>zh~af4;iDdwKWIU#?zWU;ca**7CPMU%t71 ze!uF?_3NvD-2e2K%iHYubJqUx`t_eK|9bWIVdcBK%iC~2t^f7%?fa{DRl&o3SJ$t< z^3$>V^6urdH4A^b$@c5_Z{OaB^6KXO_1))xd2{>v>h|U3yH`2>&Gp~%f0I+ED2qiR?OlN>>$?27@i&C| zCyzvwKpN4m5j`5tz$l1+yzBHKwP5}D{$Me%8F){jH^sAua|%mhIy*W$KFXPAC-d)l zd3HYiX!<5E*8sTNHQKUJ(d70y^1cjc4PcGL)_^mC|9fW2&O)pS`d(iBQC}WDs;&5b zO6SD$6lZ`){?qo4^|8>(F7Eqp;cxoArw}yZDx`v02=hxdv^c)keu8A-%g-M#uFno> zQQXrp*LIaUQ?VrLvnyh=U#peHJ&!AKvAD9@ADul~i;FFfi{Z1yk5mimAX;we6}!o;S0`R=WS8EO z+7?CzgEegltU8x1z2${n(cEQAfqJy>EY#lf&yn|Z63Mz(gmhuBKw%>7Zv<2dglu8d zxYS@1&n;i+BMTyi5e*$OgUCqDSrQ>LZ(Aj<6FjYtM^W&^a+-y7t_qvhPbwneRYfXn z!L#RwGP$B#;s8&|0=ajpOyX~qse^6UGCh=7LrEeUSb!2DZ1JQ$3aQvSR*8yyvI zCN|K)A_-g?RjNa_6sxFLw&uis+gJ@BNjY`a?r6gRJJF#4Xw1;c_8BGP%1kd^A3QW0KC~^4g+#)6U zWj)q)xf`DnuXdX`swb_Z@w`K%$Dp+Drzmtw0+Yn6_D#-df}f(YEfG9POASP8HqI&W z6joO&q$H-hiQ3CxK#qpjmwBF6q$%_YeDLoUG@tnv zp*~y2uJyT(E$i2Z3&Yk)SD-3&5mltmar!MtHMwrJ@NYW z^MhvEWQDb!k3EGXO7W+-sJ^UtMP`iQ>fxCH8SGdvVrV(v4$t~{%lMj~J-@TQQ! zh+lR7Oe~W1Oq|$A%~Min%IT^YRkz43tw-Uai_y|!&eX-`E5zk0S{hf<=&7+zk4OYm zvle;e@aUYkWI~Xp-&=6VY1UYM^A=(dtD{(Di{>uXRNINvMOOuC!v_}lc-32y2$pRH zDY-QL)m?93Mg6*2ghVOBZb=G~_)MZyVnU+a8x^W|PGmj2?pGr!Vvyv~^M$*XDiT*z zMX?QO+b#6aryX|m4jJ3h!42E2r>38Bkaz~L8_brXsyxCVm1;bVxC>BdYjxVyb=vrq zyYvf5xmVzv(DhPBU5}Gzw*)8^l^96nK}19wI35&R*;3*(s?d#B1Y1iy{Y%`SS#Q{) zBR9@P9akg^THKV=Qk4iSqH04cB6X*9$8g94bAHBJy(I-MTiUy2eHlT8bc>24A!)$| zUTFczx-EdD75YRc1vU)Q6)A98Uu;t#B=|^I8d-sgNJzR_k1eClCiD$ak>5Vi;+BJe zQ(;FHLIKx;mrwB&%BqS8NwzeL+=48(;-u)t6)nBhLrAqJ71S%z^2DGD*HlOAqv|cO zO-W<~MhG`5RBz$ZsNzw`d)D)oz$Ll#3Ms=nt&BQ@!S#%{A5r`pxYI@)t|evFMuoIt z$kC_*6!v=MF6)~J(I<^wr-BAU#9?`^S9Otzm62nJ;cFYRNXX>zp&*fzR!Mf28Il!Q zQiH3}iIU4N8q1srsbbtBxfkK7_SegGCWUy%R@Eyciy13nWKLY+9fDjxI3*+jsyfLP zIy6dw^n3xT@h2*>;?OO?YCNr0gvjDgb<@}rTO)iXc~c5GUn`=hiuUShl0{V!A_%Am zL$t^9q!dEqPdqdOi0V2}(fX9k1SwdtfIsIe6eoU?MD-weHlzq!vY35aZ;7^vi!636 zC7t!$HFwPdO@JJuzzPu~ev?N~6^JyXQY_~;g(#L<6?W%9N)U~ZNPBfu(dxzuiZg6q_ISX>Ll#f=Nm!?l! zl3wxcId1*q&ot;#PmD;2k=X}CjU{mia(yB=OV3xRdq{ya1(a^1BE$Ul9QV8b&-U_v z`(FwIk+59nbWaO$>x-zJR9LPm{>Pu=sI!E%^uZf@gzh@U8Lx8Meia5$u4oWET$_)?vzNcP!Wa^^(begB+3KG%!mZ0xzF&* z2+^n_c-+$UsK&yDYSam;f|p9CtQ(BPpTz}s14=$Lk`CK3wV=K|2(Nb0@{SC)G=z~} zF@2G@&w^Z^NJ2te=oQjF)JA%~0M+w{zpc;u+k^182jMRv(5C>=UTv0oy^g73GFz%r zJJ(ceW9%}7Kw63_1-66q{GU)Bdw>!)EsinK+PkZ4PYqfUoy zt0{|BRu%c8sRQeDMoFS7s>7gGyG^$wcPgT3ilE$k3qI?0Y$kYRapGBDYqnSlUtxcu zmN>U!?V5&=0Zb9bllVwp< zO&sT8^^;zKUfL_DNsYusB#mmrJ5+IOarpTb+0w~Mq}VG&S3O^W!r?F>jl|d2?7W2% zNfybSrd&z9M3b{6csZi%pK5mds%RcOoV#ci6x zg{r8oPQ7V#0dcvWAL57w97Wn|D2uR6>ytHp+|ctQ3~FZ^fSTxFH=e4GL|z?AT_{|| zO5d}Z5N?gHuO@v5Lt1}R7Koa1=%c#G`bbx&bbO-e6_hxJ)U1P*lt!`27OdGJDwBs| zCF>hc9{p4#QHV^rg;#)TRLCI3V~bPHNfwKmuBf)@{NRa?uGOj*X@sFgCoI=pRd^Uu zg_K*QuKRuqWu5b79BN2}Qr__sl;Yk*bZaxUw!t(cYlAd=iM_OTf-1!m)}+nN=Sz`x zONvy1#X7BA^$Jw%?B0@l=r$2*(G3Hnx=2V;ccm{t(H0c#?)Yf=Uj+aD`@>2}XWHDI zWxf&43(>9X2SlQf!8LQSVdg>m zZD4U=M7X*l2gd5K4ibf9Jk451;utdN7M-&mGT8`}Ubq$(nzfFUQx>`9(S9KftL>=2 z+PIEKhsq684{PVx9c}1TO)f?66q!}vvsa^1;ov~jE7IRY2wR3zZ;35RnNKyUx~X0f zpA*|26=~R}D8)@j7VC?CD2fJw7JaZ^3p9SROi{Ej4Mzh7opD#B%+nW`*0(JNu6I% zEu_>bf=|9Eg{-G5u;0z`kd4O&v=d3nt+mLNu9$p-wA5SD?}+YTD_k@Sl3%h&NK&Ll zNw{lB_-0HX(kxnc!g%XQnpd+3ap=jFy4<4cM^v1+D6lE(kTyI=bXz(!sxX3cT5l1N z%%rcMB{qmETLh?vBq`WpGC&DCra_T3&1}Ki=`N8(*9U*edIXl=Vcg2}F4`U@KwBEs z26xiLlL%=q=L=BH!eJ~R6PDJ1Eok%1`64Lxd^@tj-RIq-_xVr>xX;eab zLLzLV5SrRs<~nR;{f73YTukHdfAzDWfB%mecKM8G-+$w0g!UZr?We Ug@1GLg&%zKSM!Vf@#BYo0omk=w*UYD diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_948b5a301af5fc73db7fed418a4fe90f64952b4ddd6b03a7f21d029dc110af50/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/msg_GetContestedResourcesRequest_f06ea270a508a9d9c386b8da170f67620695a23f63dc7376bd4a509e93335ce9.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/msg_GetContestedResourcesRequest_f06ea270a508a9d9c386b8da170f67620695a23f63dc7376bd4a509e93335ce9.json index f985f1446f71db44ef2fb711065cdc8e14e426d8..ae1056d024f134999eb8271ecaa2f246adf13a47 100644 GIT binary patch literal 58421 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 BLpcBd literal 56684 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_9f57b982b3e3b0286093d8b48ab27b87b22f67a172579913f2fec7a6b5ea31b7/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/msg_GetContestedResourcesRequest_c8608f7aed7bbe4ced03c9c23f1ce28a227def58e23c39e0384e0cc02fe6360b.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/msg_GetContestedResourcesRequest_c8608f7aed7bbe4ced03c9c23f1ce28a227def58e23c39e0384e0cc02fe6360b.json index e0c842bd5803c98e9992135339836c90656e4fc9..10d40a9b145c21e22929dcea547a8e39c4989117 100644 GIT binary patch literal 73373 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 zcmc&&dvH|c6`$|k&2A8o$Sc$lSX82fy?gKO-DDF&AVA8DI@Xmqiag9FLBJMdr#jPG zwWiqGQ5sltBqu~PQCq4N>)P#P+fmE<0I~Ae&VY)BvQulFPJN`U^?^F}cfOkhs5)cE z>GYrE-n-xZzVrC~&N;t(_g!P3eDCy3!5CE?s;UabYC|slVayCVZmd<+l%8Kfx0}~Z zs|i)Pp_u+#<%Fu@vd+7}U+;xF-+sRB9v}&C>1UtD`HVH z?&DvEOq(8_5TT`GZSGxU2Dn&-CmY8*_&Gr7Qk#OiU7k>9IuwlhsIuJF@A)gRN*?S8 zhbXl#!1H>H5I->s%djo|_B@9Y(_9KncDP}oSwg!jEXv>D<7shaQGLCBmzyfhD(+Zp zhH0?WPfnvlZ-s15PBeTJe9NLoSB1FYecXIMVe!%N*t+*nl;=C9#mQ2mGJD0?n*(A) zmuygx>XQBlu<>rxJd z=G&C`C_tYq3F%G0Td!;`t1|<%^b(u;&h=5(Pc0oE9uqbra;QV?)fS~QHl;2KP}4Mr zj?c7tdL`c3({FPzWcujFi53-?l~6~6MGXrBd}I-<5~JaaXZ=6QanRs}hO3it!E}d% zm8PGY&qL_?7U62oJ@Bd{5b>OlqkdQyqGOgrKR+`@2RihAl&XihdzB9kSY#izaheB< zEwwhkJlBj#o_T7wa&h6EyxuXZIkD8Rcv}VHnJ`q8Hq!SXADL@LshEffSnT19gpl?CojwUEw`_K{E0^DS zN=3An^x)_aT~h7v=z4@y`~Bj_3Lu4(w~ZI@xwNT4TTAbJ!#;tq=V35FTh0F}R~GDf zsx(4ROa)yo@(X-NPAH+&xtcuLRQ;eIK?-qjw({{Kbx6am#!d2s?EWwv8xT8vWHq`T zo^Zog&%-H0zhv)O{Ly6GG|4X+00Kxz zIP3JEujI-S?jeLBE=)7Ky7n5YhgtRvs1D~g8*}=!AVA?!PmZQSb}2C zA5$IKLTc%mlz+v_7WVfm3U9_w$TZ-Ty}M(dpPHt4Q7?PbaHylk&K9#F#p#@?<#b-T zxkAcVsW@3~R_8JmszM2N#h5kO;5IlV(QYb&_8*;t_iMZ0>FoZP9N;ex9ieo}Zh zxI?X`QXVgofBVEF>*3kIY+JS`kv9&c_bpotfsz=4wdy(b83O{JQwyFQA)fJ zqts2i@m`$E{3^=D!!S1gyJ{XBuPiRUu3}vu8oMd@=6W6+XSiGQ#-7f5t2ptHie-ao z_=EFXxqZ2ccdf$f>4U0;%O;`f24973O0{wEVk9Mzbl8c3Il-u(Gvkffly5vKA=KPx zaeLB;QQ6}l!S%pU;Q@;iFCa{rqH0z8k_s(Rox1->$r~CgL*=xq+)UEo&1)sbG0xlv z78UOc%i&Q<-w-+VfKNet30$ogw1gY#nq|1!?Jqh!3`kjem(0aTkYI`q{?#1`XEt@y z*=QQWZYHWn+?=WC?ZYlNT&|wg2&pKm`7;%NcV^*rG_>t2Lq^z{J11e$a(o#0YT=_Yf{x1^IRf@6(N^{~_R6B{km@-R= zp_{~;bkGpcochwmI-N&V=OKtEFP8qb2#59|BHARF}Tfs@RwC*;|O_0?UUPRf+ z8fn;FE5QXduNIsqWp{SU%{K0P40IIQY8HwqZIswh#V9r{oOZDbOtrBm{5b&Vru*ff z4|VMuHl{_P_pZ$K1=TZ3MdqzfU-`)M!P- z;z9+?3)@tcgzP!|UM;l+oph#g4W+)RljhA(WpChdaUu%D$-Mtk5dL4opmidu=$$B1 zCyLNlPf>D*+QKLE9^`BtPDD574+2lp5GY*(sx=xh4dvk)-}!&YlFTg)*VM8T1%7s2 zi3%=lvur=w*9zlKMYkmHklBVaKQmTKpZVM+n}n-Z=Ype*ZGLM1$P#Eht@Pm4Els^= zi7kE6YcVG}dAhh2r%6*AYEFf_6$t|4od3N_pV}dl+*e|BY1HR{`VY`qbAW2!47FN1 zSF_lS-ax{THh~*j8JHsE4tDF&`vf!ODW~EX3Hm59)PSU^o!VQ_mXq9mJ$jv!X%o<& zVCbEcJYZ|CP_aG6smD~O)YUmCG?tjX1zhscz-jhZYDpe*j$jwinUb$3@!vsBTJ^a* ze<@ZCZ&}63ZyC$<9MwO|=u|Wvb0-9X$89GMB1>EOY)e>IB4fIrj$JyN(@WJg6ij0( zs6(VMW;)nw4|)a~3C6q=eFViD4MPfajQeZ@0WG3{CQ;Uwx1toGn3Sl%kLOJ{a`UE} zj~E&_N9(kP2=GOs!v^L?M4a)3AxI*r!%|HLYg})Z9@0?}nm0+$XAC*vc;o!dbr|f| zhcQUatw&#(H`?L76=no##LsQ-V%4U_*dEvsnTFzg#?W9q`F>20SVRw>31Ki(+v1}` zh7HV=3rFd!4U%+r2qE}yMOeCabX@7jFh`R0RkaHC5DmxeL_ z%zz@>e3qynKb<~0OjF-Nd%$^3X;+8-7jFBDexbwBio_eruiEU;wKKd4 zojd*oR3w zs)H`FP)AeiED^w9LQCn{y#0JL#6PmlrF z5?YZ)o_J#&>75g*_>&sswr7b}WFt3vr?0yY_80+tr$_- z9|9FGDTrdwWLn#DpdweCZU)g^e96w z-UJ@hc+rh7g7V*>=Xwop`xNVZG}X1~rHPTw10L_{g(&wP^4=W>FJnhv?TCR!%MBV;`mHg(B(>aqbT4$csqi<&V^vomcuS}l;V>@BZjfEg~(7N z&VIUo-nCrRuOr8WE^K!3H7N)Co=JL6(Xl!NPx$Ve%` zo@ex|qRTFcX;`7KxKzCe-$F_q>e~;A1+0c=djUA-Ak1hEKtM@KeZC03Kn;7dn0qcT GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_b7df460e812b958de6e703d8ea325df9aab3448d0409ece3f0baf1d26629e44f/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/msg_GetContestedResourcesRequest_7dd3b1061a019dac5fa1f385b8bd5387b9cca48a3062a4db8bf0341a839f2bae.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/msg_GetContestedResourcesRequest_7dd3b1061a019dac5fa1f385b8bd5387b9cca48a3062a4db8bf0341a839f2bae.json index b35f7d3b414c910f654e8f3a88b8b0165974815b..541a5eef0b1947ee16a4cdae8e0a34df2dc9e461 100644 GIT binary patch literal 56603 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 literal 56618 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 P@`KO*Xnv9Z{Pgi(=2h); diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resources_fields_ccb199c48ee58a8bb98742b964cba7bda3b4469b740201d2628f15f926f39347/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resources_limit/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resources_limit/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_3559237b68be75d94ba88b7f926133635b1b3857f232307ebd29de8a64932ccf.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_3559237b68be75d94ba88b7f926133635b1b3857f232307ebd29de8a64932ccf.json new file mode 100644 index 0000000000000000000000000000000000000000..2d14e4e7e7d683cae471aae9441ec19023efe8bb GIT binary patch literal 66294 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 buRb&%PTS%>^Uo_j^MiYTwSJR7zWwkIlouV- literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_37c394b62a91dfe665432198561649a7d9108f9b96fc074e1da61f0fa19d3b5b.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_37c394b62a91dfe665432198561649a7d9108f9b96fc074e1da61f0fa19d3b5b.json index 2013d512cc62bb5362718757a44095e737cec15f..e42104fdc550cc8a26b7005b682521bfa8aa0f35 100644 GIT binary patch literal 73372 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 RzVeID{%Zdr|N7zA{{i{*Tvh-8 literal 67888 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 I$9F&f2jgZ=3IG5A diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_38dcee95631eea6c56b08ca2d0b222cd7ff997de97488542625315fd760149be.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_38dcee95631eea6c56b08ca2d0b222cd7ff997de97488542625315fd760149be.json deleted file mode 100644 index 7b4693009088c0cb0c3cfb4025630e9abe5aedc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60615 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_51c71e845c3f579ad3ced0e35efed11f384144320c099f54b2530f0be42f8664.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_51c71e845c3f579ad3ced0e35efed11f384144320c099f54b2530f0be42f8664.json index 60a9838ad9dc27b347c31f93f063c99f02b7f0a8..17757db63da802093b7ca7b60a1b6996428b5fdb 100644 GIT binary patch literal 65696 zcmeI)-ELi1as=R9`zZun>w<@*EOGAUK1d#5U{;p&uiG;df8fUR&f=B%AA7 zi3Z3Ffg_6)*H3p9^NZ8n zvdiPD!`G*?!!76M$Aix=?zUeYjyj!xfA@paA(ivPQK!>k_vPW( zarpD|%fp6?V;0Bwo*#Cct`0|C9`1hrbZ6j)PggyD{r1(zpRR8{y!h~6KVQGNdHK_I zSj(UO^zz4>$G59~ym@{7pSM5#`Q^Lp_?N8x^Udpje)(_LZ|+vU|M2o%xZl?Q^775c z>-V3j;7$*Z9-R)fKYDaXEI&FsApGdjF`xYKbl|&dFK>1A!x#Bo-@N`Jn!D^rv@bur z*h0<1zrIblHy_`;xlR4m+mAON@`txP^;)i!1ueW%9%YT3S?ziv$>APPa|LcD|{?lJhQCT!}alXASpPT~4>Fku>`}Na& zonNPZpGB8Xo<8ro&o>>nUgqb2wCZ+kWIwL?{z)J$$o=iKeK&E!-8l)f;Wo^(rqZy# zzYC&goj-Z{w6A=fGQ7)n9CG~c<&&$#wWT}Gy?VO+Nlx9OEEb8hcLk=b>+-Y4-w^hn z+!Il%AhGnn6X6Vug7~MqF7Hwc*7v4UECx0M?=AGExS=uFEG%10PtW$So<7?U%YV-{ z^zub8+)$mkvC)==iYB-3k@wqx)&OQCmWb}XY6JgEX3EY%tV!=yUj0$Oz51lK;`=$B z8_!#ug=3TRR~2)L)&FjUO~3aPf+k#rR4@l&eyxT+m*VMkM6&SZ=l2)a|2U*YaZATu z+g0jL#UES|PycG>yH_0UxnGHg#k;2N75`z&{bKlhaVjfn{atnri$^Y%f0TZKTXM@Y z+_G7b1s3a)TdLZmBU=h@wqW`powkf}>RqjjPaWqAE{^JIRHw}?X-hy32-91X`bdk< zPZlQ#sVD_rA!mRbqUX;qK3LjS1>(b3L`cGN zg(uBu7pfFpQtl8=Jp$``!EJ`TA*ygKa_ae6FILkn=mTB9y&#dnxGi?k@K5E*2|W(vPYroa(#Yub3~5ie%cRv?97* zS(^?fCZNH0y_7@a5B`$Eh^j-HBvM0@mb53L+~o>Qe_=pXx#kKgx~v!5EQx|`8N}(g zz9El<4M|dn0!dLlKP-qmIx160TlJ+n=5;=zTHwMGNx@Pg_#nAsJ73-5PAfut1g228 zNl0P^fs_<(ix(<7a+QkftR;y z%8a^ip)AlAdPPJ?SBPTA`80dXFD?t%Uv@~rF7S3sUf4BgedrtNny-<;I5D`31mT(wiCY*NRO8PWj5Aobh%I#S zHn~~ir1N+Jg@livEjnSjz$PS0VH5>cYon5>dk{g4Yemen++YHf5JxPK=UW(x`Sio} zAc)eW#dT3p@+e+X^5B%_x7^ZtA@S?_QD4%acP^0Y6-V{itRQ19R1Q6#8g%H8iM@;` zYuQpd5|wnTU00MyMl1oA;u-N%)S#Wx7S^-q)kl zyNfyzHFu3a)*7{lot36L&ULJ5;GA;^}-6PmQ3QnMnBBWw8-SBvvW75`qK_CGyrojABaG0N_5$I3LBJiTGz-M4QQ;F`w*)IP%&|ps zskAa2l8xv5&A5zr)qK`tCn}EuSEp8;H1MP0!mEN$rArpo31ZtVxrH7IP*km1E!$wF zbi_qfy6HR8-PX*3`wq1Obds9e#`t`}R<{yT&lm0%Jg17)klfjNi&S4rPiBk)8#<&k zY9NGd)>B9+2Z^U#Cu?z!AwP;LTe^!%72ky@uxM-Cl9aoJ**l6Nl(4j`SnS2!vM?Zt z$SV&SJF6u*zrx5CnLs*D2oXI$z={I*EF|}GG3c0vtLvTd#HKcq^^8~;q4d)$72%lY zf**?I()pc0L|5fbg6a9vSkoUVo{CoD--RSB_X?fNG3#D|MbRxGLK0~f(pdLW6=!Qa z`rgYh1QJQGk~wOJSFY%mkSG@2EekHK>YaAlaxuNQ+CWGb40b-AK^dj6GM+GtAic^#6yZFf@8tYj|YiF(i~z?!)$q~EvJi76{Kp^ldTN*JlMwiii#7v#L)ahfWFXk|ku^I7zK0jlRGD(ZKc zi$u2?Pu7#6ar~)nY7Mb9!Y332BJ$*1ffZ3ysYsKxWKmRg_}5P^5|Yej)G3OOw9$fz zh8#Sp5EdZqmUuo^v~HFAg5+oke+*~RM}%aszp?g$(<}KS>XF2G^rM)oR8|QsKgtacwRI@iJ2WCZfb$`vu!}mU+V&x}_^Nc#ZLam6J#|Vu_Pt2TD>GB@T(`z^sFc$|H{n8Wm|H@d!%0 z;Ydi`qFJcn42269EmG{oG;$>C`J%SPWW~Z185hOO&?z->QDMKqN0vIkWabe|w5CaA zy9u5I*4`&qEI_2^*A|e1y0mV=rr*RPKdj%nsBXy^CeuY40j(blQdGkgsgydvNC#=t z6dh)9b)wack0(^ujYm=l1tW|3f^D@Ds=tFipM9E0qLSR3h(9hZ zscT;FT`y%@plH1eY|WP-5(*l&xJ@IWhlLud{Ny_ zF_q`iGpssugvaHRiWVYh@j^ec^HmR9^O{%PPPF2)H7~nmAu#os1qCj=S&^b3xTuJ9 zf)Z1uu-g~ta7mNe$HU^!{&9l`oDcs5#Dg{-v~fh>`1RktHq4);XVv`aIY>H1r(AiW zY1_*1AaB`qOFFxx&@0k>@lmMbpG;`pv$<#6hBjPD6+D*omh0ZAYX(5C!OuQaZgH(r>VWdlRV|6rzQB(8HOPy+5 zp(4Q{Y9vC=PzD39jM+O}Vp-jiaYCfhz>>afsjf&`lEOIL8fAh>)>yNZq6W4!s?jaw z0@d3@Xp3~T1W($a#ipW^52;krq*{Jh{15eZ(*xZPbRQ8oe*K`0BO2z)xH;~2?kR?P4tcy?yUEd*&M0b0Lh0a=FvJwI0{(K>|ZVNkEYzsAf& zY*}+u`iw(Qg7{Vpr<}(?xuW1~4+S8K~vtONG+h)l1&X=(OV5$;*|TyrRth~ z<8&uoNx>`Bb<0SMn#@7l*;cttpRk%D`SSg&H@r zWbtj)#*Y#z#f1NM1p!6p7gbc9zS&!datn2qOdz7_;^XhSf9qOHRK-^MQMYWlkT2CO zvuoa+QhF3svJf9=-D#g6qm0Nc11lw%cU-Jc+T;d@*3Z|N5%P>RIRUZLR z>MbahF20kH^VNS^fFj@>EAp#RChk8~%d}J~NPP6G<|+5I17$EFp-xJoz}v)ABZ5`0 zh=Apm!TUTN?atEuM;5##SqLLttQ}#&e{jNYNWuk~TMj>+Jvn|f_T|@ClT4);PZ#<1 zEWb|q)$jB5+0~P)r}^#j$yI+czPyM4p7-9Xth_IP5mIr8GNlc5eO}Urx?V@wl(5!U zt`NsdRBaHH$bvG1tt2uSA-!qg?{tU{H!6KACe}^Z#dq~3gz*a>v-~u0x+G9tW zONy5qX*1Poc)DNjf|usl_XGst_IFy3WnKnT=9A{R{V$WHFLcP3U0PBgO`O!OTqg?x zc37^8FhHH(-#esvwKeruo7matR^N{v)?RjYda~HHkkX+7s1>P_>IDlWTZWb?q>uya zW7uR53xjjAmXP+Wr54+EC=02Q#*@cZd2$`BaV>u1a&J^(KVv;@>6Af^I2`D2uqASm z39H>eMVmR1M2nBPr6Z*zST*GZ(o-F(_Eew1+r9j4r?o37anX`=nH?o*0nJ)Ec;ysB zkVLXLHhb>}De`7mKfURvIQ`7#EJx=8hVJJsTed^-Z?C z!8Se$`rmyjRG5O7P}ubm3Q@Rv%Pdr%-u|tv>#Pt3dtE7F4UDQiQK7*NUgjt1WNk%) zC@B{l4~~+2encDAMCYX-RZc*KXjd$-jPt>;Le`#4gjNXBgNuLgq(W1E(^_PU1rxGF zJju5yFKqcg?smWb_ZCk12l?C8g_pczd=7PnCBziadf&BxFhCoa7K(Lx>=+T%#qyM|l$;c*CEx8$A z+FTeephQ)P5pf^q+;eYa+5Pi(CnwK-y8ZC+?fbiDe>nL$ANvny_wV!R_4~U|A8uZM zdiC~A{`t?#k}f;HI6J-na5%f%e7Ju3@Zsh4!~4UFtIdbA^Ua4BoBikKn`P%0hlgdC z+f|$QhqH~9^YiV&=NAv#uQx{>&YwU0;;;$jd~?*{u-SdNId;3|dVA1j{mT~*1}--L zetx;xaIuYI>)*@Gj>GllsLPG*mscwS-~Vdr*_-#TKmTxh_vzKA|Nrs!)!oexw?Qrc z`oqoJyJz>S-rl{r{lEL){&@2tJN}rp|9$u7e{TMA`|e@o$4@sOg8j1or<-@5Z$Ey) zf(JgFoE$c=pPXz0%dgHh89q7L#*<$jHh6dK;_U6;8#nmkQ z>-)HS_xats`_Ny%|9tl;|9Fq)v-cm~+2J^e@aIEV77ksUFR#nfLsD@#JLK=azsmdkIrMWD zU7lXO?7A;EZMRR%|kK#x@ zI@F^_-5EJb#(%YS`4C!i{rLXmV&rDzdvU!XUOk-Cw8W>Y)2p-7oOyMz{>;a#7t61f zH~Bb|z{8>57KM@~)>qH_F-fZfGZdRi&XWAEktsSGvc~Cqdi7WRc>OEen%^(sTyS3e zOd=Bhvi;Zk*l^_#ssD%RZ}_#-6g1#6q=eZJ^IJ8vIlgAU$Yj%(-#=blzd58uaSz8@ z+hyts#TKmJn24tTUaf5GJkG?;;?nB;^y<-C+-!NA48K|YXk~2Hw-`hG!u1W9S7F?) z4+JTZ`Spo6FWJ&^jFlAMyp^z#qR#o}a(+@2ugIkVv{q-krG?-+4BRL znCO-$z>}gt>YXYR|666MU^})fmlA6z2}B)Bq67$Ayl{_PYHmGO@rrb^3{3N-aYb}^ z6rGm#C?!KY%~z`xI~^fj>{P%*TB+6*J1W>@iDZ0XAbT~g?KA<3_$TmrZiIV8jG{*6 zumkAihfqs}3Nc#Ig7Qiv5zNv%RwRm1)TB8)XPQ_n zpJr9IG^@0pAX`v|iq=7Qut*@*l$Jj%e! zNz$cWr8;Cwa~1aL7R50`7fv9d7S(tIL2(;Y=}#R^WlK3sl^a=*^BZ{J(=DziWTM!K zOO^;p-% zZhT8Ttv0JyPg+OgzC)l#ptSF&D0E94lfcXNUCL>MU%av{Av{q_1w?B$$|?RdvA(6d zq-I;=Dhv7~XJDtXr_8B30tdAWSCU?TD7V7|d4*Y`2}-#^(($AhJqvSM=aZ1eND3*7 zQ(QGM?N9p-5iI&3s@21z4?DI{CB`d?Vn<&?VXQy+jZDQyup5b0h3_uPRTv_2-43Ep zNFt=@Qge&KRV@`B7K>P+*he)fi0N*^_9B=hhr{z_p4*Bvg_^*Nf489ctX2g2Y#F=e zV;@`Q*9QyBt%I(KD%FKlsiwY!A-V}wXdX$!OTZRZ0BTE)SDk2)FSY*9!Nh~6^%@sDL{3mYolsqP)kN+1!UC^XwUR)vY)eRqrQuI^ zy^$;G*Nq||N*Q)bLXf~$5Tz3162)GxkiBal^XYZH8eS2CM30^?*tJvZsxY0y%Yk{YKi5fKO9b0td#<{5D zibO$+8**Bz0)a(TZfHfM?iB6_4ryS{&seKgQsAQxej zyr*mIN}YWuO?JIq(B-1Qny}_U>@&rU;THsxBuDyLXZ>* z%2iI+v;a3>MD3)4a#`_jevhNh64d6CX_*%$^yJjLlzg|0*R*gADGGW1muk%>6Wsw(1(T=``U;5Ogys+=^`gld~?fAYmx=kijQI|x`W0$Ok zetbO%5KOk1A1}hki}1HH&|83TuQE%$UdL1snLSmhoolHzQY6+r ze0DM9g-{rZVO?7iMb1R-ET7XV*D#-Gv1Fs-oS6+M}@-I)1qk;yYkqC-N@ z$0!J8jk>*f#}I;(WTLjjhEAfoWncz-xyQ8&VEGhop+~(+ZpEv*l$S7MY@u|uE;6iQ zEZw37r8OI#P(w_5cTfchUl1i%UB839G?v5!-uFBCs8=DpA|4Z1R`V@PTTJW7ONss0 zd!NflOAoPA841H_Fy50ToDgEd5EraVY^O(yZhGQU$l58ec6LZpvno+^J+|*|iQ0&j zu9rrc!%36t(hgZpGZIpb!1EJGBAun@%lf3$`e{&*B5e`HCE60;sMBHFYRDp$Wkp^z zbzq&YSrV_B)ge&RYSS%=or-9gA}ID+!Mk3^W=gLtjz9CYW{aipHSJI2Gv&G2zz(?M z1~dp`@n+f~4iHj9vPebK{<3Sj5~GLae}G6?NytMSjCJwKCCIdWku376f#W=^dQuap zr8PlKY6LDMsaHFmP(`st;a4lNrIVFVu_lC9Jzo=r!(m(+fzQ|Mx`hHs6p5XtTnW5D zld{Em?1pNh@h&sNd}2E-h}f<`P*!ukB&tzhZo5UM+(t3oFP?63!ldL=;nU*A_#ZfI zM7V_fDva|SBR2|G2rptd@MTKGisWatBCUDdB32Sb^?~YlND6J4Ufhl;SSX7s>C~7; z3lNFx`I+ho1)M|LXef%HOzRUhe%H|RLk#L=I})|Pv7_`_8q*{kflys&x@tlnSS=Z* zK>AdLGs5Ik6BUFDX5W&a+}UiKJngKB59F^7+Q3Ka@AFdhc1nBqq^?H z7K%Di$T(D&C`)A)Y=Zwkf<%C(P5F7*3P2FpsRQlUC);y?Uod&CKl_o zbX60`*j2qH_P}i<)S?>#NOcjHr0xn|5`|lUfvCo<2q}sZLoPUpcO|(D;c>};4sg*8 z;Sw*FERCoEHKE)%oTRT?;=kqx)o-U`!?$UA>|tQ&glfj=5_+_miUQDLLRsfM(u(8a z?SGcxn2lpLwi(#IKXT)kjco?D@1Iuu>9!?3D{UyAlk;7lJDN->J^%Q~{agPZz%7OH zeovytZAdQ^flm-DPja7?0k{vHgts-3JC_8~bYUR%ik|S$;v6n1YRG|4ZfaexPe)@# z=IYf11&%J&L~?a}}E{iIKV%8E?qh zMH(wWjKq>lV+(6wnh^<ffr$rfSM&Mm0qwGt3fc8DZ3k;lbE6(QjWfm|vUIBmvCU-Q+3R3A~ypI>Lf zTTE1~sAI7r)7|QrSVrP}WOZY|l-nmSLbF&?JyMf`r_BWw7BPoy~2}j3Fumb`b;Ld zRnT)^(=Ccc;1eZT5f{RD3qF>~7J?%TB$D(ZEK#>+69q|V5*zGUmw-0UuRU`h|4-Vv(14 z)%D>ad6mG`D;)Dmb!Et|-a6m%R1gklr`yM;U%$Ve%wYzM!$tnQ$e%<0^mE>yU7ucG z<*&=r>;7iEy@Ge{b`~!OUiRp&T7cgZK3pnwV=?b)175YbGzv0qy0h}R@+hkv~it{ z4)uKWt@f|8!|9GrHMpOjkiQX}R9L5>?4oPE5+~&-E)9GP)kL9Bu;P*kUbB><6f4aw zt>0lHB7{-!{F|aAsav8@M$sV9q8HM(htLo=bPG#QOQ~HQ#~*Em$x>g^8JgG#B&7?V zPpn>vCX|5)$2JGm7s8ilG~T#_PfmIS-H6q0NI!YEpI zf_SA#Txt{n4mG({7c07cc*TJW0~@l=flJiH+rpt<1reOnYDGx0fX?X2sgexH77b+0u%xS7 zT#Psn{5rdcIJ@FiU(@qzqd+Tl4C}Xut5-NljC9Qh9+yhs=|qJgG_^OYI&5YAj`pTl zEaUIL^t+*d{6A(m~e=KW7^-`zg_%adR7WB=m(?)&`o`rYk^_pe@m zc=`5C{`zm*k}kWrJU_ep;dFkr`{DY<{SPm$@4r7if42MK{9^aR^WFZ7i`}w|%hUa` ztNp6o_owsSEf*L2gD)=cw_op$I$eBw|BKTum5bd`r_*lt)$Z8+n(O^RyY(-g-(PUK z`}>Ql-GK>~@^4cSl|A?tbxXGVtA}tDe4j_xj@xH@6>Ne)!KHZ(iQM`r#(5 zKtl(m1oee;j6{^jQT`;|X^c=bNqZ|i@4_5H`2 zpFUH;y&j%CIqhhF@?@7-es#V>_{o!fKKbQo$9LCW-RbJPFY>#&ee*>$_t}qVUwwGF zg_?!``Yz$#e*FIXyVPI5`*`~ye|g8|(|7OR+`NDJ>ZjK^`|a(&<#!+6f4sTd@Z zXVKN!vlm_W`KJBWtNi}=R^6?Q>c=(To(0ij+<%?6pAMXGe@?<|xDE5XsWj|w?}O-B z7iZ6&^()_}3h%QWhwT4(b#|S&wsgn2*Uz@U$*EhE#UhdRuE3OaU4Gv98^Zj}0}-VN z5=;MiAe@0w5dU=7)qQHg`oVOH#lU9Zy@lQsH#7#Dg=LHB+4&6X+4Bvt{PTQ6FW&^i z4b=lTHrldK(d70Sd4CLO4d95x648TKZQy^&Oxf9qHR;{StH0`x*Pql@d_Sji<9Um- zaBOn^s$x!Y`rnMO>Gz&O(1fdy3T7wFuhr1!QaqjZNEW{Q{^8>KZ-=xf?&z4cU8PPc ze&>o<`d2fbUa`C9VI}SsPfa~2{@s>`#qjy!R94jbo9yfsk6bGMDE$(*BrRJBP*wiMoM!Sq8qZ5id%yIL8aI?fkd?A6t%PMcfOmVg`(4sTKFBP~8ZS)3rG zq7-Mxt6G^rG$hcuYW$+%y*Si`9&TQSg{Ht zBEse(>!)aCORHN%-YhPW^jsl8S!r)05)?(&OJf>DA3wkNU};wsh!0;8AqmSBo;0H= zR4KZo+##HL1lIL}+YEU_RN-3W)bq1mtfpJg2fBXyfHH`} z&Tk4?FI(z<%J_mv7KW}ch=C<>-O`#OCrO!0KdPc|s_%Ng;&^FPB!_KEE28U_wZp;0 z1T^@rmvU(Q!Cz7sQFTa@L~3Z#l4c^xU9Qmd7Y0<7Yp$T8%X+cRk|@}gL7aZ;8}dll zkR*jDkQCMP!-B}8qcVlGRbQ&(xXwpZ3tU(tDOgGbA0#KX$E!QsX+>y{z!d5>2}!IV zkdne}@j^vMu2ONGwZxOlGL9T{eiu`DCYXGQuzP-dOtptr#==N572%C?)5P1gMIOCH zePd&UNbD^cu*EZ*MRuullZ$MrwDe&li7a$gYV`hO!E|8Pn+!@#k#rY`Xh`u-nNjB! z$^vbnS44z#g(!BMPqWAI#bp8e%Y;-tM=GdSEOaq1qUMf)Ezr?hgmHd04~g+8QeZ+N zgBmSB+Sx2{fwx=ogf5JYLx z;<~6Pc@!@xd2mYeTW)E+koa}|s4r>IlMCc}#Zi4WE6A7&l|#>`1|2$NVlU&#TDFvq zL?zv7>WUJ{h$X;MJR^R}x+rPNo79i{@Z>^#xLXiavK^IQ*JlJJXA7{{pyw@z%{)XK zN)aBVkn?HqcAug6gU@l*b@BK*j;BbpWM#dCH0?smO-w9&nZ2aYLa}5q61Qd=VTh1= zMYJdVx+&!4t!x>-M7fu7y=CE{DI^N%g$qec-H}du1-Ti<)AR8|nQjrf=X#WScTp#z z=C1L_Iwbz!Lqduq2+~nODx_AB$h%R=`cjrH!dkb8E&m^^w@!Ds$5lT`7CT*c(c~ai z(8CYMUrAHdP}tI>7{kLk5+Gfygc2rWLXa(uCp2k6rDjEzT^uJN%3>puNUrFYTrqQZ zzv93$Q^_q&WDQ{=MISLXcuS>JM;M_k?FGX7f`B_vX%>i8qrxY?ZV6Uom}86NQfXy4 zBpc89n{gTMs`;$PPE;NRu1>8wY2Zi0g;xciN|!9E6U4S#atl2apr~52TDHMT>4=M} zbkldFyRDf6_Z?~n=p;3_jq&3JTir@XJzuz6@SG}ELvm;9EmD0gJ()2IZ0L~EsDTi+ zSx+IQ93-A{ovg(@hWse1Z0Rm4ReTFkVA0mNB`J3cvv(9lC}C+=vDk~dWnn-Pkyjov zc2-Mreua@OGJ$lQ5F&bhfE5MKEF|}GG3Yo9SJyk^iA`-J>lv{yLg}YhD#9_(1wRza zrSm(1h_1?=1k>}Sv8F##JQc0PKZPVL_X?fNG3#D|MbRxGLK0~f(pYDyinBEyefKg9 zfkYClWR9Bf$`#!b62+psWx=IYy@#E)TpV6pZ6Krz275f7K^dhm@y9G$5d>5yCIj5$ zZJwN-k{%&ZHTNVgTgtd-uWpcmQw*e01uiL~7M&Q*jEb&EB6$##Elnh(YvayEsz#hB zNQyHH5lI!bk$AjvXV(yE^@?C6{@nHX!b+@ViGbH`S&>T0MA9!}k&0~5-lR2BtQPum zc4@um7Eza0`f;hx>Yzse@sQ$);8^g-$Ad&7X$~={VYWQgmea+k3Q{%d$=LC$iX7m02) zo~$QBnE)EZ)Igik04MC8f20xP1ZQjsQW$)c$0@UNd-BqW*5s8bXlX`=-b4LNvH zAuK@JE%AJ;Xx&oNK+kVrQ7kDi@(=|!s%()`op9+bxrnMY?zb?6EaZ~F$Z5Cr402>F zAg5+oke+*~RM}%aszp?g$(<}KS>XE+npBHY&PVlDRN{?IJYO_IVxit8@&+@$4u>?rp~6%#%qwsh9=ncXYZQkFAufwM(nzbS{l*@V z@nTC3y!9!gZ?rZ^zqyQEqAT5!^~G6w)(lK|=@t1<7$0Mg>u@n7HQ20|>AhL|lXay? zItdZ9e$y3IZqLuyFJ=;;i0)#AuRxiLn2D5mLkfMuxIq+~!bVf45_4jecii3nWt7Rh~@vjo;HZiB=~uaGP% z!eAwg%)}Mmk^6B0CnPD5GMFpGMn>*dQvy`aPgLSmb!GvUh-)zDv>ZS7$J!dl+qmYm&4pUKSB4I?XSRk>_(Uf?y z7RI|+&Tk4!^icu!mW4@AxzHIV)g+T1i~MkdBM&dXDIYBA?m}VY3e}!gT(1x(pIJ!m zmA6z7p;Wurw0*p5cRjW2&HC(oG>wLoThPN>(E@B2D{)kwBLx(>wu!FSaUxrU@zN2| ziu(oIc9!FYGjvN=Z15W611l$yY{U{L#SWCDE=n8{(Scb96_rOG6ErH)M&c2arr}6P z-J)5j;S7Zf7cElk#WZpx>*Gaji^+X#|yUAN~i`O>I)H`$h9f!02T^F-bE={%a)b((hv(#vJmZ6 z7)eC1nu)8T1gIu*_z~leTU-YtFs0j42{*?-;f#R~Eb4N{HAXThS*a=U!?}gTwlqVM z>&~dOa+A9x(p%zMXhFaoj%}o(E>7^`(h3gu)>MteQ?16h&~n>hMHm4pi2!T)h(uI0 z&L{4gxQ|9mH$M9`kwhiAHxYkaTF5<&Q=N`n$aC6r#R{5*=xUNqSA>z&l=yjdxT)*7 z;JaSRwm{K(8Q7XHK_nD3Y;l`LLJtc;hLR1xWM%m3m4dg$(Tqes#V_D=i@wAlvU0e@ z6ESEdR?IS)H|0n|B;76OjopGJ+%5W`JrW^CvSpzGVbLw7AGK313KvR!`n*V`q?6#Y zIJ}F1t6p+%oPsJ3w4J12#0?P=Pytq^rcvW&COB*?RBM4c{OY4AvV zdWKbJj_|mAQqe*LEhfG!a;?fBLnWqTVb-fS<8|U)Q*}xfI;we>jx<7nDGiOC(tKR} z+5bR5eD4vuN9gtl?7x51#-9oe>c4FM^k9N*s88b3+-Z_&rqa_p24~oi`KR&767huJqu!qP@J2@>kZ>eFh7vz+NGB zw<0HfPFE|-`GW1F51*!+I2mjhry^R*LOhn_WQ(`wL}no`h)8?E6W<<`YxRu~v7ikh zqSi!DD9Hlfr%jQ|!+Q-RSV<|h<>_0#+#**r5!Xo*k?N}sBQ43Lfki6h2@+Dfu;{S# z(fOj-!2%`QE%87}VM0n-$i$WN%d#Y1NV7$5nM7!T%N0#z%LU#}ry}GEu7z+d*0r2u5TY{?0C!LLn1)VCl z^HoL7Lg+3^8JPs$CQkHi>uDk_9r)&UGKjhNu};RtnL7=QdEG%*V0F*L>54F-uSWvx zRwKu4s_RKt`dU)BZoUK&m3Gn;w`n9QAxbv6;4`lp{t^x*oqmuffElp9YP zu9!d_Rf?|bN!#gzGFUd4t%3kmtk7JczR@j|b+qjjO@nArN~^_+uEN#LsE29~8di4r zp($B|FoF-Umi3e@)>+arKq;*p4S7^h|`0ExkfrD_g`L z3RJEjug;cWCC1f67M>SKB-mR|=V$x3sb7A7eK5f^(9>o9JkOs~{`BX3e|~*-{Ve~w zI=k*~##TezfDzJ^nTkIgEyw`J(ZmLhHrl2T3ACREIiPSz##YV zeo#)^=YtDXS)F78A<}VT%;99hGbCYrs$I4et4&%!N7k=(I&u5v62z#chT!SRA|w)A z*nC%fI}JtEzR*yjc4}Mr$e{1gDncS+6D=21fVz0NcS!SUYwDjivGdWbz8yWRz3lvS zw%E0h(&9(Lm&L6`ER<~NE|S* ztfm@|^N4zDYe7tEs#|1o4;R!tTjS9c`E9l==tKjHt^}w8E8LatY{A6GuH(|}`ME`V zO>{_)w$Y*FK1erR4V_R_VO$b#RN3MM1#~1H@r0sE>$en+$5U+(q-oz2PkJ9Jd}`zH z2OyI*$^wN^lwvrd@NNkgt|e1!oD+Lr%~qls3gO%nm2{1YN_$@zA<{!fwum7#cNP4C zfgn)L;*V@hkq6P;0uOgO*e?_m&YztORUx@Twp1bd!UMVM6=I=7v`hy^6_iMXT`$0{ zh)PPkMWl*FPwOn9#6?TeWhP3}0-CjS@X9HMAcPxn~U>hF={m(uXDonvkDD3(Og(zIT#Pt3dtE7F4UDQiQK7*NUXD-F$=ZqpQBp2A9vmh4{D?NJiOx$ws+@od(XLov z8Rvsxg{(c92(1vL2N(a~Nrk5TrnSfx3npZVc#>~ZUfA-#-0gn*zgsxvBcO{m!rr+1 h2&kc_x_h5qzn7aGhpWv|7aQ9zFINP<`_yNJ%SF`YM z@8j<6r+4q}LVx}K)9uIn@D9yq??1e``S9xc$JaUg?d{+5yN@3}-P~>X;lul%n#BHa zap#wO{pFiqzWLKPKR^4=e?0s4uZNH<6godHuZz<|GI2ONptJK-FlJV|K6&*wPF1*^ZYa!ZI1ibVR<)k!u>gMv+mZ-vxZW)pWi#tv!0(`UY>?~ z`94*6AMH3~`}N}VDt;~Dj&rXrm!IU+#mnX*p4L{&vT zXXGdu|JByTeQ3$`!~2tqk(-h4#r1}Gd4EpR5}z(lFV9YM=H>bNHE%CpEWcX5$=jI( z9uD=kD3mm@zIxubNm?D4q1a4vmgIklOwrkpHBR5rtH0{ot6$mH{C*DSg7e~M5|Q|q z?Z4K?hAW3C{Xb2A!>^sDpaGX5CCrAHU#p?b@iqHdCY!$e{^8>K%^@v{J2=+bE>l-1 zwqX6nL?r$9YGq^RVJ2=CmsZEq%Li+5v*lqj{ATfkm9bghVhr&M*H>U(g>kz+5Tr!r z*C*b*WJ}92R#JTPR>DS#I_Dqd{G=#ekxK(;u~HL_MHved;SZ=J)K0Nu8Dvy2sTj|Nc$TlDg{EaFlthrc|tkOLONH8P3spH5%J0*CAQ?V=La$|(JfJc zM@50uJ5?tBx5`w(c5GQLCDu?9h&q-;2@tk;;U2lv+MUBc~2hhn6 zp_U32Vzi593X zr(d%g21-^}AjqYJphcAVM@U!!7woF5a(<)69Kur8MtL-Po(nvZQ_2OLb2q)WX@ zb;y?HD(uxQierW@oIpY?s__Pb;x?$#uR5B_mU5UXH?kn-H}JrxTU<}bM6nZ>D$#OZ zE7m(mizKX9B0eo8!MfOqphj-@|DbX+Mv962V_>_2B zZC0-ywT{Mphd_@&Y2Qy#=$1GpftT&Ol+y^mcx78cc%qgHh}LYBQ~YUSeM@&q&9=r> z7W7HZz)oXNnNxKH4r&>$B)$GnZifl-3bRBLlyZZl<54eq7Us0hCn1fI6jBzaxN2hB zpY|OhSoA?utA|G)c5Iw9SVU}_D{M^36;*e08?VGl3rY}KO$e##l0NrN z2m(iQOT3LgB7?0XnM1ms&L<*ekU+>-H*$V7P&-Rdlm1m=D3Km{{rvo(kv3RCt>ri2W1%o!21oNtF`eJ~=8+94w$uoQShh+~AWDt{&xiFyT2 zWTfILAvEN4RrIP`#7gT?u;^lx^oTQcvDJjATuDpgN*X;i*5!&siE7kBj~pJJ^Oj5q z()4Quhnz-@)wgaT1hG1rt8CHOrJ5=`p}O#@iQ4gj1zxXeC4pesmXH!l!=LVYBUjX~ z8%02rGVGRwAc3zSN+rf6ioISTd)Gkb)9ZRQydngN9z9>MYpEh|&8jfAF72~Imp<*V zqj$*ImJV*Y&3bD3DF^XqBzA|`l2@fi5TsI#rV(~Y6v|qacDhdMzhakuAtBcU&Iw&F zb=37Zd3H+@rKA!8DLn{?a0ADK=2o^8IQ1%Uqlx6!0#E-EHE7g3w&=)>b5X|?iGmh4 z=7cqsk`m4N{TbKGNcrgCwWK4l4u#t_3fj z=2IXmD?%jM(kNmDQEtUa(G3$Vz3CyO+>;8biL^WssHSVFqj|4tC9)}j496(L^$OYB zbg5U-D8xPMc}vnIvDAc=VU<=!oq^yy;_XM|{|@Z55eI7tS-DXn?HF>@t0W40y<(U3 z4TRv6Mz2#rogv_`Jm*>6%tXpaF+}jS4Vfn-@^~qTCxumlU1^43g_hLdDs;l+;)}wv z212YDRwVXjc&Yt)x~`xQ?%1koLZVo6C5WtnYkCJE=Le^_B#A0dVnT;TDUhBoiK_qc ziljJjOJdcZRx75+{7-e$*b`Z!{4DgQ5OTg&M6)W~tENd5WkrCXM1>f_J)S3}5bA&Y zp&39}*MW-Gr(~9tf)q>g*LVfu_)nB5A0(f3Da4j2R^3)B;WlBB#m=RKGml+k*C@BNJ5CLIv{K;h=Y*xf#58?no#wS0%-_H-FiiW`E-x_;{Vy+{kQB&sDK zcbQShgasGA&STM*MP499JNg=a=u?;S!oI`n;}yZT-H|098i|MPm|9Rz7vX6YE$)b5OG6N;iRDGwz7ldikhp}h zP!rNVR7QHfB&z2ReVdQ^=_34e5&l{RdJ7QlRc5Kz>zFDcv!^Pxb1k(-ip08y&n||% z5DG&vtZPf6$eGBU<#Sr)8s;M{mTXjTxbV%s=7zLrM zQMVWG7(#H8Ow^Xx&`DIc49s9J_qcWeET6(H^r%zz>vyo1#*&!8`+g@M^(ur{#A5=>YQBYOi)kHsDY5^0?{gVx z=^=J1BVjlV#(T1a6GBWF;(~RF?eu8TO;213Svv*R&JJm6RwatA$M)SVQ5&(+_0lMF zIB9ZS+9AtnMnb9)c)kKjq_gyVS)Y_zKMe{}q%ESjL|XzJbvkTY4OyhJtjLR|4y@BP zOX5|tIs|H3ZMr3~QxPpw1jSw}c-QOLOzD-y@n^o)Y_Sx+ru~t8raU(r*a3IkfCgbK z-b_2h0YYj>7O803Uv^DbV)W4b4-hFU33-Tvu`XV@1evxkl0{xMaGZx#Pig|Sv?i!Y zjlhK@^=iixswlQ7{AxwEbg~jE)`ak?=WC*HIE+gp@cEiuw@@I7BC*qyD}fhiQnomc z-B3+5-eqQ(Pi&_J5!)3A%4*J+L^TS`ZMVpj+bE{{#p5kbn3Q}fd|KQX|A50rgiFY; z!Z^<{a-(2{@FIo-U#3K?NPbo;(wf&TVkJ>jAE#qF4ag|euUPK{}_0Fk(! zpQ)Zuz&WIihN1|{v_4VeXAM0+#GqcbBT)++J4&ymF-^h|2-StAt0we;)skTfq+UrY zx5YUer6VMDjnX4qux1CT=6PNdnk!jfe{%0rl0-RW z#BF*dQS}NDB!6u2m=#5xf*P49x9R-k6Ys4hk``%*p+zSsS6!8O=+Y=Rs_Q;%p{Nsu zj6-#avXsYtlBK9O0o~e6t?dvEiP};c9Ts_M?JQ~xx{6oP^?WJPZb^}9VzEw3S2cl* zUDaD+58OsVExI9qR2Okc>aOr5QMd&dh-%!5kfJCt92Zh>1l_e!P-~xNea^x+O#+9iv*%kIWvg>Tzr{up}o>CvX2NhNo;i zWn-Ix?e|aI_(Nsm5l6m=KV6!n4fTRA^KjdG?tSD>8nm>SUL111Y*{A(31nCy)H>M9 zu+c=}ELS)PK78I)e`JbomXvz6o+|7qRc!R!!f+hw zb5x>}uJ=+^mqy(&V|RS&Aw>~xkid?*%U4s6p*b=kXv?chix`q)sv)Z9Jzx3}VL{JG z*ZfEkbqhY$Uag2atyXlji(_J?$}e@X20~k?Q#?J1{o?Iv>AxVIVD ze*gcT8+4&)=b9e0I-kf$K%R8A#G7WEZ>N@FpdrvCfLDWcKA|kdCAns5 z-lGP>Kz*jP>aA+XfN#2#+G_;3E*AAD{n9Z-)>xnt0-djOQ3OyrMWspS94()bRiR&j zz`3G2AXqo>yd+ok3cFtEM2rmG?oN#hdRXy(GNRI6BTI^%`7)0>Sh%`;3#9MA}B>mO1UByxIt&)ztE{b zVE!`bQf`RbS7Uri#L z-gh|9pBMRa$e+H?_h(n9SC{$g;`FM&8Q-3VV=rs>Dk~pyV7OEqmC2KyFCR`7N1;k_ zi9QG+y9I@@O`O;`IFDY{G0If}7p*IB(Oyk&ViAdG2*QwJN9(=glvFZ?@%oV>VaULm zu}Hy6AhnV$0$;ae22kpTS29($BZvtKp;<+L8ntFgd5+4NDEg8DFV=!Wqt<`yv_ugr z5B3XbSZzoB)5di+I#etyJ*;=R!|9GrHMpOz^G&>CElQHQMZM-3I2dI*fx~Y@puuG57M5NUo7m?c-lVIG zIu6p3%*UU;q%$;xQRDN0Bnr({yb?_)1JMKkvB0e)FWeGBvzjf6xF%}EB5XGS32Ei< zaL?$cHyc&6o*A?rynvEQx!kc>yrv=d3lt+mjVOf0%VT&k7Kxl%+O?FEZQq3Rcx zq)3}3!LBZajsaHz?px>(Wm!z&J47}$`*5G;)bBD^ge>QxZI zIjvTNBrE7L7!ce&AN9OjBm`SbC=$+LW((F%cL^od{7clsv3!MbE7QAhdx!vS zsaHGHNdr$H0%Ao&64fYFH)2AY5o+@4l~OU9sZ`wISm2Nhx2CkQ;$^4l!e><7g6!>< z#E#InkxhJZB2U878hcvU^8c+sy%?YU^a)#@ zu8q%r{>6`hyuY?HA%n|Bp<_`DBgINv0*)j5tb|@%D%m13QOB|cdqcw~6^^W6sZ@o7 zzQnTPBH~i2Bm=TV16eaH>FO32BMw9#_%0w4B5`SbP0z250y$i&VEqagXLO_f2hNSXIv8~j`TF~cFB5gq$)9FDQL`HZO0#`WK&>EYNm_!T$5 P@{7-Yw7$t--~IBx99vzE diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_8f4daadf3e41747492cd381cbbd1cf33dd52735f597de4b4c804effd2600d135.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetContestedResourcesRequest_8f4daadf3e41747492cd381cbbd1cf33dd52735f597de4b4c804effd2600d135.json index 2993e3d115c9c009016865701026b7d30e7ee64c..83eaeeab1cc31b5271cdec68c13d37108154df32 100644 GIT binary patch literal 73359 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 F{BOQw0<8c5 literal 60547 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 I`tj3$02vD1A^-pY diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resources_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resources_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resources_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_09540b24c4d98960527f45bc20e828d50a4fa7b3230d23ddfac563877efd61e2.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_09540b24c4d98960527f45bc20e828d50a4fa7b3230d23ddfac563877efd61e2.json index 5c00065a32d392a3b786386335431d5fce2001a9..3685c15747012858ad0a24ef5622e3457fc87a1e 100644 GIT binary patch literal 58459 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_0fe029a8b0fd66ec380809675d4de225f2e3e2d9b20b75d91a6b66a30a3358db.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_0fe029a8b0fd66ec380809675d4de225f2e3e2d9b20b75d91a6b66a30a3358db.json new file mode 100644 index 0000000000000000000000000000000000000000..2b8b0e120550fdf5c5f94e59304e318350b8d271 GIT binary patch literal 60090 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 Sim&|Qv%lJZ$iII0^?v}Ux?Cy% literal 67887 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 I$9F&f2SE5u-T(jq diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_2aeaf8f528e207ff093c003b46e3c4cd53b525ef27be36077437e8b9b8ffadd8.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_2aeaf8f528e207ff093c003b46e3c4cd53b525ef27be36077437e8b9b8ffadd8.json index 0910323159aaa4cac9afe7f7ced45af986b3a977..2e0ef4a01ab40e0dfeaa666b466e44d5c127af22 100644 GIT binary patch literal 73358 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 literal 67877 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 He*E+wEc)G5 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_30cccf1859394e30e6410e83048d9b0e583a50f6346ab371062a60862a9d2516.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_30cccf1859394e30e6410e83048d9b0e583a50f6346ab371062a60862a9d2516.json index 137d56490e53e859d1a809c37b62d044a1a70afb..6644feef28a7708132675f9af8cfb34114ad0480 100644 GIT binary patch literal 65898 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 literal 64206 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 literal 64135 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 Xr)_bc_~#X$_`!p}T3_Uk@816#xZ*ET literal 60616 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 literal 60127 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_879762fe9d8ee181f913f723bebde2e1793e52a4d1c6d31841fdf00b1fc6bbf4.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_879762fe9d8ee181f913f723bebde2e1793e52a4d1c6d31841fdf00b1fc6bbf4.json new file mode 100644 index 0000000000000000000000000000000000000000..ab1baf64bc1a93b977036e64194568ea370c386a GIT binary patch literal 56617 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 MU#&0l$2TAT1=FhZQUCw| literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_8c2e50a4e3c6b6bcce52453520e5d377ddbe6cbdccdff3bb18a89ec8aee7fcec.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_8c2e50a4e3c6b6bcce52453520e5d377ddbe6cbdccdff3bb18a89ec8aee7fcec.json index bd1ff191730f1dfb9f897d50c9ca95b02aff7c39..de4a6d88fea4c2c4caaf52d1d089143d95f172eb 100644 GIT binary patch literal 70112 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 literal 64619 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 ZriWwO;5Yuw#W&vg>{siH{Pp9h#Xq7dA>;$ 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 c{^~>X;j}I8GylBeGe5ZZSL-+VpKa9 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_d9f34a516cbde7db9b587bf0f5cacc54486a15e18a88964be1e2c67d40cb91e0.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetContestedResourcesRequest_d9f34a516cbde7db9b587bf0f5cacc54486a15e18a88964be1e2c67d40cb91e0.json index dbbf4520da8c340824f2c17aebafeb6f15703a5a..5f4dc8e0aa73fa709161adf5a288da51e4074dc9 100644 GIT binary patch literal 69768 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 Zd^l~3`@}!5_{0zH{nh$S{`mU+zW^oiudx6C literal 68085 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 q4*3Y^*hbhJHy;5t^iU literal 56648 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 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_resources_start_at_value/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/msg_GetContestedResourceVoteStateRequest_71f48f72373e5db9721e095e8cdc12823a7175b930f49aebb8d9844065da5b44.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/msg_GetContestedResourceVoteStateRequest_71f48f72373e5db9721e095e8cdc12823a7175b930f49aebb8d9844065da5b44.json index 44d3e1e2f4aa5eeba048b045c39666ab9f40f7a1..c86e11bc1592579b057162d5204839cc28369a74 100644 GIT binary patch literal 133292 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 N{%HOt|MQ3M{};2Ez+(Ua literal 131795 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 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__2c32c08bee77a2d062db8d1cdb999a841b21043ccc5e7fc5ff1507f9703754a9/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/msg_GetContestedResourceVoteStateRequest_f7848301c15560f971e007963a349e64e07602f543bda42d5a5d223f0e6102a9.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/msg_GetContestedResourceVoteStateRequest_f7848301c15560f971e007963a349e64e07602f543bda42d5a5d223f0e6102a9.json index 127eb13b67841f1ce7691f74da444d2bc9b836a5..6416b1bc08eb4085a91fd553d213c8d17c65ff07 100644 GIT binary patch literal 73076 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 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__67dc63814e035b20ff705840e19ebb329026b51129b8dd9cd029d26a0a77408b/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/msg_GetContestedResourceVoteStateRequest_aaaa80ce4fdfc75252132a85e6c12bea6a47c9f7bf30133713b6b5cfec3a4d57.json index 9b701a67efb91bf9df826c0d07344559bb53d7ab..0483455616f901afd6c1123abf916b011e69d5ad 100644 GIT binary patch literal 162026 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

$5Kf{!V+EL|UDUms+zX!z9}SF$uN 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 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__a39a5f7014a616de3d7002bb4f18772c5b5d3526cb2b3c33566bd64512882669/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/msg_GetContestedResourceVoteStateRequest_23a531bedb32082b8e3bb799790dbc80a6caf537196a9513dae8967f325ab485.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/msg_GetContestedResourceVoteStateRequest_23a531bedb32082b8e3bb799790dbc80a6caf537196a9513dae8967f325ab485.json index bd734244744abbbbfc831fe15afd31a37fd76ae4..a09f44964a0905716b4ef2da645725c29051e193 100644 GIT binary patch literal 144033 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 Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__c71b4f8d63f8a1357936129a226f99e349e7b21b166609cf59062e27ed68a1ee/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/msg_GetContestedResourceVoteStateRequest_bf272e62224361f1e7cf91b7f45285016c5d0ac679c299447df687e866154090.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/msg_GetContestedResourceVoteStateRequest_bf272e62224361f1e7cf91b7f45285016c5d0ac679c299447df687e866154090.json index 96d4a9de2110d026f91841fdfc5ee590d8f2f0c1..8cbf869ce9ca47be909d9ab800989854ee560e95 100644 GIT binary patch literal 141822 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 TldqrogO7e|{~`bS(+~d#!QJMq diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__cfe3ebd0f17745be80e4348304fe468f3eb8c2d17e23d310582b0b34f2d5bba7/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/msg_GetContestedResourceVoteStateRequest_e1399ef22320c9690b1c8e548975839e9ea0c40cd94caac5746b19857d52533a.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/msg_GetContestedResourceVoteStateRequest_e1399ef22320c9690b1c8e548975839e9ea0c40cd94caac5746b19857d52533a.json index 44dc7913360382b999804908b8c522b28b818d71..2d5627b669e937abf8f103f79aadd0303c45bd20 100644 GIT binary patch literal 127448 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 G@BRm`DQErw literal 125915 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 C(?O^J diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/contested_rss_vote_state_fields__fbed6654145b9fba061d182cac5a3879bc9bacb92dc9ae64ed2a07ca2ec0392f/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_6d2b2e80663ec452ad3cfde5b5db6bc0d6ecdc7cb5d6b35db326a8f223aef08c.json b/packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_6d2b2e80663ec452ad3cfde5b5db6bc0d6ecdc7cb5d6b35db326a8f223aef08c.json deleted file mode 100644 index dd563a058d814cba5fe09ff4698a5bc757b17382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62894 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 ZOVi%I%ixy(-oTazm9L5q`s>Aq{{>mq4)*{6 diff --git a/packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json b/packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json new file mode 100644 index 0000000000000000000000000000000000000000..774070dee0d7b9ae5dbf882975ebccdbbea27685 GIT binary patch literal 58540 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 Bg((04 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/document_list_document_query/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/document_list_document_query/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..44f60a39152ed18488e16c9ed9c115704eabb437 100644 GIT binary patch delta 3541 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 diff --git a/packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_list_drive_query/msg_DocumentQuery_26703958b80c47b518541a36e10cf9097aed37b7ba84546304bc9a526eabdef1.json b/packages/rs-sdk/tests/vectors/document_list_drive_query/msg_DocumentQuery_26703958b80c47b518541a36e10cf9097aed37b7ba84546304bc9a526eabdef1.json deleted file mode 100644 index 4202bc3972a12e58913cf7cc72dada837c55a241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62894 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 ZTAKFuT?V)O_Xf5+sC-p?&|fb;{4X&?4)_27 diff --git a/packages/rs-sdk/tests/vectors/document_list_drive_query/msg_DocumentQuery_b3bc8802a726d411f7538d368a4db8fe248a5ed482cd554d72915f9801a6c369.json b/packages/rs-sdk/tests/vectors/document_list_drive_query/msg_DocumentQuery_b3bc8802a726d411f7538d368a4db8fe248a5ed482cd554d72915f9801a6c369.json new file mode 100644 index 0000000000000000000000000000000000000000..50965fe1c64df62698ea1aa37ab56e76a7cb7c42 GIT binary patch literal 58540 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,Pt8y5SbCi9}mGp1AA~H7L89 zLe*Y$g&A$fA>t@0>^s*PWj9K2D#8>&+e5LSE`)>y0xJz9By@JeRP}gyL3T0y;4W07 zWDm<$qJcJEfkkH= zMOZIln8z#oh(?Jdj3?THcwu7{D}so<2rm}i=zDEMY!V5S5!4nW0i*Brz3}=ZP+nhF zA-xscgtyclji(`E_BXg-MDY;>^sFuAgc(7(=SGEiVO9tT)bq=0!abWrqzM&Av@+te zQ>L~={DFf>-E{ebW{WMXXhK;t`h;D!AC`U>Wm5OGg*gv1u}K|QY*D62Qs55?E(ElW zhbc4{%o8FkUSBw(#E;OUqN8xZEgWG&$mj@?0)qkxX-*=?l~yDZy*O+DJYG^yV&y41 zW5UdG{*qnrc*P3BK|yz*2oED1tkOxc&=vxMFv{2w6g0kmQdm8RF&b>OA+^u;z`|jd z6;;9w4Mvh4ql$n_j*xJrT}a+J!g?V_MNkm#$_r{08J}WBi)`?{K6@SB=zHyk&?F&& zN?Q;~kG|LU!Y+_Nd3`yKioW0`yruSNJgR!we%P#9)=+!|fkH%3_7*TBDEF*s#0y7N zK#*c#uL<{T5|SqF0!kd`Lham-tV1C+CCC6eB_fCfIa-BM+f!iA?@A=95cjo9v<(xIfRdmm%4Vxzt&h9d zBP1z;o=%ZUBh{t(3nj%>fWQ$E$83c9&;&shWmKLh)d?{Gi>T6~UXBb#OqSpSAEQuE zW1t$_egzZeqsQ|pSSMu|1iG0o%rIh7Di9DvHwHwJlG>Bpq?Jx^dkPX^d97XoI^u|- zDe&GSIzo9RlbBVFe0R8LSrJu8l}}WGgv2=Vt7$|ngNVwONJRqcQwGs$_XB7=F~-iq ze#0n7VXs|(6@Skn*QN(4#?0vR%1gA)WKK8T{!9)=V#o2nM7wm2pY zdIrc$M;;!lom@nv(-wr!o)QcLK%-7Z$%w`iF|p;fDW}ZBte}yJ!6a72_#*6QvGRCyQVzW|D&H2v2ETS` z3h}*xejik?D!hd1*n!bnKPMl#-8s6S~y zE#kY`PN*d+qS$J%K&(%7drjRp|fy`dRrctp%CV2~})y@>Xh$Gf&lwa@y!CpYQ zZa^yUq9TG?Us0Wmca%t=JXk;wEbN6+0~QqLEKLn^*im+~1Q*;Su!b96bvl*wB2u47 z1;x#9kSP&#j3BIWi6_J`hl}D!$449q6=`;)oT}Xj+3WDCUjZFkE^*Ybh#<470ZHUL z$#h!P4gPDAVn`tb#3*-6sj<^#vuF!UjWLnN$cq zGB|n4TS|n2?I&9pXvrWtZN(`xVYLgHg1TbIR*Mt5M#me(3e|mACDK!w-hvM~B8`Gu zSk^do(G=H8B5Q^t`d+&~H0ZqWc_VVb@h)V%uwagBJgTj9Jgmj`mvFCnhPdl!2~^C@EkaG0;$9Xemi_5<_a&P;Y_gClGGS5Q zq}T?aU8tZ5JHd?{k7bV36qA;0VfaXrIrcOGmHzMD4{v#IVnj8r%~eZ1qLZW*CXS>S!R^7JSfh+{qeT^ij8Czx9oPf}&2FUz ztz5L<5FDhwyO^Q`*ZL%|hWpd6S|kUZ9Z*6QWQ-%lJ>rPOp+R;KDx&tOK~&ND4P?!z zL7?r$r&@VSeJs~a>+`2t*=d(!a@%`%*F@4&Y(Le?T|9JaL<0M%R{E6pcUdc42nbaa zB|IMf*6A%^laQv6)1Ql=^apjtq_1#uOBtn`9C&|a$7$D1E;N!dpzbJ^KN2f@(d_;Q z8phxbjvz!L59=Q=X&dIefDAz{yKs;xvWnDM)QTq;P+zJJ5cQ=BDIuy+K=#1@G9iW( zn}i_H;K0E8>FEXxUKDr=?F@CsAv%Duh*E&s?3k+Ldcm=U$B-0W(nY6T2-QuhU|W6M zJw8BRe~Qmj4Z=lzR~jPDH@Ig1gNheX8$73JCuRM-kF3$Z>rXK^VY*=Mi~1!t?cK}@pCXuP5-(h_diDpIM08d@J0Pbvi=uNhrqlt`XhIus}pSjt#$A*`WB zrCIe!t8l?1NOT;LBwB?MHtj+{u@Z{ysA5Nf7%ks-Rt@BxDPFjn>zA)G9)m zig4F&LL%1n$6Ip{F{B|VK4Jx(q7sRS2iK1wWnNI_gpG$$lh*_YPZ9TsY^Et>7jJ=j z0}VzptMnwjiWis0A{U~RArXKFWd~L!k#-_sfq1UGgH_DCsJnv#MZ?>~Dte!!@f397 zj=~F-+_4pP5!)e2q*2a3w1uXSgt81q_SWumJe~yB<0;&M>P&f5$Y5crUnLDegVs)P zBkX7`j@XgxHWu0iiJ=&!7tB8FIPtvtNJ@$j>a z4Xl$=`qAg1X6lbtI`xlD58|&uzGu@NTl_WX<9`?u>arHe$8DG z7iARDDa#G9$62A8ff7UUfm?VyaoJI7P%LSKt1XC#*aZnFVIb8hJB~y|*pY(a^b4iv_*aR zViNtXzX9F;A24+FThM|3yM_amuF`KoildYN&T7~_aG|^5e>QrE%{3np;NEX@m{MK;*A zz>DG#cVPJ*?#24;T#t3z@!MV8gW<#6K-V+Of$cwLUW}aLCOY5aHdyc{1B)jx0p40a zRL>Xi(<%f0@stn4x0qW-vx69z37M&Om^{)gX9yM(*tYtT4V$lxOO_KZ~B*f$-8SoF#)yG&g^=78#P zZtU7c8Ez;wL6p0xLI>!J1-v>+;FlfDg#O#|q7DA_w2seh=R*B~@CycAwd2P-_)HYN z+>UScaW^{O)O_lI?o(XHWT$3;S>eY|ikXQuV>EfD9fwXb4{V!k$Cc%bYIVTEQe8r4 z$M*eHbki6@ZntK_HC@2%rxgnD)<^|DhEMYmaCVvp8hWfcA1IGgqM4jL2^U4IEak2IJ z%S!c$UmoDrKlGIKPjxwqmc270c7Mo?@IXNbINZgQl(SeDSrsF3Ese;VZAQJTE zaJg{B6bd}q&;ecd;u2A#PObB_)YO+F?FjHLa8EvXNG-zNn%O@4bQ@a*Cn1Ef&vXmF`hhf6m-sZjfkNmw8= zWFDMT$j0uvWfXzgFflLuof}I|(3$kjk8PX+7OpGYJkQez3{CW7e<{Jc)h8f3UqH`w z*>`FVClWlo-UQ)~9hiHTi})tC5_89iO-DOcBc8w=pCF0*FL?WWP`D%MtE z_B}0r@|AlGbL+HV+7)2s3|$UNEAus5lS=OF9j#7F>Xh1a%{!cxm2Ki6_kp}u{2HBg z>_gV5@}m4OV(^s;A=O;PgsVkj_|Rr03@D~>Ke)cr)$te_ueCsSFJ;}tTQJ(d%-Acf z*j1x7%l9fESwuKrWR;kBpFt|u@gpX$x5RoYq)Hp{&)Eu$XuK68PSygs4yxjU)+(D1 zaQ21?*^h!MM%NU+3Wm-EQEa9TihbKrUWtE2&x#hUNvU{B3?v!opZe$sz9tnq^%29Z z#7>!aCAhjo{CzC|IrM#Q6 zFk7a1u;XRcm_Bw*D`UeOD4ko%-(lcfLOgbo1c$p!iRkLLGndnu%gii6dfrP>BWY(X zo6azDo&sey^I*EL>aMFb|9rg~BZ%cKqfXH7>Ok7|MRI5E6pvjh* zX9#DrmcBs0>UrXIdbXfS*?Nnf)-yo*~zP%g)!9SzJm*ciir-a z=^_}6K})-#<9qpej+%PG0?6n9cP)jElv|(vZeeX2KGzcFH~MH(T+^iifq5Q5+H5`& zV2VIXiPahyLTd?-ep`X+i_|BUoXl?;r{9aucN17wtx=H(V|9XzWf1%w`n66X~3eQ zCvka#{|pxYS}r#`^h_$?;DxIBKG^o>N3y4C-Yd7dEPm|(rAj_Q*$_M2SSQrc(hMn1 z(fT)F)@bnvDdk8?I|)imd7ID+Euujrc9Nwaa9$@;MW$Ny*B2RZw90aT z!e9>6#9;& z8eaIeOjw91u1V|icR>(`gHrcNttlnkaD?JceuE@W(x&w_0UMslJJLO}SZM%;{cBCN zgEI809}(ms^QmL4gY7UD0`h?piUes^Kop z(+hTN8=#W9%M693>ojF}>Nuf9UWQPqw_LDvS(und@~rR~kj}E_CHi%g|1DHNT0ooM u0b=#0uXr|wZIB-NRgwpfD8bXyxCNM%4vjiA=5Go%*9+QDpRieH1$=e&25fMeBP z{gGt%zVAJs&w0){dHAPeo__ypJ^e;W!ivYOSe@n4uINR)z#%x}^+i<9`-lmF5A5}$c z&df9Y^l43m@063KF;>>v~VRrtwD#{CfVHK8nrZ`$$PJIqD`r4KcAjqhP0q9 zVT%e|1D&=-$F@7!6Ut9JXNI}^T@|H|$4985)X#$p%n+B?Du;Wcro*X4<|v*M#WQWe zx|*;-f9*aMfBv-0@RtZ-~Y>Ir{UEhpKb_;RGfbj zF{894Y*XJcT&Pz88aUx_#T?Hmrun8zgO0_{C?i0ZUu1~^eB*rOS+b-l%F7yInxtUC z@-zik!=l&qcW$diZp2>yINZM5N4H&MiyS}QG%nov61+WPb;bhRa7pprp`gqAVGj?K z8!pYOicn9TpUXl>UN;P0)Zp;ZxDn;fh#8ZJShQzHz_;6ZNA#Acp#@j zJTMgi2R3t?ANaGMuDHLs%YLNWnmXEz(ycm6C+?YlGFu|oxN!R&X+xo?7cpL)7h zQ(@amNvO-+laQ_clRhmqH?aL0#XY5}o`chj1Dsl^)^Tc|TCLsT{>6x2#ghq6mIF@x zO-74|uH{0X(Wz+wsEd-b;Ug%o<$)Q7yl2EIvo-DM>6z%G%%{=LeJ)oFszs?AW$0_wTNNk5nWIK!&=_Th_%v&7u3r+s46iy$67Quuz`R+aY^LzHIKTP2EDWC^1 znUhBtXDjMEXmjeDxC^2H{#GN;{ZG|$U(j5|9p!-3S<(AM(Xj(zagZHY>A^^B<}VN1 zpN0dJUF=mu9@TK7OxIoaM=B0zO}c z+Es#X>(#+m4CIrB*GZk;=rAI^dJjHo#D-{V6$N|N2-!S45_Z%`%l|Wix<7LIM&uX0 zzg4%q{I$)-2SCi-4%xR~t8Zj)H(Jl)u)*)z*=4FWpYa=0O1>bu&5%;Iwf_+?N$YQJjbUJm~+VX7*ggJ8voO|263RtMS>H+n&<>22liIY>iO+ zJqhVwm{!jBig`1d3!w7u4M}J!_&zyOEs$TgBv|K~-PESQ(~sa!1f^(lOYRjL`Lw! z0>|@X?*k6_ZdXZ^d)9(DW%hm_lO3P*{0F^Yyk63z=YBu`wH|^`2NTp1x3nNmZ9^~~ zKPrY}yu&cLB>`>7w9OVoX!H864{?KKMx-@FY1BA*8bGp^mrUc#EP(V5+g!mvn2o;S z;N{?RFf~+-XrB!qndv=>r5AQ`Y>g& z(CB@oa2x|Awmv;K(&V}{ZdLjsN!cgU-uC+T)w2>-Dd=>AYI1xli_07%w}LeEiB0WFeKS)cEt1@rVe!#nFhI?}DQ_Qg#x z86OenBIyi=P2fT+8t3o;MC(4+{XCNMuc#R#dZ}2@dv<#1LR%<0dpYwG^GE*$Xc|G` diff --git a/packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_6d2b2e80663ec452ad3cfde5b5db6bc0d6ecdc7cb5d6b35db326a8f223aef08c.json b/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_6d2b2e80663ec452ad3cfde5b5db6bc0d6ecdc7cb5d6b35db326a8f223aef08c.json deleted file mode 100644 index dd563a058d814cba5fe09ff4698a5bc757b17382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62894 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 ZOVi%I%ixy(-oTazm9L5q`s>Aq{{>mq4)*{6 diff --git a/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_89cfecedc9547d64bca1385ce338c226964b8cf50c559a15ffd8d6ed2e47b682.json b/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_89cfecedc9547d64bca1385ce338c226964b8cf50c559a15ffd8d6ed2e47b682.json new file mode 100644 index 0000000000000000000000000000000000000000..862a8300fb40fa3a24f8152a75d3a9477f29c0db GIT binary patch literal 58666 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 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_919edb4fc5157813072e6b909adc3c845c6d5300f29be59c60a7457af66e60a7.json b/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_919edb4fc5157813072e6b909adc3c845c6d5300f29be59c60a7457af66e60a7.json deleted file mode 100644 index a322aa8d784af0e899724a9af2247e241074a91f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63020 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 Bg((04 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/document_read/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/document_read/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..44f60a39152ed18488e16c9ed9c115704eabb437 100644 GIT binary patch delta 3541 zcmY*cdu)@}71#Z)u?dgF6BJZlaa$!V;LpDPKHGti5Dz-iL|QSTKt+?qBqBVjh;$X| zx;Dk6TL)T!%qRHpj!Rfzykc-uQ#Qbr2Ghn?TyE%{3np;NEX@m{MK;*A zz>DG#cVPJ*?#24;T#t3z@!MV8gW<#6K-V+Of$cwLUW}aLCOY5aHdyc{1B)jx0p40a zRL>Xi(<%f0@stn4x0qW-vx69z37M&Om^{)gX9yM(*tYtT4V$lxOO_KZ~B*f$-8SoF#)yG&g^=78#P zZtU7c8Ez;wL6p0xLI>!J1-v>+;FlfDg#O#|q7DA_w2seh=R*B~@CycAwd2P-_)HYN z+>UScaW^{O)O_lI?o(XHWT$3;S>eY|ikXQuV>EfD9fwXb4{V!k$Cc%bYIVTEQe8r4 z$M*eHbki6@ZntK_HC@2%rxgnD)<^|DhEMYmaCVvp8hWfcA1IGgqM4jL2^U4IEak2IJ z%S!c$UmoDrKlGIKPjxwqmc270c7Mo?@IXNbINZgQl(SeDSrsF3Ese;VZAQJTE zaJg{B6bd}q&;ecd;u2A#PObB_)YO+F?FjHLa8EvXNG-zNn%O@4bQ@a*Cn1Ef&vXmF`hhf6m-sZjfkNmw8= zWFDMT$j0uvWfXzgFflLuof}I|(3$kjk8PX+7OpGYJkQez3{CW7e<{Jc)h8f3UqH`w z*>`FVClWlo-UQ)~9hiHTi})tC5_89iO-DOcBc8w=pCF0*FL?WWP`D%MtE z_B}0r@|AlGbL+HV+7)2s3|$UNEAus5lS=OF9j#7F>Xh1a%{!cxm2Ki6_kp}u{2HBg z>_gV5@}m4OV(^s;A=O;PgsVkj_|Rr03@D~>Ke)cr)$te_ueCsSFJ;}tTQJ(d%-Acf z*j1x7%l9fESwuKrWR;kBpFt|u@gpX$x5RoYq)Hp{&)Eu$XuK68PSygs4yxjU)+(D1 zaQ21?*^h!MM%NU+3Wm-EQEa9TihbKrUWtE2&x#hUNvU{B3?v!opZe$sz9tnq^%29Z z#7>!aCAhjo{CzC|IrM#Q6 zFk7a1u;XRcm_Bw*D`UeOD4ko%-(lcfLOgbo1c$p!iRkLLGndnu%gii6dfrP>BWY(X zo6azDo&sey^I*EL>aMFb|9rg~BZ%cKqfXH7>Ok7|MRI5E6pvjh* zX9#DrmcBs0>UrXIdbXfS*?Nnf)-yo*~zP%g)!9SzJm*ciir-a z=^_}6K})-#<9qpej+%PG0?6n9cP)jElv|(vZeeX2KGzcFH~MH(T+^iifq5Q5+H5`& zV2VIXiPahyLTd?-ep`X+i_|BUoXl?;r{9aucN17wtx=H(V|9XzWf1%w`n66X~3eQ zCvka#{|pxYS}r#`^h_$?;DxIBKG^o>N3y4C-Yd7dEPm|(rAj_Q*$_M2SSQrc(hMn1 z(fT)F)@bnvDdk8?I|)imd7ID+Euujrc9Nwaa9$@;MW$Ny*B2RZw90aT z!e9>6#9;& z8eaIeOjw91u1V|icR>(`gHrcNttlnkaD?JceuE@W(x&w_0UMslJJLO}SZM%;{cBCN zgEI809}(ms^QmL4gY7UD0`h?piUes^Kop z(+hTN8=#W9%M693>ojF}>Nuf9UWQPqw_LDvS(und@~rR~kj}E_CHi%g|1DHNT0ooM u0b=#0uXr|wZIB-NRgwpfD8bXyxCNM%4vjiA=5Go%*9+QDpRieH1$=e&25fMeBP z{gGt%zVAJs&w0){dHAPeo__ypJ^e;W!ivYOSe@n4uINR)z#%x}^+i<9`-lmF5A5}$c z&df9Y^l43m@063KF;>>v~VRrtwD#{CfVHK8nrZ`$$PJIqD`r4KcAjqhP0q9 zVT%e|1D&=-$F@7!6Ut9JXNI}^T@|H|$4985)X#$p%n+B?Du;Wcro*X4<|v*M#WQWe zx|*;-f9*aMfBv-0@RtZ-~Y>Ir{UEhpKb_;RGfbj zF{894Y*XJcT&Pz88aUx_#T?Hmrun8zgO0_{C?i0ZUu1~^eB*rOS+b-l%F7yInxtUC z@-zik!=l&qcW$diZp2>yINZM5N4H&MiyS}QG%nov61+WPb;bhRa7pprp`gqAVGj?K z8!pYOicn9TpUXl>UN;P0)Zp;ZxDn;fh#8ZJShQzHz_;6ZNA#Acp#@j zJTMgi2R3t?ANaGMuDHLs%YLNWnmXEz(ycm6C+?YlGFu|oxN!R&X+xo?7cpL)7h zQ(@amNvO-+laQ_clRhmqH?aL0#XY5}o`chj1Dsl^)^Tc|TCLsT{>6x2#ghq6mIF@x zO-74|uH{0X(Wz+wsEd-b;Ug%o<$)Q7yl2EIvo-DM>6z%G%%{=LeJ)oFszs?AW$0_wTNNk5nWIK!&=_Th_%v&7u3r+s46iy$67Quuz`R+aY^LzHIKTP2EDWC^1 znUhBtXDjMEXmjeDxC^2H{#GN;{ZG|$U(j5|9p!-3S<(AM(Xj(zagZHY>A^^B<}VN1 zpN0dJUF=mu9@TK7OxIoaM=B0zO}c z+Es#X>(#+m4CIrB*GZk;=rAI^dJjHo#D-{V6$N|N2-!S45_Z%`%l|Wix<7LIM&uX0 zzg4%q{I$)-2SCi-4%xR~t8Zj)H(Jl)u)*)z*=4FWpYa=0O1>bu&5%;Iwf_+?N$YQJjbUJm~+VX7*ggJ8voO|263RtMS>H+n&<>22liIY>iO+ zJqhVwm{!jBig`1d3!w7u4M}J!_&zyOEs$TgBv|K~-PESQ(~sa!1f^(lOYRjL`Lw! z0>|@X?*k6_ZdXZ^d)9(DW%hm_lO3P*{0F^Yyk63z=YBu`wH|^`2NTp1x3nNmZ9^~~ zKPrY}yu&cLB>`>7w9OVoX!H864{?KKMx-@FY1BA*8bGp^mrUc#EP(V5+g!mvn2o;S z;N{?RFf~+-XrB!qndv=>r5AQ`Y>g& z(CB@oa2x|Awmv;K(&V}{ZdLjsN!cgU-uC+T)w2>-Dd=>AYI1xli_07%w}LeEiB0WFeKS)cEt1@rVe!#nFhI?}DQ_Qg#x z86OenBIyi=P2fT+8t3o;MC(4+{XCNMuc#R#dZ}2@dv<#1LR%<0dpYwG^GE*$Xc|G` diff --git a/packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_read_no_contract/msg_GetDataContractRequest_e4cf74168e03a40bd159451456b501c1ba166a2dd8f6efb31b0289dc011da983.json b/packages/rs-sdk/tests/vectors/document_read_no_contract/msg_GetDataContractRequest_e4cf74168e03a40bd159451456b501c1ba166a2dd8f6efb31b0289dc011da983.json index ce1a31815aa9fa14e2b8471836a76d88c9731ee5..e368e817b7be778b689f5d166cb4379e454d8e3f 100644 GIT binary patch delta 1830 zcmYLKTWnNC7|yoGb6T)h1VZVSwouxoGiT;pc3Y5zT1qdtTUu_V3hmNp;)96~f@qAe zQQtID_cJC&BWsL7gGdvMFGhG!LV(18CMeO6#>C45DZcnbh<GrQ5}f17U@s~Xj|KcD;3Wq(zxES9+Q>Nw`?>I(mf)b5ov#MpIPC7AU;sq zVWG~tY-@V11uE8i361Gy5A$gYuW9Sn$YNO*SOQk=Xo1H?qw*t$wa)EO#`WcyTzol|C?gO7Q?k%O2m#xr*1O}bI< z2_wHG3+50v^hxB_C|(|-G!{2{vME4znaLv^i(e;V!c587tJ-4veY91#=JM$5DT6dLuDUPW4CT>FuMN2h%h+y|Xs*sG%sZ!VD~2Jn8y zu56}Mc?YK{PFYHNCxlFDycXvU7bx>wm5sZ--N2B-&2?Tx{%q35@0;X(5`5fh)wsIZ z$7kFyn|ug0^hM0Jhr5#`fF9|l8fIurb-I{d9h={bEW_x@CLcwHibdIsG5N(h%|;DX zpO{(HU}L%GQt>#_wr>W6#kpn9J24Sd(1f{;!8)^+qQrwJ3a1LtZcC}bVHIh^7Q^DvsCd=VX*?-(<`0xWd)Ajz;j iw=~8Wd1^P`1zoYj`xvb2@}R{x9p7P*%NdrZ-v1BzR%!tN delta 1836 zcmX|?U2GIp7>2X!bY|PymSrimEla1+AMDQAIlE_Oc2`O*P+BV#E2Zt0@>A9eAt1Dn zs4+m+#ORGt!fRAQR50=H%1!V}xgaq{P-yi^F>Vk7=bT+{c6N8>d_V8| zeBZovHT2chQ0aWQI&gg7@p6v9-^q4-7d{XQa3R)(sfUiQ&N{wuJoV{w$Ir;;^cVWn z2WpM$rjWM;+9ORD7mc$a*nK9R8|%Sn)WGje4)R+(#B&1kfxzHi2d#A+#UTU7Yh2un zTL^59T#HNR4E!_Wq7<=kJi+ki$}~=QTDY^H;oy3Ge}S%-w;SLC4oYzom$D3R^isU2 zh51H?o7E-`O)=cv!tv506syU=cv9g0Mvha3G)A))SehX_=Hk^phWBezAs!)mCX*F&)|zlfcYs$$yb_i%JJnH0}opC^~D_&v)jbrq@&ut5pzg(3&Rwn z6ftmH2z;2Qd{Gn2CsR0U3!GS&4tqJwC6X%SvNnd(114S@VwkNl@r|iNbwn8^yJX7( zKQ{{;X-VOgg1l#<=q3?s=J+8Yur$SSt6RIUu#c`~$425*n))u)|1pumw$YS2wbUW- z<|YQWS37aL{b&oRU?EQs6uUW2juI3Z16zISqF|vR&++*>>Vk~^tBc`wtBaAiz@C*! z)xAl^-``k)i(_aa4c=+sKqINvXM|+4E^bvttg7u^IdZTd;kuQ4)lH=96-(x2|k zpf$o3nUdO>0abLlK$+d{vkkpQY;)T@)kG;m8K+H*ji+$U4lq7Q zF74uBKZOg#W=B>t(EK#V;*2cT#CriLOXFzoX6Ub}LT`VPcn+X>F$|jd0PWRlaQztv zi^F*wtS7nYK=DZz^R*t%1zP^^$23^IE2IS)`U*kA%?#V)KAvb!Vm9XEXn!)~VgG=K zh?7K{=VI@}oHj*(a}J^2WSkjbC@>%MG)dA4w^deN@vGP^;4)Xu&E;M42`QK~Mz4b3 zNc49$i%?3TytOVF63XYHm|H z8$kY+1}u<(>vpC|L<_l%8dCWV(1r*}gI+{xYUwq>v3gu6SLLcA=+(=EmpHutk5UMPbo?Z6@pAl)@m^hzuD^6h_dAaS$+ diff --git a/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_read_no_document/msg_DocumentQuery_8c2203b455d749bfae5ad943deabda70790612b96c9c7618ffb72ddc689eda15.json b/packages/rs-sdk/tests/vectors/document_read_no_document/msg_DocumentQuery_8c2203b455d749bfae5ad943deabda70790612b96c9c7618ffb72ddc689eda15.json deleted file mode 100644 index 98b59bb32cbd8f98e45ffaa7db676f11d4eaf233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55778 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 diff --git a/packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_contested_resource_voters_for_identity_not_found/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json b/packages/rs-sdk/tests/vectors/test_contested_resource_voters_for_identity_not_found/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json index 167ef103728..5e7468728a3 100644 --- a/packages/rs-sdk/tests/vectors/test_contested_resource_voters_for_identity_not_found/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json +++ b/packages/rs-sdk/tests/vectors/test_contested_resource_voters_for_identity_not_found/data_contract-e668c659af66aee1e72c186dde7b5b7e0a1d712a09c40d5721f622bf53c53155.json @@ -1 +1 @@ -{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":false,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z and 0 and 1) then this index is non unique while contest resolution takes place."}},{"name":"dashIdentityId","properties":[{"records.dashUniqueIdentityId":"asc"}],"unique":true},{"name":"dashAlias","properties":[{"records.dashAliasIdentityId":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"dashUniqueIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create the primary name the Identity","$comment":"Must be equal to the document owner"},"dashAliasIdentityId":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identity ID to be used to create alias names for the Identity","$comment":"Must be equal to the document owner"}},"minProperties":1,"maxProperties":1,"position":5,"additionalProperties":false,"$comment":"Constraint with max and min properties ensure that only one identity record is used - either a `dashUniqueIdentityId` or a `dashAliasIdentityId`"},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file +{"$format_version":"0","id":"GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec","config":{"$format_version":"0","canBeDeleted":false,"readonly":false,"keepsHistory":false,"documentsKeepHistoryContractDefault":false,"documentsMutableContractDefault":true,"documentsCanBeDeletedContractDefault":true,"requiresIdentityEncryptionBoundedKey":null,"requiresIdentityDecryptionBoundedKey":null},"version":1,"ownerId":"4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF","schemaDefs":null,"documentSchemas":{"domain":{"documentsMutable":false,"canBeDeleted":true,"transferable":1,"tradeMode":1,"type":"object","indices":[{"name":"parentNameAndLabel","properties":[{"normalizedParentDomainName":"asc"},{"normalizedLabel":"asc"}],"unique":true,"contested":{"fieldMatches":[{"field":"normalizedLabel","regexPattern":"^[a-zA-Z01-]{3,19}$"}],"resolution":0,"description":"If the normalized label part of this index is less than 20 characters (all alphabet a-z, A-Z, 0, 1, and -) then a masternode vote contest takes place to give out the name"}},{"name":"identityId","nullSearchable":false,"properties":[{"records.identity":"asc"}]}],"properties":{"label":{"type":"string","pattern":"^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":3,"maxLength":63,"position":0,"description":"Domain label. e.g. 'Bob'."},"normalizedLabel":{"type":"string","pattern":"^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-]{0,61}[a-hj-km-np-z0-9]$","maxLength":63,"position":1,"description":"Domain label converted to lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'b0b'","$comment":"Must be equal to the label in lowercase. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\"."},"parentDomainName":{"type":"string","pattern":"^$|^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$","minLength":0,"maxLength":63,"position":2,"description":"A full parent domain name. e.g. 'dash'."},"normalizedParentDomainName":{"type":"string","pattern":"^$|^[a-hj-km-np-z0-9][a-hj-km-np-z0-9-\\.]{0,61}[a-hj-km-np-z0-9]$","minLength":0,"maxLength":63,"position":3,"description":"A parent domain name in lowercase for case-insensitive uniqueness validation. \"o\", \"i\" and \"l\" replaced with \"0\" and \"1\" to mitigate homograph attack. e.g. 'dash'","$comment":"Must either be equal to an existing domain or empty to create a top level domain. \"o\", \"i\" and \"l\" must be replaced with \"0\" and \"1\". Only the data contract owner can create top level domains."},"preorderSalt":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":4,"description":"Salt used in the preorder document"},"records":{"type":"object","properties":{"identity":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":1,"contentMediaType":"application/x.dash.dpp.identifier","description":"Identifier name record that refers to an Identity"}},"minProperties":1,"position":5,"additionalProperties":false},"subdomainRules":{"type":"object","properties":{"allowSubdomains":{"type":"boolean","description":"This option defines who can create subdomains: true - anyone; false - only the domain owner","$comment":"Only the domain owner is allowed to create subdomains for non top-level domains","position":0}},"position":6,"description":"Subdomain rules allow domain owners to define rules for subdomains","additionalProperties":false,"required":["allowSubdomains"]}},"required":["$createdAt","$updatedAt","$transferredAt","label","normalizedLabel","normalizedParentDomainName","preorderSalt","records","subdomainRules"],"additionalProperties":false,"$comment":"In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted"},"preorder":{"documentsMutable":false,"canBeDeleted":true,"type":"object","indices":[{"name":"saltedHash","properties":[{"saltedDomainHash":"asc"}],"unique":true}],"properties":{"saltedDomainHash":{"type":"array","byteArray":true,"minItems":32,"maxItems":32,"position":0,"description":"Double sha-256 of the concatenation of a 32 byte random salt and a normalized domain name"}},"required":["saltedDomainHash"],"additionalProperties":false,"$comment":"Preorder documents are immutable: modification and deletion are restricted"}}} \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_contested_resource_voters_for_identity_not_found/msg_GetContestedResourceVotersForIdentityRequest_365e8cc19afcc569d90d85a2a371ad49d3ae7bc38d217d85b1570274493c4d7e.json b/packages/rs-sdk/tests/vectors/test_contested_resource_voters_for_identity_not_found/msg_GetContestedResourceVotersForIdentityRequest_365e8cc19afcc569d90d85a2a371ad49d3ae7bc38d217d85b1570274493c4d7e.json index 0fdf3db6b696c5d0a37ce7b988b8ca4b429a61fb..38cbfb105afd253e61d57156ac7e40d4a178e588 100644 GIT binary patch literal 58667 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 literal 56918 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 N+h#ctfBTkP_dn4>7gYcN delta 4794 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 diff --git a/packages/rs-sdk/tests/vectors/test_contested_resources_ok/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/test_contested_resources_ok/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..327defa8128c8819e286772a001e49da6e318b48 100644 GIT binary patch delta 3525 zcmY*c4UkjS6`uQUNLUp%4hVz%Y^=lbmzUhlO9HOQra(dH)D2ajqtK1J1^JO-)v>ly zR|2*c#un0?C8zvu6kHGm0uf_vkvLQAbeKvU+d7IXJ7siW@F!D$YSj+??tR&%o!LoV z-n;MKbH4MP?|ggmi{ZPvhZQPTT_hNb=|6{#Exd`ovQ~*09qVYME%KoWw*+I+U~IZs zfln2TVKpxB8Lz!?tLHCX6^zcn&qYH=7bgzcEy$T3IYi zDv$Tl*r7ox|G?qEWZ_WDZ9Xc@44T!C4UORZMIR_qbG?-Kcq$h*Sz$^n^3b|5VJiL{-g`(9lfk?dg#MRHs8J-0qYM+-W9=J zFTegE*|IWsv=kT21DF?w4>ra*r4^-x!W;TduS8nO^QcE|A?=FRy46!ECpW zS{o2666DUOrA=+ug*mm$a_GFR=<+1H2CPY$lP}95^vZ+~E$eZyxUvK(hI!&{ys1;H zpM}iw8$Fzk2|zbmaiSU6_T~_@evUeZSsj$V0Sr943~_$$c^&=*#A%SsKP@A4bmsr; zse$R6ZBybJhdTNc$`j$#PlShhLpJ}q7f3B1ulP*Vai;XX|!M%xYrmn*LtrFcia5MLDWN& zkXsK)kmM3lMpcS^H{Uset94*RYj-UMXCD%p^_HSd4@WuGD{M+W>;@9B!-hp%KMDcd zTi;YGu7@fkT+n}23z5z@MCed5&cjCu+t7yBeQAp7$ARJFWO$-$U@$XW?zz@6PqN)!inQyMhU3MZ z^S&O%nWa{WE0;hT|1~ngo$F;c2mI(tWZlGtkzyq$W1^k>8>7W!YQK*v7j0HL_dK%T zz*5=9>3@LY>4#5eyPZyP0~{EG5Ai46zt8{9&7fDiqnqkOah z@NR8VRGFiw=Yp;~iX%aSD;L_JFFvl$l`6Mctl;Vquqm?|`&Ac8rx?hL^oSV$=55i= z)m>It~_Psjz93F;OcrSUJArSqu_uKVU<4r*o6>Nky#R?Bb9+29}=9*I2zGakC)#r zmERUlJ!5?syQWJ1`C^LT)M;!~-Xi0r`pY6IwOlRN$}3#`wCLB6^a#q7Lj z-B&u=W_=~7HNL!*dC_XH^yId)-Kx}b#wvKsS|cxT0+c-L=$0#`U$K^nUt;i;3Y+9i z|3Dksdfw4%eTIoXZpi?KNS~|S)OCHWpVN*#XfL$)pwC@}PBpsU(Qf5V8ac}q=AZRq zQk=IDl$U0Q6tvm7D!|wQLrKh!aDv?-0R471T3Bbkx&C-<()goczM~spozoM3)E<1S z`4atXrgG1VkY8;Q_|$%Eq(wW`V%4-J?HGNfD@!z8!@PNiJV@09+>D;Fn5xi5Z4b6- zY3{?h@De;c2PMJC^6|O7*c-Td1_nC6mp3t)QDD@=C^p=a20S}oK}nUKDQ+hDIr`hj z@EeNv_CV$|(AvPjxB(V^=@7CSOylarshOT2y;~RM133)GYO{yOJy%0&-H4jeDR=4o zY6k#s#{>5mp+$Ay;=A+m=QS%3<{pNqoeRV%=_nosY30`+0o$}6pvss?E&~goXW8Es z_`P8*2->pPp{}9Ir1$ZHuqm9*1C}UC)5e9V)sEBpF(HE=b&dh0=SCRf>C$GfB8ol= z!i;_7(JG}uf?i*LOh(aG80AO8dbnbiJq3)%4h`!mZAPcZctiu&T^~Rs?uzr%-$lv& z2Ot}3K6NPdrme>?{p$vFCdTntc+r|sxQw}SWlogN-R$DsH+z|>D@=wS^+UL`M^4k# zc1!!=gaHdVz!k9Q9S>iA2JD!r=X%YP*0^G2vuYXT>@3GBN~*9bPlwq@HY6tb^mk8ORr2;NyGU3tIcB&c)$_7^J2a>?d z;}D+qBMUb5{;P}vCm>PA*-++EnBEBt7LR;Wn<#%zjnvN{15&M*Y90yJ+D(7wyf7!8 z!syyC*({9m#b@LoNl}R*^!>VLNFPc%^gE*+LjOHeFkyJ>3|!VNPp`2!n4sltO+-PP3ownN^? Je|TAL{4W|?894v| delta 4833 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 GfADXF(*r92 diff --git a/packages/rs-sdk/tests/vectors/test_contested_resources_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_contested_resources_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_contested_resources_ok/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_contested_resources_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_contested_resources_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_contested_resources_ok/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contract_read/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/test_data_contract_read/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 68a0af982db7041426d9882b33f31ee5ab1c4d42..44f60a39152ed18488e16c9ed9c115704eabb437 100644 GIT binary patch delta 3541 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 diff --git a/packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/msg_GetDataContractRequest_1d1e53ab5e04d9ec5dce4ff9ac048c03122daf7ab2e77108f4bf44af1ad15eae.json b/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/msg_GetDataContractRequest_1d1e53ab5e04d9ec5dce4ff9ac048c03122daf7ab2e77108f4bf44af1ad15eae.json index 6692ff51987a782cf422f5bde82fcd4bd63d5303..29c550b380202801708b19be1bc7975ec1ad41ba 100644 GIT binary patch delta 1830 zcmYLKTWnNC7|yoGb6T)h1VZVSwouxoGiT;pc3Y5zT1qdtTUu_V3hmNp;)96~f@qAe zQQtID_cJC&BWsL7gGdvMFGhG!LV(18CMeO6#>C45DZcnbh<GrQ5}f17U@s~Xj|KcD;3Wq(zxES9+Q>Nw`?>I(mf)b5ov#MpIPC7AU;sq zVWG~tY-@V11uE8i361Gy5A$gYuW9Sn$YNO*SOQk=Xo1H?qw*t$wa)EO#`WcyTzol|C?gO7Q?k%O2m#xr*1O}bI< z2_wHG3+50v^hxB_C|(|-G!{2{vME4znaLv^i(e;V!c587tJ-4veY91#=JM$5DT6dLuDUPW4CT>FuMN2h%h+y|Xs*sG%sZ!VD~2Jn8y zu56}Mc?YK{PFYHNCxlFDycXvU7bx>wm5sZ--N2B-&2?Tx{%q35@0;X(5`5fh)wsIZ z$7kFyn|ug0^hM0Jhr5#`fF9|l8fIurb-I{d9h={bEW_x@CLcwHibdIsG5N(h%|;DX zpO{(HU}L%GQt>#_wr>W6#kpn9J24Sd(1f{;!8)^+qQrwJ3a1LtZcC}bVHIh^7Q^DvsCd=VX*?-(<`0xWd)Ajz;j iw=~8Wd1^P`1zoYj`xvb2@}R{x9p7P*%NdrZ-v1BzR%!tN delta 1836 zcmX|?U2GIp7>2X!bY|PymSrimEla1+AMDQAIlE_Oc2`O*P+BV#E2Zt0@>A9eAt1Dn zs4+m+#ORGt!fRAQR50=H%1!V}xgaq{P-yi^F>Vk7=bT+{c6N8>d_V8| zeBZovHT2chQ0aWQI&gg7@p6v9-^q4-7d{XQa3R)(sfUiQ&N{wuJoV{w$Ir;;^cVWn z2WpM$rjWM;+9ORD7mc$a*nK9R8|%Sn)WGje4)R+(#B&1kfxzHi2d#A+#UTU7Yh2un zTL^59T#HNR4E!_Wq7<=kJi+ki$}~=QTDY^H;oy3Ge}S%-w;SLC4oYzom$D3R^isU2 zh51H?o7E-`O)=cv!tv506syU=cv9g0Mvha3G)A))SehX_=Hk^phWBezAs!)mCX*F&)|zlfcYs$$yb_i%JJnH0}opC^~D_&v)jbrq@&ut5pzg(3&Rwn z6ftmH2z;2Qd{Gn2CsR0U3!GS&4tqJwC6X%SvNnd(114S@VwkNl@r|iNbwn8^yJX7( zKQ{{;X-VOgg1l#<=q3?s=J+8Yur$SSt6RIUu#c`~$425*n))u)|1pumw$YS2wbUW- z<|YQWS37aL{b&oRU?EQs6uUW2juI3Z16zISqF|vR&++*>>Vk~^tBc`wtBaAiz@C*! z)xAl^-``k)i(_aa4c=+sKqINvXM|+4E^bvttg7u^IdZTd;kuQ4)lH=96-(x2|k zpf$o3nUdO>0abLlK$+d{vkkpQY;)T@)kG;m8K+H*ji+$U4lq7Q zF74uBKZOg#W=B>t(EK#V;*2cT#CriLOXFzoX6Ub}LT`VPcn+X>F$|jd0PWRlaQztv zi^F*wtS7nYK=DZz^R*t%1zP^^$23^IE2IS)`U*kA%?#V)KAvb!Vm9XEXn!)~VgG=K zh?7K{=VI@}oHj*(a}J^2WSkjbC@>%MG)dA4w^deN@vGP^;4)Xu&E;M42`QK~Mz4b3 zNc49$i%?3TytOVF63XYHm|H z8$kY+1}u<(>vpC|L<_l%8dCWV(1r*}gI+{xYUwq>v3gu6SLLcA=+(=EmpHutk5UMPbo?Z6@pAl)@m^hzuD^6h_dAaS$+ diff --git a/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/msg_GetDataContractsRequest_f229a0e58a5c4fb050f57c087bf067bd9ccc29eca3092a5664a5a9ba3bb7e967.json b/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/msg_GetDataContractsRequest_f229a0e58a5c4fb050f57c087bf067bd9ccc29eca3092a5664a5a9ba3bb7e967.json index ec0cef7e5e63ae96d19a64b6130eb61388e5a6d7..c06956e6e9a942964b8106641300638b649b691f 100644 GIT binary patch delta 3723 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 M*i(6E)c*Z{0IPnDGynhq delta 4528 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 diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/msg_GetDataContractsRequest_93bdf343bce1bafb96fd873236cabbc4ac6ad7e80f0e55fe98bbcfbebf6c0878.json b/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/msg_GetDataContractsRequest_93bdf343bce1bafb96fd873236cabbc4ac6ad7e80f0e55fe98bbcfbebf6c0878.json index ff9d774287eedda17db16338b3c0c87739a3e7bb..44c0bf2a90ae33fc7b489b627f7d24f6047b18d6 100644 GIT binary patch delta 1834 zcmYLKU2GIp6wcu6%x)Gwz_MkqWqra!E@f&fo#zuOZiD;39-y?C{8nRHd$whl!2q!i$ zOgTC(Zx~G#EU5l_n+fI*#*xDYAob4EcSY6sdO-u zYh!X3)gLu+<5`Br9*eryFXvt`vvnA_Vc_fSRIl1Ztk4Q-q+=ewqThr@6FAmy(+zP< z`U1A)3yu zUj>q>Gx5XbI`ma=RM5PyL>O+hI6;LA{S3)2k)=tlNr2~)KGJOtn(|#(JAG_#aq<1; z$M7A@=dA4241u!+97l&Z?Oh$MmO#f^8?)Uej+R(>qrt^g(g~hV?qwJ(2+rdaNouA< zP2)tjhm(7iCLXr?cvQ~tXl=cMvmfh)G2d3%91Vz{Y_O>Zj)|y&*MyuRNpV16u3E>z z6eqIzbS+)CQOCXAj+9oc^f9Hc5Nau#i5iA$DHf0?@a+}{sdO9%!WM233&pOYk?r6l zX9KM@7DR1haG%ue`?Ve(whK(RxoB#Y)xChtWDW^-El1B@56gsMf3Ah%&P#!yj`wqn z&}5}8UdkujB=YW%V)4%|)$nkggSSWHIMS;WQN4@i5Q?L(RLxJ$bA`urFw+FC)#<1j zEb6WCr4}60V`x>~qXz`a zh(9?8iFc>^kux@MzG+n=%-(#y!7H^}9%Jl3e68F-?Y% zz=J9^{Yevxm5YgD15fQ%)rTo+a)$zmwB!@qtSlxdd1P}kapd=0 znLu0AC0T3a@H=@DBRL-5bkR`*CFIQIa*95eXM>B}K=4Jgiwg4B)u+|E45N2OJ!~Vb zf3`{WexJNBP~hTf*ugS6|7DLlBn~f8xYd(Z6lUd%hOj_KOC0GGMM|8K$PFH+i1tZe zjf5mXy^W;=vB9Z74{t>{?(BQaRx)BBSr^V1avPXj-@PRG|+js(+#!lJR_ME7K%+L9Z6|Z$p^;o`45Fe<&bqp8x;= delta 1838 zcmYLKTWl0n7|zz+nQm=qDO$EIwA+O)NjsM_J2Shb1=`Zmb_)r;AZ>xNTO_1n6bV8i zQmlzFCP=w_5?_pBj5INg)({^cKJKlKWozAmkG{bqjH(R?X5a4#Ek-uA)B*yYN%LZ;$f-HQCyVO>UgWh z;4%#}wI

Hn$)W*fq|Ud89x;My-UP}Zp7t07Ab_;s&^6MIa=6A^4_wlH2FbU)E- zqde!KX}zIZ`l!>yv=FMT@r;W#v7k<`;95d>MNeaXnEMdcscwOV$`J+FyZr>KPa>e> z*Kz~rJ9O;e+IURE!<2)ILkh%@gQbxaKC5+ca!snhTMMT;g_;_H10yb`vKoGf$l)X= zrfPC7na1xifj250oEr-U|D3$XV;=tQ3YaM!5iI<1O9~6SITks~t&nH3&q|*}TpW>z zrg4yapO+{RJz1o+MJPt@#}8DYFREcYZ{bW*U}|d$edS@?Ycknc1hqpB=GNG_SMT6{ zm5l|e?vIrcG9AZ719hR{?s7pPEGo>z@N+2~re>t#1`{T3jgmq|n}^;Kt|evPbV*7G zQMHZJ6imm{0gUlj8n1MOaf?*{)h876!j=06*WGO?QZf zMwF$uCR?qLhlBL4oY|4S2c3$7GL3)j6(%>5U!)O*mR?KFXBNTJFWpbC$tQg{mv4B^ekK z%_eSgl2c>Bhx0VLRIiTZtgJOCwHL{xINVS1G+z?3z{x$f*`HzH~_t zl>0V42_hMs@?LhgKqO`AZx{?hO)6XlmUL;ric6K)c&{sPuVlgA=5l+PR!2)xD9Af_ zXM>A%gN$_U7DQtTrTmY)HcXvoGpgFnB_fD!?s{yC2xa5|_@~UFf;8R*s=xX_h*Wme diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_epoch_fetch/msg_GetEpochsInfoRequest_b2b426ac4a52cb4cb08904c63386caf3663c40a12d3b03827006d66058e439ac.json b/packages/rs-sdk/tests/vectors/test_epoch_fetch/msg_GetEpochsInfoRequest_b2b426ac4a52cb4cb08904c63386caf3663c40a12d3b03827006d66058e439ac.json index d75ab7b04dd22fff51d90404f0ec79424f9b7541..2032d219313182f1e4b41dcf4f0ec0e46a7f623b 100644 GIT binary patch delta 3234 zcmYjTeQ*@z9iD?_H&94|l)-9Ef+&)(d;8w)^s16k4hlz=pIAmqs6!}MS%q)(Y#o^34 zxx)vX%mb%~9MzQ>d61X?)5o>`eP~kvr^*$Y+rucBtKrNf8wYAbSh>nU!=Dujc9>gh z0y=V{77At=$xRlzcIe3s7J@l88Xnbf^twXn>pBXm72-Q=bl4i|kC|vLG%)jsiQHlX z2VPJZXbj^xEL6Q>xV2h9;q-?l)WN9t*{45JSd*o&U`81K{bv+6?+YSvmyXhQh5b+3 zuyP{Uc9kFem4^OalOMLc4=wnKLPNd|`!VI7m6!JI3ZtV=!zEq0qecX5^i>&HaLmFz z=N0njg>k8khus!I;);#tl!5v-lLw2SW?>X6-+}#ag}QMz60cjlvJsSQt z&O$>|6zM;j-Wi5n4ZF$+giu$>7j+PG^3XYw$UWk4Yr0#R6NtcCZDH+x8}XolcYaIc z{zQT@Xb9w8+fAI>6T#3PKJ;swq(wYrY96v=i#Fe8VC{E{kUwA}-4I39S`DB7lspLt z{p5v*>o*8tWu=uN)I^oC&|JqKTM-c=aghr%_k@G4w?nwxCMZXf2P0Uz#3sKw>JM3n zFN>hB$41FQ#myLae}+QuIqsv_@s3^CYGdwJ1(nBxG$`cFlTU<%H3z>baZt2cVeJJ6 zHSNTWVye2|XEEKRqq{`lF);9);>m6FH&T2vH7wrXVd};Le96QX6Dh;M@owcQQj~ad zw$I+fDdp}T%|$guo{ZfeXaPIQuY+KJ`4_9ttDBaY2#`YF$ z3|hEwoW~=9kCj^}Jm%q-%n2fAzKzno209M<77{0@e43P}-1WLi3JtUrD;%JHQ$_?O zXKmEf&GVo>`+@vl$D|euDu)})=tMpfKR;;6F!ua12tiZU``@y79TtnC^i$JAv}BP* z1xE=c-}8GNedjF9dD+3#hr$@>4slP^B==OZ$V6hUgVdIY$K1uu%55J)-N{B*EV0~q za-s5Km|o=2%TeB>it`M&K9`P)2WgUZMHHKFn$-C)N}?onrN8~k%@(qscmeT~Pod`L zI$rs4VMd6uzR271&CmkLDz{k=6eTxORf~NZ&P?LgXlHS4-xn0fgpjBmU1hvKQ%CM+ z!DOfHHjE0yur@+w7zeq-89qh6LCYwxK}f_c53d)d6poMbGqZD~h4w@K;RgPoaF|JV zsWOB%#)t^FB<4f@>N5)c_u0svAM&7lFx%6jCp|w>m@!LZOpYoI1Ep`+)M#tVw1f5ZjOO-b1&VMu+fFVH-OAwU?RIiw3lCCVS%?)Bp@flmyK5FdM91toZDMv>p=N^f4VHzCAo`~A8$EVw!-*?_48-L~pQw<( zTT4GZJp^i}MtO!&^q5ue^DLZf0uZbHs!lw1Sdk zoqIJSza@w+KjF)?;%63Cd?l$EL_9I9HLH7WmiP)syDYcLpiE{P(lIn1zh^|lO z;q1#C10Ls)u!HTv-`RXy{N#&+6r<}$vaS+2M?$TAJ);ANPb=qw3eVxfM&}*G_k`o6 zz+f6k<;?ivP3q5Zn*$_b&)q(Cop*$jJ41M9Ul=uo8l>dBG~fN=pm>9*eZXIPxy|pA zYrVXt4$_B&ttg(mo=QlOkG#OfmI>MHfJ<<8 zxp9;|Ib7JBDpLY$V9_vybH}>{*<|6->vQq(Y(Z5Dx> z%n;5Xs>w&7XP@J4)44!66gc9`SaeL-h9-_d475|_{@dbAcc0hEZk$H-CNh6;^fh^) z%|h7~zv1?L>FL%Bxpzl%@zYm1TwS3$vb?r*tA+$D47{ZDEinq7W_HL$zXD`3%5k3MK5GRdY%e@9+>TifpZ Iv4L0r56BH8I{*Lx delta 3231 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 WFdXpV-TM#;Yvb+A)V9XJ&i?___z;Z% delta 3290 zcmb_eZERE58J0W87f6a-K>=wL0*Hz@_v6^tjtR}zG>M8S6eGmSSE$8kDI1iOtxTv1 zc%h|2Es5o)q0>f*%a2k)ngmj%e3UeTvJ7ZRXwk+70tzZ1P)OQkTF0Vf&p9VarTw0i z_}cg0bI$ud@AEwGTVLaStH#^%vS)088I78eLeqt3>J0qR^P;B!bu~{S_{guP%{8O0 z8Bw26VMb%}J^h8BdcoC4zVNy7k&DG+Cf9d+yshVcw8w+p2V5lm4w4rQlpeHDdci?o zv4M^=rn)!1(ZRSG7P^ZB;u8yyY4D=ttcm-VBPbi^qHDPWvtA&u+lMzVi}alc>~CDW zby(oROb6XCaOh_i+L!WsgE!rphoN$dZyWe)lZjN77hRVuodcTrNL zPDAcA6Z4u}h@&AM;X{ABg-mS}+x;P&7iuXM8BEwV;AbLbU~=E<#PdFQ4vCOZ&$c}! z(6J*75p&V^s6f);Sp@7qzcbNMV<2@Vj{teGyE=@@v(F+h*1*6*3j>#2*h~37!?kNn ztots+dk#*dbP8<)7E<+Dc=Nc8!Y2h%Sq>6Yy%0|eY%Fteu1B8fMZV2A#)sjb&G!je z!$E?rv)0C?a_PoOpD)5#$+IH(?rV}<{B30N;;}UR<+5i55;F0 z>kBqAN5VL?)<)%QA6kNpkFo#DcCp%KEML2bUu2G3yx3J}Dndz|YA2WwpOJ*bbNW3C zMU!1j|JyKI_-Hu&4j#Lrn()L7RK4yZr;TMJw23 z8_eOd2xK>qy6d^N-$CxDmV$aP$3o(1!uVMP<{?d^>?w?6OIXD$X(;g+c);rel~20f zQsTHgS#GUSEj>sW$&^fiOjCv^&^%AGq_mCFEfZ=@_QzH_%ZH*RJh3W-g&%1$zH;A5 z7xMsepex&ge@LfKy_fu17g5F7CoHV~ zM&RCy&L~(@#yDEACUbSB*em*fGd0rWErkwRVAXM$; zHTfFlHZF>$jeHGu=PH) z(UW9>D}@*3#NFiH9-e zpe=qMQg;QWZq%ttPRQrlNoiAb(!M7&-yR;-&RfwRM(@u~(-cm0e{Q{y+V0&Y*wYdG4o^-K|xZfJS zmnSupW@?!u0-5F!B-ubdT`~GEU94kH5Sc5hm1JeJc=*07O$f#9M7zv~zEv6u+2*v1 z+W2k{-ImqLX$#}}V(sub2YGKPL%1f;GtoqRl@DDRb`w^!`=*cGg0iL4<*ssZ!(mKs z5T;oX?7B?on38Oz(-%kw^`hghg9elg;S;qc}tjUtR`3)l-tsFft6xI+VApc7KslTLhvcWs`q2gpA382F-)p3# zE}QuKQWG_Hn#4F4XYZ&2u#Ytw7#J76j}8R*FRva29jTrpv0}bF|7Kvtb*)) zxt~XI@*OE+=GUh2m8LxSf`I?e4#w})ws)>e_I(#8WrHCW%O>bPEVV29-HAfFEUzg$ zf^BInlJQLzdp1+mQ;u$T5o~OxtW`)sRxR(eisCjWKl~p=>`uA)a`L9OAa+0m&I{Jjsi$ zx|co0Qli{-*ikdhNYiX)bCtb+=qH--KOSQ;1%Z}X2Aa3(*`uULb{^u|<5J8q)KdI% zE(m;W;Cw=xmaNx^NnP*Md&!w-C@CAC7gn`ArvN>zx*q$U=Uk+kwr;Yu6LcIcK@HoW z;2tzp*@xsTCY$I>9Afn>A`oQLm3(1ONz>~pg{@`{>6y-c)f8WPMWfKiLL@lj_VpK_ zYLYzNP|>uItf-kdc8_;bghtr!Z?v+3R3&Myb9Y(g|_LT+_ z$8;j^-JYfRvGd;tMiUhC3vhL@Y_tZ+r?-~ve&n|t(&XeI2TKtOp`R`;kC*dus@}&! zu-De;b=evF}?>^k0nt{KI|KoY-vje(Z`oTN+T?G=Vwq@;wS9_fG`yP7K*B e;Bp#Kyh7kt1+KEWkg~1DwF-K9XY5So)cIeV+*$Jg diff --git a/packages/rs-sdk/tests/vectors/test_epoch_fetch_current/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json b/packages/rs-sdk/tests/vectors/test_epoch_fetch_current/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json index 8b20de5ad5d2521aadf291ce05e901fea1a0aa79..af6663104973a597443a402120e5e05339b1b650 100644 GIT binary patch literal 67504 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 delta 2609 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 Hsek@Icf33c diff --git a/packages/rs-sdk/tests/vectors/test_epoch_list/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json b/packages/rs-sdk/tests/vectors/test_epoch_list/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json index 8b20de5ad5d2521aadf291ce05e901fea1a0aa79..af6663104973a597443a402120e5e05339b1b650 100644 GIT binary patch literal 67504 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 b%5*um8{W@vFW>(D$_p?4X?>Eve);@gQ%Tg7 diff --git a/packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/msg_GetIdentityBalanceAndRevisionRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json b/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/msg_GetIdentityBalanceAndRevisionRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json index d2bf9e3afdf0e5729744e4b1353e7ca83049fc74..2081d3de52cfe377e043f42edc7c3df00711d3f2 100644 GIT binary patch literal 62062 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 literal 62023 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 O#wUNZUgVGO-~S6$aNraG diff --git a/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/msg_GetIdentityContractNonceRequest_b7c02dae0c3c762ece1f70a36f88fa69b4749b19cc1f5ef0abf37fa0c04ab2ef.json b/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/msg_GetIdentityContractNonceRequest_b7c02dae0c3c762ece1f70a36f88fa69b4749b19cc1f5ef0abf37fa0c04ab2ef.json index e5027b6f9991234c9f61143401b89884a0f840ad..392a3b4bda6180cc02494617bb699fe224e7d6e8 100644 GIT binary patch literal 43743 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 literal 43692 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 Wwb6a#f3o<|rz literal 47149 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 diff --git a/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_read/msg_IdentityRequest_5789e2afa300c2ac039646d8b81c53464633a072722c5a04b15ee01f3a45de99.json b/packages/rs-sdk/tests/vectors/test_identity_read/msg_IdentityRequest_5789e2afa300c2ac039646d8b81c53464633a072722c5a04b15ee01f3a45de99.json index eeed1ff52bac73437b5b439d999ba734c0cfbfc1..b33403af6695cfe336000f83d53337fbe4533ba6 100644 GIT binary patch literal 75803 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 |osdm%SR(Fl;U6hwyslSTj;5}+qV+uEYVS?Y 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 |osdm%SR(Fl;U6hwyslSTj;5}+qV+uEYVS?Y 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 RUw`H=c7L>9sfv5mMK#CCmd(ZRE3%PC@;`6w* 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 diff --git a/packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_aab024dadbfad013c93705f5cc48c50b25146fb7a02561df7c93f0ec8066213b.json b/packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_aab024dadbfad013c93705f5cc48c50b25146fb7a02561df7c93f0ec8066213b.json new file mode 100644 index 0000000000000000000000000000000000000000..fa82da2e19fdff8dc94ff09c2dcce8c29cd015bb GIT binary patch literal 88209 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 BO9cP` literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/msg_GetPrefundedSpecializedBalanceRequest_1d1e53ab5e04d9ec5dce4ff9ac048c03122daf7ab2e77108f4bf44af1ad15eae.json b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/msg_GetPrefundedSpecializedBalanceRequest_1d1e53ab5e04d9ec5dce4ff9ac048c03122daf7ab2e77108f4bf44af1ad15eae.json index 5ad2ab1978a7a5a843f4f1ab8f920047ed54b431..d78537343fd643e0fdea66d7ba448d0668d0c765 100644 GIT binary patch literal 33938 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 literal 32306 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 diff --git a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_ok/msg_GetPrefundedSpecializedBalanceRequest_008d2955a77110519958e06d86047fda31dfa79cd84f0c1462fb9a2fc86d12a3.json b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_ok/msg_GetPrefundedSpecializedBalanceRequest_008d2955a77110519958e06d86047fda31dfa79cd84f0c1462fb9a2fc86d12a3.json new file mode 100644 index 0000000000000000000000000000000000000000..c51b114328dda0585b4470012865c78444f78b70 GIT binary patch literal 34608 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 Zq5qJkez*2_!~D*L7k^qG@avZ^{|2AmTnqpJ diff --git a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_ok/msg_GetVotePollsByEndDateRequest_90f99444544de47f7e78de44bcaca1b6ba4883a92f4533995dbfdbc5875d8bef.json b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_ok/msg_GetVotePollsByEndDateRequest_90f99444544de47f7e78de44bcaca1b6ba4883a92f4533995dbfdbc5875d8bef.json index 322dd31a015293885b90f7850ddf984435c0f1ac..eb84276a461473caddd39a84f9c4d3b377f0b590 100644 GIT binary patch delta 5936 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 MJv%ryBGtF@KhMrwg8%>k delta 4996 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 ofgyjTgZocw^lW+AmeER+IU*g!aSO5S3 literal 26538 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 MlOHVyeEIqQ9}ShP@&Et; diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_limit_2/msg_GetProtocolVersionUpgradeVoteStatusRequest_ec9dca65a964669b3bc8195d5ff106e5eda740be44679cc960ea35f2134af628.json b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_limit_2/msg_GetProtocolVersionUpgradeVoteStatusRequest_ec9dca65a964669b3bc8195d5ff106e5eda740be44679cc960ea35f2134af628.json index 0b8ba068242e3b43c708b50622ca8909a43f92cc..3d6f3320f3dffca452b56dc23d995ae194056e71 100644 GIT binary patch literal 33758 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λ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 diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/msg_GetProtocolVersionUpgradeVoteStatusRequest_92a45a0fe4f69d355022d2f2f7622dfc69cc7b123be24b7ad993281979b2a3a2.json b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/msg_GetProtocolVersionUpgradeVoteStatusRequest_92a45a0fe4f69d355022d2f2f7622dfc69cc7b123be24b7ad993281979b2a3a2.json index c381f1a03158ace3a7d3fa83a8cd1e1fc3981b25..63249e54e70a1262ed2cf89a9f9122be3b5a1e8a 100644 GIT binary patch literal 34072 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 literal 34060 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 a?7u&8zHEzo;KvXA;ND-&Z}P|AKmHqy*QK%m delta 4667 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 G`~Lxxjdq;? literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_881edc845ea288c9aa4664730b0f75e3bdfb677d0fa1246dbeebfa3d97c4119b.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_881edc845ea288c9aa4664730b0f75e3bdfb677d0fa1246dbeebfa3d97c4119b.json new file mode 100644 index 0000000000000000000000000000000000000000..851c2a3b337eb1cb2a7525becc7bd367460baf11 GIT binary patch literal 59119 zcmeI&%W{<06$Rjoc?uU}4b(zHv|l0*kV?5+F-}pzI0e`f7w?|6{&SE;0_c1vkwG zU%vU_OSj$q>bUFb^2OEZbbE7qng2d+PfT~KUcLGHO|M`5^y+=Wxca#H>CZp@`0i!@ z>CG>%U*G-f_wW9eGhe;=`waQ+7yo?w^RF-O=kX!ge0cKV$)BG5_VmyHc>3*MPFK$^ zPL~(Yu8!CB#p(1SKcDhpZ^|2&$_y}x#=t4Uw8S(Y{wz@|Gd69C$1yiaqju% z_?Mh|MA=#-(%zLaWnGtFHvWb%fAc^@*XPF4KNrFoP^97?@4Egywbc5-bXtp1n^Es0 z^rm=JW1!ix95LNo&aiH7kBa5b%cFYvCN(^&x^QEoEea(~Zl96&#}usrtWYcwJ$Tho z{QpFz=-eY~(z~Nqf7Kt)AKBLWehTM-^ATsuanSj*j5%Ee#GdszHZ}eJt|e%~Wk?Bg zkC>m+(5F;9o$gn%<;(9M7T3QWQc>K&F|}Q$PAI-|#kp60F1!0T9N$08#CuyNryeB# zy)6%u;nT%YR@nMQbnY!4zE}E(>CbRWZn?!RhZR|1u`ao#tW7$yrRB{QOh2I0mLaF! z^(EDO7MIiEmb4{BP7#*3DDt##bPZ8fB$;QwX1TnBAu3M@pa+1hg z`cWB$Q+?O_7340S&(EMGlQW^_LVzR2|YJks6vmA8Go%Let+E zP?fH^f<%|~Vw(j~YFh+x`mJxsBVj|56v9AaRL>6zBJGaK6w;x-sAHYyBdQH7ERhJ7 z62S+_S=)7W2Rl`S_6SU&Zj+G23Q|&HxGmmLbm%II>#QZ7T$FL-p!2(!q8L-7On?-ghb(4#1DYf)rB#CTvRciG9 zWWjJ?*P956rii*5Ks2QIr_88x3uS?}&?`bhx(9+=YnmRqV9BEPO5`jQ4cu|TYM9MxyD z78!FPIrMyL(1AlH_9C9FWlP~mRMM>`uPBj>SW;MuXT(ogw@RAwLG^VXo>+(vcMDdP zY)9$W^%+6Q*-}_+(DRmMGY`;Kr4Wx&$oVvQyU$Sksn0s=x_G?S>nRj1SXnP2O}kLJ ziHQX-vzG`h5K9&#acia_h7hS&gnQDjn?l~al`X@UDEA_+w`@E#1w;Y8~tIXuE#%2wSg^XQR3w#tf&?+>pGr9HLIjsMhlkQs~~dY^k0#~ zK!g-gI3hZUs^!u*oCoeA)dr^Nqir^k+(J>M*=eoRoPB~)I0oU#|EpPg1`*yio(wj! zrGt~iGf101!K^l#QMiFobv;EDddRHO#51m7RP_Xz{Hr7P1i<1L;5my#C8TPt!gGRS zJXw&3gzDPS5RRG1dT$D;q)?4NwGtkdA=3AIK7|zNA#f$RhO~E!JTJ8Csq}_A*5Qs+ zskT{9Aw>>qILUgWu}V~>M@U6d#b?`kph&x-5D_(g#V$jUq}(eKm26RIcYWZN#Al(D zR77%#r(9Z=TNh)OXZaxOEcoS2*-o`7AOR@Nwgd5#a+qY2!-Y1g^v9;zl&!inzGK;} zsa+BT;agA;7A5NxmVoYh?Z_FxgnPY0%&qIw2&k~B)hO4x{Ifpv*eI`zVLGkZNLB%=N>|w17pXI@+9QxmS>0wELhP6|!v6tn;3{ zu(Vmr`eHHK;&K}ubhSkADQ|ceF|f5o-&Xn9e3HSE=$H7V8y2`+@%W_Ou_n@K8m?Fk zk8sEeRS?OoTFXmJU@DYKdfY+{x3{EF(oljLF?NcY7%SNARF!~`2M4O;D88z|h=R0*Qm+jlIf`Da=xWdR4=W+>yrxwmL?@AG%D=NU5|Zm z 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 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_8af1fe2b83fc914ad833914a6f47686a168bd79e8751279ec53efb41381dd431.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_8af1fe2b83fc914ad833914a6f47686a168bd79e8751279ec53efb41381dd431.json index e1727e14ee6faee2491b16c5f2b3e3d1ead54191..014a9b296253ee33ef2605db66c4ee1360c1cbdf 100644 GIT binary patch delta 6059 zcmds5dvKKX6`h66E+8SRf}si;QLzc%x8HB~+aw~StOx-CW!p}x14uH|Rx1rGC=>~m z_^2q75cdqMRn$10u~uzaU5hV}l}@b{kuX&-k^su+NCmSkhK7fv=l*`XJbe6Logrki z`|a;>@44rkdpjTVF2AoJb;#2@>u35hDRvUwr!cPx{lMQEhLVQtySinK& zWEX)D*Pidkg5%~4NBh~BJGTJN&ulb5?!|*wS!fu~^=d3+?ujIqdw7P{>0YSOWoSE- zhu!PwLr&@r;+77DJs&E>J6s&t=|ElKO|}<$%!*a71Tm;P%v}`%=j3l`q4s?*0;3#6 zhgD$igb-@$^%t>cii?$h=j&pnpXsi&@j%K&iW|i0Do|*t=oXP=GMRZfCm&!j?lx|tsr`Os8V#=rT|bRRzX%tpxvZZ0Vn-}9rhO5u2$ zgLt)z?0^VTH~Mt2;^)}>z8~dn7P6BfD7jaXBY{(BKa>&5; z3iEG2o*Kb@A_YvOje*@EX2a3Xb#4g4xx~sH*TM1!L%8MuueW4|-s8$`%;5XHKCfNU z=tcbMGPF)$yr1Ru&U11JQfRr=MZ;7ZEn!)=Lf>abP}X%UhelX^LtD^*$2(l zI&QG?aSH-R6$T7rEEv@60Opj1clE0dmIhcZ)m}KimGcrKgB-+u!Sc|7X90iUMRb+m z*NfCt3!5i~bo{2&@Owj<;6Xv*3uFWbDL>Y4w{gK6Ttnm8(X7Gb5oAOHYldL)V^^7z z%=kzbZ&iemZSW%7ScbZx<@nt!qIohOm{y9+J4Dh45zO3dqoJKhLbEKDL{Ml}PEl9L4XPsq8c#5}LSJzP zi;X0x!JQo}2VoK#Lh0twp+1lgCBp)RI>xQWC2^5;QsaX@4Dl-;dXbBT@+2s&54%`Feq_$$oE=7NB=0rka&*Vd zy_#Q8BGTNDah*QUsN|#1+t_@TB*OiMBz^_6>DZE`e!`KZM(;3_H^@BhN1Iiq?Lg}U zrsEzmHH&-9dvY3a0p4U?Z>i5`D|Hr4=oEI(Q78S4aBs&AVPwVylY!ne6U{EqN)~%6 zBmz%zCfJ1WrO-;Qb8!nDNq(h2j9@_dw_#HAz4x+tNwcwmH5ct*!E?Rlom_9R{4kj7 zyy#iLL~UVp5qp6&6T4S4ylbfV5>~(>FQ)F`VpIx|s=UPK?|2oRittp+-xz7$yMfd! z85H76wL92&X^5LE{P7Dux6#Fzv$!VL3Qp4GhqwPCj3E}o#v(Y{I&5$yt0cdg}y zZCDGbS-Gf+Up!JQ7uD2=WsPC<|GD@l9%>mO{i%z3y4Tba8|_~RWR1qPJ|wsOR)Z|( z>E-SfG+RvM_Z&1`Vkr5a8&#s-#)JP>nu(j}D&hpDcyh5VtC!A7R26%% zv$-r8>%~?}tl8-r-7@IJ4&PdBUX~d5+9~$rbY=Te3}~`ehSOtyL&Mj)SfzLGNECfH zG>_(w9b|lQ=1Y+{O*cqQ96yLNZgy>fL^*riZ-sz}tg}$4y24CCZN_F7V2^UsEf3w> zpDJYNRq8Tt?4&L3f80z1WGwUQp6{R%eSPXrWpn9svusmxS$FcZesqu)ob1k;|9eVL zrw)WYCzK-BMj91}9;Wl3kmFU61Yv%58)9rCXzpVAhxzgH9a`bcS6*zQH@?lNRl{vA zM(#2ma`!gcqR+{+=?XpG6Fr!%t)UN3ml+%AEVS{7Ln};6EM{G%LuT4RJj8j3)zQFyfA&C2${?& z>kgZ4PKxA}j~TI>y?A5>H{(=Kd}{MLm$OY56WF*>qD)_I%q~A)i<6IUGhS?YT6<4dX+}Kp`DLVIPrB9PNbFXuIRALAovBSclbOT0Y!tS=cPo;%1^Wo^8Mp|Da-FMiv5V_|Ek@o9Kk7>>HS%iLQ$9ygiwQ0c{IO4mr>Bt{F4I6YhW`xv5Ue3+V YG`&80j5rDdjJ3c delta 4991 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 diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_d16c8e8b03c855309acbf860e1dca9948235077e8ed7be0a41a49203165d4dc8.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_d16c8e8b03c855309acbf860e1dca9948235077e8ed7be0a41a49203165d4dc8.json deleted file mode 100644 index 745070139b6dc4e4ee040fac2d79d182da74066f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33938 zcmcJY+fG|Y6oz}vQ$$?*!rRyo=Oy|8RTV{vsZa@2KynlD?)|@+!E7fao^M(zmts7J zwbp-Fv$rez+sT_Zr(bt>_gA+!r|;f;%TxZa-2a|u_YWWL9^OA(ecrvly1Bfay>$5E z=li@gU96^yX|+B-KRaJ9%5r7NgGD}GfBCfgl+l+TuJ3nk(BsqS)7{OdpKZ5)scg1d zzFkez#pYs}f1ai%sQsv`oBdV~cVB+o>H6yP)kES~JxxBny}Z2N@u!DG0(oAQ^eTB4*DiIlxkri^3wlK2Us zy>cX?1VTg;5giSuLXnC;?X`YREww&AKeec}sr4?Qlj7!i9mg zi8F;r{$=_LjG0#96l=Zk8gnQ?(Gdy55C}6P=1Uqnq~c*EDPLYcF0StuK@@v9nzmtT zgJKTWcUx?E{!(`H9m?;=nK+vQtyYW8Q7z7<94EtfgO4g>HXbpC_&TXBgAGh67bX3|X?9@)OQDP$+~C4JRV!-iYn7;!Pg1KiUv*qDKFs>o z3hD{U@RnWDe63n#r&EZ7oi*^N&t@I$lweaOW#ff`I;wiv-reb{V3ol82dAwlVt|^G z!vN5!k3uad8)BengK{$gW0=rea*th7TjL(=l7oS&RTwU}z%y0uR@Z^sz-N7CKt5De z9k)_dHC{nhP!@`|2i?jd1FqVkKzn` z90p`<`{_qj!$4Ej280SJDOeHZ{9{Onfg9}bRkJ=>%O254Zm@<+Wutxsvr7`OZDIfp zO_G#LHZLk>rckS}*G{oG=FlZiARr=fx8_!7Td1gHmDCB!azj~%HCPw9IVif7V~@%q&ESYD zHSdpy)}{y+e=x4a;_-)pDN2cnN@X$7*Q7BLkG;}N$_BeySnKf2Qnd<0j9t?~>>ZLA zsSJtQO5?&y4G+O0yQti&nk_IFZ_c1)onG^I@nD=#a;QndvRYzkYk=BK$GK~%~&tO*AQ zg>@J;;H%bT z%iFJ0f>9!^RW

cn4hW%u8L1d<$gO{os;0FM)DO^vYa9M5YrFRk&nC)Dr2oeXur# zBK{JULeR>=g%mkR;Haum1Sya0qI6;J&V}Sv9sO{}Jrvv-Z|H}$%7Y3QjKz0m+%F>Hx7fv&P0DPMsLT|`8yzt|aH}idS}02@MRF4lTtW-TYx7hl`(hZZ7tlDBg zS&+Xpf_@YrYJiZcQN0OQH;txg$8=1%8rL;hfQ53cVssY4j90l+SQ!=6HMOecRlC3t zqYf6YkA8QpZes++7P-{5xu zbdnbZ1QugA0%W}Pgy3QmNiJp=avx}F@=OB3hTeTs-5F2@%x8#T6s=o~KyNIOEKJ{o zy$19uD@UzVNwM7n0Ygj{RLPi0;&Te>aI8lK)M71eO zX!2$>{0bzQ5NgY>I`cB9}R5!nk;-VtgU1Z@gOKU{s= zS@zswn)sCWe9CJXw4|U8Ce^p3^nhDM zC9|&5RyGgZd6>>X3I!2iJHgJ@Dp8q(01T8{i1-WKmgK-~QlP4tVtCFJTd10gVY^Z* zQZM~0>dl|o9YwvhdfkP?saObku6iB!p?jMl zB!vZ8SocdvMx<29U`I$Hx#|>wTV{do4B}Xm35hHMob=?XKIhCnDxJ7tASv5(U<7VG zByiZMf`~k)0lFbc1N~JmE)tS4TS77^xWUQ*P1yLD37a%C#b|-Sk`jzh{Y}<2u>2IF z>E7yPAfYLR16pWE1yqma0OLh4qbrW>nm%AHEiqrD8nOxYNKcOo^rx6{9KJSmnhI zQOSE$Op)wuxyy41jjZE)am}5u^oH`b4R6vcbL(sN-Nn79qOU@K{1RpyWsNjI5M_Nq@|^jDaIxUEK_7}AbrzHvDAz=QejHa zH@Pr4ff;jwDye{(ViRchz2RFxREQ*`_UJypl7-|jRFV1xaqkjp3Q-x* z6OyWJ7@|(?RMj4~{K*CZS}e-(_kVqF=;!}4!<2WSR_VV}zPEn<9ud$c^k33+TG0(( Scnj-=7Y_c^p5#A&KK=`w=sz(4 diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_ddcc945f1edfbf9fbc63b0f6dc1be8c6db1347a705fa268e2786d6064e6a2e12.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_ddcc945f1edfbf9fbc63b0f6dc1be8c6db1347a705fa268e2786d6064e6a2e12.json new file mode 100644 index 0000000000000000000000000000000000000000..ff3c2af07886c861b65bebb4adcbc15e84e0c393 GIT binary patch literal 59173 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 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_e02e45966b98d6e253bff3131ab09f65453497787bce2c6aedfb234506b9d9ef.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_e02e45966b98d6e253bff3131ab09f65453497787bce2c6aedfb234506b9d9ef.json deleted file mode 100644 index 57712d0c11a2be6148dec914fb3288b16e432d66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45535 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 PzxeD&^PBwh*N^`Mllekd literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_efe823d551ebbb85ecfce4621de6c15221b0892c8cb8146a5b7909e9ce5d729c.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/msg_GetVotePollsByEndDateRequest_efe823d551ebbb85ecfce4621de6c15221b0892c8cb8146a5b7909e9ce5d729c.json deleted file mode 100644 index cc61950cccd6548efeab15f031500137d895f7fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45965 zcmeI(-EJJm6$Id1>nRLf?**44MXg^V4-f=~VN(GSSqdcCH-_FlRox?sv}JF96VO*N zh7_0EKj&1{snat{|N88kZ=U~h`~Jh-ySLB3{pQ!a>@P0vf6l89AHRS9@w<2X8%o^QRAa>v(f{yg6RJINiLuesvhjjU^u~^23{-f4u!MqhEjj=ELna=+o!X z&u`!U_($8_zcn_yym)naJlTWL)N@|`>(vwh3?<@&--`3+-|=dd3?(EPtQI*``fc$pa1>e z&%gagus9qq4lgdpb#*u%U*+{N|MutW{G6|2UuV$OA)saG<4F&vUgiBi8+AYS;+zecI-)EViL`qKri|Zt^aR!LwKc;_0F~`ejs%w4az0N5FqmG(z z6;i=G5a!ov=&=+ZBU$+J{`uni%_1#|dpfq-u2MHD9+LH&Elz#?wd@}5Fn&I-#0OI< ztINan*;;%s<-8bvGx%&}JQ&|%jPU=6$_FE-Nhb1^$olx?n@gs&9J5P`Z+(}jk+RPE zm$H5!N>mimBwBXq7RTY%%ZXPTnWej=wuO<&U`<;BtIlOgcX?@BGb$-#iIio$V=dM4$rbsf5eKJ}R$F26Z(1>Ky26LS5%`wL3Ja7LP`o+L^=P6 z2y5WNU42#7Z`Rl&HjxY0)za8#ox$vqM6^xppo2vcxUhK@F_}`VqF$Y%Jm%1aCy+9N zysNoQsr0)ZO=U_Mp~{Ud$oi8(p5lH&Ta-J=q82UpYvp=}XiFc3pHV$&9qs6SNkRL5ibAI(FiE^> z-{qVp_z{&&iQq|EY9Ly(aZZV+!1|QVlA3Let1al0oXMT$o*E=e3?0-m+(~--L)gwO zC@MsWPEe{1vJN#^i(C$hwsP!|98w0SxPtk5JZ)_xu=sOaJCa~)8okdthA!66$3qL890Qm1(4;#T8P zxD>@6+lj(OdmW61P?T~>2j4eEtF>lG@TMrl)#J2;Z51M1Oq48zR75;bxyX2(l3c`W zixoDeU`5qkY!j92(t;93wkMbLK{IW#!dlmNeAeSnFy)u3Y^s6^4f}gjPVER#DKx6h0*kj5 zQ7LUv2Nqx_*ZnS!BN`R?hMI7QAg-gR9lok2gNNiQ3fpL>h|eh9d|#0GrKdN3FN(@Z zxG1VhcY30Tygrap6)u{)8c4E0c-QN+!BCM-R3)ASZ^Y%vJk~YjJ1A54tCr-vRF(tL z6KknOB%P>HMN3jdTO!N0U# z%3#J*?gbX3s&oab2`}wZg-CUD@p-Mg>vS6_sBV#4UCljxQxL9tCHG1(q>~hE;GKcdlnz~H1{1%4bLPM*sf3Cs5_UG z9pi#F(PBID!mV!w?ic1m=_P9>@)j?YYrtz@x>Yn8{2`-q58OBVkrmVki`wa&BSA!py?LtKw{p_&)Cxf&mBkoFriLchXL{ffZLkC+BIK#0qD zB_eQ%!6pUEVw_JnsyvyYs9fi56XHC*$5A?F?#p+t>`wKl= z8$gk+nniX&M!?q8%t=dwXfBE5fskvZu~oy^3!2DM!VTO~b>MyDtj z=>Hqza^UHd(1E8B8qbOfu;ibkn#@82Y`BxGTS~dasA+v0JWE@Nj>x6-+PForJ$ljj zX|^(@a+RXn<2Gm=4GFD4qpI+dwX~QHMyxtM=1=e@aS>rVixyo(yQ9TWosM2i(p7B3 zV5eYI?f5z+;}zkYKZSHnWUBW`ooCX)SossGG9qd$??Oit!RHA(rG>g$KdBPY%{S&I zT}km=kG#P+zl}dEFF!r#F4FR<2RRPykkA&A2$dWogBc>P&19k4D0fl_9j^}@q9~Pz ziZJ7)3m2$Sck7~U;t{PVq+3W-=Bud)3?}1=>kTDJVW7m-P3{*|{eGg!2f>6p2%V;hm=65DAhp(k`oc9F)RQ6&ZI0s|=0RkP5i$0)*y z?RsgD?KF7l^|pBUO$BMbu|YY(79T8%Jtr0gYV>+4?M+LPdn+QBFxc@sY)zw*@kzYB zPpx3&4s|gNM{Xn=lK6iaOjOd5XYT7+bbSG;>nAG8+FR0k{0#=5$#DF+ACcx2a15VN zfQ`OeU`43*>S@CAMg#$stVMebiL7Zy;b?OiQ*=ZbQc!%7f_mVNI|V{XEA%f(p+IS1yR3tD>4`|N-5A#?%eLPWm&l3A zt%q=Ys8ZJS_>>fc=soU@2alpEM}o4PErjI^CbuuJ<3PTCB$(rAmq|Atu%kdZt8|yy zwU>3?^rI^zr3grMbeI4C+12IY#ks3MrT6KLm~s*Nj{e37r4d>!-E*ZKM4bU0n-pR2>E z@5~=xy#b$jC!`j>Yx;g zD#p{S6(!aAJW?*7CzC}lDe!VFC;VoOpP3fh%zAmgUr57hJL*>(*Tw8m*Mm)iQbY-fxM&vYehEp6v?vL84Jjh0P7%5>i`Jbm-a3+y znnj31Pp;Hu7ac#N;>1OPOGWr_gRkR$~gOa>@n z*T*F6rkN>NJ1U8e5B`$%3@qP475Y~gvwW~f_qdZLoy|s7L)yp|J~@#mVYz7>AKUapnu|R8%BM0p zyo?WNR)v|5cwS{@zOvG(A1&R?&wl!ZEl=0xXFvbr$3U?;HIz(21y_qA$Fdkj$}VjQ zcpTZcOG=ANB~!#E8d#n)s79Tuw6s2+e zJ^Qx=(h>joj~R~njOem|<8YbA_TV$3E%ZN?>G85{@GF0F@s&3o{c3xWfByODziXu^ AnE(I) diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json deleted file mode 100644 index fdd13449e40..00000000000 --- a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/quorum_pubkey-106-150f3493ba3ced732b667c3347399c38f098a6a4c56c2504d00e9715df44b2da.json +++ /dev/null @@ -1 +0,0 @@ -b31169cc469fe1d309b0f5a73e610597a463653560f3dbe6cedda1eb26c1394ac862bc413d4e571588312bd3c1c700d0 \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json new file mode 100644 index 00000000000..bc7809ba8dc --- /dev/null +++ b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json @@ -0,0 +1 @@ +ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_ok/msg_GetVotePollsByEndDateRequest_90f99444544de47f7e78de44bcaca1b6ba4883a92f4533995dbfdbc5875d8bef.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_ok/msg_GetVotePollsByEndDateRequest_90f99444544de47f7e78de44bcaca1b6ba4883a92f4533995dbfdbc5875d8bef.json index 322dd31a015293885b90f7850ddf984435c0f1ac..eb84276a461473caddd39a84f9c4d3b377f0b590 100644 GIT binary patch delta 5936 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 MJv%ryBGtF@KhMrwg8%>k delta 4996 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 delta 5160 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 diff --git a/packages/rs-sdk/tests/vectors/vote_polls_by_ts_order/msg_GetVotePollsByEndDateRequest_90f99444544de47f7e78de44bcaca1b6ba4883a92f4533995dbfdbc5875d8bef.json b/packages/rs-sdk/tests/vectors/vote_polls_by_ts_order/msg_GetVotePollsByEndDateRequest_90f99444544de47f7e78de44bcaca1b6ba4883a92f4533995dbfdbc5875d8bef.json index 322dd31a015293885b90f7850ddf984435c0f1ac..eb84276a461473caddd39a84f9c4d3b377f0b590 100644 GIT binary patch delta 5936 zcmdT|ZERIl7R|%kccDXVfe{%fQ1N4=z4zVo-hHp-yG2JSNIyg)hL*k#7$qoB905V0 z#V`S+Ewu~gjY^>oB!eT;N@WBSu*s;=0mk|R1wnY3hz>@ej@m-_=&XHDUy*T4<}V2; zP47MToU`}ZYpuPvZZY<+NoxL!&kR|S2>;;?-#T9exAeaQvwQt6eY6z`Tag^^8GkA( z!uR+Ke`fR5+i~*^2mHzkkFs36VBXx)b;Bkf;>8Arl`5139i-iF;)cx%)({76gIuUI z6F>MZRJ}I_#j9+z1(L8Wu3~MyeJ2Ohg&PMr!q?ncBQ^K#D|?Bq}^r2 z>=d8Xy{m(9rxaSpxF~uvjMN)>ra8#Fi?>`BM6}LAMsEXo<1Mt0384M5 z9}Q>u`vwE?_nq$0TV9x}ZsQ)$n5eQD#Xq^R3X>u38m<^pKYl$hQ$FNl7W+GB7|!gh zR`q2jJ_+cX)$xSILrpZ+X5xo?LTKD);Kd0xPW)SO*CZ4_ZhJQ<%St5C#s{52=7kZs z=*N(CS%}}J0WdqNko!l4^0f-3=M{=l6dH%?2s}N-hIz?B@iG?~1p!R4vyuFXgZ#;1 zJouE0=y@9thUA+%S^};#o>71`p+;`#M_wV%u-cEpZzUp0sJtzRx;fl$g1` z0E2nEKUQoISBj(qM4-*N@4r7FaM8MD!a(F-1U9eDbj0oAvAn-hrp{J+l3pehuQ8zyc2hU~_ zyDr9lNgT71+iLamkbBL-!15J}{q?~eM$tJ5-Dl{+PMFTrO;|5$beUgnB1H#jy z;ZANo+z~MAmphO1_B`eO3pV1b_)>v^Bh@wvc*>@(Y%g7Mv-S-PJEK*ZPaY9mDD0eQ zW5;9{$6s*jp9`bra;O(sZDB(QLtB~as6Teh@3Runk+2KM&h`x=cL_JomZAt?aK4NC zW;v+aZ({lVJjB;dcg`6W0=lbS3W?!6EHq&tgW(nIR6NX*UZn`hkVkwSOm!J)fJN6* z5uWVBD{)?x^}FSPs}(7g)jUgH$|1eF7;>7M-D+%nO`mf-zo`a?kaeB~ur}mHuV^=6 zLDF14F#!7?3T@N;hbIrH6qcXR6f*W{p1nKTxl5v6L2poDrrH)V zh!x$~&DLq;p}MIA@Sp%Oq?w>%rrnY^F47zFFp|lVMq|&HWXD zz)IVdjrL#|kFQirqb9!uF=|2+T=-GC*Y=3+T)7msgYWOrOuc)}VsUsG6{NI2Vqo!Ng;y(NPc4&FrC51i$;gw2SApg4W+P6N zNN|TPa!`~_Bz0G(@Ma4GEnKYTlj1HDeq2|UF3e-%j&`jcQuT7tyzvSlBjhT?ARI6;TyM(l}Xrnj<7UKAr| z755oQVB719=9>`GB>ABkb{WiiX1K;AnMm+ zN3x(iYZ31w8D<LhI+Eurz{7Ta%2SCf?tVNrPWrabPXmgVF_Qg~P}?`lV-1aM9r0c_IXJn9{*+OD=S2t4p0LGwk~zD54KMOYfL=@6 z4>8lP50m8hq3$M#NEkJj#l6zZF{TB75PK5D^OjcC>jhwHJ%g@|nWQ~BLs3a->-V^r zz0L6q@6>OpnpDfSS{sE04(6qjwphf%`SEUi4m&N><;N4h3ZQ}3(Zlo}!74GaT#Srn zjHYBA{bo|4(4eTCd`qq6-#2EXm})JGn6R(SgpKZHs1K<&uG9y5Tmg&t>@^rWv{f_6 z4-_GBPuk~t14%n?q=3mCFSr4HAT+qms6;M`MW;cXw~BZPzbtocuy(9%61qoBdd{ zSj(E^wcDX7eD;=t#9ufigG9NuT@zPFwDc)V$6 z@8n)(Up8gm1!;?HvhKqJuOG(Mrpv+EGux^2?54XrKVjtS8MM3N z3FfT~c>E{t&a0(h(sYW9#8e%~)AH=dCP#7p zA_7Qb%DIk+vNTWKa>L1$LlLxlzBhHZw61s9h${azjN>$9Ark(!xeuayjw&;d*(4sZ?q#@z+^n7YZ zg@pr*OWSIfV-puurwwd=l#>$PRrVWsMb8?jT%G|DgP+GKOhVCQLbq>dCgaMnBb(sF z@GXy%7E#@keZp9CA%y#Oizg0aKPQ4RZAqxDRP*`|74~Pj$oyF1X~cV&-1m+E;PnA`Ucli8m(^C#L&4oiqWM1V#hIiglR2?Vh>W zcY#j#B2n=8Xc%Ycr0F#}q8`#>jeY3xTlZKq&0lDb5BG@E3PgPCGAsmu@bJ z?i!-+a2V@n$dp)+XyVe~gcIS+k8Sz0oC?W#=cZX$$6-sN>yT#>=^Z(VR)R>`-E(k^ MJv%ryBGtF@KhMrwg8%>k delta 4996 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 JsValue { BasicError::DocumentFieldMaxSizeExceededError(e) => { generic_consensus_error!(DocumentFieldMaxSizeExceededError, e).into() } + BasicError::ContestedUniqueIndexWithUniqueIndexError(e) => { + generic_consensus_error!(ContestedUniqueIndexWithUniqueIndexError, e).into() + } } } From 2facc4d798ddc96624d222cfe31ae10d13bb25c1 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Wed, 24 Jul 2024 00:17:27 +0700 Subject: [PATCH 03/37] feat(platform)!: transient properties (#1990) --- .../schema/v1/dpns-contract-documents.json | 3 ++ .../platform-test-suite/test/e2e/dpns.spec.js | 42 +++++++++++++++++++ .../document/v0/document-meta.json | 6 +++ .../document_type/accessors/mod.rs | 18 ++++++++ .../document_type/accessors/v0/mod.rs | 4 ++ .../class_methods/try_from_schema/v0/mod.rs | 32 ++++++++++++++ .../src/data_contract/document_type/mod.rs | 1 + .../document_type/property/mod.rs | 1 + .../document_type/v0/accessors.rs | 3 ++ .../src/data_contract/document_type/v0/mod.rs | 2 + .../document_type/v0/random_document_type.rs | 4 ++ packages/rs-dpp/src/document/v0/serialize.rs | 14 +++---- .../create_genesis_state/v0/mod.rs | 2 +- .../tests/strategy_tests/main.rs | 6 +-- .../tests/strategy_tests/voting_tests.rs | 4 +- .../v0/mod.rs | 18 +++++++- 16 files changed, 145 insertions(+), 15 deletions(-) diff --git a/packages/dpns-contract/schema/v1/dpns-contract-documents.json b/packages/dpns-contract/schema/v1/dpns-contract-documents.json index 973d7fe9366..723d522d91b 100644 --- a/packages/dpns-contract/schema/v1/dpns-contract-documents.json +++ b/packages/dpns-contract/schema/v1/dpns-contract-documents.json @@ -124,6 +124,9 @@ "records", "subdomainRules" ], + "transient": [ + "preorderSalt" + ], "additionalProperties": false, "$comment": "In order to register a domain you need to create a preorder. The preorder step is needed to prevent man-in-the-middle attacks. normalizedLabel + '.' + normalizedParentDomain must not be longer than 253 chars length as defined by RFC 1035. Domain documents are immutable: modification and deletion are restricted" }, diff --git a/packages/platform-test-suite/test/e2e/dpns.spec.js b/packages/platform-test-suite/test/e2e/dpns.spec.js index dd3dc06c1b7..53c88a5e51c 100644 --- a/packages/platform-test-suite/test/e2e/dpns.spec.js +++ b/packages/platform-test-suite/test/e2e/dpns.spec.js @@ -220,14 +220,28 @@ describe('DPNS', () => { const rawDocument = documents[0].toObject(); delete rawDocument.$createdAt; + delete rawDocument.$createdAtCoreBlockHeight; + delete rawDocument.$createdAtBlockHeight; delete rawDocument.$updatedAt; + delete rawDocument.$updatedAtCoreBlockHeight; + delete rawDocument.$updatedAtBlockHeight; delete rawDocument.$transferredAt; + delete rawDocument.$transferredAtCoreBlockHeight; + delete rawDocument.$transferredAtBlockHeight; + delete rawDocument.preorderSalt; const rawRegisteredDomain = registeredDomain.toObject(); delete rawRegisteredDomain.$createdAt; + delete rawRegisteredDomain.$createdAtCoreBlockHeight; + delete rawRegisteredDomain.$createdAtBlockHeight; delete rawRegisteredDomain.$updatedAt; + delete rawRegisteredDomain.$updatedAtCoreBlockHeight; + delete rawRegisteredDomain.$updatedAtBlockHeight; delete rawRegisteredDomain.$transferredAt; + delete rawRegisteredDomain.$transferredAtCoreBlockHeight; + delete rawRegisteredDomain.$transferredAtBlockHeight; + delete rawRegisteredDomain.preorderSalt; expect(rawDocument).to.deep.equal(rawRegisteredDomain); }); @@ -238,14 +252,28 @@ describe('DPNS', () => { const rawDocument = document.toObject(); delete rawDocument.$createdAt; + delete rawDocument.$createdAtCoreBlockHeight; + delete rawDocument.$createdAtBlockHeight; delete rawDocument.$updatedAt; + delete rawDocument.$updatedAtCoreBlockHeight; + delete rawDocument.$updatedAtBlockHeight; delete rawDocument.$transferredAt; + delete rawDocument.$transferredAtCoreBlockHeight; + delete rawDocument.$transferredAtBlockHeight; + delete rawDocument.preorderSalt; const rawRegisteredDomain = registeredDomain.toObject(); delete rawRegisteredDomain.$createdAt; + delete rawRegisteredDomain.$createdAtCoreBlockHeight; + delete rawRegisteredDomain.$createdAtBlockHeight; delete rawRegisteredDomain.$updatedAt; + delete rawRegisteredDomain.$updatedAtCoreBlockHeight; + delete rawRegisteredDomain.$updatedAtBlockHeight; delete rawRegisteredDomain.$transferredAt; + delete rawRegisteredDomain.$transferredAtCoreBlockHeight; + delete rawRegisteredDomain.$transferredAtBlockHeight; + delete rawRegisteredDomain.preorderSalt; expect(rawDocument).to.deep.equal(rawRegisteredDomain); }); @@ -259,14 +287,28 @@ describe('DPNS', () => { const rawDocument = document.toObject(); delete rawDocument.$createdAt; + delete rawDocument.$createdAtCoreBlockHeight; + delete rawDocument.$createdAtBlockHeight; delete rawDocument.$updatedAt; + delete rawDocument.$updatedAtCoreBlockHeight; + delete rawDocument.$updatedAtBlockHeight; delete rawDocument.$transferredAt; + delete rawDocument.$transferredAtCoreBlockHeight; + delete rawDocument.$transferredAtBlockHeight; + delete rawDocument.preorderSalt; const rawRegisteredDomain = registeredDomain.toObject(); delete rawRegisteredDomain.$createdAt; + delete rawRegisteredDomain.$createdAtCoreBlockHeight; + delete rawRegisteredDomain.$createdAtBlockHeight; delete rawRegisteredDomain.$updatedAt; + delete rawRegisteredDomain.$updatedAtCoreBlockHeight; + delete rawRegisteredDomain.$updatedAtBlockHeight; delete rawRegisteredDomain.$transferredAt; + delete rawRegisteredDomain.$transferredAtCoreBlockHeight; + delete rawRegisteredDomain.$transferredAtBlockHeight; + delete rawRegisteredDomain.preorderSalt; expect(rawDocument).to.deep.equal(rawRegisteredDomain); }); diff --git a/packages/rs-dpp/schema/meta_schemas/document/v0/document-meta.json b/packages/rs-dpp/schema/meta_schemas/document/v0/document-meta.json index 5afb60c77bb..80d20a3f775 100644 --- a/packages/rs-dpp/schema/meta_schemas/document/v0/document-meta.json +++ b/packages/rs-dpp/schema/meta_schemas/document/v0/document-meta.json @@ -506,6 +506,12 @@ "minProperties": 1, "maxProperties": 100 }, + "transient": { + "type": "array", + "items": { + "type": "string" + } + }, "additionalProperties": { "type": "boolean", "const": false diff --git a/packages/rs-dpp/src/data_contract/document_type/accessors/mod.rs b/packages/rs-dpp/src/data_contract/document_type/accessors/mod.rs index 004044bed5a..377b852e25d 100644 --- a/packages/rs-dpp/src/data_contract/document_type/accessors/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/accessors/mod.rs @@ -77,6 +77,12 @@ impl DocumentTypeV0Getters for DocumentType { } } + fn transient_fields(&self) -> &BTreeSet { + match self { + DocumentType::V0(v0) => v0.transient_fields(), + } + } + fn documents_keep_history(&self) -> bool { match self { DocumentType::V0(v0) => v0.documents_keep_history(), @@ -205,6 +211,12 @@ impl<'a> DocumentTypeV0Getters for DocumentTypeRef<'a> { } } + fn transient_fields(&self) -> &BTreeSet { + match self { + DocumentTypeRef::V0(v0) => v0.transient_fields(), + } + } + fn documents_keep_history(&self) -> bool { match self { DocumentTypeRef::V0(v0) => v0.documents_keep_history(), @@ -333,6 +345,12 @@ impl<'a> DocumentTypeV0Getters for DocumentTypeMutRef<'a> { } } + fn transient_fields(&self) -> &BTreeSet { + match self { + DocumentTypeMutRef::V0(v0) => v0.transient_fields(), + } + } + fn documents_keep_history(&self) -> bool { match self { DocumentTypeMutRef::V0(v0) => v0.documents_keep_history(), diff --git a/packages/rs-dpp/src/data_contract/document_type/accessors/v0/mod.rs b/packages/rs-dpp/src/data_contract/document_type/accessors/v0/mod.rs index 77c4aaf8966..ad134b558cb 100644 --- a/packages/rs-dpp/src/data_contract/document_type/accessors/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/accessors/v0/mod.rs @@ -44,6 +44,10 @@ pub trait DocumentTypeV0Getters { /// Returns the required fields of the document type. fn required_fields(&self) -> &BTreeSet; + /// Returns the transient fields of the document type. + /// Transient fields are fields that should be stripped from the document before storage. + fn transient_fields(&self) -> &BTreeSet; + /// Returns the documents keep history flag of the document type. fn documents_keep_history(&self) -> bool; diff --git a/packages/rs-dpp/src/data_contract/document_type/class_methods/try_from_schema/v0/mod.rs b/packages/rs-dpp/src/data_contract/document_type/class_methods/try_from_schema/v0/mod.rs index cab211ddc31..82019a53e77 100644 --- a/packages/rs-dpp/src/data_contract/document_type/class_methods/try_from_schema/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/class_methods/try_from_schema/v0/mod.rs @@ -251,6 +251,13 @@ impl DocumentTypeV0 { property_names::REQUIRED, ); + let transient_fields = Value::inner_recursive_optional_array_of_strings( + schema_map, + "".to_string(), + property_names::PROPERTIES, + property_names::TRANSIENT, + ); + // Based on the property name, determine the type for (property_key, property_value) in property_values { // TODO: It's very inefficient. It must be done in one iteration and flattened properties @@ -258,6 +265,7 @@ impl DocumentTypeV0 { insert_values( &mut flattened_document_properties, &required_fields, + &transient_fields, None, property_key.clone(), property_value, @@ -268,6 +276,7 @@ impl DocumentTypeV0 { insert_values_nested( &mut document_properties, &required_fields, + &transient_fields, property_key, property_value, &root_schema, @@ -558,6 +567,7 @@ impl DocumentTypeV0 { identifier_paths, binary_paths, required_fields, + transient_fields, documents_keep_history, documents_mutable, documents_can_be_deleted, @@ -577,6 +587,7 @@ impl DocumentTypeV0 { fn insert_values( document_properties: &mut IndexMap, known_required: &BTreeSet, + known_transient: &BTreeSet, prefix: Option, property_key: String, property_value: &Value, @@ -602,6 +613,7 @@ fn insert_values( let type_value = inner_properties.get_str(property_names::TYPE)?; let is_required = known_required.contains(&prefixed_property_key); + let is_transient = known_transient.contains(&prefixed_property_key); let field_type: DocumentPropertyType; match type_value { @@ -645,6 +657,7 @@ fn insert_values( DocumentProperty { property_type: field_type, required: is_required, + transient: is_transient, }, ); } @@ -686,6 +699,7 @@ fn insert_values( DocumentProperty { property_type: field_type, required: is_required, + transient: is_transient, }, ); } @@ -698,6 +712,7 @@ fn insert_values( DocumentProperty { property_type: field_type, required: is_required, + transient: is_transient, }, ); } @@ -709,6 +724,7 @@ fn insert_values( fn insert_values_nested( document_properties: &mut IndexMap, known_required: &BTreeSet, + known_transient: &BTreeSet, property_key: String, property_value: &Value, root_schema: &Value, @@ -725,6 +741,8 @@ fn insert_values_nested( let is_required = known_required.contains(&property_key); + let is_transient = known_transient.contains(&property_key); + let field_type = match type_value { "integer" => DocumentPropertyType::I64, "number" => DocumentPropertyType::F64, @@ -800,6 +818,17 @@ fn insert_values_nested( }) .collect(); + let stripped_transient: BTreeSet = known_transient + .iter() + .filter_map(|key| { + if key.starts_with(&property_key) && key.len() > property_key.len() { + Some(key[property_key.len() + 1..].to_string()) + } else { + None + } + }) + .collect(); + for (object_property_key, object_property_value) in properties.iter() { let object_property_string = object_property_key .as_text() @@ -811,6 +840,7 @@ fn insert_values_nested( insert_values_nested( &mut nested_properties, &stripped_required, + &stripped_transient, object_property_string, object_property_value, root_schema, @@ -822,6 +852,7 @@ fn insert_values_nested( DocumentProperty { property_type: DocumentPropertyType::Object(nested_properties), required: is_required, + transient: is_transient, }, ); return Ok(()); @@ -834,6 +865,7 @@ fn insert_values_nested( DocumentProperty { property_type: field_type, required: is_required, + transient: is_transient, }, ); diff --git a/packages/rs-dpp/src/data_contract/document_type/mod.rs b/packages/rs-dpp/src/data_contract/document_type/mod.rs index 182bfe881a8..89143a89a5e 100644 --- a/packages/rs-dpp/src/data_contract/document_type/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/mod.rs @@ -47,6 +47,7 @@ mod property_names { pub const PROPERTIES: &str = "properties"; pub const POSITION: &str = "position"; pub const REQUIRED: &str = "required"; + pub const TRANSIENT: &str = "transient"; pub const TYPE: &str = "type"; pub const REF: &str = "$ref"; pub const CREATED_AT: &str = "$createdAt"; diff --git a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs index 63a3f390d8d..927fb561a1a 100644 --- a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs @@ -26,6 +26,7 @@ pub mod array; pub struct DocumentProperty { pub property_type: DocumentPropertyType, pub required: bool, + pub transient: bool, } #[derive(Debug, PartialEq, Clone, Serialize)] diff --git a/packages/rs-dpp/src/data_contract/document_type/v0/accessors.rs b/packages/rs-dpp/src/data_contract/document_type/v0/accessors.rs index 90f8fb61976..39306888028 100644 --- a/packages/rs-dpp/src/data_contract/document_type/v0/accessors.rs +++ b/packages/rs-dpp/src/data_contract/document_type/v0/accessors.rs @@ -61,6 +61,9 @@ impl DocumentTypeV0Getters for DocumentTypeV0 { fn required_fields(&self) -> &BTreeSet { &self.required_fields } + fn transient_fields(&self) -> &BTreeSet { + &self.transient_fields + } fn documents_keep_history(&self) -> bool { self.documents_keep_history diff --git a/packages/rs-dpp/src/data_contract/document_type/v0/mod.rs b/packages/rs-dpp/src/data_contract/document_type/v0/mod.rs index 6cc38eb9285..9951c2b638b 100644 --- a/packages/rs-dpp/src/data_contract/document_type/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/v0/mod.rs @@ -43,6 +43,8 @@ pub struct DocumentTypeV0 { pub(in crate::data_contract) binary_paths: BTreeSet, /// The required fields on the document type pub(in crate::data_contract) required_fields: BTreeSet, + /// The transient fields on the document type + pub(in crate::data_contract) transient_fields: BTreeSet, /// Should documents keep history? pub(in crate::data_contract) documents_keep_history: bool, /// Are documents mutable? diff --git a/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs b/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs index 78d9c08f2e9..767df9dba91 100644 --- a/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs +++ b/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs @@ -196,6 +196,7 @@ impl DocumentTypeV0 { DocumentProperty { property_type: document_type, required, + transient: false, } }; @@ -432,6 +433,7 @@ impl DocumentTypeV0 { identifier_paths, binary_paths, required_fields, + transient_fields: Default::default(), documents_keep_history, documents_mutable, documents_can_be_deleted, @@ -520,6 +522,7 @@ impl DocumentTypeV0 { DocumentProperty { property_type: document_type, required, + transient: false, } }; @@ -605,6 +608,7 @@ impl DocumentTypeV0 { identifier_paths, binary_paths, required_fields, + transient_fields: Default::default(), documents_keep_history, documents_mutable, documents_can_be_deleted, diff --git a/packages/rs-dpp/src/document/v0/serialize.rs b/packages/rs-dpp/src/document/v0/serialize.rs index a26879d9ff9..0083216a12f 100644 --- a/packages/rs-dpp/src/document/v0/serialize.rs +++ b/packages/rs-dpp/src/document/v0/serialize.rs @@ -212,7 +212,7 @@ impl DocumentPlatformSerializationMethodsV0 for DocumentV0 { .try_for_each(|(field_name, property)| { if let Some(value) = self.properties.get(field_name) { if value.is_null() { - if property.required { + if property.required && !property.transient { Err(ProtocolError::DataContractError( DataContractError::MissingRequiredKey( "a required field is not present".to_string(), @@ -225,7 +225,7 @@ impl DocumentPlatformSerializationMethodsV0 for DocumentV0 { Ok(()) } } else { - if !property.required { + if !property.required || property.transient { // dbg!("we added 1", field_name); buffer.push(1); } @@ -236,7 +236,7 @@ impl DocumentPlatformSerializationMethodsV0 for DocumentV0 { buffer.extend(value.as_slice()); Ok(()) } - } else if property.required { + } else if property.required && !property.transient { Err(ProtocolError::DataContractError( DataContractError::MissingRequiredKey(format!( "a required field {field_name} is not present" @@ -441,7 +441,7 @@ impl DocumentPlatformSerializationMethodsV0 for DocumentV0 { Ok(()) } } else { - if !property.required { + if !property.required || property.transient { // dbg!("we added 1", field_name); buffer.push(1); } @@ -452,7 +452,7 @@ impl DocumentPlatformSerializationMethodsV0 for DocumentV0 { buffer.extend(value.as_slice()); Ok(()) } - } else if property.required { + } else if property.required && !property.transient { Err(ProtocolError::DataContractError( DataContractError::MissingRequiredKey(format!( "a required field {field_name} is not present" @@ -644,7 +644,7 @@ impl DocumentPlatformDeserializationMethodsV0 for DocumentV0 { .iter() .filter_map(|(key, property)| { if finished_buffer { - return if property.required { + return if property.required && !property.transient { Some(Err(DataContractError::CorruptedSerialization( "required field after finished buffer".to_string(), ))) @@ -654,7 +654,7 @@ impl DocumentPlatformDeserializationMethodsV0 for DocumentV0 { } let read_value = property .property_type - .read_optionally_from(&mut buf, property.required); + .read_optionally_from(&mut buf, property.required & !property.transient); match read_value { Ok(read_value) => { diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs index cab90f7575b..42bca824834 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs @@ -294,7 +294,7 @@ mod tests { assert_eq!( hex::encode(root_hash), - "edc1f51a2725e13e02f0a5dd9aad1b3de07872c9cd03e83388a10b0016a27f86" + "6cf0ca2eea48431b1df389a2d360fa1e9889c34f05248a7159b4e45c818fb80d" ) } } diff --git a/packages/rs-drive-abci/tests/strategy_tests/main.rs b/packages/rs-drive-abci/tests/strategy_tests/main.rs index 8ce28932b4b..651b4fa9c67 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/main.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/main.rs @@ -1194,7 +1194,7 @@ mod tests { .unwrap() .unwrap() ), - "5d71ec297867cf1e9b6655451385b0c72b56d582abc1576885a78e5754ac5f14".to_string() + "2f5fd65cc5392f9be3a8ceab38f2e284a0c1ccd87b744d3d392ac83a97d0f4b9".to_string() ) } @@ -1915,7 +1915,7 @@ mod tests { .unwrap() .unwrap() ), - "36116eb13b2dfada15853aa54f9c81ebb2590aa99d512c12604c4bd5d622c49a".to_string() + "85114fce944f2583751d38cb427571e00fc957f2fd6f37a355298e697370c143".to_string() ) } @@ -2050,7 +2050,7 @@ mod tests { .unwrap() .unwrap() ), - "ee6682a2acd816d3277c55b5886199029ed33c13dc902ea8efab3ba7f20271e2".to_string() + "b563c5583d8aae38d0cd841c956c44b029705b915af89416d20a3a20f54bfc39".to_string() ) } diff --git a/packages/rs-drive-abci/tests/strategy_tests/voting_tests.rs b/packages/rs-drive-abci/tests/strategy_tests/voting_tests.rs index 0244fe3f132..9e1f71fa528 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/voting_tests.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/voting_tests.rs @@ -292,12 +292,12 @@ mod tests { assert_eq!( first_contender.document.as_ref().map(hex::encode), - Some("00177f2479090a0286a67d6a1f67b563b51518edd6eea0461829f7d630fd65708d29124be7e86f97e959894a67a9cc078c3e0106d4bfcfbf34bc403a4f099925b401000700000187690895980000018769089598000001876908959800077175616e74756d077175616e74756d00046461736861e49b7e1e1286c69aefdb8b33243524d4c6b48b2e5782b834ae77b0c033eff5210129124be7e86f97e959894a67a9cc078c3e0106d4bfcfbf34bc403a4f099925b40101".to_string()) + Some("00177f2479090a0286a67d6a1f67b563b51518edd6eea0461829f7d630fd65708d29124be7e86f97e959894a67a9cc078c3e0106d4bfcfbf34bc403a4f099925b401000700000187690895980000018769089598000001876908959800077175616e74756d077175616e74756d00046461736800210129124be7e86f97e959894a67a9cc078c3e0106d4bfcfbf34bc403a4f099925b40101".to_string()) ); assert_eq!( second_contender.document.as_ref().map(hex::encode), - Some("00490e212593a1d3cc6ae17bf107ab9cb465175e7877fcf7d085ed2fce27be11d68b8948a6801501bbe0431e3d994dcf71cf5a2a0939fe51b0e600076199aba4fb01000700000187690895980000018769089598000001876908959800077175616e74756d077175616e74756d00046461736894be348633f0cdceeb5548e4816963ad9e2ff06432d56d7f521ad902b8e5ac8121018b8948a6801501bbe0431e3d994dcf71cf5a2a0939fe51b0e600076199aba4fb0100".to_string()) + Some("00490e212593a1d3cc6ae17bf107ab9cb465175e7877fcf7d085ed2fce27be11d68b8948a6801501bbe0431e3d994dcf71cf5a2a0939fe51b0e600076199aba4fb01000700000187690895980000018769089598000001876908959800077175616e74756d077175616e74756d0004646173680021018b8948a6801501bbe0431e3d994dcf71cf5a2a0939fe51b0e600076199aba4fb0100".to_string()) ); assert_eq!(first_contender.identifier, identity2_id.to_vec()); diff --git a/packages/rs-drive/src/state_transition_action/document/documents_batch/document_transition/document_create_transition_action/v0/mod.rs b/packages/rs-drive/src/state_transition_action/document/documents_batch/document_transition/document_create_transition_action/v0/mod.rs index 10ffaaebb92..e61fbb73c9f 100644 --- a/packages/rs-drive/src/state_transition_action/document/documents_batch/document_transition/document_create_transition_action/v0/mod.rs +++ b/packages/rs-drive/src/state_transition_action/document/documents_batch/document_transition/document_create_transition_action/v0/mod.rs @@ -133,6 +133,8 @@ impl DocumentFromCreateTransitionActionV0 for Document { .. } = v0; + let mut data = data.clone(); + match base { DocumentBaseTransitionAction::V0(base_v0) => { let DocumentBaseTransitionActionV0 { @@ -148,6 +150,12 @@ impl DocumentFromCreateTransitionActionV0 for Document { let required_fields = document_type.required_fields(); + let transient_fields = document_type.transient_fields(); + + if !transient_fields.is_empty() { + data.retain(|key, _| !transient_fields.contains(key)); + } + let is_created_at_required = required_fields.contains(CREATED_AT); let is_updated_at_required = required_fields.contains(UPDATED_AT); let is_transferred_at_required = required_fields.contains(TRANSFERRED_AT); @@ -174,7 +182,7 @@ impl DocumentFromCreateTransitionActionV0 for Document { 0 => Ok(DocumentV0 { id: *id, owner_id, - properties: data.clone(), + properties: data, revision: document_type.initial_revision(), created_at: if is_created_at_required { Some(block_info.time_ms) @@ -242,7 +250,7 @@ impl DocumentFromCreateTransitionActionV0 for Document { let DocumentCreateTransitionActionV0 { base, block_info, - data, + mut data, .. } = v0; @@ -261,6 +269,12 @@ impl DocumentFromCreateTransitionActionV0 for Document { let required_fields = document_type.required_fields(); + let transient_fields = document_type.transient_fields(); + + if !transient_fields.is_empty() { + data.retain(|key, _| !transient_fields.contains(key)); + } + let is_created_at_required = required_fields.contains(CREATED_AT); let is_updated_at_required = required_fields.contains(UPDATED_AT); let is_transferred_at_required = required_fields.contains(TRANSFERRED_AT); From 5d4f8ca2eddda443525be8c4375a0744f7acd912 Mon Sep 17 00:00:00 2001 From: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Wed, 24 Jul 2024 09:15:19 +0900 Subject: [PATCH 04/37] fix(strategy-tests): key ids for new identities with extra keys were not calculated properly (#1991) --- packages/strategy-tests/src/transitions.rs | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/strategy-tests/src/transitions.rs b/packages/strategy-tests/src/transitions.rs index 2f9a26f8a9e..9105424c3c9 100644 --- a/packages/strategy-tests/src/transitions.rs +++ b/packages/strategy-tests/src/transitions.rs @@ -649,8 +649,15 @@ pub fn create_identities_state_transitions( ) .expect("Expected to create identities and keys"); - for identity in identities.iter_mut() { - for (purpose, security_to_key_type_map) in extra_keys { + let starting_id_num = signer + .private_keys + .keys() + .max() + .map_or(0, |max_key| max_key.id() + 1); + + for (i, identity) in identities.iter_mut().enumerate() { + // TODO: deal with the case where there's more than one extra key + for (_, (purpose, security_to_key_type_map)) in extra_keys.iter().enumerate() { for (security_level, key_types) in security_to_key_type_map { for key_type in key_types { let (key, private_key) = IdentityPublicKey::random_key_with_known_attributes( @@ -663,18 +670,13 @@ pub fn create_identities_state_transitions( platform_version, )?; identity.add_public_key(key.clone()); - keys.push((key, private_key)); + let key_num = key_count as usize * (i + 1) + i; + keys.insert(key_num, (key, private_key)) } } } } - let starting_id_num = signer - .private_keys - .keys() - .max() - .map_or(0, |max_key| max_key.id() + 1); - // Update keys with new KeyIDs and add them to signer let mut current_id_num = starting_id_num; for (key, _) in &mut keys { @@ -690,7 +692,8 @@ pub fn create_identities_state_transitions( .enumerate() .map(|(index, mut identity)| { // Calculate the starting KeyID for this identity - let identity_starting_id = starting_id_num + (index as u32) * key_count; + let identity_starting_id = + starting_id_num + index as u32 * (key_count + extra_keys.len() as u32); // Update the identity with the new KeyIDs let public_keys_map = identity.public_keys_mut(); From 4d7c856fdd5593fbb426057038a5a8763090e5ce Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 24 Jul 2024 07:15:29 +0700 Subject: [PATCH 05/37] fix(dapi): can't parse masternode list diff (#1988) --- packages/dapi/lib/MasternodeListSync.js | 27 ++++++++----------- .../SimplifiedMasternodeListProvider.js | 10 +++++-- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/packages/dapi/lib/MasternodeListSync.js b/packages/dapi/lib/MasternodeListSync.js index c951c9714c8..1793c42c5e4 100644 --- a/packages/dapi/lib/MasternodeListSync.js +++ b/packages/dapi/lib/MasternodeListSync.js @@ -1,5 +1,5 @@ const EventEmitter = require('events'); -const { SimplifiedMNListDiff } = require('@dashevo/dashcore-lib'); +const cbor = require('cbor'); const logger = require('./logger'); const NULL_HASH = '0000000000000000000000000000000000000000000000000000000000000000'; @@ -69,17 +69,14 @@ class MasternodeListSync extends EventEmitter { async sync(blockHash, blockHeight) { const fullDiffObject = await this.coreRpc.getMnListDiff(NULL_HASH, blockHash); - // TODO: It's a dirty hack to fix serialisation issue, introduced by reverting version of the - // diff from 2 to 1. So now version 1 of diff contains entries of version 1 and 2 and - // we don't know how to parse it since version field is introduced in version 2. - fullDiffObject.nVersion = 2; - const previousBlockHash = this.blockHash; const previousBlockHeight = this.blockHeight; - const fullDiff = new SimplifiedMNListDiff(fullDiffObject, this.network); - - this.fullDiffBuffer = fullDiff.toBuffer(); + // TODO: We can't use dashcore-lib SimplifiedMNListDiff toBuffer method, because due to SML + // design it's impossible to deserialize it back without knowing of the protocol version. + // In future, we want to switch to Rust implementation of SML so we don't want to spend + // time on fixing this issue in JS dashcore-lib + this.fullDiffBuffer = await cbor.encodeAsync(fullDiffObject); this.blockHeight = blockHeight; this.blockHash = blockHash; @@ -95,13 +92,11 @@ class MasternodeListSync extends EventEmitter { if (previousBlockHash) { const diffObject = await this.coreRpc.getMnListDiff(previousBlockHash, blockHash); - // TODO: It's a dirty hack to fix serialisation issue, introduced by reverting version of the - // diff from 2 to 1. So now version 1 of diff contains entries of version 1 and 2 and we - // don't know how to parse it since version field is introduced in version 2. - diffObject.nVersion = 2; - - const diff = new SimplifiedMNListDiff(diffObject, this.network); - const diffBuffer = diff.toBuffer(); + // TODO: We can't use dashcore-lib SimplifiedMNListDiff toBuffer method, because due to SML + // design it's impossible to deserialize it back without knowing of the protocol version. + // In future, we want to switch to Rust implementation of SML so we don't want to spend + // time on fixing this issue in JS dashcore-lib + const diffBuffer = await cbor.encodeAsync(diffObject); this.logger.debug({ previousBlockHash, diff --git a/packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/SimplifiedMasternodeListProvider.js b/packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/SimplifiedMasternodeListProvider.js index f275aa4e644..3c1c6e20c6b 100644 --- a/packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/SimplifiedMasternodeListProvider.js +++ b/packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/SimplifiedMasternodeListProvider.js @@ -1,5 +1,6 @@ const SimplifiedMNList = require('@dashevo/dashcore-lib/lib/deterministicmnlist/SimplifiedMNList'); const SimplifiedMNListDiff = require('@dashevo/dashcore-lib/lib/deterministicmnlist/SimplifiedMNListDiff'); +const cbor = require('cbor'); const logger = require('../logger'); @@ -98,11 +99,15 @@ class SimplifiedMasternodeListProvider { } let simplifiedMNListDiff; + let simplifiedMNListDiffObject; let simplifiedMNListDiffBuffer; try { simplifiedMNListDiffBuffer = Buffer.from(response.getMasternodeListDiff_asU8()); + + simplifiedMNListDiffObject = cbor.decodeFirstSync(simplifiedMNListDiffBuffer); + simplifiedMNListDiff = new SimplifiedMNListDiff( - simplifiedMNListDiffBuffer, + simplifiedMNListDiffObject, this.options.network, ); } catch (e) { @@ -112,7 +117,8 @@ class SimplifiedMasternodeListProvider { diffCount, network: this.options.network, error: e, - simplifiedMNListDiff: simplifiedMNListDiffBuffer.toString('hex'), + simplifiedMNListDiffObject, + simplifiedMNListDiffBytes: simplifiedMNListDiffBuffer.toString('hex'), }, ); From fcfe2d5590ca4fcf179ea51f60040395c59fcd04 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 24 Jul 2024 07:15:42 +0700 Subject: [PATCH 06/37] chore(dapi): enable logger for reconnectable stream (#1986) --- packages/js-dapi-client/lib/DAPIClient.js | 14 +++++++++----- .../createMasternodeListStreamFactory.js | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/js-dapi-client/lib/DAPIClient.js b/packages/js-dapi-client/lib/DAPIClient.js index f939cbddd49..ed8c80d7533 100644 --- a/packages/js-dapi-client/lib/DAPIClient.js +++ b/packages/js-dapi-client/lib/DAPIClient.js @@ -39,7 +39,15 @@ class DAPIClient extends EventEmitter { ...options, }; - this.dapiAddressProvider = createDAPIAddressProviderFromOptions(this.options); + this.logger = logger.getForId( + this.options.loggerOptions.identifier, + this.options.loggerOptions.level, + ); + + this.dapiAddressProvider = createDAPIAddressProviderFromOptions({ + ...this.options, + logger: this.logger, + }); const grpcTransport = new GrpcTransport( createDAPIAddressProviderFromOptions, @@ -58,10 +66,6 @@ class DAPIClient extends EventEmitter { this.core = new CoreMethodsFacade(jsonRpcTransport, grpcTransport); this.platform = new PlatformMethodsFacade(grpcTransport); - this.logger = logger.getForId( - this.options.loggerOptions.identifier, - this.options.loggerOptions.level, - ); this.initBlockHeadersProvider(); } diff --git a/packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/createMasternodeListStreamFactory.js b/packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/createMasternodeListStreamFactory.js index fca1a8e6c7b..a80bd3feffb 100644 --- a/packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/createMasternodeListStreamFactory.js +++ b/packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/createMasternodeListStreamFactory.js @@ -42,6 +42,7 @@ function createMasternodeListStreamFactory( ), { maxRetriesOnError: -1, + logger: options.logger, }, ); } From e04af5b6aaf511249f8a19746101b1ed964867e9 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Wed, 24 Jul 2024 09:11:58 +0700 Subject: [PATCH 07/37] fix: spent asset lock estimated fees, and misc (#1993) --- .../v0/mod.rs | 23 +++++++++------- .../for_total_system_credits_update/v0/mod.rs | 26 ++++++++++++------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs b/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs index 1091507a3b7..1110b448445 100644 --- a/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs +++ b/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs @@ -44,27 +44,30 @@ impl Drive { /// - The layer might potentially have max elements. /// - Each item in this layer has a size of 36, which represents the size of an outpoint. /// - /// # Notes - /// - /// The todo comment suggests that there may be inaccuracies in the current function logic. Ensure to verify - /// the correctness of the provided logic and assumptions before relying on this function in production. pub(crate) fn add_estimation_costs_for_adding_asset_lock_v0( estimated_costs_only_with_layer_info: &mut HashMap, ) { - //todo: verify (this is wrong) + // DataContract_Documents 64 + // / \ + // Identities 32 Balances 96 + // / \ / \ + // Token_Balances 16 Pools 48 WithdrawalTransactions 80 Votes 112 + // / \ / / / \ + // NUPKH->I 8 UPKH->I 24 PreFundedSpecializedBalances 40 -> SpentAssetLockTransactions 72 <- Misc 104 Versions 120 + // we have constructed the top layer so contract/documents tree are at the top - // since balance will be on layer 2, updating will mean we will update 1 sum tree - // and 1 normal tree, hence we should give an equal weight to both + // since SpentAssetLockTransactions will be on layer 3, updating will mean we will update 1 sum tree + // and 2 normal tree, hence we should give an equal weight to both estimated_costs_only_with_layer_info.insert( KeyInfoPath::from_known_path([]), EstimatedLayerInformation { is_sum_tree: false, - estimated_layer_count: EstimatedLevel(1, false), + estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( - 1, + 12, // 32 + 1 + 1 / 3 SomeSumTrees { sum_trees_weight: 1, - non_sum_trees_weight: 1, + non_sum_trees_weight: 2, }, None, ), diff --git a/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs b/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs index a442ca21d62..2d8a9d33bcc 100644 --- a/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs +++ b/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs @@ -10,6 +10,14 @@ use crate::drive::system::misc_path_vec; use grovedb::EstimatedSumTrees::SomeSumTrees; use std::collections::HashMap; +// DataContract_Documents 64 +// / \ +// Identities 32 Balances 96 +// / \ / \ +// Token_Balances 16 Pools 48 WithdrawalTransactions 80 Votes 112 +// / \ / / / \ +// NUPKH->I 8 UPKH->I 24 PreFundedSpecializedBalances 40 SpentAssetLockTransactions 72 -> Misc 104 <- Versions 120 + impl Drive { /// Adds estimation costs for total system credits update. /// @@ -19,34 +27,32 @@ impl Drive { pub(super) fn add_estimation_costs_for_total_system_credits_update_v0( estimated_costs_only_with_layer_info: &mut HashMap, ) { - //todo: verify (this is wrong) // we have constructed the top layer so contract/documents tree are at the top - // since balance will be on layer 2, updating will mean we will update 1 sum tree - // and 1 normal tree, hence we should give an equal weight to both + // since balance will be on layer 3, updating will mean we will update 1 sum tree + // and 2 normal trees, hence we should give an equal weight to both estimated_costs_only_with_layer_info.insert( KeyInfoPath::from_known_path([]), EstimatedLayerInformation { is_sum_tree: false, - estimated_layer_count: EstimatedLevel(1, false), + estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( - 1, + 12, // about 32 + 1 + 1 / 3 SomeSumTrees { sum_trees_weight: 1, - non_sum_trees_weight: 1, + non_sum_trees_weight: 2, }, None, ), }, ); - //todo : verify this // we then need to insert the contract layer estimated_costs_only_with_layer_info.insert( KeyInfoPath::from_known_owned_path(misc_path_vec()), EstimatedLayerInformation { - is_sum_tree: true, - estimated_layer_count: ApproximateElements(0), - estimated_layer_sizes: AllItems(1, 64, None), + is_sum_tree: false, + estimated_layer_count: ApproximateElements(1), + estimated_layer_sizes: AllItems(1, 8, None), }, ); } From cffc7633f9cf050e19dacccc5bb1aa421111ce11 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 24 Jul 2024 09:19:02 +0700 Subject: [PATCH 08/37] feat(drive): added config for grovedb verify on startup (#1975) Co-authored-by: Odysseas Gabrielides --- packages/rs-drive-abci/src/main.rs | 5 +++-- packages/rs-drive/src/config.rs | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/rs-drive-abci/src/main.rs b/packages/rs-drive-abci/src/main.rs index 7062f1db6a2..7a1d42fa41a 100644 --- a/packages/rs-drive-abci/src/main.rs +++ b/packages/rs-drive-abci/src/main.rs @@ -98,8 +98,9 @@ impl Cli { ) -> Result<(), String> { match self.command { Commands::Start => { - verify_grovedb(&config.db_path, false)?; - + if config.drive.grovedb_verify_on_startup { + verify_grovedb(&config.db_path, false)?; + } let core_rpc = DefaultCoreRPC::open( config.core.consensus_rpc.url().as_str(), config.core.consensus_rpc.username.clone(), diff --git a/packages/rs-drive/src/config.rs b/packages/rs-drive/src/config.rs index b65fc7ec8ef..3856eb0b0ac 100644 --- a/packages/rs-drive/src/config.rs +++ b/packages/rs-drive/src/config.rs @@ -9,6 +9,8 @@ use serde::{Deserialize, Serialize}; pub const DEFAULT_GROVE_BATCHING_CONSISTENCY_VERIFICATION_ENABLED: bool = false; /// Boolean if GroveDB has_raw in enabled by default pub const DEFAULT_GROVE_HAS_RAW_ENABLED: bool = true; +/// Boolean if verification of GroveDB should be run on startup +pub const DEFAULT_VERIFY_GROVE_ON_STARTUP: bool = false; /// The default default query limit pub const DEFAULT_QUERY_LIMIT: u16 = 100; /// The default max query limit @@ -31,6 +33,13 @@ pub struct DriveConfig { #[cfg_attr(feature = "serde", serde(default = "default_has_raw_enabled"))] pub has_raw_enabled: bool, + /// Boolean if GroveDB verification should happen on startup + #[cfg_attr( + feature = "serde", + serde(default = "default_grove_verify_on_startup_enabled") + )] + pub grovedb_verify_on_startup: bool, + /// The default returned count if no limit is set #[cfg_attr( feature = "serde", @@ -146,6 +155,10 @@ fn default_has_raw_enabled() -> bool { DEFAULT_GROVE_HAS_RAW_ENABLED } +fn default_grove_verify_on_startup_enabled() -> bool { + DEFAULT_VERIFY_GROVE_ON_STARTUP +} + fn default_default_query_limit() -> u16 { DEFAULT_QUERY_LIMIT } @@ -173,6 +186,7 @@ impl Default for DriveConfig { batching_consistency_verification: DEFAULT_GROVE_BATCHING_CONSISTENCY_VERIFICATION_ENABLED, has_raw_enabled: DEFAULT_GROVE_HAS_RAW_ENABLED, + grovedb_verify_on_startup: DEFAULT_VERIFY_GROVE_ON_STARTUP, default_query_limit: DEFAULT_QUERY_LIMIT, epochs_per_era: DEFAULT_EPOCHS_PER_ERA, max_query_limit: DEFAULT_MAX_QUERY_LIMIT, From 990bc355b2b01fb9a463ec5fa7ff2f90b40f3e63 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Wed, 24 Jul 2024 08:30:36 +0200 Subject: [PATCH 09/37] build: update tenderdash to 1.1.0-dev.1 (#1985) Co-authored-by: Ivan Shumkov --- .../configs/defaults/getBaseConfigFactory.js | 9 ++++----- .../configs/getConfigFileMigrationsFactory.js | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index ce212f1de73..73d905b0d9f 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -6,19 +6,18 @@ import DashPayContract from '@dashevo/dashpay-contract/lib/systemIds.js'; import FeatureFlagsContract from '@dashevo/feature-flags-contract/lib/systemIds.js'; -import MasternodeRewardSharesContract - from '@dashevo/masternode-reward-shares-contract/lib/systemIds.js'; +import MasternodeRewardSharesContract from '@dashevo/masternode-reward-shares-contract/lib/systemIds.js'; import WithdrawalsContract from '@dashevo/withdrawals-contract/lib/systemIds.js'; import semver from 'semver'; import fs from 'fs'; +import Config from '../../src/config/Config.js'; import { NETWORK_MAINNET, PACKAGE_ROOT_DIR, } from '../../src/constants.js'; -import Config from '../../src/config/Config.js'; const { contractId: dpnsContractId, @@ -124,7 +123,7 @@ export default function getBaseConfigFactory(homeDir) { tenderdash: { password: 'rpcpassword', whitelist: [ - 'quoruminfo', 'quorumverify', 'quorumsign', 'masternodestatus', 'masternodelist', + 'quoruminfo', 'quorumverify', 'quorumplatformsign', 'masternodestatus', 'masternodelist', 'ping', 'getnetworkinfo', ], lowPriority: false, @@ -327,7 +326,7 @@ export default function getBaseConfigFactory(homeDir) { tenderdash: { mode: 'full', docker: { - image: 'dashpay/tenderdash:1.0.0', + image: 'dashpay/tenderdash:1.1.0-dev.1', }, p2p: { host: '0.0.0.0', diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 850bb6fe2b3..c42798e3e1c 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -1,12 +1,12 @@ /* eslint-disable no-param-reassign */ import fs from 'fs'; -import path from 'path'; import lodash from 'lodash'; +import path from 'path'; import { NETWORK_LOCAL, - NETWORK_TESTNET, NETWORK_MAINNET, + NETWORK_TESTNET, SSL_PROVIDERS, } from '../src/constants.js'; @@ -703,6 +703,16 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) }); return configFile; }, + '1.0.0-rc.1': (configFile) => { + Object.entries(configFile.configs) + .forEach(([, options]) => { + options.platform.drive.tenderdash.docker.image = base.get('platform.drive.tenderdash.docker.image'); + + // Replace quorumsign with qurumplatformsign in Core RPC Tenderdash auth whitelist + options.core.rpc.users.tenderdash.whitelist = base.get('core.rpc.users.tenderdash.whitelist'); + }); + return configFile; + }, }; } From 02942c2706f981922bcbd88949d1e33c5da53cc0 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Wed, 24 Jul 2024 16:53:24 +0700 Subject: [PATCH 10/37] feat(platform)!: system data contracts should not have an owner (#1992) Co-authored-by: Ivan Shumkov --- .pnp.cjs | 4 - Cargo.lock | 33 +-- .../configs/defaults/getBaseConfigFactory.js | 62 ------ .../defaults/getTestnetConfigFactory.js | 20 -- .../configs/getConfigFileMigrationsFactory.js | 7 + packages/dashmate/docker-compose.yml | 10 - packages/dashmate/package.json | 4 - .../dashmate/src/config/configJsonSchema.js | 140 +----------- .../setup/setupLocalPresetTaskFactory.js | 92 +------- packages/dashpay-contract/lib/systemIds.js | 2 +- packages/dashpay-contract/src/lib.rs | 5 +- packages/dpns-contract/lib/systemIds.js | 3 +- packages/dpns-contract/src/lib.rs | 13 +- .../feature-flags-contract/lib/systemIds.js | 2 +- packages/feature-flags-contract/src/lib.rs | 5 +- packages/js-dash-sdk/.env.example | 1 - .../internal/waitForCoreChainLockedHeight.ts | 11 +- packages/js-dash-sdk/tests/functional/sdk.js | 4 +- .../lib/systemIds.js | 2 +- .../src/lib.rs | 5 +- packages/platform-test-suite/.env.example | 4 - packages/platform-test-suite/bin/test.sh | 45 ---- .../platform-test-suite/test/e2e/dpns.spec.js | 81 ------- packages/rs-drive-abci/Cargo.toml | 4 - packages/rs-drive-abci/src/abci/config.rs | 95 -------- .../src/execution/check_tx/v0/mod.rs | 203 ++++++------------ .../initialization/init_chain/v0/mod.rs | 11 +- .../create_genesis_state/mod.rs | 9 +- .../create_genesis_state/v0/mod.rs | 121 ++--------- .../state_transitions/documents_batch/mod.rs | 12 +- .../state_transition/state_transitions/mod.rs | 58 +++++ .../rs-drive-abci/src/platform_types/mod.rs | 31 --- .../system_identity_public_keys/mod.rs | 91 -------- .../system_identity_public_keys/v0/mod.rs | 176 --------------- .../rs-drive-abci/src/test/fixture/abci.rs | 143 ------------ .../rs-drive-abci/src/test/helpers/setup.rs | 8 +- .../tests/strategy_tests/main.rs | 8 +- .../rs-drive/tests/deterministic_root_hash.rs | 2 +- packages/rs-sdk/tests/fetch/config.rs | 12 +- ...6557d0524384797bb450e22f41f66743d5d11.json | Bin 40517 -> 32081 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...b5b7e0a1d712a09c40d5721f622bf53c53155.json | 2 +- ...dbd43fab2e54a98aa44bc88c049e1cf72f5fb.json | Bin 48644 -> 46355 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 215576 -> 216791 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...f6d2d9dcd58c35b6aa9e85398a105dfdeb9c6.json | Bin 0 -> 58443 bytes ...59871252af6af1d297bdc4cbe6ed3e56115b3.json | Bin 58540 -> 0 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 215576 -> 216791 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...db8fe248a5ed482cd554d72915f9801a6c369.json | Bin 58540 -> 0 bytes ...e0f17fb3367987f71c5caf9c045ced8633299.json | Bin 0 -> 58443 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 215576 -> 216791 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...259864951786f80811cc7ea9fce3d7f42a718.json | Bin 0 -> 58569 bytes ...f6d2d9dcd58c35b6aa9e85398a105dfdeb9c6.json | Bin 0 -> 58443 bytes ...8c226964b8cf50c559a15ffd8d6ed2e47b682.json | Bin 58666 -> 0 bytes ...59871252af6af1d297bdc4cbe6ed3e56115b3.json | Bin 58540 -> 0 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 215576 -> 216791 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...501c1ba166a2dd8f6efb31b0289dc011da983.json | Bin 25748 -> 25736 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...10bbf4178e9af8e87ee326576ac2b384d726d.json | Bin 0 -> 53049 bytes ...2fdc372b8e12d3f368264a10a00877c92018f.json | Bin 53032 -> 0 bytes ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 215576 -> 216791 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json | Bin 215576 -> 216791 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...48c03122daf7ab2e77108f4bf44af1ad15eae.json | Bin 25748 -> 25736 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...067bd9ccc29eca3092a5664a5a9ba3bb7e967.json | Bin 218619 -> 219810 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...abbc4ac6ad7e80f0e55fe98bbcfbebf6c0878.json | Bin 25509 -> 25497 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...6caf3663c40a12d3b03827006d66058e439ac.json | Bin 71170 -> 71188 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67504 -> 0 bytes ...947f006e43bff5d40eb2fee5f9bfa98aeec74.json | Bin 0 -> 68880 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...67089535588985622579e77969e0ffd68afc7.json | Bin 65813 -> 65831 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67504 -> 0 bytes ...947f006e43bff5d40eb2fee5f9bfa98aeec74.json | Bin 0 -> 68880 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...add01a7428085ffdcf1e11cccf19c48c5f7a1.json | Bin 72029 -> 72059 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67504 -> 0 bytes ...947f006e43bff5d40eb2fee5f9bfa98aeec74.json | Bin 0 -> 68880 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...d592c8fe7361bed628d9a36747664c9789bf1.json | Bin 83856 -> 83883 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67504 -> 0 bytes ...947f006e43bff5d40eb2fee5f9bfa98aeec74.json | Bin 0 -> 68880 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...b0b93d9d2e841a5e3d60755f8e7be3b93315b.json | Bin 91110 -> 91137 bytes ...7776113debe4287515ae60d0645da450a80a1.json | Bin 67504 -> 0 bytes ...947f006e43bff5d40eb2fee5f9bfa98aeec74.json | Bin 0 -> 68880 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...7776113debe4287515ae60d0645da450a80a1.json | Bin 34969 -> 0 bytes ...947f006e43bff5d40eb2fee5f9bfa98aeec74.json | Bin 0 -> 33195 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...7776113debe4287515ae60d0645da450a80a1.json | Bin 62062 -> 0 bytes ...947f006e43bff5d40eb2fee5f9bfa98aeec74.json | Bin 0 -> 58542 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...8fa69b4749b19cc1f5ef0abf37fa0c04ab2ef.json | Bin 43743 -> 0 bytes ...5696d8b6487a30e2dba25bb37328ac872aab0.json | Bin 0 -> 41975 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...5a9ca814e12c84c7bbb64e9e6b02f0bf582f5.json | Bin 0 -> 50298 bytes ...4a459dc7a67570ea6df3f8858d3fae7820ffe.json | Bin 47170 -> 0 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...0d257de5dabc3b500a3cc4a7ebc4c1465463f.json | Bin 0 -> 77359 bytes ...c53464633a072722c5a04b15ee01f3a45de99.json | Bin 75803 -> 0 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...0d257de5dabc3b500a3cc4a7ebc4c1465463f.json | Bin 0 -> 77359 bytes ...c53464633a072722c5a04b15ee01f3a45de99.json | Bin 75803 -> 0 bytes ...8c50b25146fb7a02561df7c93f0ec8066213b.json | Bin 88209 -> 0 bytes ...33f62e8876a19f5937fa5842ab4f59ca33e81.json | Bin 0 -> 89816 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...48c03122daf7ab2e77108f4bf44af1ad15eae.json | Bin 33938 -> 23027 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...9550f0ea4a6af6f68037e7d50ff4e4de74509.json | Bin 26571 -> 26592 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...106e5eda740be44679cc960ea35f2134af628.json | Bin 33758 -> 33779 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...bf1acc3394d29ac72f662d38e81344496631e.json | Bin 33714 -> 33753 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...9b1a05862cb8d40c088b193b59ca3564210bc.json | Bin 34878 -> 34872 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - ...22dfc69cc7b123be24b7ad993281979b2a3a2.json | Bin 34072 -> 34111 bytes ...afa81e226bdafab0d460e20efcec7927a6555.json | 1 + ...6c57fdff6a9b6cc4d392987f5c13a097fec90.json | 1 - .../withdrawals-contract/lib/systemIds.js | 2 +- packages/withdrawals-contract/src/lib.rs | 5 +- scripts/configure_dotenv.sh | 3 - scripts/configure_test_suite.sh | 13 +- scripts/configure_test_suite_network.sh | 11 +- yarn.lock | 4 - 159 files changed, 232 insertions(+), 1403 deletions(-) delete mode 100644 packages/rs-drive-abci/src/platform_types/system_identity_public_keys/mod.rs delete mode 100644 packages/rs-drive-abci/src/platform_types/system_identity_public_keys/v0/mod.rs create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/contested_resource_vote_states_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_86beaec40825e436c6a9467bd1af6d2d9dcd58c35b6aa9e85398a105dfdeb9c6.json delete mode 100644 packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json create mode 100644 packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/document_list_document_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/document_list_drive_query/msg_DocumentQuery_b3bc8802a726d411f7538d368a4db8fe248a5ed482cd554d72915f9801a6c369.json create mode 100644 packages/rs-sdk/tests/vectors/document_list_drive_query/msg_DocumentQuery_e731a9066a60d9cee4097f419bbe0f17fb3367987f71c5caf9c045ced8633299.json create mode 100644 packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/document_list_drive_query/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_5d23e775d0065e9aaec1f155ee4259864951786f80811cc7ea9fce3d7f42a718.json create mode 100644 packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_86beaec40825e436c6a9467bd1af6d2d9dcd58c35b6aa9e85398a105dfdeb9c6.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_89cfecedc9547d64bca1385ce338c226964b8cf50c559a15ffd8d6ed2e47b682.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json create mode 100644 packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/document_read_no_document/msg_DocumentQuery_20d68bd71dd4309389f14aed5d610bbf4178e9af8e87ee326576ac2b384d726d.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read_no_document/msg_DocumentQuery_94a308d4004116900a729399e242fdc372b8e12d3f368264a10a00877c92018f.json create mode 100644 packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/document_read_no_document/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_data_contract_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch/msg_GetIdentityRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_current/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_current/msg_GetIdentityRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_current/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_current/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_future/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_future/msg_GetIdentityRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_future/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_fetch_future/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list/msg_GetIdentityRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list_limit/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list_limit/msg_GetIdentityRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json create mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list_limit/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_epoch_list_limit/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_read/msg_GetIdentityBalanceRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_read/msg_GetIdentityBalanceRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/msg_GetIdentityBalanceAndRevisionRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/msg_GetIdentityBalanceAndRevisionRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/msg_GetIdentityContractNonceRequest_b7c02dae0c3c762ece1f70a36f88fa69b4749b19cc1f5ef0abf37fa0c04ab2ef.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/msg_GetIdentityContractNonceRequest_bac4d8a5c55cc79653a9df5f95d5696d8b6487a30e2dba25bb37328ac872aab0.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/msg_GetIdentityKeysRequest_41e9c14342c3b29ff1ea0df58585a9ca814e12c84c7bbb64e9e6b02f0bf582f5.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/msg_GetIdentityKeysRequest_b4ecff7acf52818aef9ed37a98d4a459dc7a67570ea6df3f8858d3fae7820ffe.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_read/msg_IdentityRequest_5109a16372f4a282c5d97a45e8e0d257de5dabc3b500a3cc4a7ebc4c1465463f.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_read/msg_IdentityRequest_5789e2afa300c2ac039646d8b81c53464633a072722c5a04b15ee01f3a45de99.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_5109a16372f4a282c5d97a45e8e0d257de5dabc3b500a3cc4a7ebc4c1465463f.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_5789e2afa300c2ac039646d8b81c53464633a072722c5a04b15ee01f3a45de99.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_aab024dadbfad013c93705f5cc48c50b25146fb7a02561df7c93f0ec8066213b.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_f876c456a28a7a9d1aab891eced33f62e8876a19f5937fa5842ab4f59ca33e81.json create mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_identity_read_by_key/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_limit_2/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_limit_2/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_none/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_none/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json create mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json delete mode 100644 packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json diff --git a/.pnp.cjs b/.pnp.cjs index d25d4593be4..be7f91a39fb 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -8459,11 +8459,7 @@ const RAW_RUNTIME_STATE = ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dashcore-lib", "npm:0.21.3"],\ ["@dashevo/dashd-rpc", "npm:19.0.0"],\ - ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/docker-compose", "npm:0.24.4"],\ - ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ - ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ - ["@dashevo/masternode-reward-shares-contract", "workspace:packages/masternode-reward-shares-contract"],\ ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ ["@dashevo/withdrawals-contract", "workspace:packages/withdrawals-contract"],\ ["@oclif/core", "npm:3.26.5"],\ diff --git a/Cargo.lock b/Cargo.lock index 0a2a3a26592..d65231292ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1276,7 +1276,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "serde_with 2.3.3", + "serde_with", ] [[package]] @@ -1537,7 +1537,6 @@ dependencies = [ "rust_decimal_macros", "serde", "serde_json", - "serde_with 3.9.0", "simple-signer", "strategy-tests", "tempfile", @@ -4477,23 +4476,7 @@ dependencies = [ "indexmap 1.9.3", "serde", "serde_json", - "serde_with_macros 2.3.3", - "time", -] - -[[package]] -name = "serde_with" -version = "3.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros 3.9.0", + "serde_with_macros", "time", ] @@ -4509,18 +4492,6 @@ dependencies = [ "syn 2.0.71", ] -[[package]] -name = "serde_with_macros" -version = "3.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.71", -] - [[package]] name = "sha1" version = "0.10.6" diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index 73d905b0d9f..d890078ee14 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -1,15 +1,4 @@ import path from 'path'; - -import DPNSContract from '@dashevo/dpns-contract/lib/systemIds.js'; - -import DashPayContract from '@dashevo/dashpay-contract/lib/systemIds.js'; - -import FeatureFlagsContract from '@dashevo/feature-flags-contract/lib/systemIds.js'; - -import MasternodeRewardSharesContract from '@dashevo/masternode-reward-shares-contract/lib/systemIds.js'; - -import WithdrawalsContract from '@dashevo/withdrawals-contract/lib/systemIds.js'; - import semver from 'semver'; import fs from 'fs'; @@ -19,20 +8,6 @@ import { PACKAGE_ROOT_DIR, } from '../../src/constants.js'; -const { - contractId: dpnsContractId, - ownerId: dpnsOwnerId, -} = DPNSContract; - -const { contractId: dashpayContractId } = DashPayContract; - -const { - contractId: featureFlagsContractId, - ownerId: featureFlagsOwnerId, -} = FeatureFlagsContract; -const { contractId: masternodeRewardSharesContractId } = MasternodeRewardSharesContract; -const { contractId: withdrawalsContractId } = WithdrawalsContract; - const { version } = JSON.parse(fs.readFileSync(path.join(PACKAGE_ROOT_DIR, 'package.json'), 'utf8')); /** @@ -432,44 +407,7 @@ export default function getBaseConfigFactory(homeDir) { moniker: null, }, }, - dpns: { - contract: { - id: dpnsContractId, - }, - ownerId: dpnsOwnerId, - masterPublicKey: null, - secondPublicKey: null, - }, - dashpay: { - contract: { - id: dashpayContractId, - }, - masterPublicKey: null, - secondPublicKey: null, - }, - featureFlags: { - contract: { - id: featureFlagsContractId, - }, - ownerId: featureFlagsOwnerId, - masterPublicKey: null, - secondPublicKey: null, - }, sourcePath: null, - masternodeRewardShares: { - contract: { - id: masternodeRewardSharesContractId, - }, - masterPublicKey: null, - secondPublicKey: null, - }, - withdrawals: { - contract: { - id: withdrawalsContractId, - }, - masterPublicKey: null, - secondPublicKey: null, - }, enable: true, }, dashmate: { diff --git a/packages/dashmate/configs/defaults/getTestnetConfigFactory.js b/packages/dashmate/configs/defaults/getTestnetConfigFactory.js index 496e4ef80c7..10bd2f2bab3 100644 --- a/packages/dashmate/configs/defaults/getTestnetConfigFactory.js +++ b/packages/dashmate/configs/defaults/getTestnetConfigFactory.js @@ -118,26 +118,6 @@ export default function getTestnetConfigFactory(homeDir, getBaseConfig) { }, }, }, - dpns: { - masterPublicKey: '02c8b4747b528cac5fddf7a6cc63702ee04ed7d1332904e08510343ea00dce546a', - secondPublicKey: '0201ee28f84f5485390567e939c2b586010b63a69ec92cab535dc96a8c71913602', - }, - dashpay: { - masterPublicKey: '02d4dcce3f0a8d2936ce26df4d255fd2835b629b73eea39d4b2778096b91e77946', - secondPublicKey: '03699c8b4ebf1696c92e9ec605a02a38f6f9cec47d13fb584fdad779e936e20ccb', - }, - featureFlags: { - masterPublicKey: '029cf2232549de08c114c19763309cb067688e21e310ac07458b59c2c026be7234', - secondPublicKey: '02a2abb50c03ae9f778f08a93849ba334a82e625153720dd5ef14e564b78b414e5', - }, - masternodeRewardShares: { - masterPublicKey: '0319d795c0795bc8678bd0e58cfc7a4ad75c8e1797537728e7e8de8b9acc2bae2b', - secondPublicKey: '033756572938aaad752158b858ad38511c6edff4c79cf8462f70baa25fc6e8a616', - }, - withdrawals: { - masterPublicKey: '032f79d1d9d6e652599d3315d30306b1277fbf588e32e383aef0a59749547d47b7', - secondPublicKey: '03eebbe3dc3721603a0b5a13441f214550ffa7d035b7dea9f1911de0f63ddac58d', - }, }, network: NETWORK_TESTNET, }; diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index c42798e3e1c..092debe3db9 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -706,6 +706,13 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) '1.0.0-rc.1': (configFile) => { Object.entries(configFile.configs) .forEach(([, options]) => { + delete options.platform.dpns; + delete options.platform.dashpay; + delete options.platform.featureFlags; + delete options.platform.masternodeRewardShares; + delete options.platform.withdrawals; + + // Update tenderdash image options.platform.drive.tenderdash.docker.image = base.get('platform.drive.tenderdash.docker.image'); // Replace quorumsign with qurumplatformsign in Core RPC Tenderdash auth whitelist diff --git a/packages/dashmate/docker-compose.yml b/packages/dashmate/docker-compose.yml index 45ce1186185..53a3c835b99 100644 --- a/packages/dashmate/docker-compose.yml +++ b/packages/dashmate/docker-compose.yml @@ -58,17 +58,7 @@ services: - CORE_CHECK_TX_JSON_RPC_PASSWORD=${CORE_RPC_USERS_DRIVE_CHECK_TX_PASSWORD:?err} - CORE_CHECK_TX_JSON_RPC_HOST=core - CORE_CHECK_TX_JSON_RPC_PORT=${CORE_RPC_PORT:?err} - - DPNS_MASTER_PUBLIC_KEY=${PLATFORM_DPNS_MASTER_PUBLIC_KEY} - - DPNS_SECOND_PUBLIC_KEY=${PLATFORM_DPNS_SECOND_PUBLIC_KEY} - - DASHPAY_MASTER_PUBLIC_KEY=${PLATFORM_DASHPAY_MASTER_PUBLIC_KEY} - - DASHPAY_SECOND_PUBLIC_KEY=${PLATFORM_DASHPAY_SECOND_PUBLIC_KEY} - EPOCH_TIME_LENGTH_S=${PLATFORM_DRIVE_ABCI_EPOCH_TIME} - - FEATURE_FLAGS_MASTER_PUBLIC_KEY=${PLATFORM_FEATURE_FLAGS_MASTER_PUBLIC_KEY} - - FEATURE_FLAGS_SECOND_PUBLIC_KEY=${PLATFORM_FEATURE_FLAGS_SECOND_PUBLIC_KEY} - - MASTERNODE_REWARD_SHARES_MASTER_PUBLIC_KEY=${PLATFORM_MASTERNODE_REWARD_SHARES_MASTER_PUBLIC_KEY} - - MASTERNODE_REWARD_SHARES_SECOND_PUBLIC_KEY=${PLATFORM_MASTERNODE_REWARD_SHARES_SECOND_PUBLIC_KEY} - - WITHDRAWALS_MASTER_PUBLIC_KEY=${PLATFORM_WITHDRAWALS_MASTER_PUBLIC_KEY} - - WITHDRAWALS_SECOND_PUBLIC_KEY=${PLATFORM_WITHDRAWALS_SECOND_PUBLIC_KEY} - VALIDATOR_SET_QUORUM_TYPE=${PLATFORM_DRIVE_ABCI_VALIDATOR_SET_QUORUM_LLMQ_TYPE:?err} - VALIDATOR_SET_QUORUM_WINDOW=${PLATFORM_DRIVE_ABCI_VALIDATOR_SET_QUORUM_DKG_INTERVAL:?err} - VALIDATOR_SET_QUORUM_ACTIVE_SIGNERS=${PLATFORM_DRIVE_ABCI_VALIDATOR_SET_QUORUM_ACTIVE_SIGNERS:?err} diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 5532884d864..53c6b0b19e3 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -58,11 +58,7 @@ "@dashevo/dapi-client": "workspace:*", "@dashevo/dashcore-lib": "~0.21.3", "@dashevo/dashd-rpc": "^19.0.0", - "@dashevo/dashpay-contract": "workspace:*", "@dashevo/docker-compose": "^0.24.4", - "@dashevo/dpns-contract": "workspace:*", - "@dashevo/feature-flags-contract": "workspace:*", - "@dashevo/masternode-reward-shares-contract": "workspace:*", "@dashevo/wallet-lib": "workspace:*", "@dashevo/withdrawals-contract": "workspace:*", "@oclif/core": "^3.10.8", diff --git a/packages/dashmate/src/config/configJsonSchema.js b/packages/dashmate/src/config/configJsonSchema.js index ad078c4368d..c07e9535554 100644 --- a/packages/dashmate/src/config/configJsonSchema.js +++ b/packages/dashmate/src/config/configJsonSchema.js @@ -1128,153 +1128,15 @@ export default { required: ['abci', 'tenderdash'], additionalProperties: false, }, - dpns: { - type: 'object', - properties: { - contract: { - type: 'object', - properties: { - id: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['id'], - additionalProperties: false, - }, - ownerId: { - type: ['string', 'null'], - minLength: 1, - }, - masterPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - secondPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['contract', 'ownerId', 'masterPublicKey', 'secondPublicKey'], - additionalProperties: false, - }, - dashpay: { - type: 'object', - properties: { - contract: { - type: 'object', - properties: { - id: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['id'], - additionalProperties: false, - }, - masterPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - secondPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['contract', 'masterPublicKey', 'secondPublicKey'], - additionalProperties: false, - }, - featureFlags: { - type: 'object', - properties: { - contract: { - type: 'object', - properties: { - id: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['id'], - additionalProperties: false, - }, - ownerId: { - type: ['string', 'null'], - minLength: 1, - }, - masterPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - secondPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['contract', 'ownerId', 'masterPublicKey', 'secondPublicKey'], - additionalProperties: false, - }, sourcePath: { type: ['string', 'null'], minLength: 1, }, - masternodeRewardShares: { - type: 'object', - properties: { - contract: { - type: 'object', - properties: { - id: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['id'], - additionalProperties: false, - }, - masterPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - secondPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['contract', 'masterPublicKey', 'secondPublicKey'], - additionalProperties: false, - }, - withdrawals: { - type: 'object', - properties: { - contract: { - type: 'object', - properties: { - id: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['id'], - additionalProperties: false, - }, - masterPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - secondPublicKey: { - type: ['string', 'null'], - minLength: 1, - }, - }, - required: ['contract', 'masterPublicKey', 'secondPublicKey'], - additionalProperties: false, - }, enable: { type: 'boolean', }, }, - required: ['gateway', 'dapi', 'drive', 'dpns', 'dashpay', 'featureFlags', 'sourcePath', 'masternodeRewardShares', 'withdrawals', 'enable'], + required: ['gateway', 'dapi', 'drive', 'sourcePath', 'enable'], additionalProperties: false, }, dashmate: { diff --git a/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js index bc3795c070e..3c5eafa1927 100644 --- a/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js @@ -97,7 +97,7 @@ export default function setupLocalPresetTaskFactory( }, { title: 'Create local group configs', - task: async (ctx, task) => { + task: async (ctx) => { ctx.configGroup = new Array(ctx.nodeCount) .fill(undefined) .map((value, i) => `local_${i + 1}`) @@ -115,63 +115,6 @@ export default function setupLocalPresetTaskFactory( const hostDockerInternalIp = await resolveDockerHostIp(); - const network = ctx.configGroup[0].get('network'); - - const { - hdPrivateKey: dpnsPrivateKey, - derivedPrivateKeys: [ - dpnsDerivedMasterPrivateKey, - dpnsDerivedSecondPrivateKey, - ], - } = await generateHDPrivateKeys(network, [0, 1]); - - const { - hdPrivateKey: featureFlagsPrivateKey, - derivedPrivateKeys: [ - featureFlagsDerivedMasterPrivateKey, - featureFlagsDerivedSecondPrivateKey, - ], - } = await generateHDPrivateKeys(network, [0, 1]); - - const { - hdPrivateKey: dashpayPrivateKey, - derivedPrivateKeys: [ - dashpayDerivedMasterPrivateKey, - dashpayDerivedSecondPrivateKey, - ], - } = await generateHDPrivateKeys(network, [0, 1]); - - const { - hdPrivateKey: withdrawalsPrivateKey, - derivedPrivateKeys: [ - withdrawalsDerivedMasterPrivateKey, - withdrawalsDerivedSecondPrivateKey, - ], - } = await generateHDPrivateKeys(network, [0, 1]); - - const { - hdPrivateKey: masternodeRewardSharesPrivateKey, - derivedPrivateKeys: [ - masternodeRewardSharesDerivedMasterPrivateKey, - masternodeRewardSharesDerivedSecondPrivateKey, - ], - } = await generateHDPrivateKeys(network, [0, 1]); - - // eslint-disable-next-line no-param-reassign - task.output = `DPNS Private Key: ${dpnsPrivateKey.toString()}`; - - // eslint-disable-next-line no-param-reassign - task.output = `Feature Flags Private Key: ${featureFlagsPrivateKey.toString()}`; - - // eslint-disable-next-line no-param-reassign - task.output = `Dashpay Private Key: ${dashpayPrivateKey.toString()}`; - - // eslint-disable-next-line no-param-reassign - task.output = `Masternode Reward Shares Private Key: ${masternodeRewardSharesPrivateKey.toString()}`; - - // eslint-disable-next-line no-param-reassign - task.output = `Withdrawals Private Key: ${withdrawalsPrivateKey.toString()}`; - const subTasks = ctx.configGroup.map((config, i) => ( { title: `Create ${config.getName()} config`, @@ -256,39 +199,6 @@ export default function setupLocalPresetTaskFactory( // TODO: Shall we use trace? config.set('platform.drive.tenderdash.log.level', 'debug'); } - - config.set('platform.dpns.masterPublicKey', dpnsDerivedMasterPrivateKey.privateKey.toPublicKey() - .toString()); - config.set('platform.dpns.secondPublicKey', dpnsDerivedSecondPrivateKey.privateKey.toPublicKey() - .toString()); - - config.set('platform.featureFlags.masterPublicKey', featureFlagsDerivedMasterPrivateKey.privateKey.toPublicKey() - .toString()); - config.set('platform.featureFlags.secondPublicKey', featureFlagsDerivedSecondPrivateKey.privateKey.toPublicKey() - .toString()); - - config.set('platform.dashpay.masterPublicKey', dashpayDerivedMasterPrivateKey.privateKey.toPublicKey() - .toString()); - config.set('platform.dashpay.secondPublicKey', dashpayDerivedSecondPrivateKey.privateKey.toPublicKey() - .toString()); - - config.set('platform.withdrawals.masterPublicKey', withdrawalsDerivedMasterPrivateKey.privateKey.toPublicKey() - .toString()); - config.set('platform.withdrawals.secondPublicKey', withdrawalsDerivedSecondPrivateKey.privateKey.toPublicKey() - .toString()); - - config.set( - 'platform.masternodeRewardShares.masterPublicKey', - masternodeRewardSharesDerivedMasterPrivateKey.privateKey - .toPublicKey() - .toString(), - ); - config.set( - 'platform.masternodeRewardShares.secondPublicKey', - masternodeRewardSharesDerivedSecondPrivateKey.privateKey - .toPublicKey() - .toString(), - ); } }, options: { diff --git a/packages/dashpay-contract/lib/systemIds.js b/packages/dashpay-contract/lib/systemIds.js index 1ebde45f137..a95c1d468cb 100644 --- a/packages/dashpay-contract/lib/systemIds.js +++ b/packages/dashpay-contract/lib/systemIds.js @@ -1,4 +1,4 @@ module.exports = { - ownerId: '5PhRFRrWZc5Mj8NqtpHNXCmmEQkcZE8akyDkKhsUVD4k', + ownerId: '11111111111111111111111111111111', contractId: 'Bwr4WHCPz5rFVAD87RqTs3izo4zpzwsEdKPWUT1NS1C7', }; diff --git a/packages/dashpay-contract/src/lib.rs b/packages/dashpay-contract/src/lib.rs index 8d443aeaa0a..f17916867c2 100644 --- a/packages/dashpay-contract/src/lib.rs +++ b/packages/dashpay-contract/src/lib.rs @@ -11,10 +11,7 @@ pub const ID_BYTES: [u8; 32] = [ 44, 24, 16, 146, 129, 193, 70, 231, 178, 113, 188, ]; -pub const OWNER_ID_BYTES: [u8; 32] = [ - 65, 63, 57, 243, 204, 9, 106, 71, 187, 2, 94, 221, 190, 127, 141, 114, 137, 209, 243, 50, 60, - 215, 90, 101, 229, 15, 115, 5, 44, 117, 182, 217, -]; +pub const OWNER_ID_BYTES: [u8; 32] = [0; 32]; pub const ID: Identifier = Identifier(IdentifierBytes32(ID_BYTES)); pub const OWNER_ID: Identifier = Identifier(IdentifierBytes32(OWNER_ID_BYTES)); diff --git a/packages/dpns-contract/lib/systemIds.js b/packages/dpns-contract/lib/systemIds.js index cc6db980c1b..37ebef80fce 100644 --- a/packages/dpns-contract/lib/systemIds.js +++ b/packages/dpns-contract/lib/systemIds.js @@ -1,4 +1,5 @@ module.exports = { - ownerId: '4EfA9Jrvv3nnCFdSf7fad59851iiTRZ6Wcu6YVJ4iSeF', + ownerId: '11111111111111111111111111111111', contractId: 'GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec', + dashTldDocumentId: '6Zft8WEaEPzfbSVMsd6xCw3KgCqAQEneupSB9wx2EhJ', }; diff --git a/packages/dpns-contract/src/lib.rs b/packages/dpns-contract/src/lib.rs index 6c379e90249..967bce9ae1e 100644 --- a/packages/dpns-contract/src/lib.rs +++ b/packages/dpns-contract/src/lib.rs @@ -11,9 +11,16 @@ pub const ID_BYTES: [u8; 32] = [ 196, 13, 87, 33, 246, 34, 191, 83, 197, 49, 85, ]; -pub const OWNER_ID_BYTES: [u8; 32] = [ - 48, 18, 193, 155, 152, 236, 0, 51, 173, 219, 54, 205, 100, 183, 245, 16, 103, 15, 42, 53, 26, - 67, 4, 181, 246, 153, 65, 68, 40, 110, 253, 172, +pub const OWNER_ID_BYTES: [u8; 32] = [0; 32]; + +pub const DPNS_DASH_TLD_DOCUMENT_ID: [u8; 32] = [ + 215, 242, 197, 63, 70, 169, 23, 171, 110, 91, 57, 162, 215, 188, 38, 11, 100, 146, 137, 69, 55, + 68, 209, 224, 212, 242, 106, 141, 142, 255, 55, 207, +]; + +pub const DPNS_DASH_TLD_PREORDER_SALT: [u8; 32] = [ + 224, 181, 8, 197, 163, 104, 37, 162, 6, 105, 58, 31, 65, 74, 161, 62, 219, 236, 244, 60, 65, + 227, 199, 153, 234, 158, 115, 123, 79, 154, 162, 38, ]; pub const ID: Identifier = Identifier(IdentifierBytes32(ID_BYTES)); diff --git a/packages/feature-flags-contract/lib/systemIds.js b/packages/feature-flags-contract/lib/systemIds.js index afe15e8b956..9d08aab9fff 100644 --- a/packages/feature-flags-contract/lib/systemIds.js +++ b/packages/feature-flags-contract/lib/systemIds.js @@ -1,4 +1,4 @@ module.exports = { - ownerId: 'H9sjb2bHG8t7gq5SwNdqzMWG7KR6sf3CbziFzthCkDD6', + ownerId: '11111111111111111111111111111111', contractId: 'HY1keaRK5bcDmujNCQq5pxNyvAiHHpoHQgLN5ppiu4kh', }; diff --git a/packages/feature-flags-contract/src/lib.rs b/packages/feature-flags-contract/src/lib.rs index a509ebc2e05..482edf67345 100644 --- a/packages/feature-flags-contract/src/lib.rs +++ b/packages/feature-flags-contract/src/lib.rs @@ -11,10 +11,7 @@ pub const ID_BYTES: [u8; 32] = [ 212, 255, 2, 91, 7, 90, 243, 68, 55, 152, 34, ]; -pub const OWNER_ID_BYTES: [u8; 32] = [ - 240, 1, 0, 176, 193, 227, 118, 43, 139, 193, 66, 30, 17, 60, 118, 178, 166, 53, 197, 147, 11, - 154, 191, 43, 51, 101, 131, 190, 89, 135, 167, 21, -]; +pub const OWNER_ID_BYTES: [u8; 32] = [0; 32]; pub const ID: Identifier = Identifier(IdentifierBytes32(ID_BYTES)); pub const OWNER_ID: Identifier = Identifier(IdentifierBytes32(OWNER_ID_BYTES)); diff --git a/packages/js-dash-sdk/.env.example b/packages/js-dash-sdk/.env.example index 2259f834ef5..433998c1d55 100644 --- a/packages/js-dash-sdk/.env.example +++ b/packages/js-dash-sdk/.env.example @@ -1,4 +1,3 @@ DAPI_SEED= FAUCET_PRIVATE_KEY= NETWORK= -DPNS_CONTRACT_ID= diff --git a/packages/js-dash-sdk/src/SDK/Client/Platform/methods/identities/internal/waitForCoreChainLockedHeight.ts b/packages/js-dash-sdk/src/SDK/Client/Platform/methods/identities/internal/waitForCoreChainLockedHeight.ts index b147e32b20c..a3ea11f9b14 100644 --- a/packages/js-dash-sdk/src/SDK/Client/Platform/methods/identities/internal/waitForCoreChainLockedHeight.ts +++ b/packages/js-dash-sdk/src/SDK/Client/Platform/methods/identities/internal/waitForCoreChainLockedHeight.ts @@ -1,4 +1,3 @@ -import { ownerId as dpnsOwnerId } from '@dashevo/dpns-contract/lib/systemIds'; import { Platform } from '../../../Platform'; export async function waitForCoreChainLockedHeight( @@ -19,15 +18,9 @@ export async function waitForCoreChainLockedHeight( const promise = new Promise((resolve, reject) => { async function obtainCoreChainLockedHeight() { try { - const identityResponse = await platform.identities.get(dpnsOwnerId); + const response = await platform.client.getDAPIClient().platform.getEpochsInfo(0, 1); - if (!identityResponse) { - reject(new Error('Identity using to obtain core chain locked height is not present')); - - return; - } - - const metadata = identityResponse.getMetadata(); + const metadata = response.getMetadata(); coreChainLockedHeight = metadata.getCoreChainLockedHeight(); } catch (e) { diff --git a/packages/js-dash-sdk/tests/functional/sdk.js b/packages/js-dash-sdk/tests/functional/sdk.js index bdc800bfe00..5f24b7b7a34 100644 --- a/packages/js-dash-sdk/tests/functional/sdk.js +++ b/packages/js-dash-sdk/tests/functional/sdk.js @@ -2,6 +2,8 @@ const { expect } = require('chai'); const { Identifier } = require('@dashevo/wasm-dpp'); +const { contractId: dpnsContractIdString } = require('@dashevo/dpns-contract/lib/systemIds'); + const { Networks, } = require('@dashevo/dashcore-lib'); @@ -17,7 +19,7 @@ describe('SDK', function suite() { let clientInstance; beforeEach(async () => { - dpnsContractId = Identifier.from(process.env.DPNS_CONTRACT_ID); + dpnsContractId = Identifier.from(dpnsContractIdString); const clientOpts = { seeds: process.env.DAPI_SEED.split(','), diff --git a/packages/masternode-reward-shares-contract/lib/systemIds.js b/packages/masternode-reward-shares-contract/lib/systemIds.js index caeaa27c46e..773eba4640d 100644 --- a/packages/masternode-reward-shares-contract/lib/systemIds.js +++ b/packages/masternode-reward-shares-contract/lib/systemIds.js @@ -1,4 +1,4 @@ module.exports = { - ownerId: 'BjDiho3ahEBT6w45YungawKrUcqCZ7q7p46FXwnoakXR', + ownerId: '11111111111111111111111111111111', contractId: 'rUnsWrFu3PKyRMGk2mxmZVBPbQuZx2qtHeFjURoQevX', }; diff --git a/packages/masternode-reward-shares-contract/src/lib.rs b/packages/masternode-reward-shares-contract/src/lib.rs index 124f0e66278..7563fada094 100644 --- a/packages/masternode-reward-shares-contract/src/lib.rs +++ b/packages/masternode-reward-shares-contract/src/lib.rs @@ -11,10 +11,7 @@ pub const ID_BYTES: [u8; 32] = [ 68, 99, 238, 176, 31, 247, 33, 149, 144, 149, 140, ]; -pub const OWNER_ID_BYTES: [u8; 32] = [ - 159, 101, 165, 10, 103, 89, 107, 118, 134, 35, 62, 205, 14, 245, 130, 168, 86, 190, 41, 247, - 139, 113, 170, 202, 91, 69, 135, 242, 242, 219, 97, 152, -]; +pub const OWNER_ID_BYTES: [u8; 32] = [0; 32]; pub const ID: Identifier = Identifier(IdentifierBytes32(ID_BYTES)); pub const OWNER_ID: Identifier = Identifier(IdentifierBytes32(OWNER_ID_BYTES)); diff --git a/packages/platform-test-suite/.env.example b/packages/platform-test-suite/.env.example index 627cc80d497..07cec90407e 100644 --- a/packages/platform-test-suite/.env.example +++ b/packages/platform-test-suite/.env.example @@ -12,10 +12,6 @@ NETWORK= # Start to sync wallet from specific height to speed up the sync process # SKIP_SYNC_BEFORE_HEIGHT= -# System Data Contract info required for some tests -DPNS_OWNER_PRIVATE_KEY= -FEATURE_FLAGS_OWNER_PRIVATE_KEY= -DASHPAY_OWNER_PRIVATE_KEY= # MASTERNODE_OWNER_PRO_REG_TX_HASH= # MASTERNODE_OWNER_MASTER_PRIVATE_KEY= diff --git a/packages/platform-test-suite/bin/test.sh b/packages/platform-test-suite/bin/test.sh index cceae71906e..898ea52e9f8 100755 --- a/packages/platform-test-suite/bin/test.sh +++ b/packages/platform-test-suite/bin/test.sh @@ -13,11 +13,6 @@ Usage: test [options] -k=key --faucet-key=key - faucet private key string -n=network --network=network - use regtest, devnet or testnet --skip-sync-before-height=H - start sync funding wallet from specific height - --dpns-tld-identity-private-key=private_key - top level identity private key - --dpns-tld-identity-id=tld_identity_id - top level identity id - --dpns-contract-id=tld_contract_id - dpns contract id - --feature-flags-identity-id=ff_identity_id - feature-flags contract id - --feature-flags-contract-id=ff_contract_id - feature-flags contract id --faucet-wallet-use-storage=true - use persistent wallet storage for faucet --faucet-wallet-storage-dir=absolute_dir - specify directory where faucet wallet persistent storage will be stored -b --bail - bail after first test failure @@ -60,21 +55,6 @@ case ${i} in --skip-sync-before-height=*) skip_sync_before_height="${i#*=}" ;; - --dpns-tld-identity-private-key=*) - identity_private_key="${i#*=}" - ;; - --dpns-tld-identity-id=*) - tld_identity_id="${i#*=}" - ;; - --dpns-contract-id=*) - tld_contract_id="${i#*=}" - ;; - --feature-flags-identity-id=*) - ff_identity_id="${i#*=}" - ;; - --feature-flags-contract-id=*) - ff_contract_id="${i#*=}" - ;; -b|--bail) bail=true ;; @@ -159,31 +139,6 @@ then cmd="${cmd} SKIP_SYNC_BEFORE_HEIGHT=${skip_sync_before_height}" fi -if [ -n "$tld_contract_id" ] -then - cmd="${cmd} DPNS_CONTRACT_ID=${tld_contract_id}" -fi - -if [ -n "$tld_identity_id" ] -then - cmd="${cmd} DPNS_TOP_LEVEL_IDENTITY_ID=${tld_identity_id}" -fi - -if [ -n "$ff_identity_id" ] -then - cmd="${cmd} FEATURE_FLAGS_IDENTITY_ID=${ff_identity_id}" -fi - -if [ -n "$ff_contract_id" ] -then - cmd="${cmd} FEATURE_FLAGS_CONTRACT_ID=${ff_contract_id}" -fi - -if [ -n "$identity_private_key" ] -then - cmd="${cmd} DPNS_TOP_LEVEL_IDENTITY_PRIVATE_KEY=${identity_private_key}" -fi - if [ -n "$faucet_wallet_use_storage" ] then cmd="${cmd} FAUCET_WALLET_USE_STORAGE=${faucet_wallet_use_storage}" diff --git a/packages/platform-test-suite/test/e2e/dpns.spec.js b/packages/platform-test-suite/test/e2e/dpns.spec.js index 53c88a5e51c..786f583f873 100644 --- a/packages/platform-test-suite/test/e2e/dpns.spec.js +++ b/packages/platform-test-suite/test/e2e/dpns.spec.js @@ -2,7 +2,6 @@ const crypto = require('crypto'); const { contractId: dpnsContractId, - ownerId: dpnsOwnerId, } = require('@dashevo/dpns-contract/lib/systemIds'); const createClientWithFundedWallet = require('../../lib/test/createClientWithFundedWallet'); @@ -33,8 +32,6 @@ describe('DPNS', () => { topLevelDomain = 'dash'; secondLevelDomain = getRandomDomain(); client = await createClientWithFundedWallet(1000000); - - await client.platform.identities.topUp(dpnsOwnerId, 300000); }); after(async () => { @@ -52,84 +49,6 @@ describe('DPNS', () => { }); }); - describe('DPNS owner', () => { - let createdTLD; - let newTopLevelDomain; - let ownerClient; - - before(async () => { - ownerClient = await createClientWithFundedWallet( - 200000, - process.env.DPNS_OWNER_PRIVATE_KEY, - ); - - newTopLevelDomain = getRandomDomain(); - identity = await ownerClient.platform.identities.get(dpnsOwnerId); - - expect(identity).to.exist(); - await ownerClient.platform.identities.topUp(dpnsOwnerId, 60000); - }); - - after(async () => { - if (ownerClient) { - await ownerClient.disconnect(); - } - }); - - // generate a random one which will be used in tests above - // skip if DPNS owner private key is not passed and use `dash` in tests above - it('should be able to register a TLD', async () => { - createdTLD = await ownerClient.platform.names.register(newTopLevelDomain, { - identity: identity.getId(), - }, identity); - - // Additional wait time to mitigate testnet latency - await waitForSTPropagated(); - - expect(createdTLD).to.exist(); - expect(createdTLD.getType()).to.equal('domain'); - expect(createdTLD.getData().label).to.equal(newTopLevelDomain); - expect(createdTLD.getData().normalizedParentDomainName).to.equal(''); - }); - - // TODO: Enable test when we figure out how to skip a check in the SDK's state transition - // factory - it.skip('should not be able to update domain', async () => { - createdTLD.set('label', 'anotherlabel'); - - let broadcastError; - - try { - await ownerClient.platform.documents.broadcast({ - replace: [createdTLD], - }, identity); - } catch (e) { - broadcastError = e; - } - - expect(broadcastError).to.exist(); - expect(broadcastError.message).to.be.equal('Action is not allowed'); - expect(broadcastError.code).to.equal(40500); - }); - - // TODO: Enable test when we documentsMutable true fixed and do not prevent from deleting - it.skip('should not be able to delete domain', async () => { - let broadcastError; - - try { - await ownerClient.platform.documents.broadcast({ - delete: [createdTLD], - }, identity); - } catch (e) { - broadcastError = e; - } - - expect(broadcastError).to.exist(); - expect(broadcastError.message).to.be.equal('Action is not allowed'); - expect(broadcastError.code).to.equal(40500); - }); - }); - describe('Any Identity', () => { before(async () => { identity = await client.platform.identities.register(600000); diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 99a09f2dead..559a9d2acd0 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -19,10 +19,6 @@ ciborium = { git = "https://github.com/qrayven/ciborium", branch = "feat-ser-nul chrono = "0.4.35" serde = { version = "1.0.197", features = ["derive"] } serde_json = { version = "1.0", features = ["preserve_order"] } -serde_with = { version = "3.1.0", features = [ - "hex", - "macros", -], default-features = false } drive = { path = "../rs-drive", default-features = false, features = [ "server", "grovedb_operations_logging", diff --git a/packages/rs-drive-abci/src/abci/config.rs b/packages/rs-drive-abci/src/abci/config.rs index 18f3af7b4cc..320a1a91055 100644 --- a/packages/rs-drive-abci/src/abci/config.rs +++ b/packages/rs-drive-abci/src/abci/config.rs @@ -1,13 +1,6 @@ //! Configuration of ABCI Application server -use rand::prelude::StdRng; -use rand::SeedableRng; - -use dpp::identity::KeyType::ECDSA_SECP256K1; -use dpp::version::PlatformVersion; -use dpp::ProtocolError; use serde::{Deserialize, Serialize}; -use serde_with::serde_as; // We allow changes in the ABCI configuration, but there should be a social process // involved in making this change. @@ -23,10 +16,6 @@ pub struct AbciConfig { #[serde(rename = "abci_consensus_bind_address")] pub consensus_bind_address: String, - /// Public keys used for system identity - #[serde(flatten)] - pub keys: Keys, - /// Height of genesis block; defaults to 1 #[serde(default = "AbciConfig::default_genesis_height")] pub genesis_height: u64, @@ -59,8 +48,6 @@ impl Default for AbciConfig { fn default() -> Self { Self { consensus_bind_address: "tcp://127.0.0.1:1234".to_string(), - keys: Keys::new_random_keys_with_seed(18012014, PlatformVersion::first()) - .expect("random keys for first version can not error"), //Dash genesis day genesis_height: AbciConfig::default_genesis_height(), genesis_core_height: AbciConfig::default_genesis_core_height(), chain_id: "chain_id".to_string(), @@ -68,85 +55,3 @@ impl Default for AbciConfig { } } } - -// @append_only -/// Struct to easily load from environment keys used by the Platform. -/// -/// Once loaded, Keys can be easily converted to [SystemIdentityPublicKeys] -/// -/// [SystemIdentityPublicKeys]: super::messages::SystemIdentityPublicKeys -#[serde_as] -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Keys { - // dpns contract - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) dpns_master_public_key: Vec, - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) dpns_second_public_key: Vec, - - // dashpay contract - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) dashpay_master_public_key: Vec, - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) dashpay_second_public_key: Vec, - - // feature flags contract - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) feature_flags_master_public_key: Vec, - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) feature_flags_second_public_key: Vec, - - // masternode reward shares contract - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) masternode_reward_shares_master_public_key: Vec, - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) masternode_reward_shares_second_public_key: Vec, - - // withdrawals contract - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) withdrawals_master_public_key: Vec, - /// hex-encoded - #[serde_as(as = "serde_with::hex::Hex")] - pub(crate) withdrawals_second_public_key: Vec, -} - -impl Keys { - /// Create new random keys for a given seed - pub fn new_random_keys_with_seed( - seed: u64, - platform_version: &PlatformVersion, - ) -> Result { - let mut rng = StdRng::seed_from_u64(seed); - Ok(Keys { - dpns_master_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - dpns_second_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - dashpay_master_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - dashpay_second_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - feature_flags_master_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - feature_flags_second_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - masternode_reward_shares_master_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - masternode_reward_shares_second_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - withdrawals_master_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - withdrawals_second_public_key: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version)?, - }) - } -} diff --git a/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs b/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs index 8bae17f28a4..f0cea33990b 100644 --- a/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs @@ -205,7 +205,6 @@ mod tests { SuccessfulPaidExecution, UnpaidConsensusExecutionError, UnsuccessfulPaidExecution, }; use crate::platform_types::platform_state::v0::PlatformStateV0Methods; - use crate::platform_types::system_identity_public_keys::v0::SystemIdentityPublicKeysV0; use crate::test::helpers::setup::TestPlatformBuilder; use dpp::block::block_info::BlockInfo; use dpp::consensus::basic::BasicError; @@ -220,7 +219,6 @@ mod tests { use dpp::data_contract::document_type::random_document::{ CreateRandomDocument, DocumentFieldFillSize, DocumentFieldFillType, }; - use dpp::data_contracts::dpns_contract; use dpp::document::document_methods::DocumentMethodsV0; use dpp::document::DocumentV0Setters; use dpp::identity::accessors::{IdentityGettersV0, IdentitySettersV0}; @@ -249,19 +247,25 @@ mod tests { use dpp::version::PlatformVersion; use crate::execution::check_tx::CheckTxLevel::{FirstTimeCheck, Recheck}; + use crate::execution::validation::state_transition::tests::{ + setup_identity, setup_identity_return_master_key, + }; use crate::platform_types::platform::PlatformRef; + use assert_matches::assert_matches; use dpp::consensus::state::state_error::StateError; + use dpp::dash_to_credits; use dpp::data_contract::document_type::v0::random_document_type::{ FieldMinMaxBounds, FieldTypeWeights, RandomDocumentTypeParameters, }; use dpp::data_contract::document_type::v0::DocumentTypeV0; use dpp::data_contract::document_type::DocumentType; use dpp::identity::contract_bounds::ContractBounds::SingleContractDocumentType; + use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; + use dpp::identity::signer::Signer; use dpp::platform_value::Bytes32; use dpp::state_transition::data_contract_update_transition::DataContractUpdateTransition; use dpp::state_transition::identity_create_transition::accessors::IdentityCreateTransitionAccessorsV0; use dpp::state_transition::public_key_in_creation::accessors::IdentityPublicKeyInCreationV0Setters; - use dpp::system_data_contracts::dashpay_contract; use dpp::system_data_contracts::SystemDataContract::Dashpay; use platform_version::{TryFromPlatformVersioned, TryIntoPlatformVersioned}; use rand::rngs::StdRng; @@ -2614,28 +2618,6 @@ mod tests { #[test] fn identity_update_with_non_master_key_check_tx() { - let mut config = PlatformConfig::default(); - - let mut rng = StdRng::seed_from_u64(1); - - let secp = Secp256k1::new(); - - let master_key_pair = KeyPair::new(&secp, &mut rng); - - let _master_secret_key = master_key_pair.secret_key(); - - let master_public_key = master_key_pair.public_key(); - - config.abci.keys.dpns_master_public_key = master_public_key.serialize().to_vec(); - - let high_key_pair = KeyPair::new(&secp, &mut rng); - - let high_secret_key = high_key_pair.secret_key(); - - let high_public_key = high_key_pair.public_key(); - - config.abci.keys.dpns_second_public_key = high_public_key.serialize().to_vec(); - let platform_config = PlatformConfig { testing_configs: PlatformTestConfig { disable_instant_lock_signature_verification: true, @@ -2644,33 +2626,20 @@ mod tests { ..Default::default() }; - let platform = TestPlatformBuilder::new() - .with_config(platform_config) - .build_with_mock_rpc(); + let platform_version = PlatformVersion::latest(); - let platform_state = platform.state.load(); - let platform_version = platform_state.current_platform_version().unwrap(); + let mut platform = TestPlatformBuilder::new() + .with_config(platform_config) + .build_with_mock_rpc() + .set_genesis_state(); - let platform_ref = PlatformRef { - drive: &platform.drive, - state: &platform_state, - config: &platform.config, - core_rpc: &platform.core_rpc, - }; + let mut rng = StdRng::seed_from_u64(433); - let genesis_time = 0; + let platform_state = platform.state.load(); - let system_identity_public_keys_v0: SystemIdentityPublicKeysV0 = - platform.config.abci.keys.clone().into(); + let (identity, signer, key) = setup_identity(&mut platform, 958, dash_to_credits!(0.1)); - platform - .create_genesis_state( - genesis_time, - system_identity_public_keys_v0.into(), - None, - platform_version, - ) - .expect("expected to create genesis state"); + let secp = Secp256k1::new(); let new_key_pair = KeyPair::new(&secp, &mut rng); @@ -2695,33 +2664,39 @@ mod tests { new_key.signature = signature.to_vec().into(); let update_transition: IdentityUpdateTransition = IdentityUpdateTransitionV0 { - identity_id: dpns_contract::OWNER_ID_BYTES.into(), + identity_id: identity.id(), revision: 0, nonce: 1, add_public_keys: vec![IdentityPublicKeyInCreation::V0(new_key)], disable_public_keys: vec![], user_fee_increase: 0, - signature_public_key_id: 1, + signature_public_key_id: key.id(), signature: Default::default(), } .into(); let mut update_transition: StateTransition = update_transition.into(); - let signature = signer::sign( - &update_transition - .signable_bytes() - .expect("expected signable bytes"), - &high_secret_key.secret_bytes(), - ) - .expect("expected to sign"); - - update_transition.set_signature(signature.to_vec().into()); + let data = update_transition + .signable_bytes() + .expect("expected signable bytes"); + update_transition.set_signature( + signer + .sign(&key, data.as_slice()) + .expect("expected to sign"), + ); let update_transition_bytes = update_transition .serialize_to_bytes() .expect("expected to serialize"); + let platform_ref = PlatformRef { + drive: &platform.drive, + state: &platform_state, + config: &platform.config, + core_rpc: &platform.core_rpc, + }; + let validation_result = platform .check_tx( update_transition_bytes.as_slice(), @@ -2733,33 +2708,16 @@ mod tests { // Only master keys can sign an update - validation_result.errors.first().expect("expected an error"); + assert_matches!( + validation_result.errors.first(), + Some(ConsensusError::SignatureError( + SignatureError::InvalidSignaturePublicKeySecurityLevelError(_) + )) + ); } #[test] fn identity_update_with_encryption_key_check_tx() { - let mut config = PlatformConfig::default(); - - let mut rng = StdRng::seed_from_u64(1); - - let secp = Secp256k1::new(); - - let master_key_pair = KeyPair::new(&secp, &mut rng); - - let master_secret_key = master_key_pair.secret_key(); - - let master_public_key = master_key_pair.public_key(); - - config.abci.keys.dashpay_master_public_key = master_public_key.serialize().to_vec(); - - let high_key_pair = KeyPair::new(&secp, &mut rng); - - let _high_secret_key = high_key_pair.secret_key(); - - let high_public_key = high_key_pair.public_key(); - - config.abci.keys.dashpay_second_public_key = high_public_key.serialize().to_vec(); - let platform_config = PlatformConfig { testing_configs: PlatformTestConfig { disable_instant_lock_signature_verification: true, @@ -2768,37 +2726,25 @@ mod tests { ..Default::default() }; - let platform = TestPlatformBuilder::new() - .with_config(platform_config) - .build_with_mock_rpc(); + let platform_version = PlatformVersion::latest(); - let platform_state = platform.state.load(); - let platform_version = platform_state.current_platform_version().unwrap(); + let mut platform = TestPlatformBuilder::new() + .with_config(platform_config) + .build_with_mock_rpc() + .set_genesis_state(); - let platform_ref = PlatformRef { - drive: &platform.drive, - state: &platform_state, - config: &platform.config, - core_rpc: &platform.core_rpc, - }; + let (identity, signer, key) = + setup_identity_return_master_key(&mut platform, 958, dash_to_credits!(0.1)); - let genesis_time = 0; + let mut rng = StdRng::seed_from_u64(1); - let system_identity_public_keys_v0: SystemIdentityPublicKeysV0 = - platform.config.abci.keys.clone().into(); + let secp = Secp256k1::new(); - platform - .create_genesis_state( - genesis_time, - system_identity_public_keys_v0.into(), - None, - platform_version, - ) - .expect("expected to create genesis state"); + let platform_state = platform.state.load(); let new_key_pair = KeyPair::new(&secp, &mut rng); - let mut new_key = IdentityPublicKeyInCreationV0 { + let new_key = IdentityPublicKeyInCreationV0 { id: 2, purpose: Purpose::ENCRYPTION, security_level: SecurityLevel::MEDIUM, @@ -2817,52 +2763,39 @@ mod tests { .expect("expected to get signable bytes"); let update_transition: IdentityUpdateTransition = IdentityUpdateTransitionV0 { - identity_id: dashpay_contract::OWNER_ID_BYTES.into(), + identity_id: identity.id(), revision: 1, nonce: 1, add_public_keys: vec![IdentityPublicKeyInCreation::V0(new_key.clone())], disable_public_keys: vec![], user_fee_increase: 0, - signature_public_key_id: 0, + signature_public_key_id: key.id(), signature: Default::default(), } .into(); - let update_transition: StateTransition = update_transition.into(); + let mut update_transition: StateTransition = update_transition.into(); - let signable_bytes = update_transition + let data = update_transition .signable_bytes() .expect("expected signable bytes"); - - let secret = new_key_pair.secret_key(); - let signature = - signer::sign(&signable_bytes, &secret.secret_bytes()).expect("expected to sign"); - - new_key.signature = signature.to_vec().into(); - - let update_transition: IdentityUpdateTransition = IdentityUpdateTransitionV0 { - identity_id: dashpay_contract::OWNER_ID_BYTES.into(), - revision: 1, - nonce: 1, - add_public_keys: vec![IdentityPublicKeyInCreation::V0(new_key)], - disable_public_keys: vec![], - user_fee_increase: 0, - signature_public_key_id: 0, - signature: Default::default(), - } - .into(); - - let mut update_transition: StateTransition = update_transition.into(); - - let signature = signer::sign(&signable_bytes, &master_secret_key.secret_bytes()) - .expect("expected to sign"); - - update_transition.set_signature(signature.to_vec().into()); + update_transition.set_signature( + signer + .sign(&key, data.as_slice()) + .expect("expected to sign"), + ); let update_transition_bytes = update_transition .serialize_to_bytes() .expect("expected to serialize"); + let platform_ref = PlatformRef { + drive: &platform.drive, + state: &platform_state, + config: &platform.config, + core_rpc: &platform.core_rpc, + }; + let validation_result = platform .check_tx( update_transition_bytes.as_slice(), @@ -2872,8 +2805,8 @@ mod tests { ) .expect("expected to execute identity top up tx"); - // we won't have enough funds + // we shouldn't have any errors - validation_result.errors.first().expect("expected an error"); + assert_eq!(validation_result.errors.len(), 0); } } diff --git a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs index 5a1c4b9225c..3299efc877c 100644 --- a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs @@ -10,7 +10,6 @@ use drive::grovedb::Transaction; use crate::platform_types::cleaned_abci_messages::request_init_chain_cleaned_params; use crate::platform_types::platform_state::v0::PlatformStateV0Methods; use crate::platform_types::platform_state::PlatformState; -use crate::platform_types::system_identity_public_keys::v0::SystemIdentityPublicKeysV0; use dpp::version::PlatformVersion; use std::sync::Arc; use tenderdash_abci::proto::abci::{RequestInitChain, ResponseInitChain, ValidatorSetUpdate}; @@ -55,16 +54,8 @@ where let genesis_time = request.genesis_time; - let system_identity_public_keys_v0: SystemIdentityPublicKeysV0 = - self.config.abci.keys.clone().into(); - // Create genesis drive state - self.create_genesis_state( - genesis_time, - system_identity_public_keys_v0.into(), - Some(transaction), - platform_version, - )?; + self.create_genesis_state(genesis_time, Some(transaction), platform_version)?; // Create platform execution state let mut initial_platform_state = PlatformState::default_with_protocol_versions( diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/mod.rs index bc070e70c5f..fcea0207166 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/mod.rs @@ -1,7 +1,6 @@ use crate::error::execution::ExecutionError; use crate::error::Error; use crate::platform_types::platform::Platform; -use crate::platform_types::system_identity_public_keys::SystemIdentityPublicKeys; use dpp::identity::TimestampMillis; use dpp::version::PlatformVersion; use drive::grovedb::TransactionArg; @@ -13,7 +12,6 @@ impl Platform { pub fn create_genesis_state( &self, genesis_time: TimestampMillis, - system_identity_public_keys: SystemIdentityPublicKeys, transaction: TransactionArg, platform_version: &PlatformVersion, ) -> Result<(), Error> { @@ -23,12 +21,7 @@ impl Platform { .initialization .create_genesis_state { - 0 => self.create_genesis_state_v0( - genesis_time, - system_identity_public_keys, - transaction, - platform_version, - ), + 0 => self.create_genesis_state_v0(genesis_time, transaction, platform_version), version => Err(Error::Execution(ExecutionError::UnknownVersionMismatch { method: "create_genesis_state".to_string(), known_versions: vec![0], diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs index 42bca824834..00ae21aced3 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/create_genesis_state/v0/mod.rs @@ -4,23 +4,20 @@ use crate::platform_types::platform::Platform; use dpp::platform_value::{platform_value, BinaryData}; use dpp::ProtocolError; -use drive::dpp::identity::{Identity, KeyType, Purpose, SecurityLevel, TimestampMillis}; +use drive::dpp::identity::TimestampMillis; -use crate::platform_types::system_identity_public_keys::v0::SystemIdentityPublicKeysV0Getters; -use crate::platform_types::system_identity_public_keys::SystemIdentityPublicKeys; use dpp::block::block_info::BlockInfo; use dpp::data_contract::accessors::v0::DataContractV0Getters; use dpp::data_contract::DataContract; use dpp::document::DocumentV0; -use dpp::identity::identity_public_key::v0::IdentityPublicKeyV0; -use dpp::identity::IdentityV0; use dpp::serialization::PlatformSerializableWithPlatformVersion; use dpp::version::PlatformVersion; use drive::dpp::system_data_contracts::SystemDataContract; -use drive::util::batch::{ - DataContractOperationType, DocumentOperationType, DriveOperation, IdentityOperationType, -}; +use drive::util::batch::{DataContractOperationType, DocumentOperationType, DriveOperation}; +use dpp::system_data_contracts::dpns_contract::{ + DPNS_DASH_TLD_DOCUMENT_ID, DPNS_DASH_TLD_PREORDER_SALT, +}; use drive::query::TransactionArg; use drive::util::object_size_info::{ DataContractInfo, DocumentInfo, DocumentTypeInfo, OwnedDocumentInfo, @@ -28,22 +25,12 @@ use drive::util::object_size_info::{ use std::borrow::Cow; use std::collections::BTreeMap; -const DPNS_DASH_TLD_DOCUMENT_ID: [u8; 32] = [ - 215, 242, 197, 63, 70, 169, 23, 171, 110, 91, 57, 162, 215, 188, 38, 11, 100, 146, 137, 69, 55, - 68, 209, 224, 212, 242, 106, 141, 142, 255, 55, 207, -]; -const DPNS_DASH_TLD_PREORDER_SALT: [u8; 32] = [ - 224, 181, 8, 197, 163, 104, 37, 162, 6, 105, 58, 31, 65, 74, 161, 62, 219, 236, 244, 60, 65, - 227, 199, 153, 234, 158, 115, 123, 79, 154, 162, 38, -]; - impl Platform { /// Creates trees and populates them with necessary identities, contracts and documents #[inline(always)] pub(super) fn create_genesis_state_v0( &self, genesis_time: TimestampMillis, - system_identity_public_keys: SystemIdentityPublicKeys, transaction: TransactionArg, platform_version: &PlatformVersion, ) -> Result<(), Error> { @@ -58,101 +45,34 @@ impl Platform { let system_data_contracts = &self.drive.cache.system_data_contracts; - let dpns_data_contract = system_data_contracts.load_dpns(); - let system_data_contract_types = BTreeMap::from_iter([ - ( - SystemDataContract::DPNS, - ( - system_data_contracts.load_dpns(), - system_identity_public_keys.dpns_contract_owner(), - ), - ), + (SystemDataContract::DPNS, system_data_contracts.load_dpns()), ( SystemDataContract::Withdrawals, - ( - system_data_contracts.load_withdrawals(), - system_identity_public_keys.withdrawals_contract_owner(), - ), + system_data_contracts.load_withdrawals(), ), - // TODO: Do we still need feature flags to change consensus params like timeouts and so on? - // ( - // SystemDataContract::FeatureFlags, - // ( - // load_system_data_contract( - // SystemDataContract::FeatureFlags, - // platform_version.protocol_version, - // )?, - // system_identity_public_keys.feature_flags_contract_owner(), - // ), - // ), ( SystemDataContract::Dashpay, - ( - system_data_contracts.load_dashpay(), - system_identity_public_keys.dashpay_contract_owner(), - ), + system_data_contracts.load_dashpay(), ), ( SystemDataContract::MasternodeRewards, - ( - system_data_contracts.load_masternode_reward_shares(), - system_identity_public_keys.masternode_reward_shares_contract_owner(), - ), + system_data_contracts.load_masternode_reward_shares(), ), ]); - for (data_contract, identity_public_keys_set) in system_data_contract_types.values() { - let public_keys = [ - ( - 0, - IdentityPublicKeyV0 { - id: 0, - purpose: Purpose::AUTHENTICATION, - security_level: SecurityLevel::MASTER, - contract_bounds: None, - key_type: KeyType::ECDSA_SECP256K1, - read_only: false, - data: identity_public_keys_set.master.clone().into(), - disabled_at: None, - } - .into(), - ), - ( - 1, - IdentityPublicKeyV0 { - id: 1, - purpose: Purpose::AUTHENTICATION, - security_level: SecurityLevel::HIGH, - contract_bounds: None, - key_type: KeyType::ECDSA_SECP256K1, - read_only: false, - data: identity_public_keys_set.high.clone().into(), - disabled_at: None, - } - .into(), - ), - ]; - - let identity = IdentityV0 { - id: data_contract.owner_id(), - public_keys: BTreeMap::from(public_keys), - balance: 0, - revision: 0, - } - .into(); - + for data_contract in system_data_contract_types.values() { self.register_system_data_contract_operations( data_contract, &mut operations, platform_version, )?; - - self.register_system_identity_operations(identity, &mut operations); } + let dpns_contract = system_data_contracts.load_dpns(); + self.register_dpns_top_level_domain_operations( - &dpns_data_contract, + &dpns_contract, genesis_time, &mut operations, )?; @@ -189,19 +109,6 @@ impl Platform { Ok(()) } - fn register_system_identity_operations( - &self, - identity: Identity, - operations: &mut Vec, - ) { - operations.push(DriveOperation::IdentityOperation( - IdentityOperationType::AddNewIdentity { - identity, - is_masternode_identity: false, - }, - )) - } - fn register_dpns_top_level_domain_operations<'a>( &'a self, contract: &'a DataContract, @@ -294,7 +201,7 @@ mod tests { assert_eq!( hex::encode(root_hash), - "6cf0ca2eea48431b1df389a2d360fa1e9889c34f05248a7159b4e45c818fb80d" + "adfd53ece823697cec9b1afc71a0fac7fab41bf87ef98903f12a70c7efc896fc" ) } } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs index fc64b77912b..b957d437c89 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs @@ -476,7 +476,7 @@ mod tests { )), FeeResult { storage_fee: 11556000, - processing_fee: 634380, + processing_fee: 526140, fee_refunds: FeeRefunds::default(), removed_bytes_from_system: 0 } @@ -1487,7 +1487,7 @@ mod tests { assert_eq!(processing_result.valid_count(), 1); - assert_eq!(processing_result.aggregated_fees().processing_fee, 1449980); + assert_eq!(processing_result.aggregated_fees().processing_fee, 1341740); } #[test] @@ -1910,7 +1910,7 @@ mod tests { assert_eq!(processing_result.valid_count(), 0); - assert_eq!(processing_result.aggregated_fees().processing_fee, 624280); + assert_eq!(processing_result.aggregated_fees().processing_fee, 516040); } } @@ -2049,7 +2049,7 @@ mod tests { assert_eq!(processing_result.valid_count(), 1); - assert_eq!(processing_result.aggregated_fees().processing_fee, 1717580); + assert_eq!(processing_result.aggregated_fees().processing_fee, 1609340); } #[test] @@ -2514,7 +2514,7 @@ mod tests { assert_eq!(processing_result.valid_count(), 0); - assert_eq!(processing_result.aggregated_fees().processing_fee, 552580); + assert_eq!(processing_result.aggregated_fees().processing_fee, 445700); } #[test] @@ -2603,7 +2603,7 @@ mod tests { assert_eq!(processing_result.valid_count(), 0); - assert_eq!(processing_result.aggregated_fees().processing_fee, 624280); + assert_eq!(processing_result.aggregated_fees().processing_fee, 516040); } } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs index d1145c3f56a..218035d77fe 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs @@ -197,6 +197,64 @@ pub(crate) mod tests { (identity, signer, critical_public_key) } + pub(crate) fn setup_identity_return_master_key( + platform: &mut TempPlatform, + seed: u64, + credits: Credits, + ) -> (Identity, SimpleSigner, IdentityPublicKey) { + let platform_version = PlatformVersion::latest(); + let mut signer = SimpleSigner::default(); + + let mut rng = StdRng::seed_from_u64(seed); + + let (master_key, master_private_key) = + IdentityPublicKey::random_ecdsa_master_authentication_key_with_rng( + 0, + &mut rng, + platform_version, + ) + .expect("expected to get key pair"); + + signer.add_key(master_key.clone(), master_private_key.clone()); + + let (critical_public_key, private_key) = + IdentityPublicKey::random_ecdsa_critical_level_authentication_key_with_rng( + 1, + &mut rng, + platform_version, + ) + .expect("expected to get key pair"); + + signer.add_key(critical_public_key.clone(), private_key.clone()); + + let identity: Identity = IdentityV0 { + id: Identifier::random_with_rng(&mut rng), + public_keys: BTreeMap::from([ + (0, master_key.clone()), + (1, critical_public_key.clone()), + ]), + balance: credits, + revision: 0, + } + .into(); + + // We just add this identity to the system first + + platform + .drive + .add_new_identity( + identity.clone(), + false, + &BlockInfo::default(), + true, + None, + platform_version, + ) + .expect("expected to add a new identity"); + + (identity, signer, master_key) + } + pub(crate) fn setup_identity_with_withdrawal_key_and_system_credits( platform: &mut TempPlatform, seed: u64, diff --git a/packages/rs-drive-abci/src/platform_types/mod.rs b/packages/rs-drive-abci/src/platform_types/mod.rs index f6e9b3f838e..b973b9051eb 100644 --- a/packages/rs-drive-abci/src/platform_types/mod.rs +++ b/packages/rs-drive-abci/src/platform_types/mod.rs @@ -1,32 +1,3 @@ -// MIT LICENSE -// -// Copyright (c) 2021 Dash Core Group -// -// Permission is hereby granted, free of charge, to any -// person obtaining a copy of this software and associated -// documentation files (the "Software"), to deal in the -// Software without restriction, including without -// limitation the rights to use, copy, modify, merge, -// publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software -// is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice -// shall be included in all copies or substantial portions -// of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -// SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -// IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// - /// The outcome of a block execution pub mod block_execution_outcome; /// The block proposal @@ -51,8 +22,6 @@ pub mod required_identity_public_key_set; pub mod signature_verification_quorum_set; /// The state transition execution result as part of the block execution outcome pub mod state_transitions_processing_result; -/// System identity public keys -pub mod system_identity_public_keys; /// The validator module /// A validator is a masternode that can participate in consensus by being part of a validator set pub mod validator; diff --git a/packages/rs-drive-abci/src/platform_types/system_identity_public_keys/mod.rs b/packages/rs-drive-abci/src/platform_types/system_identity_public_keys/mod.rs deleted file mode 100644 index ebeb142f0e9..00000000000 --- a/packages/rs-drive-abci/src/platform_types/system_identity_public_keys/mod.rs +++ /dev/null @@ -1,91 +0,0 @@ -use crate::platform_types::required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet; -use crate::platform_types::system_identity_public_keys::v0::{ - SystemIdentityPublicKeysV0, SystemIdentityPublicKeysV0Getters, - SystemIdentityPublicKeysV0Setters, -}; -use derive_more::From; -use serde::{Deserialize, Serialize}; - -/// Version 0 -pub mod v0; - -/// System identity public keys -#[derive(Serialize, Deserialize, Clone, Debug, From)] -pub enum SystemIdentityPublicKeys { - /// Version 0 - V0(SystemIdentityPublicKeysV0), -} - -impl SystemIdentityPublicKeysV0Getters for SystemIdentityPublicKeys { - fn masternode_reward_shares_contract_owner(&self) -> &RequiredIdentityPublicKeysSet { - match self { - SystemIdentityPublicKeys::V0(v0) => &v0.masternode_reward_shares_contract_owner, - } - } - - fn feature_flags_contract_owner(&self) -> &RequiredIdentityPublicKeysSet { - match self { - SystemIdentityPublicKeys::V0(v0) => &v0.feature_flags_contract_owner, - } - } - - fn dpns_contract_owner(&self) -> &RequiredIdentityPublicKeysSet { - match self { - SystemIdentityPublicKeys::V0(v0) => &v0.dpns_contract_owner, - } - } - - fn withdrawals_contract_owner(&self) -> &RequiredIdentityPublicKeysSet { - match self { - SystemIdentityPublicKeys::V0(v0) => &v0.withdrawals_contract_owner, - } - } - - fn dashpay_contract_owner(&self) -> &RequiredIdentityPublicKeysSet { - match self { - SystemIdentityPublicKeys::V0(v0) => &v0.dashpay_contract_owner, - } - } -} - -impl SystemIdentityPublicKeysV0Setters for SystemIdentityPublicKeys { - fn set_masternode_reward_shares_contract_owner(&mut self, keys: RequiredIdentityPublicKeysSet) { - match self { - SystemIdentityPublicKeys::V0(v0) => { - v0.masternode_reward_shares_contract_owner = keys; - } - } - } - - fn set_feature_flags_contract_owner(&mut self, keys: RequiredIdentityPublicKeysSet) { - match self { - SystemIdentityPublicKeys::V0(v0) => { - v0.feature_flags_contract_owner = keys; - } - } - } - - fn set_dpns_contract_owner(&mut self, keys: RequiredIdentityPublicKeysSet) { - match self { - SystemIdentityPublicKeys::V0(v0) => { - v0.dpns_contract_owner = keys; - } - } - } - - fn set_withdrawals_contract_owner(&mut self, keys: RequiredIdentityPublicKeysSet) { - match self { - SystemIdentityPublicKeys::V0(v0) => { - v0.withdrawals_contract_owner = keys; - } - } - } - - fn set_dashpay_contract_owner(&mut self, keys: RequiredIdentityPublicKeysSet) { - match self { - SystemIdentityPublicKeys::V0(v0) => { - v0.dashpay_contract_owner = keys; - } - } - } -} diff --git a/packages/rs-drive-abci/src/platform_types/system_identity_public_keys/v0/mod.rs b/packages/rs-drive-abci/src/platform_types/system_identity_public_keys/v0/mod.rs deleted file mode 100644 index d80ba0b00d7..00000000000 --- a/packages/rs-drive-abci/src/platform_types/system_identity_public_keys/v0/mod.rs +++ /dev/null @@ -1,176 +0,0 @@ -use crate::abci::config::Keys; -use crate::platform_types::required_identity_public_key_set; -use serde::{Deserialize, Serialize}; - -/// System identity public keys -#[derive(Serialize, Deserialize, Clone, Debug)] -#[serde(rename_all = "camelCase")] -pub struct SystemIdentityPublicKeysV0 { - /// Required public key set for masternode reward shares contract owner identity - pub masternode_reward_shares_contract_owner: - required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - /// Required public key set for feature flags contract owner identity - pub feature_flags_contract_owner: - required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - /// Required public key set for dpns contract owner identity - pub dpns_contract_owner: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - /// Required public key set for withdrawals contract owner identity - pub withdrawals_contract_owner: - required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - /// Required public key set for dashpay contract owner identity - pub dashpay_contract_owner: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, -} - -impl From for SystemIdentityPublicKeysV0 { - fn from(keys: Keys) -> Self { - Self { - masternode_reward_shares_contract_owner: - required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - master: keys.masternode_reward_shares_master_public_key, - high: keys.masternode_reward_shares_second_public_key, - }, - feature_flags_contract_owner: - required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - master: keys.feature_flags_master_public_key, - high: keys.feature_flags_second_public_key, - }, - dpns_contract_owner: - required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - master: keys.dpns_master_public_key, - high: keys.dpns_second_public_key, - }, - withdrawals_contract_owner: - required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - master: keys.withdrawals_master_public_key, - high: keys.withdrawals_second_public_key, - }, - dashpay_contract_owner: - required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - master: keys.dashpay_master_public_key, - high: keys.dashpay_second_public_key, - }, - } - } -} - -/// Trait to get the fields of SystemIdentityPublicKeysV0 -pub trait SystemIdentityPublicKeysV0Getters { - /// Returns the required public key set for masternode reward shares contract owner identity - fn masternode_reward_shares_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet; - /// Returns the required public key set for feature flags contract owner identity - fn feature_flags_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet; - /// Returns the required public key set for dpns contract owner identity - fn dpns_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet; - /// Returns the required public key set for withdrawals contract owner identity - fn withdrawals_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet; - /// Returns the required public key set for dashpay contract owner identity - fn dashpay_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet; -} - -/// Trait to set the fields of SystemIdentityPublicKeysV0 -pub trait SystemIdentityPublicKeysV0Setters { - /// Sets the required public key set for masternode reward shares contract owner identity - fn set_masternode_reward_shares_contract_owner( - &mut self, - keys: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ); - /// Sets the required public key set for feature flags contract owner identity - fn set_feature_flags_contract_owner( - &mut self, - keys: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ); - /// Sets the required public key set for dpns contract owner identity - fn set_dpns_contract_owner( - &mut self, - keys: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ); - /// Sets the required public key set for withdrawals contract owner identity - fn set_withdrawals_contract_owner( - &mut self, - keys: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ); - /// Sets the required public key set for dashpay contract owner identity - fn set_dashpay_contract_owner( - &mut self, - keys: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ); -} - -impl SystemIdentityPublicKeysV0Getters for SystemIdentityPublicKeysV0 { - fn masternode_reward_shares_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - &self.masternode_reward_shares_contract_owner - } - - fn feature_flags_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - &self.feature_flags_contract_owner - } - - fn dpns_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - &self.dpns_contract_owner - } - - fn withdrawals_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - &self.withdrawals_contract_owner - } - - fn dashpay_contract_owner( - &self, - ) -> &required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet { - &self.dashpay_contract_owner - } -} - -impl SystemIdentityPublicKeysV0Setters for SystemIdentityPublicKeysV0 { - fn set_masternode_reward_shares_contract_owner( - &mut self, - owner: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ) { - self.masternode_reward_shares_contract_owner = owner; - } - - fn set_feature_flags_contract_owner( - &mut self, - owner: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ) { - self.feature_flags_contract_owner = owner; - } - - fn set_dpns_contract_owner( - &mut self, - owner: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ) { - self.dpns_contract_owner = owner; - } - - fn set_withdrawals_contract_owner( - &mut self, - owner: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ) { - self.withdrawals_contract_owner = owner; - } - - fn set_dashpay_contract_owner( - &mut self, - owner: required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet, - ) { - self.dashpay_contract_owner = owner; - } -} diff --git a/packages/rs-drive-abci/src/test/fixture/abci.rs b/packages/rs-drive-abci/src/test/fixture/abci.rs index 0330ac740cc..0d2db3608e5 100644 --- a/packages/rs-drive-abci/src/test/fixture/abci.rs +++ b/packages/rs-drive-abci/src/test/fixture/abci.rs @@ -1,42 +1,7 @@ -// MIT LICENSE -// -// Copyright (c) 2021 Dash Core Group -// -// Permission is hereby granted, free of charge, to any -// person obtaining a copy of this software and associated -// documentation files (the "Software"), to deal in the -// Software without restriction, including without -// limitation the rights to use, copy, modify, merge, -// publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software -// is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice -// shall be included in all copies or substantial portions -// of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -// SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -// IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// - //! Execution Tests //! use crate::config::PlatformConfig; -use crate::platform_types::required_identity_public_key_set::v0::RequiredIdentityPublicKeysSet; -use crate::platform_types::system_identity_public_keys::v0::SystemIdentityPublicKeysV0; -use dpp::version::PlatformVersion; -use drive::dpp::identity::KeyType::ECDSA_SECP256K1; -use rand::rngs::StdRng; -use rand::SeedableRng; use tenderdash_abci::proto::abci::RequestInitChain; use tenderdash_abci::proto::google::protobuf::Timestamp; use tenderdash_abci::proto::types::{ConsensusParams, VersionParams}; @@ -61,111 +26,3 @@ pub fn static_init_chain_request(config: &PlatformConfig) -> RequestInitChain { initial_core_height: config.abci.genesis_core_height, } } - -/// Creates static system identity public keys fixture -pub fn static_system_identity_public_keys_v0() -> SystemIdentityPublicKeysV0 { - SystemIdentityPublicKeysV0 { - masternode_reward_shares_contract_owner: RequiredIdentityPublicKeysSet { - master: vec![ - 3, 51, 164, 44, 98, 142, 140, 147, 206, 3, 134, 133, 111, 143, 34, 57, 200, 75, - 248, 22, 207, 133, 144, 113, 108, 120, 145, 253, 201, 129, 164, 223, 11, - ], - high: vec![ - 3, 163, 0, 40, 86, 173, 145, 102, 45, 195, 75, 102, 80, 162, 199, 248, 178, 114, - 108, 148, 122, 65, 158, 11, 136, 15, 179, 172, 195, 135, 99, 162, 113, - ], - }, - feature_flags_contract_owner: RequiredIdentityPublicKeysSet { - master: vec![ - 2, 35, 147, 72, 99, 130, 165, 187, 38, 40, 86, 196, 159, 134, 152, 39, 161, 199, - 154, 58, 60, 56, 116, 127, 60, 184, 195, 45, 215, 189, 25, 23, 151, - ], - high: vec![ - 3, 193, 10, 192, 138, 119, 223, 223, 205, 199, 6, 234, 67, 217, 101, 26, 192, 134, - 97, 129, 184, 53, 65, 21, 135, 236, 164, 210, 213, 71, 127, 57, 247, - ], - }, - dpns_contract_owner: RequiredIdentityPublicKeysSet { - master: vec![ - 3, 125, 7, 78, 176, 10, 162, 134, 196, 56, 181, 209, 43, 124, 108, 162, 81, 4, 214, - 27, 3, 230, 96, 27, 106, 206, 125, 94, 176, 54, 251, 188, 35, - ], - high: vec![ - 2, 88, 82, 223, 97, 26, 34, 139, 14, 127, 188, 207, 244, 234, 161, 23, 80, 14, 173, - 132, 98, 40, 9, 234, 127, 192, 93, 207, 109, 45, 187, 193, 212, - ], - }, - withdrawals_contract_owner: RequiredIdentityPublicKeysSet { - master: vec![ - 2, 197, 113, 255, 12, 219, 114, 99, 77, 228, 253, 35, 244, 12, 78, 213, 48, 179, - 211, 29, 239, 201, 135, 165, 84, 121, 214, 94, 126, 140, 30, 36, 154, - ], - high: vec![ - 3, 131, 79, 146, 162, 19, 46, 85, 39, 60, 183, 19, 232, 85, 166, 251, 242, 23, 151, - 4, 131, 12, 25, 9, 68, 112, 114, 13, 100, 52, 206, 69, 71, - ], - }, - dashpay_contract_owner: RequiredIdentityPublicKeysSet { - master: vec![ - 2, 238, 109, 155, 21, 237, 28, 49, 5, 53, 41, 119, 57, 230, 153, 115, 64, 109, 189, - 26, 103, 155, 231, 250, 210, 189, 210, 224, 134, 133, 3, 48, 119, - ], - high: vec![ - 2, 113, 28, 225, 254, 218, 253, 230, 118, 148, 215, 113, 149, 12, 71, 79, 227, 0, - 228, 100, 212, 246, 124, 42, 100, 71, 249, 182, 30, 144, 250, 1, 243, - ], - }, - } -} - -/// Creates random system identity public keys fixture -pub fn random_system_identity_public_keys(seed: Option) -> SystemIdentityPublicKeysV0 { - let platform_version = PlatformVersion::latest(); - let mut rng = match seed { - None => StdRng::from_entropy(), - Some(seed_value) => StdRng::seed_from_u64(seed_value), - }; - - SystemIdentityPublicKeysV0 { - masternode_reward_shares_contract_owner: RequiredIdentityPublicKeysSet { - master: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - high: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - }, - feature_flags_contract_owner: RequiredIdentityPublicKeysSet { - master: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - high: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - }, - dpns_contract_owner: RequiredIdentityPublicKeysSet { - master: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - high: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - }, - withdrawals_contract_owner: RequiredIdentityPublicKeysSet { - master: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - high: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - }, - dashpay_contract_owner: RequiredIdentityPublicKeysSet { - master: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - high: ECDSA_SECP256K1 - .random_public_key_data(&mut rng, platform_version) - .unwrap(), - }, - } -} diff --git a/packages/rs-drive-abci/src/test/helpers/setup.rs b/packages/rs-drive-abci/src/test/helpers/setup.rs index 6c7f6e3fefa..b4e0c5a4df1 100644 --- a/packages/rs-drive-abci/src/test/helpers/setup.rs +++ b/packages/rs-drive-abci/src/test/helpers/setup.rs @@ -38,7 +38,6 @@ use crate::platform_types::platform::Platform; use crate::platform_types::platform_state::v0::PlatformStateV0Methods; #[cfg(any(feature = "mocks", test))] use crate::rpc::core::MockCoreRPCLike; -use crate::test::fixture::abci::static_system_identity_public_keys_v0; use crate::{config::PlatformConfig, rpc::core::DefaultCoreRPC}; use dpp::block::block_info::BlockInfo; use dpp::document::transfer::Transferable; @@ -194,12 +193,7 @@ impl TempPlatform { /// Sets Platform to genesis state. pub fn set_genesis_state(self) -> Self { self.platform - .create_genesis_state( - Default::default(), - static_system_identity_public_keys_v0().into(), - None, - PlatformVersion::latest(), - ) + .create_genesis_state(Default::default(), None, PlatformVersion::latest()) .expect("should create root tree successfully"); self diff --git a/packages/rs-drive-abci/tests/strategy_tests/main.rs b/packages/rs-drive-abci/tests/strategy_tests/main.rs index 651b4fa9c67..7a19a1e7e68 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/main.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/main.rs @@ -527,7 +527,7 @@ mod tests { .expect("expected to fetch balances") .expect("expected to have an identity to get balance from"); - assert_eq!(balance, 99866651660) + assert_eq!(balance, 99867004680) } #[test] @@ -1194,7 +1194,7 @@ mod tests { .unwrap() .unwrap() ), - "2f5fd65cc5392f9be3a8ceab38f2e284a0c1ccd87b744d3d392ac83a97d0f4b9".to_string() + "065668f27dd4e3611a6aec4797fdd47acbd7356ae84eb711b8289dab8f09ea31".to_string() ) } @@ -1915,7 +1915,7 @@ mod tests { .unwrap() .unwrap() ), - "85114fce944f2583751d38cb427571e00fc957f2fd6f37a355298e697370c143".to_string() + "8c63acd8e6f41f316ea8257e3abc828a5b4d94726fb51575c5cb1288e9605086".to_string() ) } @@ -2050,7 +2050,7 @@ mod tests { .unwrap() .unwrap() ), - "b563c5583d8aae38d0cd841c956c44b029705b915af89416d20a3a20f54bfc39".to_string() + "77bb976ad70a75cdbf044ec311feb8581bb13dea4e66d0fa7b9abc52157b422a".to_string() ) } diff --git a/packages/rs-drive/tests/deterministic_root_hash.rs b/packages/rs-drive/tests/deterministic_root_hash.rs index efb135f8d51..e2cd8cc75e4 100644 --- a/packages/rs-drive/tests/deterministic_root_hash.rs +++ b/packages/rs-drive/tests/deterministic_root_hash.rs @@ -297,7 +297,7 @@ mod tests { .unwrap() .expect("should return app hash"); - let expected_app_hash = "d4adde72efa33c20ba41ae2c6b34255060bea5f51592e4e9977dd41e893bd21e"; + let expected_app_hash = "1b80f4a9f00597b3f1ddca904b3cee67576868adcdd802c0a3f91e14209bb402"; assert_eq!(hex::encode(app_hash), expected_app_hash); } diff --git a/packages/rs-sdk/tests/fetch/config.rs b/packages/rs-sdk/tests/fetch/config.rs index 27738cb552a..fabf64cb405 100644 --- a/packages/rs-sdk/tests/fetch/config.rs +++ b/packages/rs-sdk/tests/fetch/config.rs @@ -3,6 +3,7 @@ //! This module contains [Config] struct that can be used to configure dash-platform-sdk. //! It's mainly used for testing. +use dpp::platform_value::string_encoding::Encoding; use dpp::{ dashcore::{hashes::Hash, ProTxHash}, prelude::Identifier, @@ -225,7 +226,16 @@ impl Config { } fn default_identity_id() -> Identifier { - data_contracts::dpns_contract::OWNER_ID_BYTES.into() + // TODO: We don't have default system identities anymore. + // So now I used this manually created identity to populate test vectors. + // Next time we need to do it again and update this value :(. This is terrible. + // We should automate creation of identity for SDK tests when we have time. + Identifier::from_string( + "J2aTnrrc8eea3pQBY91QisM3QH5FM9JK11mQCVwxeMqj", + Encoding::Base58, + ) + .unwrap() + .into() } fn default_data_contract_id() -> Identifier { diff --git a/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/msg_GetContestedResourceIdentityVotesRequest_e000a8dfb1f42155770acb028f56557d0524384797bb450e22f41f66743d5d11.json b/packages/rs-sdk/tests/vectors/contested_resource_identity_votes_not_found/msg_GetContestedResourceIdentityVotesRequest_e000a8dfb1f42155770acb028f56557d0524384797bb450e22f41f66743d5d11.json index 3297c3c448014f58200ccde2e55efafff5137ba9..1cd118dc3f193bd80d6d7b972a6badc73ac1d62a 100644 GIT binary patch literal 32081 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 Tto!2IFTC;WN9{%adH?V?u}s5M literal 40517 zcmeI*-EI^~5(VJB<|z=@ec?7X;CYFCfYHc8i&Ui z{&g{_+3ETD?*DK8YB`vQ{Pqc&CvUF*eSH_;ZvJ@l=KjOCuV25r`ufw`S68=}FW>#+ z>gLt;%|El~?)HzX`$g~WUf$kazP!79|Mu?c^7prI-h>jD*Eg@{CKkbvtQn=*x~a&akK8$&69>wx1W7>qI*5vouBN^ z&-&q6%|AsuHaYzJY&-d%}?roU6{W);?dc~E(KeU zo*s8+K#`1pI%|nyppaZ24X3#nxf%IhTyKcy4^njRQ-4Utp6|||?aohU-ulVn?wSPd z_w}|Ylr%YgdfvB5S{+zJu{d%xxFz{tBU5w^$Qq~b>D6EL?ZqdyHNOwxTyS3eOw5DM z-(<}G^!)oCHvFE`6g1#6q=Y#j=C^9-Ar&8Hvgyn3j~CY$o3tqI;h42urcNjh!TREe zi@yJUtsIGBls2+UfQVs&IqNC5izFCcm2++;a3&W!DWr?J#jx9X_Vvl24B_K}6 za7i=v9FrXTqiT5wy~kdj5W9$1S{(xm%~BGpSfouK?a>E`Ekm$CxQfU)C zB85grgd38jZXUXd$P@^nQ}>U(ltY({^sb*+V!yoB^S1U0T+&|R{`@1>mqtmly7cP50;j00b|#ci z=W8$J(0Fm)7+%@bGz3kQc?P1`

Smud28r@G>Mt%_NlE7Qsk|^j4kI$}6d(hAeY< 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 literal 48644 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 Q>8r)dq*~gU*IVEJA6Xu1e*gdg delta 3122 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 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json b/packages/rs-sdk/tests/vectors/document_list_document_query/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json deleted file mode 100644 index 774070dee0d7b9ae5dbf882975ebccdbbea27685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58540 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 Bg((04 diff --git a/packages/rs-sdk/tests/vectors/document_list_document_query/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/document_list_document_query/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 44f60a39152ed18488e16c9ed9c115704eabb437..8b487ecf0b42ac12024a09193eb8134338e80914 100644 GIT binary patch delta 3242 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 Q>8r)dq*~gU*IVEJA6Xu1e*gdg delta 3122 zcmYjTYitzP71qqGckQIu#&I#`X>4rA_RP+mnO!f&7{9VM7JjT6ButBgOJdxrq}ev8 zts0UzO;sA=v|CQ(LrEykt2Js;R<#Tz6|yTNXi=zXqRLW!1gAv(kw92slu9@%J?Gw8 zmp}H-ojdoQ^PTVe&Y3&D?C8tO(zE(~QO}GDGa4~H_{;bPxTAkdi$d$wDtN*8!Rm+^ zjhWGUGwS-AXdmzP{N0U#%RymAHqqmT+>*)4oL4nWtkEKnYPDcTiH)feT|jy?0EsOo zrd=Zl`Kv5m4Z`)cVQj9|?IVu|VU8BlU0MJi_@!Qt$v1Ty-j6xZ(h-CeZ+I~Nhz(cs z1P(SB5xm%J(2+$!_-T&`?+we-g!~#t;sVQRjUb-yFrsi=SkN*cATboc>0-@>w%ZQY zeyQ(;o?HjgaSM;l(?v6D0&uudz~y1Oq`nr`mCKi7hjoFXn?B>k)E_-8_>m@f_vGvO zc2It{zf)$&xma?cw8;Z|*5u##Y?tA|e4Dypa*M!^+6^08J`G{!3%y2x@u!74#z4qF zkX{+Yg-+UZY#YJh8X>GYs)@07&BBo=L03^^;j*)S$i2B9e0bM`orLnBNhpiL0DM$K zaE9Qm`zpzviEMsfp?jG1!nm2EbNt^oe9+OS~VwWVrd%Te9M z>CHrigKZH!@Q@+!H=F2bq)6_;0@H}%dB!1%4SI=|CRjk zR6MLj@OyFXn~II+$Eo6%hgB%g_1I8GOwP2*;)UQ?AyJx1TVc{R=BnLbLg6P7rV|4r zaIA!`#X1kaHmbXjU+m#CT{4gmv-jRwgkUIWW2r}P(?bHj(v!^OI^V)X6NNl~B!qwe9o6r} zY6gcxFrnZ+L8@}#zd};!nHqtsJYw?5I#aRX@n(x9d%Yx#=OTtm4a0(vzVdw{niM(n zI&)HU72^man6CCPeM>Pp2mjnkc@D1eMgPH!=0V@vF5bPNg(cpplg{LL$L=6}enIZB zWT^(HP1rMSksx>Cg$E^$0ob~c6#f*6J0c);DFk9pGLuBnKmw>}(k!{m7Lr;Kz^N`G z(vr}QH#?I5zb#{37hV}S#86^B_7T=Mqu*UrW-*>#BJbU z27jE@-q&f(R7s3)qHj*cQw)1N!atqKS$kIyX1k{#U4ID5=xcTi$&_789neFVSR{7j+tOUH{ZUPp z$imDHDi|M4q>%0|DBXc~$;X!MBns?5t2+*)hJ6H!W~J{ zRc|gKIzg7qhI6=wh)N#I(1*FcR7D(c44?ZAwjzmQ7Gv78(#Dm_CFovm2kfF}RfoYP zB`4Z!{M&;@7zRv%i`&Wn%15aH()J5tbUfFC{FL-grX@^i1k&5rQB_VgypM--h)I9t=;Y&(1C9KA(f}M+wsxs~y=S$M#WHd|nU3f0991D956QdEMADUOG>Rh*$66ZK0aH&#>@d~LTYns$dWP~B?xT!0*r%o!% zNBu%DLxR}2om9vv6EHj+@O(pV8G+I!!ns|E2+7NQAA7n@$&Y7?Gq0&sif)oJ*h#60 zl3fuo=N_U`QHNI1{_NXJg25|~>7Lv&SV#0Pe1nvdHIQswWNNU#vmVp0knZ{$DZke9 zg8Od{raso{viLbT_y8&SL^p*Y*+2-BAuXvSGmU)$c-Blo*^v(dkaY?LlXi{Y;{4j1Tb0bLwk)hmF#!n1p-D< zTYy<5)xvI$cW1MXWK}5$3yQPt%%6l#FYH#;TwHDQoPgczwLAe0wE9gs+^vKKi8cij z9irMblMNG5^6ouzwK%xZ_cEI5l=eA!+1HH%s=&w=pS(?94day|nmStUP=An)X;IYF z_o;YGtj;Nv_SoBYX*B`g~wIUr4%(jLQ@X(vRpgOOw&d5Q<^ zw|Rc>0eq7@h^H^eEVrd~kq0qAjv6+2M#Rsy5T7K1{*cXD3PM9AT_u5FD{&xW-osZK e_-VM2ih@(5=RN`67San~WE;ytin5p8cjT_4U2; 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,Pt8y5SbCi9}mGp1AA~H7L89 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 Q>8r)dq*~gU*IVEJA6Xu1e*gdg delta 3122 zcmYjTYitzP71qqGckQIu#&I#`X>4rA_RP+mnO!f&7{9VM7JjT6ButBgOJdxrq}ev8 zts0UzO;sA=v|CQ(LrEykt2Js;R<#Tz6|yTNXi=zXqRLW!1gAv(kw92slu9@%J?Gw8 zmp}H-ojdoQ^PTVe&Y3&D?C8tO(zE(~QO}GDGa4~H_{;bPxTAkdi$d$wDtN*8!Rm+^ zjhWGUGwS-AXdmzP{N0U#%RymAHqqmT+>*)4oL4nWtkEKnYPDcTiH)feT|jy?0EsOo zrd=Zl`Kv5m4Z`)cVQj9|?IVu|VU8BlU0MJi_@!Qt$v1Ty-j6xZ(h-CeZ+I~Nhz(cs z1P(SB5xm%J(2+$!_-T&`?+we-g!~#t;sVQRjUb-yFrsi=SkN*cATboc>0-@>w%ZQY zeyQ(;o?HjgaSM;l(?v6D0&uudz~y1Oq`nr`mCKi7hjoFXn?B>k)E_-8_>m@f_vGvO zc2It{zf)$&xma?cw8;Z|*5u##Y?tA|e4Dypa*M!^+6^08J`G{!3%y2x@u!74#z4qF zkX{+Yg-+UZY#YJh8X>GYs)@07&BBo=L03^^;j*)S$i2B9e0bM`orLnBNhpiL0DM$K zaE9Qm`zpzviEMsfp?jG1!nm2EbNt^oe9+OS~VwWVrd%Te9M z>CHrigKZH!@Q@+!H=F2bq)6_;0@H}%dB!1%4SI=|CRjk zR6MLj@OyFXn~II+$Eo6%hgB%g_1I8GOwP2*;)UQ?AyJx1TVc{R=BnLbLg6P7rV|4r zaIA!`#X1kaHmbXjU+m#CT{4gmv-jRwgkUIWW2r}P(?bHj(v!^OI^V)X6NNl~B!qwe9o6r} zY6gcxFrnZ+L8@}#zd};!nHqtsJYw?5I#aRX@n(x9d%Yx#=OTtm4a0(vzVdw{niM(n zI&)HU72^man6CCPeM>Pp2mjnkc@D1eMgPH!=0V@vF5bPNg(cpplg{LL$L=6}enIZB zWT^(HP1rMSksx>Cg$E^$0ob~c6#f*6J0c);DFk9pGLuBnKmw>}(k!{m7Lr;Kz^N`G z(vr}QH#?I5zb#{37hV}S#86^B_7T=Mqu*UrW-*>#BJbU z27jE@-q&f(R7s3)qHj*cQw)1N!atqKS$kIyX1k{#U4ID5=xcTi$&_789neFVSR{7j+tOUH{ZUPp z$imDHDi|M4q>%0|DBXc~$;X!MBns?5t2+*)hJ6H!W~J{ zRc|gKIzg7qhI6=wh)N#I(1*FcR7D(c44?ZAwjzmQ7Gv78(#Dm_CFovm2kfF}RfoYP zB`4Z!{M&;@7zRv%i`&Wn%15aH()J5tbUfFC{FL-grX@^i1k&5rQB_VgypM--h)I9t=;Y&(1C9KA(f}M+wsxs~y=S$M#WHd|nU3f0991D956QdEMADUOG>Rh*$66ZK0aH&#>@d~LTYns$dWP~B?xT!0*r%o!% zNBu%DLxR}2om9vv6EHj+@O(pV8G+I!!ns|E2+7NQAA7n@$&Y7?Gq0&sif)oJ*h#60 zl3fuo=N_U`QHNI1{_NXJg25|~>7Lv&SV#0Pe1nvdHIQswWNNU#vmVp0knZ{$DZke9 zg8Od{raso{viLbT_y8&SL^p*Y*+2-BAuXvSGmU)$c-Blo*^v(dkaY?LlXi{Y;{4j1Tb0bLwk)hmF#!n1p-D< zTYy<5)xvI$cW1MXWK}5$3yQPt%%6l#FYH#;TwHDQoPgczwLAe0wE9gs+^vKKi8cij z9irMblMNG5^6ouzwK%xZ_cEI5l=eA!+1HH%s=&w=pS(?94day|nmStUP=An)X;IYF z_o;YGtj;Nv_SoBYX*B`g~wIUr4%(jLQ@X(vRpgOOw&d5Q<^ zw|Rc>0eq7@h^H^eEVrd~kq0qAjv6+2M#Rsy5T7K1{*cXD3PM9AT_u5FD{&xW-osZK e_-VM2ih@(5=RNA<2M~<$s@Z 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 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_86beaec40825e436c6a9467bd1af6d2d9dcd58c35b6aa9e85398a105dfdeb9c6.json b/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_86beaec40825e436c6a9467bd1af6d2d9dcd58c35b6aa9e85398a105dfdeb9c6.json new file mode 100644 index 0000000000000000000000000000000000000000..5ab370aadad868c9e783a3f6ae6c9ce151e7b01a GIT binary patch literal 58443 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 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_89cfecedc9547d64bca1385ce338c226964b8cf50c559a15ffd8d6ed2e47b682.json b/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_89cfecedc9547d64bca1385ce338c226964b8cf50c559a15ffd8d6ed2e47b682.json deleted file mode 100644 index 862a8300fb40fa3a24f8152a75d3a9477f29c0db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58666 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 diff --git a/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json b/packages/rs-sdk/tests/vectors/document_read/msg_DocumentQuery_c79d86ec110dacd59b93dd9af3c59871252af6af1d297bdc4cbe6ed3e56115b3.json deleted file mode 100644 index 774070dee0d7b9ae5dbf882975ebccdbbea27685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58540 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 Bg((04 diff --git a/packages/rs-sdk/tests/vectors/document_read/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json b/packages/rs-sdk/tests/vectors/document_read/msg_GetDataContractRequest_e87a2e6acef76975c30eb7272da71733fb6ad13495beb7ca1b6a6c4ceb30e0f7.json index 44f60a39152ed18488e16c9ed9c115704eabb437..8b487ecf0b42ac12024a09193eb8134338e80914 100644 GIT binary patch delta 3242 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 Q>8r)dq*~gU*IVEJA6Xu1e*gdg delta 3122 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 diff --git a/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/document_read_no_contract/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/document_read_no_document/msg_DocumentQuery_20d68bd71dd4309389f14aed5d610bbf4178e9af8e87ee326576ac2b384d726d.json b/packages/rs-sdk/tests/vectors/document_read_no_document/msg_DocumentQuery_20d68bd71dd4309389f14aed5d610bbf4178e9af8e87ee326576ac2b384d726d.json new file mode 100644 index 0000000000000000000000000000000000000000..575c3f17f4fbe6c636da4b370403b71ff5fe6947 GIT binary patch literal 53049 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 Q>8r)dq*~gU*IVEJA6Xu1e*gdg delta 3122 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 Q>8r)dq*~gU*IVEJA6Xu1e*gdg delta 3122 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 diff --git a/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_data_contract_read_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/msg_GetDataContractsRequest_f229a0e58a5c4fb050f57c087bf067bd9ccc29eca3092a5664a5a9ba3bb7e967.json b/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/msg_GetDataContractsRequest_f229a0e58a5c4fb050f57c087bf067bd9ccc29eca3092a5664a5a9ba3bb7e967.json index c06956e6e9a942964b8106641300638b649b691f..1b3374dd82a4596cf244aafeeca1a2fe26cdda27 100644 GIT binary patch delta 3329 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 DMpc47 delta 3628 zcmai1eQ;D)6`%L9yM#87QYL%_vN1L!V1 zkbQgayXXGS@8j$be^Pk&XyL$sHaX&25n)BbmJ4sym%$&k9xVc+`zv6*{?eSV6{)cz zQ7aP4EuwY2+Rd#lG0uC16|SX^&rg~$=rs>&(EqhCZtm4B7#%aQx5Kco|Febln=ddz9axYU+$!?c`+L?1f)*az@Ft6_zO%-J#7fgUe`U~x#XfSbOFPY z1QzYpeUPbk@ckwu2=B~yaO93|%QN;}&=#m2^&wtt;++!R!2rD|bxlC>fDc7bcl3x0 zTA8zVibl`MTugTu4rID*{N`;sgN}ywCk2k)(FG>2>I+h3>f7`pIxn{AIqbcpg$Lt> zYrT-D@IktH;x4wVJ6T5;`N4h{o7)W+jIPskBkRRR3NuXIPgT^7sm9C?J^Mex$Tiw^IFHzEY2 z54KOXL6mvncZY4dqJzEP)m=!&?cAAFs+>J<%Ay2U-X*|Dmb}UCu7^ z;4JP4cVR}gY&q0t75;u=P0=~Qw-hW$@kZ1qX@=l*df8nf@=dP|KM0@7|C?WJK}z)TfD(<13XA4<8On497YwOgux<_8%e& zQrqt>&b5$0Q8$Em*aNewNt&J70(o{xxnNC&ATig3Y=J})s31I3Nwi(_6^;6Pzz1_r zQi)9_bW;ad-i;myb_IegaR&~rBy;e=Kj!gwKD@q^$|q11weQz)GvR!30C&a+{ymk9 znvaXK@xZq<7M>I`#>=RTJ+D+N{~0R{K;o!GDGFzo5l_pd|8OZ--(dv!Yzupbw4m}s zhgCx|eVFfq8=Ju+jp_J^79i{S9K;*CQr#8~zpk0kS1q8g)PboNUHG`e#`HSP2Ssn% zxTb;X%2jEp$7gmqn0TH1j$3~#pvq=Kk_EswrUvoUN@Hz)sf7m{iSKQ#gai|I`wQgU zjN9?)WJ^6daf{XXYFNOnGlk&hx|8uCc||F7@@~EuCQ%RJ9@aREm>9+24URq~ zy!6La$UZ8~jpV){)xDZN+Nq=Dm@IMM1UJTKC@bXjNv-nW{U#$oki(SyLfU<##?D8K zy|+*cveja&kt`}xtViX+e_Es@_1AG1S2U2D6c8mwDk>tAw9jNWqqPIhU^D3jJ|*z7%`Dw=Vp>P;kX$AjAy;MQ@lxqu#T*Nv-O~=j_R%fahm#L>d~QrbGoGs&HG5dM|F{bZhoI*CaSODKng?u zcyw=?^5o2}Q0l{k3Mq<*C}e(|pcBa(8YqiQ3Ma5scyMJQ13#^FkqONG83hwo}%#7qHkx&P2QZiT}) zmHE#z#!oTbNv9X}MX~=?9Uyj&7XDktX&6T@=}}C_G+>SV`qkK$9kDIiP;867X*$K! zM44g8Yz$%2r;XEl)?%{UcyTE6nEpL&i0psOA@)NQY%biL;><(Fb;J@lyp0gc=T*Mj z4%CHQe6*H0z)E_DdX}c_R&n=dI-0YXxJLJmGkqWMO0Fm6$^Qd0Xqw22OFAr`UP+ty zofHjuALMVS5akjq789y#iCTQ(4WxcBX)iaBhcO5776~+8sG=IvmNXNonXP9>|j-Zse(Q7manSBAyAczl`AEY3S|iDg~3GY>?Hgo>S z`H!b47%S&NP8AEBEICua#2h`$Z)H{2sJTLv5eei}>cZ$^frYg^5zUp8q>txg-i#ez zW%-aQ6ivG(lA9cnBR|BZ!8QS3_Y)&!{9Aag$q2)1jY0+=R(2V5_zFYFIXc&REv$wR z&IB6om{r^?B3xZ4AN{g|Yb%I%e##1(^^_#)Y!z4P;!E$0-@fEn#MQ@y!VG3URXbQ0;ogo&G diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_data_contracts_1_ok_1_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/msg_GetDataContractsRequest_93bdf343bce1bafb96fd873236cabbc4ac6ad7e80f0e55fe98bbcfbebf6c0878.json b/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/msg_GetDataContractsRequest_93bdf343bce1bafb96fd873236cabbc4ac6ad7e80f0e55fe98bbcfbebf6c0878.json index 44c0bf2a90ae33fc7b489b627f7d24f6047b18d6..10952eab3b625d7eb0e08e7501c002672c2b1ff5 100644 GIT binary patch delta 2314 zcmYjTS!`5Q7|xWLJDmdUFtsf$w4Dyc%JeSh-g9TcA}zEm(;B-WYoQB<5aJS}X<`Dg z#uyDMHhjcjG+JzzC=y%R-)nt-c&OPV+|F`|~ z=7rEp7ebShp%Q<&naP=%j42V?)_|`O&w2~z^HJ>13EXJNqOC^Y z%q9ot3kK3vEGv?z8pe2&i5taXtmqG(i+L833k?hv^DO?p_ilkJ z9Re$|9#VG*eNQss;zY*L`{tE#-++(Cg#upO!ReHNLyN7VjE^G`7h^2(3)4a|OH^eP z=3DStURh1^8Ef9&D0*TBZY>fxwmOH~Qx;@{g%^e+SlMssyFRS7VQ(`~S!&_eCV`1n z7Fru4IJ?osrKJMb`b=Do@SGA8`>Q0L>2>kIDv9B|2xYM#;)NuBX>w7MCMGj|CKrZT zzvN19%E3chh)$1*u|yc7EonU1ZeXIr#9)IB7#`6GV@E+?PluyEhg^KrnoTWQQ{NY_5ma3W0fLyf2o+;IPD0xr1ZE zEQX1GzR9` zc;MbbGf;HwfMMShYos zMX+XWGXXJ>U1VXZTJayofsti1no|4*R75d3Ul4!*?%%2ixAvh~l*!?V5=S5UeI5Jm z4x^mZ_E0p3?{a4QoFKdLL2t%-rq*ve$))S5qg7O(((3fRfqxGUvzt<1Q`b>1LpeU- zun!OR2KLq+)y|t<=i!a4g{ysn=NY(4OV6rb`D6JC=U@MPS10j&lS-N(VWt;Qu?YkB zRjNG!Uhj2fF-8m&T>~H0hux5!}5q&-FF~#Y1!+ zWps|Ne~}!<+j2VXR2sZBXd+%8#jZ6}`W6%8d0FHyS275()fNZOtaPxqTxvUfvg#UY z86RT_AG?N>YCUQ)ibojp}eg# zRf%7vSuBNbMobum%{qn0^S*wcqBS0Ew{Uce2hVVEl!?ul#bt7%EY>M(mHH}~7Yt@_ zfC4zQ)@8SO?Yg7cz)9tU0&|E$;B^NhlEv2hIMA)ueT-Bpi}uXBK2aU~|&DJMk^Lw|C841-NJ zR8~q#Pg$b7oVMou4l{EddkbpW&if>ur3E;A^uY0SvVKkts;3X%V__vzbAls6ji>jz z1PPOxfeDW5ehw&=e_u0zF7>P6ivCXml>_e(*CQ?NtoM_t4AvwCzP)ocmn=$M;<3%M zAuqA7T8TEee!AAgk*u%tXg?>GXz=h<*Dy;ExS7nNg#QMf?D7b(0*|H9TR}2qbo@Nt bw`^AIWsO<1&$Z|SF^B(f;1-rprWgJJmDU$u literal 25509 zcmb`P!EPHz5JYpR>mO#GV{d-&PeBk@T#lyuf7x$ar|JuC$Fz>FWc{^S0 z%GZ9H=QrG*`I+Aj{La5Qw^_8G4sWvVeA9C4p8H>0by~YUwqvfR;|;%V%a6I->bSzw zbqF)zCd_S8N!ZsJaPeDKEW59KdhwL}>#h%{#b z6YH{koA?t#yJsb${c$=RN<>%d;Z!O>{PC=kMP&i3SJMd=6`P882|Xzu&LBF)lwUyX zW;$F?hh4)he*wU&E&%5_(T0VHhSOW*xd~_qphsc^vYK20|3_xR&O)rPev()2%FW}W z+Jf&norUKTCplL+KdYE|cX&C%q@QyFK@yHaBAA6RpR1vBDV`%4__%+)xW2ncisD2^ ztL-SYQL!ZJyCaUd{c^1=&RJLDaxoIyP3!!gZ&?w;VsXU#3N?$B)$|exAB?3|<-(!_u$Bwj^lFb@02_tK0?8Je z2=pm)*B(UBh;2M@Ans4jxh2IM09EuQU%KD#CTCA0Tq(3iq}M|zxS85f&wta-y<^*6&WW?j&n2U#vhGpzQJ^6OkNELje`1 z+-VG0PElCZQ_PlHajH&J6v_uMG>Y1|O%RqxSl*#ey8(2Vha_oXwv^an=(Ah|SlmN- zEREG>VQXAIoJ`gRr79=Yh$APPwVb;W6&_;if{DTg1|4>T87!87|&v&lGmqetHzxpe6NHHeagTnSTx^1=QOxXSv8Oc zTJr!e%BUeltp{Gy$AcAp*>)(@WfG4XO;o8VZ;T<)B$88XRBVwViJw^ewMPK2IU
U3I3|U*#fY%VL(!*!vcwtrC1qwF!(CD~HkgWFS}>?)3w__7LQ&Xh zLD`_KQ!Ce+b$<~RU`5d(Bn2t!O$tz~3V~oU9+(PkT9R^2V5TT?%0U03j+DrWO34p5 zGl^HM`sEQis8e%9w&3Ig!>}PeqGcvDHaHTJwGKIcBnwl0!4`$ss1!&QtOtk#l! zzDPbU4y06^Wx>|9vKkyi#*-{;#UUhFak~Ga4ds4T*l=yPfRgE70T!T47TKaaymS_| zrP8f(57$yuwh=e13?rE{jRMD&%eCku8i{5-5B?G2Q}GB9Tw+R#B;HBC1SuCaNTY+KoADY~?ti zY@Ed^-+@x)`t}I7UKT}~sgZa1<;(X7orO_RgeMbkTkI()#K2XHsNXp)wyomKc#|!5 zhPRI?5S0zd4CJc+lJDvpc#oaY(gEkZGn;pYmp97icHSk{^7#vkcl?WY zWLN(*0&DeXT)JwE??RT$kY)gAM;J~Mk8C&5m>iQ*ye5$pi=Foc)=i0H-G|m-bAd$L8bD0dR295>bOwnA;mk8?y)5%E$RKLf z4jpDola?uvB(BtMxkiTy*fKI{5dsvS^s)Bo6Q+5kOXXjh*y+Q2YCp@PyZPy(N?g~H z&q=3H(2g(4{+3l$!}tCzabm@)6mqVQFr`Uki!up(NUbNTLWcv2+-=d2h+(|Kr8<1J zAVozY>s3_pDTL5xfg%gDB`HhBgX+NO)cp()?yFd6ZeT)6%4$8RB3h%3L}fY^tf}kk z=4q{<+N?DkP%;$}j|C_LtW|7|fNN>yZCAf&0ZKjusfjC*)TmU!wo?o#aYA@hLlavD zq+$vrxg!;I3Ql5=L34rK3TfF8kFbRP9HA)|6dq_bvrAtMOle_(mU~Vf>d7V zh;|XKswm@Au^SUls)C-O3Ijal5m|3i4oU;f(hj&BVN4_`V4y~U)~AxVG7-2l4I|f= zqp;IP^;uhSN`CbSlSR#1_4`bmrtU_LAQ5W?wP%>>YmA#M@dTNEp6fJlDbdy<`l+u0 rz5G8ga=(*2pm)VuXe+Hvi`GSK6A&}pV|$6e0=y14@>V4 diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_data_contracts_2_nx/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_epoch_fetch/msg_GetEpochsInfoRequest_b2b426ac4a52cb4cb08904c63386caf3663c40a12d3b03827006d66058e439ac.json b/packages/rs-sdk/tests/vectors/test_epoch_fetch/msg_GetEpochsInfoRequest_b2b426ac4a52cb4cb08904c63386caf3663c40a12d3b03827006d66058e439ac.json index 2032d219313182f1e4b41dcf4f0ec0e46a7f623b..854adfb5b64d504fcb39f53d5147acbc920e26d4 100644 GIT binary patch delta 3087 zcmYjTd2AHd9oFJu1{)vC;l{+SSx6fN?~Lbp-|j*v!b?ihBqhco3MmoCDiD>+bW0I5 zBE(M81}H~hKgs|}Flq`C25bwbCMkzqDkTsESVT?3QQQ1M(nJCrAwk4p`n`F(q>}$w zznOXO_rB}*dvm|BWxvt7IFJ{8+>VX4V=-Ie4Qmvf^+Gv<9kUA4bYMg=ARb!CcYM}eHD_|Qrp7G5xq>wSqBUfagq7De&RHxl*bJkgWrnrz{nWdgs+bJ2U( z@)AP=4y$y~w??3Jp}<$CB>E4yUTaanz?q1Ru8@V^zuMTe(n5T*gB!PaVk(N$FGjqu z8K^??u*9%_iNx=@rDdVBQXu~t>l_wOuQsq`qJ!SIBL1U-q=U{b{!Urx(Kb@k4Ww>x zX^M%FMGhKgT#s`E?kKCB(DrQ{tZLV+X#(k9TdX-I=d}2VnslG<1HB+ zP*u5JgW{v{Rf6-y4DZlz;$Ab)MeEOHmMIsB$p*S!w8^W99u}UMBdIb2z1wW1B(G)= zh0%M$O?O7&lnJkHNWkBhi}Ngg>84914$Y-V9x@1zgOLkdAJ%Jg)h$ibMJjv&b+q#k zGTr-IUpHRo(17N*{I3DEtIF(*tCWh?)<@C zNxpk@w4E+Byh}!4j4}$D(v|%yEO4MHqORUWIc}hM51f$LyPe)y`m&E@b7O^%rBc|n zxr9Uth|(zfrn%_cDo|3)|GDK)4+$J;7bv()aZEPx@Rdp|2}$%evF!6EM1C08m+@JL zpg9aAE@q_Mw1V1BM37iy;Ob+ny}1gZ_Bd*ft9A7;L7U*<%*O)XzZ*ySZ7PXSt9Y1Q zEii=z3?8QpZeeYqz(*`nebZOKP~gP|t`h$25lo^Nn*XvP1@Ez;KGt{H&P2nXjc z=$HDU>dPb=diZ~a>77He^r=cH@vTvaEy~+TX@LF?} z`aV}8GEn>c^tRCW`J4TUf}sj%?sb$ZtQP#5iCkflNE`Roiwsc?g0*A$jD$9iMdiwj z-+KO_bL5@xm8<-;q)$D|b4`XuYUzV}dCwSujKWp!EO}et%-a%6W>RF#CsF30dW(t- z6YoE)<-X^#Hc{3y%ptv?@^k&N2s+=Rea{=X_cft=Q|CkGiU>}wYTI>g-9RLACCA2P<`Fy3U58vN`pngD?7Hc=kJHd5^(v6~WrQ zB=u9nKUT%HQj@r)ZW={yp2XA3g^uV|_n7DN>6R0|c)gBc#6y91?2cBuvftIm1X^El z{oNb)3+%g{RlRCdCXzDzpppcOSKVWAy}GD{a?8Q%%uHp~-8%$s-r_owF27!|nepIz zF|S&+!(Hr=&%I(ZT%$XEivn>> z|A*%G67y3BBF7eT-NS4aL&F%{AvxlZmDz@OcOadwQnmTCZyV6JJl90+TUh|~|7P7x zzf<*3q~A8kOh9XTZYH!|6`d{R65Y2Y*0#HNc3~7{NBx8FNm-`t>ZDZaBA*$hsZ?xW z3sldPm#R4fl*H2?GK8}Yc4M{PM|H~b1=4Rrs;hCR+073~Tehe6&0=J92%J6VuwwPw zLj6DWl%xc9WRjv-x2&F`EFt=q`SnCW!=f8nNm z4dp~NXsC&?^KcB!MQVbH69syIKP#`aFa_*GQ{(79HW$NkGj(Jnqqdb8|24-2%V6`= za!LM;HsW+p{TZS8+`!I1J4iClRURz*SfX~PPB(S)=Eg7^kHo|fPt)<|cTaAcRf_k! z!oWU`6%=P?dUznt)h!Y9G5;IxR{1HE_(?=T&v_`T#R&&>Ek$96Ok`;FR8Lnblht&io@Zy&47vi{%eBv6Aeny4r&P65s<*_@GKhp^z{!c) OG4H#=z#~fUpZ*VJ-QBbR delta 3139 zcmZ8jYitzP8P%Baj4}9;Iw-u7+Hq@wJF|0VXLrGBR2(X`RK>vv5dy~chR76!+L#n7 z62O?CHYvpRdJoPZ9%U^^QDh#gI6+ORDfjDhbL3p_5&a6$; zfBTrZ_xsLw9^dYx>I+BJwzXY&*T zL%NFB{wt7}Kbtq{XnMj#x+jR_X$^Ik%Q4cXWAvzn*i9AF3Jjzchmac7kdB&2-my@b zqaskt%kNWh_bmgWLPe67RCS2>wlLOx=AbaB#v2V3Z<&J*_LKNj$AUr=Vj6o3It0PJ znWLEKZ<3v>xc!{$S;z6hAlkbFXy_8yQ7X_{rFl2R-Vm%x^ZqLs^(*Lq*FxbH{$5e; zBRzaF0BawySTC@DZv=^n7CyO3-?w07;&mlr3x6@~Fvrt#Jg?YgNqL zXvlGHJ>$1O)F452WJ~U!vJ?xOBc{Xxi6sFv&o^J6_B+MvvETz6Tl0fxJ>-x@HZkM1 z)i$ah(~$S9iD;3Ap&bTBwzEY}U~aEp-kL66R8Km*W4iqlc!57A{`ju|L_ot&R`By- zhef@Tr5JAIWO9j|z_vcW!rG4ww4PAAe!$i30lXJx>R-Sf?5P87Y&EXssy`{AgCdYgi0Bc-|n;`2^~+iP2mOqpJzvAsrn*_BEF36z&~` zWs3?M4YY=>`4-OSkhR{}4Wxq+6dn%ocgNk8%LiMp3snDb1wj%XoQTb&C{G9Qj7j+} zF_EgML3H6tl1;@R%F#A$IfiV+2Quy@HFaRMv@=OWe~wjuFV9Gx#PjUKKx~|C9 zlLuG3EsUg8Ec%W>Zi&>G?v7@WICpPIqG-4_nLa`jlVDIhb#3I|5*3&84GeZT=$~oh zgAZ9>rmIAK2qQCjPMMCoD^2Q~|ItuV3;EvqIr#PhA*UI^rSFarE#x_hbdAcO4x`B< zHvYOtI;z)rZ>r)z&L-Y8Gobk5IX2xwOQamlS3+)!R8i(Fl5zuiDA5R+p6?Yu zC{fZqUDM9pp-GC3ri%`CP4NdhWczdTjDdbMTEwe{myhc`eId{rJAYUu2_x>~lW4Q` zbVd1eVS{&^>d~@vxd$8hyJ}1bCN9;9cp?n*Mbm>=npV-&AO*(+U`M_m`;(L@vZ0mFeZMw2f<%?Qt`c+2*H=DFx7# zOV6i6x8@7IOAAQbfo%>c37n>y#1{2tq1GTXC| zb-PVWWa)|d<-OvcPv^Kda`;5-nu^MvOkOir0?*TrIgR220nROo>#z91*m3?Jo>!;E z3Pgur?ydjw?Fo4KvgH>cPmu7x^l#6)8EO3T-XB;EV@>8y>2e98?#V9trH_A#K2|w> z%Zk6T_HSBFUyoguIPo-6La*l7W4D?KlY#T`c^KuJyXiGp`AmzVW97 z(}o4#38M0x?G+`bE5myC8o=lK=@ diff --git a/packages/rs-sdk/tests/vectors/test_epoch_fetch/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json b/packages/rs-sdk/tests/vectors/test_epoch_fetch/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json deleted file mode 100644 index af6663104973a597443a402120e5e05339b1b650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67504 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 R84rznefaIgX{7DR{{jO9Fsc9m delta 3341 zcmai0Yitzf6_wLrrVy}QK%oYM7n;)8%;VdgT{{#9Oo*VS4Op#|5)5WTd9*x?RUt~E zU>lkQ1!Hjblz?ooS8XYgfZ74tf*TvFYJor!J1Idb4cNR=5gZ;3AR+?kx$}8x)Ia@! z*6e;W-@WIYd(Pdp&e*cfXsJjW5cBPrvSU%($Bjouqap35X)%nBk44@?t42iaSb-hO zw_}mMLp&#^{l3#5J@l@r?C9hC@8tf&_8<9LeHyl{_7I90=qmP5x4=Nsb)bfNDEX0r zoTQK5?<-WEwiCtq!Ox99cM|ftaQ~J7=`%18IQ2$KB`oZS_{_8~57 z_xRp0IwL+_Px$ytD}N_3?hpBX_SF5UhmI%(!aLp@Ou=N8VpId4VNdZT2HKnRaF2L( zJ*Hs|sXRO}Q=xG#`v@c=-(xPcWZgo zMJqAEBN$ZRA`*PjK=Y~;nLgt6Vf5V5Kz@;{u;PRgWi>Ch5n5{C(s_lmV?_hfhl3IP zf9PZs*FZiuxtPA&!{Kt#gn{a{6gFj+ykz6hN;XwzpoE+We#_?T&oy_bFTVfj4HWhB zy#BUhN)(gk1n*8PVfh?;-BMm4kGCJz zOo$`DhJWc=XhxpOF z02MV)55zrMYzwRT*?e&>18Of>rG0yO`cWEYANmf>)xt;5Y1Rd;WQ{^^lS1hjGL{`h zZ=qPbj4~C=&utT2tkD4>A{8@irb$K)Nb00gKw4oEylJ8469UM&mCO}9pJ2}T| z7U|3>t5+1*|NF;svVKfKlp;RCL}<3NzqhTFy>klF$498fajaWhEsP?@l_*+IzAi>o zG;BLvxXNYNX+>nl%gHOXX(m|1;0q^qX){Y2#obO>Oq{D(ql*|L?2{!c`j>f&C)X zAUmL+1QEztY8b()a!q7S(O&Z1Jq{VxF)7(l_lm%5q&<#rFoI=8(A*LeI)V1kaF7UF z=%>p`kTy|HV7`yeyL8CS3iFN#F~otEE~Ld@5z?ZlVhYNtk@=a8afQ?k9cfb7P4jtM z7-~#jP;bX9q8TWSN@UGyo(dKK$wl#tBxg%}usKKZMzX}erH`Jq0rLBod{AiO;hP*R zmfU)>Z}UiJaFW(*aM0WKEM;k73w!iSCt1O@fyyiaz)|P)&LdM z4^cROo;^LviG577RXI&kjuYLNMdFU4_mZXgbXv`rPIbB*^J&z5vPZ2L@3_GVbA6?a zOFN?&vcp09-^Ep>3kx%*X_jS0l0oR45=OxuBE#CY)GC9UUIdc|jM)-Tv+?rBvr=hQ z!WBtUX~j*}@Lm{Kt5VLTKSy?otExn?q^%VQK?IY$!pUzr)dBWcPfkP~Ja=%AC9hC>6aKfp)?f zwdnwo?=z-3I92MSrYawkPW(6b3S6&m9}E`j#88FSm9l0O-9=M8Dvw0D){Bm< zH1$9@TRz_%?0em`-!C>Q%y+u~&xx diff --git a/packages/rs-sdk/tests/vectors/test_epoch_fetch_current/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json b/packages/rs-sdk/tests/vectors/test_epoch_fetch_current/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json deleted file mode 100644 index af6663104973a597443a402120e5e05339b1b650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67504 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 NJmnkm7Zuw1{{x#(^JV}5 delta 2715 zcmYjTYitzP71oep20vNiBm_~2Db&SgX6NqCtk+avyJ}5nDX>!d2q*@J{%|XWK&6OM zSGBhZGEwWmc0ZCqB{8QIc(hDjpT-ckg)Z z{Ib@%bI&>7>)bno`uLzeuv06HxmHYAG0$@G<%VTAtbI?5;Xmya_~M*Bi#;nAw_?>+ zEININ=j3U3`t;;II>zVx(GZqb!+-stVByeP_xw`Bl`R5K!oj(Wfn6(YWEu>#exXYJ zy_mEyu){<}v5nvV!iIR*z=qQfx>mc$ToVYL(fzv%H4BMjCK5ds2D(lB>0W_-7acT} z>9|!X@aY{FcDsvRhofk^A<|*pPimTtb(eWjor%mKi+@h{o62~R@JwuU8{HcTFlr1~*UobR*^(;SFEqg)dH*F+eF!0Z%7A6;(==iaK z{a1l?A%TqU;L~++zo}TW{dWp9M@|31T7i?H7&afbWs|si$i}|q0=c<{s*-9W8bcB( zL!HU7%9i~$b}evFf5l9<6TDg?%wwU51s?b79$=U9yA3tAzwJTJl502c@qUZYvb9nP zB`*KSN-xsU^&SUmFtK!sU|#Szbrf9Mfp=YntCndZg`x+LGI-UO0K%d{(ls-nWDE=+% z+PQUb(J@U;d*ZxEdpfcY@w#RsJz`HwEsR7XEAKYY|ER4-o0?CQI~+fCuU3tI{s@4y zQ2#p@82lA2Q-aaHzHIQl+SbTuMQD09M@*|1h zGnWLK+5>@3)DjR9eDHo^v_6VgNwDw?d^l32E;vzP&j`6J6i|J1qYbynQKFguc0lQg z^K58`j*jQpt)!DwI+7AysZ$Q}waYfP|JjAOPoVZ60_W%nyF*}8w-l#=lB27TYl$kx zLstWmTVD$2&6#csqjHUeU(!dao^jDPD*Q=Jiz-Bye4VX6u4BToaPIL4M#soovw_#* z9GmlJ=TWK$DPrm9+TRAkKIywyLgNbWyK3H+&M@pZKO@O7HePb3Az8)#1xo0++*$U_ zYeah#Pt-FsNKoPuubhgbX|AkmBI}cfpGTFXFC}FO39F6zw}?pxRq(uvv;UGb7?`Z7 zQa(HREBTEq@1pft4@dS2OpH1hz2l*^)R9WRHZQLS>gj@s=VEM+W4~G&Efb=CjHbxE!ympKwS9=(5jG{HpF&TG-4A{VHlDP$kb+EQn4kPa4#~$ZsO(ZDjIuXY@a9tA-O#MO1PG%9ai^v75n~ zUrKU_vj&|#6eP~@w_Nmxr0Pw2u)FZ{=)JoS`It!b2z0T-7uS)AGTl#=abKJ^8RO;E z(V2DB_N*kqLu$ytdy%MrqeKf!PaA&rewkNXAJ!>b(c4@|jHhvwOX-O_GP7K4qJUNA zRAPM8!`&taBV*JaefIhRPJ710$;*{9Td8y`irT|!LsD2OacA$KKi7+TCUUdqKJR4m<&o~r-tUD^(CRUV(_XF$X=HN^OGq0 zo(}WjB9NLJU?H;Vr72)^KBNU@#E1#J2&(Dq~36R@XK525j5(;DrxzsQ6-=#YC->j1O z6H{*P+*v|b9(YB*L1xq1#0Jaqhf6e%xRLsgf&wx;k}ITxgC|nyyDpqZs(8DBp2B66 Lx#dqjs2%w~b!<|s diff --git a/packages/rs-sdk/tests/vectors/test_epoch_fetch_future/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json b/packages/rs-sdk/tests/vectors/test_epoch_fetch_future/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json deleted file mode 100644 index af6663104973a597443a402120e5e05339b1b650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67504 zcmeI)&2C)B5e49^^%REITyTb@B>E-t0ETz*!UzxtPU4NBch5PuTjW(DoBee_BL)nN zq#3dMc2%99s(VM!&u_l^>g`Y8{rHdXfB4(mufO^^ANv=#Pw(^T`@iJVH^)!<)B6uM zPwy}1_m6j{A3QvqKU|+bT<_jJf4F^q`*3-Fe|dkp)b;ZC{F8_K=l9p!^BK3NYh6B^ z_urqFoesa;o>pB>i|$Y1KAhHEPn+Mpe-7jn)8)e{jqCks!{vOXcc;_dooaZ0PU3R< za6Rw7yuVHazWo%$+rR(#!%yD@r+@zVukVf@e$4M5-+X-Yr#C;p{qtYne*MkmdUumc z-d&H^{mmudU2ZS=v+p1BKEE#goJIFH4MF28O34PpM|g^2DSZz6+6boX*N1Bz7q(^*Fr1BKN3#dKPWQJYck zBlM>D@L7qTV(Obz?ETHdyPJpWtXu!)2zRA`mrJ893MEZWpON=tiq-&DD3(B8OztTD zeu>RwS$A120t(;DKnTe;xlld>=d)o3c z8BU8ME{ex49t(LKZCHFYG9gz<39=C)fFE+K$*&bezph^-E;8<@wNo_@dg(D69 zYPISvMI?cxTSXVQfH5mlSInpqJ|Fqdrc6dleoPTaT(z#oXJwNh6`UuyF^$ghT=f7Ia^5 z$h@^$hPzorAQII~Tx#2p#)|?=xrFW7lA1{F)Ks>lrr|%Yp9LXKi^C0~N9Q^utzG{h zIeA)v4wp14WVjyDs3JY3Uz#lSroe$mG%%`FLXujwWzh9=XMrj7W<)(LQOUG3-2)SE z7n8tRs|b)hCy2`tNu;@mM|FJ?$9CC+WJ?7lxQA3$sMJ=j->f58p>DSz97P;Y8C%TN zk5ksSv`~WGWXN*6C;GL~3te?E=*2ZzbaLkQV1>}Nte{Sj^Jph~*+8gVo;-OjRT@#*1TqFx;dup1wav|!&~Mgunc>CmwR;4nFhwd>kdhL^m9Fazt6C%0 zQJNWM$SY8lkY@C#mXhG9GI0r=MskEi)$3!4A{N%84~IorT&0WkiB@VQ!f#=Nh?KYM zBTQm!$}8)81UBeyN#dfrZowy+^#P?;ju5NgNj$Ab6Aw?MVNFDYCn42%f&U~V6-d_0 zmWCvwbrTnVD?{Y^p%c-Al5OyzpD?zIwVo*{F+A&0cSdi~f?D4wDNuSt1=)gwG(pxB z!a89E)xQ$+!M-7F*o$bbiQ`R8bID7rvRR~SQ!dGZM3?nK@{u?l(Jetlx^}IPNOizL zQB63=Z8EE1RLz}+sIZ-S#6hZc4{1C&I<^N9qY_f8q@)sE%q-ULVfF6MbvJ-!>_ikJ zYa0oIh1y!AC!#1f;!&DNP9a?kMD!GqQWIHb)P!5&>79;{ytaST)}l&bCF?F0sn#|# zaZyXkO*E~iDk)b5;-V~(cl|~`m7daga*C9wED~4v&CDLok*&@8^dXy@yCtWoD zW%uiC7m7{?ON-~|JL~b=#c}Gki>F;GXOgTGKk?MG(JQ)3$+__;RU{TYQb=m5BV{|{ za8#;o;3i`U)|H!*1Rs3$6z#mp9Xn|&oLp!y9_h=Lo{}QVmVj>S6IIwKpiCTTcET^1 z8jrNO@|M;|txLHAlkIwM7K%bo(fh>V z1HvWacI-k>ZVKV5bk%n4qrB^Iv`W+>hbN2mHS3sw_&~FW!D8;U0t}3-V2v8aI_36OUsUCt}u0dj-VEk#EHYXJ~F2v z(Glp+MM1>U@j(2)z{Q-2s2jGEEx|%-n=Rt%lY|0Cw`6Y7z_4OQ+VEVm?r^T{6?HL5 zf;`Nw^*NzOY*07Y3EU;2tRIOJd~=I4%0SmKGKG@6hLHuqx4yU&OW@XcWPO{3>Ig-h z6y}SD;SC06##2kzUW^8^j&*^?rw64+o+4_>_)MmOC2RF4gl~|r8Lg8QQ430Z*YWe9i82NNldqN#$2x#x%mCWCsTia$vD z8x`&;LX|FdOQa)4NVH`lBIT{14p7!Dt6LDn2DWj_PhxjA&P3#tf|7$|OV?wY)`q)t z#6U##9uTFEv|RY*PPa%@W$*fw7{4MX*&-Dk(R|}?Qq|HgyTsnRJ|vVeW1K?e?J234 z7-_c%B4a(3t6T7a{}5Cwuud&PFg&D-r>e5PDd$;-7B*4ItwDh1R-P@w+h%>_0zhQG zlEmi`64flP*i;!v3>k^b5sfOjOCnt_YVCRrNwS`Wl@z)qwUwxfxH#cB0vM=Ljp!tv zqChjAx=p&gq|pB5^|urb$mo=!rbODX*=$j_QLL%9(E@pR;txIKh!z%|zl@b5LciWG zh;?*J5|J%~Arx4)^xj8u=_%>OB&Z|(p0zxF^pqUoTP(0tnEFK$Ih4De2vZBM-$I3r z1jkm^M3Nm1A_)P44L=|BBf3ib!K)$?XB&zjLr|{vh}e`wHI5)|u&AXUO*u#kdt27& z*L=}q)nI1|Vr4TbnJ79J(fagm!LFjvE*UGM(QzChQMI<&h3f7uBw@E`VCW%LYuG4V zwN5U)YOV5;xrGW<2GYPe;*k^zgv8JFq-GsOXz;oob=~@ec%r+xg%S^N;hyNuh>`e3 z2u&e|Mh1AujYQqTif>fW_~k{jj)Fu)&E21L)y$P71ox2$A<{%7q^3Zm4SdKDVt5vl zH4&Ev%B9Eh+*_+pi4e7toT{V`h_YThuvJ1iv`Vt2g~F^0M+`^k*DX2d)tXnc&Jko# z=;5PKJqSria5M{ivNX2{)tie`t7_8pQ)B_9xrB|vlRA$~rz3YdViOcn`sm2g0vc5; zj%pP+$lp>}L41a!&Y)R@y+^q~iK!AM64~~Yb+My58qXp2^&`4IBe9T#*KY_mTPUOh zKDLFNLR2U9p+^~H$yb7*exa48$p0@E>o60ZkZcbpp)HkRFcmg-OZu9~BwPAg_n)|^ z&@7FB$78+C%&i%Pl=@K0I4SK6Fr(M3qYye_<0v<NSwR$3plrkysl9*^`mgGsJzIsS3w>&@M#mz6H`6Gtjtao!*;(BeI# zAbGx`@L!FzwP=}ai7>smbZxr$AB&$(%6UI2rB?HbTExH%)Q1$~<5ZDh};aTiF?eC~N6)_3gaKi;jjuRoZCQWHoKm(n<=n z4o*4=M2|T|+_gYtc9KLGIDHMa3>Qrk&K&LW*$2^vJtxarh==(2K9rCIzHOYCdQVB&#Y>Xhs(w9MfX*ZP9ol zA%4}YLuQ%HIuvajL6Xc7`bARcL=qc`OZ!uXl;KjSqL8RGB(!U8HzO)dBzLKTcoR>b z(k+^MJcQgYQ5`eSx~(;l-(V68wZyD8K%bViJlMDGN=PjfcJ^-BfFryj_Qrg~Ng7hN zkcDOo9U*4O!2~!7W=Pc(5xT0aMMQ$y)SaRb;K&f<*1Pe`VBZv?2q{!qmtCT}x)aeU zN5sq#i;g-{t7f4Ofe$Otzzpudm)r%BCL*<}Z4zk%pTtvl5{73nbz$PtKsmp!yGP?s zi6n&qfmJD46KYv6p4lp)99kvW(n29OTBsO~(9c35qRL_lgBB}NtzOC~{4CQ%0=<4D zAf`RHP*lU`35DTx!qO4gy8OF7JzAr}k!G3`Wq_Kk?PH|OJ z8ZKGu5TL5VC(?D&?o2Z131w_vR4Ba<3YUm}iANO?X)ACcx#+Z{J!%E;4Mw4qs0CPI zQ&jV9%W6UlnQ`p_xC zH;$k!4NTmiM-1LBm$ye?g~t&VSV$=4-AKH=avP+mQeI~7Kx7$?Ruw&@Y^NDjHIBDw z#ZK=81-K0q8d9*+#HD#vddnyedefX)rzIzk^J_>!O&)^Hs)|8%ONK_G>&8GH1&N5b zw!{2|9!*>upPy3152_m#!z(Hm4iz(ZVeiO-*_a9ofjb?EM%pNax-$zANU2C>xM9x8 zLY%NAN{f-gPQ;~Fle$u?QC{odDX$!nsLXXot%T~e1zF#$rLb9VZV*wZvxS5b(qxom zt-5HH@cKlg4epICRNI|GMcrZ`jVjpTa8BzhBG(ZaP8Ji~BWtq3Zi!SkcrI`>5jAI@ zc9P4wCzMXIzJQsG32Kox=@e~NJ+{TCl*iyfa>!yjA|(=QDzR0eS+CkrATaA@u`!`xzw0S6 z0aRQ_uI1_$k=_P~-Lm2T-oba$Pi!<64rh=pNqw-E(1O6Rd0A)Zj33Z2Rg zF|-;8xM2MF7(4%?` zGl|JVlG57LC0gDvQ#!&xgvgvDOe~{T+CkDisa7!-T8|y7h4Ndr@&rjTsI~4DU7w*{ zOmgsq8dkTYVx*}-cp0>~JEZMWc~R!gIx=50&*MJ~oN&mNNi7jbLNd0?aME}-c#EC7 zryMt%FZK>;UTsbN)h2d3y4AbU!`jPkFE^WAE6FMMlb?%nUH5}E`F(v0ql!<$di@X+ z3)L-T67eBgpQsX&7Am=`Xp)E^KFVdiH@WECfx2vaCj^tV7AjfDmZpq|x2iZq8+IX~ zbe^g;+>nr(GObTlLt2eWI#p1k>vQu|D>!s*bRAU^oz^-6pA=RZ+arQCdeq#t{O=H3 zs5}*rF?l3T6VQl?1UpX=P->oGI}J_QLe4gh5P>xJP=!v3lgJUxny#Pqg1Fk$fO~xi z8Cb8cujddk;vrO@psZWcB8hl-{ZUfOLY*^|ljc&?lC=QQEgStPTjZ1;L9;;?lg&n+ zGOJANClO6iPUQ_8QmEE8)Frkj z1+j&ARMkgEWQz!@Hh7rNddui~DQwp(+y|-5dD6(Ti>9^Z#f4yFv$ zUQ%wAHkzdlxH&>@tC~U#ly34vKRkl^cd?U((Zb>=tfpB;k%I7^q1Qi1yWS>8*3|Di zafHk*pG;FZj1izi!Z{?muwe)(O#?H}Cz@cVrC%^&jJ@5fL2)BC6U z%juiP(>Lee-@X3%!^hX(U!PBlUQR!Fxt$i>o?gHC`11Pu=hLb8*N4|1TwhM#+)k^m zcc*Bt*Vi5Q52tUgw^Jn7^TDTRuOCl$T<=cb+~1wzeLkIgfBN(5Ios>Ub6Ah3We?Bi z7|%sHU-EK)K=9S4)gS)y?Vtbgb&&eow}1b7{P6qy_xmrt|Kc}aeD~pZfBf*<-(T+^ zF4w!u!~OVryj-s@`Tm;!?eCxR`}|6cu3hwad3x!(&o`a7KIZ4YwCabocemr3=S%8* zy}KL#a~alI+@?ZXp%zMg*``qRnNRI93TVX2ZmJht$rvQM|nEgDj8p)G-+7u`cH-4ZOQ zR&g3yKOHM}wO-*k8LdyDenIIcAST?+`gtb{NMSnkddgWZifFgg^+=2=nn)hhiKequ-!GzGqnT^RmiaLn3LxsLP+^hjHrt>uj_-kf<(zAx+Q@L9ECfI6KQlytW|W{ z^MfD>DvPs)(oa-!#mt?y5D9xes-uM(*aZl>B3t5wWX^$GT38p4ma*6BXtyBG+Hh=!aQ!J+|B<`prU# z;+jiDDz$1ql0+sq^569ecZ-Ok>l2k+F+tQ@x=U)+_3<>xg%F?d*!d#`-jWJS;)R2< zPE@%<5bSy!Lh79Qco=`ysK}i0rF{|Kd;Ap5<`y;|AD-L$q%k$B8JK$Y@_LP@BvhWu zdgETWja@10RS_YEMTHFS;lrb>UyNO_B~~DcsC5WeOAMTTn{^CLI{r~80liz2xZaXn z$kv9LTg7sPnDfCC-GYfzp$a-qM}-3)a*r+2m9nLYC{LnX(MSVJ`hrNe0)pWNZ7N zsIp#k)Iy>2XkmLrYD-uQ3pKd0^-o5rO+|OAi+B#@-g1eDbbYQMlIXjmNQs{Nuw|6w z(qihFNm)W_m7F2%7wELjMVz*|WWC&?0x#9q%{kl<0|{3x-_(b?un>bYB?=Kn37g9P zerZN2M94%UnO0dF7KhI`r5Vv?h}~Qz%oO9Ta?yB8iF6QZg&CHFrEDfi0SntJh})x^ zo2$&)3LNEO3MGMc%ie1=5>yrkbTU$NODC>gr7`R zbQ^&oHyT);Xt2WZe-cH_Uu{_os#)L@MB&RW0rA)(QtB0<3T`PJh)C93g#(9l@TNfP zsjx99qDKx-zF5^A0pEL?&?@1y)?360b-khhEe|11B=uxWc0Ha}Cg+nviE>joa(+YFcxp?b z#LAAuC6{dJF1e*d$`<*Itm~7$4D*4HuBgulqjY@>6-85_0tEHb2{#$6yI)g~s3twE zwsX7@9_DUCT68qqkm+cetpuh|7Bg{;iq$k-mpml7 z3xd=l+hPd2NR@)eS*s|dM9U*e7PBW$E=d-RDv3+4B%Mx0% zsRl0j7J^(MLg*IlzbJ=ZvC)Z=g*LAwBD!c`L7b$$_iVl{RqRBSc0?+L3S&(axk7b4 z3};=Z1tMDnyDm=Fl=!&9ZV~rr7UBk3zh0uA{I2U&2!j<|f8}aWPS%uoxGE@2B9RFs zo{C6qHc<&(kHjhWDI(v(>1*Q)yXbjp!=pkiN<6kN>kE3arYv+0jN2eX%*|3&X?9IH zj1mv*`m`_^a(YX)p!xSAm-$9{Eiin_YwnQ-CQ=d#bt#1d4&r&T)+Yru&%iBPN{@`G z5>-hk>gW}72w9%)irV~I-qLwquqb>69u~nJ0bQk0WsBr8IoXVsUE)ZeZb3aB zoK)zswNc6>kj9^q`g|2xSyb9bLUl3+1x^kxUE>KvBz#dbfv_u5QtAH9BI;J)Hl7G3 zsg`xBe%mVLqbNlXpR%VecAB87JGs!7baMf5g06|Q!pbgul4@X)E#*RsbN*~+>r~tb zX>OsRI@Fa$b`YL&*LMXJznWo6gk#u2T8hfCrp8yB+E4_gkgg|J^f6g&Fpm#JBz<;> zmB~0!ZjbhA<3tjdp{rGrs1Ea&j^8aP>ZTxDvN(wlLuOP~D`9Ly@`v#@7lLngeBy0* zD7Br2!z2{79<@SJaf^&i(Kr#?%oenfB1mvVu#~u{m4df0ghIr(k|C9scWZP$>C3!P zprMmnkPL*v-a}JjCf$--#N`r_v3({Y;MUktgWWq^+fWzB{i>zVxxck`ZT@x?^=e33Wqe)gM^~i zZi$-2IlCpZgalS|rp`5Zs5Vk{P*f4DCZ52syyPLXw(DDV3Y!us2{V?XQO+q*$U;{MhWdq8o+5vz#Wp!e z_pCak4^~hyA4I?FMd>Ac*ee{+M3Oa~-^4RBP%l6lhnb88YW&E8%qLHdgk7pc=Wk77 z>}--ktAsCaOF!X8OFDYfx?@yCByD7P=_iV73hDS_1=V$K5qccA$beM0Ol<{@BQVWH zuaNTAZ73d{TMz}cCLnei5D_~KNM8C)KF}5AkG_h;H*D3Kno`_egwQO)B4J&(gculD zeLw?4&>L77F1K{OkUWR$)G?!?aupGcDukCUjR&3i*n+Z(K^Y=yn8V4}ouqK!d$u-u zBGn`b!lCe$Bvh+(3e@am`+9A=K418-pw3_|PfEn~LATNVV)0OaB*T}JEyrI^K7GDv zrHhZD(Bc^DS~l)&7>h8l_M2`cTBgO8?7NY+y^^|yM52w@*eH?w-=EwOk+>?;MY!4y zD2mg0vR6?2I*N>$jqI!Jm5^GWWFdv^LlDt;08uQK{{~UjExXLWXn;F$7iudWZeVUB(9p@@9?{PnesoVeKTlx- zP>sU7AzvZLZaDC|NINRXgKFQ-(P)uA==G@65>lh0+7gQb zoB-Wma2~FfGhj$zd&^cgH#jnrXznSOjxlLr1Ye?(TD82+kc3209f(LG-4Yv-a#c{$ zgIXvNARTUtldN!wx)tSEKCIgdRr`N-7<<2(5H!Xpfrd^F_lSO0y$C@a4F5t)YrgTs zn$AmJ6mKC2l6cN1JIa=5O5DEZXBR!Rq6zo>Fhs7g!_EN0>voYtFuq=A;( z+ET41sU#61tt}q;uGfc}qp_4=A{8S*RKTJyG`7Q~ChrFg#r%GYYnAU=kUo)#kVEfU zs|*9RdYOXSc_pNlNV-WEizl#`Nn~W|715EnXcuP}Qt`-Tc^EiuLBw;*hNg&DEm!)E;6BS`RE%+bzjLT(?{F!H`^(7LQ=oCp6{W`pI>2;=^RAigaC``Yt8$cz@hcnWWtF zg`6?H00F3pOVn6UTn%3Mtj)b*4Drx}J3mlVldDwN*@GmoqoL3(n0v3tEJUDh_;#iU z>DL7@6_zb?J#Cp(B&zIm6HKJJ6C9~68Av=$);FGLoIEEfW7{o!!gGperohh#>z!pw z+Cka+V`hx^c8`$=)wYV843Tm*cO{{&Pr1}U6p@)b^0rhb9C5bn`QrrGRM^QVdB!Q$DvczLS2PPrWUePmPa-sf<%(t@QMFc~ zF4+RM*G82q)Dz@EiBfJna(H$3uIncRNWUGa%7aOXq2`YdRuc%)UAL%#Wd0X=_lk|- zJhjsDMigqco=cx)F#UQCc}N68>#;YLT9SL>FxFm?DegyIIBkL)CR*EgU=c@Z7CJPhN)pvn5RtrF$Yes- zWG!2=xbO)>W>jYQ!q|p{gG57$VG81h#}aSV^8<&R-^5X^N3FyLy9M8;wg2MG+%0G$ zMNrDsT2bPnR#Jo#FKJTbEv6_)&o3on0)&?oQ+=}XC%z?k)V?uIXm%J2HMpEVAXuL? zx<0J%z}Bzm`9g`ZPWnhE89JXNkjm%?oqWlEaO^pZm$IP6_`yp3lUN#6z8hXGPKqz1 zOM)T(&-w%Z!%xyz;vu{?;#Ua91VY|8fiU~^u``A35F+$zU}7)tzMeYZ?Q(tV-%q?P znor&#Umx=8V}4!ptKaAMcel&!DgX0$x%DUWw-4d)%O(Hp=`AbY3Sj>0sI8meQc$E6 zg+5>8Bw3H<&@4t*1--}rY3fLoF!8peMU=1j zAz4p)P$CC!i6LQ>z&E8wQFTj5BBYvI^51o7bPEmG=m|ZaT4xHY49OPZZO@Nd1@2}M zs>>}ialU0(D8W~!62!yXkm}8rAw8=dslVF0?q-vEo~^4b?CyHmY*yGAN@S@-A@VC| zR4Hqe&Pah?Aqu7vC#u@8csy|msfCil5-}19>rUed z#G$vmD4L`0`ZQe>#x1aAKc+VTpO9XQ@WlguE0e>OYt_((-aqSbDZ^U+6|LPSE= zlUstIKFQE}J>OqP8aJXOasO5|TZkJ-zyF4zyA?KT0@|~lwS^v&D-gS0Aw8g2;8aw_ zNoVR6`J%xtq7Vi)YwVYrb?LG2HwWZnpr8M%3)g%cbl;A6pYC<~IB1qWq5Q(fQP=zS Xy8cavAASAA4?g>&|-K!|_gsRh8c%ah(_r81Hz3+iig{NCIjTYXvR%WB+wYrLn1G;~< ztPEMQWXqCP$|v<`GvzHCNg1x-%&cppV6&ulL&sM4BcT;K)-7waqRHxN3+!{weW(e9 z_c-^S^ZkB)eNWfnaR1@(V2hEL*kC8C?PSvS@nX0X$Bbqpfr4dgyNwX+dEb68sg@J# zZ9W(LBz-&S*+~(+AjMifcy->}W@LL;gJ1qS483(^#>mm}d(EqxF@9%Rl@%IqUUbZp3+d|hKf$66mj9w8~wOYt@ zts(H-b`M>D@G<^QOr|}2Y^4R!Yh$9=!ik^TnEH>8(F+!?9FpkGQ@o{jBRqhDM!)pxph+)JL zy;OzlPCm5U#El{sObYtLW-5_t21HZiPYBm1*ijWKn+a>NiH=VljnO~r_?5xl1M_)mT?j+@EcdL38z08I|FWU`IR_J8HL*P9 z;AFXv!Zk@O>$GLsDx(87|j#pl1U32P5Y}StGJ{G)p?azF+CWH>^LH$i#Q5~9CIBg$UVN}a#ZLX=8 z7R9^k71M$GRnx;gcFtTL&X+l|wTw_jQogF|fn@?M$33=Ng%@IRv|MntDVMGh7{BIf z5hx^QXi~zg9j5kvVuT|2N(j4O)~=#J`<|j2s21AqhqJC?84XPi4n6Cl)3=a)Q#BI8 zh_C}Z1jHf-1J5cShtMM&G@K^={nY-XF9*MD_(*TyLg_vCMDI|}lhv}tWV21D1kAOJ z5|U7oa8UccgGG#p0NofP#lw4#3GD-SKV8&k;k>7-twR2{d?~(UkQx&iS}l4ohQSpT zN_m0cGm|knw9fFj64y-=ueqaSbcs;|(Nm#>E_-YvEZaU$eSSBSOPKxzwsy#_^8&9d zP#dZg5OkP8eF00_nZsZX5(mF}hrzgS&fjs>qKCR|2`zeM`u>SHQWpgp53ohLQemk8 z%gOv+nsrVQ>{~9}brh^g_V@6V?V;1NRkts&12R=f@0OKouox1u)}$!|PIcLGPn>=@ z{-%nN5Jqj~di|7O0WQ^MVR*#Gjys$Y*Hv?-yrk0du5>$Z3cNc+uNGDXc45fJnti5` zK*a%DMoP)85^>t{(6ds7nI*@IjHi`xWbMN&CvcXdopydP)kKMOQO2WvRISN$ti<>( zHh+_zZxqOE5wg=Wyw|2Iqu#>w3Hvt@;|JDjwFSoG%gKu)>o$|vAPRLX+|wi{P2(pH z7UsDe6&5xfbtE8ustAg>#=x5?gEv`_{cDDvZ=Z^|S4c>c;FdnBj*69va*D4`7BL2k9{wE06 zO|wkCz16VgP22c7&e46n-w=1X2*#y@x+)b?Cfzxg61ECdG|+^>$W=;H4%aiW`&2Lj zGMh+WAS6{#9GmE)?2=%p%B@ALB$7%X{Y@`NObov)5!@-5R}&>Z?o2A}1o8R&hc=== z5$G>ZC>{IwvFAfLI^5J44p^j}DC?R>f`nH2t%R0~`m+zI$rh5=s|_Jvh>*LUD;&2) zrW!LpI-tgId`|ir1<_N^87c6`N7;!AdR{03(Wn?U5w#pSu!_1?89o=L*M7~7nAMSO zw&uRz-wGam%fNI?VC`;7ZPn`B{o>pK`>t@*b>*Sk>{_3uLrNY|lcfDqr6iRWbp52b zFCdQJV%P=KZ|-Wt)KdXT&;B$0R;^BAqg|m4hP>$*x*Q*u|KYwAG2${( zNk~#PWGQ#SPzreWUqZTzxG**pEX+Pr9z-M!csQmo6qM)vYBEwrzs$_zJAw8+w2TD+ zcD#CDn5nQ)_Z$^I*^4IfAJtr`!LC`%AB`cnwlO30bfW(Hc&+$=`JB7rb@h5O>+*uq zz{tOThA(o#{i1`e-YPZa28)HB)q&oEF~a|pQ5Gtkl+A+72##(qiD{HFr^2{pmMU|+ F^?&$uG5-Jn delta 2787 zcmYLLYitzP8P$+s7D&J*N=a(4F;U|9F|%`LXV=CUV@D;l6f8RrsSf( z^TYD)&YgR|bG~!VcMlKFPYuq`{L)yI@a=@M6LH(e%eAYp&)9Ax;5FBz4HNdfCzi+U zM3bFpv=g!7IxdwL{Nf8A%{yl)JHA@JF1mC4AGho`@a?A*?2|E!wwmZUXd_=`q5t0c z;J-WOpl5v?ufJfUFyF-N`{BBlMNWFk$H4y*cy2g~(d`x{ZdcgdY<87;);*Os}&D+k^651uh-bf?lN_It)bGBb?7_Ri0s2Ark_yy>xJAf zUuB~GxR1NaToiW2gGzsXtAqBXKB|s77+q>%>adOKw@hTerLb|>$C9QP20l^fc`t&> z(+Y>z`m&kQMlTwk1=RW4*s)(+> zjjh1SQGPRjhukHxh)kJ6l&og%iD2kgHby&53|@3_<1b3y4AhoxlS(7{dYmFk`4rsXqza_c|ER)? zi->yK)WfR@ZlJ-!-Z$CiYcWzJI=6Js1|zB;t7MH~D@BnOmRzr&Q=3%vRh_~|9|(aa zawK-|cnsMenNZi}KqlE*AIfz~gq%9)QMEpvz1QVhPj79OLy}GSoJXgcEi^aRYbAd9 z?GXpj8}iUXRYx@N=D;T&PP(qn)R3`vrxf~DONk~Xt`mE6BhKznI@)GXJs#d3i|Lfu zre+K4nWnHUTW98p`95o+nqy)@Tt2Pz=M5~PCFmPixzerl z7_Kh!F+JuM4+SFZ)Zhi2OK=}j;{x; z0KJ9ZPt;4lFt(O`qns+YB?B+6?WWWAn_Bx+f|zr=%ldwu!ilP>-q#iDxw&_|A z7k?0%>hJk)(p_AmpKj&;6C-{wB-lDnmn~p70^rP++NdP{iHi|qK%j>*X+Iy>{{#Vd zL{2cPw%m!WNs%N)UdB1LiGU`3eE$-i`LG$roY-`<*2I@Tm5i{^yFZHjB_F8={V+X? ziRqy8OBdy5nlRAI)-Q~ew99HZbGlwqnBFNtY++_YFn^Fc?x5{yT5*z~*V6>E%&%lb z53eGU(oidUkt>}bq_Fpt!W&de&Rd8_tyTJhZTxyJSjzTEwF;*;`B=F)s;?&Ix+xm= zi#7>!a`t`6iwJri3|(>HfIHMizvW``Jc5o(MLB%9q=}Go23}tlEC=DmW%Ytf)1u@uh3(FqJ`6wKe%a0FdOfDUyXPb4mo^CVF z%iNZ^YSOj5Md*AD8=Q4GHlNv8UuJ!D(6EIM_BfyPUT3>i+wA&J=A<>;9f65rLpzZ~x;cQCLgXcx~yMVUv3xj`(Yg1~8P RK;P2&CB@si{JX}B{|B@EP&EJm diff --git a/packages/rs-sdk/tests/vectors/test_epoch_list/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json b/packages/rs-sdk/tests/vectors/test_epoch_list/msg_GetIdentityRequest_e4060c14ceaca6844d682c7393d7776113debe4287515ae60d0645da450a80a1.json deleted file mode 100644 index af6663104973a597443a402120e5e05339b1b650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67504 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 DDwHBl delta 2824 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 diff --git a/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/msg_GetIdentityBalanceAndRevisionRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json b/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/msg_GetIdentityBalanceAndRevisionRequest_edcaa0b3eeddd058b4f2331f251947f006e43bff5d40eb2fee5f9bfa98aeec74.json new file mode 100644 index 0000000000000000000000000000000000000000..f27319a84a4f1232ce4c99472916992d4831066d GIT binary patch literal 58542 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 Fe*m#7OPv4! literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_identity_balance_revision_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/msg_GetIdentityContractNonceRequest_b7c02dae0c3c762ece1f70a36f88fa69b4749b19cc1f5ef0abf37fa0c04ab2ef.json b/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/msg_GetIdentityContractNonceRequest_b7c02dae0c3c762ece1f70a36f88fa69b4749b19cc1f5ef0abf37fa0c04ab2ef.json deleted file mode 100644 index 392a3b4bda6180cc02494617bb699fe224e7d6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43743 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 diff --git a/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/msg_GetIdentityContractNonceRequest_bac4d8a5c55cc79653a9df5f95d5696d8b6487a30e2dba25bb37328ac872aab0.json b/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/msg_GetIdentityContractNonceRequest_bac4d8a5c55cc79653a9df5f95d5696d8b6487a30e2dba25bb37328ac872aab0.json new file mode 100644 index 0000000000000000000000000000000000000000..2c0e41562ca1c71d4c88018417e7aedf18f44c53 GIT binary patch literal 41975 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 literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_identity_contract_no_nonce_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/msg_GetIdentityKeysRequest_41e9c14342c3b29ff1ea0df58585a9ca814e12c84c7bbb64e9e6b02f0bf582f5.json b/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/msg_GetIdentityKeysRequest_41e9c14342c3b29ff1ea0df58585a9ca814e12c84c7bbb64e9e6b02f0bf582f5.json new file mode 100644 index 0000000000000000000000000000000000000000..9f0c14408a602e14a9601cd5e01ba173010a5578 GIT binary patch literal 50298 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 M-dbMdkFVeU8-Bbwr2qf` literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/msg_GetIdentityKeysRequest_b4ecff7acf52818aef9ed37a98d4a459dc7a67570ea6df3f8858d3fae7820ffe.json b/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/msg_GetIdentityKeysRequest_b4ecff7acf52818aef9ed37a98d4a459dc7a67570ea6df3f8858d3fae7820ffe.json deleted file mode 100644 index 12f89c4eafa307223d87b4a6c5e7dde7a7b848b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47170 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 Wwb6a#f3o<|rz diff --git a/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_identity_public_keys_all_read/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_identity_read/msg_IdentityRequest_5109a16372f4a282c5d97a45e8e0d257de5dabc3b500a3cc4a7ebc4c1465463f.json b/packages/rs-sdk/tests/vectors/test_identity_read/msg_IdentityRequest_5109a16372f4a282c5d97a45e8e0d257de5dabc3b500a3cc4a7ebc4c1465463f.json new file mode 100644 index 0000000000000000000000000000000000000000..b2ed03b1e473ce34569e9759b27fc4bfe3ecb6ba GIT binary patch literal 77359 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 J!KZIN{1c0xF!BHZ literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/test_identity_read/msg_IdentityRequest_5789e2afa300c2ac039646d8b81c53464633a072722c5a04b15ee01f3a45de99.json b/packages/rs-sdk/tests/vectors/test_identity_read/msg_IdentityRequest_5789e2afa300c2ac039646d8b81c53464633a072722c5a04b15ee01f3a45de99.json deleted file mode 100644 index b33403af6695cfe336000f83d53337fbe4533ba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75803 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 |osdm%SR(Fl;U6hwyslSTj;5}+qV+uEYVS?Y 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 J!KZIN{1c0xF!BHZ literal 0 HcmV?d00001 diff --git a/packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_5789e2afa300c2ac039646d8b81c53464633a072722c5a04b15ee01f3a45de99.json b/packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_5789e2afa300c2ac039646d8b81c53464633a072722c5a04b15ee01f3a45de99.json deleted file mode 100644 index b33403af6695cfe336000f83d53337fbe4533ba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75803 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 |osdm%SR(Fl;U6hwyslSTj;5}+qV+uEYVS?Y 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 BO9cP` diff --git a/packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_f876c456a28a7a9d1aab891eced33f62e8876a19f5937fa5842ab4f59ca33e81.json b/packages/rs-sdk/tests/vectors/test_identity_read_by_key/msg_IdentityRequest_f876c456a28a7a9d1aab891eced33f62e8876a19f5937fa5842ab4f59ca33e81.json new file mode 100644 index 0000000000000000000000000000000000000000..784e76a58ddadd4e677eb75a48637c4031a75965 GIT binary patch literal 89816 zcmeI3O^=+_5rwn%uduxCMR(8i%rwhvk|>L0j}XeoNLWOGz#v)3|2^lq_uB3z2KRX; z=>HLRK0JLAD=yc{^Adhum1GU$FE+!eD(VGumAe}-~aXUAAf#){l~w3 z_r;4(p8uG?k-zi9d&Pe&~A&!6viH=C1h zZ+EBP?RLkrZ|@GL-|la>XWwq`PQU%hPdeV8{^9QC;q2Snvv2Rue$ei4o@Rd*xjQTP z{O9a%&+6TsefN_;yg&On$HO~JK6{_;#W&x6{ljC>ef914kLxeI8Nc(-H_zTY``xo2 zU;O3E7oU8(+uv+<+s(~>eBEyH<9FNq+TCsL`IGJXHoxaz?Y4*c`+m2%%eVRMfj_z5 z93S$B{5ouo$IX5I8b2j}e!t%Y(p`GmZErU>x0}NQsm}Ah&A!|5BS?R{LdeJWDe;#= zPk%tLz2NV@i`X7l%DYi$Iv(|o?=Jp1?|)hfrvZT40w9gty)P&~@%Fem+;0vC{^c!y z{Vn?Qhy3S1Z-I2eFn{`SfXvUP)G?D(O~$|%xcKW^{)9r-pM0b)iVDDo&0%+GQFBlk z<=c!W?g|50tGH;MlXeA?{~AFCEX zC;?D_02V>26AFJwx*sC#Il{o2zx8nufAB{krFX+x9s#r0piW2mlSD_p|Cqu~a$d^Z zlaTN(1iX|9CxI>mokjXhuD4CtlGemhNO%1LqPr*X)4-C9{p_f-r}XO1!QyVYOgwXU88e9f_Q24b!_PMs zX@$-&&nq_$ay;i*H#nZ?k&Y-r;nqYs=FuwVv z+)}In8gwQj>?OIBR4`HB(159IcaHzp4R%IuXMc!3cn3c7=g%@5%hygYjoGkhbYalC|#ABC`U8e?B|ZL z3m=<)D=b1iO)Qu0H#9pnETBEy9g&4x)BWb!i7islFiD!{W{Z2sX&sVnS5Z zr$j_-ZxnJ3h0MK`nUDcU3nL_n7l{R=bc(ctMh^%!+xy;%?Ix37?_FzKDD6Vgi zz)Y}jkifV~uL6+i$G7Sf>p;z&bTP4h-}&w`f*ux@azDGNS(7eQac>1fm3}D`GVHxJ zCBYN*n2`11`oc5&BB5n6iiu~_DXEJ62)hPP>Z$dX@mB`gemk(mO5vt zrJDh1pH763D3o>z>Z1&k?Po5urW6-ynL3qrNR&E-?@jv(yGm+dM7`pO5`-LXsjm*b zxdLem3sVRz{bL$|IgonWM0fcTsM^>2l-er-iYiz{6o9C^k=E2Jixt>!*aXs`V_LkT z*C3?^oPL4?CZn=z!A~$rMnUXh7ecwD>tR^}RHOHzNU1Jkzatn#yB#dS=Fr=83@*$R zA1FNG<(Ob5-Km$iay7)^d$j_l@<2BN(q#%_cEjWiRU(|8(uAbc-X93e(3S4OF@cP( zlXT(&aqk-=*d7x&)~`I|BcjGxC5i-p%Q0Lww_iVx_j8;iy>KZ`N6#5z-3!4XZK!7Pj~6498Gw0#aoU zibbDevS+@uwX~*2KsuqCal;sYn^Wk=2de{SUn+r5c|EIk6NC}wuU^kiWZc$hmm0a0 z`WW08M4K@%8tF}b3iY|iF|~g+CLsBQ2UTGdVkuChyU;Sb;3;$$5A3(O%SCtDdcw#0 z_3FT1__tT<5Kb-9DYt%P6sbPd4L$f0<4%-f7p3MIQ;aWxaTT$hvku%6>2DRfOND)R z=rpnY=vQDrLDI$jR3HuZJtkwK%q%j#{$imu5hX?t!xRKdqM)Jh_hL`FesCyVSab-c zV8M~Z$q|_gbC?F$r$auOyMkrLw%Y+RC#g22UJImC$h567@gWBhh=^2?JkD6cFpKge z08Hm&Igt7WfmEo^?aJg*59z=dSb7m*fWoM!*u~Iuc=ScmTGZN8g~2J87P%{C3dLG9E+J;DDvH zak|Sb)GrPKQs0FW@3A(;tWBif8ZrBUjkD7wCm(B>TH=dy93pd zq6u_^AWFS-U8So1h?;sEbc6xS^e70E3f1EzyS1MnMXCn`k;{NT(GW^^@1jMbS)t&S zdXvn&;$Xcw5aqfXQWegC&GtH_H4zmv5txj1AehV)+^3n*THhV%`kh6T`V5r7Sf%i; z5UlSGOAk5w`+>lmf9^nXZ?sf8>J;Qmh5h+0JT~Lzt6%-}B`hV>avm$#~NT;^s zQhMoQNw>brK#9rRS-k-+SlS|OItbRw7G{dpgdM4a!5k+^ByRh_o;Mphus`-7zlxHW zIRD8$6-DM?=+kk*y7i$roC<}tVvmCS@f7qG3w3#CxHXC~&;M**f=IvHFq@I@7|bkbchFq2xxoH0ZW!x^sbPu-6@>hAqNU;>g*-3U=hensoFpZj$7#JR%Z~s%rkl{TELQp)ki^?U?QFi-2EIt6vvFm2LFDE z14u^T2A8GWuW~XbP^~RWwf3S1VM0=$Q0IB8OYO9KRbpVSo*+)rxUx&n5f>(Xi)710+rZ7CObt#+8Zwv z?U9-M6s80+%I67G$gGS#q)*Bi$L{H!j5BHdv@#4z?lR?U)S1A($H{OyEj?<1BQh%O zFNQnXsAVkx5dx&IfN$^5h}YEV_FzOLtjUeLPlN>GNP>{+Ro)z&Nf+?@n}_b=DsJ5R zDQuFnbOyHC7347NY0P|Y|Y%s~}c`qLC7`#RU!>hBx^m6_05ADECdC^$CjGE0g}o{F6E0ElghgDS?JKxJjjU5qalAz!~Q%3!O5l z{++GJCA4hZyC0~?0%$p>dtEI3_O?b~GWHIfB8{46gFP`=NlNtu3e~61eDy|(B-MUl z5V4wm5J+ZhL$fU0=mnlhB)|+By7%6 zz8G2jxnGW~)Sg#FIeEHc!^u+#4MGlsZOKejVCgSRkW_|{C?TKJ$ycdvM5j0MZ*NOZ zq&j8G;N0VOSnbBw9}J7qy+05b&Gz0-V6LgYR91=D#e>z(%H;TB5e}A=ss_<29d?Z= zw1IvE8MmW!_MLK0$l32oU`e2(nJ!i9J&JHWx)a)c#1>ZDrzbx|aq7>jp!cOIC81o@ za%yVMDr?EakcDLOWYNE5o{SRd z;GugNuHN6GYiE+#Q@zmWE^O>MOkk*`O2vg-sfsX^8twEMiR$H(MDF^UbqYwCpsQ28 zQ>8++M^>N`Zw%8+&{_J}KCPQEKJ^xt^G1+!(yX65b-Jj~OyHSKr(9y{sGR~)`BJC8 z^Ch#&dl)5#%J19H4eNn1Rw8a`{I>sigp$QJIMM1&Y9 zt|AAn0aCHRBnb$v6QD@j9U~%0kol<1pJt~e7C^)8G_=`2f zxclV=6g{;Ti~^0}47G3)rH&KobdSTCwU&UGf>In4&zCs%)Eh{^yxId`&q*ihmWlzP z4iUZl`VP_S;MO~mald|`B1`xzC~Y>>xD!mSJUjPe#j@#p~**pC{1veDw12z2Y2P(3J&w|nh=g7^utNM@Sn2~-LkxN53WV}v{EU+Y(Fv$c) zzx}o%S7OEM2(>uK6^`}k944~0oEg345|Zxv5oF?W>1Sc}9Lt&$-GRSWP%aZu=fqP; zPaRRv(q2%4oEZUv6(>i?Dc)5oV_!qpS`gh$SaM#r2T!D@Rs&NIcusQm4GJNckby>v zp;-Nf`C_=jJ=9nQ)bOVlh)LArcAbHWUak{@rC$p)o}+skiF{ZD{W-*{>aRpDjlM`= z>^CDJy=(!buaGF!8i5&{xY;84oI}F@lTmGON=;zTX9BYs`%>jTO_72vDvH)L&HBTV zbWv;X_Jkx>5qtGmoD$C&K6ojaBtgEq22yo(LEsK>Iol1&fw}<_fCby zDIwETuM~IEApg)w(&b7NgweYucT|6$F#61*51dgV za1vXP&F@6jAjpXEWeUQ?;G#-dyWjw!Z8dg8cB zh=~e}DYD-Pt2;6AuuF_!GP8f`geOjVfkmaGyS~90CDu?H6qjn!(Oq9Bct#Gwl++19 zok`~$segbKfKXwd2#sGYYK}~i*_%WEcnG!J+ES0bb8tfA1UeJTGgmJh(&>kw;OPbt z(Yd8yd*r!NfrI-AABzBmBEqzOo8VwV>_JlG5>1U2DZodqE}a5|DXW(cC`gT)z)ZYX z5P<=wAKwZTs3uqc!fK|=KkGwUNfkg;k<8tJ+1CkGob_emBHdJ<>P~=}3f)1)4pK#u zQQ-+WUB*0>^fX&_sz6HZHA|G*vrx20CKVcfroz58H*|OBnCVe0c#vjDnfEeaj>+J#}W02`pK)Uk1AGs8s1gfF86#|92sl><@8VY%e z>;vg8UspkLj?5LASUEU-HuQ>H<8wEyeZwC-C8Rn0T&d2)+_F>N&LGsq2+eY(D6(-# z_jsbdlL~SO79-1`wbSZAQRkqR zSS9AEM>$@m#xsa$ExHy@6N&0+Op$SBac^YJ39pN;^}}QDkaXux?jYIMIdv-JL!hv` zNFbQ>feB&gJ;!F9W>xhnph$H}QDiK=XUp0JLJMwNWqf@uU{U_C@a!#`K=q!MOG7=6 z5U8w-x%ZHQr+}sR2cbAe6-k zt}(Lq;vy=%vZc1^$kmey4)@!T>rUhn5(|3nAth)CKU4?dS`(r>5u!eD#ODR`;{#Wj zG5}^+{W+KNgudpyYJG+CLd&U8Oj-BkMmFv-;ofs_W?9$+J|o~H>&Z;1z0qAYO6>RJ zX1Cqk>_7f>tjsWps7B`NjA7-`nHnc*t+JnSg#c~2H7|f#q1^^qE7di8KdYY&fuJB zC!JUjlVCk2lVGC3r3JyUFtZ=}l)0#rz|gEG=M2n0Tj>!f9$}OtkxLu~8G++i0(&ix zEB??^h3+DvKI4Q%W*jCjhK_UgY>5^^&I?ywzkk`T{9+Gp=fb_4YnXMs-EE$2Q?->HdWO0e`d*L+dMH;itJ*Yg}InA;t(coOXJ)c*`zDGxu zfGP2G8)mS@5ax-yLTEOM5OY_=Mnp+xH=)sc){EPp33RaZK9)ohlLYn(!d~LHb_(u# z#g}?KDOH1$v$yYYQBnqXrEM=+Q?W3>PIp4{7sQgJ8m^Qx6C&0)y=r0Q{h6Y z$SE8_FzR$v8Bsz+PI@U4Jo~pw1P+?jS{PAcy#i@mz4tK!6=w*HB6@ovaN;BWuMF;^ zLj7=>2F0l}UcJ<#&lEEK5|iL>DjdYFb0sQ(h%+Gg_aa)%6qqEPC^EL$%ZG!%mjL`v zh5c)Fp7O+VP%s=auO}XMsdNVaBKR+Vn&28S=&W}j{Tc4I{YGw>Vu49E5?^B)*T{8II z#gMu%2)E~wOSu@WMSjBmk}-34&yym`<+3lq4ZEV$eq(`u0tLGinXkQmtU-f`Ac@6f zPNCkBNv9@Gx_)mlJ9R0d?tZ_LE??pZj_7(mgNeEW93~L#;{PtF|B&?O|0AVcJ}lj{ q(;I6fu4tp%gd{8clUpN`TEDz$IFL2tWmt*ZcN34CDAA&&Pb_ z`zhb&-^lYUIt*q(Kq@O)0(#9iFn5ejbK zJUfxI4##1-9j1vN9$5YqZ5^`w|1ccmR|~h!Jx=W>IkkBS7V#8Yfhp@)zQcc9m|t1( z2zLU}G)&{VJC%wc{$%U$99pnm4F@a=o5H)fPKXVS%H|AF9NIOk^3CnQ;m7$gT@TZq zS9<^)N4zBqkS5k=&v_cqaG-}`81Ko|3z;E13$n)P6TNter^hF@f$w=bTb`Sr$x_kz zMaGQ#>2(hYA3H!mz%T^DEQtA14V_c*97*8I>+8k!!yy#KDIIfd!_+wy%Vhmv;>h#Y zYh__)or#OZGs{-Vzu2-)hQ;EX&*SFx>?{_S?%@*Y>I#;_r$+!EeK0| z+lyG(5=JSkA_i)GiAofuAK{3NS|6a^D8@x1D&0hVvn2`mFwcI+LElTPFd%rK_ZliDkUW& z*<$EK*1|wZT6k{K2T-wMswqGz6FHpq7OSYPEu~P`1VYkdLQ(~BGqGSrZUM1`ZwQGM zTe*$HR;w+C8TNcqZ0sb_Bn5=M5CO6&E|O^KH-{^%HfG$aP?bq{M*t;5UCThxn`GTN z3jH@?g!w8pVZPE;Q&tYZcw(IiwKg>OG&mJ#$#V29W|Ig43bDXts8|`-TV&u0C_+9QHE@>Vu%&lXW5eQ zO%i7-QW7m(STP7!@%D>J&c}oa924!KtYnKKH{EbEn88bwkkS6Ur^Y^2>Y0I+l~R)D|b;#L<5z$l@cK+-azBnF)LqhzGIl0&J6 z5Y+-AAgOU9Ryejn6I5||mBuAwVndZd5(Siej}iZq3nS^ZMUjN_m0Z~AOBF>X7BeBt z@%AfHDk3J-5S4h7Xya8uss%*WQC!**h*5(LbjlWr!jv9xHKpqBEQqZsJU`-6eyNT73wUWxc>; z!x<9VXd^gddwK{a1J8O_lDWV!G@e6NUfGM^Tz8n<&6TA@J|;|4%VJP9Q5QW_AXv#m zz2hMV0KCf7XWLn^E^D)uW| zwon~LKjGo>9_qy%6Z2iw?I)&Z(VX~4?>gNWU2TkJGd|x2>YA1847`bDkN|IQf(qzw zp<#`sv!npTG!?8MV*ZtfLt$0%8R!f|WK9n8gq;3tY7v*RMFo<;EuG4W(RiEgxP({T zj0LM8Yy*$f$t^Y`cx9_8>{VV#Dnj*`FubZL0J%FOTLy<{ybauxc@Ec6XN%+^>Gs&F zv6@84GADx@!p|sYVwtHW5yLmRWsAHU6X=hmqN$dn;DW2&KRq2#Jn zat~HCphWJ%4Rs07axKo!;YOhFKbQHYWstQD^QI!OlE8oR`(crx_WK)tTeHg>V2e+8 z>%|}+;KzrboqcLw`y~+Xvz1s`1c;>$0*aQ375Nxpo3{0>;;{h0s& literal 33938 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 diff --git a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_prefunded_specialized_balance_not_found/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/msg_GetProtocolVersionUpgradeStateRequest_bb149e1933b9dc561bbfacfb6d09550f0ea4a6af6f68037e7d50ff4e4de74509.json b/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/msg_GetProtocolVersionUpgradeStateRequest_bb149e1933b9dc561bbfacfb6d09550f0ea4a6af6f68037e7d50ff4e4de74509.json index 74ea11aaaa66a5101eb0cabed6407efc44e465b4..3eaf960366080c4a3904fcfc20036efd821db986 100644 GIT binary patch literal 26592 zcmd6w&2AJ&6h^b=DUjE*m@yt;c!@kflqHKOQiw>x2Kn7{PE}*t$S{36A&NAB$5U1J z=lkw=Z_k+a$7j!<-+Xxc{*PbY{dV)_`A44mjpM`DJp29qyAN;q#-H#1dOKdf=kNPx z_s@QK_VMP&UvJ+0bh>?UI2{i!ZpY*9a5}x_`H6r1`pnn-Ir*GLcZc(9*FD~}-g?LD z-&*ys_IO#$ygXc9@#S&+a~jV!obdS^+|*s&JQ|8_zx?b3XWd;6=U0dG*>B#t{8O~^ zkoDhphYNmGu3}4-H>Croez@ zh=f@Y^QjtoOvT5UG=02&y|}(O#G-hBW2tSKxkAVXpMSkpR(7s4akUs8$)>Bd zxY}}^46DVG*W7RN+%o(Ij;mv*LMkNXe2blUiwU>j)oqAk*+Thl4;-%s5Zkvbv0PQH zRnpu7V_ycx+%m+bIR+?K6=UUCHK7ES^e#~pstCspE2Otr(Xp3pi(XX|lt}^I^9y`N zvBN7eTmyO0923N-Y`B#5f!vmKsV6b;rT=f&lQGh?nuUi&Osv@|qBFG zfoNVuyy{XJS}zaLgu*Lxix?JaEnA9=u*E#)*s=5@Zs7q9L zjiPGK(9Fa}9fMj4#5m_<9>%V12t{^WPmQO}LVgN%OZ8PH88y3I)hnY!c}K2_hNLX% z4B}a`WC%2}vPG97cA7{PQ5G9D6&G8EE)`AFN*u5yEnA9XT8Wo1%a&qAaZU&lMH;1I zZ#9JE|ETL7Ehh0?AX3y6QOfF6k4i#@kRr}DiyhTewk$kPUd0(thR`LuOeJ1vg}_TA zb4#oaw*X3^mRlHIN`@E5${3b-k|$xZRNym3#d+d2=5=*yg?s&Qv;6769P$v1OgW{ox{5@CdD?B5WZMx?2Q*hidCu(JdY^2zEDCGl1m6qIzPT? zwm?=opc+MDixO%DeTai-HDRNP1BPCeB62<9mq1)ksh0W5D5#^DVZ$#tF0s_`X|*xQ zW;mAB%)oY8rlwNtg2JPu3(zxF;*cz_Vxr_pfn!e@7Pjv=e>=(?o)%{o_5PCl35yF2 z8fS{CRBD9)Bb4Ffl)BNCa+vHY(qU21F-slcl8-bh#5W48rieo7Vn$7tiU~)@0-r6f zOq)8x`N^dTMAz8VzQwxE^Gp;eS97Q+Box8g!XgPRJz7}hd0LMN0*MIfRmqhFUQ9H4 zaMh5Ui9_1VPa1EkplPC}h>&BcYNa%|J%J~bsq6Z#QPqJiP)pIJOA?}}R|>$L>J-uz z6GkxvYWr-!mR6({J3>xbogt*sW=2ixCq1H97Ex&~0#Ur0b(-L2i@QqoxrHc7Aa>y> zAbU)dC?qXBObF61QYr0w*QiwY#4eGaGIEw6a~+SpU5ir`jo_ zcuo8NBESSi*Hs;MXyr0In zkId@MCE?Bz6kxevSEfoTR4N{c|EwoDv2wAJwm_96p=K!t&id3b$!)`8hMc^jYm~$y z&IvmXw{a9T&_r$eJ7%yQBxFlzvNEcalDXRP$s;7$C>`U!JZpuTEug!lwEn6Io}U;( zVk<+~5;ezaEpQt}d`o8ro~^*c5vDN^U+;rgE{o@>pLB2nYw zBkE$UcwIsyQXm9g=`^jBSY%W|1ebEIs%8(wYpyCH;$Eu>_9g@)6{R{RdM9Z$xMOgr z?|cw=B2|1-Q|#DMc)q~hb6e-KTINeE)iFl7vSp!G%$UB#EeUtepDMS#146A>gIL+# z{#=YumkweGJkrb<*;~itC95&;igikCA_ku1x+B;UuMk7OG<}UxcRQCRF`8F9E(_vS zoq<<|*G5*=iLO^FPT;7Zqyy0(lq@FGz9AAb}=)MBI53W5L2?}s5n zMmO;ok_TPB+^n8g@HyL`=xVs$*uI*@H;8W$3S2I(FK2X$t~9W ibtdbNg9Lb7g?!^jDE!?ZPrm%b3y;3FJmH_8@BapX^S87B literal 26571 zcmd6wO->|75QV+w6o_>%x}Y2Axr7g3dC6illE=dKY!G+%_cD^EdibgQ${<uR&#ZuYx;a~JccXls-C$KB?D zUoG6)_poo@Vb|tma)GBgi!@;u^KJZ(3;ibx9_6IVl?cs@S$?qwg4d>=3F&CX*Wz2NBf7`=^pL3Fe1RREhFf(Gl zRzs&$Jk4a%$Iq9G>!(dp6h}CEZHK8HiaA(69dXF}w`*l~&N35c#-S3-TCBy{l4UZ? zj6>dcpqW{g=w)+QKfR6SizQVM3;dj|O308Yj2Oyi@?%2C{`kMB2QOUWAmJ4{dM)ge zRaC?Poh;otECL@(OuFJ&>j@%u9AlLMu{$Q0Bx5%+$=ENd9zKgPZV8A1+KW%hNbaRO-j)mb%Y^C`ir$U$tewV z@ydRh`BTbrT9RF2h)vY0)?!b~Q@RIBO`FIO6q-5$ZkQ}(bLeVBCO{ZEWq<5VIb=zt zcYI>OzP-kI8+!sb>5VbIDG=>kWJfRA8506n7&yq1MtlWHkbRTb00DxMiUe+#L~oUn zQ08WsParJ${3FIoBP1Cvz4&i|v#1R_10}5Uu{Y(Ac;&oNUb(5M1kEUO55!`}5jK2( zRi!IJUWQQAnuI2|K@jOMz17ZX;gzYQgly*U>~AL)smYz^CQId&n?M>CVf(l&*wKpt z)d+IW?YKW+_t`x{h5&YP$w&co4dUZbE8`UvEw3Ci%GwH&BZt~Q#){R|BaCQde}99^ zN|`3ciVFlOO{q{sz%Z~cG3iYaafAUer!Zg}&8#C7wR$Xu?TN)+j1b6*u4d3V=LguDF*R0CZ!&LXiF8B>=7WY=BO%gliskAm+TtKKGo6KHC`iyxI(a#M5b%p zrBsLN;0y^ypyEGcusNbHF|q*Gta79xa1%%prCg#}s8YolgL1NDL#U#V)f%r%BPbvg z;x4f(#?%$pdU8|?94iE;csqQB*mG-m7{^v*3~Cwn_V86f6&uwOqvzcvqddC3LJ~7W zW`Bzv)Rj>ua20g{VNOXD$b!);MW>V!^i%u$B}o(r8a>PsJ5$+#ss*BW6|YnsafD$= z_GgJ=h=i{~&|ZOsl_?vA5@%!Fi)eg_DhD|&k57ys^}jGy*?_&2q0!#Rf;s{!${Gyk zRr`=lITxe`tlZzQ)nvtxQN$ErQUq{{%y!tbS;8NgC5U9ZOqSS0K@YQ}^vA{$IMgZF z%esh5hPPEmjwA>IuN62d4XH87#6oUWx)Qs*DU{r@%8WggE7hH|#6pk$7_SnAE#8K^ z>R&4AxMU|QX|J4D#w7^jONi7-fi1Vs8I4?9SFOj0L&|VGz|S)_Lr&2W1%zZsltdOGL*-!y0s+gS> zg0AkA8_GBj{8)I}z+te>!QLs4k>D{F?WrDlpGR8o7>#F4%)g)|}IUm}*(xvh*P3-ujvFc};%%%LgS$MGfMrb1N`Ir~$QQY5lOi3B>N?D49>;SxpcRv-z)AYSQG9X?B-q5=_n z<(0gJ8Tf3Xh{7yM$P)2nb;am3eD#)QXi(^CU|dSb%ATx3TI-eRRG_Bz*Ui&PLCLHY z9I|98A{vXBo5Whi<_NHsV%}Gcla@ruOOOhj8Xp(W@=6tKKgEC&B?Lz`G_hm_Rc!1~ zMV*3@m?ILk+8=v$(FqDhb}R`C>v1|oa}+Vq5S1TTVVBS%74hW$y@FH}Rym=ZL>Uwm z5CIzQ8QJVh6xLr;cEWDX73#>>ZwSVs8=~dkc3Xl~W!XnUZv4 z90*p7cEGK$v%R>mGu0g|I7NvejN&D$PX}(I2+&e37diR0O}1ul z+IV}me;gbsDW1EYr-`3D2EY9_DEHZpPs0E2zZe2_J1ek6NeQ7Vd;A$pQoHvX?m}Eu zQAVdCH^!e-1wBI*2KkXk#NLFQEUjpkcEIHbBO(dG{?9|HQwdy&2-wLU;2M(UM(M1o zAbHIY#x~LpDbum&2t?Hp6Q{8caP|nIuu@Px!&F~6W($_sRrtBrY0{-gTh0DMd*0js ofgyjTgZocw^lW+AmeER+IU*g!aSO5S3 diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_protocol_version_vote_count/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_limit_2/msg_GetProtocolVersionUpgradeVoteStatusRequest_ec9dca65a964669b3bc8195d5ff106e5eda740be44679cc960ea35f2134af628.json b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_limit_2/msg_GetProtocolVersionUpgradeVoteStatusRequest_ec9dca65a964669b3bc8195d5ff106e5eda740be44679cc960ea35f2134af628.json index 3d6f3320f3dffca452b56dc23d995ae194056e71..1b8a7f8a3cc924d4a19c81201568c6d351839fcc 100644 GIT binary patch literal 33779 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 literal 33714 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 Zz7faq#+LU)m{0uR(YMwc{`%?DzX05P$us}} literal 34878 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 W*S5STzDE9u7asj;eZoIKeEctUBR4?+ literal 34072 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 diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json new file mode 100644 index 00000000000..56a125cf4a0 --- /dev/null +++ b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-1246e5fb792450cd4ed23d31c22afa81e226bdafab0d460e20efcec7927a6555.json @@ -0,0 +1 @@ +a2199c1b2b0f5a9923f9131b2e902c1c77a871ef16e54ef90e5bb2332d6fda474b3aa8ad96302c916c5ef5913d24653b \ No newline at end of file diff --git a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json b/packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json deleted file mode 100644 index bc7809ba8dc..00000000000 --- a/packages/rs-sdk/tests/vectors/test_protocol_version_votes_zeros/quorum_pubkey-106-7ee4e829edd032a17841e9c64e56c57fdff6a9b6cc4d392987f5c13a097fec90.json +++ /dev/null @@ -1 +0,0 @@ -ac414ec06b2f5d6fa0a232cfc12d025e08eb80a24404ac286d2f9ad125fbb533089c7fe533ee6956aca8d85e48aafbac \ No newline at end of file diff --git a/packages/withdrawals-contract/lib/systemIds.js b/packages/withdrawals-contract/lib/systemIds.js index 8406a2fe5aa..45849561322 100644 --- a/packages/withdrawals-contract/lib/systemIds.js +++ b/packages/withdrawals-contract/lib/systemIds.js @@ -1,4 +1,4 @@ module.exports = { - ownerId: 'CUjAw7eD64wmaznNrfC5sKdn4Lpr1wBvWKMjGLrmEs5h', + ownerId: '11111111111111111111111111111111', contractId: '4fJLR2GYTPFdomuTVvNy3VRrvWgvkKPzqehEBpNf2nk6', }; diff --git a/packages/withdrawals-contract/src/lib.rs b/packages/withdrawals-contract/src/lib.rs index acb8703c54b..0eece0b61b8 100644 --- a/packages/withdrawals-contract/src/lib.rs +++ b/packages/withdrawals-contract/src/lib.rs @@ -13,10 +13,7 @@ pub const ID_BYTES: [u8; 32] = [ 216, 182, 16, 76, 73, 68, 166, 47, 226, 217, 127, ]; -pub const OWNER_ID_BYTES: [u8; 32] = [ - 170, 138, 235, 213, 173, 122, 202, 36, 243, 48, 61, 185, 146, 50, 146, 255, 194, 133, 221, 176, - 188, 82, 144, 69, 234, 198, 106, 35, 245, 167, 46, 192, -]; +pub const OWNER_ID_BYTES: [u8; 32] = [0; 32]; pub const ID: Identifier = Identifier(IdentifierBytes32(ID_BYTES)); pub const OWNER_ID: Identifier = Identifier(IdentifierBytes32(OWNER_ID_BYTES)); diff --git a/scripts/configure_dotenv.sh b/scripts/configure_dotenv.sh index b343dc1f5a4..e0d9fb16b4a 100755 --- a/scripts/configure_dotenv.sh +++ b/scripts/configure_dotenv.sh @@ -34,8 +34,6 @@ cp "${DAPI_PATH}"/.env.example "${DAPI_PATH}"/.env # JS-SDK: FAUCET_ADDRESS=$(grep -m 1 "Address:" "${LOGS_PATH}"/mint.log | awk '{printf $3}') FAUCET_PRIVATE_KEY=$(grep -m 1 "Private key:" "${LOGS_PATH}"/mint.log | awk '{printf $4}') -# TODO This will be removed from dashmate. Please use hardcoded ID from contract crates -DPNS_CONTRACT_ID=$(get_config platform.dpns.contract.id) SDK_ENV_FILE_PATH=${SDK_PATH}/.env rm -f "${SDK_ENV_FILE_PATH}" @@ -45,7 +43,6 @@ touch "${SDK_ENV_FILE_PATH}" echo "DAPI_SEED=127.0.0.1:2443:self-signed FAUCET_ADDRESS=${FAUCET_ADDRESS} FAUCET_PRIVATE_KEY=${FAUCET_PRIVATE_KEY} -DPNS_CONTRACT_ID=${DPNS_CONTRACT_ID} NETWORK=regtest" >>"${SDK_ENV_FILE_PATH}" #EOF diff --git a/scripts/configure_test_suite.sh b/scripts/configure_test_suite.sh index 8c9d5040a00..057ae2816d0 100755 --- a/scripts/configure_test_suite.sh +++ b/scripts/configure_test_suite.sh @@ -14,10 +14,6 @@ CONFIG="local" SETUP_FILE_PATH=${PATH_TO_PROJECT_ROOT}/logs/setup.log -DPNS_OWNER_PRIVATE_KEY=$(grep -m 1 "DPNS Private Key:" ${SETUP_FILE_PATH} | awk '{$1="";printf $5}') -FEATURE_FLAGS_OWNER_PRIVATE_KEY=$(grep -m 1 "Feature Flags Private Key:" ${SETUP_FILE_PATH} | awk '{$1="";printf $6}') -DASHPAY_OWNER_PRIVATE_KEY=$(grep -m 1 "Dashpay Private Key:" ${SETUP_FILE_PATH} | awk '{$1="";printf $5}') -MASTERNODE_REWARD_SHARES_OWNER_PRIVATE_KEY=$(grep -m 1 "Masternode Reward Shares Private Key:" "${SETUP_FILE_PATH}" | awk '{$1="";printf $7}') MASTERNODE_OWNER_PRO_REG_TX_HASH=$(grep -m 1 "ProRegTx transaction ID:" "${SETUP_FILE_PATH}" | awk '{printf $5}') MASTERNODE_OWNER_MASTER_PRIVATE_KEY=$(grep -m 1 "Owner Private Key:" "${SETUP_FILE_PATH}" | awk '{printf $5}') @@ -42,12 +38,8 @@ if [ -z "$FAUCET_1_ADDRESS" ] || \ [ -z "$FAUCET_1_PRIVATE_KEY" ] || \ [ -z "$FAUCET_2_ADDRESS" ] || \ [ -z "$FAUCET_2_PRIVATE_KEY" ] || \ - [ -z "$DPNS_OWNER_PRIVATE_KEY" ] || \ - [ -z "$FEATURE_FLAGS_OWNER_PRIVATE_KEY" ] || \ - [ -z "$DASHPAY_OWNER_PRIVATE_KEY" ] || \ [ -z "$MASTERNODE_OWNER_PRO_REG_TX_HASH" ] || \ - [ -z "$MASTERNODE_OWNER_MASTER_PRIVATE_KEY" ] || \ - [ -z "$MASTERNODE_REWARD_SHARES_OWNER_PRIVATE_KEY" ] + [ -z "$MASTERNODE_OWNER_MASTER_PRIVATE_KEY" ] then echo "Internal error. Some of the env variables are empty. Please check logs above." exit 1 @@ -65,9 +57,6 @@ FAUCET_2_ADDRESS=${FAUCET_2_ADDRESS} FAUCET_2_PRIVATE_KEY=${FAUCET_2_PRIVATE_KEY} FAUCET_WALLET_USE_STORAGE=${FAUCET_WALLET_USE_STORAGE} FAUCET_WALLET_STORAGE_DIR="${PATH_TO_PROJECT_ROOT}/db" -DPNS_OWNER_PRIVATE_KEY=${DPNS_OWNER_PRIVATE_KEY} -FEATURE_FLAGS_OWNER_PRIVATE_KEY=${FEATURE_FLAGS_OWNER_PRIVATE_KEY} -DASHPAY_OWNER_PRIVATE_KEY=${DASHPAY_OWNER_PRIVATE_KEY} MASTERNODE_OWNER_PRO_REG_TX_HASH=${MASTERNODE_OWNER_PRO_REG_TX_HASH} MASTERNODE_OWNER_MASTER_PRIVATE_KEY=${MASTERNODE_OWNER_MASTER_PRIVATE_KEY} NETWORK=regtest diff --git a/scripts/configure_test_suite_network.sh b/scripts/configure_test_suite_network.sh index 91d712368a7..54e6f99349a 100755 --- a/scripts/configure_test_suite_network.sh +++ b/scripts/configure_test_suite_network.sh @@ -49,9 +49,6 @@ echo "Running against node ${DAPI_SEED}" FAUCET_ADDRESS=$(yq .faucet_address "$CONFIG") FAUCET_PRIVATE_KEY=$(yq .faucet_privkey "$CONFIG") -DPNS_OWNER_PRIVATE_KEY=$(yq .dpns_hd_private_key "$CONFIG") -DASHPAY_OWNER_PRIVATE_KEY=$(yq .dashpay_hd_private_key "$CONFIG") -FEATURE_FLAGS_OWNER_PRIVATE_KEY=$(yq .feature_flags_hd_private_key "$CONFIG") MASTERNODE_NAME=$(grep "$DAPI_SEED" "$INVENTORY" | awk '{print $1;}') @@ -73,10 +70,7 @@ SKIP_SYNC_BEFORE_HEIGHT=$(curl -s $INSIGHT_URL | jq '.height - 200') # check variables are not empty if [ -z "$FAUCET_ADDRESS" ] || \ - [ -z "$FAUCET_PRIVATE_KEY" ] || \ - [ -z "$DPNS_OWNER_PRIVATE_KEY" ] || \ - [ -z "$FEATURE_FLAGS_OWNER_PRIVATE_KEY" ] || \ - [ -z "$DASHPAY_OWNER_PRIVATE_KEY" ] || \ + [ -z "$MASTERNODE_OWNER_PRO_REG_TX_HASH" ] || \ [ -z "$MASTERNODE_OWNER_MASTER_PRIVATE_KEY" ] || \ [ -z "$NETWORK" ] || \ [ -z "$SKIP_SYNC_BEFORE_HEIGHT" ] @@ -90,9 +84,6 @@ FAUCET_1_ADDRESS=${FAUCET_ADDRESS} FAUCET_1_PRIVATE_KEY=${FAUCET_PRIVATE_KEY} FAUCET_2_ADDRESS=${FAUCET_ADDRESS} FAUCET_2_PRIVATE_KEY=${FAUCET_PRIVATE_KEY} -DPNS_OWNER_PRIVATE_KEY=${DPNS_OWNER_PRIVATE_KEY} -FEATURE_FLAGS_OWNER_PRIVATE_KEY=${FEATURE_FLAGS_OWNER_PRIVATE_KEY} -DASHPAY_OWNER_PRIVATE_KEY=${DASHPAY_OWNER_PRIVATE_KEY} MASTERNODE_OWNER_PRO_REG_TX_HASH=${MASTERNODE_OWNER_PRO_REG_TX_HASH} MASTERNODE_OWNER_MASTER_PRIVATE_KEY=${MASTERNODE_OWNER_MASTER_PRIVATE_KEY} NETWORK=${NETWORK} diff --git a/yarn.lock b/yarn.lock index 38844ad76ac..b17e25241ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6320,11 +6320,7 @@ __metadata: "@dashevo/dapi-client": "workspace:*" "@dashevo/dashcore-lib": "npm:~0.21.3" "@dashevo/dashd-rpc": "npm:^19.0.0" - "@dashevo/dashpay-contract": "workspace:*" "@dashevo/docker-compose": "npm:^0.24.4" - "@dashevo/dpns-contract": "workspace:*" - "@dashevo/feature-flags-contract": "workspace:*" - "@dashevo/masternode-reward-shares-contract": "workspace:*" "@dashevo/wallet-lib": "workspace:*" "@dashevo/withdrawals-contract": "workspace:*" "@oclif/core": "npm:^3.10.8" From 69d00fde430d5bfd1d195e2fe446ef0ab9488b55 Mon Sep 17 00:00:00 2001 From: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Wed, 24 Jul 2024 19:07:36 +0900 Subject: [PATCH 11/37] fix(strategy-tests): transfer keys were being disabled (#1995) --- packages/strategy-tests/src/transitions.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/strategy-tests/src/transitions.rs b/packages/strategy-tests/src/transitions.rs index 9105424c3c9..b35cfd38d84 100644 --- a/packages/strategy-tests/src/transitions.rs +++ b/packages/strategy-tests/src/transitions.rs @@ -13,7 +13,7 @@ use dpp::identity::identity_public_key::accessors::v0::{ }; use dpp::identity::state_transition::asset_lock_proof::InstantAssetLockProof; use dpp::identity::KeyType::ECDSA_SECP256K1; -use dpp::identity::Purpose::AUTHENTICATION; +use dpp::identity::Purpose::{AUTHENTICATION, TRANSFER}; use dpp::identity::SecurityLevel::{CRITICAL, MASTER}; use dpp::identity::{Identity, IdentityPublicKey, KeyID, KeyType, Purpose, SecurityLevel}; use dpp::prelude::AssetLockProof; @@ -398,6 +398,7 @@ pub fn create_identity_update_transition_disable_keys( && !(key.security_level() == CRITICAL && key.purpose() == AUTHENTICATION && key.key_type() == ECDSA_SECP256K1)) + && key.purpose() != TRANSFER }) .map(|(key_id, _)| *key_id) .collect::>(); From 69133190ddd888d74cd6262ee2d38cbd7cbd3a33 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 24 Jul 2024 17:59:52 +0700 Subject: [PATCH 12/37] fix(drive): unknown mn_rr fork height (#1994) --- packages/rs-drive-abci/src/error/execution.rs | 12 ++-- .../initialization/init_chain/v0/mod.rs | 2 +- .../initial_core_height/v0/mod.rs | 57 ++++++++++--------- 3 files changed, 36 insertions(+), 35 deletions(-) diff --git a/packages/rs-drive-abci/src/error/execution.rs b/packages/rs-drive-abci/src/error/execution.rs index 2d66a56f131..f6d8c19c417 100644 --- a/packages/rs-drive-abci/src/error/execution.rs +++ b/packages/rs-drive-abci/src/error/execution.rs @@ -60,14 +60,12 @@ pub enum ExecutionError { InitializationForkNotActive(String), /// Invalid core chain locked height - #[error("core chain locked height {requested} is invalid: {mn_rr_fork} <= {requested} <= {best} is not true")] - InitializationBadCoreLockedHeight { - /// mn_rr fork height - mn_rr_fork: u32, - /// requested core height - requested: u32, + #[error("initial height {initial_height} is not chain locked. latest chainlocked height is {chain_lock_height}")] + InitializationHeightIsNotLocked { + /// initial height (requested or fork) + initial_height: u32, /// best core lock height - best: u32, + chain_lock_height: u32, }, /// An error occurred during initialization. diff --git a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs index 3299efc877c..6b1c26a2e64 100644 --- a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs @@ -36,7 +36,7 @@ where Ok(height) => break height, Err(e) => match e { Error::Execution(ExecutionError::InitializationForkNotActive(_)) - | Error::Execution(ExecutionError::InitializationBadCoreLockedHeight { + | Error::Execution(ExecutionError::InitializationHeightIsNotLocked { .. }) => { tracing::warn!( diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/v0/mod.rs index 1d807c70c78..9d50fcb6eb0 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/v0/mod.rs @@ -41,37 +41,40 @@ where tracing::debug!(?fork_info, "core fork mn_rr is active"); }; // We expect height to present if the fork is active - let mn_rr_fork = fork_info.height.unwrap(); + let mn_rr_fork_height = fork_info.height.unwrap(); - if let Some(requested) = requested { - let best = self.core_rpc.get_best_chain_lock()?.block_height; - - tracing::trace!( + let initial_height = if let Some(requested) = requested { + tracing::debug!( requested, - mn_rr_fork, - best, - "selecting initial core lock height" + mn_rr_fork_height, + "initial core lock height is set in genesis" ); - // TODO in my opinion, the condition should be: - // - // `mn_rr_fork <= requested && requested <= best` - // - // but it results in 1440 <= 1243 <= 1545 - // - // So, fork_info.since differs? is it non-deterministic? - if requested <= best { - Ok(requested) - } else { - Err(ExecutionError::InitializationBadCoreLockedHeight { - requested, - best, - mn_rr_fork, - } - .into()) - } + + requested } else { - tracing::trace!(mn_rr_fork, "used fork height as initial core lock height"); - Ok(mn_rr_fork) + tracing::debug!(mn_rr_fork_height, "used fork height as initial core height"); + + mn_rr_fork_height + }; + + // Make sure initial height is chain locked + let chain_lock_height = self.core_rpc.get_best_chain_lock()?.block_height; + + // TODO (Lukazs) in my opinion, the condition should be: + // + // `mn_rr_fork <= requested && requested <= best` + // + // but it results in 1440 <= 1243 <= 1545 + // + // So, fork_info.since differs? is it non-deterministic? + if initial_height <= chain_lock_height { + Ok(initial_height) + } else { + Err(ExecutionError::InitializationHeightIsNotLocked { + initial_height, + chain_lock_height, + } + .into()) } } } From 0f7f6bc01b1603929a2e9d076ca39ae22be5da36 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Wed, 24 Jul 2024 15:07:17 +0200 Subject: [PATCH 13/37] build: update tenderdash to 1.1.0-dev.2 (#1996) --- packages/dashmate/configs/defaults/getBaseConfigFactory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index d890078ee14..e0c27b63fc0 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -301,7 +301,7 @@ export default function getBaseConfigFactory(homeDir) { tenderdash: { mode: 'full', docker: { - image: 'dashpay/tenderdash:1.1.0-dev.1', + image: 'dashpay/tenderdash:1.1.0-dev.2', }, p2p: { host: '0.0.0.0', From eb6fa5d64f812b4792c13bfb5f8a59bd6d84aec5 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 24 Jul 2024 20:15:12 +0700 Subject: [PATCH 14/37] chore(release): update changelog and bump version to 1.0.0-rc.1 (#1997) --- CHANGELOG.md | 44 ++++++++++++++++ Cargo.lock | 50 +++++++++---------- package.json | 2 +- packages/bench-suite/package.json | 2 +- packages/check-features/Cargo.toml | 2 +- packages/dapi-grpc/Cargo.toml | 2 +- packages/dapi-grpc/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/dashpay-contract/Cargo.toml | 2 +- packages/dashpay-contract/package.json | 2 +- packages/data-contracts/Cargo.toml | 2 +- packages/dpns-contract/Cargo.toml | 2 +- packages/dpns-contract/package.json | 2 +- packages/feature-flags-contract/Cargo.toml | 2 +- packages/feature-flags-contract/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-grpc-common/package.json | 2 +- .../Cargo.toml | 2 +- .../package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-dapi-client/Cargo.toml | 2 +- packages/rs-dapi-grpc-macros/Cargo.toml | 2 +- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 2 +- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- packages/rs-drive/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../Cargo.toml | 2 +- packages/rs-platform-serialization/Cargo.toml | 2 +- .../rs-platform-value-convertible/Cargo.toml | 2 +- packages/rs-platform-value/Cargo.toml | 2 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-versioning/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- packages/simple-signer/Cargo.toml | 2 +- packages/strategy-tests/Cargo.toml | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp/package.json | 2 +- packages/withdrawals-contract/Cargo.toml | 2 +- packages/withdrawals-contract/package.json | 2 +- 44 files changed, 111 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fdff5396e56..02b1ef4e0b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,47 @@ +## [1.0.0-rc.1](https://github.com/dashpay/platform/compare/v1.0.0-beta.4...v1.0.0-rc.1) (2024-07-24) + + +### âš  BREAKING CHANGES + +* **platform:** system data contracts should not have an owner (#1992) +* **platform:** transient properties (#1990) +* **platform:** document types should not have a contested unique index with a unique index (#1984) +* **platform:** add hyphen to match for contested documents on Dashpay (#1982) + +### Features + +* **drive:** added config for grovedb verify on startup ([#1975](https://github.com/dashpay/platform/issues/1975)) +* **platform:** system data contracts should not have an owner ([#1992](https://github.com/dashpay/platform/issues/1992)) +* **platform:** transient properties ([#1990](https://github.com/dashpay/platform/issues/1990)) +* use all eligible identities and slightly more robust checking + + +### Bug Fixes + +* **dapi:** can't parse masternode list diff ([#1988](https://github.com/dashpay/platform/issues/1988)) +* **drive:** unknown mn_rr fork height ([#1994](https://github.com/dashpay/platform/issues/1994)) +* improve efficiency of identity random sampling +* only clone the eligible identities +* **platform:** add hyphen to match for contested documents on Dashpay ([#1982](https://github.com/dashpay/platform/issues/1982)) +* **platform:** document types should not have a contested unique index with a unique index ([#1984](https://github.com/dashpay/platform/issues/1984)) +* select random identities for strategy documents +* spent asset lock estimated fees, and misc ([#1993](https://github.com/dashpay/platform/issues/1993)) +* **strategy-tests:** key ids for new identities with extra keys were not calculated properly ([#1991](https://github.com/dashpay/platform/issues/1991)) +* **strategy-tests:** transfer keys were being disabled ([#1995](https://github.com/dashpay/platform/issues/1995)) +* voting test + + +### Miscellaneous Chores + +* chose capable identities for random documents +* **dapi:** enable logger for reconnectable stream ([#1986](https://github.com/dashpay/platform/issues/1986)) + + +### Build System + +* update tenderdash to 1.1.0-dev.1 ([#1985](https://github.com/dashpay/platform/issues/1985)) +* update tenderdash to 1.1.0-dev.2 ([#1996](https://github.com/dashpay/platform/issues/1996)) + ## [1.0.0-beta.4](https://github.com/dashpay/platform/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2024-07-19) diff --git a/Cargo.lock b/Cargo.lock index d65231292ff..9cb55d9201d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -765,7 +765,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check-features" -version = "0.1.0-beta.4" +version = "0.1.0-rc.1" dependencies = [ "toml", ] @@ -1131,7 +1131,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -1147,7 +1147,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "dapi-grpc", "heck 0.5.0", @@ -1192,7 +1192,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "arc-swap", "async-trait", @@ -1292,7 +1292,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "platform-value", "platform-version", @@ -1302,7 +1302,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1396,7 +1396,7 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dpns-contract" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "platform-value", "platform-version", @@ -1406,7 +1406,7 @@ dependencies = [ [[package]] name = "dpp" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "anyhow", "assert_matches", @@ -1458,7 +1458,7 @@ dependencies = [ [[package]] name = "drive" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "arc-swap", "base64 0.22.1", @@ -1497,7 +1497,7 @@ dependencies = [ [[package]] name = "drive-abci" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "arc-swap", "assert_matches", @@ -1552,7 +1552,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "bincode", "dapi-grpc", @@ -1766,7 +1766,7 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "feature-flags-contract" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "platform-value", "platform-version", @@ -2682,7 +2682,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "assert_matches", "json-patch", @@ -2849,7 +2849,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "platform-value", "platform-version", @@ -3407,7 +3407,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platform-serialization" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "bincode", "platform-version", @@ -3415,7 +3415,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "proc-macro2", "quote", @@ -3425,7 +3425,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "base64 0.22.1", "bincode", @@ -3446,7 +3446,7 @@ dependencies = [ [[package]] name = "platform-value-convertible" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "quote", "syn 2.0.71", @@ -3454,7 +3454,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "bincode", "grovedb-version", @@ -3465,7 +3465,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "proc-macro2", "quote", @@ -4075,7 +4075,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "backon", "chrono", @@ -4555,7 +4555,7 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "simple-signer" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "base64 0.22.1", "bincode", @@ -4646,7 +4646,7 @@ dependencies = [ [[package]] name = "strategy-tests" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "bincode", "dpp", @@ -5688,7 +5688,7 @@ checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" [[package]] name = "wasm-dpp" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "anyhow", "async-trait", @@ -5961,7 +5961,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" dependencies = [ "num_enum", "platform-value", diff --git a/package.json b/package.json index 3d6abf4d6e8..465581b8d41 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/platform", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "private": true, "scripts": { "setup": "yarn install && yarn run build && yarn run configure", diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index 137dd710e04..c376eee6155 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/bench-suite", "private": true, - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Dash Platform benchmark tool", "scripts": { "bench": "node ./bin/bench.js", diff --git a/packages/check-features/Cargo.toml b/packages/check-features/Cargo.toml index 943cf9d5f38..405dc152663 100644 --- a/packages/check-features/Cargo.toml +++ b/packages/check-features/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "check-features" -version = "0.1.0-beta.4" +version = "0.1.0-rc.1" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/packages/dapi-grpc/Cargo.toml b/packages/dapi-grpc/Cargo.toml index d68dc8d691b..450427bfd8a 100644 --- a/packages/dapi-grpc/Cargo.toml +++ b/packages/dapi-grpc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc" description = "GRPC client for Dash Platform" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" authors = [ "Samuel Westrich ", "Igor Markin ", diff --git a/packages/dapi-grpc/package.json b/packages/dapi-grpc/package.json index 1bbbd2d222d..a2643a65c51 100644 --- a/packages/dapi-grpc/package.json +++ b/packages/dapi-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-grpc", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "DAPI GRPC definition file and generated clients", "browser": "browser.js", "main": "node.js", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index 742637b2969..3894fd8bcfa 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/dapi", "private": true, - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "A decentralized API for the Dash network", "scripts": { "api": "node scripts/api.js", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index 2550ad004ec..b779735e5f2 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dash-spv", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Repository containing SPV functions used by @dashevo", "main": "index.js", "scripts": { diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 53c6b0b19e3..82d959525a1 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -1,6 +1,6 @@ { "name": "dashmate", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Distribution package for Dash node installation", "scripts": { "lint": "eslint .", diff --git a/packages/dashpay-contract/Cargo.toml b/packages/dashpay-contract/Cargo.toml index ff115fa018f..79e1c30479e 100644 --- a/packages/dashpay-contract/Cargo.toml +++ b/packages/dashpay-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dashpay-contract" description = "DashPay data contract schema and tools" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dashpay-contract/package.json b/packages/dashpay-contract/package.json index ebbef55a2e6..31efa0cf7b3 100644 --- a/packages/dashpay-contract/package.json +++ b/packages/dashpay-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dashpay-contract", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Reference contract of the DashPay DPA on Dash Evolution", "scripts": { "lint": "eslint .", diff --git a/packages/data-contracts/Cargo.toml b/packages/data-contracts/Cargo.toml index e53453cedae..0ba77616d2c 100644 --- a/packages/data-contracts/Cargo.toml +++ b/packages/data-contracts/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "data-contracts" description = "Dash Platform system data contracts" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/Cargo.toml b/packages/dpns-contract/Cargo.toml index 53c5199a912..849f2ee6a36 100644 --- a/packages/dpns-contract/Cargo.toml +++ b/packages/dpns-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dpns-contract" description = "DPNS data contract schema and tools" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/package.json b/packages/dpns-contract/package.json index 28bda72f31b..65fec88c47a 100644 --- a/packages/dpns-contract/package.json +++ b/packages/dpns-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dpns-contract", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "A contract and helper scripts for DPNS DApp", "scripts": { "lint": "eslint .", diff --git a/packages/feature-flags-contract/Cargo.toml b/packages/feature-flags-contract/Cargo.toml index f2638ecc24b..68c1e807aeb 100644 --- a/packages/feature-flags-contract/Cargo.toml +++ b/packages/feature-flags-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "feature-flags-contract" description = "Feature flags data contract schema and tools" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/feature-flags-contract/package.json b/packages/feature-flags-contract/package.json index 1667a3c604d..dd606a3099c 100644 --- a/packages/feature-flags-contract/package.json +++ b/packages/feature-flags-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/feature-flags-contract", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Data Contract to store Dash Platform feature flags", "scripts": { "build": "", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index 64c336a1b9e..00733bfd53b 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-client", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Client library used to access Dash DAPI endpoints", "main": "lib/index.js", "contributors": [ diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index 05a72f2ae4e..86e1eca704a 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -1,6 +1,6 @@ { "name": "dash", - "version": "4.0.0-beta.4", + "version": "4.0.0-rc.1", "description": "Dash library for JavaScript/TypeScript ecosystem (Wallet, DAPI, Primitives, BLS, ...)", "main": "build/index.js", "unpkg": "dist/dash.min.js", diff --git a/packages/js-grpc-common/package.json b/packages/js-grpc-common/package.json index b9f1032e291..674718af52a 100644 --- a/packages/js-grpc-common/package.json +++ b/packages/js-grpc-common/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/grpc-common", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Common GRPC library", "main": "index.js", "scripts": { diff --git a/packages/masternode-reward-shares-contract/Cargo.toml b/packages/masternode-reward-shares-contract/Cargo.toml index 6b0e84ae0b4..c0f1c2e2b54 100644 --- a/packages/masternode-reward-shares-contract/Cargo.toml +++ b/packages/masternode-reward-shares-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "masternode-reward-shares-contract" description = "Masternode reward shares data contract schema and tools" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/masternode-reward-shares-contract/package.json b/packages/masternode-reward-shares-contract/package.json index b1220359c09..3b296c83f7f 100644 --- a/packages/masternode-reward-shares-contract/package.json +++ b/packages/masternode-reward-shares-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/masternode-reward-shares-contract", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "A contract and helper scripts for reward sharing", "scripts": { "lint": "eslint .", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index b57181351b9..f97bc5b8c97 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/platform-test-suite", "private": true, - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Dash Network end-to-end tests", "scripts": { "test": "yarn exec bin/test.sh", diff --git a/packages/rs-dapi-client/Cargo.toml b/packages/rs-dapi-client/Cargo.toml index 48a67903085..4b8a58fb769 100644 --- a/packages/rs-dapi-client/Cargo.toml +++ b/packages/rs-dapi-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rs-dapi-client" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" [features] diff --git a/packages/rs-dapi-grpc-macros/Cargo.toml b/packages/rs-dapi-grpc-macros/Cargo.toml index 488777c30f6..1b7570df5d1 100644 --- a/packages/rs-dapi-grpc-macros/Cargo.toml +++ b/packages/rs-dapi-grpc-macros/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc-macros" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" description = "Macros used by dapi-grpc. Internal use only." diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 7962133e18b..065944cb17d 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dpp" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 559a9d2acd0..7dd74477ee8 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-abci" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index b3721d13cd3..d7811c87e2d 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-proof-verifier" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index a885a286f6b..84759523176 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "drive" description = "Dash drive built on top of GroveDB" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-json-schema-compatibility-validator/Cargo.toml b/packages/rs-json-schema-compatibility-validator/Cargo.toml index 48a54356a41..7c2170a3c0c 100644 --- a/packages/rs-json-schema-compatibility-validator/Cargo.toml +++ b/packages/rs-json-schema-compatibility-validator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-schema-compatibility-validator" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-platform-serialization-derive/Cargo.toml b/packages/rs-platform-serialization-derive/Cargo.toml index 292ccd691cd..47ce2ddeb1b 100644 --- a/packages/rs-platform-serialization-derive/Cargo.toml +++ b/packages/rs-platform-serialization-derive/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization-derive" authors = ["Samuel Westrich "] description = "Bincode serialization and deserialization derivations" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index f0a20838a40..49c0b68fd8e 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization" authors = ["Samuel Westrich "] description = "Bincode based serialization and deserialization" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value-convertible/Cargo.toml b/packages/rs-platform-value-convertible/Cargo.toml index 75460a391de..4b02faea7f8 100644 --- a/packages/rs-platform-value-convertible/Cargo.toml +++ b/packages/rs-platform-value-convertible/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value-convertible" authors = ["Samuel Westrich "] description = "Convertion to and from platform values" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index d131d0444cc..b80f846a074 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value" authors = ["Samuel Westrich "] description = "A simple value module" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 5aa0b8bbca6..5fc2a4f2cb6 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-version" authors = ["Samuel Westrich "] description = "Versioning library for Platform" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-versioning/Cargo.toml b/packages/rs-platform-versioning/Cargo.toml index a4cb3d43556..463b930a4ed 100644 --- a/packages/rs-platform-versioning/Cargo.toml +++ b/packages/rs-platform-versioning/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-versioning" authors = ["Samuel Westrich "] description = "Version derivation" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index f8a66b942d8..1cba0cc54e6 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dash-sdk" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" [dependencies] diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index dcdf735c72a..ccfcb33d4e5 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-signer" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index 2804305a72e..5a2f44cbe2d 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "strategy-tests" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index 472c4eb6aa1..d7acd5b8353 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-lib", - "version": "8.0.0-beta.4", + "version": "8.0.0-rc.1", "description": "Light wallet library for Dash", "main": "src/index.js", "unpkg": "dist/wallet-lib.min.js", diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index fbb8c945dc9..da8a4ec1da6 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-dpp" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" authors = ["Anton Suprunchuk "] diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index 3d0f606e6e5..ca183c4d560 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "The JavaScript implementation of the Dash Platform Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/withdrawals-contract/Cargo.toml b/packages/withdrawals-contract/Cargo.toml index 2e57768fddc..6b517033b14 100644 --- a/packages/withdrawals-contract/Cargo.toml +++ b/packages/withdrawals-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "withdrawals-contract" description = "Witdrawals data contract schema and tools" -version = "1.0.0-beta.4" +version = "1.0.0-rc.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/withdrawals-contract/package.json b/packages/withdrawals-contract/package.json index 628ad593eaa..6674045025b 100644 --- a/packages/withdrawals-contract/package.json +++ b/packages/withdrawals-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/withdrawals-contract", - "version": "1.0.0-beta.4", + "version": "1.0.0-rc.1", "description": "Data Contract to manipulate and track withdrawals", "scripts": { "build": "", From 799fd04083510cbe039b635e36c4b045c43fd4d9 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Thu, 25 Jul 2024 03:22:02 +0700 Subject: [PATCH 15/37] chore(dashmate): update genesis config to the latest testnet (#1998) --- .../dashmate/configs/defaults/getTestnetConfigFactory.js | 2 +- .../dashmate/configs/getConfigFileMigrationsFactory.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/dashmate/configs/defaults/getTestnetConfigFactory.js b/packages/dashmate/configs/defaults/getTestnetConfigFactory.js index 10bd2f2bab3..a56fad33953 100644 --- a/packages/dashmate/configs/defaults/getTestnetConfigFactory.js +++ b/packages/dashmate/configs/defaults/getTestnetConfigFactory.js @@ -113,7 +113,7 @@ export default function getTestnetConfigFactory(homeDir, getBaseConfig) { }, genesis: { genesis_time: '2024-07-17T17:15:00.000Z', - chain_id: 'dash-testnet-47', + chain_id: 'dash-testnet-48', validator_quorum_type: 6, }, }, diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 092debe3db9..213dab97478 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -720,6 +720,15 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) }); return configFile; }, + '1.0.0-rc.2': (configFile) => { + Object.entries(configFile.configs) + .forEach(([, options]) => { + if (options.network === NETWORK_TESTNET) { + options.platform.drive.tenderdash.genesis = testnet.get('platform.drive.tenderdash.genesis'); + } + }); + return configFile; + }, }; } From 5eb3e8cc1cb60657684d65d8af1513f25096f29f Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Thu, 25 Jul 2024 04:52:38 +0700 Subject: [PATCH 16/37] fix: sdk should ignore transient fields when verifying proofs (#2000) --- .../is_equal_ignoring_timestamps/v0/mod.rs | 27 +++++++++++++++++-- .../src/document/document_methods/mod.rs | 1 + packages/rs-dpp/src/document/mod.rs | 4 ++- .../state_transitions/documents_batch/mod.rs | 12 ++++++++- .../v0/mod.rs | 14 ++++++++++ 5 files changed, 54 insertions(+), 4 deletions(-) diff --git a/packages/rs-dpp/src/document/document_methods/is_equal_ignoring_timestamps/v0/mod.rs b/packages/rs-dpp/src/document/document_methods/is_equal_ignoring_timestamps/v0/mod.rs index 660c26fb643..0b9c65f7bb7 100644 --- a/packages/rs-dpp/src/document/document_methods/is_equal_ignoring_timestamps/v0/mod.rs +++ b/packages/rs-dpp/src/document/document_methods/is_equal_ignoring_timestamps/v0/mod.rs @@ -1,5 +1,7 @@ use crate::document::document_methods::DocumentGetRawForDocumentTypeV0; use crate::document::DocumentV0Getters; +use platform_value::Value; +use std::collections::BTreeMap; pub trait DocumentIsEqualIgnoringTimestampsV0: DocumentV0Getters + DocumentGetRawForDocumentTypeV0 @@ -11,10 +13,31 @@ pub trait DocumentIsEqualIgnoringTimestampsV0: /// created_at/updated_at /// created_at_block_height/updated_at_block_height /// created_at_core_block_height/updated_at_core_block_height - fn is_equal_ignoring_time_based_fields_v0(&self, rhs: &Self) -> bool { + fn is_equal_ignoring_time_based_fields_v0( + &self, + rhs: &Self, + also_ignore_fields: Option>, + ) -> bool { + fn filtered_properties<'a>( + properties: &'a BTreeMap, + ignore_fields: &Vec<&str>, + ) -> BTreeMap<&'a String, &'a Value> { + properties + .iter() + .filter(|(key, _)| !ignore_fields.contains(&key.as_str())) + .collect() + } + + let properties_equal = if let Some(fields) = &also_ignore_fields { + filtered_properties(self.properties(), fields) + == filtered_properties(rhs.properties(), fields) + } else { + self.properties() == rhs.properties() + }; + self.id() == rhs.id() && self.owner_id() == rhs.owner_id() - && self.properties() == rhs.properties() + && properties_equal && self.revision() == rhs.revision() } } diff --git a/packages/rs-dpp/src/document/document_methods/mod.rs b/packages/rs-dpp/src/document/document_methods/mod.rs index 887d7f26421..6b3f779dde3 100644 --- a/packages/rs-dpp/src/document/document_methods/mod.rs +++ b/packages/rs-dpp/src/document/document_methods/mod.rs @@ -52,6 +52,7 @@ pub trait DocumentMethodsV0 { fn is_equal_ignoring_time_based_fields( &self, rhs: &Self, + also_ignore_fields: Option>, platform_version: &PlatformVersion, ) -> Result; } diff --git a/packages/rs-dpp/src/document/mod.rs b/packages/rs-dpp/src/document/mod.rs index 1fe74ad8ae6..29d2ec24a32 100644 --- a/packages/rs-dpp/src/document/mod.rs +++ b/packages/rs-dpp/src/document/mod.rs @@ -183,6 +183,7 @@ impl DocumentMethodsV0 for Document { fn is_equal_ignoring_time_based_fields( &self, rhs: &Self, + also_ignore_fields: Option>, platform_version: &PlatformVersion, ) -> Result { match (self, rhs) { @@ -193,7 +194,8 @@ impl DocumentMethodsV0 for Document { .document_method_versions .is_equal_ignoring_timestamps { - 0 => Ok(document_v0.is_equal_ignoring_time_based_fields_v0(rhs_v0)), + 0 => Ok(document_v0 + .is_equal_ignoring_time_based_fields_v0(rhs_v0, also_ignore_fields)), version => Err(ProtocolError::UnknownVersionMismatch { method: "DocumentMethodV0::is_equal_ignoring_time_based_fields".to_string(), known_versions: vec![0], diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs index b957d437c89..12fa29bb97e 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/documents_batch/mod.rs @@ -5833,10 +5833,20 @@ mod tests { .expect("expected to get back documents") .documents_owned(); + let transient_fields = domain + .transient_fields() + .iter() + .map(|a| a.as_str()) + .collect(); + assert!(documents .get(0) .expect("expected a document") - .is_equal_ignoring_time_based_fields(&document_3, platform_version) + .is_equal_ignoring_time_based_fields( + &document_3, + Some(transient_fields), + platform_version + ) .expect("expected to run is equal")); let drive_query = DriveDocumentQuery { diff --git a/packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs b/packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs index ace9bc4b353..09af028c47d 100644 --- a/packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs @@ -165,8 +165,15 @@ impl Drive { platform_version, )?; + let transient_fields = document_type + .transient_fields() + .iter() + .map(|a| a.as_str()) + .collect(); + if !document.is_equal_ignoring_time_based_fields( &expected_document, + Some(transient_fields), platform_version, )? { return Err(Error::Proof(ProofError::IncorrectProof(format!("proof of state transition execution did not contain expected document (time fields were not checked) after create with id {}", create_transition.base().id())))); @@ -192,8 +199,15 @@ impl Drive { platform_version, )?; + let transient_fields = document_type + .transient_fields() + .iter() + .map(|a| a.as_str()) + .collect(); + if !document.is_equal_ignoring_time_based_fields( &expected_document, + Some(transient_fields), platform_version, )? { return Err(Error::Proof(ProofError::IncorrectProof(format!("proof of state transition execution did not contain expected document (time fields were not checked) after replace with id {}", replace_transition.base().id())))); From 429c0093313d278cfafe0e16981dc119730dd0e5 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Thu, 25 Jul 2024 05:30:54 +0700 Subject: [PATCH 17/37] fix: dpns js sdk fix for identity record rename (#2001) Co-authored-by: thephez --- .../js-dash-sdk/docs/platform/names/register.md | 5 ++--- .../docs/platform/names/resolveByRecord.md | 4 ++-- .../Client/Platform/methods/names/register.spec.ts | 10 +++++----- .../SDK/Client/Platform/methods/names/register.ts | 14 ++++---------- .../Platform/methods/names/resolveByRecord.ts | 2 +- 5 files changed, 14 insertions(+), 21 deletions(-) diff --git a/packages/js-dash-sdk/docs/platform/names/register.md b/packages/js-dash-sdk/docs/platform/names/register.md index c7171b8bfb9..2f99b536fe8 100644 --- a/packages/js-dash-sdk/docs/platform/names/register.md +++ b/packages/js-dash-sdk/docs/platform/names/register.md @@ -7,11 +7,10 @@ Parameters: |----------------------------------|-----------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **name** | String | yes | An alphanumeric (1-63 character) value used for human-identification (can contain `-` but not as the first or last character). If a name with no parent domain is entered, '.dash' is used. | | **records** | Object | yes | records object having only one of the following items | -| **records.dashUniqueIdentityId** | String | no | Unique Identity ID for this name record | -| **records.dashAliasIdentityId** | String | no | Used to signify that this name is the alias for another id | +| **records.identity** | String | yes | Identity ID for this name record | | **identity** | Identity | yes | A valid [registered identity](../identities/register.md) | -**Example**: `await client.platform.names.register('alice', { dashUniqueIdentityId: identity.getId() }, identity)` +**Example**: `await client.platform.names.register('alice', { identity: identity.getId() }, identity)` Returns: the created domain document diff --git a/packages/js-dash-sdk/docs/platform/names/resolveByRecord.md b/packages/js-dash-sdk/docs/platform/names/resolveByRecord.md index af747c180b4..bb75a03f10d 100644 --- a/packages/js-dash-sdk/docs/platform/names/resolveByRecord.md +++ b/packages/js-dash-sdk/docs/platform/names/resolveByRecord.md @@ -5,7 +5,7 @@ Parameters: | parameters | type | required | Description | |------------|-----------|----------------|----------------------------------------------------------------------| -| **record** | String | yes | Type of the record (`dashUniqueIdentityId` or `dashAliasIdentityId`) | +| **record** | String | yes | Type of the record (`identity`) | | **value** | String | yes | Identifier value for the record | **Example**: @@ -13,7 +13,7 @@ Parameters: This example will describe how to resolve names by the dash unique identity id. ```js const identityId = '3ge4yjGinQDhxh2aVpyLTQaoka45BkijkoybfAkDepoN'; -const document = await client.platform.names.resolveByRecord('dashUniqueIdentityId', identityId); +const document = await client.platform.names.resolveByRecord('identity', identityId); ``` Returns: array of ExtendedDocument. diff --git a/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/register.spec.ts b/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/register.spec.ts index 363a60bcfdb..a0648c820d2 100644 --- a/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/register.spec.ts +++ b/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/register.spec.ts @@ -53,7 +53,7 @@ describe('Platform', () => { identityMock.getId.returns(identityId); await register.call(platformMock, 'Dash', { - dashUniqueIdentityId: identityId, + identity: identityId, }, identityMock); expect(platformMock.documents.create.getCall(0).args[0]).to.deep.equal('dpns.preorder'); @@ -72,7 +72,7 @@ describe('Platform', () => { normalizedParentDomainName: '', preorderSalt: Buffer.alloc(32), records: { - dashUniqueIdentityId: identityId, + identity: identityId, }, subdomainRules: { allowSubdomains: true, @@ -86,7 +86,7 @@ describe('Platform', () => { identityMock.getId.returns(identityId); await register.call(platformMock, 'User.dash', { - dashAliasIdentityId: identityId, + identity: identityId, }, identityMock); expect(platformMock.documents.create.getCall(0).args[0]).to.deep.equal('dpns.preorder'); @@ -105,7 +105,7 @@ describe('Platform', () => { normalizedParentDomainName: 'dash', preorderSalt: Buffer.alloc(32), records: { - dashAliasIdentityId: identityId, + identity: identityId, }, subdomainRules: { allowSubdomains: false, @@ -119,7 +119,7 @@ describe('Platform', () => { try { await register.call(platformMock, 'user.dash', { - dashUniqueIdentityId: await generateRandomIdentifier(), + identity: await generateRandomIdentifier(), }, identityMock); } catch (e) { expect(e.message).to.equal('DPNS is required to register a new name.'); diff --git a/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/register.ts b/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/register.ts index 86b07270d43..07f6576e782 100644 --- a/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/register.ts +++ b/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/register.ts @@ -11,8 +11,7 @@ const { hash } = require('@dashevo/wasm-dpp/lib/utils/hash'); * @param {Platform} this - bound instance class * @param {string} name - name * @param {Object} records - records object having only one of the following items - * @param {string} [records.dashUniqueIdentityId] - * @param {string} [records.dashAliasIdentityId] + * @param {string} [records.identity] * @param identity - identity * * @returns registered domain document @@ -21,8 +20,7 @@ export async function register( this: Platform, name: string, records: { - dashUniqueIdentityId?: Identifier | string, - dashAliasIdentityId?: Identifier | string, + identity?: Identifier | string, }, identity: { getId(): Identifier; @@ -31,12 +29,8 @@ export async function register( ): Promise { await this.initialize(); - if (records.dashUniqueIdentityId) { - records.dashUniqueIdentityId = Identifier.from(records.dashUniqueIdentityId); - } - - if (records.dashAliasIdentityId) { - records.dashAliasIdentityId = Identifier.from(records.dashAliasIdentityId); + if (records.identity) { + records.identity = Identifier.from(records.identity); } const nameLabels = name.split('.'); diff --git a/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/resolveByRecord.ts b/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/resolveByRecord.ts index 3a1a765a59f..0bcd4b2a75c 100644 --- a/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/resolveByRecord.ts +++ b/packages/js-dash-sdk/src/SDK/Client/Platform/methods/names/resolveByRecord.ts @@ -9,7 +9,7 @@ import { Platform } from '../../Platform'; export async function resolveByRecord(this: Platform, record: string, value: any): Promise { await this.initialize(); - if (record === 'dashUniqueIdentityId' || record === 'dashAliasIdentityId') { + if (record === 'identity') { value = Identifier.from(value); } From ca7f2e0ecd868bba5ef23569d706ec30eef64914 Mon Sep 17 00:00:00 2001 From: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:49:45 +0900 Subject: [PATCH 18/37] fix: two error messages had typos (#2005) --- packages/rs-drive/src/error/document.rs | 2 +- packages/rs-drive/src/error/identity.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rs-drive/src/error/document.rs b/packages/rs-drive/src/error/document.rs index e9062f60867..4b1408226f5 100644 --- a/packages/rs-drive/src/error/document.rs +++ b/packages/rs-drive/src/error/document.rs @@ -11,6 +11,6 @@ pub enum DocumentError { #[error("invalid contract identifier size error")] InvalidContractIdSize(), /// Error - #[error("contact with specified identifier is not found")] + #[error("contract with specified identifier is not found")] DataContractNotFound, } diff --git a/packages/rs-drive/src/error/identity.rs b/packages/rs-drive/src/error/identity.rs index 342c8291659..c1a888b6dad 100644 --- a/packages/rs-drive/src/error/identity.rs +++ b/packages/rs-drive/src/error/identity.rs @@ -58,6 +58,6 @@ pub enum IdentityError { IdentityKeyBoundsError(&'static str), /// Identity Key Data Contract Not Found - #[error("contact with specified identifier is not found for identity key data contract")] + #[error("contract with specified identifier is not found for identity key data contract")] IdentityKeyDataContractNotFound, } From 5db7c7d49b66a515f75890f3cb0288f0b216146c Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Thu, 25 Jul 2024 17:34:55 +0900 Subject: [PATCH 19/37] fix(strategy-tests): document delete transitions were not selecting identity correctly --- packages/strategy-tests/src/lib.rs | 31 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/packages/strategy-tests/src/lib.rs b/packages/strategy-tests/src/lib.rs index bb5415e12b5..8867e1fc28c 100644 --- a/packages/strategy-tests/src/lib.rs +++ b/packages/strategy-tests/src/lib.rs @@ -891,19 +891,14 @@ impl Strategy { //todo: fix this into a search key request for the following //let search_key_request = BTreeMap::from([(Purpose::AUTHENTICATION as u8, BTreeMap::from([(SecurityLevel::HIGH as u8, AllKeysOfKindRequest)]))]); - let request = IdentityKeysRequest { - identity_id: document.owner_id().to_buffer(), - request_type: KeyRequestType::SpecificKeys(vec![1]), - limit: Some(1), - offset: None, - }; - let identity = - identity_fetch_callback(request.identity_id.into(), Some(request)); + let identity_id = document.owner_id(); + let identity = current_identities + .iter() + .find(|&identity| identity.id() == identity_id) + .expect("Expected to find the identity in current_identities"); let identity_contract_nonce = contract_nonce_counter - .get_mut(&(identity.id, contract.id())) - .expect( - "the identity should already have a nonce for that contract", - ); + .entry((identity.id(), contract.id())) + .or_default(); *identity_contract_nonce += 1; let document_delete_transition: DocumentDeleteTransition = @@ -920,7 +915,7 @@ impl Strategy { let document_batch_transition: DocumentsBatchTransition = DocumentsBatchTransitionV0 { - owner_id: identity.id, + owner_id: identity.id(), transitions: vec![document_delete_transition.into()], user_fee_increase: 0, signature_public_key_id: 1, @@ -932,10 +927,12 @@ impl Strategy { document_batch_transition.into(); let identity_public_key = identity - .loaded_public_keys - .values() - .next() - .expect("expected a key"); + .get_first_public_key_matching( + Purpose::AUTHENTICATION, + HashSet::from([SecurityLevel::CRITICAL]), + HashSet::from([KeyType::ECDSA_SECP256K1, KeyType::BLS12_381]), + ) + .expect("expected to get a signing key"); document_batch_transition .sign_external( From 2025440be78525255aec73b981ca737cd4c3306c Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:41:36 +0200 Subject: [PATCH 20/37] build: update to tenderdash 1.1.0-dev.3, rs-tenderdash-abci 1.1.0-dev.1 (#2008) --- Cargo.lock | 91 +++++++++++++++++-- packages/dapi-grpc/Cargo.toml | 2 +- .../configs/defaults/getBaseConfigFactory.js | 2 +- .../configs/getConfigFileMigrationsFactory.js | 3 + packages/rs-drive-abci/Cargo.toml | 2 +- .../initialization/init_chain/v0/mod.rs | 1 + packages/rs-drive-proof-verifier/Cargo.toml | 2 +- 7 files changed, 90 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9cb55d9201d..16506639365 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -138,6 +138,15 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "arc-swap" version = "1.7.1" @@ -1346,6 +1355,17 @@ dependencies = [ "serde", ] +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + [[package]] name = "derive_more" version = "0.99.18" @@ -1382,6 +1402,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -2813,6 +2844,12 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + [[package]] name = "log" version = "0.4.22" @@ -4547,6 +4584,12 @@ dependencies = [ "rand_core", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "simdutf8" version = "0.1.4" @@ -4833,8 +4876,8 @@ dependencies = [ [[package]] name = "tenderdash-abci" -version = "1.0.0" -source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.0.0#1f29dbc549dc1abe5de295e55728576b1a0c8a6b" +version = "1.1.0-dev.1" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0-dev.1#04d724fb3160f0568b14f447e961d736c9c95706" dependencies = [ "bytes", "futures", @@ -4855,8 +4898,8 @@ dependencies = [ [[package]] name = "tenderdash-proto" -version = "1.0.0" -source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.0.0#1f29dbc549dc1abe5de295e55728576b1a0c8a6b" +version = "1.1.0-dev.1" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0-dev.1#04d724fb3160f0568b14f447e961d736c9c95706" dependencies = [ "bytes", "chrono", @@ -4865,7 +4908,6 @@ dependencies = [ "num-derive", "num-traits", "prost 0.12.6", - "prost-types 0.12.6", "serde", "subtle-encoding", "tenderdash-proto-compiler", @@ -4875,8 +4917,8 @@ dependencies = [ [[package]] name = "tenderdash-proto-compiler" -version = "1.0.0" -source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.0.0#1f29dbc549dc1abe5de295e55728576b1a0c8a6b" +version = "1.1.0-dev.1" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0-dev.1#04d724fb3160f0568b14f447e961d736c9c95706" dependencies = [ "fs_extra", "prost-build 0.12.6", @@ -4885,7 +4927,7 @@ dependencies = [ "tonic-build 0.11.0", "ureq", "walkdir", - "zip", + "zip 2.1.5", ] [[package]] @@ -6033,13 +6075,44 @@ dependencies = [ "zstd", ] +[[package]] +name = "zip" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.2.6", + "memchr", + "thiserror", + "zopfli", +] + [[package]] name = "zip-extensions" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cecf62554c4ff96bce01a7ef123d160c3ffe9180638820f8b4d545c65b221b8c" dependencies = [ - "zip", + "zip 0.6.6", +] + +[[package]] +name = "zopfli" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +dependencies = [ + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", ] [[package]] diff --git a/packages/dapi-grpc/Cargo.toml b/packages/dapi-grpc/Cargo.toml index 450427bfd8a..f2939529c6b 100644 --- a/packages/dapi-grpc/Cargo.toml +++ b/packages/dapi-grpc/Cargo.toml @@ -42,7 +42,7 @@ tonic = { version = "0.11", features = [ serde = { version = "1.0.197", optional = true, features = ["derive"] } serde_bytes = { version = "0.11.12", optional = true } serde_json = { version = "1.0", optional = true } -tenderdash-proto = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.0.0", tag = "v1.0.0", default-features = false, features = [ +tenderdash-proto = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0-dev.1", tag = "v1.1.0-dev.1", default-features = false, features = [ "grpc", ] } dapi-grpc-macros = { path = "../rs-dapi-grpc-macros" } diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index e0c27b63fc0..c40ad94a005 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -301,7 +301,7 @@ export default function getBaseConfigFactory(homeDir) { tenderdash: { mode: 'full', docker: { - image: 'dashpay/tenderdash:1.1.0-dev.2', + image: 'dashpay/tenderdash:1.1.0-dev.3', }, p2p: { host: '0.0.0.0', diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 213dab97478..ad24bcb244f 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -726,6 +726,9 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) if (options.network === NETWORK_TESTNET) { options.platform.drive.tenderdash.genesis = testnet.get('platform.drive.tenderdash.genesis'); } + + // Update tenderdash image + options.platform.drive.tenderdash.docker.image = base.get('platform.drive.tenderdash.docker.image'); }); return configFile; }, diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 7dd74477ee8..0e7e9691533 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -50,7 +50,7 @@ tracing-subscriber = { version = "0.3.16", default-features = false, features = "tracing-log", ], optional = false } atty = { version = "0.2.14", optional = false } -tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.0.0", tag = "v1.0.0", features = [ +tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0-dev.1", tag = "v1.1.0-dev.1", features = [ "grpc", ] } lazy_static = "1.4.0" diff --git a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs index 6b1c26a2e64..90c4d7a179d 100644 --- a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs @@ -132,6 +132,7 @@ where validator_set_update: Some(validator_set), next_core_chain_lock_update: None, initial_core_height: core_height, // we send back the core height when the fork happens + genesis_time: None, }) } } diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index d7811c87e2d..ccd7cfa7b15 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 = [ bincode = { version = "2.0.0-rc.3", features = ["serde"], optional = true } platform-serialization-derive = { path = "../rs-platform-serialization-derive", optional = true } platform-serialization = { path = "../rs-platform-serialization", optional = true } -tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.0.0", tag = "v1.0.0", features = [ +tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0-dev.1", tag = "v1.1.0-dev.1", features = [ "crypto", ], default-features = false } tracing = { version = "0.1.37" } From 45825c199620beb924189efdf517b69de59a43ca Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Thu, 25 Jul 2024 21:37:54 +0700 Subject: [PATCH 21/37] fix(platform): core info is lost between genesis and first block (#2004) --- .../update_masternode_list/v0/mod.rs | 53 +++++++++---------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_list/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_list/v0/mod.rs index f60a9159944..e02de6a933e 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_list/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/core_based_updates/update_masternode_list/v0/mod.rs @@ -58,36 +58,33 @@ where core_block_height, block_platform_state.last_committed_core_height() ); - //todo: there's a weird condition that can happen if we are not on init chain, but we are - // in the genesis and we are not on round 0, and the core height changed - if block_platform_state.last_committed_block_info().is_some() || is_init_chain { - let update_state_masternode_list_outcome::v0::UpdateStateMasternodeListOutcome { - masternode_list_diff, - removed_masternodes, - } = self.update_state_masternode_list_v0( - block_platform_state, - core_block_height, - is_init_chain, - )?; - self.update_masternode_identities( - masternode_list_diff, - &removed_masternodes, - block_info, - platform_state, - transaction, - platform_version, - )?; + let update_state_masternode_list_outcome::v0::UpdateStateMasternodeListOutcome { + masternode_list_diff, + removed_masternodes, + } = self.update_state_masternode_list_v0( + block_platform_state, + core_block_height, + is_init_chain, + )?; - if !removed_masternodes.is_empty() { - self.drive.remove_validators_proposed_app_versions( - removed_masternodes - .into_keys() - .map(|pro_tx_hash| pro_tx_hash.into()), - Some(transaction), - &platform_version.drive, - )?; - } + self.update_masternode_identities( + masternode_list_diff, + &removed_masternodes, + block_info, + platform_state, + transaction, + platform_version, + )?; + + if !removed_masternodes.is_empty() { + self.drive.remove_validators_proposed_app_versions( + removed_masternodes + .into_keys() + .map(|pro_tx_hash| pro_tx_hash.into()), + Some(transaction), + &platform_version.drive, + )?; } Ok(()) From 77a2bffb19b4980ee57d2177bfb86e84febe4fd7 Mon Sep 17 00:00:00 2001 From: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:33:51 +0900 Subject: [PATCH 22/37] feat: specify transition names within documents batch (#2007) Co-authored-by: Quantum Explorer --- packages/rs-dpp/src/state_transition/mod.rs | 40 ++++++++++++++----- .../process_raw_state_transitions/v0/mod.rs | 8 +++- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/packages/rs-dpp/src/state_transition/mod.rs b/packages/rs-dpp/src/state_transition/mod.rs index def498b8610..879bb6e8713 100644 --- a/packages/rs-dpp/src/state_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/mod.rs @@ -1,4 +1,6 @@ use derive_more::From; +use documents_batch_transition::accessors::DocumentsBatchTransitionAccessorsV0; +use documents_batch_transition::document_transition::DocumentTransition; #[cfg(feature = "state-transition-serde-conversion")] use serde::{Deserialize, Serialize}; @@ -343,17 +345,35 @@ impl StateTransition { } /// Returns state transition name - pub fn name(&self) -> &'static str { + pub fn name(&self) -> String { match self { - Self::DataContractCreate(_) => "DataContractCreate", - Self::DataContractUpdate(_) => "DataContractUpdate", - Self::DocumentsBatch(_) => "DocumentsBatch", - Self::IdentityCreate(_) => "IdentityCreate", - Self::IdentityTopUp(_) => "IdentityTopUp", - Self::IdentityCreditWithdrawal(_) => "IdentityCreditWithdrawal", - Self::IdentityUpdate(_) => "IdentityUpdate", - Self::IdentityCreditTransfer(_) => "IdentityCreditTransfer", - Self::MasternodeVote(_) => "MasternodeVote", + Self::DataContractCreate(_) => "DataContractCreate".to_string(), + Self::DataContractUpdate(_) => "DataContractUpdate".to_string(), + Self::DocumentsBatch(documents_batch_transition) => { + let mut document_transition_types = vec![]; + match documents_batch_transition { + DocumentsBatchTransition::V0(documents_batch_transition_v0) => { + for transition in documents_batch_transition_v0.transitions().iter() { + let document_transition_name = match transition { + DocumentTransition::Create(_) => "Create", + DocumentTransition::Replace(_) => "Replace", + DocumentTransition::Delete(_) => "Delete", + DocumentTransition::Transfer(_) => "Transfer", + DocumentTransition::UpdatePrice(_) => "UpdatePrice", + DocumentTransition::Purchase(_) => "Purchase", + }; + document_transition_types.push(document_transition_name); + } + } + } + format!("DocumentsBatch([{}])", document_transition_types.join(", ")) + } + Self::IdentityCreate(_) => "IdentityCreate".to_string(), + Self::IdentityTopUp(_) => "IdentityTopUp".to_string(), + Self::IdentityCreditWithdrawal(_) => "IdentityCreditWithdrawal".to_string(), + Self::IdentityUpdate(_) => "IdentityUpdate".to_string(), + Self::IdentityCreditTransfer(_) => "IdentityCreditTransfer".to_string(), + Self::MasternodeVote(_) => "MasternodeVote".to_string(), } } diff --git a/packages/rs-drive-abci/src/execution/platform_events/state_transition_processing/process_raw_state_transitions/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/state_transition_processing/process_raw_state_transitions/v0/mod.rs index 67330b55392..b2012042c36 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/state_transition_processing/process_raw_state_transitions/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/state_transition_processing/process_raw_state_transitions/v0/mod.rs @@ -113,7 +113,7 @@ where .map(|validation_result| { self.process_validation_result_v0( raw_state_transition, - state_transition_name, + &state_transition_name, validation_result, block_info, transaction, @@ -141,7 +141,11 @@ where StateTransitionExecutionResult::InternalError(_) => 1, }; - state_transition_execution_histogram(elapsed_time, state_transition_name, code); + state_transition_execution_histogram( + elapsed_time, + &state_transition_name, + code, + ); execution_result } From 8b550cd331e4c9d1c0cfed987cc7cac42d3271af Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Fri, 26 Jul 2024 04:08:37 +0700 Subject: [PATCH 23/37] fix(platform)!: genesis state from core block time (#2003) Co-authored-by: Ivan Shumkov --- Cargo.lock | 264 +++++++++--------- .../configs/defaults/getBaseConfigFactory.js | 2 +- .../defaults/getTestnetConfigFactory.js | 3 +- .../configs/getConfigFileMigrationsFactory.js | 11 +- .../local/configureTenderdashTaskFactory.js | 3 - packages/rs-drive-abci/src/error/execution.rs | 12 + .../initialization/init_chain/v0/mod.rs | 15 +- .../initialization/initial_core_height/mod.rs | 11 +- .../initial_core_height/v0/mod.rs | 31 +- packages/rs-drive-abci/src/rpc/core.rs | 20 +- .../tests/strategy_tests/execution.rs | 5 + .../tests/strategy_tests/main.rs | 6 +- .../src/version/drive_abci_versions.rs | 2 +- .../src/version/mocks/v2_test.rs | 2 +- .../src/version/mocks/v3_test.rs | 2 +- .../rs-platform-version/src/version/v1.rs | 2 +- 16 files changed, 222 insertions(+), 169 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 16506639365..3859f459c1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -85,9 +85,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -100,33 +100,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -155,9 +155,9 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -219,7 +219,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -230,7 +230,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -366,7 +366,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -464,7 +464,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.71", + "syn 2.0.72", "which", ] @@ -477,7 +477,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.12.1", "lazy_static", "lazycell", "proc-macro2", @@ -485,7 +485,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -615,7 +615,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "syn_derive", ] @@ -743,9 +743,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" dependencies = [ "jobserver", "libc", @@ -852,9 +852,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.9" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" +checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" dependencies = [ "clap_builder", "clap_derive", @@ -862,9 +862,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.9" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" dependencies = [ "anstream", "anstyle", @@ -874,27 +874,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.8" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -1135,7 +1135,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1161,7 +1161,7 @@ dependencies = [ "dapi-grpc", "heck 0.5.0", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1185,7 +1185,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1196,7 +1196,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1209,7 +1209,7 @@ dependencies = [ "bip37-bloom-filter", "chrono", "ciborium", - "clap 4.5.9", + "clap 4.5.11", "dapi-grpc", "dapi-grpc-macros", "dashcore-rpc", @@ -1363,7 +1363,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1376,7 +1376,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1410,7 +1410,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1538,7 +1538,7 @@ dependencies = [ "bincode", "chrono", "ciborium", - "clap 4.5.9", + "clap 4.5.11", "console-subscriber", "dapi-grpc", "dashcore-rpc", @@ -1678,7 +1678,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1984,7 +1984,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -2457,7 +2457,7 @@ dependencies = [ "http 1.1.0", "hyper 1.4.1", "hyper-util", - "rustls 0.23.11", + "rustls 0.23.12", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -2636,9 +2636,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "iso8601" @@ -2684,9 +2684,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -2787,9 +2787,9 @@ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -2867,9 +2867,9 @@ dependencies = [ [[package]] name = "lz4-sys" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" dependencies = [ "cc", "libc", @@ -2994,13 +2994,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3061,6 +3062,12 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +[[package]] +name = "multimap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" + [[package]] name = "murmur3" version = "0.5.2" @@ -3169,7 +3176,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3245,9 +3252,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -3266,9 +3273,9 @@ checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -3287,7 +3294,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3298,9 +3305,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -3411,7 +3418,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3456,7 +3463,7 @@ version = "1.0.0-rc.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "virtue 0.0.14", ] @@ -3486,7 +3493,7 @@ name = "platform-value-convertible" version = "1.0.0-rc.1" dependencies = [ "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3506,7 +3513,7 @@ version = "1.0.0-rc.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3561,9 +3568,9 @@ checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -3593,15 +3600,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ "predicates-core", "termtree", @@ -3634,7 +3641,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3720,7 +3727,7 @@ dependencies = [ "itertools 0.10.5", "lazy_static", "log", - "multimap", + "multimap 0.8.3", "petgraph", "prettyplease 0.1.25", "prost 0.11.9", @@ -3738,17 +3745,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", - "heck 0.4.1", - "itertools 0.10.5", + "heck 0.5.0", + "itertools 0.12.1", "log", - "multimap", + "multimap 0.10.0", "once_cell", "petgraph", "prettyplease 0.2.20", "prost 0.12.6", "prost-types 0.12.6", "regex", - "syn 2.0.71", + "syn 2.0.72", "tempfile", ] @@ -3772,10 +3779,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3852,7 +3859,7 @@ dependencies = [ "crossbeam-utils", "libc", "once_cell", - "raw-cpuid 11.0.2", + "raw-cpuid 11.1.0", "wasi", "web-sys", "winapi", @@ -3914,9 +3921,9 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.0.2" +version = "11.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd" +checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" dependencies = [ "bitflags 2.6.0", ] @@ -4231,9 +4238,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.11" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4828ea528154ae444e5a642dbb7d5623354030dc9822b83fd9bb79683c7399d0" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "log", "once_cell", @@ -4275,9 +4282,9 @@ checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" -version = "0.102.5" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ "ring", "rustls-pki-types", @@ -4444,7 +4451,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4477,14 +4484,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -4526,7 +4533,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4740,7 +4747,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4753,7 +4760,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4784,9 +4791,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.71" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -4802,7 +4809,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4972,7 +4979,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4996,7 +5003,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "test-case-core", ] @@ -5011,22 +5018,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.62" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.62" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5097,22 +5104,21 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2 0.5.7", "tokio-macros", "tracing", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -5127,13 +5133,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5163,7 +5169,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.11", + "rustls 0.23.12", "rustls-pki-types", "tokio", ] @@ -5207,21 +5213,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "81967dd0dd2c1ab0bc3468bd7caecc32b8a4aa47d0c8c695d8c2b2108168d62c" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.15", + "toml_edit 0.22.17", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db" dependencies = [ "serde", ] @@ -5250,15 +5256,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.15" +version = "0.22.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" +checksum = "8d9f8729f5aea9562aac1cc0441f5d6de3cff1ee0c5d67293eeca5eb36ee7c16" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.16", ] [[package]] @@ -5343,7 +5349,7 @@ dependencies = [ "proc-macro2", "prost-build 0.12.6", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5420,7 +5426,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5557,7 +5563,7 @@ dependencies = [ "flate2", "log", "once_cell", - "rustls 0.23.11", + "rustls 0.23.12", "rustls-pki-types", "url", "webpki-roots", @@ -5683,7 +5689,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -5717,7 +5723,7 @@ checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5984,9 +5990,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c" dependencies = [ "memchr", ] @@ -6046,7 +6052,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index c40ad94a005..bd64d6c802e 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -86,7 +86,7 @@ export default function getBaseConfigFactory(homeDir) { whitelist: [ 'getbestchainlock', 'getblockchaininfo', 'getrawtransaction', 'submitchainlock', 'verifychainlock', 'protxlistdiff', 'quorumlistextended', 'quoruminfo', - 'getassetunlockstatuses', 'sendrawtransaction', 'mnsyncstatus', + 'getassetunlockstatuses', 'sendrawtransaction', 'mnsyncstatus', 'getblockheader', 'getblockhash', ], lowPriority: false, }, diff --git a/packages/dashmate/configs/defaults/getTestnetConfigFactory.js b/packages/dashmate/configs/defaults/getTestnetConfigFactory.js index a56fad33953..477bbae1473 100644 --- a/packages/dashmate/configs/defaults/getTestnetConfigFactory.js +++ b/packages/dashmate/configs/defaults/getTestnetConfigFactory.js @@ -112,8 +112,7 @@ export default function getTestnetConfigFactory(homeDir, getBaseConfig) { port: 36660, }, genesis: { - genesis_time: '2024-07-17T17:15:00.000Z', - chain_id: 'dash-testnet-48', + chain_id: 'dash-testnet-49', validator_quorum_type: 6, }, }, diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index ad24bcb244f..41e15f806fd 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -225,7 +225,7 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) if (options.network === NETWORK_TESTNET) { options.platform.drive.tenderdash.genesis.chain_id = testnet.get('platform.drive.tenderdash.genesis.chain_id'); - options.platform.drive.tenderdash.genesis.genesis_time = testnet.get('platform.drive.tenderdash.genesis.genesis_time'); + options.platform.drive.tenderdash.genesis.genesis_time = '2024-07-17T17:15:00.000Z'; } }); return configFile; @@ -247,7 +247,7 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) if (options.network === NETWORK_TESTNET) { options.platform.drive.tenderdash.genesis.chain_id = testnet.get('platform.drive.tenderdash.genesis.chain_id'); - options.platform.drive.tenderdash.genesis.genesis_time = testnet.get('platform.drive.tenderdash.genesis.genesis_time'); + options.platform.drive.tenderdash.genesis.genesis_time = '2024-07-17T17:15:00.000Z'; options.platform.drive.tenderdash.genesis .initial_core_chain_locked_height = testnet.get('platform.drive.tenderdash.genesis.initial_core_chain_locked_height'); } @@ -345,7 +345,7 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) if (name !== base.getName()) { options.platform.drive.tenderdash.genesis.chain_id = testnet.get('platform.drive.tenderdash.genesis.chain_id'); options.platform.drive.tenderdash.genesis.initial_core_chain_locked_height = 14000; - options.platform.drive.tenderdash.genesis.genesis_time = testnet.get('platform.drive.tenderdash.genesis.genesis_time'); + options.platform.drive.tenderdash.genesis.genesis_time = '2024-07-17T17:15:00.000Z'; } } }); @@ -361,7 +361,7 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) if (options.network === NETWORK_TESTNET && name !== base.getName()) { options.platform.drive.tenderdash.genesis.chain_id = testnet.get('platform.drive.tenderdash.genesis.chain_id'); options.platform.drive.tenderdash.genesis.initial_core_chain_locked_height = 1400; - options.platform.drive.tenderdash.genesis.genesis_time = testnet.get('platform.drive.tenderdash.genesis.genesis_time'); + options.platform.drive.tenderdash.genesis.genesis_time = '2024-07-17T17:15:00.000Z'; } }); @@ -373,7 +373,7 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) if (options.network === NETWORK_TESTNET && name !== base.getName()) { options.platform.drive.tenderdash.genesis.chain_id = testnet.get('platform.drive.tenderdash.genesis.chain_id'); options.platform.drive.tenderdash.genesis.initial_core_chain_locked_height = 1400; - options.platform.drive.tenderdash.genesis.genesis_time = testnet.get('platform.drive.tenderdash.genesis.genesis_time'); + options.platform.drive.tenderdash.genesis.genesis_time = '2024-07-17T17:15:00.000Z'; } }); @@ -729,6 +729,7 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) // Update tenderdash image options.platform.drive.tenderdash.docker.image = base.get('platform.drive.tenderdash.docker.image'); + options.core.rpc.users.drive_consensus.whitelist = base.get('core.rpc.users.drive_consensus.whitelist'); }); return configFile; }, diff --git a/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js index f4fb2ed8012..c3984d32c5a 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js @@ -23,10 +23,7 @@ export default function configureTenderdashTaskFactory() { const randomChainIdPart = Math.floor(Math.random() * 60) + 1; const chainId = `dashmate_local_${randomChainIdPart}`; - const genesisTime = new Date().toISOString(); - platformConfigs.forEach((config, index) => { - config.set('platform.drive.tenderdash.genesis.genesis_time', genesisTime); config.set('platform.drive.tenderdash.genesis.chain_id', chainId); const p2pPeers = platformConfigs diff --git a/packages/rs-drive-abci/src/error/execution.rs b/packages/rs-drive-abci/src/error/execution.rs index f6d8c19c417..efa4e2a6c83 100644 --- a/packages/rs-drive-abci/src/error/execution.rs +++ b/packages/rs-drive-abci/src/error/execution.rs @@ -1,5 +1,6 @@ use dashcore_rpc::dashcore::consensus::encode::Error as DashCoreConsensusEncodeError; use dpp::bls_signatures::BlsError; +use dpp::identity::TimestampMillis; use dpp::version::FeatureVersion; use drive::error::Error as DriveError; @@ -68,6 +69,17 @@ pub enum ExecutionError { chain_lock_height: u32, }, + /// Genesis time is in the future. + #[error("genesis time {genesis_time} for initial height {initial_height} is in the future. current time is {current_time}")] + InitializationGenesisTimeInFuture { + /// initial height (requested or fork) + initial_height: u32, + /// genesis time + genesis_time: TimestampMillis, + /// current time + current_time: TimestampMillis, + }, + /// An error occurred during initialization. #[error("initialization error: {0}")] InitializationError(&'static str), diff --git a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs index 90c4d7a179d..45101b321fd 100644 --- a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs @@ -13,6 +13,8 @@ use crate::platform_types::platform_state::PlatformState; use dpp::version::PlatformVersion; use std::sync::Arc; use tenderdash_abci::proto::abci::{RequestInitChain, ResponseInitChain, ValidatorSetUpdate}; +use tenderdash_abci::proto::google::protobuf::Timestamp; +use tenderdash_abci::proto::serializers::timestamp::FromMilis; impl Platform where @@ -31,13 +33,16 @@ where )?; // Wait until we have an initial core height to start the chain - let core_height = loop { - match self.initial_core_height(request.initial_core_height, platform_version) { + let (core_height, genesis_time) = loop { + match self.initial_core_height_and_time(request.initial_core_height, platform_version) { Ok(height) => break height, Err(e) => match e { Error::Execution(ExecutionError::InitializationForkNotActive(_)) | Error::Execution(ExecutionError::InitializationHeightIsNotLocked { .. + }) + | Error::Execution(ExecutionError::InitializationGenesisTimeInFuture { + .. }) => { tracing::warn!( error = ?e, @@ -52,8 +57,6 @@ where } }; - let genesis_time = request.genesis_time; - // Create genesis drive state self.create_genesis_state(genesis_time, Some(transaction), platform_version)?; @@ -127,12 +130,12 @@ where .map_err(GroveDB)?; Ok(ResponseInitChain { - consensus_params: None, //todo + consensus_params: None, app_hash: app_hash.to_vec(), validator_set_update: Some(validator_set), next_core_chain_lock_update: None, initial_core_height: core_height, // we send back the core height when the fork happens - genesis_time: None, + genesis_time: Some(Timestamp::from_milis(genesis_time)), }) } } diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/mod.rs index 7eaf7e34826..7e1cd4cea6f 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/mod.rs @@ -4,6 +4,7 @@ use crate::error::execution::ExecutionError; use crate::error::Error; use crate::platform_types::platform::Platform; use crate::rpc::core::CoreRPCLike; +use dpp::prelude::{CoreBlockHeight, TimestampMillis}; use dpp::version::PlatformVersion; impl Platform @@ -26,20 +27,20 @@ where /// * `requested` core height is before mn_rr fork /// * `requested` core height is after current best chain lock /// - pub(in crate::execution) fn initial_core_height( + pub(in crate::execution) fn initial_core_height_and_time( &self, requested: Option, platform_version: &PlatformVersion, - ) -> Result { + ) -> Result<(CoreBlockHeight, TimestampMillis), Error> { match platform_version .drive_abci .methods .initialization - .initial_core_height + .initial_core_height_and_time { - 0 => self.initial_core_height_v0(requested), + 0 => self.initial_core_height_and_time_v0(requested), version => Err(Error::Execution(ExecutionError::UnknownVersionMismatch { - method: "initial_core_height".to_string(), + method: "initial_core_height_and_time".to_string(), known_versions: vec![0], received: version, })), diff --git a/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/v0/mod.rs index 9d50fcb6eb0..7cfa2462482 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/initialization/initial_core_height/v0/mod.rs @@ -2,6 +2,8 @@ use crate::error::execution::ExecutionError; use crate::error::Error; use crate::platform_types::platform::Platform; use crate::rpc::core::CoreRPCLike; +use dpp::prelude::{CoreBlockHeight, TimestampMillis}; +use std::time::{SystemTime, UNIX_EPOCH}; impl Platform where @@ -23,10 +25,10 @@ where /// * `requested` core height is before mn_rr fork /// * `requested` core height is after current best chain lock /// - pub(in crate::execution::platform_events) fn initial_core_height_v0( + pub(in crate::execution::platform_events) fn initial_core_height_and_time_v0( &self, requested: Option, - ) -> Result { + ) -> Result<(CoreBlockHeight, TimestampMillis), Error> { let fork_info = self.core_rpc.get_fork_info("mn_rr")?.ok_or( ExecutionError::InitializationForkNotActive("fork is not yet known".to_string()), )?; @@ -60,15 +62,24 @@ where // Make sure initial height is chain locked let chain_lock_height = self.core_rpc.get_best_chain_lock()?.block_height; - // TODO (Lukazs) in my opinion, the condition should be: - // - // `mn_rr_fork <= requested && requested <= best` - // - // but it results in 1440 <= 1243 <= 1545 - // - // So, fork_info.since differs? is it non-deterministic? if initial_height <= chain_lock_height { - Ok(initial_height) + let block_time = self.core_rpc.get_block_time_from_height(initial_height)?; + + let current_time = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("Time went backwards") // Copilot rocks :)) + .as_millis() as TimestampMillis; + + if block_time > current_time { + return Err(ExecutionError::InitializationGenesisTimeInFuture { + initial_height, + genesis_time: block_time, + current_time, + } + .into()); + } + + Ok((initial_height, block_time)) } else { Err(ExecutionError::InitializationHeightIsNotLocked { initial_height, diff --git a/packages/rs-drive-abci/src/rpc/core.rs b/packages/rs-drive-abci/src/rpc/core.rs index 63fdf94b409..46e16a2e0b9 100644 --- a/packages/rs-drive-abci/src/rpc/core.rs +++ b/packages/rs-drive-abci/src/rpc/core.rs @@ -6,7 +6,8 @@ use dashcore_rpc::dashcore_rpc_json::{ }; use dashcore_rpc::json::GetRawTransactionResult; use dashcore_rpc::{Auth, Client, Error, RpcApi}; -use dpp::dashcore::InstantLock; +use dpp::dashcore::{Header, InstantLock}; +use dpp::prelude::TimestampMillis; use serde_json::Value; use std::collections::HashMap; use std::time::Duration; @@ -22,6 +23,12 @@ pub trait CoreRPCLike { /// Get block hash by height fn get_block_hash(&self, height: CoreHeight) -> Result; + /// Get block hash by height + fn get_block_header(&self, block_hash: &BlockHash) -> Result; + + /// Get block time of a chain locked core height + fn get_block_time_from_height(&self, height: CoreHeight) -> Result; + /// Get the best chain lock fn get_best_chain_lock(&self) -> Result; @@ -212,6 +219,17 @@ impl CoreRPCLike for DefaultCoreRPC { retry!(self.inner.get_block_hash(height)) } + fn get_block_header(&self, block_hash: &BlockHash) -> Result { + retry!(self.inner.get_block_header(block_hash)) + } + + fn get_block_time_from_height(&self, height: CoreHeight) -> Result { + let block_hash = self.get_block_hash(height)?; + let block_header = self.get_block_header(&block_hash)?; + let block_time = block_header.time as u64 * 1000; + Ok(block_time) + } + fn get_best_chain_lock(&self) -> Result { retry!(self.inner.get_best_chain_lock()) } diff --git a/packages/rs-drive-abci/tests/strategy_tests/execution.rs b/packages/rs-drive-abci/tests/strategy_tests/execution.rs index 8ff87ac5556..66f2735db7d 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/execution.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/execution.rs @@ -662,6 +662,11 @@ pub(crate) fn run_chain_for_strategy<'a>( }) .collect(); + platform + .core_rpc + .expect_get_block_time_from_height() + .returning(|_| Ok(GENESIS_TIME_MS)); + platform .core_rpc .expect_get_best_chain_lock() diff --git a/packages/rs-drive-abci/tests/strategy_tests/main.rs b/packages/rs-drive-abci/tests/strategy_tests/main.rs index 7a19a1e7e68..aa6e6b08d1d 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/main.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/main.rs @@ -1194,7 +1194,7 @@ mod tests { .unwrap() .unwrap() ), - "065668f27dd4e3611a6aec4797fdd47acbd7356ae84eb711b8289dab8f09ea31".to_string() + "e8e42170ec547a2170d1128b8ec51cd56a3e2d72fea24c797bd87851e6a0aa95".to_string() ) } @@ -1915,7 +1915,7 @@ mod tests { .unwrap() .unwrap() ), - "8c63acd8e6f41f316ea8257e3abc828a5b4d94726fb51575c5cb1288e9605086".to_string() + "6a3782a2868634fc1cdf5752f365374829d020a5c2019eeb55beacf08653c43f".to_string() ) } @@ -2050,7 +2050,7 @@ mod tests { .unwrap() .unwrap() ), - "77bb976ad70a75cdbf044ec311feb8581bb13dea4e66d0fa7b9abc52157b422a".to_string() + "cf8561aaab49bc8bcbe1468c9e890ee0c9c01794e9a52d45d86b0b41ccc44133".to_string() ) } diff --git a/packages/rs-platform-version/src/version/drive_abci_versions.rs b/packages/rs-platform-version/src/version/drive_abci_versions.rs index d30119b68ea..92ce6bdac83 100644 --- a/packages/rs-platform-version/src/version/drive_abci_versions.rs +++ b/packages/rs-platform-version/src/version/drive_abci_versions.rs @@ -242,7 +242,7 @@ pub struct DriveAbciMasternodeIdentitiesUpdatesMethodVersions { #[derive(Clone, Debug, Default)] pub struct DriveAbciInitializationMethodVersions { - pub initial_core_height: FeatureVersion, + pub initial_core_height_and_time: FeatureVersion, pub create_genesis_state: FeatureVersion, } diff --git a/packages/rs-platform-version/src/version/mocks/v2_test.rs b/packages/rs-platform-version/src/version/mocks/v2_test.rs index 3421fa7ee86..5540862126f 100644 --- a/packages/rs-platform-version/src/version/mocks/v2_test.rs +++ b/packages/rs-platform-version/src/version/mocks/v2_test.rs @@ -600,7 +600,7 @@ pub const TEST_PLATFORM_V2: PlatformVersion = PlatformVersion { finalize_block_proposal: 0, }, initialization: DriveAbciInitializationMethodVersions { - initial_core_height: 0, + initial_core_height_and_time: 0, create_genesis_state: 0, }, core_based_updates: DriveAbciCoreBasedUpdatesMethodVersions { diff --git a/packages/rs-platform-version/src/version/mocks/v3_test.rs b/packages/rs-platform-version/src/version/mocks/v3_test.rs index cf8059d819c..c6b940b88a6 100644 --- a/packages/rs-platform-version/src/version/mocks/v3_test.rs +++ b/packages/rs-platform-version/src/version/mocks/v3_test.rs @@ -600,7 +600,7 @@ pub const TEST_PLATFORM_V3: PlatformVersion = PlatformVersion { finalize_block_proposal: 0, }, initialization: DriveAbciInitializationMethodVersions { - initial_core_height: 0, + initial_core_height_and_time: 0, create_genesis_state: 0, }, core_based_updates: DriveAbciCoreBasedUpdatesMethodVersions { diff --git a/packages/rs-platform-version/src/version/v1.rs b/packages/rs-platform-version/src/version/v1.rs index d8bb9e9252e..e0b890a43b2 100644 --- a/packages/rs-platform-version/src/version/v1.rs +++ b/packages/rs-platform-version/src/version/v1.rs @@ -599,7 +599,7 @@ pub const PLATFORM_V1: PlatformVersion = PlatformVersion { finalize_block_proposal: 0, }, initialization: DriveAbciInitializationMethodVersions { - initial_core_height: 0, + initial_core_height_and_time: 0, create_genesis_state: 0, }, core_based_updates: DriveAbciCoreBasedUpdatesMethodVersions { From 4dbcdbabd644c6854c3aae5b86f228c4da06b7b3 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 26 Jul 2024 04:11:10 +0700 Subject: [PATCH 24/37] chore(release): update changelog and bump version to 1.0.0-rc.2 (#2010) --- CHANGELOG.md | 31 ++++++++++++ Cargo.lock | 50 +++++++++---------- package.json | 2 +- packages/bench-suite/package.json | 2 +- packages/check-features/Cargo.toml | 2 +- packages/dapi-grpc/Cargo.toml | 2 +- packages/dapi-grpc/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/dashpay-contract/Cargo.toml | 2 +- packages/dashpay-contract/package.json | 2 +- packages/data-contracts/Cargo.toml | 2 +- packages/dpns-contract/Cargo.toml | 2 +- packages/dpns-contract/package.json | 2 +- packages/feature-flags-contract/Cargo.toml | 2 +- packages/feature-flags-contract/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-grpc-common/package.json | 2 +- .../Cargo.toml | 2 +- .../package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-dapi-client/Cargo.toml | 2 +- packages/rs-dapi-grpc-macros/Cargo.toml | 2 +- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 2 +- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- packages/rs-drive/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../Cargo.toml | 2 +- packages/rs-platform-serialization/Cargo.toml | 2 +- .../rs-platform-value-convertible/Cargo.toml | 2 +- packages/rs-platform-value/Cargo.toml | 2 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-versioning/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- packages/simple-signer/Cargo.toml | 2 +- packages/strategy-tests/Cargo.toml | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp/package.json | 2 +- packages/withdrawals-contract/Cargo.toml | 2 +- packages/withdrawals-contract/package.json | 2 +- 44 files changed, 98 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02b1ef4e0b0..9d911159e41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,34 @@ +## [1.0.0-rc.2](https://github.com/dashpay/platform/compare/v1.0.0-rc.1...v1.0.0-rc.2) (2024-07-25) + + +### âš  BREAKING CHANGES + +* **platform:** genesis state from core block time (#2003) + +### Features + +* specify transition names within documents batch ([#2007](https://github.com/dashpay/platform/issues/2007)) + + +### Bug Fixes + +* dpns js sdk fix for identity record rename ([#2001](https://github.com/dashpay/platform/issues/2001)) +* **platform:** core info is lost between genesis and first block ([#2004](https://github.com/dashpay/platform/issues/2004)) +* **platform:** genesis state from core block time ([#2003](https://github.com/dashpay/platform/issues/2003)) +* sdk should ignore transient fields when verifying proofs ([#2000](https://github.com/dashpay/platform/issues/2000)) +* **strategy-tests:** document delete transitions were not selecting identity correctly +* two error messages had typos ([#2005](https://github.com/dashpay/platform/issues/2005)) + + +### Miscellaneous Chores + +* **dashmate:** update genesis config to the latest testnet ([#1998](https://github.com/dashpay/platform/issues/1998)) + + +### Build System + +* update to tenderdash 1.1.0-dev.3, rs-tenderdash-abci 1.1.0-dev.1 ([#2008](https://github.com/dashpay/platform/issues/2008)) + ## [1.0.0-rc.1](https://github.com/dashpay/platform/compare/v1.0.0-beta.4...v1.0.0-rc.1) (2024-07-24) diff --git a/Cargo.lock b/Cargo.lock index 3859f459c1f..a5d45608877 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -774,7 +774,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check-features" -version = "0.1.0-rc.1" +version = "0.1.0-rc.2" dependencies = [ "toml", ] @@ -1140,7 +1140,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -1156,7 +1156,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "dapi-grpc", "heck 0.5.0", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "arc-swap", "async-trait", @@ -1301,7 +1301,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "platform-value", "platform-version", @@ -1311,7 +1311,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1427,7 +1427,7 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dpns-contract" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "platform-value", "platform-version", @@ -1437,7 +1437,7 @@ dependencies = [ [[package]] name = "dpp" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "anyhow", "assert_matches", @@ -1489,7 +1489,7 @@ dependencies = [ [[package]] name = "drive" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "arc-swap", "base64 0.22.1", @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "drive-abci" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "arc-swap", "assert_matches", @@ -1583,7 +1583,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "bincode", "dapi-grpc", @@ -1797,7 +1797,7 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "feature-flags-contract" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "platform-value", "platform-version", @@ -2713,7 +2713,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "assert_matches", "json-patch", @@ -2886,7 +2886,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "platform-value", "platform-version", @@ -3451,7 +3451,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platform-serialization" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "bincode", "platform-version", @@ -3459,7 +3459,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "proc-macro2", "quote", @@ -3469,7 +3469,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "base64 0.22.1", "bincode", @@ -3490,7 +3490,7 @@ dependencies = [ [[package]] name = "platform-value-convertible" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "quote", "syn 2.0.72", @@ -3498,7 +3498,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "bincode", "grovedb-version", @@ -3509,7 +3509,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "proc-macro2", "quote", @@ -4119,7 +4119,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "backon", "chrono", @@ -4605,7 +4605,7 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "simple-signer" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "base64 0.22.1", "bincode", @@ -4696,7 +4696,7 @@ dependencies = [ [[package]] name = "strategy-tests" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "bincode", "dpp", @@ -5736,7 +5736,7 @@ checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" [[package]] name = "wasm-dpp" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "anyhow", "async-trait", @@ -6009,7 +6009,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ "num_enum", "platform-value", diff --git a/package.json b/package.json index 465581b8d41..ca4bb90c545 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/platform", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "private": true, "scripts": { "setup": "yarn install && yarn run build && yarn run configure", diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index c376eee6155..27b79084ee5 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/bench-suite", "private": true, - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Dash Platform benchmark tool", "scripts": { "bench": "node ./bin/bench.js", diff --git a/packages/check-features/Cargo.toml b/packages/check-features/Cargo.toml index 405dc152663..219a7e5a844 100644 --- a/packages/check-features/Cargo.toml +++ b/packages/check-features/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "check-features" -version = "0.1.0-rc.1" +version = "0.1.0-rc.2" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/packages/dapi-grpc/Cargo.toml b/packages/dapi-grpc/Cargo.toml index f2939529c6b..663efb16e46 100644 --- a/packages/dapi-grpc/Cargo.toml +++ b/packages/dapi-grpc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc" description = "GRPC client for Dash Platform" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" authors = [ "Samuel Westrich ", "Igor Markin ", diff --git a/packages/dapi-grpc/package.json b/packages/dapi-grpc/package.json index a2643a65c51..23377dd30df 100644 --- a/packages/dapi-grpc/package.json +++ b/packages/dapi-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-grpc", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "DAPI GRPC definition file and generated clients", "browser": "browser.js", "main": "node.js", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index 3894fd8bcfa..6b8efba792c 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/dapi", "private": true, - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "A decentralized API for the Dash network", "scripts": { "api": "node scripts/api.js", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index b779735e5f2..c28c3660c3c 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dash-spv", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Repository containing SPV functions used by @dashevo", "main": "index.js", "scripts": { diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 82d959525a1..73f10c5c9e7 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -1,6 +1,6 @@ { "name": "dashmate", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Distribution package for Dash node installation", "scripts": { "lint": "eslint .", diff --git a/packages/dashpay-contract/Cargo.toml b/packages/dashpay-contract/Cargo.toml index 79e1c30479e..42e073f5cc0 100644 --- a/packages/dashpay-contract/Cargo.toml +++ b/packages/dashpay-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dashpay-contract" description = "DashPay data contract schema and tools" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dashpay-contract/package.json b/packages/dashpay-contract/package.json index 31efa0cf7b3..b75238c3b93 100644 --- a/packages/dashpay-contract/package.json +++ b/packages/dashpay-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dashpay-contract", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Reference contract of the DashPay DPA on Dash Evolution", "scripts": { "lint": "eslint .", diff --git a/packages/data-contracts/Cargo.toml b/packages/data-contracts/Cargo.toml index 0ba77616d2c..80120b467d9 100644 --- a/packages/data-contracts/Cargo.toml +++ b/packages/data-contracts/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "data-contracts" description = "Dash Platform system data contracts" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/Cargo.toml b/packages/dpns-contract/Cargo.toml index 849f2ee6a36..7681b7c767b 100644 --- a/packages/dpns-contract/Cargo.toml +++ b/packages/dpns-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dpns-contract" description = "DPNS data contract schema and tools" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/package.json b/packages/dpns-contract/package.json index 65fec88c47a..82001ee612f 100644 --- a/packages/dpns-contract/package.json +++ b/packages/dpns-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dpns-contract", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "A contract and helper scripts for DPNS DApp", "scripts": { "lint": "eslint .", diff --git a/packages/feature-flags-contract/Cargo.toml b/packages/feature-flags-contract/Cargo.toml index 68c1e807aeb..e3a10d6cfb1 100644 --- a/packages/feature-flags-contract/Cargo.toml +++ b/packages/feature-flags-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "feature-flags-contract" description = "Feature flags data contract schema and tools" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/feature-flags-contract/package.json b/packages/feature-flags-contract/package.json index dd606a3099c..94027cd3c6e 100644 --- a/packages/feature-flags-contract/package.json +++ b/packages/feature-flags-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/feature-flags-contract", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Data Contract to store Dash Platform feature flags", "scripts": { "build": "", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index 00733bfd53b..20e8521947f 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-client", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Client library used to access Dash DAPI endpoints", "main": "lib/index.js", "contributors": [ diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index 86e1eca704a..02ded0f1695 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -1,6 +1,6 @@ { "name": "dash", - "version": "4.0.0-rc.1", + "version": "4.0.0-rc.2", "description": "Dash library for JavaScript/TypeScript ecosystem (Wallet, DAPI, Primitives, BLS, ...)", "main": "build/index.js", "unpkg": "dist/dash.min.js", diff --git a/packages/js-grpc-common/package.json b/packages/js-grpc-common/package.json index 674718af52a..54a69c26e85 100644 --- a/packages/js-grpc-common/package.json +++ b/packages/js-grpc-common/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/grpc-common", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Common GRPC library", "main": "index.js", "scripts": { diff --git a/packages/masternode-reward-shares-contract/Cargo.toml b/packages/masternode-reward-shares-contract/Cargo.toml index c0f1c2e2b54..e2399903881 100644 --- a/packages/masternode-reward-shares-contract/Cargo.toml +++ b/packages/masternode-reward-shares-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "masternode-reward-shares-contract" description = "Masternode reward shares data contract schema and tools" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/masternode-reward-shares-contract/package.json b/packages/masternode-reward-shares-contract/package.json index 3b296c83f7f..d25ea259749 100644 --- a/packages/masternode-reward-shares-contract/package.json +++ b/packages/masternode-reward-shares-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/masternode-reward-shares-contract", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "A contract and helper scripts for reward sharing", "scripts": { "lint": "eslint .", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index f97bc5b8c97..8becc602e70 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/platform-test-suite", "private": true, - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Dash Network end-to-end tests", "scripts": { "test": "yarn exec bin/test.sh", diff --git a/packages/rs-dapi-client/Cargo.toml b/packages/rs-dapi-client/Cargo.toml index 4b8a58fb769..f943efc2337 100644 --- a/packages/rs-dapi-client/Cargo.toml +++ b/packages/rs-dapi-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rs-dapi-client" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" [features] diff --git a/packages/rs-dapi-grpc-macros/Cargo.toml b/packages/rs-dapi-grpc-macros/Cargo.toml index 1b7570df5d1..d0973e37db3 100644 --- a/packages/rs-dapi-grpc-macros/Cargo.toml +++ b/packages/rs-dapi-grpc-macros/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc-macros" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" description = "Macros used by dapi-grpc. Internal use only." diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 065944cb17d..7e402a1cbc5 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dpp" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 0e7e9691533..cd2e6cbfee7 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-abci" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index ccd7cfa7b15..3428c0e056f 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-proof-verifier" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 84759523176..26f2865a98c 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "drive" description = "Dash drive built on top of GroveDB" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-json-schema-compatibility-validator/Cargo.toml b/packages/rs-json-schema-compatibility-validator/Cargo.toml index 7c2170a3c0c..6107a70d291 100644 --- a/packages/rs-json-schema-compatibility-validator/Cargo.toml +++ b/packages/rs-json-schema-compatibility-validator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-schema-compatibility-validator" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-platform-serialization-derive/Cargo.toml b/packages/rs-platform-serialization-derive/Cargo.toml index 47ce2ddeb1b..4ea5456b10f 100644 --- a/packages/rs-platform-serialization-derive/Cargo.toml +++ b/packages/rs-platform-serialization-derive/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization-derive" authors = ["Samuel Westrich "] description = "Bincode serialization and deserialization derivations" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index 49c0b68fd8e..28e7bc0d1ac 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization" authors = ["Samuel Westrich "] description = "Bincode based serialization and deserialization" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value-convertible/Cargo.toml b/packages/rs-platform-value-convertible/Cargo.toml index 4b02faea7f8..ba21b75eba3 100644 --- a/packages/rs-platform-value-convertible/Cargo.toml +++ b/packages/rs-platform-value-convertible/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value-convertible" authors = ["Samuel Westrich "] description = "Convertion to and from platform values" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index b80f846a074..a2a24e95d10 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value" authors = ["Samuel Westrich "] description = "A simple value module" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 5fc2a4f2cb6..23ade8fc558 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-version" authors = ["Samuel Westrich "] description = "Versioning library for Platform" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-versioning/Cargo.toml b/packages/rs-platform-versioning/Cargo.toml index 463b930a4ed..1028eedd890 100644 --- a/packages/rs-platform-versioning/Cargo.toml +++ b/packages/rs-platform-versioning/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-versioning" authors = ["Samuel Westrich "] description = "Version derivation" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 1cba0cc54e6..2d8e3ec37ee 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dash-sdk" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" [dependencies] diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index ccfcb33d4e5..05a63c83437 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-signer" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index 5a2f44cbe2d..bc7f72f6741 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "strategy-tests" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index d7acd5b8353..adc657e4fbe 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-lib", - "version": "8.0.0-rc.1", + "version": "8.0.0-rc.2", "description": "Light wallet library for Dash", "main": "src/index.js", "unpkg": "dist/wallet-lib.min.js", diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index da8a4ec1da6..51d4b6347b3 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-dpp" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" authors = ["Anton Suprunchuk "] diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index ca183c4d560..9beaab507a8 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "The JavaScript implementation of the Dash Platform Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/withdrawals-contract/Cargo.toml b/packages/withdrawals-contract/Cargo.toml index 6b517033b14..97dfaeda6f3 100644 --- a/packages/withdrawals-contract/Cargo.toml +++ b/packages/withdrawals-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "withdrawals-contract" description = "Witdrawals data contract schema and tools" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/withdrawals-contract/package.json b/packages/withdrawals-contract/package.json index 6674045025b..8c2dba4294f 100644 --- a/packages/withdrawals-contract/package.json +++ b/packages/withdrawals-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/withdrawals-contract", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "description": "Data Contract to manipulate and track withdrawals", "scripts": { "build": "", From 05c4d9d96b5952ee7ef7a59bd900ca4cd2e69c72 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Sat, 27 Jul 2024 14:46:37 +0700 Subject: [PATCH 25/37] fix: epoch protocol version setting (#2013) --- .../add_process_epoch_change_operations/v0/mod.rs | 8 ++++++-- .../v0/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../get_epoch_fee_multiplier/v0/mod.rs | 9 ++++++++- .../credit_pools/epochs/operations_factory.rs | 14 +++++++++++++- .../rs-drive/src/drive/system/genesis_time/mod.rs | 9 ++++++++- 7 files changed, 41 insertions(+), 5 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/platform_events/block_fee_processing/add_process_epoch_change_operations/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/block_fee_processing/add_process_epoch_change_operations/v0/mod.rs index 06862111213..cd34051daa8 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/block_fee_processing/add_process_epoch_change_operations/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/block_fee_processing/add_process_epoch_change_operations/v0/mod.rs @@ -112,16 +112,20 @@ impl Platform { return Err(Error::Drive(error::drive::DriveError::NotSupported("the fee_multiplier_permille must be set in fees if using add_process_epoch_change_operations_v0").into())); }; - //todo: version + // it is important to set the current protocol version because we might have skipped + // protocol versions if we skip over epochs. current_epoch.add_init_current_operations( fee_multiplier, // TODO (feature) use a data contract to choose the fee multiplier block_info.height(), block_info.core_chain_locked_height(), block_info.block_time_ms(), + block_execution_context + .block_platform_state() + .current_protocol_version_in_consensus(), &mut inner_batch, ); - // Update next epoch protocol version + // Update next epoch protocol version so it can be queryable let next_epoch = Epoch::new(epoch_info.current_epoch_index() + 1)?; inner_batch.push( next_epoch.update_protocol_version_operation( diff --git a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_inwards_distribution/add_distribute_block_fees_into_pools_operations/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_inwards_distribution/add_distribute_block_fees_into_pools_operations/v0/mod.rs index 64723233c98..52493f0cabb 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_inwards_distribution/add_distribute_block_fees_into_pools_operations/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_inwards_distribution/add_distribute_block_fees_into_pools_operations/v0/mod.rs @@ -105,6 +105,7 @@ mod tests { 1, 1, 1, + platform_version.protocol_version, &mut inner_batch, ); @@ -177,6 +178,7 @@ mod tests { 1, 1, 1, + platform_version.protocol_version, &mut batch, ); diff --git a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v0/mod.rs index 6c0ba2501e6..ebdc6793e81 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v0/mod.rs @@ -155,6 +155,7 @@ mod tests { 1, 1, 1, + platform_version.protocol_version, &mut batch, ); @@ -178,6 +179,7 @@ mod tests { proposers_count as u64 + 1, 3, 2, + platform_version.protocol_version, &mut batch, ); diff --git a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_epoch_pool_to_proposers_payout_operations/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_epoch_pool_to_proposers_payout_operations/v0/mod.rs index bd24d6e7f71..15709631b66 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_epoch_pool_to_proposers_payout_operations/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_epoch_pool_to_proposers_payout_operations/v0/mod.rs @@ -227,6 +227,7 @@ mod tests { 1, 1, 1, + platform_version.protocol_version, &mut batch, ); @@ -250,6 +251,7 @@ mod tests { proposers_count as u64 + 1, 1, 10, + platform_version.protocol_version, &mut batch, ); diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_fee_multiplier/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_fee_multiplier/v0/mod.rs index 61f8e761398..d89596e693a 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_fee_multiplier/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_fee_multiplier/v0/mod.rs @@ -120,7 +120,14 @@ mod tests { .add_init_empty_operations(&mut batch) .expect("should add empty epoch operations"); - epoch.add_init_current_operations(multiplier, 1, 1, 1, &mut batch); + epoch.add_init_current_operations( + multiplier, + 1, + 1, + 1, + platform_version.protocol_version, + &mut batch, + ); drive .grove_apply_batch(batch, false, Some(&transaction), &platform_version.drive) diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs index ee9981c1b8a..46bb836ef2d 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs @@ -45,6 +45,7 @@ pub trait EpochOperations { start_block_height: u64, // TODO Many method in drive needs block time and height. Maybe we need DTO for drive as well which will contain block information start_block_core_height: u32, start_time_ms: u64, + protocol_version: ProtocolVersion, batch: &mut GroveDbOpBatch, ); /// Adds to the groveDB op batch operations signifying that the epoch distribution fees were paid out. @@ -144,6 +145,7 @@ impl EpochOperations for Epoch { start_block_height: u64, // TODO Many method in drive needs block time and height. Maybe we need DTO for drive as well which will contain block information start_block_core_height: u32, start_time_ms: u64, + protocol_version: ProtocolVersion, batch: &mut GroveDbOpBatch, ) { batch.push(self.update_start_block_height_operation(start_block_height)); @@ -155,6 +157,8 @@ impl EpochOperations for Epoch { batch.push(self.update_fee_multiplier_operation(multiplier_permille)); batch.push(self.update_start_time_operation(start_time_ms)); + + batch.push(self.update_protocol_version_operation(protocol_version)); } /// Adds to the groveDB op batch operations signifying that the epoch distribution fees were paid out. @@ -480,6 +484,7 @@ mod tests { start_block_height, start_block_core_height, start_time, + platform_version.protocol_version, &mut batch, ); @@ -541,7 +546,14 @@ mod tests { let mut batch = GroveDbOpBatch::new(); - epoch.add_init_current_operations(1000, 2, 5, 3, &mut batch); + epoch.add_init_current_operations( + 1000, + 2, + 5, + 3, + platform_version.protocol_version, + &mut batch, + ); // Apply init current drive diff --git a/packages/rs-drive/src/drive/system/genesis_time/mod.rs b/packages/rs-drive/src/drive/system/genesis_time/mod.rs index bdae09b76b8..cd888ccd313 100644 --- a/packages/rs-drive/src/drive/system/genesis_time/mod.rs +++ b/packages/rs-drive/src/drive/system/genesis_time/mod.rs @@ -109,7 +109,14 @@ mod tests { .add_init_empty_operations(&mut batch) .expect("should add init operations"); - epoch.add_init_current_operations(0, 1, 1, genesis_time_ms, &mut batch); + epoch.add_init_current_operations( + 0, + 1, + 1, + genesis_time_ms, + platform_version.protocol_version, + &mut batch, + ); drive .apply_batch_grovedb_operations( From 9001aa9ad822f7b0301cec86a606aaeab0fe7ef8 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Sun, 28 Jul 2024 09:51:51 +0700 Subject: [PATCH 26/37] feat: sdk to return proofs if requested (#2014) --- packages/rs-drive-proof-verifier/src/proof.rs | 167 +++++++++++------- packages/rs-sdk/Cargo.toml | 3 +- packages/rs-sdk/README.md | 2 +- packages/rs-sdk/examples/read_contract.rs | 2 +- packages/rs-sdk/src/error.rs | 2 +- packages/rs-sdk/src/mock/provider.rs | 10 +- packages/rs-sdk/src/mock/sdk.rs | 13 +- .../src/platform/block_info_from_metadata.rs | 2 +- packages/rs-sdk/src/platform/delegate.rs | 2 +- .../rs-sdk/src/platform/document_query.rs | 16 +- packages/rs-sdk/src/platform/fetch.rs | 74 ++++++-- packages/rs-sdk/src/platform/fetch_many.rs | 18 +- packages/rs-sdk/src/platform/query.rs | 14 +- .../platform/transition/broadcast_identity.rs | 14 +- .../platform/transition/broadcast_request.rs | 14 +- packages/rs-sdk/src/platform/types/epoch.rs | 34 +++- .../src/platform/types/version_votes.rs | 2 +- packages/rs-sdk/src/sdk.rs | 72 +++++++- packages/rs-sdk/tests/fetch/config.rs | 2 +- packages/rs-sdk/tests/fetch/epoch.rs | 2 +- 20 files changed, 324 insertions(+), 141 deletions(-) diff --git a/packages/rs-drive-proof-verifier/src/proof.rs b/packages/rs-drive-proof-verifier/src/proof.rs index 6c080f9eebd..14000f0a951 100644 --- a/packages/rs-drive-proof-verifier/src/proof.rs +++ b/packages/rs-drive-proof-verifier/src/proof.rs @@ -17,7 +17,7 @@ use dapi_grpc::platform::v0::{ GetContestedResourceVotersForIdentityRequest, GetContestedResourceVotersForIdentityResponse, GetPathElementsRequest, GetPathElementsResponse, GetProtocolVersionUpgradeStateRequest, GetProtocolVersionUpgradeStateResponse, GetProtocolVersionUpgradeVoteStatusRequest, - GetProtocolVersionUpgradeVoteStatusResponse, ResponseMetadata, + GetProtocolVersionUpgradeVoteStatusResponse, Proof, ResponseMetadata, }; use dapi_grpc::platform::{ v0::{self as platform, key_request_type, KeyRequestType as GrpcKeyType}, @@ -121,7 +121,7 @@ pub trait FromProof { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a; @@ -185,10 +185,43 @@ pub trait FromProof { where Self: Sized + 'a, { - let (main_item, response_metadata) = + let (main_item, response_metadata, _) = Self::maybe_from_proof_with_metadata(request, response, platform_version, provider)?; Ok((main_item.ok_or(Error::NotFound)?, response_metadata)) } + + /// Retrieve the requested object from the proof with metadata. + /// + /// Runs full verification of the proof and retrieves enclosed objects. + /// + /// This method uses [`FromProof::maybe_from_proof_with_metadata()`] internally and throws an error + /// if the requested object does not exist in the proof. + /// + /// # Arguments + /// + /// * `request`: The request sent to the server. + /// * `response`: The response received from the server. + /// * `platform_version`: The platform version that should be used. + /// * `provider`: A callback implementing [ContextProvider] that provides quorum details required to verify the proof. + /// + /// # Returns + /// + /// * `Ok(Some(object, metadata, proof))` when the requested object was found in the proof. + /// * `Err(Error::DocumentMissingInProof)` when the requested object was not found in the proof. + /// * `Err(Error)` when either the provided data is invalid or proof validation failed. + fn from_proof_with_metadata_and_proof<'a, I: Into, O: Into>( + request: I, + response: O, + platform_version: &PlatformVersion, + provider: &'a dyn ContextProvider, + ) -> Result<(Self, ResponseMetadata, Proof), Error> + where + Self: Sized + 'a, + { + let (main_item, response_metadata, proof) = + Self::maybe_from_proof_with_metadata(request, response, platform_version, provider)?; + Ok((main_item.ok_or(Error::NotFound)?, response_metadata, proof)) + } } impl FromProof for Identity { @@ -200,7 +233,7 @@ impl FromProof for Identity { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Identity: Sized + 'a, { @@ -232,7 +265,7 @@ impl FromProof for Identity { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((maybe_identity, mtd.clone())) + Ok((maybe_identity, mtd.clone(), proof.clone())) } } @@ -247,7 +280,7 @@ impl FromProof for Identity { platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Identity: 'a, { @@ -282,7 +315,7 @@ impl FromProof for Identity { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((maybe_identity, mtd.clone())) + Ok((maybe_identity, mtd.clone(), proof.clone())) } } @@ -296,7 +329,7 @@ impl FromProof for IdentityPublicKeys { platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where IdentityPublicKeys: 'a, { @@ -393,7 +426,7 @@ impl FromProof for IdentityPublicKeys { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((maybe_keys, mtd.clone())) + Ok((maybe_keys, mtd.clone(), proof.clone())) } } @@ -463,7 +496,7 @@ impl FromProof for IdentityNonceFetcher { platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where IdentityNonceFetcher: 'a, { @@ -498,7 +531,11 @@ impl FromProof for IdentityNonceFetcher { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((maybe_nonce.map(types::IdentityNonceFetcher), mtd.clone())) + Ok(( + maybe_nonce.map(types::IdentityNonceFetcher), + mtd.clone(), + proof.clone(), + )) } } @@ -512,7 +549,7 @@ impl FromProof for IdentityContractNo platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where IdentityContractNonceFetcher: 'a, { @@ -554,6 +591,7 @@ impl FromProof for IdentityContractNo Ok(( maybe_identity.map(types::IdentityContractNonceFetcher), mtd.clone(), + proof.clone(), )) } } @@ -568,7 +606,7 @@ impl FromProof for IdentityBalance { platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where IdentityBalance: 'a, { @@ -600,7 +638,7 @@ impl FromProof for IdentityBalance { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((maybe_identity, mtd.clone())) + Ok((maybe_identity, mtd.clone(), proof.clone())) } } @@ -614,7 +652,7 @@ impl FromProof for IdentityBalan platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where IdentityBalanceAndRevision: 'a, { @@ -648,7 +686,7 @@ impl FromProof for IdentityBalan verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((maybe_identity, mtd.clone())) + Ok((maybe_identity, mtd.clone(), proof.clone())) } } @@ -662,7 +700,7 @@ impl FromProof for DataContract { platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where DataContract: 'a, { @@ -697,7 +735,7 @@ impl FromProof for DataContract { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((maybe_contract, mtd.clone())) + Ok((maybe_contract, mtd.clone(), proof.clone())) } } @@ -711,7 +749,7 @@ impl FromProof for DataContracts { platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where DataContracts: 'a, { @@ -768,7 +806,7 @@ impl FromProof for DataContracts { None }; - Ok((maybe_contracts, mtd.clone())) + Ok((maybe_contracts, mtd.clone(), proof.clone())) } } @@ -782,7 +820,7 @@ impl FromProof for DataContractHistory platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -821,7 +859,7 @@ impl FromProof for DataContractHistory verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((maybe_history, mtd.clone())) + Ok((maybe_history, mtd.clone(), proof.clone())) } } @@ -834,7 +872,7 @@ impl FromProof for StateTransitionPro response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -877,7 +915,7 @@ impl FromProof for StateTransitionPro verify_tenderdash_proof(proof, metadata, &root_hash, provider)?; - Ok((Some(result), metadata.clone())) + Ok((Some(result), metadata.clone(), proof.clone())) } } @@ -890,7 +928,7 @@ impl FromProof for ExtendedEpochInfo { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -908,9 +946,9 @@ impl FromProof for ExtendedEpochInfo { }); } let epoch = e.pop_first().and_then(|v| v.1); - Ok((epoch, epochs.1)) + Ok((epoch, epochs.1, epochs.2)) } else { - Ok((None, epochs.1)) + Ok((None, epochs.1, epochs.2)) } } } @@ -924,7 +962,7 @@ impl FromProof for ExtendedEpochInfos { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -973,7 +1011,7 @@ impl FromProof for ExtendedEpochInfos { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((epoch_info.into_option(), mtd.clone())) + Ok((epoch_info.into_option(), mtd.clone(), proof.clone())) } } @@ -993,7 +1031,7 @@ impl FromProof for ProtocolVersionUpgrade response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1010,7 +1048,7 @@ impl FromProof for ProtocolVersionUpgrade // Convert objects to a map of Option values let response: Self = objects.into_iter().map(|(k, v)| (k, Some(v))).collect(); - Ok((response.into_option(), mtd.clone())) + Ok((response.into_option(), mtd.clone(), proof.clone())) } } @@ -1023,7 +1061,7 @@ impl FromProof for MasternodeProtoco response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1059,7 +1097,7 @@ impl FromProof for MasternodeProtoco verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; if objects.is_empty() { - return Ok((None, mtd.clone())); + return Ok((None, mtd.clone(), proof.clone())); } let votes: MasternodeProtocolVotes = objects .into_iter() @@ -1080,7 +1118,7 @@ impl FromProof for MasternodeProtoco }) .collect::>()?; - Ok((votes.into_option(), mtd.clone())) + Ok((votes.into_option(), mtd.clone(), proof.clone())) } } @@ -1093,7 +1131,7 @@ impl FromProof for Elements { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1116,7 +1154,7 @@ impl FromProof for Elements { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((objects.into_option(), mtd.clone())) + Ok((objects.into_option(), mtd.clone(), proof.clone())) } } @@ -1135,7 +1173,7 @@ where platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: 'a, { @@ -1167,7 +1205,7 @@ where verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((documents.into_option(), mtd.clone())) + Ok((documents.into_option(), mtd.clone(), proof.clone())) } } @@ -1181,7 +1219,7 @@ impl FromProof for IdentitiesContrac platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: 'a, { @@ -1247,10 +1285,10 @@ impl FromProof for IdentitiesContrac verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; if identities_contract_keys.is_empty() { - return Ok((None, mtd.clone())); + return Ok((None, mtd.clone(), proof.clone())); } - Ok((Some(identities_contract_keys), mtd.clone())) + Ok((Some(identities_contract_keys), mtd.clone(), proof.clone())) } } @@ -1263,7 +1301,7 @@ impl FromProof for ContestedResources { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1290,7 +1328,7 @@ impl FromProof for ContestedResources { let resources: ContestedResources = items.into_iter().map(ContestedResource::Value).collect(); - Ok((resources.into_option(), mtd.clone())) + Ok((resources.into_option(), mtd.clone(), proof.clone())) } } @@ -1304,7 +1342,7 @@ impl FromProof for Contenders { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: 'a, { @@ -1342,7 +1380,7 @@ impl FromProof for Contenders { abstain_vote_tally: contested_resource_vote_state.abstaining_vote_tally, lock_vote_tally: contested_resource_vote_state.locked_vote_tally, }; - Ok((response.into_option(), mtd.clone())) + Ok((response.into_option(), mtd.clone(), proof.clone())) } } @@ -1355,7 +1393,7 @@ impl FromProof for Voters { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1384,11 +1422,11 @@ impl FromProof for Voters { verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; if voters.is_empty() { - return Ok((None, mtd.clone())); + return Ok((None, mtd.clone(), proof.clone())); } let result: Voters = voters.into_iter().map(Voter::from).collect(); - Ok((result.into_option(), mtd.clone())) + Ok((result.into_option(), mtd.clone(), proof.clone())) } } @@ -1401,7 +1439,7 @@ impl FromProof for ResourceV response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1433,7 +1471,7 @@ impl FromProof for ResourceV .map(|(id, vote)| (id, Some(vote))) .collect(); - Ok((response.into_option(), mtd.clone())) + Ok((response.into_option(), mtd.clone(), proof.clone())) } } @@ -1446,7 +1484,7 @@ impl FromProof for VotePollsGroupedByTim response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1473,7 +1511,7 @@ impl FromProof for VotePollsGroupedByTim let response = VotePollsGroupedByTimestamp(vote_polls).sorted(drive_query.order_ascending); - Ok((response.into_option(), mtd.clone())) + Ok((response.into_option(), mtd.clone(), proof.clone())) } } @@ -1486,7 +1524,7 @@ impl FromProof for PrefundedSpe response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1514,7 +1552,7 @@ impl FromProof for PrefundedSpe verify_tenderdash_proof(proof, mtd, &root_hash, provider)?; - Ok((balance.map(|v| v.into()), mtd.clone())) + Ok((balance.map(|v| v.into()), mtd.clone(), proof.clone())) } } @@ -1527,7 +1565,7 @@ impl FromProof for Vote { response: O, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, - ) -> Result<(Option, ResponseMetadata), Error> + ) -> Result<(Option, ResponseMetadata, Proof), Error> where Self: Sized + 'a, { @@ -1540,12 +1578,13 @@ impl FromProof for Vote { } }; - let (mut maybe_votes, mtd) = ResourceVotesByIdentity::maybe_from_proof_with_metadata( - request, - response, - platform_version, - provider, - )?; + let (mut maybe_votes, mtd, proof) = + ResourceVotesByIdentity::maybe_from_proof_with_metadata( + request, + response, + platform_version, + provider, + )?; let (id, vote) = match maybe_votes.as_mut() { Some(v) if v.len() > 1 => { @@ -1553,9 +1592,9 @@ impl FromProof for Vote { error: format!("expected 1 vote, got {}", v.len()), }) } - Some(v) if v.is_empty() => return Ok((None, mtd)), + Some(v) if v.is_empty() => return Ok((None, mtd, proof)), Some(v) => v.pop_first().expect("is_empty() must detect empty map"), - None => return Ok((None, mtd)), + None => return Ok((None, mtd, proof)), }; if id != id_in_request { @@ -1567,7 +1606,7 @@ impl FromProof for Vote { }); } - Ok((vote.map(Vote::ResourceVote), mtd)) + Ok((vote.map(Vote::ResourceVote), mtd, proof)) } } diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 2d8e3ec37ee..cbace417fc3 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -26,7 +26,7 @@ serde = { version = "1.0.197", default-features = false, features = [ ], optional = true } serde_json = { version = "1.0", features = ["preserve_order"], optional = true } tracing = { version = "0.1.40" } -hex = { version = "0.4.3", optional = true } +hex = { version = "0.4.3"} dotenvy = { version = "0.15.7", optional = true } envy = { version = "0.4.2", optional = true } futures = { version = "0.3.30" } @@ -66,7 +66,6 @@ mocks = [ "dpp/random-identities", "drive/serde", "drive-proof-verifier/mocks", - "dep:hex", "dep:dotenvy", "dep:envy", "dep:lru", diff --git a/packages/rs-sdk/README.md b/packages/rs-sdk/README.md index 16182f7fa6d..4d543c5857b 100644 --- a/packages/rs-sdk/README.md +++ b/packages/rs-sdk/README.md @@ -38,7 +38,7 @@ In order to build application that uses Dash Platform SDK, you need to: Dash Platform SDK supports mocking with `mocks` feature which provides a convenient way to define mock expectations and use the SDK without actual -connection to the Platform. +connection to Platform. You can see examples of mocking in [mock_fetch.rs](tests/fetch/mock_fetch.rs) and [mock_fetch_many.rs](tests/fetch/mock_fetch_many.rs). diff --git a/packages/rs-sdk/examples/read_contract.rs b/packages/rs-sdk/examples/read_contract.rs index 7dd8a3614ab..ca37f1cfa7d 100644 --- a/packages/rs-sdk/examples/read_contract.rs +++ b/packages/rs-sdk/examples/read_contract.rs @@ -48,7 +48,7 @@ async fn main() { // Convert bytes to identifier object that can be used as a Query let id = Identifier::from_bytes(&DATA_CONTRACT_ID_BYTES).expect("parse data contract id"); - // Fetch identity from the Platform + // Fetch identity from Platform let contract: Option = DataContract::fetch(&sdk, id).await.expect("fetch identity"); diff --git a/packages/rs-sdk/src/error.rs b/packages/rs-sdk/src/error.rs index 0a5024f541d..1ff0e73dddf 100644 --- a/packages/rs-sdk/src/error.rs +++ b/packages/rs-sdk/src/error.rs @@ -47,7 +47,7 @@ pub enum Error { #[error("Required {0} not found: {1}")] MissingDependency(String, String), /// Epoch not found; we must have at least one epoch - #[error("No epoch found on the Platform; it should never happen")] + #[error("No epoch found on Platform; it should never happen")] EpochNotFound, /// SDK operation timeout reached error #[error("SDK operation timeout {} secs reached: {1}", .0.as_secs())] diff --git a/packages/rs-sdk/src/mock/provider.rs b/packages/rs-sdk/src/mock/provider.rs index abac84e6729..67aadfdb016 100644 --- a/packages/rs-sdk/src/mock/provider.rs +++ b/packages/rs-sdk/src/mock/provider.rs @@ -1,4 +1,4 @@ -//! Example ContextProvider that uses the Core gRPC API to fetch data from the platform. +//! Example ContextProvider that uses the Core gRPC API to fetch data from Platform. use crate::core_client::CoreClient; use crate::platform::Fetch; @@ -12,7 +12,7 @@ use std::hash::Hash; use std::num::NonZeroUsize; use std::sync::Arc; -/// Context provider that uses the Core gRPC API to fetch data from the platform. +/// Context provider that uses the Core gRPC API to fetch data from Platform. /// /// Example [ContextProvider] used by the Sdk for testing purposes. pub struct GrpcContextProvider { @@ -40,7 +40,7 @@ pub struct GrpcContextProvider { /// Directory where to store dumped data. /// - /// This is used to store data that is fetched from the platform and can be used for testing purposes. + /// This is used to store data that is fetched from Platform and can be used for testing purposes. #[cfg(feature = "mocks")] pub dump_dir: Option, } @@ -83,7 +83,7 @@ impl GrpcContextProvider { } /// Set the directory where to store dumped data. /// - /// When set, the context provider will store data fetched from the platform into this directory. + /// When set, the context provider will store data fetched from Platform into this directory. #[cfg(feature = "mocks")] pub fn set_dump_dir(&mut self, dump_dir: Option) { self.dump_dir = dump_dir; @@ -216,7 +216,7 @@ impl ContextProvider for GrpcContextProvider { /// Thread-safe cache of various objects inside the SDK. /// -/// This is used to cache objects that are expensive to fetch from the platform, like data contracts. +/// This is used to cache objects that are expensive to fetch from Platform, like data contracts. pub struct Cache { // We use a Mutex to allow access to the cache when we don't have mutable &self // And we use Arc to allow multiple threads to access the cache without having to clone it diff --git a/packages/rs-sdk/src/mock/sdk.rs b/packages/rs-sdk/src/mock/sdk.rs index 8bb118281b7..d98b91aa32e 100644 --- a/packages/rs-sdk/src/mock/sdk.rs +++ b/packages/rs-sdk/src/mock/sdk.rs @@ -1,7 +1,7 @@ //! Mocking mechanisms for Dash Platform SDK. //! //! See [MockDashPlatformSdk] for more details. -use dapi_grpc::platform::v0::ResponseMetadata; +use dapi_grpc::platform::v0::{Proof, ResponseMetadata}; use dapi_grpc::{ mock::Mockable, platform::v0::{self as proto}, @@ -219,11 +219,11 @@ impl MockDashPlatformSdk { /// ## Generic Parameters /// /// - `O`: Type of the object that will be returned in response to the query. Must implement [Fetch] and [MockResponse]. - /// - `Q`: Type of the query that will be sent to the platform. Must implement [Query] and [Mockable]. + /// - `Q`: Type of the query that will be sent to Platform. Must implement [Query] and [Mockable]. /// /// ## Arguments /// - /// - `query`: Query that will be sent to the platform. + /// - `query`: Query that will be sent to Platform. /// - `object`: Object that will be returned in response to `query`, or None if the object is expected to not exist. /// /// ## Returns @@ -284,11 +284,11 @@ impl MockDashPlatformSdk { /// /// - `O`: Type of the object that will be returned in response to the query. /// Must implement [FetchMany]. `Vec` must implement [MockResponse]. - /// - `Q`: Type of the query that will be sent to the platform. Must implement [Query] and [Mockable]. + /// - `Q`: Type of the query that will be sent to Platform. Must implement [Query] and [Mockable]. /// /// ## Arguments /// - /// - `query`: Query that will be sent to the platform. + /// - `query`: Query that will be sent to Platform. /// - `objects`: Vector of objects that will be returned in response to `query`, or None if no objects are expected. /// /// ## Returns @@ -369,7 +369,7 @@ impl MockDashPlatformSdk { &self, request: O::Request, response: O::Response, - ) -> Result<(Option, ResponseMetadata), drive_proof_verifier::Error> + ) -> Result<(Option, ResponseMetadata, Proof), drive_proof_verifier::Error> where O::Request: Mockable, Option: MockResponse, @@ -381,6 +381,7 @@ impl MockDashPlatformSdk { Some(d) => ( Option::::mock_deserialize(self, d), ResponseMetadata::default(), + Proof::default(), ), None => { let version = self.version(); diff --git a/packages/rs-sdk/src/platform/block_info_from_metadata.rs b/packages/rs-sdk/src/platform/block_info_from_metadata.rs index a129e4a3234..713e1e176d4 100644 --- a/packages/rs-sdk/src/platform/block_info_from_metadata.rs +++ b/packages/rs-sdk/src/platform/block_info_from_metadata.rs @@ -24,7 +24,7 @@ use drive::error::proof::ProofError; /// /// # Errors /// Returns an error if: -/// - The `epoch` value in the response metadata exceeds the maximum value that can be represented by a 16-bit integer. This is considered a data validity error as it indicates the platform returned an unexpectedly high epoch number. +/// - The `epoch` value in the response metadata exceeds the maximum value that can be represented by a 16-bit integer. This is considered a data validity error as it indicates Platform returned an unexpectedly high epoch number. /// /// The function encapsulates errors into the application's own `Error` type, providing a unified interface for error handling across the application. pub fn block_info_from_metadata(response_metadata: &ResponseMetadata) -> Result { diff --git a/packages/rs-sdk/src/platform/delegate.rs b/packages/rs-sdk/src/platform/delegate.rs index 6a84fa9b26e..37b5e47bc8e 100644 --- a/packages/rs-sdk/src/platform/delegate.rs +++ b/packages/rs-sdk/src/platform/delegate.rs @@ -83,7 +83,7 @@ macro_rules! delegate_from_proof_variant { response: O, version: &dpp::version::PlatformVersion, provider: &'a dyn drive_proof_verifier::ContextProvider, - ) -> Result<(Option, ResponseMetadata), drive_proof_verifier::Error> + ) -> Result<(Option, ResponseMetadata, dapi_grpc::platform::v0::Proof), drive_proof_verifier::Error> where Self: Sized + 'a, { diff --git a/packages/rs-sdk/src/platform/document_query.rs b/packages/rs-sdk/src/platform/document_query.rs index 73e54fe0644..7beb977643b 100644 --- a/packages/rs-sdk/src/platform/document_query.rs +++ b/packages/rs-sdk/src/platform/document_query.rs @@ -8,7 +8,7 @@ use dapi_grpc::platform::v0::get_documents_request::Version::V0; use dapi_grpc::platform::v0::{ self as platform_proto, get_documents_request::{get_documents_request_v0::Start, GetDocumentsRequestV0}, - GetDocumentsRequest, ResponseMetadata, + GetDocumentsRequest, Proof, ResponseMetadata, }; use dpp::{ data_contract::{ @@ -162,21 +162,25 @@ impl FromProof for Document { response: O, version: &dpp::version::PlatformVersion, provider: &'a dyn drive_proof_verifier::ContextProvider, - ) -> Result<(Option, ResponseMetadata), drive_proof_verifier::Error> + ) -> Result<(Option, ResponseMetadata, Proof), drive_proof_verifier::Error> where Self: Sized + 'a, { let request: Self::Request = request.into(); - let (documents, metadata): (Option, ResponseMetadata) = + let (documents, metadata, proof): (Option, ResponseMetadata, Proof) = >::maybe_from_proof_with_metadata( request, response, version, provider, )?; match documents { - None => Ok((None, metadata)), + None => Ok((None, metadata, proof)), Some(docs) => match docs.len() { - 0 | 1 => Ok((docs.into_iter().next().and_then(|(_, v)| v), metadata)), + 0 | 1 => Ok(( + docs.into_iter().next().and_then(|(_, v)| v), + metadata, + proof, + )), n => Err(drive_proof_verifier::Error::ResponseDecodeError { error: format!("expected 1 element, got {}", n), }), @@ -193,7 +197,7 @@ impl FromProof for drive_proof_verifier::types::Documents { response: O, version: &dpp::version::PlatformVersion, provider: &'a dyn drive_proof_verifier::ContextProvider, - ) -> Result<(Option, ResponseMetadata), drive_proof_verifier::Error> + ) -> Result<(Option, ResponseMetadata, Proof), drive_proof_verifier::Error> where Self: Sized + 'a, { diff --git a/packages/rs-sdk/src/platform/fetch.rs b/packages/rs-sdk/src/platform/fetch.rs index 661445c206a..c567b1fbc18 100644 --- a/packages/rs-sdk/src/platform/fetch.rs +++ b/packages/rs-sdk/src/platform/fetch.rs @@ -4,13 +4,13 @@ //! It allows fetching of various types of data such as `Identity`, `DataContract`, and `Document`. //! //! ## Traits -//! - [Fetch]: An asynchronous trait that defines how to fetch data from the platform. +//! - [Fetch]: An asynchronous trait that defines how to fetch data from Platform. //! It requires the implementing type to also implement [Debug] and [FromProof] //! traits. The associated [Fetch::Request]` type needs to implement [TransportRequest]. use crate::mock::MockResponse; use crate::{error::Error, platform::query::Query, Sdk}; -use dapi_grpc::platform::v0::{self as platform_proto, ResponseMetadata}; +use dapi_grpc::platform::v0::{self as platform_proto, Proof, ResponseMetadata}; use dpp::voting::votes::Vote; use dpp::{ block::extended_epoch_info::ExtendedEpochInfo, document::Document, platform_value::Identifier, @@ -23,9 +23,9 @@ use std::fmt::Debug; use super::types::identity::IdentityRequest; use super::DocumentQuery; -/// Trait implemented by objects that can be fetched from the platform. +/// Trait implemented by objects that can be fetched from Platform. /// -/// To fetch an object from the platform, you need to define some query (criteria that fetched object must match) and +/// To fetch an object from Platform, you need to define some query (criteria that fetched object must match) and /// use [Fetch::fetch()] for your object type. /// /// Implementators of this trait should implement at least the [fetch_with_metadata()](Fetch::fetch_with_metadata) @@ -59,16 +59,16 @@ where Response = <::Request as DapiRequest>::Response, >, { - /// Type of request used to fetch data from the platform. + /// Type of request used to fetch data from Platform. /// /// Most likely, one of the types defined in [`dapi_grpc::platform::v0`]. /// /// This type must implement [`TransportRequest`] and [`MockRequest`]. type Request: TransportRequest + Into<::Request>>::Request>; - /// Fetch single object from the Platfom. + /// Fetch single object from Platform. /// - /// Fetch object from the platform that satisfies provided [Query]. + /// Fetch object from Platform that satisfies provided [Query]. /// Most often, the Query is an [Identifier] of the object to be fetched. /// /// ## Parameters @@ -93,15 +93,16 @@ where Self::fetch_with_settings(sdk, query, RequestSettings::default()).await } - /// Fetch single object from the Platfom. + /// Fetch single object from Platform with metadata. /// - /// Fetch object from the platform that satisfies provided [Query]. + /// Fetch object from Platform that satisfies provided [Query]. /// Most often, the Query is an [Identifier] of the object to be fetched. /// /// ## Parameters /// /// - `sdk`: An instance of [Sdk]. /// - `query`: A query parameter implementing [`crate::platform::query::Query`] to specify the data to be fetched. + /// - `settings`: An optional `RequestSettings` to give greater flexibility on the request. /// /// ## Returns /// @@ -137,9 +138,58 @@ where } } - /// Fetch single object from the Platfom. + /// Fetch single object from Platform with metadata and underlying proof. /// - /// Fetch object from the platform that satisfies provided [Query]. + /// Fetch object from Platform that satisfies provided [Query]. + /// Most often, the Query is an [Identifier] of the object to be fetched. + /// + /// This method is meant to give the user library a way to see the underlying proof + /// for educational purposes. This method should most likely only be used for debugging. + /// + /// ## Parameters + /// + /// - `sdk`: An instance of [Sdk]. + /// - `query`: A query parameter implementing [`crate::platform::query::Query`] to specify the data to be fetched. + /// - `settings`: An optional `RequestSettings` to give greater flexibility on the request. + /// + /// ## Returns + /// + /// Returns: + /// * `Ok(Some(Self))` when object is found + /// * `Ok(None)` when object is not found + /// * [`Err(Error)`](Error) when an error occurs + /// + /// ## Error Handling + /// + /// Any errors encountered during the execution are returned as [Error] instances. + async fn fetch_with_metadata_and_proof::Request>>( + sdk: &Sdk, + query: Q, + settings: Option, + ) -> Result<(Option, ResponseMetadata, Proof), Error> { + let request = query.query(sdk.prove())?; + + let response = request + .clone() + .execute(sdk, settings.unwrap_or_default()) + .await?; + + let object_type = std::any::type_name::().to_string(); + tracing::trace!(request = ?request, response = ?response, object_type, "fetched object from platform"); + + let (object, response_metadata, proof): (Option, ResponseMetadata, Proof) = sdk + .parse_proof_with_metadata_and_proof(request, response) + .await?; + + match object { + Some(item) => Ok((item.into(), response_metadata, proof)), + None => Ok((None, response_metadata, proof)), + } + } + + /// Fetch single object from Platform. + /// + /// Fetch object from Platform that satisfies provided [Query]. /// Most often, the Query is an [Identifier] of the object to be fetched. /// /// ## Parameters @@ -167,7 +217,7 @@ where Ok(object) } - /// Fetch single object from the Platform by identifier. + /// Fetch single object from Platform by identifier. /// /// Convenience method that allows fetching objects by identifier for types that implement [Query] for [Identifier]. /// diff --git a/packages/rs-sdk/src/platform/fetch_many.rs b/packages/rs-sdk/src/platform/fetch_many.rs index c8151ffc3a1..b2891412c7b 100644 --- a/packages/rs-sdk/src/platform/fetch_many.rs +++ b/packages/rs-sdk/src/platform/fetch_many.rs @@ -1,9 +1,9 @@ -//! Fetch multiple objects from the Platform. +//! Fetch multiple objects from Platform. //! -//! This module provides a trait to fetch multiple objects from the platform. +//! This module provides a trait to fetch multiple objects from Platform. //! //! ## Traits -//! - `[FetchMany]`: An async trait that fetches multiple items of a specific type from the platform. +//! - `[FetchMany]`: An async trait that fetches multiple items of a specific type from Platform. use crate::{ error::Error, mock::MockResponse, @@ -39,9 +39,9 @@ use std::collections::BTreeMap; use super::LimitQuery; -/// Fetch multiple objects from the Platform. +/// Fetch multiple objects from Platform. /// -/// To fetch multiple objects from the platform, you need to define some query (criteria that fetched objects must match) +/// To fetch multiple objects from Platform, you need to define some query (criteria that fetched objects must match) /// and use [FetchMany::fetch_many()] for your object type. /// /// You can also use convenience methods: @@ -88,7 +88,7 @@ where > + Send + Default, { - /// Type of request used to fetch multiple objects from the platform. + /// Type of request used to fetch multiple objects from Platform. /// /// Most likely, one of the types defined in [`dapi_grpc::platform::v0`]. /// @@ -156,7 +156,7 @@ where Ok(object) } - /// Fetch multiple objects from the Platform by their identifiers. + /// Fetch multiple objects from Platform by their identifiers. /// /// Convenience method to fetch multiple objects by their identifiers. /// See [FetchMany] and [FetchMany::fetch_many()] for more detailed documentation. @@ -180,7 +180,7 @@ where Self::fetch_many(sdk, ids).await } - /// Fetch multiple objects from the Platform with limit. + /// Fetch multiple objects from Platform with limit. /// /// Fetches up to `limit` objects matching the `query`. /// See [FetchMany] and [FetchMany::fetch_many()] for more detailed documentation. @@ -208,7 +208,7 @@ where } } -/// Fetch documents from the Platform. +/// Fetch documents from Platform. /// /// Returns [Documents](dpp::document::Document) indexed by their [Identifier](dpp::prelude::Identifier). /// diff --git a/packages/rs-sdk/src/platform/query.rs b/packages/rs-sdk/src/platform/query.rs index 1dd3b06be8f..82ba292ca4d 100644 --- a/packages/rs-sdk/src/platform/query.rs +++ b/packages/rs-sdk/src/platform/query.rs @@ -1,6 +1,6 @@ -//! Query trait representing criteria for fetching data from the platform. +//! Query trait representing criteria for fetching data from Platform. //! -//! [Query] trait is used to specify individual objects as well as search criteria for fetching multiple objects from the platform. +//! [Query] trait is used to specify individual objects as well as search criteria for fetching multiple objects from Platform. use dapi_grpc::mock::Mockable; use dapi_grpc::platform::v0::get_contested_resource_identity_votes_request::GetContestedResourceIdentityVotesRequestV0; use dapi_grpc::platform::v0::get_contested_resource_voters_for_identity_request::GetContestedResourceVotersForIdentityRequestV0; @@ -31,14 +31,14 @@ use std::fmt::Debug; use crate::{error::Error, platform::document_query::DocumentQuery}; use super::types::epoch::EpochQuery; -/// Default limit of epoch records returned by the platform. +/// Default limit of epoch records returned by Platform. pub const DEFAULT_EPOCH_QUERY_LIMIT: u32 = 100; -/// Default limit of epoch records returned by the platform. +/// Default limit of epoch records returned by Platform. pub const DEFAULT_NODES_VOTING_LIMIT: u32 = 100; /// Trait implemented by objects that can be used as queries. /// -/// [Query] trait is used to specify criteria for fetching data from the platform. -/// It can be used to specify individual objects as well as search criteria for fetching multiple objects from the platform. +/// [Query] trait is used to specify criteria for fetching data from Platform. +/// It can be used to specify individual objects as well as search criteria for fetching multiple objects from Platform. /// /// Some examples of queries include: /// @@ -189,7 +189,7 @@ pub struct QueryStartInfo { /// Wrapper around query that allows to specify limit. /// -/// A query that can be used specify limit when fetching multiple objects from the platform +/// A query that can be used specify limit when fetching multiple objects from Platform /// using [`FetchMany`](crate::platform::FetchMany) trait. /// /// ## Example diff --git a/packages/rs-sdk/src/platform/transition/broadcast_identity.rs b/packages/rs-sdk/src/platform/transition/broadcast_identity.rs index 744bd158c43..5bce4205cfe 100644 --- a/packages/rs-sdk/src/platform/transition/broadcast_identity.rs +++ b/packages/rs-sdk/src/platform/transition/broadcast_identity.rs @@ -1,7 +1,7 @@ -//! Broadcast trait representing the action of broadcasting a new identity state transition to the platform. +//! Broadcast trait representing the action of broadcasting a new identity state transition to Platform. //! //! The [BroadcastRequestForNewIdentity] trait is designed for the creation and broadcasting of new identity state transitions. -//! This involves the generation of a state transition object, signing it, and then broadcasting it to the platform. +//! This involves the generation of a state transition object, signing it, and then broadcasting it to Platform. //! //! This trait is expected to be implemented by objects that encapsulate the necessary data and logic to perform //! these operations, including the handling of asset lock proof and signing operations. @@ -23,11 +23,11 @@ use crate::error::Error; /// Trait implemented by objects that can be used to broadcast new identity state transitions. /// -/// [BroadcastRequestForNewIdentity] trait is used when a new identity needs to be created and broadcasted on the platform. +/// [BroadcastRequestForNewIdentity] trait is used when a new identity needs to be created and broadcasted on Platform. /// It encapsulates the data, the signing process, and the logic required to perform the broadcast operation. /// /// Implementors of this trait will typically be responsible for creating an identity state transition, -/// signing it with the provided private key and signer, and preparing it for transport to the platform. +/// signing it with the provided private key and signer, and preparing it for transport to Platform. /// /// ## Example /// @@ -53,7 +53,7 @@ use crate::error::Error; /// /// match result { /// Ok(transport_request) => { -/// // The transport_request can now be sent to the platform to broadcast the new identity. +/// // The transport_request can now be sent to Platform to broadcast the new identity. /// } /// Err(e) => { /// // Handle the error @@ -76,10 +76,10 @@ pub(crate) trait BroadcastRequestForNewIdentity: /// * `asset_lock_proof` - The proof that locks the asset which is used to create the identity. /// * `asset_lock_proof_private_key` - The private key associated with the asset lock proof. /// * `signer` - The signer to be used for signing the state transition. - /// * `platform_version` - The version of the platform for which the state transition is intended. + /// * `platform_version` - The version of Platform for which the state transition is intended. /// /// # Returns - /// On success, this method yields an instance of the `TransportRequest` type (`T`), which can be used to broadcast the new identity state transition to the platform. + /// On success, this method yields an instance of the `TransportRequest` type (`T`), which can be used to broadcast the new identity state transition to Platform. /// On failure, it yields an [`Error`]. /// /// # Error Handling diff --git a/packages/rs-sdk/src/platform/transition/broadcast_request.rs b/packages/rs-sdk/src/platform/transition/broadcast_request.rs index af481126868..4218b4dbd5f 100644 --- a/packages/rs-sdk/src/platform/transition/broadcast_request.rs +++ b/packages/rs-sdk/src/platform/transition/broadcast_request.rs @@ -1,7 +1,7 @@ -//! Broadcast trait representing the action of broadcasting a new identity state transition to the platform. +//! Broadcast trait representing the action of broadcasting a new identity state transition to Platform. //! //! The [BroadcastRequestForNewIdentity] trait is designed for the creation and broadcasting of new identity state transitions. -//! This involves the generation of a state transition object, signing it, and then broadcasting it to the platform. +//! This involves the generation of a state transition object, signing it, and then broadcasting it to Platform. //! //! This trait is expected to be implemented by objects that encapsulate the necessary data and logic to perform //! these operations, including the handling of asset lock proof and signing operations. @@ -22,11 +22,11 @@ use crate::error::Error; /// Trait implemented by objects that can be used to broadcast new identity state transitions. /// -/// [BroadcastRequestForNewIdentity] trait is used when a new identity needs to be created and broadcasted on the platform. +/// [BroadcastRequestForNewIdentity] trait is used when a new identity needs to be created and broadcasted on Platform. /// It encapsulates the data, the signing process, and the logic required to perform the broadcast operation. /// /// Implementors of this trait will typically be responsible for creating an identity state transition, -/// signing it with the provided private key and signer, and preparing it for transport to the platform. +/// signing it with the provided private key and signer, and preparing it for transport to Platform. /// /// ## Example /// @@ -52,7 +52,7 @@ use crate::error::Error; /// /// match result { /// Ok(transport_request) => { -/// // The transport_request can now be sent to the platform to broadcast the new identity. +/// // The transport_request can now be sent to Platform to broadcast the new identity. /// } /// Err(e) => { /// // Handle the error @@ -73,10 +73,10 @@ pub trait BroadcastRequestForStateTransition: Send + Debug + Clone { /// * `asset_lock_proof` - The proof that locks the asset which is used to create the identity. /// * `asset_lock_proof_private_key` - The private key associated with the asset lock proof. /// * `signer` - The signer to be used for signing the state transition. - /// * `platform_version` - The version of the platform for which the state transition is intended. + /// * `platform_version` - The version of Platform for which the state transition is intended. /// /// # Returns - /// On success, this method yields an instance of the `TransportRequest` type (`T`), which can be used to broadcast the new identity state transition to the platform. + /// On success, this method yields an instance of the `TransportRequest` type (`T`), which can be used to broadcast the new identity state transition to Platform. /// On failure, it yields an [`Error`]. /// /// # Error Handling diff --git a/packages/rs-sdk/src/platform/types/epoch.rs b/packages/rs-sdk/src/platform/types/epoch.rs index 6db702cbfdb..b1ca7b15f13 100644 --- a/packages/rs-sdk/src/platform/types/epoch.rs +++ b/packages/rs-sdk/src/platform/types/epoch.rs @@ -1,6 +1,6 @@ //! Epoch-related types and helpers use async_trait::async_trait; -use dapi_grpc::platform::v0::{GetEpochsInfoRequest, ResponseMetadata}; +use dapi_grpc::platform::v0::{GetEpochsInfoRequest, Proof, ResponseMetadata}; use dpp::block::{epoch::EpochIndex, extended_epoch_info::ExtendedEpochInfo}; use crate::{ @@ -12,10 +12,14 @@ use crate::{ /// Helper trait for managing Epoch information pub trait ExtendedEpochInfoEx: Sized { - /// Fetch current (the latest) epoch from the platform. + /// Fetch current (the latest) epoch from Platform. async fn fetch_current(sdk: &Sdk) -> Result; - /// Fetch current (the latest) epoch from the platform with metadata. + /// Fetch current (the latest) epoch from Platform with metadata. async fn fetch_current_with_metadata(sdk: &Sdk) -> Result<(Self, ResponseMetadata), Error>; + /// Fetch current (the latest) epoch from Platform with metadata and proof. + async fn fetch_current_with_metadata_and_proof( + sdk: &Sdk, + ) -> Result<(Self, ResponseMetadata, Proof), Error>; } #[async_trait] @@ -39,8 +43,26 @@ impl ExtendedEpochInfoEx for ExtendedEpochInfo { Ok((epoch.ok_or(Error::EpochNotFound)?, metadata)) } + + async fn fetch_current_with_metadata_and_proof( + sdk: &Sdk, + ) -> Result<(Self, ResponseMetadata, Proof), Error> { + let query = LimitQuery { + query: EpochQuery { + start: None, + ascending: false, + }, + limit: Some(1), + start_info: None, + }; + + let (epoch, metadata, proof) = + Self::fetch_with_metadata_and_proof(sdk, query, None).await?; + + Ok((epoch.ok_or(Error::EpochNotFound)?, metadata, proof)) + } } -/// Query used to fetch multiple epochs from the platform. +/// Query used to fetch multiple epochs from Platform. #[derive(Clone, Debug)] pub struct EpochQuery { /// Starting number of epoch to fetch. @@ -49,8 +71,8 @@ pub struct EpochQuery { /// /// Value of `None` has the following meaning: /// - /// * if ascending is true, then it is the first epoch on the Platform (eg. epoch 0). - /// * if ascending is false, then it is the last epoch on the Platform (eg. most recent epoch). + /// * if ascending is true, then it is the first epoch on Platform (eg. epoch 0). + /// * if ascending is false, then it is the last epoch on Platform (eg. most recent epoch). pub start: Option, /// Sort order. Default is ascending (true), which means that the first returned epoch is the oldest one. pub ascending: bool, diff --git a/packages/rs-sdk/src/platform/types/version_votes.rs b/packages/rs-sdk/src/platform/types/version_votes.rs index 4c926850d94..36beda102c3 100644 --- a/packages/rs-sdk/src/platform/types/version_votes.rs +++ b/packages/rs-sdk/src/platform/types/version_votes.rs @@ -11,7 +11,7 @@ use drive_proof_verifier::types::{MasternodeProtocolVote, MasternodeProtocolVote /// Helper trait for managing MasternodeProtocolVote objects #[async_trait] pub trait MasternodeProtocolVoteEx { - /// Fetch masternode votes for version update from the platform. + /// Fetch masternode votes for version update from Platform. /// /// ## Parameters /// diff --git a/packages/rs-sdk/src/sdk.rs b/packages/rs-sdk/src/sdk.rs index 96b0e23729e..8d7c3abcdc4 100644 --- a/packages/rs-sdk/src/sdk.rs +++ b/packages/rs-sdk/src/sdk.rs @@ -8,10 +8,13 @@ use crate::mock::{provider::GrpcContextProvider, MockDashPlatformSdk}; use crate::platform::transition::put_settings::PutSettings; use crate::platform::{Fetch, Identifier}; use dapi_grpc::mock::Mockable; -use dapi_grpc::platform::v0::ResponseMetadata; +use dapi_grpc::platform::v0::{Proof, ResponseMetadata}; +use dpp::bincode; +use dpp::bincode::error::DecodeError; use dpp::identity::identity_nonce::IDENTITY_NONCE_VALUE_FILTER; use dpp::prelude::IdentityNonce; use dpp::version::{PlatformVersion, PlatformVersionCurrentVersion}; +use drive::grovedb::operations::proof::GroveDBProof; use drive_proof_verifier::types::{IdentityContractNonceFetcher, IdentityNonceFetcher}; #[cfg(feature = "mocks")] use drive_proof_verifier::MockContextProvider; @@ -78,7 +81,7 @@ pub type LastQueryTimestamp = u64; #[derive(Clone)] pub struct Sdk { inner: SdkInstance, - /// Use proofs when retrieving data from the platform. + /// Use proofs when retrieving data from Platform. /// /// This is set to `true` by default. `false` is not implemented yet. proofs: bool, @@ -193,6 +196,42 @@ impl Sdk { request: O::Request, response: O::Response, ) -> Result<(Option, ResponseMetadata), drive_proof_verifier::Error> + where + O::Request: Mockable, + { + let provider = self + .context_provider + .as_ref() + .ok_or(drive_proof_verifier::Error::ContextProviderNotSet)?; + + match self.inner { + SdkInstance::Dapi { .. } => { + O::maybe_from_proof_with_metadata(request, response, self.version(), &provider) + .map(|(a, b, _)| (a, b)) + } + #[cfg(feature = "mocks")] + SdkInstance::Mock { ref mock, .. } => { + let guard = mock.lock().await; + guard + .parse_proof_with_metadata(request, response) + .map(|(a, b, _)| (a, b)) + } + } + } + + /// Retrieve object `O` from proof contained in `request` (of type `R`) and `response`. + /// + /// This method is used to retrieve objects from proofs returned by Dash Platform. + /// + /// ## Generic Parameters + /// + /// - `R`: Type of the request that was used to fetch the proof. + /// - `O`: Type of the object to be retrieved from the proof. + pub(crate) async fn parse_proof_with_metadata_and_proof + MockResponse>( + &self, + request: O::Request, + response: O::Response, + ) -> Result<(Option, ResponseMetadata, Proof), drive_proof_verifier::Error> where O::Request: Mockable, { @@ -767,3 +806,32 @@ impl SdkBuilder { Ok(sdk) } } + +pub fn prettify_proof(proof: &Proof) -> String { + let config = bincode::config::standard() + .with_big_endian() + .with_no_limit(); + let grovedb_proof: Result = + bincode::decode_from_slice(&proof.grovedb_proof, config).map(|(a, _)| a); + + let grovedb_proof_string = match grovedb_proof { + Ok(proof) => format!("{}", proof), + Err(_) => "Invalid GroveDBProof".to_string(), + }; + format!( + "Proof {{ + grovedb_proof: {}, + quorum_hash: 0x{}, + signature: 0x{}, + round: {}, + block_id_hash: 0x{}, + quorum_type: {}, + }}", + grovedb_proof_string, + hex::encode(&proof.quorum_hash), + hex::encode(&proof.signature), + proof.round, + hex::encode(&proof.block_id_hash), + proof.quorum_type, + ) +} diff --git a/packages/rs-sdk/tests/fetch/config.rs b/packages/rs-sdk/tests/fetch/config.rs index fabf64cb405..a928ce317d0 100644 --- a/packages/rs-sdk/tests/fetch/config.rs +++ b/packages/rs-sdk/tests/fetch/config.rs @@ -140,7 +140,7 @@ impl Config { /// /// ## Feature flags /// - /// * `offline-testing` is not set - connect to the platform and generate + /// * `offline-testing` is not set - connect to Platform and generate /// new test vectors during execution /// * `offline-testing` is set - use mock implementation and /// load existing test vectors from disk diff --git a/packages/rs-sdk/tests/fetch/epoch.rs b/packages/rs-sdk/tests/fetch/epoch.rs index 603bc4669e8..efd64eef62d 100644 --- a/packages/rs-sdk/tests/fetch/epoch.rs +++ b/packages/rs-sdk/tests/fetch/epoch.rs @@ -165,7 +165,7 @@ async fn test_epoch_fetch_future() { assert!(epoch.is_none()); } -/// Fetch current epoch from the platform. +/// Fetch current epoch from Platform. #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_epoch_fetch_current() { setup_logs(); From 5b32b0bed1d838e5551466693b56413a635a11d5 Mon Sep 17 00:00:00 2001 From: QuantumExplorer Date: Mon, 29 Jul 2024 14:18:00 +0700 Subject: [PATCH 27/37] chore: update to GroveDB Version 1.0.0 (#2015) --- Cargo.lock | 87 ++++++++++++++++++++++++++---------- packages/rs-drive/Cargo.toml | 10 ++--- 2 files changed, 68 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5d45608877..649073aac79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1285,7 +1285,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", - "serde_with", + "serde_with 2.3.3", ] [[package]] @@ -2054,8 +2054,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "grovedb" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=4d14ae374d58a1b04a4dc63b1435e1781ccff1d1#4d14ae374d58a1b04a4dc63b1435e1781ccff1d1" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e611dc8cdecac92dcce9689ff85084ef0082516f6be36e957ed3beaa62bdc342" dependencies = [ "axum 0.7.5", "bincode", @@ -2087,8 +2088,9 @@ dependencies = [ [[package]] name = "grovedb-costs" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=4d14ae374d58a1b04a4dc63b1435e1781ccff1d1#4d14ae374d58a1b04a4dc63b1435e1781ccff1d1" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63a4e637e5034ab3a9ad0c3b062725296bbab5fc3390939113079832922c4f6f" dependencies = [ "integer-encoding", "intmap", @@ -2097,8 +2099,9 @@ dependencies = [ [[package]] name = "grovedb-merk" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=4d14ae374d58a1b04a4dc63b1435e1781ccff1d1#4d14ae374d58a1b04a4dc63b1435e1781ccff1d1" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "725053727bb275ca85ea67d8ada3e331a284f4468726cc766556eeca15e4f328" dependencies = [ "blake3", "byteorder", @@ -2121,13 +2124,15 @@ dependencies = [ [[package]] name = "grovedb-path" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=4d14ae374d58a1b04a4dc63b1435e1781ccff1d1#4d14ae374d58a1b04a4dc63b1435e1781ccff1d1" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fd729e9fadda3f464de90a4330f147a12591ead8df249f6bc99c1ba73a141aa" [[package]] name = "grovedb-storage" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=4d14ae374d58a1b04a4dc63b1435e1781ccff1d1#4d14ae374d58a1b04a4dc63b1435e1781ccff1d1" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e8f57daa8232c5f0e35a8dfa5c1a13c22af7a87c8171154de10a2ac228781a" dependencies = [ "blake3", "grovedb-costs", @@ -2145,9 +2150,9 @@ dependencies = [ [[package]] name = "grovedb-version" -version = "1.0.0-rc.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c7d7fcdd5b7873364d38ef0e9144871c11a2124f0192fc6afd6254a93f90273" +checksum = "5ccd8dff97c56a1ba1337eb054ca4da338db5ec06ce896cb97827076ce10d323" dependencies = [ "thiserror", "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2155,8 +2160,9 @@ dependencies = [ [[package]] name = "grovedb-visualize" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=4d14ae374d58a1b04a4dc63b1435e1781ccff1d1#4d14ae374d58a1b04a4dc63b1435e1781ccff1d1" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ed487d564133a6975c6937ce1a69d2831c041c619cedbf776e292e0d9e6b11" dependencies = [ "hex", "itertools 0.12.1", @@ -2164,10 +2170,12 @@ dependencies = [ [[package]] name = "grovedbg-types" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=4d14ae374d58a1b04a4dc63b1435e1781ccff1d1#4d14ae374d58a1b04a4dc63b1435e1781ccff1d1" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce4d345770f58e11e3f674106889d6aa28241c20cb652dd07c3101356b2b2fdd" dependencies = [ "serde", + "serde_with 3.9.0", ] [[package]] @@ -4456,12 +4464,13 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" dependencies = [ "indexmap 2.2.6", "itoa", + "memchr", "ryu", "serde", ] @@ -4520,7 +4529,25 @@ dependencies = [ "indexmap 1.9.3", "serde", "serde_json", - "serde_with_macros", + "serde_with_macros 2.3.3", + "time", +] + +[[package]] +name = "serde_with" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.6", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros 3.9.0", "time", ] @@ -4536,6 +4563,18 @@ dependencies = [ "syn 2.0.72", ] +[[package]] +name = "serde_with_macros" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "sha1" version = "0.10.6" @@ -5104,9 +5143,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.1" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", @@ -5610,9 +5649,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "versioned-feature-core" diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 26f2865a98c..a7e04de12be 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -51,11 +51,11 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "2.0.0", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.11.0", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "4d14ae374d58a1b04a4dc63b1435e1781ccff1d1", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "4d14ae374d58a1b04a4dc63b1435e1781ccff1d1", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "4d14ae374d58a1b04a4dc63b1435e1781ccff1d1" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "4d14ae374d58a1b04a4dc63b1435e1781ccff1d1", optional = true } -grovedb-version = "1.0.0-rc.2" +grovedb = { version = "1.0.0", optional = true, default-features = false } +grovedb-costs = { version = "1.0.0", optional = true } +grovedb-path = { version = "1.0.0" } +grovedb-storage = { version = "1.0.0", optional = true } +grovedb-version = "1.0.0" [dev-dependencies] criterion = "0.3.5" From 2f2ba104230e375bec201801a0e7895039098947 Mon Sep 17 00:00:00 2001 From: pshenmic Date: Mon, 29 Jul 2024 21:09:56 +0700 Subject: [PATCH 28/37] fix(dashmate): remove `dash-cli` from protx registration instructions (#2018) --- .../registerMasternodeWithCoreWallet.js | 26 ++----------------- 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/packages/dashmate/src/listr/tasks/setup/regular/registerMasternode/registerMasternodeWithCoreWallet.js b/packages/dashmate/src/listr/tasks/setup/regular/registerMasternode/registerMasternodeWithCoreWallet.js index dda9811bcf3..1b001be6114 100644 --- a/packages/dashmate/src/listr/tasks/setup/regular/registerMasternode/registerMasternodeWithCoreWallet.js +++ b/packages/dashmate/src/listr/tasks/setup/regular/registerMasternode/registerMasternodeWithCoreWallet.js @@ -222,38 +222,16 @@ export default function registerMasternodeWithCoreWalletFactory(createIpAndPorts let command; if (ctx.isHP) { - command = `dash-cli protx register_evo \\ - ${state.collateral.txId} \\ - ${state.collateral.outputIndex} \\ - ${state.ipAndPorts.ip}:${state.ipAndPorts.coreP2PPort} \\ - ${state.keys.ownerAddress} \\ - ${operatorPublicKeyHex} \\ - ${state.keys.votingAddress} \\ - ${state.operator.rewardShare} \\ - ${state.keys.payoutAddress} \\ - ${deriveTenderdashNodeId(state.platformNodeKey)} \\ - ${platformP2PPort} \\ - ${platformHTTPPort}`; + command = `protx register_evo ${state.collateral.txId} ${state.collateral.outputIndex} ${state.ipAndPorts.ip}:${state.ipAndPorts.coreP2PPort} ${state.keys.ownerAddress} ${operatorPublicKeyHex} ${state.keys.votingAddress} ${state.operator.rewardShare} ${state.keys.payoutAddress} ${deriveTenderdashNodeId(state.platformNodeKey)} ${platformP2PPort} ${platformHTTPPort}`; } else { - command = `dash-cli protx register \\ - ${state.collateral.txId} \\ - ${state.collateral.outputIndex} \\ - ${state.ipAndPorts.ip}:${state.ipAndPorts.coreP2PPort} \\ - ${state.keys.ownerAddress} \\ - ${operatorPublicKeyHex} \\ - ${state.keys.votingAddress} \\ - ${state.operator.rewardShare} \\ - ${state.keys.payoutAddress}`; + command = `protx register ${state.collateral.txId} ${state.collateral.outputIndex} ${state.ipAndPorts.ip}:${state.ipAndPorts.coreP2PPort} ${state.keys.ownerAddress} ${operatorPublicKeyHex} ${state.keys.votingAddress} ${state.operator.rewardShare} ${state.keys.payoutAddress}`; } // Wrap the command to fit the terminal width (listr uses new lines to wrap the text) if (!ctx.isVerbose) { - command = command.replace(/\\/g, ''); command = wrapAnsi(command, process.stdout.columns - 3, { - hard: true, trim: false, }); - command = command.replace(/\n/g, '\\\n'); } // TODO: We need to give more info on how to run this command From a47e7470ef0a5adc94023f72b7aa28953a43bad5 Mon Sep 17 00:00:00 2001 From: lklimek <842586+lklimek@users.noreply.github.com> Date: Mon, 29 Jul 2024 16:14:24 +0200 Subject: [PATCH 29/37] build: update tenderdash to 1.1.0 (#2017) --- Cargo.lock | 12 ++++++------ packages/dapi-grpc/Cargo.toml | 2 +- .../configs/defaults/getBaseConfigFactory.js | 2 +- packages/rs-drive-abci/Cargo.toml | 2 +- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 649073aac79..cfa08a6e40f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4922,8 +4922,8 @@ dependencies = [ [[package]] name = "tenderdash-abci" -version = "1.1.0-dev.1" -source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0-dev.1#04d724fb3160f0568b14f447e961d736c9c95706" +version = "1.1.0" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0#03b741f3f24281ec6990c6c343079076c549b0f8" dependencies = [ "bytes", "futures", @@ -4944,8 +4944,8 @@ dependencies = [ [[package]] name = "tenderdash-proto" -version = "1.1.0-dev.1" -source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0-dev.1#04d724fb3160f0568b14f447e961d736c9c95706" +version = "1.1.0" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0#03b741f3f24281ec6990c6c343079076c549b0f8" dependencies = [ "bytes", "chrono", @@ -4963,8 +4963,8 @@ dependencies = [ [[package]] name = "tenderdash-proto-compiler" -version = "1.1.0-dev.1" -source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0-dev.1#04d724fb3160f0568b14f447e961d736c9c95706" +version = "1.1.0" +source = "git+https://github.com/dashpay/rs-tenderdash-abci?tag=v1.1.0#03b741f3f24281ec6990c6c343079076c549b0f8" dependencies = [ "fs_extra", "prost-build 0.12.6", diff --git a/packages/dapi-grpc/Cargo.toml b/packages/dapi-grpc/Cargo.toml index 663efb16e46..f45d872eb99 100644 --- a/packages/dapi-grpc/Cargo.toml +++ b/packages/dapi-grpc/Cargo.toml @@ -42,7 +42,7 @@ tonic = { version = "0.11", features = [ serde = { version = "1.0.197", optional = true, features = ["derive"] } serde_bytes = { version = "0.11.12", optional = true } serde_json = { version = "1.0", optional = true } -tenderdash-proto = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0-dev.1", tag = "v1.1.0-dev.1", default-features = false, features = [ +tenderdash-proto = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0", tag = "v1.1.0", default-features = false, features = [ "grpc", ] } dapi-grpc-macros = { path = "../rs-dapi-grpc-macros" } diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index bd64d6c802e..9584a47fcea 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -301,7 +301,7 @@ export default function getBaseConfigFactory(homeDir) { tenderdash: { mode: 'full', docker: { - image: 'dashpay/tenderdash:1.1.0-dev.3', + image: 'dashpay/tenderdash:1.1.0', }, p2p: { host: '0.0.0.0', diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index cd2e6cbfee7..840366fe0bd 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -50,7 +50,7 @@ tracing-subscriber = { version = "0.3.16", default-features = false, features = "tracing-log", ], optional = false } atty = { version = "0.2.14", optional = false } -tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0-dev.1", tag = "v1.1.0-dev.1", features = [ +tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0", tag = "v1.1.0", features = [ "grpc", ] } lazy_static = "1.4.0" diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index 3428c0e056f..7b44463f841 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 = [ bincode = { version = "2.0.0-rc.3", features = ["serde"], optional = true } platform-serialization-derive = { path = "../rs-platform-serialization-derive", optional = true } platform-serialization = { path = "../rs-platform-serialization", optional = true } -tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0-dev.1", tag = "v1.1.0-dev.1", features = [ +tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", version = "1.1.0", tag = "v1.1.0", features = [ "crypto", ], default-features = false } tracing = { version = "0.1.37" } From c20d5fd1b9c4d7f0d28d830379607bfe2952eaed Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Mon, 29 Jul 2024 22:09:12 +0700 Subject: [PATCH 30/37] fix(dashmate): imported node is not starting (#2009) Co-authored-by: thephez --- .../dashmate/src/core/waitForCoreStart.js | 7 ++-- .../src/listr/tasks/reindexNodeTaskFactory.js | 4 +-- .../regular/importCoreDataTaskFactory.js | 29 ++++++++++++--- .../verifySystemRequirementsTaskFactory.js | 25 +++++++++---- .../setup/setupRegularPresetTaskFactory.js | 35 +++++++++++-------- .../src/listr/tasks/startNodeTaskFactory.js | 5 --- 6 files changed, 70 insertions(+), 35 deletions(-) diff --git a/packages/dashmate/src/core/waitForCoreStart.js b/packages/dashmate/src/core/waitForCoreStart.js index 8c04e8c0dd8..9edadbb6503 100644 --- a/packages/dashmate/src/core/waitForCoreStart.js +++ b/packages/dashmate/src/core/waitForCoreStart.js @@ -5,12 +5,13 @@ import wait from '../util/wait.js'; * * @typedef {waitForCoreStart} * @param {CoreService} coreService + * @param {number} [maxRetries=120] ~2 minutes + * @param {number} [delayMs=1000] * @return {Promise} */ -export default async function waitForCoreStart(coreService) { +export default async function waitForCoreStart(coreService, maxRetries = 120, delayMs = 1000) { let retries = 0; let isReady = false; - const maxRetries = 120; // ~2 minutes do { try { @@ -20,7 +21,7 @@ export default async function waitForCoreStart(coreService) { isReady = true; } catch (e) { // just wait 1 second before next try - await wait(1000); + await wait(delayMs); ++retries; } } while (!isReady && retries < maxRetries); diff --git a/packages/dashmate/src/listr/tasks/reindexNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/reindexNodeTaskFactory.js index c2c5a487384..ce61a825f2f 100644 --- a/packages/dashmate/src/listr/tasks/reindexNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/reindexNodeTaskFactory.js @@ -128,7 +128,7 @@ export default function reindexNodeTaskFactory( ctx.coreService = new CoreService(config, rpcClient, container); - await waitForCoreStart(ctx.coreService); + await waitForCoreStart(ctx.coreService, 300, 2000); // When Core is started remove reindex=1 from dashd.conf // rendering service templates without additional variables @@ -146,7 +146,7 @@ export default function reindexNodeTaskFactory( await waitForCoreSync(ctx.coreService, (verificationProgress) => { const { percent, blocks, headers } = verificationProgress; - observer.next(`${(percent * 100).toFixed(4)}%, ${blocks} / ${headers}`); + observer.next(`${(percent * 100).toFixed(1)}%, ${blocks} / ${headers}`); }); await new Promise((res) => { setTimeout(res, 2000); }); diff --git a/packages/dashmate/src/listr/tasks/setup/regular/importCoreDataTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/regular/importCoreDataTaskFactory.js index 357bdc54604..90afc38242a 100644 --- a/packages/dashmate/src/listr/tasks/setup/regular/importCoreDataTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/regular/importCoreDataTaskFactory.js @@ -1,6 +1,7 @@ import { Listr } from 'listr2'; import fs from 'fs'; import path from 'path'; +import chalk from 'chalk'; import { NETWORK_TESTNET, } from '../../../../constants.js'; @@ -74,7 +75,11 @@ function validateCoreDataDirectoryPathFactory(config) { * @param {generateEnvs} generateEnvs * @return {importCoreDataTask} */ -export default function importCoreDataTaskFactory(docker, dockerPull, generateEnvs) { +export default function importCoreDataTaskFactory( + docker, + dockerPull, + generateEnvs, +) { /** * @typedef {function} importCoreDataTask * @returns {Listr} @@ -135,6 +140,12 @@ export default function importCoreDataTaskFactory(docker, dockerPull, generateEn // eslint-disable-next-line prefer-destructuring ctx.importedExternalIp = configFileContent.match(/^externalip=([^ \n]+)/m)?.[1]; + // We need to reindex Core if there weren't all required indexed enabled before + ctx.isReindexRequired = !configFileContent.match(/^txindex=1/) + || !configFileContent.match(/^addressindex=1/) + || !configFileContent.match(/^timestampindex=1/) + || !configFileContent.match(/^spentindex=1/); + // Copy data directory to docker a volume // Create a volume @@ -193,11 +204,21 @@ export default function importCoreDataTaskFactory(docker, dockerPull, generateEn throw new Error('Cannot copy data dir to volume'); } - // TODO: Wording needs to be updated + let header; + if (ctx.isReindexRequired) { + header = chalk` {bold You existing Core node doesn't have indexes required to run ${ctx.nodeTypeName}. + Reindex of the Core data will be needed after you finish the node setup.} + + Please stop your existing Dash Core node before reindexing. + Also, disable any automatic startup services (e.g., cron, systemd) for the existing Dash Core installation.\n`; + } else { + header = ` Please stop your existing Dash Core node before starting the new dashmate-based + node ("dashmate start"). Also, disable any automatic startup services (e.g., cron, systemd) for the existing Dash Core installation.\n`; + } + await task.prompt({ type: 'confirm', - header: ` Please stop your existing Dash Core node before starting the new dashmate-based - node ("dashmate start"). Also, disable any automatic startup services (e.g., cron, systemd) for the existing Dash Core installation.\n`, + header, message: 'Press any key to continue...', default: ' ', separator: () => '', diff --git a/packages/dashmate/src/listr/tasks/setup/regular/verifySystemRequirementsTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/regular/verifySystemRequirementsTaskFactory.js index 45c1c8ae650..e110540c4d7 100644 --- a/packages/dashmate/src/listr/tasks/setup/regular/verifySystemRequirementsTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/regular/verifySystemRequirementsTaskFactory.js @@ -140,6 +140,21 @@ export default function verifySystemRequirementsTaskFactory(docker, dockerCompos } } + let message = ''; + if (ctx.isHP) { + message = `Dash Platform requires more resources than the current system provides. + Evonode rewards are paid based on block production, and resource-limited + nodes may not be able to produce blocks quickly enough to receive reward + payments. Upgrading system resources is recommended before proceeding. + + {bold This node may not receive Dash Platform reward payments due to its resource limitations.}`; + } else { + message = `Limited system resources may impact the performance of the node. + The node might not provide required services to the network in time and will get PoSe banned. + PoSe banned node aren't receiving masternode rewards. + Upgrading system resources is recommended before proceeding.`; + } + if (warnings.length > 0) { const warningsText = warnings.map((warning) => ` - ${warning}`).join('\n'); @@ -147,12 +162,7 @@ export default function verifySystemRequirementsTaskFactory(docker, dockerCompos {red ${warningsText}} - Dash Platform requires more resources than the current system provides. - Evonode rewards are paid based on block production, and resource-limited - nodes may not be able to produce blocks quickly enough to receive reward - payments. Upgrading system resources is recommended before proceeding. - - {bold This server may not receive Dash Platform reward payments due to its resource limitations.}\n`; + ${message}\n`; // This option is used for tests if (ctx.acceptUnmetSystemRequirements) { @@ -170,6 +180,9 @@ export default function verifySystemRequirementsTaskFactory(docker, dockerCompos if (!proceed) { throw new Error('System requirements have not been met'); + } else { + // eslint-disable-next-line no-param-reassign + task.output = chalk`{yellow System requirements have not been met.}`; } } } diff --git a/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js index 2e02b6cb0ba..25a88dddd92 100644 --- a/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js @@ -5,7 +5,6 @@ import chalk from 'chalk'; import { NODE_TYPE_MASTERNODE, NODE_TYPE_FULLNODE, - PRESET_MAINNET, } from '../../../constants.js'; import { @@ -49,10 +48,8 @@ export default function setupRegularPresetTaskFactory( { title: 'Node type', task: async (ctx, task) => { - let nodeTypeName; - if (!ctx.nodeType) { - nodeTypeName = await task.prompt([ + ctx.nodeTypeName = await task.prompt([ { type: 'select', // Keep this order, because each item references the text in the previous item @@ -75,16 +72,15 @@ export default function setupRegularPresetTaskFactory( }, ]); - ctx.nodeType = getNodeTypeByName(nodeTypeName); - ctx.isHP = isNodeTypeNameHighPerformance(nodeTypeName); + ctx.nodeType = getNodeTypeByName(ctx.nodeTypeName); + ctx.isHP = isNodeTypeNameHighPerformance(ctx.nodeTypeName); } else { - nodeTypeName = getNodeTypeNameByType(ctx.nodeType); + ctx.nodeTypeName = getNodeTypeNameByType(ctx.nodeType); } ctx.config = defaultConfigs.get(ctx.preset); - // TODO: We need to change this and enable platform on mainnet - ctx.config.set('platform.enable', ctx.isHP && ctx.config.get('network') !== PRESET_MAINNET); + ctx.config.set('platform.enable', ctx.isHP); ctx.config.set('core.masternode.enable', ctx.nodeType === NODE_TYPE_MASTERNODE); if (ctx.config.get('core.masternode.enable')) { @@ -99,7 +95,7 @@ export default function setupRegularPresetTaskFactory( }); // eslint-disable-next-line no-param-reassign - task.output = ctx.nodeType ? ctx.nodeType : nodeTypeName; + task.output = ctx.nodeTypeName; }, options: { persistentOutput: true, @@ -113,11 +109,11 @@ export default function setupRegularPresetTaskFactory( task: async (ctx, task) => { let header; if (ctx.isHP) { - header = ` If your HP masternode is already registered, we will import your masternode - operator and platform node keys to configure an HP masternode. Please make + header = ` If your Evo masternode is already registered, we will import your masternode + operator and platform node keys to configure an Evo masternode. Please make sure your IP address has not changed, otherwise you will need to create a provider update service transaction.\n - If you are registering a new HP masternode, dashmate will provide more + If you are registering a new Evo masternode, dashmate will provide more information and help you to generate the necessary keys.\n`; } else { header = ` If your masternode is already registered, we will import your masternode @@ -158,11 +154,20 @@ export default function setupRegularPresetTaskFactory( configFile.setConfig(ctx.config); configFile.setDefaultConfigName(ctx.preset); + let startInstructions = ''; + if (ctx.isReindexRequired) { + startInstructions = chalk`You existing Core node doesn't have indexes required to run ${ctx.nodeTypeName} + Please run {bold.cyanBright dashmate core reindex} to reindex your node. + The node will be started automatically after reindex is complete.`; + } else { + startInstructions = chalk`You can now run {bold.cyanBright dashmate start} to start your node, followed by + {bold.cyanBright dashmate status} for a node health status overview.`; + } + // eslint-disable-next-line no-param-reassign task.output = chalk`Node configuration completed successfully! - You can now run {bold.cyanBright dashmate start} to start your node, followed by - {bold.cyanBright dashmate status} for a node health status overview. + ${startInstructions} Run {bold.cyanBright dashmate --help} or {bold.cyanBright dashmate --help} for quick help on how to use dashmate to manage your node.\n`; diff --git a/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js index 94b0b5b6566..b364bcf2241 100644 --- a/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js @@ -29,11 +29,6 @@ export default function startNodeTaskFactory( * @return {Object} */ function startNodeTask(config) { - // Check external IP is set - if (config.get('core.masternode.enable')) { - config.get('externalIp', true); - } - const isMinerEnabled = config.get('core.miner.enable'); if (isMinerEnabled === true && config.get('network') !== NETWORK_LOCAL) { From 1707ba48701af71314513e9175889ec245dabd15 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Mon, 29 Jul 2024 22:15:23 +0700 Subject: [PATCH 31/37] chore(dashmate): configure mainnet (#2016) --- .github/workflows/release.yml | 2 +- .../configs/defaults/getBaseConfigFactory.js | 16 ++++---- .../configs/defaults/getLocalConfigFactory.js | 4 -- .../defaults/getMainnetConfigFactory.js | 38 +++++++++++++++++++ .../defaults/getTestnetConfigFactory.js | 10 ----- .../configs/getConfigFileMigrationsFactory.js | 23 +++++++++++ 6 files changed, 70 insertions(+), 23 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9d2d8775921..036e6ac49c4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -137,7 +137,7 @@ jobs: image_name: drive target: drive-abci - release-drive-dapi: + release-dapi-image: name: Release DAPI image secrets: inherit uses: ./.github/workflows/release-docker-image.yml diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index 9584a47fcea..b671976c609 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -54,7 +54,7 @@ export default function getBaseConfigFactory(homeDir) { port: 3001, }, docker: { - image: 'dashpay/dashd:20', + image: 'dashpay/dashd:21', commandArgs: [], }, p2p: { @@ -332,10 +332,10 @@ export default function getBaseConfigFactory(homeDir) { cacheSize: 15000, size: 5000, maxTxsBytes: 1073741824, - timeoutCheckTx: '0', - txEnqueueTimeout: '0', - txSendRateLimit: 0, - txRecvRateLimit: 0, + timeoutCheckTx: '1s', + txEnqueueTimeout: '10ms', + txSendRateLimit: 10, + txRecvRateLimit: 12, maxConcurrentCheckTx: 250, }, consensus: { @@ -388,8 +388,8 @@ export default function getBaseConfigFactory(homeDir) { app_version: '1', }, timeout: { - propose: '30000000000', - propose_delta: '1000000000', + propose: '40000000000', + propose_delta: '5000000000', vote: '2000000000', vote_delta: '500000000', commit: '1000000000', @@ -397,7 +397,7 @@ export default function getBaseConfigFactory(homeDir) { }, synchrony: { message_delay: '32000000000', - precision: '500000000', + precision: '1000000000', }, abci: { recheck_tx: true, diff --git a/packages/dashmate/configs/defaults/getLocalConfigFactory.js b/packages/dashmate/configs/defaults/getLocalConfigFactory.js index eb1a4100557..ebc4e014aed 100644 --- a/packages/dashmate/configs/defaults/getLocalConfigFactory.js +++ b/packages/dashmate/configs/defaults/getLocalConfigFactory.js @@ -24,10 +24,6 @@ export default function getLocalConfigFactory(getBaseConfig) { }, }, core: { - docker: { - image: 'dashpay/dashd:21.0.0-rc.2', - commandArgs: [], - }, p2p: { port: 20001, }, diff --git a/packages/dashmate/configs/defaults/getMainnetConfigFactory.js b/packages/dashmate/configs/defaults/getMainnetConfigFactory.js index a744b69d763..10e050bc97e 100644 --- a/packages/dashmate/configs/defaults/getMainnetConfigFactory.js +++ b/packages/dashmate/configs/defaults/getMainnetConfigFactory.js @@ -37,6 +37,44 @@ export default function getMainnetConfigFactory(homeDir, getBaseConfig) { network: NETWORK_MAINNET, platform: { enable: false, + drive: { + tenderdash: { + p2p: { + seeds: [ + { + id: '069639dfceec5f7c86257e6e9c46407c16ad1eab', + host: '34.211.174.194', + port: 26656, + }, + { + id: 'd46e2445642b2f94158ac3c2a6d90b88b83705b8', + host: '3.76.148.150', + port: 26656, + }, + { + id: 'b08a650ecfac178939f21c0c12801eccaf18a5ea', + host: '3.0.60.103', + port: 26656, + }, + { + id: '4cb4a8488eb1dbabda7fb79e47ac3c14eec73c4f', + host: '188.166.140.47', + port: 26656, + }, + ], + }, + mempool: { + timeoutCheckTx: '3s', + txEnqueueTimeout: '30ms', + txSendRateLimit: 100, + txRecvRateLimit: 120, + }, + genesis: { + chain_id: 'dash-1', + validator_quorum_type: 4, + }, + }, + }, }, }; diff --git a/packages/dashmate/configs/defaults/getTestnetConfigFactory.js b/packages/dashmate/configs/defaults/getTestnetConfigFactory.js index 477bbae1473..d21310ee2d0 100644 --- a/packages/dashmate/configs/defaults/getTestnetConfigFactory.js +++ b/packages/dashmate/configs/defaults/getTestnetConfigFactory.js @@ -24,10 +24,6 @@ export default function getTestnetConfigFactory(homeDir, getBaseConfig) { }, }, core: { - docker: { - image: 'dashpay/dashd:21.0.0-rc.2', - commandArgs: [], - }, p2p: { port: 19999, }, @@ -95,12 +91,6 @@ export default function getTestnetConfigFactory(homeDir, getBaseConfig) { ], port: 36656, }, - mempool: { - timeoutCheckTx: '1s', - txEnqueueTimeout: '10ms', - txSendRateLimit: 10, - txRecvRateLimit: 12, - }, rpc: { port: 36657, timeoutBroadcastTx: '1s', diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 41e15f806fd..c077de0bd3a 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -23,6 +23,7 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) function getConfigFileMigrations() { const base = defaultConfigs.get('base'); const testnet = defaultConfigs.get('testnet'); + const mainnet = defaultConfigs.get('mainnet'); /** * @param {string} name @@ -733,6 +734,28 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) }); return configFile; }, + '1.0.0': (configFile) => { + Object.entries(configFile.configs) + .forEach(([name, options]) => { + if (name === 'base') { + options.platform.drive.tenderdash.mempool = base.get('platform.drive.tenderdash.mempool'); + options.platform.drive.tenderdash.genesis = base.get('platform.drive.tenderdash.genesis'); + } else if (options.network === NETWORK_MAINNET) { + options.platform.drive.tenderdash.p2p = mainnet.get('platform.drive.tenderdash.p2p'); + options.platform.drive.tenderdash.mempool = mainnet.get('platform.drive.tenderdash.mempool'); + options.platform.drive.tenderdash.genesis = mainnet.get('platform.drive.tenderdash.genesis'); + + if (options.platform.drive.tenderdash.node.id !== null) { + options.platform.enable = true; + } + } + + // Update tenderdash image + options.platform.drive.tenderdash.docker.image = base.get('platform.drive.tenderdash.docker.image'); + options.core.docker.image = base.get('core.docker.image'); + }); + return configFile; + }, }; } From e16c87ae73d96d3e5fd3679af44dae467344d725 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Mon, 29 Jul 2024 23:20:56 +0700 Subject: [PATCH 32/37] chore(release): update changelog and bump version to 1.0.0 (#2020) --- CHANGELOG.md | 25 ++++++++++ Cargo.lock | 50 +++++++++---------- package.json | 2 +- packages/bench-suite/package.json | 2 +- packages/check-features/Cargo.toml | 2 +- packages/dapi-grpc/Cargo.toml | 2 +- packages/dapi-grpc/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/dashpay-contract/Cargo.toml | 2 +- packages/dashpay-contract/package.json | 2 +- packages/data-contracts/Cargo.toml | 2 +- packages/dpns-contract/Cargo.toml | 2 +- packages/dpns-contract/package.json | 2 +- packages/feature-flags-contract/Cargo.toml | 2 +- packages/feature-flags-contract/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-grpc-common/package.json | 2 +- .../Cargo.toml | 2 +- .../package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-dapi-client/Cargo.toml | 2 +- packages/rs-dapi-grpc-macros/Cargo.toml | 2 +- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 2 +- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- packages/rs-drive/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../Cargo.toml | 2 +- packages/rs-platform-serialization/Cargo.toml | 2 +- .../rs-platform-value-convertible/Cargo.toml | 2 +- packages/rs-platform-value/Cargo.toml | 2 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-versioning/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- packages/simple-signer/Cargo.toml | 2 +- packages/strategy-tests/Cargo.toml | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp/package.json | 2 +- packages/withdrawals-contract/Cargo.toml | 2 +- packages/withdrawals-contract/package.json | 2 +- 44 files changed, 92 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d911159e41..a272641ed72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ +## [1.0.0](https://github.com/dashpay/platform/compare/v1.0.0-rc.2...v1.0.0) (2024-07-29) + + +### Features + +* sdk to return proofs if requested ([#2014](https://github.com/dashpay/platform/issues/2014)) + + +### Bug Fixes + +* **dashmate:** imported node is not starting ([#2009](https://github.com/dashpay/platform/issues/2009)) +* **dashmate:** remove `dash-cli` from protx registration instructions ([#2018](https://github.com/dashpay/platform/issues/2018)) +* epoch protocol version setting ([#2013](https://github.com/dashpay/platform/issues/2013)) + + +### Build System + +* update tenderdash to 1.1.0 ([#2017](https://github.com/dashpay/platform/issues/2017)) + + +### Miscellaneous Chores + +* **dashmate:** configure mainnet ([#2016](https://github.com/dashpay/platform/issues/2016)) +* update to GroveDB Version 1.0.0 ([#2015](https://github.com/dashpay/platform/issues/2015)) + ## [1.0.0-rc.2](https://github.com/dashpay/platform/compare/v1.0.0-rc.1...v1.0.0-rc.2) (2024-07-25) diff --git a/Cargo.lock b/Cargo.lock index cfa08a6e40f..fd6a8d3b495 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -774,7 +774,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check-features" -version = "0.1.0-rc.2" +version = "0.1.0" dependencies = [ "toml", ] @@ -1140,7 +1140,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -1156,7 +1156,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "dapi-grpc", "heck 0.5.0", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "arc-swap", "async-trait", @@ -1301,7 +1301,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "platform-value", "platform-version", @@ -1311,7 +1311,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1427,7 +1427,7 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dpns-contract" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "platform-value", "platform-version", @@ -1437,7 +1437,7 @@ dependencies = [ [[package]] name = "dpp" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "anyhow", "assert_matches", @@ -1489,7 +1489,7 @@ dependencies = [ [[package]] name = "drive" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "arc-swap", "base64 0.22.1", @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "drive-abci" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "arc-swap", "assert_matches", @@ -1583,7 +1583,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "bincode", "dapi-grpc", @@ -1797,7 +1797,7 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "feature-flags-contract" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "platform-value", "platform-version", @@ -2721,7 +2721,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "assert_matches", "json-patch", @@ -2894,7 +2894,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "platform-value", "platform-version", @@ -3459,7 +3459,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platform-serialization" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "bincode", "platform-version", @@ -3467,7 +3467,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "proc-macro2", "quote", @@ -3477,7 +3477,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "base64 0.22.1", "bincode", @@ -3498,7 +3498,7 @@ dependencies = [ [[package]] name = "platform-value-convertible" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "quote", "syn 2.0.72", @@ -3506,7 +3506,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "bincode", "grovedb-version", @@ -3517,7 +3517,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "proc-macro2", "quote", @@ -4127,7 +4127,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "backon", "chrono", @@ -4644,7 +4644,7 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "simple-signer" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "base64 0.22.1", "bincode", @@ -4735,7 +4735,7 @@ dependencies = [ [[package]] name = "strategy-tests" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "bincode", "dpp", @@ -5775,7 +5775,7 @@ checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" [[package]] name = "wasm-dpp" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "anyhow", "async-trait", @@ -6048,7 +6048,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "1.0.0-rc.2" +version = "1.0.0" dependencies = [ "num_enum", "platform-value", diff --git a/package.json b/package.json index ca4bb90c545..43f2fa11564 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/platform", - "version": "1.0.0-rc.2", + "version": "1.0.0", "private": true, "scripts": { "setup": "yarn install && yarn run build && yarn run configure", diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index 27b79084ee5..18da324ff9e 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/bench-suite", "private": true, - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Dash Platform benchmark tool", "scripts": { "bench": "node ./bin/bench.js", diff --git a/packages/check-features/Cargo.toml b/packages/check-features/Cargo.toml index 219a7e5a844..9a7085c7555 100644 --- a/packages/check-features/Cargo.toml +++ b/packages/check-features/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "check-features" -version = "0.1.0-rc.2" +version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/packages/dapi-grpc/Cargo.toml b/packages/dapi-grpc/Cargo.toml index f45d872eb99..e4d63312714 100644 --- a/packages/dapi-grpc/Cargo.toml +++ b/packages/dapi-grpc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc" description = "GRPC client for Dash Platform" -version = "1.0.0-rc.2" +version = "1.0.0" authors = [ "Samuel Westrich ", "Igor Markin ", diff --git a/packages/dapi-grpc/package.json b/packages/dapi-grpc/package.json index 23377dd30df..e7903dd63b3 100644 --- a/packages/dapi-grpc/package.json +++ b/packages/dapi-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-grpc", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "DAPI GRPC definition file and generated clients", "browser": "browser.js", "main": "node.js", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index 6b8efba792c..b37764ec90c 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/dapi", "private": true, - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "A decentralized API for the Dash network", "scripts": { "api": "node scripts/api.js", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index c28c3660c3c..e21ba8f3aa6 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dash-spv", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Repository containing SPV functions used by @dashevo", "main": "index.js", "scripts": { diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 73f10c5c9e7..879533ad858 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -1,6 +1,6 @@ { "name": "dashmate", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Distribution package for Dash node installation", "scripts": { "lint": "eslint .", diff --git a/packages/dashpay-contract/Cargo.toml b/packages/dashpay-contract/Cargo.toml index 42e073f5cc0..ad27d9b174c 100644 --- a/packages/dashpay-contract/Cargo.toml +++ b/packages/dashpay-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dashpay-contract" description = "DashPay data contract schema and tools" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dashpay-contract/package.json b/packages/dashpay-contract/package.json index b75238c3b93..d42d1ad3dda 100644 --- a/packages/dashpay-contract/package.json +++ b/packages/dashpay-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dashpay-contract", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Reference contract of the DashPay DPA on Dash Evolution", "scripts": { "lint": "eslint .", diff --git a/packages/data-contracts/Cargo.toml b/packages/data-contracts/Cargo.toml index 80120b467d9..8236108e14c 100644 --- a/packages/data-contracts/Cargo.toml +++ b/packages/data-contracts/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "data-contracts" description = "Dash Platform system data contracts" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/Cargo.toml b/packages/dpns-contract/Cargo.toml index 7681b7c767b..5d9cf21627c 100644 --- a/packages/dpns-contract/Cargo.toml +++ b/packages/dpns-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dpns-contract" description = "DPNS data contract schema and tools" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/package.json b/packages/dpns-contract/package.json index 82001ee612f..560556883e4 100644 --- a/packages/dpns-contract/package.json +++ b/packages/dpns-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dpns-contract", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "A contract and helper scripts for DPNS DApp", "scripts": { "lint": "eslint .", diff --git a/packages/feature-flags-contract/Cargo.toml b/packages/feature-flags-contract/Cargo.toml index e3a10d6cfb1..98513bbcda8 100644 --- a/packages/feature-flags-contract/Cargo.toml +++ b/packages/feature-flags-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "feature-flags-contract" description = "Feature flags data contract schema and tools" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/feature-flags-contract/package.json b/packages/feature-flags-contract/package.json index 94027cd3c6e..b2779c00cfa 100644 --- a/packages/feature-flags-contract/package.json +++ b/packages/feature-flags-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/feature-flags-contract", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Data Contract to store Dash Platform feature flags", "scripts": { "build": "", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index 20e8521947f..5e319253d76 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-client", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Client library used to access Dash DAPI endpoints", "main": "lib/index.js", "contributors": [ diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index 02ded0f1695..eb7cb35d099 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -1,6 +1,6 @@ { "name": "dash", - "version": "4.0.0-rc.2", + "version": "4.0.0", "description": "Dash library for JavaScript/TypeScript ecosystem (Wallet, DAPI, Primitives, BLS, ...)", "main": "build/index.js", "unpkg": "dist/dash.min.js", diff --git a/packages/js-grpc-common/package.json b/packages/js-grpc-common/package.json index 54a69c26e85..230a3684e11 100644 --- a/packages/js-grpc-common/package.json +++ b/packages/js-grpc-common/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/grpc-common", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Common GRPC library", "main": "index.js", "scripts": { diff --git a/packages/masternode-reward-shares-contract/Cargo.toml b/packages/masternode-reward-shares-contract/Cargo.toml index e2399903881..54358ba1bd2 100644 --- a/packages/masternode-reward-shares-contract/Cargo.toml +++ b/packages/masternode-reward-shares-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "masternode-reward-shares-contract" description = "Masternode reward shares data contract schema and tools" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/masternode-reward-shares-contract/package.json b/packages/masternode-reward-shares-contract/package.json index d25ea259749..e72ca1063f1 100644 --- a/packages/masternode-reward-shares-contract/package.json +++ b/packages/masternode-reward-shares-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/masternode-reward-shares-contract", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "A contract and helper scripts for reward sharing", "scripts": { "lint": "eslint .", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index 8becc602e70..aa4d37faf5d 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/platform-test-suite", "private": true, - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Dash Network end-to-end tests", "scripts": { "test": "yarn exec bin/test.sh", diff --git a/packages/rs-dapi-client/Cargo.toml b/packages/rs-dapi-client/Cargo.toml index f943efc2337..a702522870f 100644 --- a/packages/rs-dapi-client/Cargo.toml +++ b/packages/rs-dapi-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rs-dapi-client" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" [features] diff --git a/packages/rs-dapi-grpc-macros/Cargo.toml b/packages/rs-dapi-grpc-macros/Cargo.toml index d0973e37db3..7add90d6321 100644 --- a/packages/rs-dapi-grpc-macros/Cargo.toml +++ b/packages/rs-dapi-grpc-macros/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc-macros" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" description = "Macros used by dapi-grpc. Internal use only." diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 7e402a1cbc5..f409082a5a8 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dpp" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 840366fe0bd..49f1cc9bfdc 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-abci" -version = "1.0.0-rc.2" +version = "1.0.0" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index 7b44463f841..27c9c77b07a 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-proof-verifier" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index a7e04de12be..028b8f73076 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "drive" description = "Dash drive built on top of GroveDB" -version = "1.0.0-rc.2" +version = "1.0.0" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-json-schema-compatibility-validator/Cargo.toml b/packages/rs-json-schema-compatibility-validator/Cargo.toml index 6107a70d291..2e3e3bd2d4a 100644 --- a/packages/rs-json-schema-compatibility-validator/Cargo.toml +++ b/packages/rs-json-schema-compatibility-validator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-schema-compatibility-validator" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-platform-serialization-derive/Cargo.toml b/packages/rs-platform-serialization-derive/Cargo.toml index 4ea5456b10f..8f8a0d9e972 100644 --- a/packages/rs-platform-serialization-derive/Cargo.toml +++ b/packages/rs-platform-serialization-derive/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization-derive" authors = ["Samuel Westrich "] description = "Bincode serialization and deserialization derivations" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index 28e7bc0d1ac..73a2f920320 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization" authors = ["Samuel Westrich "] description = "Bincode based serialization and deserialization" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value-convertible/Cargo.toml b/packages/rs-platform-value-convertible/Cargo.toml index ba21b75eba3..8b335990405 100644 --- a/packages/rs-platform-value-convertible/Cargo.toml +++ b/packages/rs-platform-value-convertible/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value-convertible" authors = ["Samuel Westrich "] description = "Convertion to and from platform values" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index a2a24e95d10..9d33010eecf 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value" authors = ["Samuel Westrich "] description = "A simple value module" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 23ade8fc558..4433c8e3e71 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-version" authors = ["Samuel Westrich "] description = "Versioning library for Platform" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-versioning/Cargo.toml b/packages/rs-platform-versioning/Cargo.toml index 1028eedd890..c5d22f6e784 100644 --- a/packages/rs-platform-versioning/Cargo.toml +++ b/packages/rs-platform-versioning/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-versioning" authors = ["Samuel Westrich "] description = "Version derivation" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index cbace417fc3..f06522e5104 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dash-sdk" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" [dependencies] diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index 05a63c83437..692ebaf9196 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-signer" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index bc7f72f6741..909595c97c9 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "strategy-tests" -version = "1.0.0-rc.2" +version = "1.0.0" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index adc657e4fbe..6bc2cca427b 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-lib", - "version": "8.0.0-rc.2", + "version": "8.0.0", "description": "Light wallet library for Dash", "main": "src/index.js", "unpkg": "dist/wallet-lib.min.js", diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index 51d4b6347b3..5170893e6f1 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-dpp" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" authors = ["Anton Suprunchuk "] diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index 9beaab507a8..3e03b5f7c75 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "The JavaScript implementation of the Dash Platform Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/withdrawals-contract/Cargo.toml b/packages/withdrawals-contract/Cargo.toml index 97dfaeda6f3..637a0d9f556 100644 --- a/packages/withdrawals-contract/Cargo.toml +++ b/packages/withdrawals-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "withdrawals-contract" description = "Witdrawals data contract schema and tools" -version = "1.0.0-rc.2" +version = "1.0.0" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/withdrawals-contract/package.json b/packages/withdrawals-contract/package.json index 8c2dba4294f..66796a3a616 100644 --- a/packages/withdrawals-contract/package.json +++ b/packages/withdrawals-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/withdrawals-contract", - "version": "1.0.0-rc.2", + "version": "1.0.0", "description": "Data Contract to manipulate and track withdrawals", "scripts": { "build": "", From 9ff08df9948638fcd42c56fee1793cd267bcd0e4 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Mon, 29 Jul 2024 23:58:43 +0700 Subject: [PATCH 33/37] chore(release): update changelog and bump version to 1.0.1 (#2021) --- CHANGELOG.md | 7 +++ Cargo.lock | 50 +++++++++---------- package.json | 2 +- packages/bench-suite/package.json | 2 +- packages/check-features/Cargo.toml | 2 +- packages/dapi-grpc/Cargo.toml | 2 +- packages/dapi-grpc/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/dashpay-contract/Cargo.toml | 2 +- packages/dashpay-contract/package.json | 2 +- packages/data-contracts/Cargo.toml | 2 +- packages/dpns-contract/Cargo.toml | 2 +- packages/dpns-contract/package.json | 2 +- packages/feature-flags-contract/Cargo.toml | 2 +- packages/feature-flags-contract/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-grpc-common/package.json | 2 +- .../Cargo.toml | 2 +- .../package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-dapi-client/Cargo.toml | 2 +- packages/rs-dapi-grpc-macros/Cargo.toml | 2 +- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 2 +- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- packages/rs-drive/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../Cargo.toml | 2 +- packages/rs-platform-serialization/Cargo.toml | 2 +- .../rs-platform-value-convertible/Cargo.toml | 2 +- packages/rs-platform-value/Cargo.toml | 2 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-versioning/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- packages/simple-signer/Cargo.toml | 2 +- packages/strategy-tests/Cargo.toml | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp/package.json | 2 +- packages/withdrawals-contract/Cargo.toml | 2 +- packages/withdrawals-contract/package.json | 2 +- 44 files changed, 74 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a272641ed72..ab1fe3f8ddf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +### [1.0.1](https://github.com/dashpay/platform/compare/v1.0.0...v1.0.1) (2024-07-29) + + +### Miscellaneous Chores + +* bump dash-spv version to 2.0.0 + ## [1.0.0](https://github.com/dashpay/platform/compare/v1.0.0-rc.2...v1.0.0) (2024-07-29) diff --git a/Cargo.lock b/Cargo.lock index fd6a8d3b495..ec0bd88093c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -774,7 +774,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check-features" -version = "0.1.0" +version = "0.1.1" dependencies = [ "toml", ] @@ -1140,7 +1140,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "1.0.0" +version = "1.0.1" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -1156,7 +1156,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "1.0.0" +version = "1.0.1" dependencies = [ "dapi-grpc", "heck 0.5.0", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "1.0.0" +version = "1.0.1" dependencies = [ "arc-swap", "async-trait", @@ -1301,7 +1301,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "1.0.0" +version = "1.0.1" dependencies = [ "platform-value", "platform-version", @@ -1311,7 +1311,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "1.0.0" +version = "1.0.1" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1427,7 +1427,7 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dpns-contract" -version = "1.0.0" +version = "1.0.1" dependencies = [ "platform-value", "platform-version", @@ -1437,7 +1437,7 @@ dependencies = [ [[package]] name = "dpp" -version = "1.0.0" +version = "1.0.1" dependencies = [ "anyhow", "assert_matches", @@ -1489,7 +1489,7 @@ dependencies = [ [[package]] name = "drive" -version = "1.0.0" +version = "1.0.1" dependencies = [ "arc-swap", "base64 0.22.1", @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "drive-abci" -version = "1.0.0" +version = "1.0.1" dependencies = [ "arc-swap", "assert_matches", @@ -1583,7 +1583,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "1.0.0" +version = "1.0.1" dependencies = [ "bincode", "dapi-grpc", @@ -1797,7 +1797,7 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "feature-flags-contract" -version = "1.0.0" +version = "1.0.1" dependencies = [ "platform-value", "platform-version", @@ -2721,7 +2721,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "1.0.0" +version = "1.0.1" dependencies = [ "assert_matches", "json-patch", @@ -2894,7 +2894,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "1.0.0" +version = "1.0.1" dependencies = [ "platform-value", "platform-version", @@ -3459,7 +3459,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platform-serialization" -version = "1.0.0" +version = "1.0.1" dependencies = [ "bincode", "platform-version", @@ -3467,7 +3467,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "1.0.0" +version = "1.0.1" dependencies = [ "proc-macro2", "quote", @@ -3477,7 +3477,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "1.0.0" +version = "1.0.1" dependencies = [ "base64 0.22.1", "bincode", @@ -3498,7 +3498,7 @@ dependencies = [ [[package]] name = "platform-value-convertible" -version = "1.0.0" +version = "1.0.1" dependencies = [ "quote", "syn 2.0.72", @@ -3506,7 +3506,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "1.0.0" +version = "1.0.1" dependencies = [ "bincode", "grovedb-version", @@ -3517,7 +3517,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "1.0.0" +version = "1.0.1" dependencies = [ "proc-macro2", "quote", @@ -4127,7 +4127,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "1.0.0" +version = "1.0.1" dependencies = [ "backon", "chrono", @@ -4644,7 +4644,7 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "simple-signer" -version = "1.0.0" +version = "1.0.1" dependencies = [ "base64 0.22.1", "bincode", @@ -4735,7 +4735,7 @@ dependencies = [ [[package]] name = "strategy-tests" -version = "1.0.0" +version = "1.0.1" dependencies = [ "bincode", "dpp", @@ -5775,7 +5775,7 @@ checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" [[package]] name = "wasm-dpp" -version = "1.0.0" +version = "1.0.1" dependencies = [ "anyhow", "async-trait", @@ -6048,7 +6048,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "1.0.0" +version = "1.0.1" dependencies = [ "num_enum", "platform-value", diff --git a/package.json b/package.json index 43f2fa11564..db59819c9a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/platform", - "version": "1.0.0", + "version": "1.0.1", "private": true, "scripts": { "setup": "yarn install && yarn run build && yarn run configure", diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index 18da324ff9e..2579b9e5fea 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/bench-suite", "private": true, - "version": "1.0.0", + "version": "1.0.1", "description": "Dash Platform benchmark tool", "scripts": { "bench": "node ./bin/bench.js", diff --git a/packages/check-features/Cargo.toml b/packages/check-features/Cargo.toml index 9a7085c7555..06c2c3d1112 100644 --- a/packages/check-features/Cargo.toml +++ b/packages/check-features/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "check-features" -version = "0.1.0" +version = "0.1.1" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/packages/dapi-grpc/Cargo.toml b/packages/dapi-grpc/Cargo.toml index e4d63312714..7af0187988d 100644 --- a/packages/dapi-grpc/Cargo.toml +++ b/packages/dapi-grpc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc" description = "GRPC client for Dash Platform" -version = "1.0.0" +version = "1.0.1" authors = [ "Samuel Westrich ", "Igor Markin ", diff --git a/packages/dapi-grpc/package.json b/packages/dapi-grpc/package.json index e7903dd63b3..cb3d287b125 100644 --- a/packages/dapi-grpc/package.json +++ b/packages/dapi-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-grpc", - "version": "1.0.0", + "version": "1.0.1", "description": "DAPI GRPC definition file and generated clients", "browser": "browser.js", "main": "node.js", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index b37764ec90c..2a58b23117c 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/dapi", "private": true, - "version": "1.0.0", + "version": "1.0.1", "description": "A decentralized API for the Dash network", "scripts": { "api": "node scripts/api.js", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index e21ba8f3aa6..7eaf8ec7ae8 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dash-spv", - "version": "1.0.0", + "version": "2.0.1", "description": "Repository containing SPV functions used by @dashevo", "main": "index.js", "scripts": { diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 879533ad858..4fbc6205de6 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -1,6 +1,6 @@ { "name": "dashmate", - "version": "1.0.0", + "version": "1.0.1", "description": "Distribution package for Dash node installation", "scripts": { "lint": "eslint .", diff --git a/packages/dashpay-contract/Cargo.toml b/packages/dashpay-contract/Cargo.toml index ad27d9b174c..9c4196c2127 100644 --- a/packages/dashpay-contract/Cargo.toml +++ b/packages/dashpay-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dashpay-contract" description = "DashPay data contract schema and tools" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dashpay-contract/package.json b/packages/dashpay-contract/package.json index d42d1ad3dda..e5f5251a47a 100644 --- a/packages/dashpay-contract/package.json +++ b/packages/dashpay-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dashpay-contract", - "version": "1.0.0", + "version": "1.0.1", "description": "Reference contract of the DashPay DPA on Dash Evolution", "scripts": { "lint": "eslint .", diff --git a/packages/data-contracts/Cargo.toml b/packages/data-contracts/Cargo.toml index 8236108e14c..e529711f4dd 100644 --- a/packages/data-contracts/Cargo.toml +++ b/packages/data-contracts/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "data-contracts" description = "Dash Platform system data contracts" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/Cargo.toml b/packages/dpns-contract/Cargo.toml index 5d9cf21627c..475d261a252 100644 --- a/packages/dpns-contract/Cargo.toml +++ b/packages/dpns-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dpns-contract" description = "DPNS data contract schema and tools" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/package.json b/packages/dpns-contract/package.json index 560556883e4..8fc803a02eb 100644 --- a/packages/dpns-contract/package.json +++ b/packages/dpns-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dpns-contract", - "version": "1.0.0", + "version": "1.0.1", "description": "A contract and helper scripts for DPNS DApp", "scripts": { "lint": "eslint .", diff --git a/packages/feature-flags-contract/Cargo.toml b/packages/feature-flags-contract/Cargo.toml index 98513bbcda8..5de46333a2b 100644 --- a/packages/feature-flags-contract/Cargo.toml +++ b/packages/feature-flags-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "feature-flags-contract" description = "Feature flags data contract schema and tools" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/feature-flags-contract/package.json b/packages/feature-flags-contract/package.json index b2779c00cfa..15cd8999dc7 100644 --- a/packages/feature-flags-contract/package.json +++ b/packages/feature-flags-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/feature-flags-contract", - "version": "1.0.0", + "version": "1.0.1", "description": "Data Contract to store Dash Platform feature flags", "scripts": { "build": "", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index 5e319253d76..aa397b4b422 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-client", - "version": "1.0.0", + "version": "1.0.1", "description": "Client library used to access Dash DAPI endpoints", "main": "lib/index.js", "contributors": [ diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index eb7cb35d099..94a0a4f4bea 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -1,6 +1,6 @@ { "name": "dash", - "version": "4.0.0", + "version": "4.0.1", "description": "Dash library for JavaScript/TypeScript ecosystem (Wallet, DAPI, Primitives, BLS, ...)", "main": "build/index.js", "unpkg": "dist/dash.min.js", diff --git a/packages/js-grpc-common/package.json b/packages/js-grpc-common/package.json index 230a3684e11..29891bca3f4 100644 --- a/packages/js-grpc-common/package.json +++ b/packages/js-grpc-common/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/grpc-common", - "version": "1.0.0", + "version": "1.0.1", "description": "Common GRPC library", "main": "index.js", "scripts": { diff --git a/packages/masternode-reward-shares-contract/Cargo.toml b/packages/masternode-reward-shares-contract/Cargo.toml index 54358ba1bd2..1013334d0cb 100644 --- a/packages/masternode-reward-shares-contract/Cargo.toml +++ b/packages/masternode-reward-shares-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "masternode-reward-shares-contract" description = "Masternode reward shares data contract schema and tools" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/masternode-reward-shares-contract/package.json b/packages/masternode-reward-shares-contract/package.json index e72ca1063f1..4ffc28c0966 100644 --- a/packages/masternode-reward-shares-contract/package.json +++ b/packages/masternode-reward-shares-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/masternode-reward-shares-contract", - "version": "1.0.0", + "version": "1.0.1", "description": "A contract and helper scripts for reward sharing", "scripts": { "lint": "eslint .", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index aa4d37faf5d..436572cfd36 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/platform-test-suite", "private": true, - "version": "1.0.0", + "version": "1.0.1", "description": "Dash Network end-to-end tests", "scripts": { "test": "yarn exec bin/test.sh", diff --git a/packages/rs-dapi-client/Cargo.toml b/packages/rs-dapi-client/Cargo.toml index a702522870f..b436a70f2ab 100644 --- a/packages/rs-dapi-client/Cargo.toml +++ b/packages/rs-dapi-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rs-dapi-client" -version = "1.0.0" +version = "1.0.1" edition = "2021" [features] diff --git a/packages/rs-dapi-grpc-macros/Cargo.toml b/packages/rs-dapi-grpc-macros/Cargo.toml index 7add90d6321..54992dcce34 100644 --- a/packages/rs-dapi-grpc-macros/Cargo.toml +++ b/packages/rs-dapi-grpc-macros/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc-macros" -version = "1.0.0" +version = "1.0.1" edition = "2021" description = "Macros used by dapi-grpc. Internal use only." diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index f409082a5a8..e1b1424fe76 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dpp" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 49f1cc9bfdc..1e4fb86656b 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-abci" -version = "1.0.0" +version = "1.0.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index 27c9c77b07a..e8fb2b06bb8 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-proof-verifier" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 028b8f73076..9980bfbfdcc 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "drive" description = "Dash drive built on top of GroveDB" -version = "1.0.0" +version = "1.0.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-json-schema-compatibility-validator/Cargo.toml b/packages/rs-json-schema-compatibility-validator/Cargo.toml index 2e3e3bd2d4a..7d0245262d9 100644 --- a/packages/rs-json-schema-compatibility-validator/Cargo.toml +++ b/packages/rs-json-schema-compatibility-validator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-schema-compatibility-validator" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-platform-serialization-derive/Cargo.toml b/packages/rs-platform-serialization-derive/Cargo.toml index 8f8a0d9e972..ca53ad48d9f 100644 --- a/packages/rs-platform-serialization-derive/Cargo.toml +++ b/packages/rs-platform-serialization-derive/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization-derive" authors = ["Samuel Westrich "] description = "Bincode serialization and deserialization derivations" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index 73a2f920320..08f32886d68 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization" authors = ["Samuel Westrich "] description = "Bincode based serialization and deserialization" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value-convertible/Cargo.toml b/packages/rs-platform-value-convertible/Cargo.toml index 8b335990405..2f7ac5be74d 100644 --- a/packages/rs-platform-value-convertible/Cargo.toml +++ b/packages/rs-platform-value-convertible/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value-convertible" authors = ["Samuel Westrich "] description = "Convertion to and from platform values" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index 9d33010eecf..0171c60f936 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value" authors = ["Samuel Westrich "] description = "A simple value module" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 4433c8e3e71..0479c1f8616 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-version" authors = ["Samuel Westrich "] description = "Versioning library for Platform" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-versioning/Cargo.toml b/packages/rs-platform-versioning/Cargo.toml index c5d22f6e784..00b049e61fe 100644 --- a/packages/rs-platform-versioning/Cargo.toml +++ b/packages/rs-platform-versioning/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-versioning" authors = ["Samuel Westrich "] description = "Version derivation" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index f06522e5104..af327e7207d 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dash-sdk" -version = "1.0.0" +version = "1.0.1" edition = "2021" [dependencies] diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index 692ebaf9196..efcaee70f87 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-signer" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index 909595c97c9..ea043bfcff5 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "strategy-tests" -version = "1.0.0" +version = "1.0.1" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index 6bc2cca427b..be8e17d700d 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-lib", - "version": "8.0.0", + "version": "8.0.1", "description": "Light wallet library for Dash", "main": "src/index.js", "unpkg": "dist/wallet-lib.min.js", diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index 5170893e6f1..86d1d11bf57 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-dpp" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" authors = ["Anton Suprunchuk "] diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index 3e03b5f7c75..ad0b98ea8ec 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp", - "version": "1.0.0", + "version": "1.0.1", "description": "The JavaScript implementation of the Dash Platform Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/withdrawals-contract/Cargo.toml b/packages/withdrawals-contract/Cargo.toml index 637a0d9f556..090e98805af 100644 --- a/packages/withdrawals-contract/Cargo.toml +++ b/packages/withdrawals-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "withdrawals-contract" description = "Witdrawals data contract schema and tools" -version = "1.0.0" +version = "1.0.1" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/withdrawals-contract/package.json b/packages/withdrawals-contract/package.json index 66796a3a616..2f4a36c3b7e 100644 --- a/packages/withdrawals-contract/package.json +++ b/packages/withdrawals-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/withdrawals-contract", - "version": "1.0.0", + "version": "1.0.1", "description": "Data Contract to manipulate and track withdrawals", "scripts": { "build": "", From aa4c1311b4930c8ff328843c367bc9f5670c2274 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 31 Jul 2024 14:54:20 +0700 Subject: [PATCH 34/37] feat(dashmate): a flag to keep data on reset (#2026) --- packages/dashmate/src/commands/reset.js | 5 +- packages/dashmate/src/docker/DockerCompose.js | 12 ++- .../src/listr/tasks/resetNodeTaskFactory.js | 88 +++++++++++-------- 3 files changed, 67 insertions(+), 38 deletions(-) diff --git a/packages/dashmate/src/commands/reset.js b/packages/dashmate/src/commands/reset.js index 442d9bbd8cb..99b640cdfc3 100644 --- a/packages/dashmate/src/commands/reset.js +++ b/packages/dashmate/src/commands/reset.js @@ -9,10 +9,11 @@ export default class ResetCommand extends ConfigBaseCommand { static flags = { ...ConfigBaseCommand.flags, - hard: Flags.boolean({ char: 'h', description: 'reset config as well as data', default: false }), + hard: Flags.boolean({ char: 'h', description: 'reset config as well as services and data', default: false }), force: Flags.boolean({ char: 'f', description: 'skip running services check', default: false }), platform: Flags.boolean({ char: 'p', description: 'reset platform services and data only', default: false }), verbose: Flags.boolean({ char: 'v', description: 'use verbose mode for output', default: false }), + 'keep-data': Flags.boolean({ description: 'keep data', default: false }), }; /** @@ -30,6 +31,7 @@ export default class ResetCommand extends ConfigBaseCommand { hard: isHardReset, force: isForce, platform: isPlatformOnlyReset, + 'keep-data': keepData, }, config, resetNodeTask, @@ -58,6 +60,7 @@ export default class ResetCommand extends ConfigBaseCommand { isPlatformOnlyReset, isForce, isVerbose, + keepData, }); } catch (e) { throw new MuteOneLineError(e); diff --git a/packages/dashmate/src/docker/DockerCompose.js b/packages/dashmate/src/docker/DockerCompose.js index b8d9d5503d1..bbdf19d28bb 100644 --- a/packages/dashmate/src/docker/DockerCompose.js +++ b/packages/dashmate/src/docker/DockerCompose.js @@ -414,15 +414,23 @@ export default class DockerCompose { * Down docker compose * * @param {Config} config + * @param {Object} [options] + * @param {Object} [options.removeVolumes=false] * @return {Promise} */ - async down(config) { + async down(config, options = {}) { await this.throwErrorIfNotInstalled(); + const commandOptions = ['--remove-orphans']; + + if (options.removeVolumes) { + commandOptions.push('-v'); + } + try { await dockerCompose.down({ ...this.#createOptions(config), - commandOptions: ['-v', '--remove-orphans'], + commandOptions, }); } catch (e) { throw new DockerComposeError(e); diff --git a/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js index 315c8e9073c..098ac05b8e0 100644 --- a/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js @@ -52,57 +52,75 @@ export default function resetNodeTaskFactory( { title: 'Remove all services and associated data', enabled: (ctx) => !ctx.isPlatformOnlyReset, - task: async () => dockerCompose.down(config), + task: async (ctx, task) => { + if (ctx.keepData) { + // eslint-disable-next-line no-param-reassign + task.title = 'Remove all services and keep associated data'; + } + + const options = { + removeVolumes: !ctx.keepData, + }; + + return dockerCompose.down(config, options); + }, }, { title: 'Remove platform services and associated data', enabled: (ctx) => ctx.isPlatformOnlyReset, - task: async () => { + task: async (ctx, task) => { + if (ctx.keepData) { + // eslint-disable-next-line no-param-reassign + task.title = 'Remove platform services and keep associated data'; + } + await dockerCompose.rm(config, { profiles: ['platform'] }); // Remove volumes - const { COMPOSE_PROJECT_NAME: composeProjectName } = generateEnvs(config); + if (ctx.keepData) { + const { COMPOSE_PROJECT_NAME: composeProjectName } = generateEnvs(config); - const projectVolumeNames = await dockerCompose.getVolumeNames( - config, - { profiles: ['platform'] }, - ); + const projectVolumeNames = await dockerCompose.getVolumeNames( + config, + { profiles: ['platform'] }, + ); - await Promise.all( - projectVolumeNames - .map((volumeName) => `${composeProjectName}_${volumeName}`) - .map(async (volumeName) => { - const volume = await docker.getVolume(volumeName); + await Promise.all( + projectVolumeNames + .map((volumeName) => `${composeProjectName}_${volumeName}`) + .map(async (volumeName) => { + const volume = await docker.getVolume(volumeName); - let isRetry; - do { - isRetry = false; + let isRetry; + do { + isRetry = false; - try { - await volume.remove({ force: true }); - } catch (e) { - // volume is in use - if (e.statusCode === 409) { - await wait(1000); + try { + await volume.remove({ force: true }); + } catch (e) { + // volume is in use + if (e.statusCode === 409) { + await wait(1000); - // Remove containers - await dockerCompose.rm(config, { profiles: ['platform'] }); + // Remove containers + await dockerCompose.rm(config, { profiles: ['platform'] }); - isRetry = true; + isRetry = true; - continue; - } + continue; + } - // volume does not exist - if (e.statusCode === 404) { - break; - } + // volume does not exist + if (e.statusCode === 404) { + break; + } - throw e; - } - } while (isRetry); - }), - ); + throw e; + } + } while (isRetry); + }), + ); + } }, }, { From 46260df1ffc27e1b849854539cdc3c32099db6f8 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 31 Jul 2024 16:17:20 +0700 Subject: [PATCH 35/37] fix(dashmate): unnecessary core indexes are required (#2025) --- Cargo.lock | 8 +++--- .../configs/defaults/getBaseConfigFactory.js | 4 +-- .../defaults/getMainnetConfigFactory.js | 1 - .../configs/getConfigFileMigrationsFactory.js | 9 ++++++ .../dashmate/src/config/configJsonSchema.js | 9 +++++- .../regular/importCoreDataTaskFactory.js | 28 ++++++++----------- .../setup/setupLocalPresetTaskFactory.js | 4 ++- .../dashmate/templates/core/dash.conf.dot | 6 +++- packages/rs-drive-abci/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- packages/simple-signer/Cargo.toml | 2 +- 11 files changed, 46 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ec0bd88093c..867c0fc2d19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1261,8 +1261,8 @@ source = "git+https://github.com/dashpay/rust-dashcore?branch=master#a29315dbe56 [[package]] name = "dashcore-rpc" -version = "0.15.1" -source = "git+https://github.com/dashpay/rust-dashcore-rpc?tag=v0.15.2#9e596142f589d32a7347872b8f5c2b3b2ed54257" +version = "0.15.2" +source = "git+https://github.com/dashpay/rust-dashcore-rpc?tag=v0.15.4#bd6efdb850151f1dcd8e3f38d4796d18c5be518c" dependencies = [ "dashcore-private", "dashcore-rpc-json", @@ -1276,8 +1276,8 @@ dependencies = [ [[package]] name = "dashcore-rpc-json" -version = "0.15.1" -source = "git+https://github.com/dashpay/rust-dashcore-rpc?tag=v0.15.2#9e596142f589d32a7347872b8f5c2b3b2ed54257" +version = "0.15.2" +source = "git+https://github.com/dashpay/rust-dashcore-rpc?tag=v0.15.4#bd6efdb850151f1dcd8e3f38d4796d18c5be518c" dependencies = [ "bincode", "dashcore", diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index b671976c609..71bce6f6456 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -16,7 +16,7 @@ const { version } = JSON.parse(fs.readFileSync(path.join(PACKAGE_ROOT_DIR, 'pack */ export default function getBaseConfigFactory(homeDir) { const prereleaseTag = semver.prerelease(version) === null ? '' : `-${semver.prerelease(version)[0]}`; - const dockerImageVersion = `${semver.major(version)}.${semver.minor(version)}${prereleaseTag}`; + const dockerImageVersion = `${semver.major(version)}${prereleaseTag}`; /** * @typedef {function} getBaseConfig @@ -140,7 +140,7 @@ export default function getBaseConfigFactory(homeDir) { }, }, logIps: 0, - indexes: true, + indexes: [], }, platform: { gateway: { diff --git a/packages/dashmate/configs/defaults/getMainnetConfigFactory.js b/packages/dashmate/configs/defaults/getMainnetConfigFactory.js index 10e050bc97e..9331b44b077 100644 --- a/packages/dashmate/configs/defaults/getMainnetConfigFactory.js +++ b/packages/dashmate/configs/defaults/getMainnetConfigFactory.js @@ -27,7 +27,6 @@ export default function getMainnetConfigFactory(homeDir, getBaseConfig) { }, }, core: { - indexes: false, log: { file: { path: homeDir.joinPath('logs', 'mainnet', 'core.log'), diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index c077de0bd3a..aeca8274d8f 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -756,6 +756,15 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) }); return configFile; }, + '1.0.2': (configFile) => { + Object.entries(configFile.configs) + .forEach(([, options]) => { + options.core.indexes = []; + options.platform.drive.abci.docker.image = 'dashpay/drive:1'; + options.platform.dapi.api.docker.image = 'dashpay/dapi:1'; + }); + return configFile; + }, }; } diff --git a/packages/dashmate/src/config/configJsonSchema.js b/packages/dashmate/src/config/configJsonSchema.js index c07e9535554..4a1062878a8 100644 --- a/packages/dashmate/src/config/configJsonSchema.js +++ b/packages/dashmate/src/config/configJsonSchema.js @@ -433,7 +433,14 @@ export default { enum: [0, 1], }, indexes: { - type: 'boolean', + type: ['array'], + uniqueItems: true, + items: { + type: 'string', + enum: ['address', 'tx', 'timestamp', 'spent'], + }, + description: 'List of core indexes to enable. `platform.enable`, ' + + ' `core.masternode.enable`, and `core.insight.enabled` add indexes dynamically', }, }, required: ['docker', 'p2p', 'rpc', 'spork', 'masternode', 'miner', 'devnet', 'log', diff --git a/packages/dashmate/src/listr/tasks/setup/regular/importCoreDataTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/regular/importCoreDataTaskFactory.js index 90afc38242a..be338af6633 100644 --- a/packages/dashmate/src/listr/tasks/setup/regular/importCoreDataTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/regular/importCoreDataTaskFactory.js @@ -55,13 +55,6 @@ function validateCoreDataDirectoryPathFactory(config) { return 'dash.conf should be configured for mainnet'; } - // Config file should contain masternodeblsprivkey in case of masternode - if (config.get('core.masternode.enable')) { - if (!configFileContent.includes('masternodeblsprivkey=')) { - return 'dash.conf should contain masternodeblsprivkey'; - } - } - return true; } @@ -120,10 +113,19 @@ export default function importCoreDataTaskFactory( // Read configuration from dashd.conf const configPath = path.join(coreDataPath, 'dash.conf'); const configFileContent = fs.readFileSync(configPath, 'utf8'); - const masternodeOperatorPrivateKey = configFileContent.match(/^masternodeblsprivkey=([^ \n]+)/m)?.[1]; - if (masternodeOperatorPrivateKey) { - ctx.config.set('core.masternode.operator.privateKey', masternodeOperatorPrivateKey); + // Config file should contain masternodeblsprivkey in case of masternode + if (ctx.config.get('core.masternode.enable')) { + const masternodeOperatorPrivateKey = configFileContent.match(/^masternodeblsprivkey=([^ \n]+)/m)?.[1]; + + if (masternodeOperatorPrivateKey) { + ctx.config.set('core.masternode.operator.privateKey', masternodeOperatorPrivateKey); + // txindex is enabled by default for masternodes + ctx.isReindexRequired = false; + } else { + // We need to reindex Core if there weren't all required indexed enabled before + ctx.isReindexRequired = !configFileContent.match(/^txindex=1/); + } } const host = configFileContent.match(/^bind=([^ \n]+)/m)?.[1]; @@ -140,12 +142,6 @@ export default function importCoreDataTaskFactory( // eslint-disable-next-line prefer-destructuring ctx.importedExternalIp = configFileContent.match(/^externalip=([^ \n]+)/m)?.[1]; - // We need to reindex Core if there weren't all required indexed enabled before - ctx.isReindexRequired = !configFileContent.match(/^txindex=1/) - || !configFileContent.match(/^addressindex=1/) - || !configFileContent.match(/^timestampindex=1/) - || !configFileContent.match(/^spentindex=1/); - // Copy data directory to docker a volume // Create a volume diff --git a/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js index 3c5eafa1927..5338eb4178a 100644 --- a/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js @@ -156,11 +156,13 @@ export default function setupLocalPresetTaskFactory( config.set('description', 'seed node for local network'); config.set('core.masternode.enable', false); - config.set('core.miner.enable', true); // Enable miner for the seed node config.set('core.miner.enable', true); + // We need them to register masternodes + config.set('core.indexes', ['tx', 'address', 'timestamp', 'spent']); + // Disable platform for the seed node config.set('platform.enable', false); config.set('platform.drive.tenderdash.mode', 'seed'); diff --git a/packages/dashmate/templates/core/dash.conf.dot b/packages/dashmate/templates/core/dash.conf.dot index 08130ee33a9..807431f9848 100644 --- a/packages/dashmate/templates/core/dash.conf.dot +++ b/packages/dashmate/templates/core/dash.conf.dot @@ -43,11 +43,15 @@ externalip={{=it.externalIp}} whitelist={{=it.externalIp}} {{?}} -{{? it.core.indexes }}# Indices +{{? it.core.insight.enabled }} txindex=1 addressindex=1 timestampindex=1 spentindex=1 +{{??}} +{{~it.core.indexes :index}} +{{= index + 'index=1' }} +{{~}} {{?}} # ZeroMQ notifications diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 1e4fb86656b..1e52ae8494b 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -28,7 +28,7 @@ rand = "0.8.5" tempfile = "3.3.0" hex = "0.4.3" indexmap = { version = "2.2.6", features = ["serde"] } -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore-rpc", tag = "v0.15.2" } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore-rpc", tag = "v0.15.4" } dpp = { path = "../rs-dpp", features = ["abci"] } simple-signer = { path = "../simple-signer" } rust_decimal = "1.2.5" diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index af327e7207d..9815f3be4a4 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -32,7 +32,7 @@ envy = { version = "0.4.2", optional = true } futures = { version = "0.3.30" } derive_more = { version = "0.99.17" } # dashcore-rpc is only needed for core rpc; TODO remove once we have correct core rpc impl -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore-rpc", tag = "v0.15.2" } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore-rpc", tag = "v0.15.4" } lru = { version = "0.12.3", optional = true } bip37-bloom-filter = { git = "https://github.com/dashpay/rs-bip37-bloom-filter", branch = "develop" } pollster = { version = "0.3.0" } diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index efcaee70f87..2cdd0d71d80 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -8,6 +8,6 @@ rust-version = "1.76" [dependencies] bincode = { version = "2.0.0-rc.3", features = ["serde"] } -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore-rpc", tag = "v0.15.2" } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore-rpc", tag = "v0.15.4" } dpp = { path = "../rs-dpp", features = ["abci"] } base64 = { version = "0.22.1"} From 79059f62aaebb1aa53d5eeaee86b14991256c81c Mon Sep 17 00:00:00 2001 From: pshenmic Date: Wed, 31 Jul 2024 17:01:03 +0700 Subject: [PATCH 36/37] fix(dashmate): status command shows tenderdash error before activation (#2028) --- packages/dashmate/README.md | 20 +++--- .../dashmate/src/commands/status/platform.js | 4 ++ packages/dashmate/src/status/colors.js | 2 + .../dashmate/src/status/determineStatus.js | 7 +- .../src/status/enums/serviceStatus.js | 1 + .../dashmate/src/status/scopes/platform.js | 72 +++++++++++++------ .../test/unit/status/scopes/platform.spec.js | 61 ++++++++++++++-- 7 files changed, 130 insertions(+), 37 deletions(-) diff --git a/packages/dashmate/README.md b/packages/dashmate/README.md index f9ed156cb94..dec9b177136 100644 --- a/packages/dashmate/README.md +++ b/packages/dashmate/README.md @@ -88,7 +88,7 @@ In some cases, you must also additionally reset platform data: ```bash $ dashmate stop $ npm install -g dashmate -$ dashmate reset --platform-only --hard +$ dashmate reset --platform --hard $ dashmate update $ dashmate setup $ dashmate start @@ -283,14 +283,18 @@ The `reset` command removes all data corresponding to the specified config and a ``` USAGE - $ dashmate reset [-v] [--config ] [-h] [-f] [-p] + $ dashmate reset [--config ] [-v] [-h] [-f] [-p] [--keep-data] FLAGS - -f, --force skip running services check - -h, --hard reset config as well as data - -p, --platform-only reset platform data only - -v, --verbose use verbose mode for output - --config= configuration name to use + -f, --force skip running services check + -h, --hard reset config as well as services and data + -p, --platform reset platform services and data only + -v, --verbose use verbose mode for output + --config= configuration name to use + --keep-data keep data + +DESCRIPTION + Reset node data ``` To reset a node: @@ -446,7 +450,7 @@ USAGE FLAGS -f, --force reset even running node - -p, --platform-only reset platform data only + -p, --platform reset platform data only -v, --verbose use verbose mode for output --group= group name to use --hard reset config as well as data diff --git a/packages/dashmate/src/commands/status/platform.js b/packages/dashmate/src/commands/status/platform.js index 073ebd52573..2c0e401f18c 100644 --- a/packages/dashmate/src/commands/status/platform.js +++ b/packages/dashmate/src/commands/status/platform.js @@ -32,6 +32,7 @@ export default class PlatformStatusCommand extends ConfigBaseCommand { flags, dockerCompose, createRpcClient, + getConnectionHost, config, getPlatformScope, ) { @@ -57,6 +58,7 @@ export default class PlatformStatusCommand extends ConfigBaseCommand { if (flags.format === OUTPUT_FORMATS.PLAIN) { const { + platformActivation, httpService, httpPort, httpPortState, @@ -68,6 +70,8 @@ export default class PlatformStatusCommand extends ConfigBaseCommand { drive, } = scope; + plain['Platform Activation'] = platformActivation ? colors.platformActivation(platformActivation)(platformActivation) : 'n/a'; + plain['HTTP service'] = httpService || 'n/a'; plain['HTTP port'] = `${httpPort} ${httpPortState ? colors.portState(httpPortState)(httpPortState) : ''}`; plain['P2P service'] = p2pService || 'n/a'; diff --git a/packages/dashmate/src/status/colors.js b/packages/dashmate/src/status/colors.js index 27c80532b2a..3f30854f377 100644 --- a/packages/dashmate/src/status/colors.js +++ b/packages/dashmate/src/status/colors.js @@ -34,6 +34,7 @@ export default { return chalk.green; case ServiceStatusEnum.syncing: case ServiceStatusEnum.wait_for_core: + case ServiceStatusEnum.wait_for_activation: return chalk.yellow; default: return chalk.red; @@ -73,4 +74,5 @@ export default { } return chalk.red; }, + platformActivation: (string) => (string.startsWith('Activated') ? chalk.green : chalk.yellow), }; diff --git a/packages/dashmate/src/status/determineStatus.js b/packages/dashmate/src/status/determineStatus.js index d31d71cfef1..723302a006f 100644 --- a/packages/dashmate/src/status/determineStatus.js +++ b/packages/dashmate/src/status/determineStatus.js @@ -37,9 +37,14 @@ export default { * Determine platform ServiceStatus based on DockerStatusEnum and core readiness * @param dockerStatus {DockerStatusEnum} * @param coreIsSynced {boolean} + * @param mnRRSoftFork {object} * @returns {ServiceStatusEnum} */ - platform: (dockerStatus, coreIsSynced) => { + platform: (dockerStatus, coreIsSynced, mnRRSoftFork) => { + if (coreIsSynced && !mnRRSoftFork.active) { + return ServiceStatusEnum.wait_for_activation; + } + if (dockerStatus === DockerStatusEnum.running) { return coreIsSynced ? ServiceStatusEnum.up : ServiceStatusEnum.wait_for_core; } diff --git a/packages/dashmate/src/status/enums/serviceStatus.js b/packages/dashmate/src/status/enums/serviceStatus.js index 6a6fc4500d2..09cb1f1c390 100644 --- a/packages/dashmate/src/status/enums/serviceStatus.js +++ b/packages/dashmate/src/status/enums/serviceStatus.js @@ -4,5 +4,6 @@ export const ServiceStatusEnum = { up: 'up', syncing: 'syncing', wait_for_core: 'wait_for_core', + wait_for_activation: 'wait_for_activation', error: 'error', }; diff --git a/packages/dashmate/src/status/scopes/platform.js b/packages/dashmate/src/status/scopes/platform.js index 08241ce60b8..f18b2915498 100644 --- a/packages/dashmate/src/status/scopes/platform.js +++ b/packages/dashmate/src/status/scopes/platform.js @@ -1,3 +1,4 @@ +import prettyMs from 'pretty-ms'; import providers from '../providers.js'; import { DockerStatusEnum } from '../enums/dockerStatus.js'; import { ServiceStatusEnum } from '../enums/serviceStatus.js'; @@ -15,7 +16,7 @@ export default function getPlatformScopeFactory( createRpcClient, getConnectionHost, ) { - async function getMNSync(config) { + async function getCoreInfo(config) { const rpcClient = createRpcClient({ port: config.get('core.rpc.port'), user: 'dashmate', @@ -23,16 +24,27 @@ export default function getPlatformScopeFactory( host: await getConnectionHost(config, 'core', 'core.rpc.host'), }); + const [mnSync, blockchainInfo] = await Promise.all([ + rpcClient.mnsync('status'), + rpcClient.getBlockchainInfo(), + ]); + + const { + result: { + softforks: { mn_rr: mnRR }, + }, + } = blockchainInfo; + const { result: { IsSynced: isSynced, }, - } = await rpcClient.mnsync('status'); + } = mnSync; - return isSynced; + return { isSynced, mnRRSoftFork: mnRR }; } - async function getTenderdashInfo(config, isCoreSynced) { + async function getTenderdashInfo(config, isCoreSynced, mnRRSoftFork) { const info = { p2pPortState: null, httpPortState: null, @@ -63,7 +75,7 @@ export default function getPlatformScopeFactory( } const dockerStatus = await determineStatus.docker(dockerCompose, config, 'drive_tenderdash'); - const serviceStatus = determineStatus.platform(dockerStatus, isCoreSynced); + const serviceStatus = determineStatus.platform(dockerStatus, isCoreSynced, mnRRSoftFork); info.dockerStatus = dockerStatus; info.serviceStatus = serviceStatus; @@ -142,7 +154,7 @@ export default function getPlatformScopeFactory( return info; } - const getDriveInfo = async (config, isCoreSynced) => { + const getDriveInfo = async (config, isCoreSynced, mnRRSoftFork) => { const info = { dockerStatus: null, serviceStatus: null, @@ -150,7 +162,7 @@ export default function getPlatformScopeFactory( try { info.dockerStatus = await determineStatus.docker(dockerCompose, config, 'drive_abci'); - info.serviceStatus = determineStatus.platform(info.dockerStatus, isCoreSynced); + info.serviceStatus = determineStatus.platform(info.dockerStatus, isCoreSynced, mnRRSoftFork); if (info.serviceStatus === ServiceStatusEnum.up) { const driveEchoResult = await dockerCompose.execCommand( @@ -194,6 +206,7 @@ export default function getPlatformScopeFactory( const rpcService = `${rpcHost}:${rpcPort}`; const scope = { + platformActivation: null, coreIsSynced: null, httpPort, httpService, @@ -233,11 +246,14 @@ export default function getPlatformScopeFactory( } } + let coreInfo; + try { - const coreIsSynced = await getMNSync(config); - scope.coreIsSynced = coreIsSynced; + coreInfo = await getCoreInfo(config); - if (!coreIsSynced) { + scope.coreIsSynced = coreInfo.isSynced; + + if (!coreInfo.isSynced) { if (process.env.DEBUG) { // eslint-disable-next-line no-console console.error('Platform status is not available until masternode state is \'READY\''); @@ -250,20 +266,34 @@ export default function getPlatformScopeFactory( } } - const [tenderdash, drive] = await Promise.all([ - getTenderdashInfo(config, scope.coreIsSynced), - getDriveInfo(config, scope.coreIsSynced), - ]); + if (coreInfo) { + const { mnRRSoftFork } = coreInfo; - if (tenderdash) { - scope.tenderdash = tenderdash; + if (mnRRSoftFork.active) { + scope.platformActivation = `Activated (at height ${mnRRSoftFork.height})`; + } else { + const startTime = mnRRSoftFork.bip9.start_time; - scope.httpPortState = tenderdash.httpPortState; - scope.p2pPortState = tenderdash.p2pPortState; - } + const diff = (new Date().getTime() - startTime) / 1000; + + scope.platformActivation = `Waiting for activation (approximately in ${prettyMs(diff, { compact: true })})`; + } + + const [tenderdash, drive] = await Promise.all([ + getTenderdashInfo(config, scope.coreIsSynced, coreInfo.mnRRSoftFork), + getDriveInfo(config, scope.coreIsSynced, coreInfo.mnRRSoftFork), + ]); - if (drive) { - scope.drive = drive; + if (tenderdash) { + scope.tenderdash = tenderdash; + + scope.httpPortState = tenderdash.httpPortState; + scope.p2pPortState = tenderdash.p2pPortState; + } + + if (drive) { + scope.drive = drive; + } } return scope; diff --git a/packages/dashmate/test/unit/status/scopes/platform.spec.js b/packages/dashmate/test/unit/status/scopes/platform.spec.js index ad723f3077e..c3a1c28ff19 100644 --- a/packages/dashmate/test/unit/status/scopes/platform.spec.js +++ b/packages/dashmate/test/unit/status/scopes/platform.spec.js @@ -63,6 +63,13 @@ describe('getPlatformScopeFactory', () => { it('should just work', async () => { mockDetermineDockerStatus.returns(DockerStatusEnum.running); mockRpcClient.mnsync.withArgs('status').returns({ result: { IsSynced: true } }); + mockRpcClient.getBlockchainInfo.returns({ + result: { + softforks: { + mn_rr: { active: true, height: 1337 }, + }, + }, + }); mockDockerCompose.isServiceRunning.returns(true); mockDockerCompose.execCommand.returns({ exitCode: 0, out: '' }); mockMNOWatchProvider.returns(Promise.resolve('OPEN')); @@ -84,6 +91,7 @@ describe('getPlatformScopeFactory', () => { const mockNetInfo = { n_peers: 6, listening: true }; const expectedScope = { + platformActivation: 'Activated (at height 1337)', coreIsSynced: true, httpPort, httpService, @@ -129,6 +137,13 @@ describe('getPlatformScopeFactory', () => { it('should return platform syncing when it is catching up', async () => { mockDetermineDockerStatus.returns(DockerStatusEnum.running); mockRpcClient.mnsync.withArgs('status').returns({ result: { IsSynced: true } }); + mockRpcClient.getBlockchainInfo.returns({ + result: { + softforks: { + mn_rr: { active: true, height: 1337 }, + }, + }, + }); mockDockerCompose.isServiceRunning.returns(true); mockDockerCompose.execCommand.returns({ exitCode: 0, out: '' }); mockMNOWatchProvider.returns(Promise.resolve('OPEN')); @@ -150,6 +165,7 @@ describe('getPlatformScopeFactory', () => { const mockNetInfo = { n_peers: 6, listening: true }; const expectedScope = { + platformActivation: 'Activated (at height 1337)', coreIsSynced: true, httpPort, httpService, @@ -202,6 +218,7 @@ describe('getPlatformScopeFactory', () => { .returns(DockerStatusEnum.running); const expectedScope = { + platformActivation: null, coreIsSynced: null, httpPort, httpService, @@ -213,8 +230,8 @@ describe('getPlatformScopeFactory', () => { tenderdash: { httpPortState: null, p2pPortState: null, - dockerStatus: DockerStatusEnum.running, - serviceStatus: ServiceStatusEnum.wait_for_core, + dockerStatus: null, + serviceStatus: null, version: null, listening: null, catchingUp: null, @@ -227,8 +244,8 @@ describe('getPlatformScopeFactory', () => { network: null, }, drive: { - dockerStatus: DockerStatusEnum.running, - serviceStatus: ServiceStatusEnum.wait_for_core, + dockerStatus: null, + serviceStatus: null, }, }; @@ -238,16 +255,22 @@ describe('getPlatformScopeFactory', () => { }); it('should return empty scope if core is not synced', async () => { - mockDockerCompose.isServiceRunning - .withArgs(config, 'drive_tenderdash') - .returns(true); + mockDockerCompose.isServiceRunning.withArgs(config, 'drive_tenderdash').returns(true); mockDetermineDockerStatus.withArgs(mockDockerCompose, config, 'drive_tenderdash').returns(DockerStatusEnum.running); mockDetermineDockerStatus.withArgs(mockDockerCompose, config, 'drive_abci').returns(DockerStatusEnum.running); mockRpcClient.mnsync.withArgs('status').returns({ result: { IsSynced: false } }); + mockRpcClient.getBlockchainInfo.returns({ + result: { + softforks: { + mn_rr: { active: true, height: 1337 }, + }, + }, + }); mockDockerCompose.execCommand.returns({ exitCode: 1, out: '' }); mockMNOWatchProvider.returns(Promise.resolve('OPEN')); const expectedScope = { + platformActivation: 'Activated (at height 1337)', coreIsSynced: false, httpPort, httpService, @@ -285,6 +308,13 @@ describe('getPlatformScopeFactory', () => { it('should return drive info if tenderdash is failed', async () => { mockRpcClient.mnsync.withArgs('status').returns({ result: { IsSynced: true } }); + mockRpcClient.getBlockchainInfo.returns({ + result: { + softforks: { + mn_rr: { active: true, height: 1337 }, + }, + }, + }); mockDockerCompose.isServiceRunning .withArgs(config, 'drive_tenderdash') .returns(true); @@ -296,6 +326,7 @@ describe('getPlatformScopeFactory', () => { mockMNOWatchProvider.returns(Promise.resolve('OPEN')); const expectedScope = { + platformActivation: 'Activated (at height 1337)', coreIsSynced: true, httpPort, httpService, @@ -333,6 +364,13 @@ describe('getPlatformScopeFactory', () => { it('should still return scope with tenderdash if drive is failed', async () => { mockRpcClient.mnsync.withArgs('status').returns({ result: { IsSynced: true } }); + mockRpcClient.getBlockchainInfo.returns({ + result: { + softforks: { + mn_rr: { active: true, height: 1337 }, + }, + }, + }); mockDockerCompose.isServiceRunning .withArgs(config, 'drive_tenderdash') .returns(true); @@ -366,6 +404,7 @@ describe('getPlatformScopeFactory', () => { .returns(Promise.resolve({ json: () => Promise.resolve(mockNetInfo) })); const expectedScope = { + platformActivation: 'Activated (at height 1337)', coreIsSynced: true, httpPort, httpService, @@ -403,6 +442,13 @@ describe('getPlatformScopeFactory', () => { it('should have error service status in case FetchError to tenderdash', async () => { mockRpcClient.mnsync.returns({ result: { IsSynced: true } }); + mockRpcClient.getBlockchainInfo.returns({ + result: { + softforks: { + mn_rr: { active: true, height: 1337 }, + }, + }, + }); mockDockerCompose.isServiceRunning .withArgs(config, 'drive_tenderdash') .returns(true); @@ -412,6 +458,7 @@ describe('getPlatformScopeFactory', () => { mockFetch.returns(Promise.reject(new Error('FetchError'))); const expectedScope = { + platformActivation: 'Activated (at height 1337)', coreIsSynced: true, httpPort, httpService, From 030eb05953ffcaf49285ff5fea66feeeb6e80259 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Wed, 31 Jul 2024 17:07:00 +0700 Subject: [PATCH 37/37] chore(release): update changelog and bump version to 1.0.2 (#2029) --- CHANGELOG.md | 13 +++++ Cargo.lock | 50 +++++++++---------- package.json | 2 +- packages/bench-suite/package.json | 2 +- packages/check-features/Cargo.toml | 2 +- packages/dapi-grpc/Cargo.toml | 2 +- packages/dapi-grpc/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/dashpay-contract/Cargo.toml | 2 +- packages/dashpay-contract/package.json | 2 +- packages/data-contracts/Cargo.toml | 2 +- packages/dpns-contract/Cargo.toml | 2 +- packages/dpns-contract/package.json | 2 +- packages/feature-flags-contract/Cargo.toml | 2 +- packages/feature-flags-contract/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-grpc-common/package.json | 2 +- .../Cargo.toml | 2 +- .../package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-dapi-client/Cargo.toml | 2 +- packages/rs-dapi-grpc-macros/Cargo.toml | 2 +- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 2 +- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- packages/rs-drive/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../Cargo.toml | 2 +- packages/rs-platform-serialization/Cargo.toml | 2 +- .../rs-platform-value-convertible/Cargo.toml | 2 +- packages/rs-platform-value/Cargo.toml | 2 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-versioning/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- packages/simple-signer/Cargo.toml | 2 +- packages/strategy-tests/Cargo.toml | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp/package.json | 2 +- packages/withdrawals-contract/Cargo.toml | 2 +- packages/withdrawals-contract/package.json | 2 +- 44 files changed, 80 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab1fe3f8ddf..f8420500dab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +### [1.0.2](https://github.com/dashpay/platform/compare/v1.0.1...v1.0.2) (2024-07-31) + + +### Features + +* **dashmate:** a flag to keep data on reset ([#2026](https://github.com/dashpay/platform/issues/2026)) + + +### Bug Fixes + +* **dashmate:** status command shows tenderdash error before activation ([#2028](https://github.com/dashpay/platform/issues/2028)) +* **dashmate:** unnecessary core indexes are required ([#2025](https://github.com/dashpay/platform/issues/2025)) + ### [1.0.1](https://github.com/dashpay/platform/compare/v1.0.0...v1.0.1) (2024-07-29) diff --git a/Cargo.lock b/Cargo.lock index 867c0fc2d19..661d19c1ceb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -774,7 +774,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check-features" -version = "0.1.1" +version = "0.1.2" dependencies = [ "toml", ] @@ -1140,7 +1140,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "1.0.1" +version = "1.0.2" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -1156,7 +1156,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "1.0.1" +version = "1.0.2" dependencies = [ "dapi-grpc", "heck 0.5.0", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "1.0.1" +version = "1.0.2" dependencies = [ "arc-swap", "async-trait", @@ -1301,7 +1301,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "1.0.1" +version = "1.0.2" dependencies = [ "platform-value", "platform-version", @@ -1311,7 +1311,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "1.0.1" +version = "1.0.2" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1427,7 +1427,7 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dpns-contract" -version = "1.0.1" +version = "1.0.2" dependencies = [ "platform-value", "platform-version", @@ -1437,7 +1437,7 @@ dependencies = [ [[package]] name = "dpp" -version = "1.0.1" +version = "1.0.2" dependencies = [ "anyhow", "assert_matches", @@ -1489,7 +1489,7 @@ dependencies = [ [[package]] name = "drive" -version = "1.0.1" +version = "1.0.2" dependencies = [ "arc-swap", "base64 0.22.1", @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "drive-abci" -version = "1.0.1" +version = "1.0.2" dependencies = [ "arc-swap", "assert_matches", @@ -1583,7 +1583,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "1.0.1" +version = "1.0.2" dependencies = [ "bincode", "dapi-grpc", @@ -1797,7 +1797,7 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "feature-flags-contract" -version = "1.0.1" +version = "1.0.2" dependencies = [ "platform-value", "platform-version", @@ -2721,7 +2721,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "1.0.1" +version = "1.0.2" dependencies = [ "assert_matches", "json-patch", @@ -2894,7 +2894,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "1.0.1" +version = "1.0.2" dependencies = [ "platform-value", "platform-version", @@ -3459,7 +3459,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platform-serialization" -version = "1.0.1" +version = "1.0.2" dependencies = [ "bincode", "platform-version", @@ -3467,7 +3467,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "1.0.1" +version = "1.0.2" dependencies = [ "proc-macro2", "quote", @@ -3477,7 +3477,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "1.0.1" +version = "1.0.2" dependencies = [ "base64 0.22.1", "bincode", @@ -3498,7 +3498,7 @@ dependencies = [ [[package]] name = "platform-value-convertible" -version = "1.0.1" +version = "1.0.2" dependencies = [ "quote", "syn 2.0.72", @@ -3506,7 +3506,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "1.0.1" +version = "1.0.2" dependencies = [ "bincode", "grovedb-version", @@ -3517,7 +3517,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "1.0.1" +version = "1.0.2" dependencies = [ "proc-macro2", "quote", @@ -4127,7 +4127,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "1.0.1" +version = "1.0.2" dependencies = [ "backon", "chrono", @@ -4644,7 +4644,7 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "simple-signer" -version = "1.0.1" +version = "1.0.2" dependencies = [ "base64 0.22.1", "bincode", @@ -4735,7 +4735,7 @@ dependencies = [ [[package]] name = "strategy-tests" -version = "1.0.1" +version = "1.0.2" dependencies = [ "bincode", "dpp", @@ -5775,7 +5775,7 @@ checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" [[package]] name = "wasm-dpp" -version = "1.0.1" +version = "1.0.2" dependencies = [ "anyhow", "async-trait", @@ -6048,7 +6048,7 @@ dependencies = [ [[package]] name = "withdrawals-contract" -version = "1.0.1" +version = "1.0.2" dependencies = [ "num_enum", "platform-value", diff --git a/package.json b/package.json index db59819c9a3..a42075f8959 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/platform", - "version": "1.0.1", + "version": "1.0.2", "private": true, "scripts": { "setup": "yarn install && yarn run build && yarn run configure", diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index 2579b9e5fea..665f181256e 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/bench-suite", "private": true, - "version": "1.0.1", + "version": "1.0.2", "description": "Dash Platform benchmark tool", "scripts": { "bench": "node ./bin/bench.js", diff --git a/packages/check-features/Cargo.toml b/packages/check-features/Cargo.toml index 06c2c3d1112..193e8d6b582 100644 --- a/packages/check-features/Cargo.toml +++ b/packages/check-features/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "check-features" -version = "0.1.1" +version = "0.1.2" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/packages/dapi-grpc/Cargo.toml b/packages/dapi-grpc/Cargo.toml index 7af0187988d..a6142cd0691 100644 --- a/packages/dapi-grpc/Cargo.toml +++ b/packages/dapi-grpc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc" description = "GRPC client for Dash Platform" -version = "1.0.1" +version = "1.0.2" authors = [ "Samuel Westrich ", "Igor Markin ", diff --git a/packages/dapi-grpc/package.json b/packages/dapi-grpc/package.json index cb3d287b125..53eb1789e5b 100644 --- a/packages/dapi-grpc/package.json +++ b/packages/dapi-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-grpc", - "version": "1.0.1", + "version": "1.0.2", "description": "DAPI GRPC definition file and generated clients", "browser": "browser.js", "main": "node.js", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index 2a58b23117c..5154c24d799 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/dapi", "private": true, - "version": "1.0.1", + "version": "1.0.2", "description": "A decentralized API for the Dash network", "scripts": { "api": "node scripts/api.js", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index 7eaf8ec7ae8..dd5d83e7a99 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dash-spv", - "version": "2.0.1", + "version": "2.0.2", "description": "Repository containing SPV functions used by @dashevo", "main": "index.js", "scripts": { diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 4fbc6205de6..a8cd0e4257f 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -1,6 +1,6 @@ { "name": "dashmate", - "version": "1.0.1", + "version": "1.0.2", "description": "Distribution package for Dash node installation", "scripts": { "lint": "eslint .", diff --git a/packages/dashpay-contract/Cargo.toml b/packages/dashpay-contract/Cargo.toml index 9c4196c2127..28ada6d94e9 100644 --- a/packages/dashpay-contract/Cargo.toml +++ b/packages/dashpay-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dashpay-contract" description = "DashPay data contract schema and tools" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dashpay-contract/package.json b/packages/dashpay-contract/package.json index e5f5251a47a..bd08462b890 100644 --- a/packages/dashpay-contract/package.json +++ b/packages/dashpay-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dashpay-contract", - "version": "1.0.1", + "version": "1.0.2", "description": "Reference contract of the DashPay DPA on Dash Evolution", "scripts": { "lint": "eslint .", diff --git a/packages/data-contracts/Cargo.toml b/packages/data-contracts/Cargo.toml index e529711f4dd..fc3588fff58 100644 --- a/packages/data-contracts/Cargo.toml +++ b/packages/data-contracts/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "data-contracts" description = "Dash Platform system data contracts" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/Cargo.toml b/packages/dpns-contract/Cargo.toml index 475d261a252..50945a7287b 100644 --- a/packages/dpns-contract/Cargo.toml +++ b/packages/dpns-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dpns-contract" description = "DPNS data contract schema and tools" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/dpns-contract/package.json b/packages/dpns-contract/package.json index 8fc803a02eb..83191f71126 100644 --- a/packages/dpns-contract/package.json +++ b/packages/dpns-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dpns-contract", - "version": "1.0.1", + "version": "1.0.2", "description": "A contract and helper scripts for DPNS DApp", "scripts": { "lint": "eslint .", diff --git a/packages/feature-flags-contract/Cargo.toml b/packages/feature-flags-contract/Cargo.toml index 5de46333a2b..c6d2c04a6f3 100644 --- a/packages/feature-flags-contract/Cargo.toml +++ b/packages/feature-flags-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "feature-flags-contract" description = "Feature flags data contract schema and tools" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/feature-flags-contract/package.json b/packages/feature-flags-contract/package.json index 15cd8999dc7..4daa1533180 100644 --- a/packages/feature-flags-contract/package.json +++ b/packages/feature-flags-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/feature-flags-contract", - "version": "1.0.1", + "version": "1.0.2", "description": "Data Contract to store Dash Platform feature flags", "scripts": { "build": "", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index aa397b4b422..fc840b5eea3 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-client", - "version": "1.0.1", + "version": "1.0.2", "description": "Client library used to access Dash DAPI endpoints", "main": "lib/index.js", "contributors": [ diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index 94a0a4f4bea..3bfdd148864 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -1,6 +1,6 @@ { "name": "dash", - "version": "4.0.1", + "version": "4.0.2", "description": "Dash library for JavaScript/TypeScript ecosystem (Wallet, DAPI, Primitives, BLS, ...)", "main": "build/index.js", "unpkg": "dist/dash.min.js", diff --git a/packages/js-grpc-common/package.json b/packages/js-grpc-common/package.json index 29891bca3f4..70e4ba84213 100644 --- a/packages/js-grpc-common/package.json +++ b/packages/js-grpc-common/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/grpc-common", - "version": "1.0.1", + "version": "1.0.2", "description": "Common GRPC library", "main": "index.js", "scripts": { diff --git a/packages/masternode-reward-shares-contract/Cargo.toml b/packages/masternode-reward-shares-contract/Cargo.toml index 1013334d0cb..6fb9cf2b351 100644 --- a/packages/masternode-reward-shares-contract/Cargo.toml +++ b/packages/masternode-reward-shares-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "masternode-reward-shares-contract" description = "Masternode reward shares data contract schema and tools" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/masternode-reward-shares-contract/package.json b/packages/masternode-reward-shares-contract/package.json index 4ffc28c0966..7ac532d12cd 100644 --- a/packages/masternode-reward-shares-contract/package.json +++ b/packages/masternode-reward-shares-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/masternode-reward-shares-contract", - "version": "1.0.1", + "version": "1.0.2", "description": "A contract and helper scripts for reward sharing", "scripts": { "lint": "eslint .", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index 436572cfd36..32ac0bbb564 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/platform-test-suite", "private": true, - "version": "1.0.1", + "version": "1.0.2", "description": "Dash Network end-to-end tests", "scripts": { "test": "yarn exec bin/test.sh", diff --git a/packages/rs-dapi-client/Cargo.toml b/packages/rs-dapi-client/Cargo.toml index b436a70f2ab..4194556d98b 100644 --- a/packages/rs-dapi-client/Cargo.toml +++ b/packages/rs-dapi-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rs-dapi-client" -version = "1.0.1" +version = "1.0.2" edition = "2021" [features] diff --git a/packages/rs-dapi-grpc-macros/Cargo.toml b/packages/rs-dapi-grpc-macros/Cargo.toml index 54992dcce34..a547f65866f 100644 --- a/packages/rs-dapi-grpc-macros/Cargo.toml +++ b/packages/rs-dapi-grpc-macros/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dapi-grpc-macros" -version = "1.0.1" +version = "1.0.2" edition = "2021" description = "Macros used by dapi-grpc. Internal use only." diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index e1b1424fe76..362bdda96ab 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dpp" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 1e52ae8494b..284c447972c 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-abci" -version = "1.0.1" +version = "1.0.2" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index e8fb2b06bb8..42e46670e6d 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drive-proof-verifier" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 9980bfbfdcc..12b4b0d5720 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "drive" description = "Dash drive built on top of GroveDB" -version = "1.0.1" +version = "1.0.2" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/rs-json-schema-compatibility-validator/Cargo.toml b/packages/rs-json-schema-compatibility-validator/Cargo.toml index 7d0245262d9..5ed50682eb1 100644 --- a/packages/rs-json-schema-compatibility-validator/Cargo.toml +++ b/packages/rs-json-schema-compatibility-validator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-schema-compatibility-validator" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" authors = [ diff --git a/packages/rs-platform-serialization-derive/Cargo.toml b/packages/rs-platform-serialization-derive/Cargo.toml index ca53ad48d9f..b56c100bcc8 100644 --- a/packages/rs-platform-serialization-derive/Cargo.toml +++ b/packages/rs-platform-serialization-derive/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization-derive" authors = ["Samuel Westrich "] description = "Bincode serialization and deserialization derivations" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index 08f32886d68..bfec66d726a 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-serialization" authors = ["Samuel Westrich "] description = "Bincode based serialization and deserialization" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value-convertible/Cargo.toml b/packages/rs-platform-value-convertible/Cargo.toml index 2f7ac5be74d..eddc2bb49ee 100644 --- a/packages/rs-platform-value-convertible/Cargo.toml +++ b/packages/rs-platform-value-convertible/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value-convertible" authors = ["Samuel Westrich "] description = "Convertion to and from platform values" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index 0171c60f936..03d95e6e96b 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-value" authors = ["Samuel Westrich "] description = "A simple value module" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 0479c1f8616..f925997c1fa 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-version" authors = ["Samuel Westrich "] description = "Versioning library for Platform" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-platform-versioning/Cargo.toml b/packages/rs-platform-versioning/Cargo.toml index 00b049e61fe..107cdbb7556 100644 --- a/packages/rs-platform-versioning/Cargo.toml +++ b/packages/rs-platform-versioning/Cargo.toml @@ -2,7 +2,7 @@ name = "platform-versioning" authors = ["Samuel Westrich "] description = "Version derivation" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 9815f3be4a4..70f74c0a4a4 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dash-sdk" -version = "1.0.1" +version = "1.0.2" edition = "2021" [dependencies] diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index 2cdd0d71d80..1f9cd7b6172 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simple-signer" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index ea043bfcff5..bdd93aeed3a 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "strategy-tests" -version = "1.0.1" +version = "1.0.2" authors = [ "Samuel Westrich ", "Ivan Shumkov ", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index be8e17d700d..ff57b4c306f 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-lib", - "version": "8.0.1", + "version": "8.0.2", "description": "Light wallet library for Dash", "main": "src/index.js", "unpkg": "dist/wallet-lib.min.js", diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index 86d1d11bf57..a2da769784f 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-dpp" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" authors = ["Anton Suprunchuk "] diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index ad0b98ea8ec..e780979fdb1 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp", - "version": "1.0.1", + "version": "1.0.2", "description": "The JavaScript implementation of the Dash Platform Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/withdrawals-contract/Cargo.toml b/packages/withdrawals-contract/Cargo.toml index 090e98805af..d00b625405a 100644 --- a/packages/withdrawals-contract/Cargo.toml +++ b/packages/withdrawals-contract/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "withdrawals-contract" description = "Witdrawals data contract schema and tools" -version = "1.0.1" +version = "1.0.2" edition = "2021" rust-version = "1.76" license = "MIT" diff --git a/packages/withdrawals-contract/package.json b/packages/withdrawals-contract/package.json index 2f4a36c3b7e..30689739415 100644 --- a/packages/withdrawals-contract/package.json +++ b/packages/withdrawals-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/withdrawals-contract", - "version": "1.0.1", + "version": "1.0.2", "description": "Data Contract to manipulate and track withdrawals", "scripts": { "build": "",