git.delta.rocks / unique-network / refs/commits / 1e1dae4deafd

difftreelog

source

js-packages/scripts/proposefasttrack.ts1.7 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 proposeFastTrack <CHAIN_URL> <PROPOSAL_HASH | existing-external-proposal>');7    process.exit(1);8  }910  const networkUrl = process.argv[2];11  const proposal = process.argv[3];1213  const wsProvider = new WsProvider(networkUrl);14  const api = await ApiPromise.create({provider: wsProvider});1516  let proposalHash;1718  if(proposal == 'existing-external-proposal') {19    const externalDemocracyProposal = (await api.query.democracy.nextExternal() as any).unwrap()[0];20    if(externalDemocracyProposal.isInline) {21      proposalHash = blake2AsHex(externalDemocracyProposal.asInline, 256);22    } else if(externalDemocracyProposal.isLegacy) {23      proposalHash = externalDemocracyProposal.asLegacy.toJSON().hash;24    } else {25      proposalHash = externalDemocracyProposal.asLookup.toJSON().hash;26    }27  } else {28    proposalHash = proposal;29  }3031  const voringPeriod = 7200;32  const delay = 10;3334  const democracyFastTrack = api.tx.democracy.fastTrack(proposalHash, voringPeriod, delay);3536  const techCommThreshold = ((await api.query.technicalCommittee.members()).toJSON() as any[]).length;37  const techCommProposal = api.tx.technicalCommittee.propose(38    techCommThreshold,39    democracyFastTrack.method.toHex(),40    democracyFastTrack.encodedLength,41  );4243  const encodedCall = techCommProposal.method.toHex();4445  console.log('-----------------');46  console.log('Fast Track Proposal: ', `https://polkadot.js.org/apps/?rpc=${networkUrl}#/extrinsics/decode/${encodedCall}`);47  console.log('-----------------');4849  await api.disconnect();50}5152await main();