initial development of tools

This commit is contained in:
Alexander Kolotov 2018-05-25 18:06:23 +03:00
parent 6ad86289de
commit 1ec2750699
3 changed files with 119 additions and 0 deletions

0
erc20/utils/__init__.py Normal file
View File

105
erc20/utils/getenv.py Normal file
View File

@ -0,0 +1,105 @@
# This module initializes data to work in the bridge envirionment
from toml import load
from os.path import isfile
from os import getenv
from dotenv import load_dotenv
from json import load as jload
from utils.web3 import (
toChecksumAddress,
connectionToRPCProvider,
)
class BridgeEnv():
def _fromEnv(self):
self.home_rpc_provider = getenv("HOME_RPC_URL")
self.foreign_rpc_provider = getenv("FOREIGN_RPC_URL")
self.home_bridge = toChecksumAddress(getenv("HOME_BRIDGE_ADDRESS"))
self.foreign_bridge = toChecksumAddress(getenv("FOREIGN_BRIDGE_ADDRESS"))
self.validator = toChecksumAddress(getenv("VALIDATOR_ADDRESS"))
return True
def _fromToml(self, _conf):
self.home_rpc_provider = _conf["home"]["rpc_host"] + ":" + str(_conf["home"]["rpc_port"])
self.foreign_rpc_provider = _conf["foreign"]["rpc_host"] + ":" + str(_conf["foreign"]["rpc_port"])
# Assuming that the validator is the same for both sides of bridge
self.validator = toChecksumAddress(_conf["foreign"]["account"])
try:
db = load(self.test_env["bridge_db"])
except:
return False
self.home_bridge = toChecksumAddress(db["home_contract_address"])
self.foreign_bridge = toChecksumAddress(db["foreign_contract_address"])
return True
def _getActorAddress(self):
try:
with open(self.test_env["actor_keystore"]) as f:
ks = jload(f)
f.close()
except:
return False
self.actor_address = toChecksumAddress("0x" + ks["address"])
return True
def initEnv(self, _environment=None):
if _environment:
f = _environment
else:
f = 'bridge/test_env_db.toml'
try:
self.test_env = load(f)
except:
return (False, "Cannot load " + f)
bridge_config_file = self.test_env['bridge_config']
if not isfile(bridge_config_file):
return (False, bridge_config_file + " not found")
config_type = None
try:
bridge_config = load(bridge_config_file)
config_type = "toml"
except:
try:
load_dotenv(bridge_config_file)
config_type = "env"
except:
return False
retval = False
if not self._getActorAddress():
return retval
if config_type == "env":
retval = self._fromEnv()
else:
retval = self._fromToml(bridge_config)
return retval
def connectionToHome(self):
self.home_channel = None
if (self.home_rpc_provider) and (not self.home_channel):
self.home_channel = connectionToRPCProvider(self.home_rpc_provider)
return self.home_channel
def connectionToForeign(self):
self.foreign_channel = None
if (self.foreign_rpc_provider) and (not self.foreign_channel):
self.foreign_channel = connectionToRPCProvider(self.foreign_rpc_provider)
return self.foreign_channel

14
erc20/utils/web3.py Normal file
View File

@ -0,0 +1,14 @@
# This module is wrapper for web3.py module
from web3 import Web3
def toChecksumAddress(_addr):
return Web3.toChecksumAddress(_addr)
def connectionToRPCProvider(_rpc_link):
ch = None
try:
ch = Web3(Web3.HTTPProvider(_rpc_link))
except e:
pass
return ch