Source code for microraiden.config
"""This module contains network-specific defaults for different networks.
You can change i.e. gas price, gas limits, or contract address here.
Example:
Set global network defaults for ropsten::
from config import NETWORK_CFG
from constants import get_network_id
NETWORK_CFG.set_defaults(get_network_id('ropsten'))
Change global gas price::
from config import NETWORK_CFG
NETWORK_CFG.gas_price = 15 * denoms.gwei
"""
from eth_utils import denoms
from collections import namedtuple, OrderedDict
from functools import partial
# these are default values for network config
network_config_defaults = OrderedDict(
(('channel_manager_address', None),
('start_sync_block', 0),
('gas_price', 20 * denoms.gwei),
('gas_limit', 130000),
# pot = plain old transaction, for lack of better term
('pot_gas_limit', 21000))
)
# create network config type that supports defaults
NetworkConfig = partial(
namedtuple(
'NetworkConfig',
network_config_defaults
),
**network_config_defaults
)
# network-specific configuration
NETWORK_CONFIG_DEFAULTS = {
# mainnet
1: NetworkConfig(
channel_manager_address='0x1440317CB15499083dEE3dDf49C2bD51D0d92e33',
start_sync_block=4958602,
gas_price=20 * denoms.gwei
),
# ropsten
3: NetworkConfig(
channel_manager_address='0x74434527b8E6C8296506D61d0faF3D18c9e4649A',
start_sync_block=2507629
),
# rinkeby
4: NetworkConfig(
channel_manager_address='0xbEc8fb898E6Da01152576d1A1ACdd2c957E56fb1',
start_sync_block=1642336
),
# kovan
42: NetworkConfig(
channel_manager_address='0xeD94E711e9DE1FF1E7dd34C39F0d4338A6A6ef92',
start_sync_block=5523491
),
# internal - used only with ethereum tester
65536: NetworkConfig(
channel_manager_address='0x0',
start_sync_block=0
)
}
[docs]class NetworkRuntime:
def __init__(self):
super().__setattr__('cfg', None)
[docs] def set_defaults(self, network_id: int):
"""Set global default settings for a given network id.
Args:
network_id (int): a network id to use.
"""
cfg_copy = dict(NETWORK_CONFIG_DEFAULTS[network_id]._asdict())
super().__setattr__('cfg', cfg_copy)
def __getattr__(self, attr):
return self.cfg.__getitem__(attr.lower())
def __setattr__(self, attr, value):
if attr == 'cfg':
return super().__setattr__('cfg', value)
return self.cfg.__setitem__(attr.lower(), value)
[docs]def get_defaults(network_id: int):
return NETWORK_CONFIG_DEFAULTS[network_id]
# default config is ropsten
NETWORK_CFG = NetworkRuntime()
NETWORK_CFG.set_defaults(3)