forked from sagnik/Project_Astral
70 lines
1.6 KiB
Bash
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"
|