@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
JavaScript
;
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=