From b47ee059d78d9f34cea452acce8f68e43d9a2547 Mon Sep 17 00:00:00 2001 From: Dev Kalra Date: Thu, 25 Apr 2024 21:00:39 +0530 Subject: [PATCH] feat(contract-manager): implement a script to get the entropy current registration (#1512) * write a script to get the current registration * simplify * correct description * catch only rpc errors * refactor and simplify --- .../scripts/get_entropy_registration.ts | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 contract_manager/scripts/get_entropy_registration.ts diff --git a/contract_manager/scripts/get_entropy_registration.ts b/contract_manager/scripts/get_entropy_registration.ts new file mode 100644 index 00000000..06d0f3d6 --- /dev/null +++ b/contract_manager/scripts/get_entropy_registration.ts @@ -0,0 +1,64 @@ +import yargs from "yargs"; +import { hideBin } from "yargs/helpers"; +import { DefaultStore } from "../src"; + +function deserializeCommitmentMetadata(data: Buffer) { + const seed = Uint8Array.from(data.subarray(0, 32)); + const chainLength = data.readBigInt64LE(32); + + return { + seed, + chainLength, + }; +} + +const parser = yargs(hideBin(process.argv)) + .usage("Usage: $0") + .options({ + testnet: { + type: "boolean", + default: false, + desc: "Fetch the provider registration data for the testnet contracts.", + }, + }); + +async function main() { + const argv = await parser.argv; + + for (const contract of Object.values(DefaultStore.entropy_contracts)) { + if (contract.getChain().isMainnet() === argv.testnet) continue; + let provider; + let providerInfo; + try { + provider = await contract.getDefaultProvider(); + providerInfo = await contract.getProviderInfo(provider); + } catch (e) { + console.error(`Error fetching info for ${contract.getId()}`, e); + continue; + } + + const commitmentMetadata = providerInfo.commitmentMetadata.replace( + "0x", + "" + ); + + // const binaryData = hexToBytes(commitmentMetadata); + const metadata = deserializeCommitmentMetadata( + Buffer.from(commitmentMetadata, "hex") + ); + console.log("=".repeat(100)); + console.log(`Fetched info for ${contract.getId()}`); + + console.log(`chain : ${contract.getChain().getId()}`); + console.log(`contract : ${contract.address}`); + console.log(`provider : ${provider}`); + console.log(`commitment data : ${commitmentMetadata}`); + console.log(`chainLength : ${metadata.chainLength}`); + console.log(`seed : [${metadata.seed}]`); + console.log( + `original seq no : ${providerInfo.originalCommitmentSequenceNumber}` + ); + } +} + +main();