Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ curl -H "Content-Type: application/json" --data-raw '{ "jsonrpc":"2.0","method":
v1 -> bellatrix genesis state
v2 -> capella genesis state
v3 -> deneb genesis state
v4 -> electra genesis state
v5 -> fulu genesis state
v6 -> gloas genesis state
verkle-gen -> verkle genesis state

### Available tools within the image
Expand Down
47 changes: 36 additions & 11 deletions apps/el-gen/generate_genesis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ generate_genesis() {
# 4 - deneb / cancun
# 5 - electra / prague
# 6 - fulu / osaka
# 7 - eip7805 / eip7805
# 7 - gloas / amsterdam
# 8 - eip7805 / eip7805

if [ "$CHAIN_ID" == "1" ]; then
# mainnet shadowfork
Expand Down Expand Up @@ -62,7 +63,8 @@ generate_genesis() {
[ $has_fork -lt 4 ] && [ ! "$DENEB_FORK_EPOCH" == "18446744073709551615" ] && genesis_add_deneb $tmp_dir
[ $has_fork -lt 5 ] && [ ! "$ELECTRA_FORK_EPOCH" == "18446744073709551615" ] && genesis_add_electra $tmp_dir
[ $has_fork -lt 6 ] && [ ! "$FULU_FORK_EPOCH" == "18446744073709551615" ] && genesis_add_fulu $tmp_dir
[ $has_fork -lt 7 ] && [ ! "$EIP7805_FORK_EPOCH" == "18446744073709551615" ] && genesis_add_eip7805 $tmp_dir
[ $has_fork -lt 7 ] && [ ! "$GLOAS_FORK_EPOCH" == "18446744073709551615" ] && genesis_add_gloas $tmp_dir
[ $has_fork -lt 8 ] && [ ! "$EIP7805_FORK_EPOCH" == "18446744073709551615" ] && genesis_add_eip7805 $tmp_dir
genesis_add_bpo $tmp_dir

if [ "$is_shadowfork" == "0" ]; then
Expand Down Expand Up @@ -159,12 +161,12 @@ analyze_basefee_update_fraction() {
MAX_BLOBS=$1
TARGET_BLOBS=$2
BASE_FEE_UPDATE_FRACTION=$3

GAS_PER_BLOB=$((2**17))

fee_up=$(echo "e((($MAX_BLOBS - $TARGET_BLOBS) * $GAS_PER_BLOB) / $BASE_FEE_UPDATE_FRACTION)" | bc -l)
fee_down=$(echo "e(-($TARGET_BLOBS * $GAS_PER_BLOB) / $BASE_FEE_UPDATE_FRACTION)" | bc -l)

# Calculate percentages
fee_up_pct=$(echo "100 * ($fee_up - 1)" | bc -l)
fee_down_pct=$(echo "100 * (1 - $fee_down)" | bc -l)
Expand Down Expand Up @@ -351,14 +353,14 @@ genesis_add_electra() {
echo "Adding electra genesis properties"
prague_time=$(genesis_get_activation_time $ELECTRA_FORK_EPOCH)
prague_time_hex="0x$(printf "%x" $prague_time)"

# Calculate basefee update fraction if not specified
if [ -z "$BASEFEE_UPDATE_FRACTION_ELECTRA" ] || [ "$BASEFEE_UPDATE_FRACTION_ELECTRA" == "0" ]; then
BASEFEE_UPDATE_FRACTION_ELECTRA=$(calculate_basefee_update_fraction $MAX_BLOBS_PER_BLOCK_ELECTRA)
echo "Calculated BASEFEE_UPDATE_FRACTION_ELECTRA: $BASEFEE_UPDATE_FRACTION_ELECTRA"
analyze_basefee_update_fraction $MAX_BLOBS_PER_BLOCK_ELECTRA $TARGET_BLOBS_PER_BLOCK_ELECTRA $BASEFEE_UPDATE_FRACTION_ELECTRA
fi

basefee_update_fraction_electra_hex="0x$(printf "%x" $BASEFEE_UPDATE_FRACTION_ELECTRA)"
# load electra system contracts
system_contracts=$(cat /apps/el-gen/system-contracts.yaml | yq -c)
Expand Down Expand Up @@ -423,14 +425,14 @@ genesis_add_fulu() {
echo "Adding fulu genesis properties"
osaka_time=$(genesis_get_activation_time $FULU_FORK_EPOCH)
osaka_time_hex="0x$(printf "%x" $osaka_time)"

# Calculate basefee update fraction if not specified
if [ -z "$BASEFEE_UPDATE_FRACTION_ELECTRA" ] || [ "$BASEFEE_UPDATE_FRACTION_ELECTRA" == "0" ]; then
BASEFEE_UPDATE_FRACTION_ELECTRA=$(calculate_basefee_update_fraction $MAX_BLOBS_PER_BLOCK_ELECTRA)
echo "Calculated BASEFEE_UPDATE_FRACTION_ELECTRA: $BASEFEE_UPDATE_FRACTION_ELECTRA"
analyze_basefee_update_fraction $MAX_BLOBS_PER_BLOCK_ELECTRA $TARGET_BLOBS_PER_BLOCK_ELECTRA $BASEFEE_UPDATE_FRACTION_ELECTRA
fi

basefee_update_fraction_electra_hex="0x$(printf "%x" $BASEFEE_UPDATE_FRACTION_ELECTRA)"

# genesis.json
Expand Down Expand Up @@ -474,6 +476,29 @@ genesis_add_fulu() {

}

# Add gloas fork properties
genesis_add_gloas() {
tmp_dir=$1
echo "Adding gloas genesis properties"
amsterdam_time=$(genesis_get_activation_time $GLOAS_FORK_EPOCH)
amsterdam_time_hex="0x$(printf "%x" $amsterdam_time)"

# genesis.json
genesis_add_json $tmp_dir/genesis.json '.config += {
"amsterdamTime": '"$amsterdam_time"'
}'

# chainspec.json
genesis_add_json $tmp_dir/chainspec.json '.params += {
"eip7928TransitionTimestamp": "'$amsterdam_time_hex'"
}'

# besu.json
genesis_add_json $tmp_dir/besu.json '.config += {
"amsterdamTime": '"$amsterdam_time"'
}'
}

# add eip7805 fork properties
genesis_add_eip7805() {
tmp_dir=$1
Expand Down Expand Up @@ -516,14 +541,14 @@ genesis_add_bpo() {
max_var="BPO_${i}_MAX_BLOBS"
fraction_var="BPO_${i}_BASE_FEE_UPDATE_FRACTION"
fraction_value=${!fraction_var}

# Calculate basefee update fraction if not specified
if [ -z "$fraction_value" ] || [ "$fraction_value" == "0" ]; then
fraction_value=$(calculate_basefee_update_fraction ${!max_var} ${!target_var})
echo "Calculated BPO_${i}_BASE_FEE_UPDATE_FRACTION: $fraction_value"
analyze_basefee_update_fraction ${!max_var} ${!target_var} $fraction_value
fi

fraction_var_hex="0x$(printf "%x" $fraction_value)"
max_blobs_per_tx_var="BPO_${i}_MAX_BLOBS_PER_TX"

Expand Down
26 changes: 13 additions & 13 deletions config-example/cl/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,12 @@ ELECTRA_FORK_EPOCH: $ELECTRA_FORK_EPOCH
# Fulu
FULU_FORK_VERSION: $FULU_FORK_VERSION
FULU_FORK_EPOCH: $FULU_FORK_EPOCH
# GLOAS
GLOAS_FORK_VERSION: $GLOAS_FORK_VERSION
GLOAS_FORK_EPOCH: $GLOAS_FORK_EPOCH
# EIP7441
EIP7441_FORK_VERSION: $EIP7441_FORK_VERSION
EIP7441_FORK_EPOCH: $EIP7441_FORK_EPOCH
# EIP7732
EIP7732_FORK_VERSION: $EIP7732_FORK_VERSION
EIP7732_FORK_EPOCH: $EIP7732_FORK_EPOCH
# EIP7805
EIP7805_FORK_VERSION: $EIP7805_FORK_VERSION
EIP7805_FORK_EPOCH: $EIP7805_FORK_EPOCH
Expand Down Expand Up @@ -95,15 +95,15 @@ SYNC_MESSAGE_DUE_BPS: $SYNC_MESSAGE_DUE_BPS
# 6667 basis points, ~67% of SLOT_DURATION_MS
CONTRIBUTION_DUE_BPS: $CONTRIBUTION_DUE_BPS

# EIP7732
# Gloas
# 2500 basis points, 25% of SLOT_DURATION_MS
ATTESTATION_DUE_BPS_EIP7732: $ATTESTATION_DUE_BPS_EIP7732
ATTESTATION_DUE_BPS_GLOAS: $ATTESTATION_DUE_BPS_GLOAS
# 5000 basis points, 50% of SLOT_DURATION_MS
AGGREGRATE_DUE_BPS_EIP7732: $AGGREGRATE_DUE_BPS_EIP7732
AGGREGRATE_DUE_BPS_GLOAS: $AGGREGRATE_DUE_BPS_GLOAS
# 2500 basis points, 25% of SLOT_DURATION_MS
SYNC_MESSAGE_DUE_BPS_EIP7732: $SYNC_MESSAGE_DUE_BPS_EIP7732
SYNC_MESSAGE_DUE_BPS_GLOAS: $SYNC_MESSAGE_DUE_BPS_GLOAS
# 5000 basis points, 50% of SLOT_DURATION_MS
CONTRIBUTION_DUE_BPS_EIP7732: $CONTRIBUTION_DUE_BPS_EIP7732
CONTRIBUTION_DUE_BPS_GLOAS: $CONTRIBUTION_DUE_BPS_GLOAS
# 7500 basis points, 75% of SLOT_DURATION_MS
PAYLOAD_ATTESTATION_DUE_BPS: $PAYLOAD_ATTESTATION_DUE_BPS

Expand Down Expand Up @@ -219,17 +219,17 @@ BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000
# 2**12 (= 4,096) epochs
MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: $MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS

# Gloas
# 2**7 (= 128) payloads
MAX_REQUEST_PAYLOADS: 128


# EIP7441
# 2**8 (= 256) epochs
EPOCHS_PER_SHUFFLING_PHASE: 256
# 2**1 (= 2) epochs
PROPOSER_SELECTION_GAP: 2

# EIP7732
# 2**7 (= 128) payloads
MAX_REQUEST_PAYLOADS: 128
# 20%
PROPOSER_SCORE_BOOST_EIP7732: 20

# EIP7805
# 2**4 (= 16) inclusion lists
Expand Down
12 changes: 6 additions & 6 deletions defaults/defaults.env
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ export ELECTRA_FORK_VERSION="${ELECTRA_FORK_VERSION:-0x60000000}"
export ELECTRA_FORK_EPOCH="${ELECTRA_FORK_EPOCH:-0}"
export FULU_FORK_VERSION="${FULU_FORK_VERSION:-0x70000000}"
export FULU_FORK_EPOCH="${FULU_FORK_EPOCH:-18446744073709551615}"
export EIP7732_FORK_VERSION="${EIP7732_FORK_VERSION:-0x80000000}"
export EIP7732_FORK_EPOCH="${EIP7732_FORK_EPOCH:-18446744073709551615}"
export GLOAS_FORK_VERSION="${GLOAS_FORK_VERSION:-0x80000000}"
export GLOAS_FORK_EPOCH="${GLOAS_FORK_EPOCH:-18446744073709551615}"
export EIP7805_FORK_VERSION="${EIP7805_FORK_VERSION:-0x90000000}"
export EIP7805_FORK_EPOCH="${EIP7805_FORK_EPOCH:-18446744073709551615}"
export EIP7441_FORK_VERSION="${EIP7441_FORK_VERSION:-0xa0000000}"
Expand All @@ -47,10 +47,10 @@ export ATTESTATION_DUE_BPS="${ATTESTATION_DUE_BPS:-3333}"
export AGGREGRATE_DUE_BPS="${AGGREGRATE_DUE_BPS:-6667}"
export SYNC_MESSAGE_DUE_BPS="${SYNC_MESSAGE_DUE_BPS:-3333}"
export CONTRIBUTION_DUE_BPS="${CONTRIBUTION_DUE_BPS:-6667}"
export ATTESTATION_DUE_BPS_EIP7732="${ATTESTATION_DUE_BPS_EIP7732:-2500}"
export AGGREGRATE_DUE_BPS_EIP7732="${AGGREGRATE_DUE_BPS_EIP7732:-5000}"
export SYNC_MESSAGE_DUE_BPS_EIP7732="${SYNC_MESSAGE_DUE_BPS_EIP7732:-2500}"
export CONTRIBUTION_DUE_BPS_EIP7732="${CONTRIBUTION_DUE_BPS_EIP7732:-5000}"
export ATTESTATION_DUE_BPS_GLOAS="${ATTESTATION_DUE_BPS_GLOAS:-2500}"
export AGGREGRATE_DUE_BPS_GLOAS="${AGGREGRATE_DUE_BPS_GLOAS:-5000}"
export SYNC_MESSAGE_DUE_BPS_GLOAS="${SYNC_MESSAGE_DUE_BPS_GLOAS:-2500}"
export CONTRIBUTION_DUE_BPS_GLOAS="${CONTRIBUTION_DUE_BPS_GLOAS:-5000}"
export PAYLOAD_ATTESTATION_DUE_BPS="${PAYLOAD_ATTESTATION_DUE_BPS:-7500}"
export VIEW_FREEZE_CUTOFF_BPS="${VIEW_FREEZE_CUTOFF_BPS:-7500}"
export INCLUSION_LIST_SUBMISSION_DUE_BPS="${INCLUSION_LIST_SUBMISSION_DUE_BPS:-6667}"
Expand Down
6 changes: 0 additions & 6 deletions entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,6 @@ add_blob_schedule() {
if [ "$INCLUDE_SCHEDULE" = false ]; then
# First non-default BPO - add header
BLOB_SCHEDULE="
# Blob Scheduling
# ---------------------------------------------------------------

BLOB_SCHEDULE:"
INCLUDE_SCHEDULE=true
fi
Expand All @@ -97,9 +94,6 @@ BLOB_SCHEDULE:"
else
# Add empty BLOB_SCHEDULE if no non-default BPOs were found
echo "
# Blob Scheduling
# ---------------------------------------------------------------

BLOB_SCHEDULE: []" >> "$config_file"
fi
}
Expand Down