Refactor helpers into separate module
This commit is contained in:
parent
ca35773d2b
commit
b94af435da
|
@ -0,0 +1,33 @@
|
||||||
|
from eth2spec.test.helpers.keys import privkeys
|
||||||
|
from eth2spec.test.helpers.block import (
|
||||||
|
build_empty_block_for_next_slot,
|
||||||
|
)
|
||||||
|
from eth2spec.utils import bls
|
||||||
|
|
||||||
|
|
||||||
|
def compute_sync_committee_signature(spec, state, slot, privkey):
|
||||||
|
domain = spec.get_domain(state, spec.DOMAIN_SYNC_COMMITTEE, spec.compute_epoch_at_slot(slot))
|
||||||
|
if slot == state.slot:
|
||||||
|
block_root = build_empty_block_for_next_slot(spec, state).parent_root
|
||||||
|
else:
|
||||||
|
block_root = spec.get_block_root_at_slot(state, slot)
|
||||||
|
signing_root = spec.compute_signing_root(block_root, domain)
|
||||||
|
return bls.Sign(privkey, signing_root)
|
||||||
|
|
||||||
|
|
||||||
|
def compute_aggregate_sync_committee_signature(spec, state, slot, participants):
|
||||||
|
if len(participants) == 0:
|
||||||
|
return spec.G2_POINT_AT_INFINITY
|
||||||
|
|
||||||
|
signatures = []
|
||||||
|
for validator_index in participants:
|
||||||
|
privkey = privkeys[validator_index]
|
||||||
|
signatures.append(
|
||||||
|
compute_sync_committee_signature(
|
||||||
|
spec,
|
||||||
|
state,
|
||||||
|
slot,
|
||||||
|
privkey,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return bls.Aggregate(signatures)
|
|
@ -1,6 +1,4 @@
|
||||||
import random
|
import random
|
||||||
from eth2spec.test.helpers.keys import privkeys
|
|
||||||
from eth2spec.utils import bls
|
|
||||||
from eth2spec.test.helpers.state import (
|
from eth2spec.test.helpers.state import (
|
||||||
state_transition_and_sign_block,
|
state_transition_and_sign_block,
|
||||||
next_epoch,
|
next_epoch,
|
||||||
|
@ -8,6 +6,9 @@ from eth2spec.test.helpers.state import (
|
||||||
from eth2spec.test.helpers.block import (
|
from eth2spec.test.helpers.block import (
|
||||||
build_empty_block_for_next_slot,
|
build_empty_block_for_next_slot,
|
||||||
)
|
)
|
||||||
|
from eth2spec.test.lightclient_patch.helpers import (
|
||||||
|
compute_aggregate_sync_committee_signature,
|
||||||
|
)
|
||||||
from eth2spec.test.context import (
|
from eth2spec.test.context import (
|
||||||
PHASE0, PHASE1,
|
PHASE0, PHASE1,
|
||||||
with_all_phases_except,
|
with_all_phases_except,
|
||||||
|
@ -15,34 +16,6 @@ from eth2spec.test.context import (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def compute_sync_committee_signature(spec, state, slot, privkey):
|
|
||||||
domain = spec.get_domain(state, spec.DOMAIN_SYNC_COMMITTEE, spec.compute_epoch_at_slot(slot))
|
|
||||||
if slot == state.slot:
|
|
||||||
block_root = build_empty_block_for_next_slot(spec, state).parent_root
|
|
||||||
else:
|
|
||||||
block_root = spec.get_block_root_at_slot(state, slot)
|
|
||||||
signing_root = spec.compute_signing_root(block_root, domain)
|
|
||||||
return bls.Sign(privkey, signing_root)
|
|
||||||
|
|
||||||
|
|
||||||
def compute_aggregate_sync_committee_signature(spec, state, slot, participants):
|
|
||||||
if len(participants) == 0:
|
|
||||||
return spec.G2_POINT_AT_INFINITY
|
|
||||||
|
|
||||||
signatures = []
|
|
||||||
for validator_index in participants:
|
|
||||||
privkey = privkeys[validator_index]
|
|
||||||
signatures.append(
|
|
||||||
compute_sync_committee_signature(
|
|
||||||
spec,
|
|
||||||
state,
|
|
||||||
slot,
|
|
||||||
privkey,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return bls.Aggregate(signatures)
|
|
||||||
|
|
||||||
|
|
||||||
def run_sync_committee_sanity_test(spec, state, fraction_full=1.0):
|
def run_sync_committee_sanity_test(spec, state, fraction_full=1.0):
|
||||||
committee = spec.get_sync_committee_indices(state, spec.get_current_epoch(state))
|
committee = spec.get_sync_committee_indices(state, spec.get_current_epoch(state))
|
||||||
participants = random.sample(committee, int(len(committee) * fraction_full))
|
participants = random.sample(committee, int(len(committee) * fraction_full))
|
||||||
|
|
Loading…
Reference in New Issue