Remove dead code, logger names

This commit is contained in:
nolash
2021-08-21 09:32:46 +02:00
parent 8571447ce7
commit 397f240b6c
12 changed files with 5 additions and 311 deletions

View File

@@ -1 +0,0 @@
from .tx import EthTxExecutor

View File

@@ -1,58 +0,0 @@
# standard imports
import logging
# local imports
from crypto_dev_signer.helper import TxExecutor
from crypto_dev_signer.error import NetworkError
logg = logging.getLogger()
logging.getLogger('web3').setLevel(logging.CRITICAL)
logging.getLogger('urllib3').setLevel(logging.CRITICAL)
class EthTxExecutor(TxExecutor):
def __init__(self, w3, sender, signer, chain_id, verifier=None, block=False):
self.w3 = w3
nonce = self.w3.eth.getTransactionCount(sender, 'pending')
super(EthTxExecutor, self).__init__(sender, signer, self.translator, self.dispatcher, self.reporter, nonce, chain_id, self.fee_helper, self.fee_price_helper, verifier, block)
def fee_helper(self, tx):
estimate = self.w3.eth.estimateGas(tx)
if estimate < 21000:
estimate = 21000
logg.debug('estimate {} {}'.format(tx, estimate))
return estimate
def fee_price_helper(self):
return self.w3.eth.gasPrice
def dispatcher(self, tx):
error_object = None
try:
tx_hash = self.w3.eth.sendRawTransaction(tx)
except ValueError as e:
error_object = e.args[0]
logg.error('node could not intepret rlp {}'.format(tx))
if error_object != None:
raise NetworkError(error_object)
return tx_hash
def reporter(self, tx):
return self.w3.eth.getTransactionReceipt(tx)
def translator(self, tx):
if tx.get('feePrice') != None:
tx['gasPrice'] = tx['feePrice']
del tx['feePrice']
if tx.get('feeUnits') != None:
tx['gas'] = tx['feeUnits']
del tx['feeUnits']
return tx

View File

@@ -9,7 +9,7 @@ from hexathon import int_to_minbytes
# local imports
from crypto_dev_signer.eth.encoding import chain_id_to_v
logg = logging.getLogger().getChild(__name__)
logg = logging.getLogger(__name__)
class Signer:

View File

@@ -16,7 +16,7 @@ from crypto_dev_signer.eth.encoding import chain_id_to_v
#from crypto_dev_signer.eth.rlp import rlp_encode
import rlp
logg = logging.getLogger().getChild(__name__)
logg = logging.getLogger(__name__)
rlp_encode = rlp.encode

View File

@@ -1,29 +0,0 @@
import logging
import re
from web3 import Web3 as Web3super
from web3 import WebsocketProvider, HTTPProvider
from .middleware import PlatformMiddleware
re_websocket = re.compile('^wss?://')
re_http = re.compile('^https?://')
logg = logging.getLogger(__file__)
def create_middleware(ipcpath):
PlatformMiddleware.ipcaddr = ipcpath
return PlatformMiddleware
# overrides the original Web3 constructor
#def Web3(blockchain_provider='ws://localhost:8546', ipcpath=None):
def Web3(provider, ipcpath=None):
w3 = Web3super(provider)
if ipcpath != None:
logg.info('using signer middleware with ipc {}'.format(ipcpath))
w3.middleware_onion.add(create_middleware(ipcpath))
w3.eth.personal = w3.geth.personal
return w3

View File

@@ -1,116 +0,0 @@
# standard imports
import logging
import re
import socket
import uuid
import json
logg = logging.getLogger(__file__)
def jsonrpc_request(method, params):
uu = uuid.uuid4()
return {
"jsonrpc": "2.0",
"id": str(uu),
"method": method,
"params": params,
}
class PlatformMiddleware:
# id for the request is not available, meaning we cannot easily short-circuit
# hack workaround
id_seq = -1
re_personal = re.compile('^personal_.*')
ipcaddr = None
def __init__(self, make_request, w3):
self.w3 = w3
self.make_request = make_request
if self.ipcaddr == None:
raise AttributeError('ipcaddr not set')
# TODO: understand what format input params come in
# single entry input gives a tuple on params, wtf...
# dict input comes as [{}] and fails if not passed on as an array
@staticmethod
def _translate_params(params):
#if params.__class__.__name__ == 'tuple':
# r = []
# for p in params:
# r.append(p)
# return r
if params.__class__.__name__ == 'list' and len(params) > 0:
return params[0]
return params
# TODO: DRY
def __call__(self, method, suspect_params):
self.id_seq += 1
logg.debug('in middleware method {} params {} ipcpath {}'.format(method, suspect_params, self.ipcaddr))
if self.re_personal.match(method) != None:
params = PlatformMiddleware._translate_params(suspect_params)
# multiple providers is removed in web3.py 5.12.0
# https://github.com/ethereum/web3.py/issues/1701
# thus we need a workaround to use the same web3 instance
s = socket.socket(family=socket.AF_UNIX, type=socket.SOCK_STREAM, proto=0)
ipc_provider_workaround = s.connect(self.ipcaddr)
logg.info('redirecting method {} params {} original params {}'.format(method, params, suspect_params))
o = jsonrpc_request(method, params[0])
j = json.dumps(o)
logg.debug('send {}'.format(j))
s.send(j.encode('utf-8'))
r = s.recv(4096)
s.close()
logg.debug('got recv {}'.format(str(r)))
jr = json.loads(r)
jr['id'] = self.id_seq
#return str(json.dumps(jr))
return jr
elif method == 'eth_signTransaction':
params = PlatformMiddleware._translate_params(suspect_params)
s = socket.socket(family=socket.AF_UNIX, type=socket.SOCK_STREAM, proto=0)
ipc_provider_workaround = s.connect(self.ipcaddr)
logg.info('redirecting method {} params {} original params {}'.format(method, params, suspect_params))
o = jsonrpc_request(method, params[0])
j = json.dumps(o)
logg.debug('send {}'.format(j))
s.send(j.encode('utf-8'))
r = s.recv(4096)
s.close()
logg.debug('got recv {}'.format(str(r)))
jr = json.loads(r)
jr['id'] = self.id_seq
#return str(json.dumps(jr))
return jr
elif method == 'eth_sign':
params = PlatformMiddleware._translate_params(suspect_params)
s = socket.socket(family=socket.AF_UNIX, type=socket.SOCK_STREAM, proto=0)
ipc_provider_workaround = s.connect(self.ipcaddr)
logg.info('redirecting method {} params {} original params {}'.format(method, params, suspect_params))
o = jsonrpc_request(method, params)
j = json.dumps(o)
logg.debug('send {}'.format(j))
s.send(j.encode('utf-8'))
r = s.recv(4096)
s.close()
logg.debug('got recv {}'.format(str(r)))
jr = json.loads(r)
jr['id'] = self.id_seq
return jr
r = self.make_request(method, suspect_params)
return r