add get_state_root helper
This commit is contained in:
parent
5ac30fdf77
commit
a561656b68
|
@ -72,6 +72,7 @@
|
||||||
- [`get_next_epoch_committee_count`](#get_next_epoch_committee_count)
|
- [`get_next_epoch_committee_count`](#get_next_epoch_committee_count)
|
||||||
- [`get_crosslink_committees_at_slot`](#get_crosslink_committees_at_slot)
|
- [`get_crosslink_committees_at_slot`](#get_crosslink_committees_at_slot)
|
||||||
- [`get_block_root`](#get_block_root)
|
- [`get_block_root`](#get_block_root)
|
||||||
|
- [`get_state_root`](#get_state_root)
|
||||||
- [`get_randao_mix`](#get_randao_mix)
|
- [`get_randao_mix`](#get_randao_mix)
|
||||||
- [`get_active_index_root`](#get_active_index_root)
|
- [`get_active_index_root`](#get_active_index_root)
|
||||||
- [`generate_seed`](#generate_seed)
|
- [`generate_seed`](#generate_seed)
|
||||||
|
@ -941,6 +942,17 @@ def get_block_root(state: BeaconState,
|
||||||
|
|
||||||
`get_block_root(_, s)` should always return `hash_tree_root` of the block in the beacon chain at slot `s`, and `get_crosslink_committees_at_slot(_, s)` should not change unless the [validator](#dfn-validator) registry changes.
|
`get_block_root(_, s)` should always return `hash_tree_root` of the block in the beacon chain at slot `s`, and `get_crosslink_committees_at_slot(_, s)` should not change unless the [validator](#dfn-validator) registry changes.
|
||||||
|
|
||||||
|
### `get_state_root`
|
||||||
|
|
||||||
|
```python
|
||||||
|
def get_state_root(state: BeaconState,
|
||||||
|
slot: Slot) -> Bytes32:
|
||||||
|
"""
|
||||||
|
Return the state root at a recent ``slot``.
|
||||||
|
"""
|
||||||
|
assert slot < state.slot <= slot + SLOTS_PER_HISTORICAL_ROOT
|
||||||
|
return state.latest_state_roots[slot % SLOTS_PER_HISTORICAL_ROOT]
|
||||||
|
```
|
||||||
### `get_randao_mix`
|
### `get_randao_mix`
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
@ -1674,9 +1686,9 @@ At every `slot > GENESIS_SLOT` run the following function:
|
||||||
def advance_slot(state: BeaconState) -> None:
|
def advance_slot(state: BeaconState) -> None:
|
||||||
state.latest_state_roots[state.slot % SLOTS_PER_HISTORICAL_ROOT] = hash_tree_root(state)
|
state.latest_state_roots[state.slot % SLOTS_PER_HISTORICAL_ROOT] = hash_tree_root(state)
|
||||||
state.latest_block_roots[state.slot % SLOTS_PER_HISTORICAL_ROOT] = get_block_root(state, state.slot - 1)
|
state.latest_block_roots[state.slot % SLOTS_PER_HISTORICAL_ROOT] = get_block_root(state, state.slot - 1)
|
||||||
if state.latest_block_header.state_root == ZERO_HASH:
|
|
||||||
state.latest_block_header.state_root = get_state_root(state, state.slot)
|
|
||||||
state.slot += 1
|
state.slot += 1
|
||||||
|
if state.latest_block_header.state_root == ZERO_HASH:
|
||||||
|
state.latest_block_header.state_root = get_state_root(state, state.slot - 1)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Per-block processing
|
### Per-block processing
|
||||||
|
|
Loading…
Reference in New Issue