From af5da8ff1d07650ccbd0f100730d13a80c5777a9 Mon Sep 17 00:00:00 2001 From: pshenmic Date: Tue, 21 Feb 2023 13:47:16 +0400 Subject: [PATCH 01/30] feat(dashmate): add platform llmq to dashmate --- packages/dashmate/templates/core/dash.conf.dot | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/dashmate/templates/core/dash.conf.dot b/packages/dashmate/templates/core/dash.conf.dot index cc81ce4c2b4..e99ec0b7d75 100644 --- a/packages/dashmate/templates/core/dash.conf.dot +++ b/packages/dashmate/templates/core/dash.conf.dot @@ -68,7 +68,9 @@ highsubsidyblocks=500 highsubsidyfactor=10 llmqchainlocks=llmq_devnet llmqinstantsend=llmq_devnet -llmqinstantsenddip0024=llmq_devnet_dip0024{{?}} +llmqinstantsenddip0024=llmq_devnet_dip0024 +llmqplatform=llmq_devnet_platform{{?}} + {{~it.core.p2p.seeds :seed}} addnode={{=seed.host}}:{{=seed.port}}{{~}} From 301f703d7312e15ce121088adae6560864a56c48 Mon Sep 17 00:00:00 2001 From: Djavid Gabibiyan Date: Tue, 21 Feb 2023 17:13:44 +0500 Subject: [PATCH 02/30] chore: update dashcore-lib --- .pnp.cjs | 30 +++++++++--------- ...hcore-lib-https-2d7872fbb0-d5053981b7.zip} | Bin 342224 -> 342252 bytes packages/bench-suite/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-dpp/package.json | 2 +- packages/js-drive/package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-drive-nodejs/package.json | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/package.json | 2 +- yarn.lock | 30 +++++++++--------- 15 files changed, 42 insertions(+), 42 deletions(-) rename .yarn/cache/{@dashevo-dashcore-lib-https-2d1b8b21a5-c43eb802f6.zip => @dashevo-dashcore-lib-https-2d7872fbb0-d5053981b7.zip} (94%) diff --git a/.pnp.cjs b/.pnp.cjs index e2bcb01108c..df499962d33 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -2295,7 +2295,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/bench-suite/",\ "packageDependencies": [\ ["@dashevo/bench-suite", "workspace:packages/bench-suite"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ @@ -2330,7 +2330,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dapi", "workspace:packages/dapi"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -2373,7 +2373,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert-browserify", "npm:2.0.0"],\ @@ -2461,7 +2461,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ ["@dashevo/dark-gravity-wave", "npm:1.1.1"],\ ["@dashevo/dash-util", "npm:2.0.3"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["chai", "npm:4.3.4"],\ ["eslint", "npm:7.32.0"],\ ["eslint-config-airbnb-base", "virtual:12a596dc9572e25ce715d3736dc74b317c5ca5cfb3b4f67864b1e76b3a401006f84d381aaf975bb5b4da9cafac5125e6869fc78d5202f4c95780c81479112f32#npm:14.2.1"],\ @@ -2486,10 +2486,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@dashevo/dashcore-lib", [\ - ["https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25", {\ - "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-2d1b8b21a5-c43eb802f6.zip/node_modules/@dashevo/dashcore-lib/",\ + ["https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059", {\ + "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-2d7872fbb0-d5053981b7.zip/node_modules/@dashevo/dashcore-lib/",\ "packageDependencies": [\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/bls", "npm:1.2.7"],\ ["@dashevo/x11-hash-js", "npm:1.0.2"],\ ["@types/node", "npm:12.20.37"],\ @@ -2594,7 +2594,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@babel/preset-env", "virtual:58fb68f2aed20e5e0f2e48520ab903ae9bb3440369bfd5e912034003cf27c5aae368649fc5620dd2acbed578131f3a0975e75b838d77d12335fb0412e24026c6#npm:7.16.4"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2659,7 +2659,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/drive", "workspace:packages/js-drive"],\ ["@dashevo/abci", "https://github.com/dashpay/js-abci.git#commit=09f72120bc2059144f72eb7a246d632ead3fc3c6"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ @@ -2822,7 +2822,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["@dashevo/platform-test-suite", "workspace:packages/platform-test-suite"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2914,7 +2914,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/rs-drive-nodejs/",\ "packageDependencies": [\ ["@dashevo/rs-drive", "workspace:packages/rs-drive-nodejs"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/withdrawals-contract", "workspace:packages/withdrawals-contract"],\ ["cargo-cp-artifact", "npm:0.1.6"],\ @@ -2940,7 +2940,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert", "npm:2.0.0"],\ @@ -2996,7 +2996,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wasm-dpp", "workspace:packages/wasm-dpp"],\ ["@apidevtools/json-schema-ref-parser", "npm:8.0.0"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wasm-re2", "npm:1.0.2"],\ @@ -7619,7 +7619,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dash", "workspace:packages/js-dash-sdk"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -7685,7 +7685,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dashmate", "workspace:packages/dashmate"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/docker-compose", "npm:0.24.1"],\ diff --git a/.yarn/cache/@dashevo-dashcore-lib-https-2d1b8b21a5-c43eb802f6.zip b/.yarn/cache/@dashevo-dashcore-lib-https-2d7872fbb0-d5053981b7.zip similarity index 94% rename from .yarn/cache/@dashevo-dashcore-lib-https-2d1b8b21a5-c43eb802f6.zip rename to .yarn/cache/@dashevo-dashcore-lib-https-2d7872fbb0-d5053981b7.zip index cc4e3690f3c7e369019b67fe6b7964009e414bba..438bb2856c75dcaf2ee112ea0f107199481c0fa1 100644 GIT binary patch delta 9071 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 HYjFM#dAA#b delta 8988 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 diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index 2f480b843ff..e16f22528a3 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -8,7 +8,7 @@ "lint": "eslint ." }, "dependencies": { - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/wallet-lib": "workspace:*", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index bc6af47813f..176f9ce9aff 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@dashevo/dapi-grpc": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index a00ecf1c92a..d4a889fb467 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -14,7 +14,7 @@ "dependencies": { "@dashevo/dark-gravity-wave": "^1.1.1", "@dashevo/dash-util": "^2.0.3", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "levelup": "^4.4.0", "memdown": "^5.1.0" }, diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 20713fef788..e9e71acb117 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -48,7 +48,7 @@ "homepage": "https://github.com/dashevo/dashmate#readme", "dependencies": { "@dashevo/bls": "~1.2.7", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/docker-compose": "^0.24.1", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index 66cdbf0655c..18a66c2a5db 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -28,7 +28,7 @@ "dependencies": { "@dashevo/dapi-grpc": "workspace:*", "@dashevo/dash-spv": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", "bs58": "^4.0.1", diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index 81755bfcb5f..3a4ac108094 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -36,7 +36,7 @@ "homepage": "https://github.com/dashevo/DashJS#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", diff --git a/packages/js-dpp/package.json b/packages/js-dpp/package.json index bf719705753..3b2e27f51cf 100644 --- a/packages/js-dpp/package.json +++ b/packages/js-dpp/package.json @@ -84,7 +84,7 @@ "dependencies": { "@apidevtools/json-schema-ref-parser": "^8.0.0", "@dashevo/bls": "~1.2.7", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", "@dashevo/feature-flags-contract": "workspace:*", diff --git a/packages/js-drive/package.json b/packages/js-drive/package.json index 90229b47dc2..a7c1b698402 100644 --- a/packages/js-drive/package.json +++ b/packages/js-drive/package.json @@ -69,7 +69,7 @@ "dependencies": { "@dashevo/abci": "github:dashpay/js-abci#09f72120bc2059144f72eb7a246d632ead3fc3c6", "@dashevo/dapi-grpc": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index 2290129b38a..059cd96a18d 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -24,7 +24,7 @@ "homepage": "https://github.com/dashevo/platform-test-suite#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/feature-flags-contract": "workspace:*", diff --git a/packages/rs-drive-nodejs/package.json b/packages/rs-drive-nodejs/package.json index 7fc523c135b..43d6a58b671 100644 --- a/packages/rs-drive-nodejs/package.json +++ b/packages/rs-drive-nodejs/package.json @@ -17,7 +17,7 @@ ], "license": "MIT", "devDependencies": { - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/withdrawals-contract": "workspace:*", "chai": "^4.3.4", "dirty-chai": "^2.0.1", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index 35d533f5846..235a15789b4 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -43,7 +43,7 @@ "homepage": "https://github.com/dashevo/wallet-lib#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", "cbor": "^8.0.0", diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index 930da86d3ee..71d95769197 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -36,7 +36,7 @@ }, "devDependencies": { "@apidevtools/json-schema-ref-parser": "^8.0.0", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/wasm-re2": "~1.0.2", diff --git a/yarn.lock b/yarn.lock index 12b3953f17a..3afedd39cd5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1296,7 +1296,7 @@ __metadata: version: 0.0.0-use.local resolution: "@dashevo/bench-suite@workspace:packages/bench-suite" dependencies: - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/wallet-lib": "workspace:*" @@ -1329,7 +1329,7 @@ __metadata: "@babel/core": ^7.15.5 "@dashevo/dapi-grpc": "workspace:*" "@dashevo/dash-spv": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dpp": "workspace:*" "@dashevo/grpc-common": "workspace:*" assert-browserify: ^2.0.0 @@ -1404,7 +1404,7 @@ __metadata: dependencies: "@dashevo/dapi-client": "workspace:*" "@dashevo/dapi-grpc": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dp-services-ctl": "github:dashevo/js-dp-services-ctl#v0.19-dev" "@dashevo/dpp": "workspace:*" @@ -1451,7 +1451,7 @@ __metadata: dependencies: "@dashevo/dark-gravity-wave": ^1.1.1 "@dashevo/dash-util": ^2.0.3 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" chai: ^4.3.4 eslint: ^7.32.0 eslint-config-airbnb-base: ^14.2.1 @@ -1473,9 +1473,9 @@ __metadata: languageName: node linkType: hard -"@dashevo/dashcore-lib@github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25": +"@dashevo/dashcore-lib@github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059": version: 0.19.44 - resolution: "@dashevo/dashcore-lib@https://github.com/dashevo/dashcore-lib.git#commit=3527419e8739b5e7d4017028d642dba8851c3e25" + resolution: "@dashevo/dashcore-lib@https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059" dependencies: "@dashevo/bls": ~1.2.7 "@dashevo/x11-hash-js": ^1.0.2 @@ -1488,7 +1488,7 @@ __metadata: lodash: ^4.17.20 ripemd160: ^2.0.2 unorm: ^1.6.0 - checksum: c43eb802f6cbc97171681c51a2984faf789a7fb4bbcd0daca65d38409037c081b5cc0da51efe8437d07e6c4e26a6139793c77b5c0261c70e24b8d0494f1fdbe4 + checksum: d5053981b7a77f7358f12ea87a33dce28f79b99a256f7e19cd76a361787a494c3e15cd91cb28dd4e8aace886d04582d68410b76809b4f874f4ef7953eeb0c8fd languageName: node linkType: hard @@ -1574,7 +1574,7 @@ __metadata: "@babel/core": ^7.15.5 "@babel/preset-env": ^7.15.4 "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dpns-contract": "workspace:*" "@dashevo/feature-flags-contract": "workspace:*" @@ -1637,7 +1637,7 @@ __metadata: dependencies: "@dashevo/abci": "github:dashpay/js-abci#09f72120bc2059144f72eb7a246d632ead3fc3c6" "@dashevo/dapi-grpc": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dp-services-ctl": "github:dashevo/js-dp-services-ctl#v0.19-dev" @@ -1778,7 +1778,7 @@ __metadata: resolution: "@dashevo/platform-test-suite@workspace:packages/platform-test-suite" dependencies: "@dashevo/dapi-client": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/feature-flags-contract": "workspace:*" @@ -1877,7 +1877,7 @@ __metadata: version: 0.0.0-use.local resolution: "@dashevo/rs-drive@workspace:packages/rs-drive-nodejs" dependencies: - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dpp": "workspace:*" "@dashevo/withdrawals-contract": "workspace:*" cargo-cp-artifact: ^0.1.6 @@ -1901,7 +1901,7 @@ __metadata: dependencies: "@dashevo/dapi-client": "workspace:*" "@dashevo/dash-spv": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dpp": "workspace:*" "@dashevo/grpc-common": "workspace:*" assert: ^2.0.0 @@ -1955,7 +1955,7 @@ __metadata: dependencies: "@apidevtools/json-schema-ref-parser": ^8.0.0 "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/wasm-re2": ~1.0.2 @@ -5682,7 +5682,7 @@ __metadata: resolution: "dash@workspace:packages/js-dash-sdk" dependencies: "@dashevo/dapi-client": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" @@ -5746,7 +5746,7 @@ __metadata: resolution: "dashmate@workspace:packages/dashmate" dependencies: "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#3527419e8739b5e7d4017028d642dba8851c3e25" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dashpay-contract": "workspace:*" "@dashevo/docker-compose": ^0.24.1 From a2ff7030c9aaf1f7ec56a44d342fc487467d0065 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 20:30:06 +0800 Subject: [PATCH 03/30] feat(dashmate): register HPMN for local network --- .../configs/schema/configJsonSchema.js | 17 +-- packages/dashmate/configs/system/base.js | 6 +- packages/dashmate/src/commands/setup.js | 3 +- packages/dashmate/src/constants.js | 6 +- .../src/core/wallet/registerMasternode.js | 2 + packages/dashmate/src/createDIContainer.js | 6 +- .../platform/tenderdashInitTaskFactory.js | 56 ---------- .../tasks/registerMasternodeTaskFactory.js | 19 ++-- .../local/configureTenderdashTaskFactory.js | 9 +- .../local/enableCoreQuorumsTaskFactory.js | 1 + .../setup/setupLocalPresetTaskFactory.js | 10 ++ .../generateTenderdashNodeKeyAndId.js | 11 ++ .../initializeTenderdashNodeFactory.js | 101 ------------------ .../drive/tenderdash/node_key.json.dot | 8 +- 14 files changed, 66 insertions(+), 189 deletions(-) delete mode 100644 packages/dashmate/src/listr/tasks/platform/tenderdashInitTaskFactory.js create mode 100644 packages/dashmate/src/tenderdash/generateTenderdashNodeKeyAndId.js delete mode 100644 packages/dashmate/src/tenderdash/initializeTenderdashNodeFactory.js diff --git a/packages/dashmate/configs/schema/configJsonSchema.js b/packages/dashmate/configs/schema/configJsonSchema.js index 2851e0071a2..18243a1ff73 100644 --- a/packages/dashmate/configs/schema/configJsonSchema.js +++ b/packages/dashmate/configs/schema/configJsonSchema.js @@ -478,8 +478,17 @@ module.exports = { required: ['port'], additionalProperties: false, }, - nodeKey: { + node: { type: 'object', + properties: { + id: { + type: ['string', 'null'], + }, + key: { + type: ['string', 'null'], + }, + }, + additionalProperties: false, }, moniker: { type: ['string', 'null'], @@ -487,12 +496,8 @@ module.exports = { genesis: { type: 'object', }, - nodeId: { - type: ['string', 'null'], - }, }, - required: ['docker', 'p2p', 'rpc', 'consensus', - 'nodeKey', 'moniker', 'genesis', 'nodeId'], + required: ['docker', 'p2p', 'rpc', 'consensus', 'node', 'moniker', 'genesis'], additionalProperties: false, }, }, diff --git a/packages/dashmate/configs/system/base.js b/packages/dashmate/configs/system/base.js index c9777e92424..e025b1f93e2 100644 --- a/packages/dashmate/configs/system/base.js +++ b/packages/dashmate/configs/system/base.js @@ -159,13 +159,13 @@ module.exports = { level: 'debug', format: 'plain', }, - nodeKey: { - + node: { + id: null, + key: null, }, genesis: { }, - nodeId: null, moniker: null, }, }, diff --git a/packages/dashmate/src/commands/setup.js b/packages/dashmate/src/commands/setup.js index 006d8be5f7e..13f6224cce1 100644 --- a/packages/dashmate/src/commands/setup.js +++ b/packages/dashmate/src/commands/setup.js @@ -11,7 +11,6 @@ const { PRESETS, NODE_TYPES, NODE_TYPE_MASTERNODE, - MASTERNODE_DASH_AMOUNT, SSL_PROVIDERS, } = require('../constants'); @@ -141,7 +140,7 @@ SetupCommand.flags = { 'debug-logs': Flags.boolean({ char: 'd', description: 'enable debug logs', allowNo: true }), 'external-ip': Flags.string({ char: 'i', description: 'external ip' }), 'operator-bls-private-key': Flags.string({ char: 'k', description: 'operator bls private key' }), - 'funding-private-key': Flags.string({ char: 'p', description: `private key with more than ${MASTERNODE_DASH_AMOUNT} dash for funding collateral` }), + 'funding-private-key': Flags.string({ char: 'p', description: 'private key with enough dash for masternode collateral' }), 'node-count': Flags.integer({ description: 'number of nodes to setup' }), 'miner-interval': Flags.string({ char: 'm', description: 'interval between blocks' }), 'ssl-provider': Flags.string({ char: 's', description: '', options: SSL_PROVIDERS.filter((item) => item !== 'selfSigned') }), diff --git a/packages/dashmate/src/constants.js b/packages/dashmate/src/constants.js index 90676033e4a..99d65c2525b 100644 --- a/packages/dashmate/src/constants.js +++ b/packages/dashmate/src/constants.js @@ -27,7 +27,8 @@ const quorumTypes = { LLMQ_TYPE_TEST: 100, }; -const MASTERNODE_DASH_AMOUNT = 1000; +const MASTERNODE_COLLATERAL_AMOUNT = 1000; +const HPMN_COLLATERAL_AMOUNT = 4000; const HOME_DIR_PATH = process.env.DASHMATE_HOME_DIR ? process.env.DASHMATE_HOME_DIR @@ -55,7 +56,8 @@ module.exports = { NODE_TYPES: Object.values(nodeTypes), QUORUM_NAMES: Object.values(quorumNames), QUORUM_TYPES: quorumTypes, - MASTERNODE_DASH_AMOUNT, + MASTERNODE_COLLATERAL_AMOUNT, + HPMN_COLLATERAL_AMOUNT, HOME_DIR_PATH, CONFIG_FILE_PATH, OUTPUT_FORMATS, diff --git a/packages/dashmate/src/core/wallet/registerMasternode.js b/packages/dashmate/src/core/wallet/registerMasternode.js index 46bacc7019a..fa1067e78f4 100644 --- a/packages/dashmate/src/core/wallet/registerMasternode.js +++ b/packages/dashmate/src/core/wallet/registerMasternode.js @@ -9,6 +9,7 @@ * @param {string} fundSourceAddress * @param {number} operatorReward * @param {Config} config + * @param {boolean} [hp=false] * @return {Promise} */ async function registerMasternode( @@ -19,6 +20,7 @@ async function registerMasternode( fundSourceAddress, operatorReward, config, + hp = false, ) { // get collateral index const { result: masternodeOutputs } = await coreService.getRpcClient().masternode('outputs', { wallet: 'main' }); diff --git a/packages/dashmate/src/createDIContainer.js b/packages/dashmate/src/createDIContainer.js index 9e99523d233..465a9b255ed 100644 --- a/packages/dashmate/src/createDIContainer.js +++ b/packages/dashmate/src/createDIContainer.js @@ -55,11 +55,9 @@ const getHostScopeFactory = require('./status/scopes/host'); const generateToAddressTaskFactory = require('./listr/tasks/wallet/generateToAddressTaskFactory'); const registerMasternodeTaskFactory = require('./listr/tasks/registerMasternodeTaskFactory'); const featureFlagTaskFactory = require('./listr/tasks/platform/featureFlagTaskFactory'); -const tenderdashInitTaskFactory = require('./listr/tasks/platform/tenderdashInitTaskFactory'); const startNodeTaskFactory = require('./listr/tasks/startNodeTaskFactory'); const createTenderdashRpcClient = require('./tenderdash/createTenderdashRpcClient'); -const initializeTenderdashNodeFactory = require('./tenderdash/initializeTenderdashNodeFactory'); const setupLocalPresetTaskFactory = require('./listr/tasks/setup/setupLocalPresetTaskFactory'); const setupRegularPresetTaskFactory = require('./listr/tasks/setup/setupRegularPresetTaskFactory'); const stopNodeTaskFactory = require('./listr/tasks/stopNodeTaskFactory'); @@ -91,6 +89,7 @@ const generateKeyPair = require('./ssl/generateKeyPair'); const createSelfSignedCertificate = require('./ssl/selfSigned/createCertificate'); const scheduleRenewZeroSslCertificateFactory = require('./helper/scheduleRenewZeroSslCertificateFactory'); +const generateTenderdashNodeKeyAndId = require('./tenderdash/generateTenderdashNodeKeyAndId'); async function createDIContainer() { const container = createAwilixContainer({ @@ -193,7 +192,7 @@ async function createDIContainer() { */ container.register({ createTenderdashRpcClient: asValue(createTenderdashRpcClient), - initializeTenderdashNode: asFunction(initializeTenderdashNodeFactory).singleton(), + generateTenderdashNodeKeyAndId: asValue(generateTenderdashNodeKeyAndId), }); /** @@ -205,7 +204,6 @@ async function createDIContainer() { generateToAddressTask: asFunction(generateToAddressTaskFactory).singleton(), registerMasternodeTask: asFunction(registerMasternodeTaskFactory).singleton(), featureFlagTask: asFunction(featureFlagTaskFactory).singleton(), - tenderdashInitTask: asFunction(tenderdashInitTaskFactory).singleton(), startNodeTask: asFunction(startNodeTaskFactory).singleton(), stopNodeTask: asFunction(stopNodeTaskFactory).singleton(), restartNodeTask: asFunction(restartNodeTaskFactory).singleton(), diff --git a/packages/dashmate/src/listr/tasks/platform/tenderdashInitTaskFactory.js b/packages/dashmate/src/listr/tasks/platform/tenderdashInitTaskFactory.js deleted file mode 100644 index d587e04a743..00000000000 --- a/packages/dashmate/src/listr/tasks/platform/tenderdashInitTaskFactory.js +++ /dev/null @@ -1,56 +0,0 @@ -const { Listr } = require('listr2'); - -/** - * @param {initializeTenderdashNode} initializeTenderdashNode - * @param {Docker} docker - * @return {tenderdashInitTask} - */ -function tenderdashInitTaskFactory( - initializeTenderdashNode, - docker, -) { - /** - * @typedef {tenderdashInitTask} - * @param {Config} config - * @return {Listr} - */ - function tenderdashInitTask( - config, - ) { - return new Listr([ - { - title: 'Generate node keys and data', - task: async (ctx, task) => { - const isNodeKeyPresent = Object.keys(config.get('platform.drive.tenderdash.nodeKey')).length !== 0; - const isGenesisPresent = Object.keys(config.get('platform.drive.tenderdash.genesis')).length !== 0; - - const { Volumes: existingVolumes } = await docker.listVolumes(); - const { COMPOSE_PROJECT_NAME: composeProjectName } = config.toEnvs(); - const isDataVolumePresent = existingVolumes.find((v) => v.Name === `${composeProjectName}_drive_tenderdash`); - - if (isNodeKeyPresent && isGenesisPresent && isDataVolumePresent) { - task.skip('Node already initialized'); - - return; - } - - const [nodeKey, genesis, nodeId] = await initializeTenderdashNode(config); - - config.set('platform.drive.tenderdash.nodeId', nodeId); - - if (!isNodeKeyPresent) { - config.set('platform.drive.tenderdash.nodeKey', nodeKey); - } - - if (!isGenesisPresent) { - config.set('platform.drive.tenderdash.genesis', genesis); - } - }, - }, - ]); - } - - return tenderdashInitTask; -} - -module.exports = tenderdashInitTaskFactory; diff --git a/packages/dashmate/src/listr/tasks/registerMasternodeTaskFactory.js b/packages/dashmate/src/listr/tasks/registerMasternodeTaskFactory.js index ac20facec5c..0813b6c43d9 100644 --- a/packages/dashmate/src/listr/tasks/registerMasternodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/registerMasternodeTaskFactory.js @@ -4,7 +4,8 @@ const { Observable } = require('rxjs'); const { NETWORK_LOCAL, - MASTERNODE_DASH_AMOUNT, + MASTERNODE_COLLATERAL_AMOUNT, + HPMN_COLLATERAL_AMOUNT, } = require('../../constants'); /** @@ -38,10 +39,13 @@ function registerMasternodeTaskFactory( /** * @typedef {registerMasternodeTask} * @param {Config} config - * @param {number} operatorReward + * @param {boolean} [hp=false] - Register high-performance masternode + * @param {number} [operatorReward=0] * @return {Listr} */ - function registerMasternodeTask(config, operatorReward = 0) { + function registerMasternodeTask(config, hp = false, operatorReward = 0) { + const collateralAmount = hp ? HPMN_COLLATERAL_AMOUNT : MASTERNODE_COLLATERAL_AMOUNT; + return new Listr([ { title: 'Start Core', @@ -92,8 +96,8 @@ function registerMasternodeTaskFactory( const balance = await getAddressBalance(ctx.coreService, ctx.fundingAddress); - if (balance <= MASTERNODE_DASH_AMOUNT) { - throw new Error(`You need to have more than ${MASTERNODE_DASH_AMOUNT} Dash on your funding address`); + if (balance <= collateralAmount) { + throw new Error(`You need to have more than ${collateralAmount} Dash on your funding address`); } }, }, @@ -159,14 +163,14 @@ function registerMasternodeTaskFactory( ), }, { - title: `Send ${MASTERNODE_DASH_AMOUNT} dash from funding address to collateral address`, + title: `Send ${collateralAmount} dash from funding address to collateral address`, task: async (ctx, task) => { ctx.collateralTxId = await sendToAddress( ctx.coreService, ctx.fundingPrivateKeyString, ctx.fundingAddress, ctx.collateral.address, - MASTERNODE_DASH_AMOUNT, + collateralAmount, ); // eslint-disable-next-line no-param-reassign @@ -225,6 +229,7 @@ function registerMasternodeTaskFactory( ctx.reward.address, operatorReward, config, + hp, ); // eslint-disable-next-line no-param-reassign diff --git a/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js index 68b9afb4e35..ce4a3d754d0 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js @@ -2,13 +2,11 @@ const { Listr } = require('listr2'); const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion'); /** - * @param {tenderdashInitTask} tenderdashInitTask * @param {renderServiceTemplates} renderServiceTemplates * @param {writeServiceConfigs} writeServiceConfigs * @return {configureTenderdashTask} */ function configureTenderdashTaskFactory( - tenderdashInitTask, renderServiceTemplates, writeServiceConfigs, ) { @@ -23,10 +21,7 @@ function configureTenderdashTaskFactory( task: async (ctx) => { const platformConfigs = configGroup.filter((config) => config.has('platform')); - const subTasks = platformConfigs.map((config) => ({ - title: `Initialize ${config.getName()} Tenderdash`, - task: () => tenderdashInitTask(config), - })); + const subTasks = []; // Interconnect Tenderdash nodes subTasks.push({ @@ -34,7 +29,7 @@ function configureTenderdashTaskFactory( const randomChainIdPart = Math.floor(Math.random() * 60) + 1; const chainId = `dash_masternode_local_${randomChainIdPart}`; - const genesisTime = platformConfigs[0].get('platform.drive.tenderdash.genesis.genesis_time'); + const genesisTime = new Date().toISOString(); platformConfigs.forEach((config, index) => { config.set('platform.drive.tenderdash.genesis.genesis_time', genesisTime); diff --git a/packages/dashmate/src/listr/tasks/setup/local/enableCoreQuorumsTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/enableCoreQuorumsTaskFactory.js index e9a6b2958a9..38081881ece 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/enableCoreQuorumsTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/enableCoreQuorumsTaskFactory.js @@ -269,6 +269,7 @@ function enableCoreQuorumsTaskFactory(generateBlocks) { // eslint-disable-next-line prefer-destructuring ctx.quorumHash = quorumList[LLMQ_TYPE_TEST][0]; + // TODO: We need to take quorum type from config const { result: quorumInfo } = await ctx.seedRpcClient.quorum('info', 100, ctx.quorumHash); // Mine 8 (SIGN_HEIGHT_OFFSET) more blocks to make sure diff --git a/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js index 887881f5fc0..5784a8e6567 100644 --- a/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/setupLocalPresetTaskFactory.js @@ -15,6 +15,7 @@ const { * @param {resolveDockerHostIp} resolveDockerHostIp * @param {configFileRepository} configFileRepository * @param {generateHDPrivateKeys} generateHDPrivateKeys + * @param {generateTenderdashNodeKeyAndId} generateTenderdashNodeKeyAndId */ function setupLocalPresetTaskFactory( configFile, @@ -24,6 +25,7 @@ function setupLocalPresetTaskFactory( resolveDockerHostIp, configFileRepository, generateHDPrivateKeys, + generateTenderdashNodeKeyAndId, ) { /** * @typedef {setupLocalPresetTask} @@ -191,6 +193,14 @@ function setupLocalPresetTaskFactory( } else { config.set('description', `local node #${nodeIndex}`); + const { + id, + key, + } = generateTenderdashNodeKeyAndId(); + + config.set('platform.drive.tenderdash.node.id', id); + config.set('platform.drive.tenderdash.node.key', key); + config.set('platform.dapi.envoy.http.port', 3000 + (i * 100)); config.set('platform.drive.tenderdash.p2p.port', 26656 + (i * 100)); config.set('platform.drive.tenderdash.rpc.port', 26657 + (i * 100)); diff --git a/packages/dashmate/src/tenderdash/generateTenderdashNodeKeyAndId.js b/packages/dashmate/src/tenderdash/generateTenderdashNodeKeyAndId.js new file mode 100644 index 00000000000..ac62381bbc6 --- /dev/null +++ b/packages/dashmate/src/tenderdash/generateTenderdashNodeKeyAndId.js @@ -0,0 +1,11 @@ +/** + * @typedef generateTenderdashNodeKeyAndId + * @returns {{}} + */ +function generateTenderdashNodeKeyAndId() { + return { + + }; +} + +module.exports = generateTenderdashNodeKeyAndId; diff --git a/packages/dashmate/src/tenderdash/initializeTenderdashNodeFactory.js b/packages/dashmate/src/tenderdash/initializeTenderdashNodeFactory.js deleted file mode 100644 index 3b5b0b9f249..00000000000 --- a/packages/dashmate/src/tenderdash/initializeTenderdashNodeFactory.js +++ /dev/null @@ -1,101 +0,0 @@ -const { WritableStream } = require('memory-streams'); - -/** - * - * @param {DockerCompose} dockerCompose - * @param {Docker} docker - * @param {dockerPull} dockerPull - * @return {initializeTenderdashNode} - */ -function initializeTenderdashNodeFactory(dockerCompose, docker, dockerPull) { - /** - * @typedef {initializeTenderdashNode} - * @param {Config} config - * @return {Promise} - */ - async function initializeTenderdashNode(config) { - if (await dockerCompose.isServiceRunning(config.toEnvs(), 'drive_tenderdash')) { - throw new Error('Can\'t initialize Tenderdash. Already running.'); - } - - const { COMPOSE_PROJECT_NAME: composeProjectName } = config.toEnvs(); - const volumeName = 'drive_tenderdash'; - const volumeNameFullName = `${composeProjectName}_${volumeName}`; - - const volume = docker.getVolume(volumeNameFullName); - - const isVolumeDefined = await volume.inspect() - .then(() => true) - .catch(() => false); - - if (!isVolumeDefined) { - // Create volume with tenderdash data - await docker.createVolume({ - Name: volumeNameFullName, - Labels: { - 'com.docker.compose.project': composeProjectName, - 'com.docker.compose.version': '1.27.4', - 'com.docker.compose.volume': volumeName, - }, - }); - } - - // Initialize Tenderdash - - const tenderdashImage = config.get('platform.drive.tenderdash.docker.image', true); - - await dockerPull(tenderdashImage); - - const writableStream = new WritableStream(); - - const command = [ - '/usr/bin/tenderdash init validator> /dev/null', - 'echo "["', - 'cat $TMHOME/config/node_key.json', - 'echo ","', - 'cat $TMHOME/config/genesis.json', - 'echo ",\\""', - '/usr/bin/tenderdash show-node-id', - 'echo "\\""', - 'echo "]"', - 'rm -rf $TMHOME/config', - ].join('&&'); - - const [result] = await docker.run( - tenderdashImage, - [], - writableStream, - { - Entrypoint: ['sh', '-c', command], - HostConfig: { - AutoRemove: true, - Binds: [`${volumeNameFullName}:/tenderdash`], - }, - }, - ); - - if (result.StatusCode !== 0) { - let message = writableStream.toString(); - - if (result.StatusCode === 1 && message === '') { - message = 'already initialized. Please reset node data'; - } - - throw new Error(`Can't initialize tenderdash: ${message}`); - } - - let stringifiedJSON = writableStream.toString(); - - const indexOfOpeningBracket = stringifiedJSON.indexOf('['); - - stringifiedJSON = stringifiedJSON - .slice(indexOfOpeningBracket) - .replace(/\r\n/g, ''); - - return JSON.parse(stringifiedJSON); - } - - return initializeTenderdashNode; -} - -module.exports = initializeTenderdashNodeFactory; diff --git a/packages/dashmate/templates/platform/drive/tenderdash/node_key.json.dot b/packages/dashmate/templates/platform/drive/tenderdash/node_key.json.dot index 4a1d1bfe86b..520d35d86ec 100644 --- a/packages/dashmate/templates/platform/drive/tenderdash/node_key.json.dot +++ b/packages/dashmate/templates/platform/drive/tenderdash/node_key.json.dot @@ -1 +1,7 @@ -{{=JSON.stringify(it.platform.drive.tenderdash.nodeKey,null,2)}} +{ + "id": "{{=it.platform.drive.tenderdash.node.id}}", + "priv_key": { + "type": "tendermint/PrivKeyEd25519", + "value": "{{=it.platform.drive.tenderdash.node.key}}" + } +} From b469962d7ef68b1e915ab8dd78068cbb3357ed1c Mon Sep 17 00:00:00 2001 From: Djavid Gabibiyan Date: Tue, 21 Feb 2023 17:56:01 +0500 Subject: [PATCH 04/30] chore: registerMasternode --- .../src/core/wallet/registerMasternode.js | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/dashmate/src/core/wallet/registerMasternode.js b/packages/dashmate/src/core/wallet/registerMasternode.js index fa1067e78f4..d39d67d3456 100644 --- a/packages/dashmate/src/core/wallet/registerMasternode.js +++ b/packages/dashmate/src/core/wallet/registerMasternode.js @@ -31,8 +31,8 @@ async function registerMasternode( const ipAndPort = `${config.get('externalIp', true)}:${config.get('core.p2p.port')}`; - const { result: proRegTxId } = await coreService.getRpcClient().protx( - 'register', + const proTxArgs = [ + hp ? 'register_hpnm' : 'register', collateralHash, // The txid of the 1000 Dash collateral funding transaction parseInt(collateralOutputIndex, 10), // The output index of the 1000 Dash funding transaction ipAndPort, // Masternode IP address and port, in the format x.x.x.x:yyyy @@ -41,9 +41,26 @@ async function registerMasternode( ownerAddress, // The new Dash address, or the address of a delegate, used for proposal voting operatorReward, // The percentage of the block reward allocated to the operator as payment fundSourceAddress, // A new or existing Dash address to receive the owner’s masternode rewards + ]; + + if (hp) { + const nodeKeyId = config.get('platform.drive.tenderdash.node.id'); + const tenderdashP2PPort = config.get('platform.drive.tenderdash.p2p.port'); + const dapiPort = config.get('platform.dapi.envoy.http.port'); + + proTxArgs.push(nodeKeyId); + proTxArgs.push(tenderdashP2PPort); + proTxArgs.push(dapiPort); + } + + proTxArgs.push( { wallet: 'main' }, ); + const { result: proRegTxId } = await coreService.getRpcClient().protx( + ...proTxArgs, + ); + return proRegTxId; } From 48d5406f40439bb0acbcf5323289009add83e370 Mon Sep 17 00:00:00 2001 From: Djavid Gabibiyan Date: Tue, 21 Feb 2023 18:09:01 +0500 Subject: [PATCH 05/30] chore: use proper llmq type --- .../tasks/setup/local/enableCoreQuorumsTaskFactory.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/dashmate/src/listr/tasks/setup/local/enableCoreQuorumsTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/enableCoreQuorumsTaskFactory.js index 38081881ece..3cd9aea2d3e 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/enableCoreQuorumsTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/enableCoreQuorumsTaskFactory.js @@ -36,8 +36,10 @@ function enableCoreQuorumsTaskFactory(generateBlocks) { ctx.expectedJustifications = 0; ctx.expectedComplaints = 0; - ctx.masternodeRpcClients = ctx.coreServices - .filter((coreService) => coreService.getConfig().getName() !== 'local_seed') + ctx.masternodeCoreServices = ctx.coreServices + .filter((coreService) => coreService.getConfig().getName() !== 'local_seed'); + + ctx.masternodeRpcClients = ctx.masternodeCoreServices .map((coreService) => coreService.getRpcClient()); }, }, @@ -269,8 +271,9 @@ function enableCoreQuorumsTaskFactory(generateBlocks) { // eslint-disable-next-line prefer-destructuring ctx.quorumHash = quorumList[LLMQ_TYPE_TEST][0]; - // TODO: We need to take quorum type from config - const { result: quorumInfo } = await ctx.seedRpcClient.quorum('info', 100, ctx.quorumHash); + const llmqType = ctx.masternodeCoreServices[0].getConfig().get('platform.drive.abci.validatorSet.llmqType'); + + const { result: quorumInfo } = await ctx.seedRpcClient.quorum('info', llmqType, ctx.quorumHash); // Mine 8 (SIGN_HEIGHT_OFFSET) more blocks to make sure // that the new quorum gets eligable for signing sessions From 0c2e5b6ec6814424745f62cab6c9ca98c6e1f718 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 21:10:14 +0800 Subject: [PATCH 06/30] chore: implement generateTenderdashNodeKeyAndId --- .pnp.cjs | 19 ++++++++++++ packages/dashmate/package.json | 1 + .../generateTenderdashNodeKeyAndId.js | 31 +++++++++++++++++-- yarn.lock | 20 +++++++++++- 4 files changed, 68 insertions(+), 3 deletions(-) diff --git a/.pnp.cjs b/.pnp.cjs index df499962d33..d18131083da 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -7710,6 +7710,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["dockerode", "npm:3.3.1"],\ ["dot", "npm:1.1.3"],\ ["dotenv", "npm:8.6.0"],\ + ["ed25519-hd-key", "npm:1.3.0"],\ ["enquirer", "npm:2.3.6"],\ ["eslint", "npm:7.32.0"],\ ["eslint-config-airbnb-base", "virtual:12a596dc9572e25ce715d3736dc74b317c5ca5cfb3b4f67864b1e76b3a401006f84d381aaf975bb5b4da9cafac5125e6869fc78d5202f4c95780c81479112f32#npm:14.2.1"],\ @@ -8332,6 +8333,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["ed25519-hd-key", [\ + ["npm:1.3.0", {\ + "packageLocation": "./.yarn/cache/ed25519-hd-key-npm-1.3.0-248db2e234-65dcf405f9.zip/node_modules/ed25519-hd-key/",\ + "packageDependencies": [\ + ["ed25519-hd-key", "npm:1.3.0"],\ + ["create-hmac", "npm:1.1.7"],\ + ["tweetnacl", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["ee-first", [\ ["npm:1.1.1", {\ "packageLocation": "./.yarn/cache/ee-first-npm-1.1.1-33f8535b39-1b4cac778d.zip/node_modules/ee-first/",\ @@ -17209,6 +17221,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["tweetnacl", "npm:0.14.5"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.0.3", {\ + "packageLocation": "./.yarn/cache/tweetnacl-npm-1.0.3-b7eef04660-e4a57cac18.zip/node_modules/tweetnacl/",\ + "packageDependencies": [\ + ["tweetnacl", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["type-check", [\ diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index e9e71acb117..c181474d9d3 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -69,6 +69,7 @@ "dockerode": "^3.2.0", "dot": "^1.1.3", "dotenv": "^8.6.0", + "ed25519-hd-key": "^1.3.0", "enquirer": "^2.3.6", "glob": "^7.1.6", "hasbin": "^1.2.3", diff --git a/packages/dashmate/src/tenderdash/generateTenderdashNodeKeyAndId.js b/packages/dashmate/src/tenderdash/generateTenderdashNodeKeyAndId.js index ac62381bbc6..131a1dba2fb 100644 --- a/packages/dashmate/src/tenderdash/generateTenderdashNodeKeyAndId.js +++ b/packages/dashmate/src/tenderdash/generateTenderdashNodeKeyAndId.js @@ -1,10 +1,37 @@ +const { derivePath, getPublicKey } = require('ed25519-hd-key'); + +const crypto = require('crypto'); + /** * @typedef generateTenderdashNodeKeyAndId - * @returns {{}} + * @returns {{ + * privateKey: Buffer, + * publicKey: Buffer, + * key: string, + * id: string, + * }} */ function generateTenderdashNodeKeyAndId() { - return { + const derivationPath = "m/9'/5'/3'/4'/0'"; + + const seed = crypto.randomBytes(25); + + const { key: privateKey } = derivePath(derivationPath, seed.toString('hex')); + const publicKey = getPublicKey(privateKey).slice(1); + + const key = Buffer.concat([privateKey, publicKey]); + + const id = crypto.createHash('sha256') + .update(publicKey) + .digest('hex') + .slice(0, 40); + + return { + privateKey, + publicKey, + key: key.toString('base64'), + id, }; } diff --git a/yarn.lock b/yarn.lock index 3afedd39cd5..51c9e16ab2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5583,7 +5583,7 @@ __metadata: languageName: node linkType: hard -"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": +"create-hmac@npm:1.1.7, create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": version: 1.1.7 resolution: "create-hmac@npm:1.1.7" dependencies: @@ -5771,6 +5771,7 @@ __metadata: dockerode: ^3.2.0 dot: ^1.1.3 dotenv: ^8.6.0 + ed25519-hd-key: ^1.3.0 enquirer: ^2.3.6 eslint: ^7.32.0 eslint-config-airbnb-base: ^14.2.1 @@ -6239,6 +6240,16 @@ __metadata: languageName: node linkType: hard +"ed25519-hd-key@npm:^1.3.0": + version: 1.3.0 + resolution: "ed25519-hd-key@npm:1.3.0" + dependencies: + create-hmac: 1.1.7 + tweetnacl: 1.0.3 + checksum: 65dcf405f948ca592adc1e81d750627ce65887310ba0e1b430a6ae0dcc13e9e67a81cb855252c8d64cc0303da2b84ddad810db3098d24c808a5ae89e79fe58cf + languageName: node + linkType: hard + "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -13827,6 +13838,13 @@ fsevents@~2.3.2: languageName: node linkType: hard +"tweetnacl@npm:1.0.3": + version: 1.0.3 + resolution: "tweetnacl@npm:1.0.3" + checksum: e4a57cac188f0c53f24c7a33279e223618a2bfb5fea426231991652a13247bea06b081fd745d71291fcae0f4428d29beba1b984b1f1ce6f66b06a6d1ab90645c + languageName: node + linkType: hard + "tweetnacl@npm:^0.14.3": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" From 6c75be7426a0da5d393b3fd2ab2c40d184fb7638 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 21:12:14 +0800 Subject: [PATCH 07/30] chore: update yarn cache --- ...9-hd-key-npm-1.3.0-248db2e234-65dcf405f9.zip | Bin 0 -> 4745 bytes ...weetnacl-npm-1.0.3-b7eef04660-e4a57cac18.zip | Bin 0 -> 52158 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .yarn/cache/ed25519-hd-key-npm-1.3.0-248db2e234-65dcf405f9.zip create mode 100644 .yarn/cache/tweetnacl-npm-1.0.3-b7eef04660-e4a57cac18.zip diff --git a/.yarn/cache/ed25519-hd-key-npm-1.3.0-248db2e234-65dcf405f9.zip b/.yarn/cache/ed25519-hd-key-npm-1.3.0-248db2e234-65dcf405f9.zip new file mode 100644 index 0000000000000000000000000000000000000000..78e55327ea7c173b54d524798513ef359bb5f717 GIT binary patch literal 4745 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 literal 0 HcmV?d00001 diff --git a/.yarn/cache/tweetnacl-npm-1.0.3-b7eef04660-e4a57cac18.zip b/.yarn/cache/tweetnacl-npm-1.0.3-b7eef04660-e4a57cac18.zip new file mode 100644 index 0000000000000000000000000000000000000000..eb6ea706262a72d0831aece6d0d81d03effbd596 GIT binary patch literal 52158 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 Date: Tue, 21 Feb 2023 18:23:10 +0500 Subject: [PATCH 08/30] chore: migrations --- packages/dashmate/configs/migrations.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/dashmate/configs/migrations.js b/packages/dashmate/configs/migrations.js index f504c0634f0..19be39d015d 100644 --- a/packages/dashmate/configs/migrations.js +++ b/packages/dashmate/configs/migrations.js @@ -429,6 +429,14 @@ module.exports = { } else { config.platform.drive.tenderdash.moniker = null; } + + config.platform.drive.tenderdash.node = { + id: config.platform.drive.tenderdash.nodeId, + key: config.platform.drive.tenderdash.nodeKey, + }; + + delete config.platform.drive.tenderdash.nodeId; + delete config.platform.drive.tenderdash.nodeKey; } }); From ee38fb5aa6b702ba2197d190f435795db9d3994a Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 21:33:40 +0800 Subject: [PATCH 09/30] fix: renames --- packages/dashmate/src/commands/group/reset.js | 4 +-- .../src/core/wallet/registerMasternode.js | 17 +++++------ .../src/listr/tasks/resetNodeTaskFactory.js | 9 ------ .../local/configureTenderdashTaskFactory.js | 2 +- .../setup/setupRegularPresetTaskFactory.js | 7 ----- .../renderServiceTemplatesFactory.js | 28 +++---------------- 6 files changed, 14 insertions(+), 53 deletions(-) diff --git a/packages/dashmate/src/commands/group/reset.js b/packages/dashmate/src/commands/group/reset.js index d108cb302dc..3cfa3e2ee60 100644 --- a/packages/dashmate/src/commands/group/reset.js +++ b/packages/dashmate/src/commands/group/reset.js @@ -62,8 +62,8 @@ class GroupResetCommand extends GroupBaseCommand { config.set('platform.masternodeRewardShares', baseConfig.platform.masternodeRewardShares); // TODO: Should stay the same - config.set('platform.drive.tenderdash.nodeId', baseConfig.platform.drive.tenderdash.nodeId); - config.set('platform.drive.tenderdash.nodeKey', baseConfig.platform.drive.tenderdash.nodeKey); + config.set('platform.drive.tenderdash.node.id', baseConfig.platform.drive.tenderdash.node.id); + config.set('platform.drive.tenderdash.node.key', baseConfig.platform.drive.tenderdash.node.key); config.set('platform.drive.tenderdash.genesis', baseConfig.platform.drive.tenderdash.genesis); } diff --git a/packages/dashmate/src/core/wallet/registerMasternode.js b/packages/dashmate/src/core/wallet/registerMasternode.js index d39d67d3456..14a505c3569 100644 --- a/packages/dashmate/src/core/wallet/registerMasternode.js +++ b/packages/dashmate/src/core/wallet/registerMasternode.js @@ -44,21 +44,18 @@ async function registerMasternode( ]; if (hp) { - const nodeKeyId = config.get('platform.drive.tenderdash.node.id'); - const tenderdashP2PPort = config.get('platform.drive.tenderdash.p2p.port'); - const dapiPort = config.get('platform.dapi.envoy.http.port'); + const platformNodeId = config.get('platform.drive.tenderdash.node.id'); + const platformP2PPort = config.get('platform.drive.tenderdash.p2p.port'); + const platformHttpPort = config.get('platform.dapi.envoy.http.port'); - proTxArgs.push(nodeKeyId); - proTxArgs.push(tenderdashP2PPort); - proTxArgs.push(dapiPort); + proTxArgs.push(platformNodeId); + proTxArgs.push(platformP2PPort); + proTxArgs.push(platformHttpPort); } - proTxArgs.push( - { wallet: 'main' }, - ); - const { result: proRegTxId } = await coreService.getRpcClient().protx( ...proTxArgs, + { wallet: 'main' }, ); return proRegTxId; diff --git a/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js index 2fc7f35d1a5..5160fe8ff9a 100644 --- a/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/resetNodeTaskFactory.js @@ -3,7 +3,6 @@ const { Listr } = require('listr2'); /** * @param {DockerCompose} dockerCompose * @param {Docker} docker - * @param {tenderdashInitTask} tenderdashInitTask * @param {startNodeTask} startNodeTask * @param {generateToAddressTask} generateToAddressTask * @param {systemConfigs} systemConfigs @@ -12,7 +11,6 @@ const { Listr } = require('listr2'); function resetNodeTaskFactory( dockerCompose, docker, - tenderdashInitTask, startNodeTask, generateToAddressTask, systemConfigs, @@ -79,13 +77,6 @@ function resetNodeTaskFactory( } }, }, - { - title: 'Initialize Tenderdash', - enabled: (ctx) => ( - !ctx.isHardReset && !ctx.skipPlatformInitialization && config.has('platform') - ), - task: () => tenderdashInitTask(config), - }, ]); } diff --git a/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js index ce4a3d754d0..fa350643031 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/configureTenderdashTaskFactory.js @@ -42,7 +42,7 @@ function configureTenderdashTaskFactory( const p2pPeers = platformConfigs .filter((_, i) => i !== index) .map((innerConfig) => { - const nodeId = innerConfig.get('platform.drive.tenderdash.nodeId'); + const nodeId = innerConfig.get('platform.drive.tenderdash.node.id'); const port = innerConfig.get('platform.drive.tenderdash.p2p.port'); return { diff --git a/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js index c42f998d5c8..3597da07a73 100644 --- a/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/setupRegularPresetTaskFactory.js @@ -17,7 +17,6 @@ const { /** * @param {ConfigFile} configFile * @param {generateBlsKeys} generateBlsKeys - * @param {tenderdashInitTask} tenderdashInitTask * @param {registerMasternodeTask} registerMasternodeTask * @param {renderServiceTemplates} renderServiceTemplates * @param {writeServiceConfigs} writeServiceConfigs @@ -28,7 +27,6 @@ const { function setupRegularPresetTaskFactory( configFile, generateBlsKeys, - tenderdashInitTask, registerMasternodeTask, renderServiceTemplates, writeServiceConfigs, @@ -243,11 +241,6 @@ function setupRegularPresetTaskFactory( return saveCertificateTask(ctx.config); }, }, - { - title: 'Initialize Tenderdash', - enabled: (ctx) => ctx.preset !== PRESET_MAINNET, - task: (ctx) => tenderdashInitTask(ctx.config), - }, ]); } diff --git a/packages/dashmate/src/templates/renderServiceTemplatesFactory.js b/packages/dashmate/src/templates/renderServiceTemplatesFactory.js index 5fefa6ebc5e..badb8840628 100644 --- a/packages/dashmate/src/templates/renderServiceTemplatesFactory.js +++ b/packages/dashmate/src/templates/renderServiceTemplatesFactory.js @@ -22,30 +22,10 @@ function renderServiceTemplatesFactory() { const templatePaths = glob .sync(`${templatesPath}/**/*.dot`) - .filter((templatePath) => { - // Do not render platform templates if it's not configured - if (templatePath.includes('templates/platform') && !config.has('platform')) { - return false; - } - - // Don't create blank tenderdash configs - if (templatePath.includes('templates/platform/drive/tenderdash')) { - const skipEmpty = { - genesis: 'genesis', - node_key: 'nodeKey', - }; - - for (const [configName, optionName] of Object.entries(skipEmpty)) { - const option = config.get(`platform.drive.tenderdash.${optionName}`); - - if (templatePath.includes(configName) && Object.values(option).length === 0) { - return false; - } - } - } - - return true; - }); + // Do not render platform templates if it's not configured + .filter((templatePath) => ( + !templatePath.includes('templates/platform') || config.has('platform') + )); const configFiles = {}; for (const templatePath of templatePaths) { From 2faa57fd26e9ae5fda19d5ec1e098d8a1b7836e1 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 21:38:37 +0800 Subject: [PATCH 10/30] chore: update core --- packages/dashmate/configs/system/base.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/configs/system/base.js b/packages/dashmate/configs/system/base.js index e025b1f93e2..58dd308737a 100644 --- a/packages/dashmate/configs/system/base.js +++ b/packages/dashmate/configs/system/base.js @@ -37,7 +37,7 @@ module.exports = { }, core: { docker: { - image: 'dashpay/dashd:19.0.0-beta.6', + image: 'dashpay/dashd:19.0.0-rc.1', }, p2p: { port: 20001, From 07bbd28747c76ea4141422f4fff362573737c2a4 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 21:38:45 +0800 Subject: [PATCH 11/30] fix: migrations --- packages/dashmate/configs/migrations.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/dashmate/configs/migrations.js b/packages/dashmate/configs/migrations.js index 19be39d015d..b2bfeae88ca 100644 --- a/packages/dashmate/configs/migrations.js +++ b/packages/dashmate/configs/migrations.js @@ -432,9 +432,15 @@ module.exports = { config.platform.drive.tenderdash.node = { id: config.platform.drive.tenderdash.nodeId, - key: config.platform.drive.tenderdash.nodeKey, }; + if (config.platform.drive.tenderdash.nodeKey.priv_key + && config.platform.drive.tenderdash.nodeKey.priv_key.value + ) { + config.platform.drive.tenderdash.node.key = config.platform.drive + .tenderdash.nodeKey.priv_key.value; + } + delete config.platform.drive.tenderdash.nodeId; delete config.platform.drive.tenderdash.nodeKey; } From 7a233635281c4ba053baa9ddff7f24af57fb33db Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 21:43:40 +0800 Subject: [PATCH 12/30] fix: NaN collateral --- .../src/listr/tasks/setup/local/configureCoreTaskFactory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js index f5563724729..57a7a72f145 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js @@ -8,7 +8,7 @@ const { const waitForNodesToHaveTheSameSporks = require('../../../../core/waitForNodesToHaveTheSameSporks'); const waitForNodesToHaveTheSameHeight = require('../../../../core/waitForNodesToHaveTheSameHeight'); -const { NETWORK_LOCAL, MASTERNODE_DASH_AMOUNT } = require('../../../../constants'); +const { NETWORK_LOCAL, HPMN_COLLATERAL_AMOUNT } = require('../../../../constants'); /** * @param {renderServiceTemplates} renderServiceTemplates @@ -148,7 +148,7 @@ function configureCoreTaskFactory( { title: 'Generating funds to use as a collateral for masternodes', task: () => { - const amount = MASTERNODE_DASH_AMOUNT * configGroup.length; + const amount = HPMN_COLLATERAL_AMOUNT * configGroup.length; return generateToAddressTask( configGroup.find((c) => c.getName() === 'local_seed'), amount, From 5ffb070b639bb28cf634249802bfd5b6418f1316 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 21:46:53 +0800 Subject: [PATCH 13/30] fix: wrong protx register command --- packages/dashmate/src/core/wallet/registerMasternode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/src/core/wallet/registerMasternode.js b/packages/dashmate/src/core/wallet/registerMasternode.js index 14a505c3569..bae4f8388f0 100644 --- a/packages/dashmate/src/core/wallet/registerMasternode.js +++ b/packages/dashmate/src/core/wallet/registerMasternode.js @@ -32,7 +32,7 @@ async function registerMasternode( const ipAndPort = `${config.get('externalIp', true)}:${config.get('core.p2p.port')}`; const proTxArgs = [ - hp ? 'register_hpnm' : 'register', + hp ? 'register_hpmn' : 'register', collateralHash, // The txid of the 1000 Dash collateral funding transaction parseInt(collateralOutputIndex, 10), // The output index of the 1000 Dash funding transaction ipAndPort, // Masternode IP address and port, in the format x.x.x.x:yyyy From f335beef905004c4110f29a750a1a96b177645cc Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 22:16:28 +0800 Subject: [PATCH 14/30] fix: incorrect quorum type --- packages/dashmate/configs/system/local.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/configs/system/local.js b/packages/dashmate/configs/system/local.js index 52719fea651..1ce1f6e9fd7 100644 --- a/packages/dashmate/configs/system/local.js +++ b/packages/dashmate/configs/system/local.js @@ -24,7 +24,7 @@ module.exports = lodashMerge({}, baseConfig, { drive: { abci: { validatorSet: { - llmqType: 100, + llmqType: 106, }, }, }, From 6d4a16bcae631271d022c43a2afa3cbad6f15b38 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 22:16:55 +0800 Subject: [PATCH 15/30] fix: operatorReward must be string --- packages/dashmate/src/core/wallet/registerMasternode.js | 2 +- .../dashmate/src/listr/tasks/registerMasternodeTaskFactory.js | 4 ++-- .../src/listr/tasks/setup/local/configureCoreTaskFactory.js | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/dashmate/src/core/wallet/registerMasternode.js b/packages/dashmate/src/core/wallet/registerMasternode.js index bae4f8388f0..a82c1819e5e 100644 --- a/packages/dashmate/src/core/wallet/registerMasternode.js +++ b/packages/dashmate/src/core/wallet/registerMasternode.js @@ -7,7 +7,7 @@ * @param {string} ownerAddress * @param {string} operatorPublicKey * @param {string} fundSourceAddress - * @param {number} operatorReward + * @param {string} operatorReward * @param {Config} config * @param {boolean} [hp=false] * @return {Promise} diff --git a/packages/dashmate/src/listr/tasks/registerMasternodeTaskFactory.js b/packages/dashmate/src/listr/tasks/registerMasternodeTaskFactory.js index 0813b6c43d9..10366094a2d 100644 --- a/packages/dashmate/src/listr/tasks/registerMasternodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/registerMasternodeTaskFactory.js @@ -40,10 +40,10 @@ function registerMasternodeTaskFactory( * @typedef {registerMasternodeTask} * @param {Config} config * @param {boolean} [hp=false] - Register high-performance masternode - * @param {number} [operatorReward=0] + * @param {string} [operatorReward='0.00'] * @return {Listr} */ - function registerMasternodeTask(config, hp = false, operatorReward = 0) { + function registerMasternodeTask(config, hp = false, operatorReward = '0.00') { const collateralAmount = hp ? HPMN_COLLATERAL_AMOUNT : MASTERNODE_COLLATERAL_AMOUNT; return new Listr([ diff --git a/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js b/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js index 57a7a72f145..ab5cd6b3cca 100644 --- a/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/setup/local/configureCoreTaskFactory.js @@ -160,7 +160,7 @@ function configureCoreTaskFactory( task: async () => { const masternodeConfigs = configGroup.filter((config) => config.get('core.masternode.enable')); - const subTasks = masternodeConfigs.map((config, masternodeNumber) => ({ + const subTasks = masternodeConfigs.map((config, index) => ({ title: `Register ${config.getName()} masternode`, skip: () => { if (config.get('core.masternode.operator.privateKey')) { @@ -188,7 +188,7 @@ function configureCoreTaskFactory( }, { // first masternode has 10% operatorReward - task: () => registerMasternodeTask(config, masternodeNumber === 0 ? 10 : 0), + task: () => registerMasternodeTask(config, true, index === 0 ? '10.00' : '0.00'), }, ]), })); From 5c03f742b1973efbbd6d46e2fe6c81a7d1a896f8 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 22:19:33 +0800 Subject: [PATCH 16/30] fix: 106 and 107 quorums missed --- packages/dashmate/configs/schema/configJsonSchema.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/configs/schema/configJsonSchema.js b/packages/dashmate/configs/schema/configJsonSchema.js index 18243a1ff73..3853862705b 100644 --- a/packages/dashmate/configs/schema/configJsonSchema.js +++ b/packages/dashmate/configs/schema/configJsonSchema.js @@ -401,7 +401,7 @@ module.exports = { llmqType: { type: 'number', // https://github.com/dashevo/dashcore-lib/blob/286c33a9d29d33f05d874c47a9b33764a0be0cf1/lib/constants/index.js#L42-L57 - enum: [1, 2, 3, 4, 100, 101, 102], + enum: [1, 2, 3, 4, 100, 101, 102, 106, 107], }, }, additionalProperties: false, From 3db5e8a769912c34e2e8231c8d5cc4e3f75c951f Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 22:27:03 +0800 Subject: [PATCH 17/30] fix: ports are numeric but string expected --- packages/dashmate/src/core/wallet/registerMasternode.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/dashmate/src/core/wallet/registerMasternode.js b/packages/dashmate/src/core/wallet/registerMasternode.js index a82c1819e5e..88a65bbf566 100644 --- a/packages/dashmate/src/core/wallet/registerMasternode.js +++ b/packages/dashmate/src/core/wallet/registerMasternode.js @@ -49,8 +49,8 @@ async function registerMasternode( const platformHttpPort = config.get('platform.dapi.envoy.http.port'); proTxArgs.push(platformNodeId); - proTxArgs.push(platformP2PPort); - proTxArgs.push(platformHttpPort); + proTxArgs.push(platformP2PPort.toString()); + proTxArgs.push(platformHttpPort.toString()); } const { result: proRegTxId } = await coreService.getRpcClient().protx( From 65f0f7405ed6b8c919ae5559486a94a99d40eb71 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 21 Feb 2023 22:47:25 +0800 Subject: [PATCH 18/30] fix: genesis is missed --- packages/dashmate/configs/migrations.js | 12 ++++++++++++ packages/dashmate/configs/system/base.js | 21 ++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/dashmate/configs/migrations.js b/packages/dashmate/configs/migrations.js index b2bfeae88ca..6679607ce72 100644 --- a/packages/dashmate/configs/migrations.js +++ b/packages/dashmate/configs/migrations.js @@ -419,12 +419,24 @@ module.exports = { return configFile; }, '0.24.0-dev.13': (configFile) => { + configFile.configs.base.platform.drive.tenderdash.genesis = systemConfigs.base.platform + .drive.tenderdash.genesis; + + configFile.configs.base.platform.drive.tenderdash.genesis = systemConfigs.base.platform + .drive.tenderdash.genesis; + + configFile.configs.local.platform.drive.abci.validatorSet.llmqType = systemConfigs.local + .platform.drive.abci.validatorSet.llmqType; + Object.entries(configFile.configs) .forEach(([configName, config]) => { if (config.platform) { delete config.platform.dapi.envoy.grpc; if (config.group === 'local') { + config.platform.drive.abci.validatorSet.llmqType = systemConfigs.local + .platform.drive.abci.validatorSet.llmqType; + config.platform.drive.tenderdash.moniker = configName; } else { config.platform.drive.tenderdash.moniker = null; diff --git a/packages/dashmate/configs/system/base.js b/packages/dashmate/configs/system/base.js index 58dd308737a..16d1065afc9 100644 --- a/packages/dashmate/configs/system/base.js +++ b/packages/dashmate/configs/system/base.js @@ -164,7 +164,26 @@ module.exports = { key: null, }, genesis: { - + consensus_params: { + block: { + max_bytes: '22020096', + max_gas: '-1', + time_iota_ms: '5000', + }, + evidence: { + max_age: '100000', + max_age_num_blocks: '100000', + max_age_duration: '172800000000000', + }, + validator: { + pub_key_types: [ + 'bls12381', + ], + }, + version: { + app_version: '1', + }, + }, }, moniker: null, }, From 33da5cf32a4067f24c9733464a25eddb5f786039 Mon Sep 17 00:00:00 2001 From: Djavid Gabibiyan Date: Wed, 22 Feb 2023 23:13:35 +0500 Subject: [PATCH 19/30] chore: update Tenderdash image --- packages/dashmate/configs/system/base.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/configs/system/base.js b/packages/dashmate/configs/system/base.js index 16d1065afc9..6b885f61c21 100644 --- a/packages/dashmate/configs/system/base.js +++ b/packages/dashmate/configs/system/base.js @@ -141,7 +141,7 @@ module.exports = { }, tenderdash: { docker: { - image: 'dashpay/tenderdash:0.11.0-dev.3', + image: 'dashpay/tenderdash:0.11.0-dev.4', }, p2p: { port: 26656, From 033eec311dd62bad88103d9d71cb4961d4a9cc7c Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Thu, 23 Feb 2023 22:01:09 +0800 Subject: [PATCH 20/30] fix: SML doesn't handle Core 19 data properly --- .pnp.cjs | 30 +++++++++--------- ...hcore-lib-https-0d386902b3-bcf372c3c6.zip} | Bin 342252 -> 358811 bytes packages/bench-suite/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-dpp/package.json | 2 +- packages/js-drive/package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-drive-nodejs/package.json | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/package.json | 2 +- yarn.lock | 30 +++++++++--------- 15 files changed, 42 insertions(+), 42 deletions(-) rename .yarn/cache/{@dashevo-dashcore-lib-https-2d7872fbb0-d5053981b7.zip => @dashevo-dashcore-lib-https-0d386902b3-bcf372c3c6.zip} (88%) diff --git a/.pnp.cjs b/.pnp.cjs index d18131083da..107d6facdae 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -2295,7 +2295,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/bench-suite/",\ "packageDependencies": [\ ["@dashevo/bench-suite", "workspace:packages/bench-suite"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ @@ -2330,7 +2330,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dapi", "workspace:packages/dapi"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -2373,7 +2373,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert-browserify", "npm:2.0.0"],\ @@ -2461,7 +2461,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ ["@dashevo/dark-gravity-wave", "npm:1.1.1"],\ ["@dashevo/dash-util", "npm:2.0.3"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["chai", "npm:4.3.4"],\ ["eslint", "npm:7.32.0"],\ ["eslint-config-airbnb-base", "virtual:12a596dc9572e25ce715d3736dc74b317c5ca5cfb3b4f67864b1e76b3a401006f84d381aaf975bb5b4da9cafac5125e6869fc78d5202f4c95780c81479112f32#npm:14.2.1"],\ @@ -2486,10 +2486,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@dashevo/dashcore-lib", [\ - ["https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059", {\ - "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-2d7872fbb0-d5053981b7.zip/node_modules/@dashevo/dashcore-lib/",\ + ["https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2", {\ + "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-0d386902b3-bcf372c3c6.zip/node_modules/@dashevo/dashcore-lib/",\ "packageDependencies": [\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/bls", "npm:1.2.7"],\ ["@dashevo/x11-hash-js", "npm:1.0.2"],\ ["@types/node", "npm:12.20.37"],\ @@ -2594,7 +2594,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@babel/preset-env", "virtual:58fb68f2aed20e5e0f2e48520ab903ae9bb3440369bfd5e912034003cf27c5aae368649fc5620dd2acbed578131f3a0975e75b838d77d12335fb0412e24026c6#npm:7.16.4"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2659,7 +2659,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/drive", "workspace:packages/js-drive"],\ ["@dashevo/abci", "https://github.com/dashpay/js-abci.git#commit=09f72120bc2059144f72eb7a246d632ead3fc3c6"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ @@ -2822,7 +2822,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["@dashevo/platform-test-suite", "workspace:packages/platform-test-suite"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2914,7 +2914,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/rs-drive-nodejs/",\ "packageDependencies": [\ ["@dashevo/rs-drive", "workspace:packages/rs-drive-nodejs"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/withdrawals-contract", "workspace:packages/withdrawals-contract"],\ ["cargo-cp-artifact", "npm:0.1.6"],\ @@ -2940,7 +2940,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert", "npm:2.0.0"],\ @@ -2996,7 +2996,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wasm-dpp", "workspace:packages/wasm-dpp"],\ ["@apidevtools/json-schema-ref-parser", "npm:8.0.0"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wasm-re2", "npm:1.0.2"],\ @@ -7619,7 +7619,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dash", "workspace:packages/js-dash-sdk"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -7685,7 +7685,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dashmate", "workspace:packages/dashmate"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/docker-compose", "npm:0.24.1"],\ diff --git a/.yarn/cache/@dashevo-dashcore-lib-https-2d7872fbb0-d5053981b7.zip b/.yarn/cache/@dashevo-dashcore-lib-https-0d386902b3-bcf372c3c6.zip similarity index 88% rename from .yarn/cache/@dashevo-dashcore-lib-https-2d7872fbb0-d5053981b7.zip rename to .yarn/cache/@dashevo-dashcore-lib-https-0d386902b3-bcf372c3c6.zip index 438bb2856c75dcaf2ee112ea0f107199481c0fa1..587b3e82599f0a86546208adcad7729e39144047 100644 GIT binary patch delta 33020 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 E0EJ-5(f|Me delta 16320 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 diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index e16f22528a3..7f7d28ba4c9 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -8,7 +8,7 @@ "lint": "eslint ." }, "dependencies": { - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/wallet-lib": "workspace:*", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index 176f9ce9aff..b0b4990c1f2 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@dashevo/dapi-grpc": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index d4a889fb467..dcbf75e242b 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -14,7 +14,7 @@ "dependencies": { "@dashevo/dark-gravity-wave": "^1.1.1", "@dashevo/dash-util": "^2.0.3", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "levelup": "^4.4.0", "memdown": "^5.1.0" }, diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index c181474d9d3..de4afdc707c 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -48,7 +48,7 @@ "homepage": "https://github.com/dashevo/dashmate#readme", "dependencies": { "@dashevo/bls": "~1.2.7", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/docker-compose": "^0.24.1", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index 18a66c2a5db..8b668815ada 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -28,7 +28,7 @@ "dependencies": { "@dashevo/dapi-grpc": "workspace:*", "@dashevo/dash-spv": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", "bs58": "^4.0.1", diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index 3a4ac108094..6d6e3861158 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -36,7 +36,7 @@ "homepage": "https://github.com/dashevo/DashJS#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", diff --git a/packages/js-dpp/package.json b/packages/js-dpp/package.json index 3b2e27f51cf..ba994f7ac6e 100644 --- a/packages/js-dpp/package.json +++ b/packages/js-dpp/package.json @@ -84,7 +84,7 @@ "dependencies": { "@apidevtools/json-schema-ref-parser": "^8.0.0", "@dashevo/bls": "~1.2.7", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", "@dashevo/feature-flags-contract": "workspace:*", diff --git a/packages/js-drive/package.json b/packages/js-drive/package.json index a7c1b698402..688c01c0d43 100644 --- a/packages/js-drive/package.json +++ b/packages/js-drive/package.json @@ -69,7 +69,7 @@ "dependencies": { "@dashevo/abci": "github:dashpay/js-abci#09f72120bc2059144f72eb7a246d632ead3fc3c6", "@dashevo/dapi-grpc": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index 059cd96a18d..222da7446a1 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -24,7 +24,7 @@ "homepage": "https://github.com/dashevo/platform-test-suite#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/feature-flags-contract": "workspace:*", diff --git a/packages/rs-drive-nodejs/package.json b/packages/rs-drive-nodejs/package.json index 43d6a58b671..d6a7f6c5d32 100644 --- a/packages/rs-drive-nodejs/package.json +++ b/packages/rs-drive-nodejs/package.json @@ -17,7 +17,7 @@ ], "license": "MIT", "devDependencies": { - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/withdrawals-contract": "workspace:*", "chai": "^4.3.4", "dirty-chai": "^2.0.1", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index 235a15789b4..5626ec3810c 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -43,7 +43,7 @@ "homepage": "https://github.com/dashevo/wallet-lib#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", "cbor": "^8.0.0", diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index 71d95769197..75acdc9f217 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -36,7 +36,7 @@ }, "devDependencies": { "@apidevtools/json-schema-ref-parser": "^8.0.0", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/wasm-re2": "~1.0.2", diff --git a/yarn.lock b/yarn.lock index 51c9e16ab2c..78845f5734d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1296,7 +1296,7 @@ __metadata: version: 0.0.0-use.local resolution: "@dashevo/bench-suite@workspace:packages/bench-suite" dependencies: - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/wallet-lib": "workspace:*" @@ -1329,7 +1329,7 @@ __metadata: "@babel/core": ^7.15.5 "@dashevo/dapi-grpc": "workspace:*" "@dashevo/dash-spv": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dpp": "workspace:*" "@dashevo/grpc-common": "workspace:*" assert-browserify: ^2.0.0 @@ -1404,7 +1404,7 @@ __metadata: dependencies: "@dashevo/dapi-client": "workspace:*" "@dashevo/dapi-grpc": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dp-services-ctl": "github:dashevo/js-dp-services-ctl#v0.19-dev" "@dashevo/dpp": "workspace:*" @@ -1451,7 +1451,7 @@ __metadata: dependencies: "@dashevo/dark-gravity-wave": ^1.1.1 "@dashevo/dash-util": ^2.0.3 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" chai: ^4.3.4 eslint: ^7.32.0 eslint-config-airbnb-base: ^14.2.1 @@ -1473,9 +1473,9 @@ __metadata: languageName: node linkType: hard -"@dashevo/dashcore-lib@github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059": +"@dashevo/dashcore-lib@github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2": version: 0.19.44 - resolution: "@dashevo/dashcore-lib@https://github.com/dashevo/dashcore-lib.git#commit=fb94401b960cf17c1944d9fcf54885fd9d66c059" + resolution: "@dashevo/dashcore-lib@https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2" dependencies: "@dashevo/bls": ~1.2.7 "@dashevo/x11-hash-js": ^1.0.2 @@ -1488,7 +1488,7 @@ __metadata: lodash: ^4.17.20 ripemd160: ^2.0.2 unorm: ^1.6.0 - checksum: d5053981b7a77f7358f12ea87a33dce28f79b99a256f7e19cd76a361787a494c3e15cd91cb28dd4e8aace886d04582d68410b76809b4f874f4ef7953eeb0c8fd + checksum: bcf372c3c6d5724268f84107e601227e04ecc109bcc7c7983d27f7c301a9ebbae257d7b52311d6cc9e68f3f82f6cd3e9e1fdfe36b2867df7b9116a5ea46f580d languageName: node linkType: hard @@ -1574,7 +1574,7 @@ __metadata: "@babel/core": ^7.15.5 "@babel/preset-env": ^7.15.4 "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dpns-contract": "workspace:*" "@dashevo/feature-flags-contract": "workspace:*" @@ -1637,7 +1637,7 @@ __metadata: dependencies: "@dashevo/abci": "github:dashpay/js-abci#09f72120bc2059144f72eb7a246d632ead3fc3c6" "@dashevo/dapi-grpc": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dp-services-ctl": "github:dashevo/js-dp-services-ctl#v0.19-dev" @@ -1778,7 +1778,7 @@ __metadata: resolution: "@dashevo/platform-test-suite@workspace:packages/platform-test-suite" dependencies: "@dashevo/dapi-client": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/feature-flags-contract": "workspace:*" @@ -1877,7 +1877,7 @@ __metadata: version: 0.0.0-use.local resolution: "@dashevo/rs-drive@workspace:packages/rs-drive-nodejs" dependencies: - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dpp": "workspace:*" "@dashevo/withdrawals-contract": "workspace:*" cargo-cp-artifact: ^0.1.6 @@ -1901,7 +1901,7 @@ __metadata: dependencies: "@dashevo/dapi-client": "workspace:*" "@dashevo/dash-spv": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dpp": "workspace:*" "@dashevo/grpc-common": "workspace:*" assert: ^2.0.0 @@ -1955,7 +1955,7 @@ __metadata: dependencies: "@apidevtools/json-schema-ref-parser": ^8.0.0 "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/wasm-re2": ~1.0.2 @@ -5682,7 +5682,7 @@ __metadata: resolution: "dash@workspace:packages/js-dash-sdk" dependencies: "@dashevo/dapi-client": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" @@ -5746,7 +5746,7 @@ __metadata: resolution: "dashmate@workspace:packages/dashmate" dependencies: "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#fb94401b960cf17c1944d9fcf54885fd9d66c059" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#6621690ab0f04ee7b309662c49dfe98a98b01ba2" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dashpay-contract": "workspace:*" "@dashevo/docker-compose": ^0.24.1 From bfda5f580e83781840b66c9918a3239031fadf27 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 24 Feb 2023 10:59:51 +0800 Subject: [PATCH 21/30] fix: can't parse transaction --- .pnp.cjs | 30 +++++++++--------- ...hcore-lib-https-26f3a26b54-dbf72c9798.zip} | Bin 358811 -> 359492 bytes packages/bench-suite/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-dpp/package.json | 2 +- packages/js-drive/package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-drive-nodejs/package.json | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/package.json | 2 +- yarn.lock | 30 +++++++++--------- 15 files changed, 42 insertions(+), 42 deletions(-) rename .yarn/cache/{@dashevo-dashcore-lib-https-0d386902b3-bcf372c3c6.zip => @dashevo-dashcore-lib-https-26f3a26b54-dbf72c9798.zip} (93%) diff --git a/.pnp.cjs b/.pnp.cjs index 107d6facdae..021a597f386 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -2295,7 +2295,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/bench-suite/",\ "packageDependencies": [\ ["@dashevo/bench-suite", "workspace:packages/bench-suite"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ @@ -2330,7 +2330,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dapi", "workspace:packages/dapi"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -2373,7 +2373,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert-browserify", "npm:2.0.0"],\ @@ -2461,7 +2461,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ ["@dashevo/dark-gravity-wave", "npm:1.1.1"],\ ["@dashevo/dash-util", "npm:2.0.3"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["chai", "npm:4.3.4"],\ ["eslint", "npm:7.32.0"],\ ["eslint-config-airbnb-base", "virtual:12a596dc9572e25ce715d3736dc74b317c5ca5cfb3b4f67864b1e76b3a401006f84d381aaf975bb5b4da9cafac5125e6869fc78d5202f4c95780c81479112f32#npm:14.2.1"],\ @@ -2486,10 +2486,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@dashevo/dashcore-lib", [\ - ["https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2", {\ - "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-0d386902b3-bcf372c3c6.zip/node_modules/@dashevo/dashcore-lib/",\ + ["https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191", {\ + "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-26f3a26b54-dbf72c9798.zip/node_modules/@dashevo/dashcore-lib/",\ "packageDependencies": [\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/bls", "npm:1.2.7"],\ ["@dashevo/x11-hash-js", "npm:1.0.2"],\ ["@types/node", "npm:12.20.37"],\ @@ -2594,7 +2594,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@babel/preset-env", "virtual:58fb68f2aed20e5e0f2e48520ab903ae9bb3440369bfd5e912034003cf27c5aae368649fc5620dd2acbed578131f3a0975e75b838d77d12335fb0412e24026c6#npm:7.16.4"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2659,7 +2659,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/drive", "workspace:packages/js-drive"],\ ["@dashevo/abci", "https://github.com/dashpay/js-abci.git#commit=09f72120bc2059144f72eb7a246d632ead3fc3c6"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ @@ -2822,7 +2822,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["@dashevo/platform-test-suite", "workspace:packages/platform-test-suite"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2914,7 +2914,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/rs-drive-nodejs/",\ "packageDependencies": [\ ["@dashevo/rs-drive", "workspace:packages/rs-drive-nodejs"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/withdrawals-contract", "workspace:packages/withdrawals-contract"],\ ["cargo-cp-artifact", "npm:0.1.6"],\ @@ -2940,7 +2940,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert", "npm:2.0.0"],\ @@ -2996,7 +2996,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wasm-dpp", "workspace:packages/wasm-dpp"],\ ["@apidevtools/json-schema-ref-parser", "npm:8.0.0"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wasm-re2", "npm:1.0.2"],\ @@ -7619,7 +7619,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dash", "workspace:packages/js-dash-sdk"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -7685,7 +7685,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dashmate", "workspace:packages/dashmate"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=6621690ab0f04ee7b309662c49dfe98a98b01ba2"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/docker-compose", "npm:0.24.1"],\ diff --git a/.yarn/cache/@dashevo-dashcore-lib-https-0d386902b3-bcf372c3c6.zip b/.yarn/cache/@dashevo-dashcore-lib-https-26f3a26b54-dbf72c9798.zip similarity index 93% rename from .yarn/cache/@dashevo-dashcore-lib-https-0d386902b3-bcf372c3c6.zip rename to .yarn/cache/@dashevo-dashcore-lib-https-26f3a26b54-dbf72c9798.zip index 587b3e82599f0a86546208adcad7729e39144047..fc71f2f3e24c635caab6553c135ef52f134bb5e3 100644 GIT binary patch delta 14345 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 T9#cd3cjhukD#TFmk>mdX>j`1M delta 13738 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 Date: Fri, 24 Feb 2023 11:00:19 +0800 Subject: [PATCH 22/30] fix: unknown quorum type in getRandomQuorum --- .../lib/core/getRandomQuorumFactory.js | 9 +++++-- packages/js-drive/lib/core/llmqMap.js | 25 ------------------- 2 files changed, 7 insertions(+), 27 deletions(-) delete mode 100644 packages/js-drive/lib/core/llmqMap.js diff --git a/packages/js-drive/lib/core/getRandomQuorumFactory.js b/packages/js-drive/lib/core/getRandomQuorumFactory.js index a15563780b1..91f65441f97 100644 --- a/packages/js-drive/lib/core/getRandomQuorumFactory.js +++ b/packages/js-drive/lib/core/getRandomQuorumFactory.js @@ -1,11 +1,16 @@ const BufferWriter = require('@dashevo/dashcore-lib/lib/encoding/bufferwriter'); const Hash = require('@dashevo/dashcore-lib/lib/crypto/hash'); +const { LLMQ_TYPES } = require('@dashevo/dashcore-lib/lib/constants'); const QuorumsNotFoundError = require('./errors/QuorumsNotFoundError'); const ValidatorSet = require('../validator/ValidatorSet'); -const llmqMap = require('./llmqMap'); const MIN_QUORUM_VALID_MEMBERS = 90; +const LLMQ_TYPE_TO_NAME = Object + .fromEntries(Object + .entries(LLMQ_TYPES) + .map(([key, value]) => [value, key.toLowerCase()])); + /** * Calculates scores for validator quorum selection * it calculates sha256(hash, modifier) per quorumHash @@ -52,7 +57,7 @@ function getRandomQuorumFactory(coreRpcClient) { const { result: allValidatorQuorumsExtendedInfo } = await coreRpcClient.quorum('listextended', coreHeight); // convert to object - const validatorQuorumsInfo = allValidatorQuorumsExtendedInfo[llmqMap[quorumType]] + const validatorQuorumsInfo = allValidatorQuorumsExtendedInfo[LLMQ_TYPE_TO_NAME[quorumType]] .reduce( (obj, item) => ({ ...obj, diff --git a/packages/js-drive/lib/core/llmqMap.js b/packages/js-drive/lib/core/llmqMap.js deleted file mode 100644 index d2b569340ac..00000000000 --- a/packages/js-drive/lib/core/llmqMap.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - 0xff: 'llmq_none', - - 1: 'llmq_50_60', // 50 members, 30 (60%) threshold, one per hour - 2: 'llmq_400_60', // 400 members, 240 (60%) threshold, one every 12 hours - 3: 'llmq_400_85', // 400 members, 340 (85%) threshold, one every 24 hours - 4: 'llmq_100_67', // 100 members, 67 (67%) threshold, one per hour - 5: 'llmq_60_75', // 60 members, 45 (75%) threshold, one every 12 hours - - // for testing only - 100: 'llmq_test', // 3 members, 2(66%) threshold, one per hour. - - // for devnets only - 101: 'llmq_devnet', // 12 members, 6 (50%) threshold, one per hour. - - // for testing activation of new quorums only - 102: 'llmq_test_v17', // 3 members, 2 (66%) threshold, one per hour. - - // for testing only - 103: 'llmq_test_dip0024', // 4 members, 2 (66%) threshold, one per hour. - 104: 'llmq_test_instantsend', // 3 members, 2 (66%) threshold, one per hour. - - // for devnets only. rotated version (v2) for devnets - 105: 'llmq_devnet_dip0024', // 8 members, 4 (50%) threshold, one per hour. -}; From 1ec4af953490490a27b96ccfaad28e19bff6694e Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 24 Feb 2023 11:30:47 +0800 Subject: [PATCH 23/30] chore: move migrations to separate version --- packages/dashmate/configs/migrations.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/dashmate/configs/migrations.js b/packages/dashmate/configs/migrations.js index 6679607ce72..f56a5c62962 100644 --- a/packages/dashmate/configs/migrations.js +++ b/packages/dashmate/configs/migrations.js @@ -419,6 +419,22 @@ module.exports = { return configFile; }, '0.24.0-dev.13': (configFile) => { + Object.entries(configFile.configs) + .forEach(([configName, config]) => { + if (config.platform) { + delete config.platform.dapi.envoy.grpc; + + if (config.group === 'local') { + config.platform.drive.tenderdash.moniker = configName; + } else { + config.platform.drive.tenderdash.moniker = null; + } + } + }); + + return configFile; + }, + '0.24.0-dev.14': (configFile) => { configFile.configs.base.platform.drive.tenderdash.genesis = systemConfigs.base.platform .drive.tenderdash.genesis; @@ -429,17 +445,11 @@ module.exports = { .platform.drive.abci.validatorSet.llmqType; Object.entries(configFile.configs) - .forEach(([configName, config]) => { + .forEach(([, config]) => { if (config.platform) { - delete config.platform.dapi.envoy.grpc; - if (config.group === 'local') { config.platform.drive.abci.validatorSet.llmqType = systemConfigs.local .platform.drive.abci.validatorSet.llmqType; - - config.platform.drive.tenderdash.moniker = configName; - } else { - config.platform.drive.tenderdash.moniker = null; } config.platform.drive.tenderdash.node = { From ca64c2c6cc498b55beb28fea131d97ebc636a098 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 24 Feb 2023 15:09:28 +0800 Subject: [PATCH 24/30] fix: expect platformNodeID to be a hex string --- .pnp.cjs | 30 +++++++++--------- ...hcore-lib-https-dcdf515fa8-4b0be2310c.zip} | Bin 359492 -> 359506 bytes packages/bench-suite/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-dpp/package.json | 2 +- packages/js-drive/package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-drive-nodejs/package.json | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/package.json | 2 +- yarn.lock | 30 +++++++++--------- 15 files changed, 42 insertions(+), 42 deletions(-) rename .yarn/cache/{@dashevo-dashcore-lib-https-26f3a26b54-dbf72c9798.zip => @dashevo-dashcore-lib-https-dcdf515fa8-4b0be2310c.zip} (96%) diff --git a/.pnp.cjs b/.pnp.cjs index 021a597f386..35769ab5c21 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -2295,7 +2295,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/bench-suite/",\ "packageDependencies": [\ ["@dashevo/bench-suite", "workspace:packages/bench-suite"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ @@ -2330,7 +2330,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dapi", "workspace:packages/dapi"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -2373,7 +2373,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert-browserify", "npm:2.0.0"],\ @@ -2461,7 +2461,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ ["@dashevo/dark-gravity-wave", "npm:1.1.1"],\ ["@dashevo/dash-util", "npm:2.0.3"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["chai", "npm:4.3.4"],\ ["eslint", "npm:7.32.0"],\ ["eslint-config-airbnb-base", "virtual:12a596dc9572e25ce715d3736dc74b317c5ca5cfb3b4f67864b1e76b3a401006f84d381aaf975bb5b4da9cafac5125e6869fc78d5202f4c95780c81479112f32#npm:14.2.1"],\ @@ -2486,10 +2486,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@dashevo/dashcore-lib", [\ - ["https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191", {\ - "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-26f3a26b54-dbf72c9798.zip/node_modules/@dashevo/dashcore-lib/",\ + ["https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f", {\ + "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-dcdf515fa8-4b0be2310c.zip/node_modules/@dashevo/dashcore-lib/",\ "packageDependencies": [\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/bls", "npm:1.2.7"],\ ["@dashevo/x11-hash-js", "npm:1.0.2"],\ ["@types/node", "npm:12.20.37"],\ @@ -2594,7 +2594,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@babel/preset-env", "virtual:58fb68f2aed20e5e0f2e48520ab903ae9bb3440369bfd5e912034003cf27c5aae368649fc5620dd2acbed578131f3a0975e75b838d77d12335fb0412e24026c6#npm:7.16.4"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2659,7 +2659,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/drive", "workspace:packages/js-drive"],\ ["@dashevo/abci", "https://github.com/dashpay/js-abci.git#commit=09f72120bc2059144f72eb7a246d632ead3fc3c6"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ @@ -2822,7 +2822,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["@dashevo/platform-test-suite", "workspace:packages/platform-test-suite"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2914,7 +2914,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/rs-drive-nodejs/",\ "packageDependencies": [\ ["@dashevo/rs-drive", "workspace:packages/rs-drive-nodejs"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/withdrawals-contract", "workspace:packages/withdrawals-contract"],\ ["cargo-cp-artifact", "npm:0.1.6"],\ @@ -2940,7 +2940,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert", "npm:2.0.0"],\ @@ -2996,7 +2996,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wasm-dpp", "workspace:packages/wasm-dpp"],\ ["@apidevtools/json-schema-ref-parser", "npm:8.0.0"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wasm-re2", "npm:1.0.2"],\ @@ -7619,7 +7619,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dash", "workspace:packages/js-dash-sdk"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -7685,7 +7685,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dashmate", "workspace:packages/dashmate"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=06989ed1a305fd6e2494a409d0ea3a05258de191"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/docker-compose", "npm:0.24.1"],\ diff --git a/.yarn/cache/@dashevo-dashcore-lib-https-26f3a26b54-dbf72c9798.zip b/.yarn/cache/@dashevo-dashcore-lib-https-dcdf515fa8-4b0be2310c.zip similarity index 96% rename from .yarn/cache/@dashevo-dashcore-lib-https-26f3a26b54-dbf72c9798.zip rename to .yarn/cache/@dashevo-dashcore-lib-https-dcdf515fa8-4b0be2310c.zip index fc71f2f3e24c635caab6553c135ef52f134bb5e3..1f60d552dd9f03ebf35f383836f9551eccc1fc02 100644 GIT binary patch delta 6459 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 Q@r)w`K2Bst4t0nIY>?DWi~N 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 Date: Mon, 27 Feb 2023 20:28:43 +0800 Subject: [PATCH 25/30] chore: update Core --- packages/dashmate/configs/system/base.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/configs/system/base.js b/packages/dashmate/configs/system/base.js index 6b885f61c21..854f7cc5166 100644 --- a/packages/dashmate/configs/system/base.js +++ b/packages/dashmate/configs/system/base.js @@ -37,7 +37,7 @@ module.exports = { }, core: { docker: { - image: 'dashpay/dashd:19.0.0-rc.1', + image: 'dashpay/dashd:19.0.0-rc.2', }, p2p: { port: 20001, From 909519994fefad99388126681ad074337c665796 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Thu, 2 Mar 2023 17:57:00 +0800 Subject: [PATCH 26/30] fix: banned masternodes --- packages/dashmate/configs/system/base.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/configs/system/base.js b/packages/dashmate/configs/system/base.js index 854f7cc5166..ba9180b75cd 100644 --- a/packages/dashmate/configs/system/base.js +++ b/packages/dashmate/configs/system/base.js @@ -37,7 +37,7 @@ module.exports = { }, core: { docker: { - image: 'dashpay/dashd:19.0.0-rc.2', + image: 'dashpay/dashd:19.0.0-rc.4', }, p2p: { port: 20001, From be0060492f23e9e9150667533740e4c90c62f07a Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 3 Mar 2023 01:09:41 +0800 Subject: [PATCH 27/30] fix: expect platformNodeID to be a hex string --- .pnp.cjs | 30 +++++++++--------- ...hcore-lib-https-c3904e7e9a-005b524971.zip} | Bin 359506 -> 359514 bytes packages/bench-suite/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-dpp/package.json | 2 +- packages/js-drive/package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/rs-drive-nodejs/package.json | 2 +- packages/wallet-lib/package.json | 2 +- packages/wasm-dpp/package.json | 2 +- yarn.lock | 30 +++++++++--------- 15 files changed, 42 insertions(+), 42 deletions(-) rename .yarn/cache/{@dashevo-dashcore-lib-https-dcdf515fa8-4b0be2310c.zip => @dashevo-dashcore-lib-https-c3904e7e9a-005b524971.zip} (96%) diff --git a/.pnp.cjs b/.pnp.cjs index 35769ab5c21..14ab69d9c24 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -2295,7 +2295,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/bench-suite/",\ "packageDependencies": [\ ["@dashevo/bench-suite", "workspace:packages/bench-suite"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ @@ -2330,7 +2330,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dapi", "workspace:packages/dapi"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -2373,7 +2373,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert-browserify", "npm:2.0.0"],\ @@ -2461,7 +2461,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ ["@dashevo/dark-gravity-wave", "npm:1.1.1"],\ ["@dashevo/dash-util", "npm:2.0.3"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["chai", "npm:4.3.4"],\ ["eslint", "npm:7.32.0"],\ ["eslint-config-airbnb-base", "virtual:12a596dc9572e25ce715d3736dc74b317c5ca5cfb3b4f67864b1e76b3a401006f84d381aaf975bb5b4da9cafac5125e6869fc78d5202f4c95780c81479112f32#npm:14.2.1"],\ @@ -2486,10 +2486,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@dashevo/dashcore-lib", [\ - ["https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f", {\ - "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-dcdf515fa8-4b0be2310c.zip/node_modules/@dashevo/dashcore-lib/",\ + ["https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904", {\ + "packageLocation": "./.yarn/cache/@dashevo-dashcore-lib-https-c3904e7e9a-005b524971.zip/node_modules/@dashevo/dashcore-lib/",\ "packageDependencies": [\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/bls", "npm:1.2.7"],\ ["@dashevo/x11-hash-js", "npm:1.0.2"],\ ["@types/node", "npm:12.20.37"],\ @@ -2594,7 +2594,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@babel/core", "npm:7.16.0"],\ ["@babel/preset-env", "virtual:58fb68f2aed20e5e0f2e48520ab903ae9bb3440369bfd5e912034003cf27c5aae368649fc5620dd2acbed578131f3a0975e75b838d77d12335fb0412e24026c6#npm:7.16.4"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2659,7 +2659,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/drive", "workspace:packages/js-drive"],\ ["@dashevo/abci", "https://github.com/dashpay/js-abci.git#commit=09f72120bc2059144f72eb7a246d632ead3fc3c6"],\ ["@dashevo/dapi-grpc", "workspace:packages/dapi-grpc"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dp-services-ctl", "https://github.com/dashevo/js-dp-services-ctl.git#commit=3976076b0018c5b4632ceda4c752fc597f27a640"],\ @@ -2822,7 +2822,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["@dashevo/platform-test-suite", "workspace:packages/platform-test-suite"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/feature-flags-contract", "workspace:packages/feature-flags-contract"],\ @@ -2914,7 +2914,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/rs-drive-nodejs/",\ "packageDependencies": [\ ["@dashevo/rs-drive", "workspace:packages/rs-drive-nodejs"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/withdrawals-contract", "workspace:packages/withdrawals-contract"],\ ["cargo-cp-artifact", "npm:0.1.6"],\ @@ -2940,7 +2940,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wallet-lib", "workspace:packages/wallet-lib"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ ["@dashevo/dash-spv", "workspace:packages/dash-spv"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/grpc-common", "workspace:packages/js-grpc-common"],\ ["assert", "npm:2.0.0"],\ @@ -2996,7 +2996,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@dashevo/wasm-dpp", "workspace:packages/wasm-dpp"],\ ["@apidevtools/json-schema-ref-parser", "npm:8.0.0"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ ["@dashevo/wasm-re2", "npm:1.0.2"],\ @@ -7619,7 +7619,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dash", "workspace:packages/js-dash-sdk"],\ ["@dashevo/dapi-client", "workspace:packages/js-dapi-client"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/dpns-contract", "workspace:packages/dpns-contract"],\ ["@dashevo/dpp", "workspace:packages/js-dpp"],\ @@ -7685,7 +7685,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["dashmate", "workspace:packages/dashmate"],\ ["@dashevo/bls", "npm:1.2.7"],\ - ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f"],\ + ["@dashevo/dashcore-lib", "https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904"],\ ["@dashevo/dashd-rpc", "npm:18.2.0"],\ ["@dashevo/dashpay-contract", "workspace:packages/dashpay-contract"],\ ["@dashevo/docker-compose", "npm:0.24.1"],\ diff --git a/.yarn/cache/@dashevo-dashcore-lib-https-dcdf515fa8-4b0be2310c.zip b/.yarn/cache/@dashevo-dashcore-lib-https-c3904e7e9a-005b524971.zip similarity index 96% rename from .yarn/cache/@dashevo-dashcore-lib-https-dcdf515fa8-4b0be2310c.zip rename to .yarn/cache/@dashevo-dashcore-lib-https-c3904e7e9a-005b524971.zip index 1f60d552dd9f03ebf35f383836f9551eccc1fc02..0fa88a687163a83825475ffc918d4e99742f7f6f 100644 GIT binary patch delta 5233 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 MqZ}LTc~I#8KM(we*Z=?k diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index 0595307398d..84180c9f8ee 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -8,7 +8,7 @@ "lint": "eslint ." }, "dependencies": { - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/wallet-lib": "workspace:*", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index 57e482bf416..bb306e9d25d 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@dashevo/dapi-grpc": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index ed5433cd31d..981d43d921e 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -14,7 +14,7 @@ "dependencies": { "@dashevo/dark-gravity-wave": "^1.1.1", "@dashevo/dash-util": "^2.0.3", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "levelup": "^4.4.0", "memdown": "^5.1.0" }, diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index bd7b82d27cd..e9223d28b0f 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -48,7 +48,7 @@ "homepage": "https://github.com/dashevo/dashmate#readme", "dependencies": { "@dashevo/bls": "~1.2.7", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/docker-compose": "^0.24.1", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index deb05344087..6ce435bbac7 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -28,7 +28,7 @@ "dependencies": { "@dashevo/dapi-grpc": "workspace:*", "@dashevo/dash-spv": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", "bs58": "^4.0.1", diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index eb8653ac4ac..c65cb42d044 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -36,7 +36,7 @@ "homepage": "https://github.com/dashevo/DashJS#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", diff --git a/packages/js-dpp/package.json b/packages/js-dpp/package.json index 72968b592c0..f90a58dd2a6 100644 --- a/packages/js-dpp/package.json +++ b/packages/js-dpp/package.json @@ -84,7 +84,7 @@ "dependencies": { "@apidevtools/json-schema-ref-parser": "^8.0.0", "@dashevo/bls": "~1.2.7", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", "@dashevo/feature-flags-contract": "workspace:*", diff --git a/packages/js-drive/package.json b/packages/js-drive/package.json index c6c7c36b248..2527bdfcee3 100644 --- a/packages/js-drive/package.json +++ b/packages/js-drive/package.json @@ -69,7 +69,7 @@ "dependencies": { "@dashevo/abci": "github:dashpay/js-abci#09f72120bc2059144f72eb7a246d632ead3fc3c6", "@dashevo/dapi-grpc": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dashd-rpc": "^18.2.0", "@dashevo/dashpay-contract": "workspace:*", "@dashevo/dpns-contract": "workspace:*", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index ac0e139ec12..68aa175773e 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -24,7 +24,7 @@ "homepage": "https://github.com/dashevo/platform-test-suite#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/feature-flags-contract": "workspace:*", diff --git a/packages/rs-drive-nodejs/package.json b/packages/rs-drive-nodejs/package.json index efa9d799459..131bf61986d 100644 --- a/packages/rs-drive-nodejs/package.json +++ b/packages/rs-drive-nodejs/package.json @@ -17,7 +17,7 @@ ], "license": "MIT", "devDependencies": { - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/withdrawals-contract": "workspace:*", "chai": "^4.3.4", "dirty-chai": "^2.0.1", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index 5b4bad58098..628aee6a168 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -43,7 +43,7 @@ "homepage": "https://github.com/dashevo/wallet-lib#readme", "dependencies": { "@dashevo/dapi-client": "workspace:*", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dpp": "workspace:*", "@dashevo/grpc-common": "workspace:*", "cbor": "^8.0.0", diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index bb8f6469f2d..c73f45eae16 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -36,7 +36,7 @@ }, "devDependencies": { "@apidevtools/json-schema-ref-parser": "^8.0.0", - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f", + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904", "@dashevo/dpns-contract": "workspace:*", "@dashevo/dpp": "workspace:*", "@dashevo/wasm-re2": "~1.0.2", diff --git a/yarn.lock b/yarn.lock index a11edc22685..eedecb2568f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1296,7 +1296,7 @@ __metadata: version: 0.0.0-use.local resolution: "@dashevo/bench-suite@workspace:packages/bench-suite" dependencies: - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/wallet-lib": "workspace:*" @@ -1329,7 +1329,7 @@ __metadata: "@babel/core": ^7.15.5 "@dashevo/dapi-grpc": "workspace:*" "@dashevo/dash-spv": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dpp": "workspace:*" "@dashevo/grpc-common": "workspace:*" assert-browserify: ^2.0.0 @@ -1404,7 +1404,7 @@ __metadata: dependencies: "@dashevo/dapi-client": "workspace:*" "@dashevo/dapi-grpc": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dp-services-ctl": "github:dashevo/js-dp-services-ctl#v0.19-dev" "@dashevo/dpp": "workspace:*" @@ -1451,7 +1451,7 @@ __metadata: dependencies: "@dashevo/dark-gravity-wave": ^1.1.1 "@dashevo/dash-util": ^2.0.3 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" chai: ^4.3.4 eslint: ^7.32.0 eslint-config-airbnb-base: ^14.2.1 @@ -1473,9 +1473,9 @@ __metadata: languageName: node linkType: hard -"@dashevo/dashcore-lib@github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f": +"@dashevo/dashcore-lib@github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904": version: 0.19.44 - resolution: "@dashevo/dashcore-lib@https://github.com/dashevo/dashcore-lib.git#commit=24712c59915f9362ec88795805f8c37caf88b13f" + resolution: "@dashevo/dashcore-lib@https://github.com/dashevo/dashcore-lib.git#commit=1179c8be52dcd4f5ded55ef5337790533917f904" dependencies: "@dashevo/bls": ~1.2.7 "@dashevo/x11-hash-js": ^1.0.2 @@ -1488,7 +1488,7 @@ __metadata: lodash: ^4.17.20 ripemd160: ^2.0.2 unorm: ^1.6.0 - checksum: 4b0be2310c5343bb4adbc6e949e2a78f53d0c819b88bde89f003c307a1a7f156630bb8e62607639ff8fa3af8828d4f9de21f8e9758e6afeb492e3c08c2c5876b + checksum: 005b524971be3667e35be1eefaaf1323cc0b150b99ebc2f6b2b904f303528ffbb5d675bad81473b723184fc4790551e90eac0e02752d99f1cf6c95e09c0ad3d6 languageName: node linkType: hard @@ -1574,7 +1574,7 @@ __metadata: "@babel/core": ^7.15.5 "@babel/preset-env": ^7.15.4 "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dpns-contract": "workspace:*" "@dashevo/feature-flags-contract": "workspace:*" @@ -1637,7 +1637,7 @@ __metadata: dependencies: "@dashevo/abci": "github:dashpay/js-abci#09f72120bc2059144f72eb7a246d632ead3fc3c6" "@dashevo/dapi-grpc": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dp-services-ctl": "github:dashevo/js-dp-services-ctl#v0.19-dev" @@ -1778,7 +1778,7 @@ __metadata: resolution: "@dashevo/platform-test-suite@workspace:packages/platform-test-suite" dependencies: "@dashevo/dapi-client": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/feature-flags-contract": "workspace:*" @@ -1877,7 +1877,7 @@ __metadata: version: 0.0.0-use.local resolution: "@dashevo/rs-drive@workspace:packages/rs-drive-nodejs" dependencies: - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dpp": "workspace:*" "@dashevo/withdrawals-contract": "workspace:*" cargo-cp-artifact: ^0.1.6 @@ -1901,7 +1901,7 @@ __metadata: dependencies: "@dashevo/dapi-client": "workspace:*" "@dashevo/dash-spv": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dpp": "workspace:*" "@dashevo/grpc-common": "workspace:*" assert: ^2.0.0 @@ -1955,7 +1955,7 @@ __metadata: dependencies: "@apidevtools/json-schema-ref-parser": ^8.0.0 "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" "@dashevo/wasm-re2": ~1.0.2 @@ -5682,7 +5682,7 @@ __metadata: resolution: "dash@workspace:packages/js-dash-sdk" dependencies: "@dashevo/dapi-client": "workspace:*" - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dashpay-contract": "workspace:*" "@dashevo/dpns-contract": "workspace:*" "@dashevo/dpp": "workspace:*" @@ -5746,7 +5746,7 @@ __metadata: resolution: "dashmate@workspace:packages/dashmate" dependencies: "@dashevo/bls": ~1.2.7 - "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#24712c59915f9362ec88795805f8c37caf88b13f" + "@dashevo/dashcore-lib": "github:dashevo/dashcore-lib#1179c8be52dcd4f5ded55ef5337790533917f904" "@dashevo/dashd-rpc": ^18.2.0 "@dashevo/dashpay-contract": "workspace:*" "@dashevo/docker-compose": ^0.24.1 From d21d6f00c8b8b28dbd8ff6303d3a83eb82f2d9d9 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 3 Mar 2023 01:21:46 +0800 Subject: [PATCH 28/30] fix: reduce is not found for undefined --- packages/js-drive/lib/core/getRandomQuorumFactory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js-drive/lib/core/getRandomQuorumFactory.js b/packages/js-drive/lib/core/getRandomQuorumFactory.js index 91f65441f97..94af18f98eb 100644 --- a/packages/js-drive/lib/core/getRandomQuorumFactory.js +++ b/packages/js-drive/lib/core/getRandomQuorumFactory.js @@ -9,7 +9,7 @@ const MIN_QUORUM_VALID_MEMBERS = 90; const LLMQ_TYPE_TO_NAME = Object .fromEntries(Object .entries(LLMQ_TYPES) - .map(([key, value]) => [value, key.toLowerCase()])); + .map(([key, value]) => [value, key.toLowerCase().replace('type_', '')])); /** * Calculates scores for validator quorum selection From 3af229bde11f966c7f9095ec3f991369307a8f98 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Fri, 3 Mar 2023 11:22:57 +0800 Subject: [PATCH 29/30] chore: empty commit to fix CI From be81ca5c260e1511e55ce0653046c2acb03d62ec Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Mon, 6 Mar 2023 10:58:48 +0800 Subject: [PATCH 30/30] fix: dns-packet vulnerability --- .pnp.cjs | 8 ++++---- ...s-packet-npm-5.3.0-a1e660206b-ac93e0f6d4.zip | Bin 14844 -> 0 bytes ...s-packet-npm-5.4.0-4d0332a163-a169963848.zip | Bin 0 -> 14946 bytes package.json | 3 ++- yarn.lock | 8 ++++---- 5 files changed, 10 insertions(+), 9 deletions(-) delete mode 100644 .yarn/cache/dns-packet-npm-5.3.0-a1e660206b-ac93e0f6d4.zip create mode 100644 .yarn/cache/dns-packet-npm-5.4.0-4d0332a163-a169963848.zip diff --git a/.pnp.cjs b/.pnp.cjs index 14ab69d9c24..4da2dbe837b 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -8203,10 +8203,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["dns-packet", [\ - ["npm:5.3.0", {\ - "packageLocation": "./.yarn/cache/dns-packet-npm-5.3.0-a1e660206b-ac93e0f6d4.zip/node_modules/dns-packet/",\ + ["npm:5.4.0", {\ + "packageLocation": "./.yarn/cache/dns-packet-npm-5.4.0-4d0332a163-a169963848.zip/node_modules/dns-packet/",\ "packageDependencies": [\ - ["dns-packet", "npm:5.3.0"],\ + ["dns-packet", "npm:5.4.0"],\ ["@leichtgewicht/ip-codec", "npm:2.0.3"]\ ],\ "linkType": "HARD"\ @@ -8217,7 +8217,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./.yarn/cache/dns-socket-npm-4.2.2-2d13a1bfa6-d02b83ecc9.zip/node_modules/dns-socket/",\ "packageDependencies": [\ ["dns-socket", "npm:4.2.2"],\ - ["dns-packet", "npm:5.3.0"]\ + ["dns-packet", "npm:5.4.0"]\ ],\ "linkType": "HARD"\ }]\ diff --git a/.yarn/cache/dns-packet-npm-5.3.0-a1e660206b-ac93e0f6d4.zip b/.yarn/cache/dns-packet-npm-5.3.0-a1e660206b-ac93e0f6d4.zip deleted file mode 100644 index 20b1ea2d1f68af4b938345a5315faadf4c9161bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14844 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