-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: create script for automating the registration of parachain with…
… the relay chain (#43) * chore: implement script for parachain onboarding * feat: implement script for regiration of parachain to the relay --------- Co-authored-by: Shreyas S Bhat <[email protected]>
- Loading branch information
1 parent
f62af15
commit 49e6677
Showing
4 changed files
with
89 additions
and
1 deletion.
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,69 @@ | ||
const { ApiPromise, WsProvider, Keyring } = require("@polkadot/api"); | ||
const fs = require("fs"); | ||
|
||
const run = async () => { | ||
try { | ||
console.log("Parsing Args ..."); | ||
// 0 & 1 are command context | ||
const endpoint = process.argv[2]; | ||
const seed = process.argv[3]; | ||
const id = process.argv[4]; | ||
const header = process.argv[5]; | ||
const wasmFile = process.argv[6]; | ||
|
||
const wsProvider = new WsProvider(endpoint); | ||
|
||
const api = await ApiPromise.create({ | ||
provider: wsProvider, | ||
}); | ||
|
||
const keyring = new Keyring({ type: "sr25519" }); | ||
const alice = keyring.addFromUri(seed); | ||
|
||
let wasm; | ||
try { | ||
wasm = fs.readFileSync(wasmFile, "utf8"); | ||
} catch (err) { | ||
console.error(err); | ||
throw err; | ||
} | ||
|
||
let paraGenesisArgs = { | ||
genesis_head: header, | ||
validation_code: wasm, | ||
parachain: true, | ||
}; | ||
|
||
let genesis = api.createType("ParaGenesisArgs", paraGenesisArgs); | ||
|
||
const nonce = Number((await api.query.system.account(alice.address)).nonce); | ||
|
||
console.log( | ||
`--- Submitting extrinsic to register parachain ${id}. (nonce: ${nonce}) ---` | ||
); | ||
const sudoCall = await api.tx.sudo | ||
.sudo(api.tx.parasSudoWrapper.sudoScheduleParaInitialize(id, genesis)) | ||
.signAndSend(alice, { nonce: nonce, era: 0 }, (result) => { | ||
console.log(`Current status is ${result.status}`); | ||
if (result.status.isInBlock) { | ||
console.log( | ||
`Transaction included at blockHash ${result.status.asInBlock}` | ||
); | ||
console.log("Waiting for finalization..."); | ||
} else if (result.status.isFinalized) { | ||
console.log( | ||
`Transaction finalized at blockHash ${result.status.asFinalized}` | ||
); | ||
sudoCall(); | ||
process.exit(); | ||
} else if (result.isError) { | ||
console.log(`Transaction Error`); | ||
process.exit(); | ||
} | ||
}); | ||
} catch (error) { | ||
console.log("error:", error); | ||
} | ||
}; | ||
|
||
run(); |
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