update most remaining non-fork-choice spec refs, updating code where necessary (#1292)
* update most of the remaining non-fork-choice spec refs, updating code where necessary * revert presumably harmless compute_signing_root() change, but this way, keep things really unchanged outside inspector
This commit is contained in:
parent
3cdae9f6be
commit
61b0b5af17
|
@ -245,9 +245,10 @@ OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||||
+ Deposit at MAX_EFFECTIVE_BALANCE balance (32 ETH) OK
|
+ Deposit at MAX_EFFECTIVE_BALANCE balance (32 ETH) OK
|
||||||
+ Deposit over MAX_EFFECTIVE_BALANCE balance (32 ETH) OK
|
+ Deposit over MAX_EFFECTIVE_BALANCE balance (32 ETH) OK
|
||||||
+ Deposit under MAX_EFFECTIVE_BALANCE balance (32 ETH) OK
|
+ Deposit under MAX_EFFECTIVE_BALANCE balance (32 ETH) OK
|
||||||
|
+ Invalid deposit at MAX_EFFECTIVE_BALANCE balance (32 ETH) OK
|
||||||
+ Validator top-up OK
|
+ Validator top-up OK
|
||||||
```
|
```
|
||||||
OK: 4/4 Fail: 0/4 Skip: 0/4
|
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||||
## [Unit - Spec - Epoch processing] Justification and Finalization [Preset: mainnet]
|
## [Unit - Spec - Epoch processing] Justification and Finalization [Preset: mainnet]
|
||||||
```diff
|
```diff
|
||||||
+ Rule I - 234 finalization with enough support OK
|
+ Rule I - 234 finalization with enough support OK
|
||||||
|
@ -267,4 +268,4 @@ OK: 8/8 Fail: 0/8 Skip: 0/8
|
||||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||||
|
|
||||||
---TOTAL---
|
---TOTAL---
|
||||||
OK: 160/163 Fail: 0/163 Skip: 3/163
|
OK: 161/164 Fail: 0/164 Skip: 3/164
|
||||||
|
|
|
@ -52,7 +52,7 @@ proc aggregate_attestations*(
|
||||||
if not is_aggregator(state, slot, index, slot_signature, cache):
|
if not is_aggregator(state, slot, index, slot_signature, cache):
|
||||||
return none(AggregateAndProof)
|
return none(AggregateAndProof)
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.1/specs/phase0/validator.md#attestation-data
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/validator.md#attestation-data
|
||||||
# describes how to construct an attestation, which applies for makeAttestationData(...)
|
# describes how to construct an attestation, which applies for makeAttestationData(...)
|
||||||
# TODO this won't actually match anything
|
# TODO this won't actually match anything
|
||||||
let attestation_data = AttestationData(
|
let attestation_data = AttestationData(
|
||||||
|
|
|
@ -473,7 +473,7 @@ proc getAttestationsForBlock*(pool: AttestationPool,
|
||||||
var cache = get_empty_per_epoch_cache()
|
var cache = get_empty_per_epoch_cache()
|
||||||
for a in attestations:
|
for a in attestations:
|
||||||
var
|
var
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.1/specs/phase0/validator.md#construct-attestation
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/validator.md#construct-attestation
|
||||||
attestation = Attestation(
|
attestation = Attestation(
|
||||||
aggregation_bits: a.validations[0].aggregation_bits,
|
aggregation_bits: a.validations[0].aggregation_bits,
|
||||||
data: a.data,
|
data: a.data,
|
||||||
|
|
|
@ -920,7 +920,6 @@ proc getProposer*(
|
||||||
dag.withState(dag.tmpState, head.atSlot(slot)):
|
dag.withState(dag.tmpState, head.atSlot(slot)):
|
||||||
var cache = get_empty_per_epoch_cache()
|
var cache = get_empty_per_epoch_cache()
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.3/specs/phase0/validator.md#validator-assignments
|
|
||||||
let proposerIdx = get_beacon_proposer_index(state, cache)
|
let proposerIdx = get_beacon_proposer_index(state, cache)
|
||||||
if proposerIdx.isNone:
|
if proposerIdx.isNone:
|
||||||
warn "Missing proposer index",
|
warn "Missing proposer index",
|
||||||
|
|
|
@ -509,7 +509,7 @@ proc pubsubLogger(conf: InspectorConf, switch: Switch,
|
||||||
try:
|
try:
|
||||||
if topic.endsWith(topicBeaconBlocksSuffix & "_snappy"):
|
if topic.endsWith(topicBeaconBlocksSuffix & "_snappy"):
|
||||||
info "SignedBeaconBlock", msg = SSZ.decode(buffer, SignedBeaconBlock)
|
info "SignedBeaconBlock", msg = SSZ.decode(buffer, SignedBeaconBlock)
|
||||||
elif topic.endsWith(topicMainnetAttestationsSuffix & "_snappy"):
|
elif topic.endsWith("_snappy") and topic.contains("/beacon_attestation_"):
|
||||||
info "Attestation", msg = SSZ.decode(buffer, Attestation)
|
info "Attestation", msg = SSZ.decode(buffer, Attestation)
|
||||||
elif topic.endsWith(topicVoluntaryExitsSuffix & "_snappy"):
|
elif topic.endsWith(topicVoluntaryExitsSuffix & "_snappy"):
|
||||||
info "SignedVoluntaryExit", msg = SSZ.decode(buffer,
|
info "SignedVoluntaryExit", msg = SSZ.decode(buffer,
|
||||||
|
|
|
@ -453,7 +453,7 @@ func get_attesting_indices*(state: BeaconState,
|
||||||
# This shouldn't happen if one begins with a valid BeaconState and applies
|
# This shouldn't happen if one begins with a valid BeaconState and applies
|
||||||
# valid updates, but one can construct a BeaconState where it does. Do not
|
# valid updates, but one can construct a BeaconState where it does. Do not
|
||||||
# do anything here since the PendingAttestation wouldn't have made it past
|
# do anything here since the PendingAttestation wouldn't have made it past
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.3/specs/phase0/beacon-chain.md#attestations
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/beacon-chain.md#attestations
|
||||||
# which checks len(attestation.aggregation_bits) == len(committee) that in
|
# which checks len(attestation.aggregation_bits) == len(committee) that in
|
||||||
# nim-beacon-chain lives in check_attestation(...).
|
# nim-beacon-chain lives in check_attestation(...).
|
||||||
# Addresses https://github.com/status-im/nim-beacon-chain/issues/922
|
# Addresses https://github.com/status-im/nim-beacon-chain/issues/922
|
||||||
|
@ -568,7 +568,7 @@ proc isValidAttestationTargetEpoch*(
|
||||||
|
|
||||||
true
|
true
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.2/specs/phase0/beacon-chain.md#attestations
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/beacon-chain.md#attestations
|
||||||
proc check_attestation*(
|
proc check_attestation*(
|
||||||
state: BeaconState, attestation: SomeAttestation, flags: UpdateFlags,
|
state: BeaconState, attestation: SomeAttestation, flags: UpdateFlags,
|
||||||
stateCache: var StateCache): bool =
|
stateCache: var StateCache): bool =
|
||||||
|
|
|
@ -19,9 +19,6 @@ const
|
||||||
topicAttesterSlashingsSuffix* = "attester_slashing/ssz"
|
topicAttesterSlashingsSuffix* = "attester_slashing/ssz"
|
||||||
topicAggregateAndProofsSuffix* = "beacon_aggregate_and_proof/ssz"
|
topicAggregateAndProofsSuffix* = "beacon_aggregate_and_proof/ssz"
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.3/specs/phase0/p2p-interface.md#topics-and-messages
|
|
||||||
topicMainnetAttestationsSuffix* = "_beacon_attestation/ssz"
|
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/validator.md#misc
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/validator.md#misc
|
||||||
ATTESTATION_SUBNET_COUNT* = 64
|
ATTESTATION_SUBNET_COUNT* = 64
|
||||||
|
|
||||||
|
|
|
@ -262,7 +262,7 @@ proc state_transition*(
|
||||||
state.data, state.data.slot.compute_epoch_at_slot)
|
state.data, state.data.slot.compute_epoch_at_slot)
|
||||||
state_transition(state, signedBlock, cache, flags, rollback)
|
state_transition(state, signedBlock, cache, flags, rollback)
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.1/specs/phase0/validator.md
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/validator.md#preparing-for-a-beaconblock
|
||||||
# TODO There's more to do here - the spec has helpers that deal set up some of
|
# TODO There's more to do here - the spec has helpers that deal set up some of
|
||||||
# the fields in here!
|
# the fields in here!
|
||||||
proc makeBeaconBlock*(
|
proc makeBeaconBlock*(
|
||||||
|
|
|
@ -70,7 +70,7 @@ func get_total_active_balance*(state: BeaconState, cache: var StateCache): Gwei
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raiseAssert("get_total_active_balance(): cache always filled before usage")
|
raiseAssert("get_total_active_balance(): cache always filled before usage")
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.3/specs/phase0/beacon-chain.md#helper-functions-1
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/beacon-chain.md#helper-functions-1
|
||||||
func get_matching_source_attestations(state: BeaconState,
|
func get_matching_source_attestations(state: BeaconState,
|
||||||
epoch: Epoch): seq[PendingAttestation] =
|
epoch: Epoch): seq[PendingAttestation] =
|
||||||
doAssert epoch in [get_current_epoch(state), get_previous_epoch(state)]
|
doAssert epoch in [get_current_epoch(state), get_previous_epoch(state)]
|
||||||
|
@ -104,7 +104,7 @@ func get_attesting_balance(
|
||||||
get_total_balance(state, get_unslashed_attesting_indices(
|
get_total_balance(state, get_unslashed_attesting_indices(
|
||||||
state, attestations, stateCache))
|
state, attestations, stateCache))
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.9.4/specs/core/0_beacon-chain.md#justification-and-finalization
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/beacon-chain.md#justification-and-finalization
|
||||||
proc process_justification_and_finalization*(state: var BeaconState,
|
proc process_justification_and_finalization*(state: var BeaconState,
|
||||||
stateCache: var StateCache, updateFlags: UpdateFlags = {}) {.nbench.} =
|
stateCache: var StateCache, updateFlags: UpdateFlags = {}) {.nbench.} =
|
||||||
|
|
||||||
|
@ -437,7 +437,7 @@ func process_rewards_and_penalties(
|
||||||
increase_balance(state, i.ValidatorIndex, rewards[i])
|
increase_balance(state, i.ValidatorIndex, rewards[i])
|
||||||
decrease_balance(state, i.ValidatorIndex, penalties[i])
|
decrease_balance(state, i.ValidatorIndex, penalties[i])
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.9.4/specs/core/0_beacon-chain.md#slashings
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/beacon-chain.md#slashings
|
||||||
func process_slashings*(state: var BeaconState, cache: var StateCache) {.nbench.}=
|
func process_slashings*(state: var BeaconState, cache: var StateCache) {.nbench.}=
|
||||||
let
|
let
|
||||||
epoch = get_current_epoch(state)
|
epoch = get_current_epoch(state)
|
||||||
|
|
|
@ -24,7 +24,7 @@ func shortLog*(x: Checkpoint): string =
|
||||||
# Helpers used in epoch transition and trace-level block transition
|
# Helpers used in epoch transition and trace-level block transition
|
||||||
# --------------------------------------------------------
|
# --------------------------------------------------------
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.3/specs/phase0/beacon-chain.md#helper-functions-1
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/beacon-chain.md#helper-functions-1
|
||||||
func get_attesting_indices*(
|
func get_attesting_indices*(
|
||||||
state: BeaconState, attestations: openarray[PendingAttestation],
|
state: BeaconState, attestations: openarray[PendingAttestation],
|
||||||
stateCache: var StateCache): HashSet[ValidatorIndex] =
|
stateCache: var StateCache): HashSet[ValidatorIndex] =
|
||||||
|
|
|
@ -12,7 +12,7 @@ import
|
||||||
# Specs
|
# Specs
|
||||||
../../beacon_chain/spec/[datatypes, beaconstate],
|
../../beacon_chain/spec/[datatypes, beaconstate],
|
||||||
# Internals
|
# Internals
|
||||||
../../beacon_chain/[extras, interop],
|
../../beacon_chain/interop,
|
||||||
# Mocking procs
|
# Mocking procs
|
||||||
./mock_deposits
|
./mock_deposits
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue