Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add data_gas_used field to ExecutionPayload #3391

Merged
merged 3 commits into from
Jun 1, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
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 specs/_features/eip6110/beacon-chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ class ExecutionPayload(Container):
transactions: List[Transaction, MAX_TRANSACTIONS_PER_PAYLOAD]
withdrawals: List[Withdrawal, MAX_WITHDRAWALS_PER_PAYLOAD]
excess_data_gas: uint256
data_gas_used: uint256
deposit_receipts: List[DepositReceipt, MAX_DEPOSIT_RECEIPTS_PER_PAYLOAD] # [New in EIP6110]
```

Expand All @@ -117,6 +118,7 @@ class ExecutionPayloadHeader(Container):
transactions_root: Root
withdrawals_root: Root
excess_data_gas: uint256
data_gas_used: uint256
deposit_receipts_root: Root # [New in EIP6110]
```

Expand Down Expand Up @@ -269,6 +271,7 @@ def process_execution_payload(state: BeaconState, body: BeaconBlockBody, executi
transactions_root=hash_tree_root(payload.transactions),
withdrawals_root=hash_tree_root(payload.withdrawals),
excess_data_gas=payload.excess_data_gas,
data_gas_used=payload.data_gas_used,
deposit_receipts_root=hash_tree_root(payload.deposit_receipts), # [New in EIP6110]
)
```
Expand Down
1 change: 1 addition & 0 deletions specs/_features/eip6110/fork.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ def upgrade_to_eip6110(pre: deneb.BeaconState) -> BeaconState:
transactions_root=pre.latest_execution_payload_header.transactions_root,
withdrawals_root=pre.latest_execution_payload_header.withdrawals_root,
excess_data_gas=uint256(0),
data_gas_used=uint256(0),
deposit_receipts_root=Root(), # [New in EIP-6110]
)
post = BeaconState(
Expand Down
3 changes: 3 additions & 0 deletions specs/deneb/beacon-chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ class ExecutionPayload(Container):
transactions: List[Transaction, MAX_TRANSACTIONS_PER_PAYLOAD]
withdrawals: List[Withdrawal, MAX_WITHDRAWALS_PER_PAYLOAD]
excess_data_gas: uint256 # [New in Deneb]
data_gas_used: uint256 # [New in Deneb]
```

#### `ExecutionPayloadHeader`
Expand All @@ -151,6 +152,7 @@ class ExecutionPayloadHeader(Container):
transactions_root: Root
withdrawals_root: Root
excess_data_gas: uint256 # [New in Deneb]
data_gas_used: uint256 # [New in Deneb]
```

## Helper functions
Expand Down Expand Up @@ -258,6 +260,7 @@ def process_execution_payload(state: BeaconState, body: BeaconBlockBody, executi
transactions_root=hash_tree_root(payload.transactions),
withdrawals_root=hash_tree_root(payload.withdrawals),
excess_data_gas=payload.excess_data_gas, # [New in Deneb]
data_gas_used=payload.data_gas_used, # [New in Deneb]
)
```

Expand Down
1 change: 1 addition & 0 deletions specs/deneb/fork.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ def upgrade_to_deneb(pre: capella.BeaconState) -> BeaconState:
transactions_root=pre.latest_execution_payload_header.transactions_root,
withdrawals_root=pre.latest_execution_payload_header.withdrawals_root,
excess_data_gas=uint256(0), # [New in Deneb]
data_gas_used=uint256(0), # [New in Deneb]
)
post = BeaconState(
# Versioning
Expand Down
1 change: 1 addition & 0 deletions specs/deneb/light-client/fork.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ def upgrade_lc_header_to_deneb(pre: capella.LightClientHeader) -> LightClientHea
transactions_root=pre.execution.transactions_root,
withdrawals_root=pre.execution.withdrawals_root,
excess_data_gas=uint256(0), # [New in Deneb]
data_gas_used=uint256(0), # [New in Deneb]
),
execution_branch=pre.execution_branch,
)
Expand Down
1 change: 1 addition & 0 deletions specs/deneb/light-client/full-node.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ def block_to_light_client_header(block: SignedBeaconBlock) -> LightClientHeader:
# [New in Deneb]
if epoch >= DENEB_FORK_EPOCH:
execution_header.excess_data_gas = payload.excess_data_gas
execution_header.data_gas_used = payload.data_gas_used

execution_branch = compute_merkle_proof_for_block_body(block.message.body, EXECUTION_PAYLOAD_INDEX)
else:
Expand Down
2 changes: 1 addition & 1 deletion specs/deneb/light-client/sync-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def is_valid_light_client_header(header: LightClientHeader) -> bool:

# [New in Deneb]
if epoch < DENEB_FORK_EPOCH:
if header.execution.excess_data_gas != uint256(0):
if header.execution.excess_data_gas != uint256(0) or header.execution.data_gas_used != uint256(0):
return False

if epoch < CAPELLA_FORK_EPOCH:
Expand Down
3 changes: 3 additions & 0 deletions tests/core/pyspec/eth2spec/test/helpers/execution_payload.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ def get_execution_payload_header(spec, execution_payload):
payload_header.withdrawals_root = spec.hash_tree_root(execution_payload.withdrawals)
if is_post_deneb(spec):
payload_header.excess_data_gas = execution_payload.excess_data_gas
payload_header.data_gas_used = execution_payload.data_gas_used
if is_post_eip6110(spec):
payload_header.deposit_receipts_root = spec.hash_tree_root(execution_payload.deposit_receipts)
return payload_header
Expand Down Expand Up @@ -99,6 +100,7 @@ def compute_el_header_block_hash(spec,
if is_post_deneb(spec):
# excess_data_gas
execution_payload_header_rlp.append((big_endian_int, payload_header.excess_data_gas))
execution_payload_header_rlp.append((big_endian_int, payload_header.data_gas_used))
if is_post_eip6110(spec):
# deposit_receipts_root
assert deposit_receipts_trie_root is not None
Expand Down Expand Up @@ -202,6 +204,7 @@ def build_empty_execution_payload(spec, state, randao_mix=None):
payload.withdrawals = spec.get_expected_withdrawals(state)
if is_post_deneb(spec):
payload.excess_data_gas = 0
payload.data_gas_used = 0
if is_post_eip6110(spec):
# just to be clear
payload.deposit_receipts = []
Expand Down