UNPKG

@kba-tools/genesis-tool

Version:

A forked repo from ConsenSys which helps to generate genesis block for Besu Network with xemptyBlockPeriod field.

187 lines 14.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBesuGenesis = createBesuGenesis; exports.createGoQuorumGenesis = createGoQuorumGenesis; const fs_1 = __importDefault(require("fs")); const GENESIS_FILE = "genesis.json"; const GOQ_SUB = "/goQuorum"; const BESU_SUB = "/besu"; function createDefaultGenesis() { const DefaultAlloc = { balance: "90000000000000000000000", comment: "test account from quorum-dev-quickstart -- please remove me before entering production", }; const DefaultGenesisConfig = { chainId: 1337, homesteadBlock: 0, eip150Block: 0, eip150Hash: "0x0000000000000000000000000000000000000000000000000000000000000000", eip155Block: 0, eip158Block: 0, byzantiumBlock: 0, constantinopleBlock: 0, petersburgBlock: 0, istanbulBlock: 0, muirglacierblock: 0, berlinBlock: 0, londonBlock: 0, }; const genesis = { nonce: "0x0", timestamp: "0x58ee40ba", extraData: "0x0", gasLimit: "0xf7b760", gasUsed: "0x0", // eslint-disable-next-line id-blacklist number: "0x0", difficulty: "0x1", coinbase: "0x1", mixHash: "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365", parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000", config: DefaultGenesisConfig, alloc: { fe3b557e8fb62b89f4916b721be55ceb828dbd73: DefaultAlloc, f17f52151EbEF6C7334FAD080c5704D77216b732: DefaultAlloc, "627306090abaB3A6e1400e9345bC60c78a8BEf57": DefaultAlloc, }, }; return genesis; } function createBesuGenesis(path, quorumConfig, extraData, node) { const genesisFile = path + BESU_SUB + "/" + GENESIS_FILE; const besu = createDefaultGenesis(); besu.extraData = extraData; besu.gasLimit = quorumConfig.gasLimit; besu.coinbase = quorumConfig.coinbase; besu.difficulty = "0x" + quorumConfig.difficulty.toString(16); besu.config.chainId = quorumConfig.chainID; besu.config.contractSizeLimit = quorumConfig.maxCodeSize; besu.config.zeroBaseFee = true; const consensus = quorumConfig.consensus; if (quorumConfig.curve === "r1" /* CryptoCurve.r1 */) { besu.config.ecCurve = "secp256r1"; } if (quorumConfig.quickstartDevAccounts === false) { besu.alloc = {}; } node.forEach((account) => { besu.alloc[account.ethAccount.address] = { balance: quorumConfig.genesisNodeAllocation, }; }); if (quorumConfig.prefundedAccounts) { const prefundedAccounts = JSON.parse(quorumConfig.prefundedAccounts); Object.entries(prefundedAccounts).forEach(([key, value]) => { besu.alloc[key] = { balance: value.balance, }; }); } switch (consensus) { case "clique" /* Consensus.clique */: { besu.config.clique = { blockperiodseconds: quorumConfig.blockperiod, epochlength: quorumConfig.epochLength, requesttimeoutseconds: quorumConfig.requestTimeout, }; break; } case "ibft2" /* Consensus.ibft2 */: { besu.config.ibft2 = { blockperiodseconds: quorumConfig.blockperiod, epochlength: quorumConfig.epochLength, requesttimeoutseconds: quorumConfig.requestTimeout, }; break; } case "qbft" /* Consensus.qbft */: { besu.config.qbft = Object.assign({ blockperiodseconds: quorumConfig.blockperiod, epochlength: quorumConfig.epochLength, requesttimeoutseconds: quorumConfig.requestTimeout }, (quorumConfig.xemptyBlockPeriod === true && { xemptyblockperiodseconds: quorumConfig.emptyBlockPeriod, })); break; } default: { break; } } fs_1.default.writeFileSync(genesisFile, JSON.stringify(besu, null, 2)); return genesisFile; } function createGoQuorumGenesis(path, quorumConfig, extraData, node) { const DefaultCodeSize = { block: 0, size: quorumConfig.maxCodeSize, }; const genesisFile = path + GOQ_SUB + "/" + GENESIS_FILE; const goquorum = createDefaultGenesis(); goquorum.extraData = extraData; goquorum.gasLimit = quorumConfig.gasLimit; goquorum.coinbase = quorumConfig.coinbase; goquorum.difficulty = "0x" + quorumConfig.difficulty.toString(16); goquorum.config.isQuorum = true; goquorum.config.chainId = quorumConfig.chainID; goquorum.config.maxCodeSizeConfig = [DefaultCodeSize]; goquorum.config.txnSizeLimit = quorumConfig.txnSizeLimit; if (quorumConfig.quickstartDevAccounts === false) { goquorum.alloc = {}; } node.forEach((account) => { goquorum.alloc[account.ethAccount.address] = { balance: quorumConfig.genesisNodeAllocation, }; }); if (quorumConfig.prefundedAccounts) { const prefundedAccounts = JSON.parse(quorumConfig.prefundedAccounts); Object.entries(prefundedAccounts).forEach(([key, value]) => { goquorum.alloc[key] = { balance: value.balance, }; }); } const consensus = quorumConfig.consensus; switch (consensus) { case "clique" /* Consensus.clique */: { goquorum.config.clique = { policy: 0, period: quorumConfig.blockperiod, epoch: quorumConfig.epochLength, }; break; } case "ibft" /* Consensus.ibft */: { goquorum.config.ibft = { policy: 0, epoch: quorumConfig.epochLength, ceil2Nby3Block: 0, blockperiodseconds: quorumConfig.blockperiod, requesttimeoutseconds: quorumConfig.requestTimeout, }; break; } case "qbft" /* Consensus.qbft */: { goquorum.config.qbft = { policy: 0, epoch: quorumConfig.epochLength, ceil2Nby3Block: 0, testQBFTBlock: 0, blockperiodseconds: quorumConfig.blockperiod, emptyblockperiodseconds: quorumConfig.emptyBlockPeriod, requesttimeoutseconds: quorumConfig.requestTimeout, }; break; } case "raft" /* Consensus.raft */: { // raft = no block so ignoring break; } default: { break; } } fs_1.default.writeFileSync(genesisFile, JSON.stringify(goquorum, null, 2)); return genesisFile; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXNpc0dlbmVyYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9nZW5lc2lzR2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUEyREEsOENBd0VDO0FBRUQsc0RBbUZDO0FBck5ELDRDQUFvQjtBQUlwQixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFDcEMsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDO0FBQzVCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUV6QixTQUFTLG9CQUFvQjtJQUMzQixNQUFNLFlBQVksR0FBVTtRQUMxQixPQUFPLEVBQUUseUJBQXlCO1FBQ2xDLE9BQU8sRUFDTCx3RkFBd0Y7S0FDM0YsQ0FBQztJQUVGLE1BQU0sb0JBQW9CLEdBQWtCO1FBQzFDLE9BQU8sRUFBRSxJQUFJO1FBQ2IsY0FBYyxFQUFFLENBQUM7UUFDakIsV0FBVyxFQUFFLENBQUM7UUFDZCxVQUFVLEVBQ1Isb0VBQW9FO1FBQ3RFLFdBQVcsRUFBRSxDQUFDO1FBQ2QsV0FBVyxFQUFFLENBQUM7UUFDZCxjQUFjLEVBQUUsQ0FBQztRQUNqQixtQkFBbUIsRUFBRSxDQUFDO1FBQ3RCLGVBQWUsRUFBRSxDQUFDO1FBQ2xCLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLGdCQUFnQixFQUFFLENBQUM7UUFDbkIsV0FBVyxFQUFFLENBQUM7UUFDZCxXQUFXLEVBQUUsQ0FBQztLQUNmLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBWTtRQUN2QixLQUFLLEVBQUUsS0FBSztRQUNaLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLE9BQU8sRUFBRSxLQUFLO1FBQ2Qsd0NBQXdDO1FBQ3hDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsVUFBVSxFQUFFLEtBQUs7UUFDakIsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQ0wsb0VBQW9FO1FBQ3RFLFVBQVUsRUFDUixvRUFBb0U7UUFDdEUsTUFBTSxFQUFFLG9CQUFvQjtRQUM1QixLQUFLLEVBQUU7WUFDTCx3Q0FBd0MsRUFBRSxZQUFZO1lBQ3RELHdDQUF3QyxFQUFFLFlBQVk7WUFDdEQsMENBQTBDLEVBQUUsWUFBWTtTQUN6RDtLQUNGLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLElBQVksRUFDWixZQUEwQixFQUMxQixTQUFpQixFQUNqQixJQUFnQjtJQUVoQixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsUUFBUSxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUM7SUFDekQsTUFBTSxJQUFJLEdBQVksb0JBQW9CLEVBQUUsQ0FBQztJQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO0lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMvQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQ3pDLElBQUksWUFBWSxDQUFDLEtBQUssOEJBQW1CLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUM7SUFDcEMsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLHFCQUFxQixLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHO1lBQ3ZDLE9BQU8sRUFBRSxZQUFZLENBQUMscUJBQXFCO1NBQzVDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FFbEUsQ0FBQztRQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUc7Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzthQUN2QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUSxTQUFTLEVBQUUsQ0FBQztRQUNsQixvQ0FBcUIsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUc7Z0JBQ25CLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUM1QyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLHFCQUFxQixFQUFFLFlBQVksQ0FBQyxjQUFjO2FBQ25ELENBQUM7WUFDRixNQUFNO1FBQ1IsQ0FBQztRQUNELGtDQUFvQixDQUFDLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRztnQkFDbEIsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQzVDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMscUJBQXFCLEVBQUUsWUFBWSxDQUFDLGNBQWM7YUFDbkQsQ0FBQztZQUNGLE1BQU07UUFDUixDQUFDO1FBQ0QsZ0NBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxtQkFDZCxrQkFBa0IsRUFBRSxZQUFZLENBQUMsV0FBVyxFQUM1QyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFDckMscUJBQXFCLEVBQUUsWUFBWSxDQUFDLGNBQWMsSUFDL0MsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEtBQUssSUFBSSxJQUFJO2dCQUM3Qyx3QkFBd0IsRUFBRSxZQUFZLENBQUMsZ0JBQWdCO2FBQ3hELENBQUMsQ0FDSCxDQUFDO1lBQ0YsTUFBTTtRQUNSLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1IsTUFBTTtRQUNSLENBQUM7SUFDSCxDQUFDO0lBQ0QsWUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQWdCLHFCQUFxQixDQUNuQyxJQUFZLEVBQ1osWUFBMEIsRUFDMUIsU0FBaUIsRUFDakIsSUFBZ0I7SUFFaEIsTUFBTSxlQUFlLEdBQWE7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLEVBQUUsWUFBWSxDQUFDLFdBQVc7S0FDL0IsQ0FBQztJQUVGLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxPQUFPLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQztJQUN4RCxNQUFNLFFBQVEsR0FBWSxvQkFBb0IsRUFBRSxDQUFDO0lBQ2pELFFBQVEsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxRQUFRLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDMUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDL0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDekQsSUFBSSxZQUFZLENBQUMscUJBQXFCLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDakQsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN2QixRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUc7WUFDM0MsT0FBTyxFQUFFLFlBQVksQ0FBQyxxQkFBcUI7U0FDNUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUVsRSxDQUFDO1FBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDekQsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRztnQkFDcEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQ3pDLFFBQVEsU0FBUyxFQUFFLENBQUM7UUFDbEIsb0NBQXFCLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHO2dCQUN2QixNQUFNLEVBQUUsQ0FBQztnQkFDVCxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ2hDLEtBQUssRUFBRSxZQUFZLENBQUMsV0FBVzthQUNoQyxDQUFDO1lBQ0YsTUFBTTtRQUNSLENBQUM7UUFDRCxnQ0FBbUIsQ0FBQyxDQUFDLENBQUM7WUFDcEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUc7Z0JBQ3JCLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDL0IsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUM1QyxxQkFBcUIsRUFBRSxZQUFZLENBQUMsY0FBYzthQUNuRCxDQUFDO1lBQ0YsTUFBTTtRQUNSLENBQUM7UUFDRCxnQ0FBbUIsQ0FBQyxDQUFDLENBQUM7WUFDcEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUc7Z0JBQ3JCLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDL0IsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixrQkFBa0IsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDNUMsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLGdCQUFnQjtnQkFDdEQscUJBQXFCLEVBQUUsWUFBWSxDQUFDLGNBQWM7YUFDbkQsQ0FBQztZQUNGLE1BQU07UUFDUixDQUFDO1FBQ0QsZ0NBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLDhCQUE4QjtZQUM5QixNQUFNO1FBQ1IsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixNQUFNO1FBQ1IsQ0FBQztJQUNILENBQUM7SUFDRCxZQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIn0=