git.delta.rocks / unique-network / refs/commits / 25775a5120f2

difftreelog

Merge pull request #1039 from UniqueNetwork/chore/council-proposal-script

Yaroslav Bolyukin2023-11-16parents: #1f5718c #598fbed.patch.diff
in: master

2 files changed

modifiedjs-packages/scripts/package.jsondiffbeforeafterboth
before · js-packages/scripts/package.json
1{2  "author": "",3  "license": "SEE LICENSE IN ../../../LICENSE",4  "description": "Interfaces for interacting with contracts and contract ABIs",5  "engines": {6    "node": ">=16"7  },8  "name": "@unique/scripts",9  "type": "module",10  "version": "1.0.0",11  "main": "",12  "scripts": {13    "benchMintingFee": "yarn ts-node benchmarks/mintFee/benchmark.ts",14    "loadTransfer": "yarn ts-node transfer.nload.ts",15    "generateEnv": "yarn ts-node --esm ./generateEnv.ts",16    "propose-upgrade": "yarn ts-node --esm ./proposeupgrade.ts",17    "propose-fast-track": "yarn ts-node --esm ./proposefasttrack.ts"18  }19}
after · js-packages/scripts/package.json
1{2  "author": "",3  "license": "SEE LICENSE IN ../../../LICENSE",4  "description": "Interfaces for interacting with contracts and contract ABIs",5  "engines": {6    "node": ">=16"7  },8  "name": "@unique/scripts",9  "type": "module",10  "version": "1.0.0",11  "main": "",12  "scripts": {13    "benchMintingFee": "yarn ts-node benchmarks/mintFee/benchmark.ts",14    "loadTransfer": "yarn ts-node transfer.nload.ts",15    "generateEnv": "yarn ts-node --esm ./generateEnv.ts",16    "propose-upgrade": "yarn ts-node --esm ./proposeupgrade.ts",17    "propose-fast-track": "yarn ts-node --esm ./proposefasttrack.ts",18    "council-democracy-proposal": "yarn ts-node --esm ./councilproposal.ts"19  }20}
addedjs-packages/tests/councilproposal.tsdiffbeforeafterboth
--- /dev/null
+++ b/js-packages/tests/councilproposal.ts
@@ -0,0 +1,41 @@
+import {ApiPromise, WsProvider} from '@polkadot/api';
+import {blake2AsHex} from '@polkadot/util-crypto';
+
+async function main() {
+  const networkUrl = process.argv[2];
+  const democracyProposalContent = process.argv[3];
+
+  const wsProvider = new WsProvider(networkUrl);
+  const api = await ApiPromise.create({provider: wsProvider});
+
+  const councilMembers = (await api.query.council.members()).toJSON() as any[];
+  const councilProposalThreshold = Math.floor(councilMembers.length / 2) + 1;
+
+  const democracyProposalHash = blake2AsHex(democracyProposalContent, 256);
+  const democracyProposalPreimage = api.tx.preimage.notePreimage(democracyProposalContent).method.toHex();
+
+  const democracyProposal = api.tx.democracy.externalProposeDefault({
+    Legacy: democracyProposalHash,
+  });
+
+  const councilProposal = api.tx.council.propose(
+    councilProposalThreshold,
+    democracyProposal,
+    democracyProposal.method.encodedLength,
+  ).method.toHex();
+
+  const proposeUpgradeBatch = api.tx.utility.batchAll([
+    democracyProposalPreimage,
+    councilProposal,
+  ]);
+
+  const encodedCall = proposeUpgradeBatch.method.toHex();
+
+  console.log('-----------------');
+  console.log('Council Proposal: ', `https://polkadot.js.org/apps/?rpc=${networkUrl}#/extrinsics/decode/${encodedCall}`);
+  console.log('-----------------');
+
+  await api.disconnect();
+}
+
+await main();