def initialize_beacon_database(chain_config: BeaconChainConfig, chaindb: BaseBeaconChainDB, base_db: AtomicDatabaseAPI) -> None: try: chaindb.get_canonical_head_root() except CanonicalHeadNotFound: chain_config.initialize_chain(base_db)
def initialize_beacon_database(chain_config: BeaconChainConfig, chaindb: BaseBeaconChainDB, base_db: BaseAtomicDB, block_class: Type[BaseBeaconBlock]) -> None: try: chaindb.get_canonical_head(block_class) except CanonicalHeadNotFound: chain_config.initialize_chain(base_db)
def get_chain_from_genesis(db, index): pubkey = index_to_pubkey[index] validator_keymap = {pubkey: keymap[pubkey]} genesis_data = BeaconGenesisData( genesis_time=genesis_state.genesis_time, state=genesis_state, validator_keymap=validator_keymap, ) beacon_chain_config = BeaconChainConfig(chain_name='TestTestTest', genesis_data=genesis_data) chain_class = beacon_chain_config.beacon_chain_class return chain_class.from_genesis( base_db=db, genesis_state=genesis_state, genesis_block=genesis_block, # TODO(ralexstokes) do we need to avoid pulling in this as a global dependency? config=XIAO_LONG_BAO_CONFIG, )
def get_chain_from_genesis(db, indices): # pubkey -> privkey map validator_keymap = { index_to_pubkey[index]: keymap[index_to_pubkey[index]] for index in indices } genesis_data = BeaconGenesisData( genesis_time=genesis_state.genesis_time, state=genesis_state, validator_keymap=validator_keymap, ) beacon_chain_config = BeaconChainConfig(chain_name='TestTestTest', genesis_data=genesis_data) chain_class = beacon_chain_config.beacon_chain_class return chain_class.from_genesis( base_db=db, genesis_state=genesis_state, genesis_block=genesis_block, genesis_config=beacon_chain_config.genesis_config, )
def _get_network_config_path_for(profile: str) -> pathlib.Path: return BeaconChainConfig.get_genesis_config_file_path(profile)
def chain_config(genesis_state, eth2_config, chain_class): return BeaconChainConfig(genesis_state, eth2_config, {}, beacon_chain_class=chain_class)
def _get_network_config_path_from() -> pathlib.Path: return BeaconChainConfig.get_genesis_config_file_path()
genesis_time = int(time.time()) genesis_state, genesis_block = create_mock_genesis( num_validators=NUM_VALIDATORS, config=XIAO_LONG_BAO_CONFIG, keymap=keymap, genesis_block_class=SerenityBeaconBlock, genesis_time=genesis_time, ) genesis_data = BeaconGenesisData( genesis_time=genesis_time, genesis_slot=XIAO_LONG_BAO_CONFIG.GENESIS_SLOT, keymap=keymap, num_validators=NUM_VALIDATORS, ) beacon_chain_config = BeaconChainConfig(chain_name='TestTestTest', genesis_data=genesis_data) chain_class = beacon_chain_config.beacon_chain_class class FakeProtocol: def __init__(self): self.inbox = [] def send_new_block(self, block): self.inbox.append(block) class FakePeer: def __init__(self): self.sub_proto = FakeProtocol()
def chain_config(genesis_state, eth2_config): return BeaconChainConfig(genesis_state, eth2_config, {})