This repository has been archived by the owner on Jul 1, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 146
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #489 from ChihChengLiang/add-testnet-chain-and-xlb-sm
Add testnet chain and Xiao Long Bao state machine
- Loading branch information
Showing
10 changed files
with
165 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
from typing import ( | ||
TYPE_CHECKING, | ||
) | ||
from eth2.beacon.chains.base import ( | ||
BeaconChain, | ||
) | ||
from eth2.beacon.state_machines.forks.xiao_long_bao import ( | ||
XiaoLongBaoStateMachine, | ||
) | ||
from eth2.beacon.state_machines.forks.serenity.configs import ( | ||
SERENITY_CONFIG, | ||
) | ||
from .constants import ( | ||
TESTNET_CHAIN_ID, | ||
) | ||
|
||
if TYPE_CHECKING: | ||
from eth2.beacon.typing import ( # noqa: F401 | ||
Slot, | ||
) | ||
from eth2.beacon.state_machines.base import ( # noqa: F401 | ||
BaseBeaconStateMachine, | ||
) | ||
from typing import ( # noqa: F401 | ||
Tuple, | ||
Type, | ||
) | ||
|
||
|
||
TESTNET_SM_CONFIGURATION = ( | ||
# FIXME: Shouldn't access GENESIS_SLOT from a particular state machine configs. | ||
(SERENITY_CONFIG.GENESIS_SLOT, XiaoLongBaoStateMachine), | ||
) # type: Tuple[Tuple[Slot, Type[BaseBeaconStateMachine]], ...] | ||
|
||
|
||
class BaseTestnetChain: | ||
sm_configuration = TESTNET_SM_CONFIGURATION | ||
chain_id = TESTNET_CHAIN_ID | ||
|
||
|
||
class TestnetChain(BaseTestnetChain, BeaconChain): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
|
||
|
||
TESTNET_CHAIN_ID = 5566 |
40 changes: 40 additions & 0 deletions
40
eth2/beacon/state_machines/forks/xiao_long_bao/__init__.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
from eth2.beacon.state_machines.base import ( | ||
BeaconStateMachine, | ||
) | ||
from eth2.beacon.state_machines.forks.serenity.blocks import ( | ||
SerenityBeaconBlock, | ||
create_serenity_block_from_parent, | ||
) | ||
from eth2.beacon.state_machines.forks.serenity.state_transitions import ( | ||
SerenityStateTransition, | ||
) | ||
from eth2.beacon.state_machines.forks.serenity.states import ( | ||
SerenityBeaconState, | ||
) | ||
from eth2.beacon.types.blocks import ( | ||
BaseBeaconBlock, | ||
) | ||
from eth2.beacon.typing import ( | ||
FromBlockParams, | ||
) | ||
|
||
from .configs import ( | ||
XIAO_LONG_BAO_CONFIG, | ||
) | ||
|
||
|
||
class XiaoLongBaoStateMachine(BeaconStateMachine): | ||
# fork name | ||
fork = 'xiao_long_bao' | ||
|
||
# classes | ||
block_class = SerenityBeaconBlock | ||
state_class = SerenityBeaconState | ||
state_transition_class = SerenityStateTransition | ||
config = XIAO_LONG_BAO_CONFIG | ||
|
||
# methods | ||
@staticmethod | ||
def create_block_from_parent(parent_block: BaseBeaconBlock, | ||
block_params: FromBlockParams) -> BaseBeaconBlock: | ||
return create_serenity_block_from_parent(parent_block, block_params) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
from eth2.beacon.helpers import ( | ||
slot_to_epoch, | ||
) | ||
from eth2.beacon.state_machines.forks.serenity.configs import ( | ||
SERENITY_CONFIG, | ||
) | ||
|
||
|
||
SLOTS_PER_EPOCH = 4 | ||
|
||
XIAO_LONG_BAO_CONFIG = SERENITY_CONFIG._replace( | ||
SLOTS_PER_EPOCH=SLOTS_PER_EPOCH, | ||
GENESIS_EPOCH=slot_to_epoch(SERENITY_CONFIG.GENESIS_SLOT, SLOTS_PER_EPOCH), | ||
TARGET_COMMITTEE_SIZE=2, | ||
SHARD_COUNT=2, | ||
MIN_ATTESTATION_INCLUSION_DELAY=2, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import pytest | ||
from eth2.beacon.chains.testnet import TestnetChain | ||
|
||
|
||
@pytest.mark.parametrize( | ||
"chain_klass", | ||
( | ||
TestnetChain, | ||
) | ||
) | ||
def test_chain_class_well_defined(chain_klass): | ||
chain = chain_klass(None) | ||
assert chain.sm_configuration is not () and chain.sm_configuration is not None |
20 changes: 20 additions & 0 deletions
20
tests/eth2/beacon/state_machines/forks/test_fork_classes.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import pytest | ||
|
||
from eth2.beacon.state_machines.forks.serenity import ( | ||
SerenityStateMachine, | ||
) | ||
from eth2.beacon.state_machines.forks.xiao_long_bao import ( | ||
XiaoLongBaoStateMachine, | ||
) | ||
|
||
|
||
@pytest.mark.parametrize( | ||
"sm_klass", | ||
( | ||
SerenityStateMachine, | ||
XiaoLongBaoStateMachine, | ||
) | ||
) | ||
def test_sm_class_well_defined(sm_klass): | ||
state_machine = sm_klass(chaindb=None, block=None) | ||
assert state_machine.get_block_class() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters