PR comment fixes
This commit is contained in:
parent
589d5a4f9a
commit
74d6021507
|
@ -1419,11 +1419,15 @@ def process_operations(state: BeaconState, body: BeaconBlockBody) -> None:
|
||||||
# Verify that outstanding deposits are processed up to the maximum number of deposits
|
# Verify that outstanding deposits are processed up to the maximum number of deposits
|
||||||
assert len(body.deposits) == min(MAX_DEPOSITS, state.eth1_data.deposit_count - state.eth1_deposit_index)
|
assert len(body.deposits) == min(MAX_DEPOSITS, state.eth1_data.deposit_count - state.eth1_deposit_index)
|
||||||
|
|
||||||
process_operations(body.proposer_slashings, process_proposer_slashing)
|
def for_ops(operations, fn):
|
||||||
process_operations(body.attester_slashings, process_attester_slashing)
|
for operation in operations:
|
||||||
process_operations(body.attestations, process_attestations)
|
fn(state, operation)
|
||||||
process_operations(body.deposits, process_deposit)
|
|
||||||
process_operations(body.voluntary_exits, process_voluntary_exit)
|
for_ops(body.proposer_slashings, process_proposer_slashing)
|
||||||
|
for_ops(body.attester_slashings, process_attester_slashing)
|
||||||
|
for_ops(body.attestations, process_attestations)
|
||||||
|
for_ops(body.deposits, process_deposit)
|
||||||
|
for_ops(body.voluntary_exits, process_voluntary_exit)
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Proposer slashings
|
##### Proposer slashings
|
||||||
|
|
|
@ -146,10 +146,10 @@ class AttestationCustodyBitWrapper(Container):
|
||||||
bit: bool
|
bit: bool
|
||||||
```
|
```
|
||||||
|
|
||||||
### New `PendingAttestation`
|
### New extended `PendingAttestation`
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class PendingAttestation(Container):
|
class PendingAttestation(phase0.PendingAttestation):
|
||||||
aggregation_bits: Bitlist[MAX_VALIDATORS_PER_COMMITTEE]
|
aggregation_bits: Bitlist[MAX_VALIDATORS_PER_COMMITTEE]
|
||||||
data: AttestationData
|
data: AttestationData
|
||||||
inclusion_delay: Slot
|
inclusion_delay: Slot
|
||||||
|
@ -160,7 +160,7 @@ class PendingAttestation(Container):
|
||||||
### New extended `Validator`
|
### New extended `Validator`
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class Validator(Container):
|
class Validator(phase0.Validator):
|
||||||
pubkey: BLSPubkey
|
pubkey: BLSPubkey
|
||||||
withdrawal_credentials: Hash # Commitment to pubkey for withdrawals
|
withdrawal_credentials: Hash # Commitment to pubkey for withdrawals
|
||||||
effective_balance: Gwei # Balance at stake
|
effective_balance: Gwei # Balance at stake
|
||||||
|
@ -170,9 +170,7 @@ class Validator(Container):
|
||||||
activation_epoch: Epoch
|
activation_epoch: Epoch
|
||||||
exit_epoch: Epoch
|
exit_epoch: Epoch
|
||||||
withdrawable_epoch: Epoch # When validator can withdraw funds
|
withdrawable_epoch: Epoch # When validator can withdraw funds
|
||||||
|
# Custody game
|
||||||
# TODO: older pre-proposal custody field additions, keep this?
|
|
||||||
#
|
|
||||||
# next_custody_secret_to_reveal is initialised to the custody period
|
# next_custody_secret_to_reveal is initialised to the custody period
|
||||||
# (of the particular validator) in which the validator is activated
|
# (of the particular validator) in which the validator is activated
|
||||||
# = get_custody_period_for_validator(...)
|
# = get_custody_period_for_validator(...)
|
||||||
|
@ -196,10 +194,10 @@ class BeaconBlockBody(phase0.BeaconBlockBody):
|
||||||
deposits: List[Deposit, MAX_DEPOSITS]
|
deposits: List[Deposit, MAX_DEPOSITS]
|
||||||
voluntary_exits: List[VoluntaryExit, MAX_VOLUNTARY_EXITS]
|
voluntary_exits: List[VoluntaryExit, MAX_VOLUNTARY_EXITS]
|
||||||
# Custody game
|
# Custody game
|
||||||
custody_chunk_challenges: List[CustodyChunkChallenge, PLACEHOLDER]
|
custody_chunk_challenges: List[CustodyChunkChallenge, MAX_CUSTODY_CHUNK_CHALLENGES]
|
||||||
custody_bit_challenges: List[CustodyBitChallenge, PLACEHOLDER]
|
custody_bit_challenges: List[CustodyBitChallenge, MAX_CUSTODY_BIT_CHALLENGES]
|
||||||
custody_key_reveals: List[CustodyKeyReveal, PLACEHOLDER]
|
custody_key_reveals: List[CustodyKeyReveal, MAX_CUSTODY_KEY_REVEALS]
|
||||||
early_derived_secret_reveals: List[EarlyDerivedSecretReveal, PLACEHOLDER]
|
early_derived_secret_reveals: List[EarlyDerivedSecretReveal, MAX_EARLY_DERIVED_SECRET_REVEALS]
|
||||||
# Shards
|
# Shards
|
||||||
shard_transitions: Vector[ShardTransition, MAX_SHARDS]
|
shard_transitions: Vector[ShardTransition, MAX_SHARDS]
|
||||||
# Light clients
|
# Light clients
|
||||||
|
@ -209,6 +207,8 @@ class BeaconBlockBody(phase0.BeaconBlockBody):
|
||||||
|
|
||||||
### New extended `BeaconBlock`
|
### New extended `BeaconBlock`
|
||||||
|
|
||||||
|
Note that the `body` has a new `BeaconBlockBody` definition.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class BeaconBlock(phase0.BeaconBlock):
|
class BeaconBlock(phase0.BeaconBlock):
|
||||||
slot: Slot
|
slot: Slot
|
||||||
|
@ -220,6 +220,8 @@ class BeaconBlock(phase0.BeaconBlock):
|
||||||
|
|
||||||
### New extended `BeaconState`
|
### New extended `BeaconState`
|
||||||
|
|
||||||
|
Note that aside from the new additions, `Validator` and `PendingAttestation` have new definitions.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class BeaconState(phase0.BeaconState):
|
class BeaconState(phase0.BeaconState):
|
||||||
# Versioning
|
# Versioning
|
||||||
|
@ -312,10 +314,10 @@ def chunks_to_body_root(chunks):
|
||||||
|
|
||||||
### Beacon state accessors
|
### Beacon state accessors
|
||||||
|
|
||||||
#### `get_online_validators`
|
#### `get_online_validator_indices`
|
||||||
|
|
||||||
```python
|
```python
|
||||||
def get_online_indices(state: BeaconState) -> Set[ValidatorIndex]:
|
def get_online_validator_indices(state: BeaconState) -> Set[ValidatorIndex]:
|
||||||
active_validators = get_active_validator_indices(state, get_current_epoch(state))
|
active_validators = get_active_validator_indices(state, get_current_epoch(state))
|
||||||
return set([i for i in active_validators if state.online_countdown[i] != 0])
|
return set([i for i in active_validators if state.online_countdown[i] != 0])
|
||||||
```
|
```
|
||||||
|
@ -390,7 +392,9 @@ def get_offset_slots(state: BeaconState, start_slot: Slot) -> Sequence[Slot]:
|
||||||
|
|
||||||
### Predicates
|
### Predicates
|
||||||
|
|
||||||
#### New `is_valid_indexed_attestation`
|
#### Updated `is_valid_indexed_attestation`
|
||||||
|
|
||||||
|
Note that this replaces the Phase 0 `is_valid_indexed_attestation`.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
def is_valid_indexed_attestation(state: BeaconState, indexed_attestation: AttestationAndCommittee) -> bool:
|
def is_valid_indexed_attestation(state: BeaconState, indexed_attestation: AttestationAndCommittee) -> bool:
|
||||||
|
@ -444,18 +448,18 @@ def process_operations(state: BeaconState, body: BeaconBlockBody) -> None:
|
||||||
# Verify that outstanding deposits are processed up to the maximum number of deposits
|
# Verify that outstanding deposits are processed up to the maximum number of deposits
|
||||||
assert len(body.deposits) == min(MAX_DEPOSITS, state.eth1_data.deposit_count - state.eth1_deposit_index)
|
assert len(body.deposits) == min(MAX_DEPOSITS, state.eth1_data.deposit_count - state.eth1_deposit_index)
|
||||||
|
|
||||||
def process_operations(operations, fn):
|
def for_ops(operations, fn):
|
||||||
for operation in operations:
|
for operation in operations:
|
||||||
fn(state, operation)
|
fn(state, operation)
|
||||||
|
|
||||||
process_operations(body.proposer_slashings, process_proposer_slashing)
|
for_ops(body.proposer_slashings, process_proposer_slashing)
|
||||||
process_operations(body.attester_slashings, process_attester_slashing)
|
for_ops(body.attester_slashings, process_attester_slashing)
|
||||||
|
|
||||||
# New attestation processing
|
# New attestation processing
|
||||||
process_attestations(state, body, body.attestations)
|
process_attestations(state, body, body.attestations)
|
||||||
|
|
||||||
process_operations(body.deposits, process_deposit)
|
for_ops(body.deposits, process_deposit)
|
||||||
process_operations(body.voluntary_exits, process_voluntary_exit)
|
for_ops(body.voluntary_exits, process_voluntary_exit)
|
||||||
|
|
||||||
# See custody game spec.
|
# See custody game spec.
|
||||||
process_custody_game_operations(state, body)
|
process_custody_game_operations(state, body)
|
||||||
|
@ -543,12 +547,11 @@ def apply_shard_transition(state: BeaconState, shard: Shard, transition: ShardTr
|
||||||
|
|
||||||
```python
|
```python
|
||||||
def process_attestations(state: BeaconState, block_body: BeaconBlockBody, attestations: Sequence[Attestation]) -> None:
|
def process_attestations(state: BeaconState, block_body: BeaconBlockBody, attestations: Sequence[Attestation]) -> None:
|
||||||
pending_attestations = []
|
|
||||||
# Basic validation
|
# Basic validation
|
||||||
for attestation in attestations:
|
for attestation in attestations:
|
||||||
validate_attestation(state, attestation)
|
validate_attestation(state, attestation)
|
||||||
# Process crosslinks
|
# Process crosslinks
|
||||||
online_indices = get_online_indices(state)
|
online_indices = get_online_validator_indices(state)
|
||||||
winners = set()
|
winners = set()
|
||||||
for shard in range(ACTIVE_SHARDS):
|
for shard in range(ACTIVE_SHARDS):
|
||||||
success = False
|
success = False
|
||||||
|
|
|
@ -346,19 +346,14 @@ def replace_empty_or_append(list: MutableSequence[Any], new_element: Any) -> int
|
||||||
|
|
||||||
```python
|
```python
|
||||||
def process_custody_game_operations(state: BeaconState, body: BeaconBlockBody) -> None:
|
def process_custody_game_operations(state: BeaconState, body: BeaconBlockBody) -> None:
|
||||||
assert len(block.body.custody_key_reveals) <= MAX_CUSTODY_KEY_REVEALS
|
def for_ops(operations, fn):
|
||||||
assert len(block.body.early_derived_secret_reveals) <= MAX_EARLY_DERIVED_SECRET_REVEALS
|
|
||||||
assert len(block.body.custody_bit_challenges) <= MAX_CUSTODY_BIT_CHALLENGES
|
|
||||||
assert len(block.body.custody_chunk_challenges) <= MAX_CUSTODY_CHUNK_CHALLENGES
|
|
||||||
|
|
||||||
def process_operations(operations, fn):
|
|
||||||
for operation in operations:
|
for operation in operations:
|
||||||
fn(state, operation)
|
fn(state, operation)
|
||||||
|
|
||||||
process_operations(body.custody_key_reveals, process_custody_key_reveal)
|
for_ops(body.custody_key_reveals, process_custody_key_reveal)
|
||||||
process_operations(body.early_derived_secret_reveals, process_early_derived_secret_reveal)
|
for_ops(body.early_derived_secret_reveals, process_early_derived_secret_reveal)
|
||||||
process_operations(body.custody_chunk_challenges, process_chunk_challenge)
|
for_ops(body.custody_chunk_challenges, process_chunk_challenge)
|
||||||
process_operations(body.custody_bit_challenges, process_bit_challenge)
|
for_ops(body.custody_bit_challenges, process_bit_challenge)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Custody key reveals
|
#### Custody key reveals
|
||||||
|
|
Loading…
Reference in New Issue