Files
Project_Astral/blockchain/generate-genesis.sh
2026-02-25 00:50:23 +05:30

70 lines
1.6 KiB
Bash

#!/bin/sh
set -eu
SEALER_ADDRESS="${1:-0x0000000000000000000000000000000000000001}"
PREFUNDED_ADDRESS="${2:-0x0000000000000000000000000000000000000002}"
OUTPUT_FILE="${3:-/genesis.json}"
strip_0x() {
echo "$1" | sed 's/^0x//; s/^0X//'
}
SEALER_HEX="$(strip_0x "$SEALER_ADDRESS")"
PREFUNDED_HEX="$(strip_0x "$PREFUNDED_ADDRESS")"
if [ ${#SEALER_HEX} -ne 40 ]; then
echo "Invalid sealer address: $SEALER_ADDRESS" >&2
exit 1
fi
if [ ${#PREFUNDED_HEX} -ne 40 ]; then
echo "Invalid pre-funded address: $PREFUNDED_ADDRESS" >&2
exit 1
fi
VANITY="$(printf '%064s' '' | tr ' ' '0')"
SIGNATURE="$(printf '%0130s' '' | tr ' ' '0')"
EXTRA_DATA="0x${VANITY}${SEALER_HEX}${SIGNATURE}"
cat > "$OUTPUT_FILE" <<EOF
{
"config": {
"chainId": 1999,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"londonBlock": 0,
"clique": {
"period": 5,
"epoch": 30000
}
},
"nonce": "0x0",
"timestamp": "0x0",
"extraData": "${EXTRA_DATA}",
"gasLimit": "0x1C9C380",
"difficulty": "0x1",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"${SEALER_HEX}": {
"balance": "0xD3C21BCECCEDA1000000"
},
"${PREFUNDED_HEX}": {
"balance": "0xD3C21BCECCEDA1000000"
}
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
EOF
echo "Wrote genesis to $OUTPUT_FILE"