difftreelog
feat add propose-fast-track (#1022)
in: master
* feat: add propose-fast-track * fix: propose-upgrade * fix: fasttrack preimage
3 files changed
tests/package.jsondiffbeforeafterboth--- a/tests/package.json
+++ b/tests/package.json
@@ -131,7 +131,8 @@
"polkadot-types-from-chain": "ts-node --esm ./node_modules/.bin/polkadot-types-from-chain --endpoint src/interfaces/metadata.json --output src/interfaces/ --package .",
"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",
"generateEnv": "ts-node --esm ./src/generateEnv.ts",
- "propose-upgrade": "ts-node --esm ./src/proposeupgrade.ts"
+ "propose-upgrade": "ts-node --esm ./src/proposeupgrade.ts",
+ "propose-fast-track": "ts-node --esm ./src/proposefasttrack.ts"
},
"author": "",
"license": "SEE LICENSE IN ../LICENSE",
tests/src/proposefasttrack.tsdiffbeforeafterboth1import {ApiPromise, WsProvider} from '@polkadot/api';2import {blake2AsHex} from '@polkadot/util-crypto';34async function main() {5 const networkUrl = process.argv[2];67 const wsProvider = new WsProvider(networkUrl);8 const api = await ApiPromise.create({provider: wsProvider});910 const externalDemocracyProposal = (await api.query.democracy.nextExternal() as any).unwrap()[0];1112 let proposalHash;13 if(externalDemocracyProposal.isInline) {14 proposalHash = blake2AsHex(externalDemocracyProposal.asInline, 256);15 } else if(externalDemocracyProposal.isLegacy) {16 proposalHash = externalDemocracyProposal.asLegacy.toJSON().hash;17 } else {18 proposalHash = externalDemocracyProposal.asLookup.toJSON().hash;19 }2021 const voringPeriod = 7200;22 const delay = 10;2324 const democracyFastTrack = api.tx.democracy.fastTrack(proposalHash, voringPeriod, delay);2526 const techCommThreshold = ((await api.query.technicalCommittee.members()).toJSON() as any[]).length;27 const techCommProposal = api.tx.technicalCommittee.propose(28 techCommThreshold,29 democracyFastTrack.method.toHex(),30 democracyFastTrack.encodedLength,31 );3233 const encodedCall = techCommProposal.method.toHex();3435 console.log('-----------------');36 console.log('Fast Track Proposal: ', `https://polkadot.js.org/apps/?rpc=${networkUrl}#/extrinsics/decode/${encodedCall}`);37 console.log('-----------------');3839 await api.disconnect();40}4142await main();tests/src/proposeupgrade.tsdiffbeforeafterboth--- a/tests/src/proposeupgrade.ts
+++ b/tests/src/proposeupgrade.ts
@@ -18,20 +18,30 @@
const councilMembers = (await api.query.council.members()).toJSON() as any[];
const councilProposalThreshold = Math.floor(councilMembers.length / 2) + 1;
+ const democracyProposalContent = api.tx.utility.batchAll([
+ authorizeUpgrade.method.toHex(),
+ enableMaintenance.method.toHex(),
+ ]).method.toHex();
+
+ const democracyProposalHash = blake2AsHex(democracyProposalContent, 256);
+ const democracyProposalPreimage = api.tx.preimage.notePreimage(democracyProposalContent).method.toHex();
+
const democracyProposal = api.tx.democracy.externalProposeDefault({
- Inline: api.tx.utility.batchAll([
- authorizeUpgrade.method.toHex(),
- enableMaintenance.method.toHex(),
- ]).method.toHex(),
+ Legacy: democracyProposalHash,
});
const councilProposal = api.tx.council.propose(
councilProposalThreshold,
democracyProposal,
democracyProposal.method.encodedLength,
- );
+ ).method.toHex();
- const encodedCall = councilProposal.method.toHex();
+ const proposeUpgradeBatch = api.tx.utility.batchAll([
+ democracyProposalPreimage,
+ councilProposal,
+ ]);
+
+ const encodedCall = proposeUpgradeBatch.method.toHex();
console.log('-----------------');
console.log('Upgrade Proposal: ', `https://polkadot.js.org/apps/?rpc=${networkUrl}#/extrinsics/decode/${encodedCall}`);