#!/usr/bin/env bash set -e # Generate Genesis for ChainID 138 with proper IBFT extraData # This script uses Besu's operator generate-blockchain-config to create a proper genesis file SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../lib/init.sh" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" CONFIG_DIR="$PROJECT_ROOT/config" KEYS_DIR="$PROJECT_ROOT/keys" VALIDATORS_DIR="$KEYS_DIR/validators" OUTPUT_DIR="$PROJECT_ROOT/config/generated" # Configuration CHAIN_ID=138 BLOCK_PERIOD=2 EPOCH_LENGTH=30000 REQUEST_TIMEOUT=10 GAS_LIMIT="0x1c9c380" NUM_VALIDATORS=${1:-4} log_success "Generating genesis for ChainID ${CHAIN_ID} with proper IBFT extraData" # Check if Besu is installed if ! command -v besu &> /dev/null; then log_error "Error: Besu CLI not found. Please install Besu." echo "Visit: https://besu.hyperledger.org/en/stable/HowTo/Get-Started/Installation-Options/" exit 1 fi # Create directories mkdir -p "$VALIDATORS_DIR" mkdir -p "$OUTPUT_DIR" mkdir -p "$CONFIG_DIR" # Create genesis configuration file for Besu operator cat > "$CONFIG_DIR/genesis-config.json" < "$CONFIG_DIR/static-nodes.json.template" <@:30303" ] EOF log_success "Setup complete!" log_warn "Next steps:" echo "1. Review genesis.json: $CONFIG_DIR/genesis.json" echo "2. Store validator keys securely (Azure Key Vault for production)" echo "3. Deploy infrastructure using Terraform" echo "4. Update static-nodes.json with actual enode addresses after deployment" echo "5. Deploy Kubernetes resources"