get_entropy_registration.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /* eslint-disable @typescript-eslint/restrict-template-expressions */
  2. /* eslint-disable no-console */
  3. import yargs from "yargs";
  4. import { hideBin } from "yargs/helpers";
  5. import { DefaultStore } from "../src/node/utils/store";
  6. function deserializeCommitmentMetadata(data: Buffer) {
  7. const seed = Uint8Array.from(data.subarray(0, 32));
  8. const chainLength = data.readBigInt64LE(32);
  9. return {
  10. seed,
  11. chainLength,
  12. };
  13. }
  14. const parser = yargs(hideBin(process.argv))
  15. .usage("Usage: $0")
  16. .options({
  17. testnet: {
  18. type: "boolean",
  19. default: false,
  20. desc: "Fetch the provider registration data for the testnet contracts.",
  21. },
  22. });
  23. async function main() {
  24. const argv = await parser.argv;
  25. for (const contract of Object.values(DefaultStore.entropy_contracts)) {
  26. if (contract.getChain().isMainnet() === argv.testnet) continue;
  27. let provider;
  28. let providerInfo;
  29. try {
  30. provider = await contract.getDefaultProvider();
  31. providerInfo = await contract.getProviderInfo(provider);
  32. } catch (error) {
  33. console.error(`Error fetching info for ${contract.getId()}`, error);
  34. continue;
  35. }
  36. const commitmentMetadata = providerInfo.commitmentMetadata.replace(
  37. "0x",
  38. "",
  39. );
  40. // const binaryData = hexToBytes(commitmentMetadata);
  41. const metadata = deserializeCommitmentMetadata(
  42. Buffer.from(commitmentMetadata, "hex"),
  43. );
  44. console.log("=".repeat(100));
  45. console.log(`Fetched info for ${contract.getId()}`);
  46. console.log(`chain : ${contract.getChain().getId()}`);
  47. console.log(`contract : ${contract.address}`);
  48. console.log(`provider : ${provider}`);
  49. console.log(`commitment data : ${commitmentMetadata}`);
  50. console.log(`chainLength : ${metadata.chainLength}`);
  51. console.log(`seed : [${metadata.seed}]`);
  52. console.log(
  53. `original seq no : ${providerInfo.originalCommitmentSequenceNumber}`,
  54. );
  55. }
  56. }
  57. // eslint-disable-next-line @typescript-eslint/no-floating-promises, unicorn/prefer-top-level-await
  58. main();