Update test format. Add `get_proposer_head`
This commit is contained in:
parent
3f1bc20512
commit
9ce8e3d6e9
|
@ -1,3 +1,4 @@
|
||||||
|
from eth_utils import encode_hex
|
||||||
from eth2spec.test.context import (
|
from eth2spec.test.context import (
|
||||||
spec_state_test,
|
spec_state_test,
|
||||||
with_altair_and_later,
|
with_altair_and_later,
|
||||||
|
@ -13,6 +14,7 @@ from eth2spec.test.helpers.fork_choice import (
|
||||||
apply_next_slots_with_attestations,
|
apply_next_slots_with_attestations,
|
||||||
get_genesis_forkchoice_store_and_block,
|
get_genesis_forkchoice_store_and_block,
|
||||||
on_tick_and_append_step,
|
on_tick_and_append_step,
|
||||||
|
output_store_checks,
|
||||||
tick_and_add_block,
|
tick_and_add_block,
|
||||||
tick_and_run_on_attestation,
|
tick_and_run_on_attestation,
|
||||||
)
|
)
|
||||||
|
@ -51,9 +53,15 @@ def test_basic_is_head_root(spec, state):
|
||||||
current_time = slot * spec.config.SECONDS_PER_SLOT + store.genesis_time
|
current_time = slot * spec.config.SECONDS_PER_SLOT + store.genesis_time
|
||||||
on_tick_and_append_step(spec, store, current_time, test_steps)
|
on_tick_and_append_step(spec, store, current_time, test_steps)
|
||||||
proposer_head = spec.get_proposer_head(store, head_root, slot)
|
proposer_head = spec.get_proposer_head(store, head_root, slot)
|
||||||
|
|
||||||
assert proposer_head == head_root
|
assert proposer_head == head_root
|
||||||
|
|
||||||
|
output_store_checks(spec, store, test_steps)
|
||||||
|
test_steps.append({
|
||||||
|
'checks': {
|
||||||
|
'get_proposer_head': encode_hex(proposer_head),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
yield 'steps', test_steps
|
yield 'steps', test_steps
|
||||||
|
|
||||||
|
|
||||||
|
@ -149,6 +157,11 @@ def test_basic_is_parent_root(spec, state):
|
||||||
proposer_head = spec.get_proposer_head(store, head_root, state.slot)
|
proposer_head = spec.get_proposer_head(store, head_root, state.slot)
|
||||||
assert proposer_head == parent_root
|
assert proposer_head == parent_root
|
||||||
|
|
||||||
# TODO: export the `proposer_head` result to test vectors?
|
output_store_checks(spec, store, test_steps)
|
||||||
|
test_steps.append({
|
||||||
|
'checks': {
|
||||||
|
'get_proposer_head': encode_hex(proposer_head),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
yield 'steps', test_steps
|
yield 'steps', test_steps
|
||||||
|
|
|
@ -159,7 +159,7 @@ The checks to verify the current status of `store`.
|
||||||
checks: {<store_attibute>: value} -- the assertions.
|
checks: {<store_attibute>: value} -- the assertions.
|
||||||
```
|
```
|
||||||
|
|
||||||
`<store_attibute>` is the field member or property of [`Store`](../../../specs/phase0/fork-choice.md#store) object that maintained by client implementation. Currently, the possible fields included:
|
`<store_attibute>` is the field member or property of [`Store`](../../../specs/phase0/fork-choice.md#store) object that maintained by client implementation. The fields include:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
head: {
|
head: {
|
||||||
|
@ -177,7 +177,13 @@ finalized_checkpoint: {
|
||||||
root: string, -- Encoded 32-byte value from store.finalized_checkpoint.root
|
root: string, -- Encoded 32-byte value from store.finalized_checkpoint.root
|
||||||
}
|
}
|
||||||
proposer_boost_root: string -- Encoded 32-byte value from store.proposer_boost_root
|
proposer_boost_root: string -- Encoded 32-byte value from store.proposer_boost_root
|
||||||
should_override_forkchoice_update: bool -- [New in Bellatrix] the result of `should_override_forkchoice_update(store, head_root)`
|
```
|
||||||
|
|
||||||
|
Additionally, these fields if `get_proposer_head` and `should_override_forkchoice_update` features are implemented:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
get_proposer_head: string -- Encoded 32-byte value from get_proposer_head(store)
|
||||||
|
should_override_forkchoice_update: bool -- [New in Bellatrix] the result of `should_override_forkchoice_update(store, head_root)`, where head_root is the result value from get_head(store)
|
||||||
```
|
```
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
@ -188,6 +194,8 @@ For example:
|
||||||
justified_checkpoint: {epoch: 3, root: '0xc25faab4acab38d3560864ca01e4d5cc4dc2cd473da053fbc03c2669143a2de4'}
|
justified_checkpoint: {epoch: 3, root: '0xc25faab4acab38d3560864ca01e4d5cc4dc2cd473da053fbc03c2669143a2de4'}
|
||||||
finalized_checkpoint: {epoch: 2, root: '0x40d32d6283ec11c53317a46808bc88f55657d93b95a1af920403187accf48f4f'}
|
finalized_checkpoint: {epoch: 2, root: '0x40d32d6283ec11c53317a46808bc88f55657d93b95a1af920403187accf48f4f'}
|
||||||
proposer_boost_root: '0xdaa1d49d57594ced0c35688a6da133abb086d191a2ebdfd736fad95299325aeb'
|
proposer_boost_root: '0xdaa1d49d57594ced0c35688a6da133abb086d191a2ebdfd736fad95299325aeb'
|
||||||
|
get_proposer_head: '0xdaa1d49d57594ced0c35688a6da133abb086d191a2ebdfd736fad95299325aeb'
|
||||||
|
should_override_forkchoice_update: false
|
||||||
```
|
```
|
||||||
|
|
||||||
*Note*: Each `checks` step may include one or multiple items. Each item has to be checked against the current store.
|
*Note*: Each `checks` step may include one or multiple items. Each item has to be checked against the current store.
|
||||||
|
|
|
@ -17,7 +17,7 @@ if __name__ == "__main__":
|
||||||
# PowBlock's which should be resolved by `get_pow_block(hash: Hash32) -> PowBlock` function
|
# PowBlock's which should be resolved by `get_pow_block(hash: Hash32) -> PowBlock` function
|
||||||
_new_bellatrix_mods = {key: 'eth2spec.test.bellatrix.fork_choice.test_' + key for key in [
|
_new_bellatrix_mods = {key: 'eth2spec.test.bellatrix.fork_choice.test_' + key for key in [
|
||||||
'on_merge_block',
|
'on_merge_block',
|
||||||
'reorg',
|
'should_override_forkchoice_update',
|
||||||
]}
|
]}
|
||||||
bellatrix_mods = combine_mods(_new_bellatrix_mods, altair_mods)
|
bellatrix_mods = combine_mods(_new_bellatrix_mods, altair_mods)
|
||||||
capella_mods = bellatrix_mods # No additional Capella specific fork choice tests
|
capella_mods = bellatrix_mods # No additional Capella specific fork choice tests
|
||||||
|
|
Loading…
Reference in New Issue