git.delta.rocks / unique-network / refs/commits / 092e9b8f020d

difftreelog

feat propose-upgrade governance script (#1019)

Daniel Shiposha2023-10-17parent: #8af05a8.patch.diff
in: master
* feat: governance scripts

* fix: move propose-upgrade script to tests

2 files changed

modifiedtests/package.jsondiffbeforeafterboth
130 "polkadot-types-from-defs": "ts-node --esm ./node_modules/.bin/polkadot-types-from-defs --endpoint src/interfaces/metadata.json --input src/interfaces/ --package .",130 "polkadot-types-from-defs": "ts-node --esm ./node_modules/.bin/polkadot-types-from-defs --endpoint src/interfaces/metadata.json --input src/interfaces/ --package .",
131 "polkadot-types-from-chain": "ts-node --esm ./node_modules/.bin/polkadot-types-from-chain --endpoint src/interfaces/metadata.json --output src/interfaces/ --package .",131 "polkadot-types-from-chain": "ts-node --esm ./node_modules/.bin/polkadot-types-from-chain --endpoint src/interfaces/metadata.json --output src/interfaces/ --package .",
132 "polkadot-types": "echo \"export default {}\" > src/interfaces/lookup.ts && yarn polkadot-types-fetch-metadata && yarn polkadot-types-from-defs && yarn polkadot-types-from-defs && yarn polkadot-types-from-chain",132 "polkadot-types": "echo \"export default {}\" > src/interfaces/lookup.ts && yarn polkadot-types-fetch-metadata && yarn polkadot-types-from-defs && yarn polkadot-types-from-defs && yarn polkadot-types-from-chain",
133 "generateEnv": "ts-node --esm ./src/generateEnv.ts"133 "generateEnv": "ts-node --esm ./src/generateEnv.ts",
134 "propose-upgrade": "ts-node --esm ./src/proposeupgrade.ts"
134 },135 },
135 "author": "",136 "author": "",
136 "license": "SEE LICENSE IN ../LICENSE",137 "license": "SEE LICENSE IN ../LICENSE",
addedtests/src/proposeupgrade.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/proposeupgrade.ts
@@ -0,0 +1,39 @@
+import {ApiPromise, WsProvider} from '@polkadot/api';
+import {blake2AsHex} from '@polkadot/util-crypto';
+import {readFileSync} from 'fs';
+
+async function main() {
+  const networkUrl = process.argv[2];
+  const wasmFile = process.argv[3];
+
+  const wsProvider = new WsProvider(networkUrl);
+  const api = await ApiPromise.create({provider: wsProvider});
+
+  const wasmFileBytes = readFileSync(wasmFile);
+  const wasmFileHash = blake2AsHex(wasmFileBytes, 256);
+
+  const authorizeUpgrade = api.tx.parachainSystem.authorizeUpgrade(wasmFileHash, true);
+
+  const councilMembers = (await api.query.council.members()).toJSON() as any[];
+  const councilProposalThreshold = Math.floor(councilMembers.length / 2) + 1;
+
+  const democracyProposal = api.tx.democracy.externalProposeDefault({
+    Inline: authorizeUpgrade.method.toHex(),
+  });
+
+  const councilProposal = api.tx.council.propose(
+    councilProposalThreshold,
+    democracyProposal,
+    democracyProposal.method.encodedLength,
+  );
+
+  const encodedCall = councilProposal.method.toHex();
+
+  console.log('-----------------');
+  console.log('Upgrade Proposal: ', `https://polkadot.js.org/apps/?rpc=${networkUrl}#/extrinsics/decode/${encodedCall}`);
+  console.log('-----------------');
+
+  await api.disconnect();
+}
+
+await main();