-
Notifications
You must be signed in to change notification settings - Fork 119
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* farming rpc test Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * add to CI Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * fix totalSupply Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * adjust test order Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * update block number Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * add to Calamari CI Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * update block to 1000 Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * log Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * more log Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * log block number Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * delay 12 second Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * update 13s Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * block Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * update Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * update state Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * update block number Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * update timeout Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * new block Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * adjust test order Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * update timeout Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * revert order Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * global referedum index Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * wait 5 block in governance Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * split farming test CI Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * trigger ÇI Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * add to calamari CI Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> * sleep 2 min Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com> --------- Signed-off-by: zqhxuyuan <zqhxuyuan@gmail.com>
- Loading branch information
Showing
8 changed files
with
495 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
import {ApiPromise} from "@polkadot/api"; | ||
import {KeyringPair} from "@polkadot/keyring/types"; | ||
import {blake2AsHex} from "@polkadot/util-crypto"; | ||
import {BN} from "@polkadot/util"; | ||
|
||
export const timer = (ms: number) => new Promise(res => setTimeout(res, ms)) | ||
|
||
// Global referendum index | ||
var referendumIndexObject = { referendumIndex: 0 }; | ||
|
||
/** | ||
* Execute an extrinsic with Root origin via governance. | ||
* @param api API object connecting to node. | ||
* @param keyring keyring to sign extrinsics. | ||
* @param extrinsicData the callData of the extrinsic that will be executed | ||
*/ | ||
export async function execute_with_root_via_governance( | ||
api: ApiPromise, | ||
keyring: KeyringPair, | ||
extrinsicData: any, | ||
) { | ||
const encodedCallData = extrinsicData.method.toHex(); | ||
await api.tx.preimage.notePreimage(encodedCallData).signAndSend(keyring, {nonce: -1}); | ||
console.log("Runtime upgrade preimage noted ..."); | ||
let encodedCallDataHash = blake2AsHex(encodedCallData); | ||
let externalProposeDefault = await api.tx.democracy.externalProposeDefault({ | ||
Legacy: { | ||
hash: encodedCallDataHash | ||
} | ||
}); | ||
const encodedExternalProposeDefault = externalProposeDefault.method.toHex(); | ||
await api.tx.council.propose(1, encodedExternalProposeDefault, encodedExternalProposeDefault.length).signAndSend(keyring, {nonce: -1}); | ||
console.log("Runtime upgrade governance proposed ..."); | ||
let fastTrackCall = await api.tx.democracy.fastTrack(encodedCallDataHash, 1, 1); | ||
await api.tx.technicalCommittee.propose(1, fastTrackCall, fastTrackCall.encodedLength).signAndSend(keyring, {nonce: -1}); | ||
console.log("Runtime upgrade governance fast tracked ..."); | ||
const parachainId = Number(await api.query.parachainInfo.parachainId()); | ||
let balance = new BN("1000000000000"); // Calamari: 12 | ||
if (parachainId != 2084) { | ||
balance = new BN("1000000000000000000"); // Manta: 18 | ||
} | ||
await api.tx.democracy.vote(referendumIndexObject.referendumIndex, { | ||
Standard: { balance, vote: { aye: true, conviction: 1 } }, | ||
}).signAndSend(keyring, {nonce: -1}); | ||
console.log("Runtime upgrade governance voted on ..."); | ||
referendumIndexObject.referendumIndex++; | ||
} | ||
|
||
export async function execute_via_governance( | ||
api: ApiPromise, | ||
keyring: KeyringPair, | ||
extrinsicData: any, | ||
) { | ||
const encodedCallData = extrinsicData.method.toHex(); | ||
await api.tx.preimage.notePreimage(encodedCallData).signAndSend(keyring, {nonce: -1}); | ||
|
||
let encodedCallDataHash = blake2AsHex(encodedCallData); | ||
let externalProposeDefault = await api.tx.democracy.externalProposeDefault({ | ||
Legacy: { | ||
hash: encodedCallDataHash | ||
} | ||
}); | ||
const encodedExternalProposeDefault = externalProposeDefault.method.toHex(); | ||
await api.tx.council.propose(1, encodedExternalProposeDefault, encodedExternalProposeDefault.length).signAndSend(keyring, {nonce: -1}); | ||
|
||
let fastTrackCall = await api.tx.democracy.fastTrack(encodedCallDataHash, 3, 2); | ||
await api.tx.technicalCommittee.propose(1, fastTrackCall, fastTrackCall.encodedLength).signAndSend(keyring, {nonce: -1}); | ||
|
||
// vote balance based on current network | ||
const parachainId = Number(await api.query.parachainInfo.parachainId()); | ||
let balance = new BN("1000000000000"); // Calamari: 12 | ||
if (parachainId != 2084) { | ||
balance = new BN("1000000000000000000"); // Manta: 18 | ||
} | ||
|
||
await api.tx.democracy.vote(referendumIndexObject.referendumIndex, { | ||
Standard: { balance, vote: { aye: true, conviction: 1 } }, | ||
}).signAndSend(keyring, {nonce: -1}); | ||
referendumIndexObject.referendumIndex++; | ||
|
||
// time passing 5 block. | ||
let block1 = Number(await api.query.system.number()); | ||
let block2 = Number(await api.query.system.number()) + 5; | ||
while(block1 != block2) { | ||
await timer(3000); | ||
block1 = Number(await api.query.system.number()); | ||
} | ||
} | ||
|
||
export async function execute_transaction( | ||
api: ApiPromise, | ||
alice: KeyringPair, | ||
extrinsicData: any, | ||
sudo: boolean = true | ||
) { | ||
if (sudo) { | ||
const rootCall = api.tx.sudo.sudo(extrinsicData); | ||
await rootCall.signAndSend(alice, {nonce: -1}, async ({ events = [], status, txHash, dispatchError }) => { | ||
if (dispatchError) { | ||
console.log(`sudo extrinsic has error: ${dispatchError.toString()}`); | ||
} | ||
}); | ||
} else { | ||
// @ts-ignore | ||
await extrinsicData.signAndSend(alice, {nonce: -1}, async ({ events = [], status, txHash, dispatchError }) => { | ||
if (dispatchError) { | ||
console.log(`extrinsic has error: ${dispatchError.toString()}, hex:${extrinsicData.toHex()}`); | ||
} | ||
}); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.