mirror of
https://github.com/status-im/nimbus-eth2.git
synced 2025-02-22 19:28:20 +00:00
parent
a0ead042ad
commit
7f9af78ddb
@ -64,12 +64,13 @@ OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Block pool processing [Preset: mainnet]
|
||||
```diff
|
||||
+ Adding the same block twice returns a Duplicate error [Preset: mainnet] OK
|
||||
+ Randao skip and non-skip OK
|
||||
+ Simple block add&get [Preset: mainnet] OK
|
||||
+ basic ops OK
|
||||
+ updateHead updates head and headState [Preset: mainnet] OK
|
||||
+ updateState sanity [Preset: mainnet] OK
|
||||
```
|
||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||
OK: 6/6 Fail: 0/6 Skip: 0/6
|
||||
## Block processor [Preset: mainnet]
|
||||
```diff
|
||||
+ Reverse order block add & get [Preset: mainnet] OK
|
||||
@ -585,4 +586,4 @@ OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
OK: 9/9 Fail: 0/9 Skip: 0/9
|
||||
|
||||
---TOTAL---
|
||||
OK: 326/331 Fail: 0/331 Skip: 5/331
|
||||
OK: 327/332 Fail: 0/332 Skip: 5/332
|
||||
|
@ -198,6 +198,70 @@ suite "Block pool processing" & preset():
|
||||
# Getting an EpochRef should not result in states being stored
|
||||
db.getStateRoot(stateCheckpoint.bid.root, stateCheckpoint.slot).isOk()
|
||||
|
||||
test "Randao skip and non-skip":
|
||||
process_slots(
|
||||
dag.cfg, state[], getStateField(
|
||||
state[], slot) + 1, cache, info, {}).expect("can advance 1")
|
||||
|
||||
let
|
||||
proposer_index = get_beacon_proposer_index(
|
||||
state[], cache, getStateField(state[], slot))
|
||||
privKey = MockPrivKeys[proposer_index.get]
|
||||
randao_reveal = get_epoch_signature(
|
||||
getStateField(state[], fork),
|
||||
getStateField(state[], genesis_validators_root),
|
||||
getStateField(state[], slot).epoch, privKey).toValidatorSig()
|
||||
var bad_randao_reveal = randao_reveal
|
||||
bad_randao_reveal.blob[5] += 1
|
||||
|
||||
block: # bad randao + no skip = bad
|
||||
let
|
||||
tmpState = assignClone(state[])
|
||||
message = makeBeaconBlock(
|
||||
dag.cfg, tmpState[], proposer_index.get(),
|
||||
bad_randao_reveal,
|
||||
getStateField(tmpState[], eth1_data),
|
||||
default(GraffitiBytes), @[], @[], BeaconBlockExits(),
|
||||
default(SyncAggregate), default(ExecutionPayload),
|
||||
noRollback, cache)
|
||||
check: message.isErr
|
||||
|
||||
block: # bad randao + skip = bad
|
||||
let
|
||||
tmpState = assignClone(state[])
|
||||
message = makeBeaconBlock(
|
||||
dag.cfg, tmpState[], proposer_index.get(),
|
||||
bad_randao_reveal,
|
||||
getStateField(tmpState[], eth1_data),
|
||||
default(GraffitiBytes), @[], @[], BeaconBlockExits(),
|
||||
default(SyncAggregate), default(ExecutionPayload),
|
||||
noRollback, cache, {skipRandaoVerification})
|
||||
check: message.isErr
|
||||
|
||||
block: # infinity + no skip = bad
|
||||
let
|
||||
tmpState = assignClone(state[])
|
||||
message = makeBeaconBlock(
|
||||
dag.cfg, tmpState[], proposer_index.get(),
|
||||
ValidatorSig.infinity(),
|
||||
getStateField(tmpState[], eth1_data),
|
||||
default(GraffitiBytes), @[], @[], BeaconBlockExits(),
|
||||
default(SyncAggregate), default(ExecutionPayload),
|
||||
noRollback, cache, {})
|
||||
check: message.isErr
|
||||
|
||||
block: # Infinity + skip = ok!
|
||||
let
|
||||
tmpState = assignClone(state[])
|
||||
message = makeBeaconBlock(
|
||||
dag.cfg, tmpState[], proposer_index.get(),
|
||||
ValidatorSig.infinity(),
|
||||
getStateField(tmpState[], eth1_data),
|
||||
default(GraffitiBytes), @[], @[], BeaconBlockExits(),
|
||||
default(SyncAggregate), default(ExecutionPayload),
|
||||
noRollback, cache, {skipRandaoVerification})
|
||||
check: message.isOk
|
||||
|
||||
test "Adding the same block twice returns a Duplicate error" & preset():
|
||||
let
|
||||
b10 = dag.addHeadBlock(verifier, b1, nilPhase0Callback)
|
||||
|
Loading…
x
Reference in New Issue
Block a user