git.delta.rocks / unique-network / refs/commits / b50f503232c4

difftreelog

source

js-packages/scripts/councilproposal.ts1.5 KiBsourcehistory
1import {ApiPromise, WsProvider} from '@polkadot/api';2import {blake2AsHex} from '@polkadot/util-crypto';34async function main() {5  if(process.argv.length != 4) {6    console.log('Usage: yarn councilDemocracyProposal <CHAIN_URL> <ENCODED_PROPOSAL>');7    process.exit(1);8  }910  const networkUrl = process.argv[2];11  const democracyProposalContent = process.argv[3];1213  const wsProvider = new WsProvider(networkUrl);14  const api = await ApiPromise.create({provider: wsProvider});1516  const councilMembers = (await api.query.council.members()).toJSON() as any[];17  const councilProposalThreshold = Math.floor(councilMembers.length / 2) + 1;1819  const democracyProposalHash = blake2AsHex(democracyProposalContent, 256);20  const democracyProposalPreimage = api.tx.preimage.notePreimage(democracyProposalContent).method.toHex();2122  const democracyProposal = api.tx.democracy.externalProposeDefault({23    Legacy: democracyProposalHash,24  });2526  const councilProposal = api.tx.council.propose(27    councilProposalThreshold,28    democracyProposal,29    democracyProposal.method.encodedLength,30  ).method.toHex();3132  const proposeBatch = api.tx.utility.batchAll([33    democracyProposalPreimage,34    councilProposal,35  ]);3637  const encodedCall = proposeBatch.method.toHex();3839  console.log('-----------------');40  console.log('Council Proposal: ', `https://polkadot.js.org/apps/?rpc=${networkUrl}#/extrinsics/decode/${encodedCall}`);41  console.log('-----------------');4243  await api.disconnect();44}4546await main();