Enable BLS in finality tests, use Milagro
This commit is contained in:
parent
64aed78d6a
commit
e9d887be4d
|
@ -59,8 +59,8 @@ def bls_default(request):
|
||||||
def bls_type(request):
|
def bls_type(request):
|
||||||
bls_type = request.config.getoption("--bls-type")
|
bls_type = request.config.getoption("--bls-type")
|
||||||
if bls_type == "py_ecc":
|
if bls_type == "py_ecc":
|
||||||
bls_utils.bls = bls_utils.py_ecc_bls
|
bls_utils.use_py_ecc()
|
||||||
elif bls_type == "milagro":
|
elif bls_type == "milagro":
|
||||||
bls_utils.bls = bls_utils.milagro_bls
|
bls_utils.use_milagro()
|
||||||
else:
|
else:
|
||||||
raise Exception(f"unrecognized bls type: {bls_type}")
|
raise Exception(f"unrecognized bls type: {bls_type}")
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from eth2spec.test.context import PHASE0, spec_state_test, never_bls, with_all_phases, with_phases
|
from eth2spec.test.context import PHASE0, spec_state_test, with_all_phases, with_phases
|
||||||
from eth2spec.test.helpers.state import next_epoch_via_block
|
from eth2spec.test.helpers.state import next_epoch_via_block
|
||||||
from eth2spec.test.helpers.attestations import next_epoch_with_attestations
|
from eth2spec.test.helpers.attestations import next_epoch_with_attestations
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ def check_finality(spec,
|
||||||
|
|
||||||
@with_phases([PHASE0])
|
@with_phases([PHASE0])
|
||||||
@spec_state_test
|
@spec_state_test
|
||||||
@never_bls
|
|
||||||
def test_finality_no_updates_at_genesis(spec, state):
|
def test_finality_no_updates_at_genesis(spec, state):
|
||||||
assert spec.get_current_epoch(state) == spec.GENESIS_EPOCH
|
assert spec.get_current_epoch(state) == spec.GENESIS_EPOCH
|
||||||
|
|
||||||
|
@ -54,7 +53,6 @@ def test_finality_no_updates_at_genesis(spec, state):
|
||||||
|
|
||||||
@with_all_phases
|
@with_all_phases
|
||||||
@spec_state_test
|
@spec_state_test
|
||||||
@never_bls
|
|
||||||
def test_finality_rule_4(spec, state):
|
def test_finality_rule_4(spec, state):
|
||||||
# get past first two epochs that finality does not run on
|
# get past first two epochs that finality does not run on
|
||||||
next_epoch_via_block(spec, state)
|
next_epoch_via_block(spec, state)
|
||||||
|
@ -80,7 +78,6 @@ def test_finality_rule_4(spec, state):
|
||||||
|
|
||||||
@with_all_phases
|
@with_all_phases
|
||||||
@spec_state_test
|
@spec_state_test
|
||||||
@never_bls
|
|
||||||
def test_finality_rule_1(spec, state):
|
def test_finality_rule_1(spec, state):
|
||||||
# get past first two epochs that finality does not run on
|
# get past first two epochs that finality does not run on
|
||||||
next_epoch_via_block(spec, state)
|
next_epoch_via_block(spec, state)
|
||||||
|
@ -108,7 +105,6 @@ def test_finality_rule_1(spec, state):
|
||||||
|
|
||||||
@with_all_phases
|
@with_all_phases
|
||||||
@spec_state_test
|
@spec_state_test
|
||||||
@never_bls
|
|
||||||
def test_finality_rule_2(spec, state):
|
def test_finality_rule_2(spec, state):
|
||||||
# get past first two epochs that finality does not run on
|
# get past first two epochs that finality does not run on
|
||||||
next_epoch_via_block(spec, state)
|
next_epoch_via_block(spec, state)
|
||||||
|
@ -138,7 +134,6 @@ def test_finality_rule_2(spec, state):
|
||||||
|
|
||||||
@with_all_phases
|
@with_all_phases
|
||||||
@spec_state_test
|
@spec_state_test
|
||||||
@never_bls
|
|
||||||
def test_finality_rule_3(spec, state):
|
def test_finality_rule_3(spec, state):
|
||||||
"""
|
"""
|
||||||
Test scenario described here
|
Test scenario described here
|
||||||
|
|
|
@ -14,6 +14,22 @@ Z2_SIGNATURE = b'\xc0' + b'\x00' * 95
|
||||||
STUB_COORDINATES = _signature_to_G2(Z2_SIGNATURE)
|
STUB_COORDINATES = _signature_to_G2(Z2_SIGNATURE)
|
||||||
|
|
||||||
|
|
||||||
|
def use_milagro():
|
||||||
|
"""
|
||||||
|
Shortcut to use Milagro as BLS library
|
||||||
|
"""
|
||||||
|
global bls
|
||||||
|
bls = milagro_bls
|
||||||
|
|
||||||
|
|
||||||
|
def use_py_ecc():
|
||||||
|
"""
|
||||||
|
Shortcut to use Py-ecc as BLS library
|
||||||
|
"""
|
||||||
|
global bls
|
||||||
|
bls = py_ecc_bls
|
||||||
|
|
||||||
|
|
||||||
def only_with_bls(alt_return=None):
|
def only_with_bls(alt_return=None):
|
||||||
"""
|
"""
|
||||||
Decorator factory to make a function only run when BLS is active. Otherwise return the default.
|
Decorator factory to make a function only run when BLS is active. Otherwise return the default.
|
||||||
|
|
|
@ -321,6 +321,7 @@ def create_provider(handler_name: str,
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
bls.use_py_ecc() # Py-ecc is chosen instead of Milagro, since the code is better understood to be correct.
|
||||||
gen_runner.run_generator("bls", [
|
gen_runner.run_generator("bls", [
|
||||||
create_provider('sign', case01_sign),
|
create_provider('sign', case01_sign),
|
||||||
create_provider('verify', case02_verify),
|
create_provider('verify', case02_verify),
|
||||||
|
|
|
@ -14,6 +14,7 @@ from gen_from_tests.gen import generate_from_tests
|
||||||
from importlib import reload
|
from importlib import reload
|
||||||
from eth2spec.config import config_util
|
from eth2spec.config import config_util
|
||||||
from eth2spec.test.context import PHASE0
|
from eth2spec.test.context import PHASE0
|
||||||
|
from eth2spec.utils import bls
|
||||||
|
|
||||||
|
|
||||||
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
||||||
|
@ -22,6 +23,7 @@ def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typin
|
||||||
config_util.prepare_config(configs_path, config_name)
|
config_util.prepare_config(configs_path, config_name)
|
||||||
reload(spec_phase0)
|
reload(spec_phase0)
|
||||||
reload(spec_phase1)
|
reload(spec_phase1)
|
||||||
|
bls.use_milagro()
|
||||||
return config_name
|
return config_name
|
||||||
|
|
||||||
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
||||||
|
|
|
@ -9,6 +9,7 @@ from eth2spec.test.phase0.finality import test_finality
|
||||||
from eth2spec.config import config_util
|
from eth2spec.config import config_util
|
||||||
from eth2spec.phase0 import spec as spec_phase0
|
from eth2spec.phase0 import spec as spec_phase0
|
||||||
from eth2spec.phase1 import spec as spec_phase1
|
from eth2spec.phase1 import spec as spec_phase1
|
||||||
|
from eth2spec.utils import bls
|
||||||
|
|
||||||
|
|
||||||
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
||||||
|
@ -17,6 +18,7 @@ def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typin
|
||||||
config_util.prepare_config(configs_path, config_name)
|
config_util.prepare_config(configs_path, config_name)
|
||||||
reload(spec_phase0)
|
reload(spec_phase0)
|
||||||
reload(spec_phase1)
|
reload(spec_phase1)
|
||||||
|
bls.use_milagro()
|
||||||
return config_name
|
return config_name
|
||||||
|
|
||||||
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
||||||
|
|
|
@ -8,6 +8,7 @@ from gen_from_tests.gen import generate_from_tests
|
||||||
from eth2spec.phase0 import spec as spec
|
from eth2spec.phase0 import spec as spec
|
||||||
from importlib import reload
|
from importlib import reload
|
||||||
from eth2spec.config import config_util
|
from eth2spec.config import config_util
|
||||||
|
from eth2spec.utils import bls
|
||||||
|
|
||||||
|
|
||||||
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
||||||
|
@ -15,6 +16,7 @@ def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typin
|
||||||
def prepare_fn(configs_path: str) -> str:
|
def prepare_fn(configs_path: str) -> str:
|
||||||
config_util.prepare_config(configs_path, config_name)
|
config_util.prepare_config(configs_path, config_name)
|
||||||
reload(spec)
|
reload(spec)
|
||||||
|
bls.use_milagro()
|
||||||
return config_name
|
return config_name
|
||||||
|
|
||||||
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
||||||
|
|
|
@ -16,6 +16,7 @@ from eth2spec.config import config_util
|
||||||
from eth2spec.phase0 import spec as spec_phase0
|
from eth2spec.phase0 import spec as spec_phase0
|
||||||
from eth2spec.phase1 import spec as spec_phase1
|
from eth2spec.phase1 import spec as spec_phase1
|
||||||
from eth2spec.test.context import PHASE0
|
from eth2spec.test.context import PHASE0
|
||||||
|
from eth2spec.utils import bls
|
||||||
|
|
||||||
|
|
||||||
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
||||||
|
@ -24,6 +25,7 @@ def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typin
|
||||||
config_util.prepare_config(configs_path, config_name)
|
config_util.prepare_config(configs_path, config_name)
|
||||||
reload(spec_phase0)
|
reload(spec_phase0)
|
||||||
reload(spec_phase1)
|
reload(spec_phase1)
|
||||||
|
bls.use_milagro()
|
||||||
return config_name
|
return config_name
|
||||||
|
|
||||||
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
||||||
|
|
|
@ -12,6 +12,7 @@ from gen_from_tests.gen import generate_from_tests
|
||||||
from importlib import reload
|
from importlib import reload
|
||||||
from eth2spec.config import config_util
|
from eth2spec.config import config_util
|
||||||
from eth2spec.test.context import PHASE0
|
from eth2spec.test.context import PHASE0
|
||||||
|
from eth2spec.utils import bls
|
||||||
|
|
||||||
|
|
||||||
def create_provider(tests_src, config_name: str) -> gen_typing.TestProvider:
|
def create_provider(tests_src, config_name: str) -> gen_typing.TestProvider:
|
||||||
|
@ -20,6 +21,7 @@ def create_provider(tests_src, config_name: str) -> gen_typing.TestProvider:
|
||||||
config_util.prepare_config(configs_path, config_name)
|
config_util.prepare_config(configs_path, config_name)
|
||||||
reload(spec_phase0)
|
reload(spec_phase0)
|
||||||
reload(spec_phase1)
|
reload(spec_phase1)
|
||||||
|
bls.use_milagro()
|
||||||
return config_name
|
return config_name
|
||||||
|
|
||||||
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
||||||
|
|
|
@ -9,6 +9,7 @@ from eth2spec.test.phase0.sanity import test_blocks, test_slots
|
||||||
from eth2spec.config import config_util
|
from eth2spec.config import config_util
|
||||||
from eth2spec.phase0 import spec as spec_phase0
|
from eth2spec.phase0 import spec as spec_phase0
|
||||||
from eth2spec.phase1 import spec as spec_phase1
|
from eth2spec.phase1 import spec as spec_phase1
|
||||||
|
from eth2spec.utils import bls
|
||||||
|
|
||||||
|
|
||||||
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider:
|
||||||
|
@ -17,6 +18,7 @@ def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typin
|
||||||
config_util.prepare_config(configs_path, config_name)
|
config_util.prepare_config(configs_path, config_name)
|
||||||
reload(spec_phase0)
|
reload(spec_phase0)
|
||||||
reload(spec_phase1)
|
reload(spec_phase1)
|
||||||
|
bls.use_milagro()
|
||||||
return config_name
|
return config_name
|
||||||
|
|
||||||
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
def cases_fn() -> Iterable[gen_typing.TestCase]:
|
||||||
|
|
Loading…
Reference in New Issue