예제 #1
0
 def from_dict(cls, d):
     config = super().from_dict(d)
     config.ROOT = RootConfig.from_dict(config.ROOT)
     chains = []
     shards = dict()
     for s in config.CHAINS:
         chain_config = ChainConfig.from_dict(s)
         chains.append(chain_config)
         for shard_id in range(chain_config.SHARD_SIZE):
             shard_config = ShardConfig(chain_config)
             shard_config.root_config = config.ROOT
             shard_config.SHARD_ID = shard_id
             shard_config.COINBASE_ADDRESS = (Address.create_from(
                 shard_config.COINBASE_ADDRESS).address_in_shard(
                     shard_config.get_full_shard_id()).serialize().hex())
             # filter alloc addresses based on shard id
             alloc = dict()
             for address_hex, balances in shard_config.GENESIS.ALLOC.items(
             ):
                 address = Address.create_from(bytes.fromhex(address_hex))
                 address_shard_id = address.full_shard_key & (
                     chain_config.SHARD_SIZE - 1)
                 if shard_id == address_shard_id:
                     alloc[address_hex] = balances
             shard_config.GENESIS.ALLOC = alloc
             shards[shard_config.get_full_shard_id()] = shard_config
     config.CHAINS = chains
     config.shards = shards
     config.init_and_validate()
     return config
예제 #2
0
 def from_dict(cls, d):
     config = super().from_dict(d)
     config.ROOT = RootConfig.from_dict(config.ROOT)
     chains = []
     shards = dict()
     for s in config.CHAINS:
         chain_config = ChainConfig.from_dict(s)
         chains.append(chain_config)
         for shard_id in range(chain_config.SHARD_SIZE):
             shard_config = ShardConfig(chain_config)
             shard_config.root_config = config.ROOT
             shard_config.SHARD_ID = shard_id
             shard_config.COINBASE_ADDRESS = (Address.create_from(
                 shard_config.COINBASE_ADDRESS).address_in_shard(
                     shard_config.get_full_shard_id()).serialize().hex())
             shards[shard_config.get_full_shard_id()] = shard_config
     config.CHAINS = chains
     config.shards = shards
     config.init_and_validate()
     return config