UNPKG

@rsksmart/rsk-contract-parser

Version:

A tool to parse/interact with contracts and decode events from the Rootstock blockchain.

47 lines (38 loc) 1.58 kB
"use strict";var _nod3Connect = require("../lib/nod3Connect"); async function main() { const contractAddress = process.argv[2]; let blockNumber = process.argv[3]; const network = process.argv[4]; let nod3Url = ''; if (!contractAddress || !network || !blockNumber) { console.error('Usage: node getContractBytecode.js <contractAddress: address> <blockNumber: number|blockTag> <network: testnet|mainnet>'); console.log(''); console.info('Example with USDCe - mainnet - Block 7014665:'); console.info('node dist/tools/getContractBytecode.js 0x74c9f2b00581f1b11aa7ff05aa9f608b7389de67 7014665 mainnet'); console.log(''); process.exit(1); } if (network !== 'testnet' && network !== 'mainnet') { console.error(`Invalid network: ${network}. Must be 'testnet' or 'mainnet'.`); process.exit(1); } if (network === 'testnet') { nod3Url = 'https://public-node.testnet.rsk.co'; } else { nod3Url = 'https://public-node.rsk.co'; } const nod3 = (0, _nod3Connect.nod3Connect)(nod3Url); // In case its not latest, ensure it's a valid block number if (blockNumber !== 'latest') { blockNumber = parseInt(blockNumber); if (isNaN(blockNumber)) { console.error(`Invalid block number: ${blockNumber}. Must be a number or 'latest'.`); process.exit(1); } // nod3.eth.getContractCodeAt does not convert to hex automatically yet. blockNumber = `0x${blockNumber.toString(16)}`; } const bytecode = await nod3.eth.getContractCodeAt(contractAddress, blockNumber); console.log(bytecode); } main();