UNPKG

@kba-tools/genesis-tool

Version:

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

135 lines 13.9 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateNetworkConfig = generateNetworkConfig; const genesis = __importStar(require("./genesisGenerate")); const fileHandler = __importStar(require("./fileHandler")); const nodekeys = __importStar(require("./nodeKeys")); const besuConfig = __importStar(require("./besuConfig")); const tessera_1 = require("./tessera"); const tesseraConfig_1 = require("./tesseraConfig"); function generateNodeConfig(numNodes, nodeType, accountPassword, curve, outputDir) { return __awaiter(this, void 0, void 0, function* () { const nNodes = numNodes; const nodes = []; for (let i = 0; i < nNodes; i++) { const nodeData = yield nodekeys.generateNodeKeys(accountPassword, curve); nodes.push(nodeData); } nodes.map((v, i) => { fileHandler.writeNodeKeys(outputDir + "/" + nodeType + i.toString(), v); }); return nodes; }); } function generateNetworkConfig(quorumConfig) { return __awaiter(this, void 0, void 0, function* () { // Create a new root folder each time - dont destroy anything that existed const OUTPUT_BASE_DIR = `${quorumConfig.outputPath}`; const ts = quorumConfig.noOutputTimestamp ? "" : fileHandler.createTimestamp(); const outputDir = OUTPUT_BASE_DIR + "/" + ts; fileHandler.setupOutputFolder(outputDir, quorumConfig); console.log("Creating bootnodes..."); const bootnodes = yield generateNodeConfig(quorumConfig.bootnodes, "bootnode", quorumConfig.accountPassword, quorumConfig.curve, outputDir); console.log("Creating members..."); const members = yield generateNodeConfig(quorumConfig.members, "member", quorumConfig.accountPassword, quorumConfig.curve, outputDir); if (quorumConfig.tesseraEnabled) { if (quorumConfig.tesseraPassword === "") console.log("No password entered. Will not encrypt private key."); console.log("Generating tessera keys..."); for (let val = 0; val < quorumConfig.members; val++) { const { privateKeyPath, publicKeyPath } = yield (0, tessera_1.tesseraOutput)(quorumConfig.tesseraPassword, outputDir, val); (0, tesseraConfig_1.createTesseraConfig)(privateKeyPath, publicKeyPath, quorumConfig, outputDir, val); } } console.log("Creating validators..."); const validators = yield generateNodeConfig(quorumConfig.validators, "validator", quorumConfig.accountPassword, quorumConfig.curve, outputDir); const validatorAddressBuffers = validators.map((v) => v.address); const extraData = nodekeys.generateExtraDataString(validatorAddressBuffers, quorumConfig.consensus); // concatenate NodeKeys array to pass into the Genesis functions const NodeKeyConcat = bootnodes.concat(members, validators); // static nodes generation const allNodes = validators.concat(bootnodes, members); const allNodesEnodes = allNodes.map((_) => _.publicKey.toString("hex")); const consensus = quorumConfig.consensus; switch (consensus) { case "clique" /* Consensus.clique */: { fileHandler.createStaticNodes(outputDir, allNodesEnodes, true, true); genesis.createBesuGenesis(outputDir, quorumConfig, extraData, NodeKeyConcat); besuConfig.createBesuConfig(bootnodes, quorumConfig, outputDir); // goquorum requires the validator accounts addresses not the validator nodekey addresses const validatorAccountAddresses = validators.map((v) => v.ethAccount.address.replace("0x", "")); const quorumExtraData = nodekeys.generateQuorumCliqueExtraDataString(validatorAccountAddresses); genesis.createGoQuorumGenesis(outputDir, quorumConfig, quorumExtraData, NodeKeyConcat); fileHandler.createBesuPermissionsFile(outputDir, allNodesEnodes); fileHandler.createGoQuorumPermissionsFile(outputDir, allNodesEnodes); break; } case "raft" /* Consensus.raft */: { fileHandler.createStaticNodes(outputDir, allNodesEnodes, false, true); genesis.createGoQuorumGenesis(outputDir, quorumConfig, extraData, NodeKeyConcat); fileHandler.createGoQuorumPermissionsFile(outputDir, allNodesEnodes); break; } case "ibft" /* Consensus.ibft */: { fileHandler.createStaticNodes(outputDir, allNodesEnodes, false, true); genesis.createGoQuorumGenesis(outputDir, quorumConfig, extraData, NodeKeyConcat); fileHandler.createGoQuorumPermissionsFile(outputDir, allNodesEnodes); break; } case "ibft2" /* Consensus.ibft2 */: { fileHandler.createStaticNodes(outputDir, allNodesEnodes, true, false); genesis.createBesuGenesis(outputDir, quorumConfig, extraData, NodeKeyConcat); besuConfig.createBesuConfig(bootnodes, quorumConfig, outputDir); fileHandler.createBesuPermissionsFile(outputDir, allNodesEnodes); break; } // qbft default: { fileHandler.createStaticNodes(outputDir, allNodesEnodes, true, true); genesis.createGoQuorumGenesis(outputDir, quorumConfig, extraData, NodeKeyConcat); genesis.createBesuGenesis(outputDir, quorumConfig, extraData, NodeKeyConcat); besuConfig.createBesuConfig(bootnodes, quorumConfig, outputDir); fileHandler.createBesuPermissionsFile(outputDir, allNodesEnodes); fileHandler.createGoQuorumPermissionsFile(outputDir, allNodesEnodes); break; } } console.log("Artifacts in folder: " + outputDir); return outputDir; }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya0dlbmVyYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9uZXR3b3JrR2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCQSxzREE4SkM7QUF4TEQsMkRBQTZDO0FBQzdDLDJEQUE2QztBQUM3QyxxREFBdUM7QUFDdkMseURBQTJDO0FBQzNDLHVDQUEwQztBQUMxQyxtREFBc0Q7QUFFdEQsU0FBZSxrQkFBa0IsQ0FDL0IsUUFBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsZUFBdUIsRUFDdkIsS0FBa0IsRUFDbEIsU0FBaUI7O1FBRWpCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN4QixNQUFNLEtBQUssR0FBZSxFQUFFLENBQUM7UUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pCLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQUE7QUFFRCxTQUFzQixxQkFBcUIsQ0FDekMsWUFBMEI7O1FBRTFCLDBFQUEwRTtRQUMxRSxNQUFNLGVBQWUsR0FBRyxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyRCxNQUFNLEVBQUUsR0FBVyxZQUFZLENBQUMsaUJBQWlCO1lBQy9DLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFNBQVMsR0FBVyxlQUFlLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUVyRCxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXZELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNyQyxNQUFNLFNBQVMsR0FBRyxNQUFNLGtCQUFrQixDQUN4QyxZQUFZLENBQUMsU0FBUyxFQUN0QixVQUFVLEVBQ1YsWUFBWSxDQUFDLGVBQWUsRUFDNUIsWUFBWSxDQUFDLEtBQUssRUFDbEIsU0FBUyxDQUNWLENBQUM7UUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FDdEMsWUFBWSxDQUFDLE9BQU8sRUFDcEIsUUFBUSxFQUNSLFlBQVksQ0FBQyxlQUFlLEVBQzVCLFlBQVksQ0FBQyxLQUFLLEVBQ2xCLFNBQVMsQ0FDVixDQUFDO1FBRUYsSUFBSSxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEMsSUFBSSxZQUFZLENBQUMsZUFBZSxLQUFLLEVBQUU7Z0JBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUNwRSxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDMUMsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLElBQUEsdUJBQWEsRUFDM0QsWUFBWSxDQUFDLGVBQWUsRUFDNUIsU0FBUyxFQUNULEdBQUcsQ0FDSixDQUFDO2dCQUNGLElBQUEsbUNBQW1CLEVBQ2pCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsWUFBWSxFQUNaLFNBQVMsRUFDVCxHQUFHLENBQ0osQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLE1BQU0sa0JBQWtCLENBQ3pDLFlBQVksQ0FBQyxVQUFVLEVBQ3ZCLFdBQVcsRUFDWCxZQUFZLENBQUMsZUFBZSxFQUM1QixZQUFZLENBQUMsS0FBSyxFQUNsQixTQUFTLENBQ1YsQ0FBQztRQUNGLE1BQU0sdUJBQXVCLEdBQWMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVFLE1BQU0sU0FBUyxHQUFXLFFBQVEsQ0FBQyx1QkFBdUIsQ0FDeEQsdUJBQXVCLEVBQ3ZCLFlBQVksQ0FBQyxTQUFTLENBQ3ZCLENBQUM7UUFFRixnRUFBZ0U7UUFDaEUsTUFBTSxhQUFhLEdBQWUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFeEUsMEJBQTBCO1FBQzFCLE1BQU0sUUFBUSxHQUFlLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE1BQU0sY0FBYyxHQUFhLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNsRCxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FDNUIsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDekMsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNsQixvQ0FBcUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckUsT0FBTyxDQUFDLGlCQUFpQixDQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxhQUFhLENBQ2QsQ0FBQztnQkFDRixVQUFVLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEUseUZBQXlGO2dCQUN6RixNQUFNLHlCQUF5QixHQUFhLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUMvRCxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUN2QyxDQUFDO2dCQUNGLE1BQU0sZUFBZSxHQUNuQixRQUFRLENBQUMsbUNBQW1DLENBQUMseUJBQXlCLENBQUMsQ0FBQztnQkFDMUUsT0FBTyxDQUFDLHFCQUFxQixDQUMzQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixhQUFhLENBQ2QsQ0FBQztnQkFDRixXQUFXLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUNqRSxXQUFXLENBQUMsNkJBQTZCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNO1lBQ1IsQ0FBQztZQUNELGdDQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDcEIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN0RSxPQUFPLENBQUMscUJBQXFCLENBQzNCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULGFBQWEsQ0FDZCxDQUFDO2dCQUNGLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBQ3JFLE1BQU07WUFDUixDQUFDO1lBQ0QsZ0NBQW1CLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3RFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FDM0IsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsYUFBYSxDQUNkLENBQUM7Z0JBQ0YsV0FBVyxDQUFDLDZCQUE2QixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDckUsTUFBTTtZQUNSLENBQUM7WUFDRCxrQ0FBb0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEUsT0FBTyxDQUFDLGlCQUFpQixDQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxhQUFhLENBQ2QsQ0FBQztnQkFDRixVQUFVLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEUsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDakUsTUFBTTtZQUNSLENBQUM7WUFDRCxPQUFPO1lBQ1AsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDUixXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FDM0IsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsYUFBYSxDQUNkLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLGlCQUFpQixDQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxhQUFhLENBQ2QsQ0FBQztnQkFDRixVQUFVLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEUsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDakUsV0FBVyxDQUFDLDZCQUE2QixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDckUsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUNqRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQUEifQ==