Clean up electra LC
This commit is contained in:
parent
96b1d312a9
commit
d2a9506e04
|
@ -9,66 +9,10 @@
|
||||||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||||
|
|
||||||
- [Introduction](#introduction)
|
- [Introduction](#introduction)
|
||||||
- [Helper functions](#helper-functions)
|
|
||||||
- [Modified `block_to_light_client_header`](#modified-block_to_light_client_header)
|
|
||||||
|
|
||||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
<!-- /TOC -->
|
<!-- /TOC -->
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
Execution payload data is updated to account for the Electra upgrade.
|
No changes occurred in Electra upgrade.
|
||||||
|
|
||||||
## Helper functions
|
|
||||||
|
|
||||||
### Modified `block_to_light_client_header`
|
|
||||||
|
|
||||||
```python
|
|
||||||
def block_to_light_client_header(block: SignedBeaconBlock) -> LightClientHeader:
|
|
||||||
epoch = compute_epoch_at_slot(block.message.slot)
|
|
||||||
|
|
||||||
if epoch >= CAPELLA_FORK_EPOCH:
|
|
||||||
payload = block.message.body.execution_payload
|
|
||||||
execution_header = ExecutionPayloadHeader(
|
|
||||||
parent_hash=payload.parent_hash,
|
|
||||||
fee_recipient=payload.fee_recipient,
|
|
||||||
state_root=payload.state_root,
|
|
||||||
receipts_root=payload.receipts_root,
|
|
||||||
logs_bloom=payload.logs_bloom,
|
|
||||||
prev_randao=payload.prev_randao,
|
|
||||||
block_number=payload.block_number,
|
|
||||||
gas_limit=payload.gas_limit,
|
|
||||||
gas_used=payload.gas_used,
|
|
||||||
timestamp=payload.timestamp,
|
|
||||||
extra_data=payload.extra_data,
|
|
||||||
base_fee_per_gas=payload.base_fee_per_gas,
|
|
||||||
block_hash=payload.block_hash,
|
|
||||||
transactions_root=hash_tree_root(payload.transactions),
|
|
||||||
withdrawals_root=hash_tree_root(payload.withdrawals),
|
|
||||||
)
|
|
||||||
if epoch >= DENEB_FORK_EPOCH:
|
|
||||||
execution_header.blob_gas_used = payload.blob_gas_used
|
|
||||||
execution_header.excess_blob_gas = payload.excess_blob_gas
|
|
||||||
|
|
||||||
execution_branch = ExecutionBranch(
|
|
||||||
compute_merkle_proof(block.message.body, EXECUTION_PAYLOAD_GINDEX))
|
|
||||||
else:
|
|
||||||
# Note that during fork transitions, `finalized_header` may still point to earlier forks.
|
|
||||||
# While Bellatrix blocks also contain an `ExecutionPayload` (minus `withdrawals_root`),
|
|
||||||
# it was not included in the corresponding light client data. To ensure compatibility
|
|
||||||
# with legacy data going through `upgrade_lc_header_to_capella`, leave out execution data.
|
|
||||||
execution_header = ExecutionPayloadHeader()
|
|
||||||
execution_branch = ExecutionBranch()
|
|
||||||
|
|
||||||
return LightClientHeader(
|
|
||||||
beacon=BeaconBlockHeader(
|
|
||||||
slot=block.message.slot,
|
|
||||||
proposer_index=block.message.proposer_index,
|
|
||||||
parent_root=block.message.parent_root,
|
|
||||||
state_root=block.message.state_root,
|
|
||||||
body_root=hash_tree_root(block.message.body),
|
|
||||||
),
|
|
||||||
execution=execution_header,
|
|
||||||
execution_branch=execution_branch,
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
- [Modified `current_sync_committee_gindex_at_slot`](#modified-current_sync_committee_gindex_at_slot)
|
- [Modified `current_sync_committee_gindex_at_slot`](#modified-current_sync_committee_gindex_at_slot)
|
||||||
- [Modified `next_sync_committee_gindex_at_slot`](#modified-next_sync_committee_gindex_at_slot)
|
- [Modified `next_sync_committee_gindex_at_slot`](#modified-next_sync_committee_gindex_at_slot)
|
||||||
- [Modified `get_lc_execution_root`](#modified-get_lc_execution_root)
|
- [Modified `get_lc_execution_root`](#modified-get_lc_execution_root)
|
||||||
- [Modified `is_valid_light_client_header`](#modified-is_valid_light_client_header)
|
|
||||||
|
|
||||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
<!-- /TOC -->
|
<!-- /TOC -->
|
||||||
|
@ -152,28 +151,3 @@ def get_lc_execution_root(header: LightClientHeader) -> Root:
|
||||||
|
|
||||||
return Root()
|
return Root()
|
||||||
```
|
```
|
||||||
|
|
||||||
### Modified `is_valid_light_client_header`
|
|
||||||
|
|
||||||
```python
|
|
||||||
def is_valid_light_client_header(header: LightClientHeader) -> bool:
|
|
||||||
epoch = compute_epoch_at_slot(header.beacon.slot)
|
|
||||||
|
|
||||||
if epoch < DENEB_FORK_EPOCH:
|
|
||||||
if header.execution.blob_gas_used != uint64(0) or header.execution.excess_blob_gas != uint64(0):
|
|
||||||
return False
|
|
||||||
|
|
||||||
if epoch < CAPELLA_FORK_EPOCH:
|
|
||||||
return (
|
|
||||||
header.execution == ExecutionPayloadHeader()
|
|
||||||
and header.execution_branch == ExecutionBranch()
|
|
||||||
)
|
|
||||||
|
|
||||||
return is_valid_merkle_branch(
|
|
||||||
leaf=get_lc_execution_root(header),
|
|
||||||
branch=header.execution_branch,
|
|
||||||
depth=floorlog2(EXECUTION_PAYLOAD_GINDEX),
|
|
||||||
index=get_subtree_index(EXECUTION_PAYLOAD_GINDEX),
|
|
||||||
root=header.beacon.body_root,
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
Loading…
Reference in New Issue