commit 397f240b6c69d86f5378cf2ee0abaaa8b2da75e6
parent 8571447ce76d2fb15f7bfce2293eab12b83eac00
Author: nolash <dev@holbrook.no>
Date: Sat, 21 Aug 2021 09:32:46 +0200
Remove dead code, logger names
Diffstat:
12 files changed, 5 insertions(+), 311 deletions(-)
diff --git a/crypto_dev_signer/eth/helper/__init__.py b/crypto_dev_signer/eth/helper/__init__.py
@@ -1 +0,0 @@
-from .tx import EthTxExecutor
diff --git a/crypto_dev_signer/eth/helper/tx.py b/crypto_dev_signer/eth/helper/tx.py
@@ -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
diff --git a/crypto_dev_signer/eth/signer/defaultsigner.py b/crypto_dev_signer/eth/signer/defaultsigner.py
@@ -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:
diff --git a/crypto_dev_signer/eth/transaction.py b/crypto_dev_signer/eth/transaction.py
@@ -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
diff --git a/crypto_dev_signer/eth/web3ext/__init__.py b/crypto_dev_signer/eth/web3ext/__init__.py
@@ -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
diff --git a/crypto_dev_signer/eth/web3ext/middleware.py b/crypto_dev_signer/eth/web3ext/middleware.py
@@ -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
diff --git a/crypto_dev_signer/helper/__init__.py b/crypto_dev_signer/helper/__init__.py
@@ -1 +0,0 @@
-from .tx import TxExecutor
diff --git a/crypto_dev_signer/helper/tx.py b/crypto_dev_signer/helper/tx.py
@@ -1,98 +0,0 @@
-# standard imports
-import logging
-import time
-
-# third-party imports
-from crypto_dev_signer.eth.transaction import EIP155Transaction
-
-# local imports
-from crypto_dev_signer.error import TransactionRevertError
-
-logg = logging.getLogger()
-
-
-class TxExecutor:
-
- def __init__(self, sender, signer, translator, dispatcher, reporter, nonce, chain_id, fee_helper=None, fee_price_helper=None, verifier=None, block=False):
- self.sender = sender
- self.translator = translator
- self.nonce = nonce
- self.signer = signer
- self.dispatcher = dispatcher
- self.reporter = reporter
- self.block = bool(block)
- self.chain_id = chain_id
- self.tx_hashes = []
- if fee_helper == None:
- fee_helper = self.noop_fee_helper
- self.fee_helper = fee_helper
- if fee_price_helper == None:
- fee_price_helper = self.noop_fee_price_helper
- self.fee_price_helper = fee_price_helper
- if verifier == None:
- verifier = self.noop_verifier
- self.verifier = verifier
-
-
- def noop_fee_helper(self, tx):
- return 1
-
-
- def noop_fee_price_helper(self):
- return 1
-
-
- def noop_verifier(self, rcpt):
- return rcpt
-
-
- def noop_translator(self, tx):
- return tx
-
-
- def sign_and_send(self, builder, force_wait=False):
-
- fee_price = self.fee_price_helper()
-
- tx_tpl = {
- 'from': self.sender,
- 'chainId': self.chain_id,
- 'feeUnits': 0, #fee_units,
- 'feePrice': fee_price,
- 'nonce': self.nonce,
- }
-
- tx = self.translator(tx_tpl)
- for b in builder:
- tx = b(tx)
-
- tx['feeUnits'] = self.fee_helper(tx)
- tx = self.translator(tx)
-
- logg.debug('from {} nonce {} tx {}'.format(self.sender, self.nonce, tx))
-
- chain_tx = EIP155Transaction(tx, self.nonce, self.chain_id)
- signature = self.signer.sign_transaction(chain_tx)
- chain_tx_serialized = chain_tx.rlp_serialize()
- tx_hash = self.dispatcher('0x' + chain_tx_serialized.hex())
- self.tx_hashes.append(tx_hash)
- self.nonce += 1
- rcpt = None
- if self.block or force_wait:
- rcpt = self.wait_for(tx_hash)
- return (tx_hash.hex(), rcpt)
-
-
- def wait_for(self, tx_hash=None):
- if tx_hash == None:
- tx_hash = self.tx_hashes[len(self.tx_hashes)-1]
- i = 1
- while True:
- try:
- #return self.w3.eth.getTransactionReceipt(tx_hash)
- return self.reporter(tx_hash)
- except Exception:
- logg.debug('poll #{} for {}'.format(i, tx_hash.hex()))
- i += 1
- time.sleep(1)
- return self.verifier(rcpt)
diff --git a/crypto_dev_signer/keystore/dict.py b/crypto_dev_signer/keystore/dict.py
@@ -13,7 +13,7 @@ from .interface import Keystore
from crypto_dev_signer.error import UnknownAccountError
from crypto_dev_signer.encoding import private_key_to_address
-logg = logging.getLogger()
+logg = logging.getLogger(__name__)
class DictKeystore(Keystore):
diff --git a/crypto_dev_signer/keystore/interface.py b/crypto_dev_signer/keystore/interface.py
@@ -34,7 +34,6 @@ class Keystore:
def import_keystore_data(self, keystore_content, password=''):
- #private_key = w3.eth.account.decrypt(keystore_content, password)
if type(keystore_content).__name__ == 'str':
keystore_content = json.loads(keystore_content)
elif type(keystore_content).__name__ == 'bytes':
@@ -45,6 +44,4 @@ class Keystore:
def import_keystore_file(self, keystore_file, password=''):
private_key = keyfile.from_file(keystore_file, password)
- #return self.import_keystore_data(keystore_content, password)
return self.import_raw_key(private_key)
- #return kes
diff --git a/crypto_dev_signer/keystore/keyfile.py b/crypto_dev_signer/keystore/keyfile.py
@@ -14,7 +14,7 @@ import sha3
# local imports
from crypto_dev_signer.encoding import private_key_to_address
-logg = logging.getLogger()
+logg = logging.getLogger(__name__)
algo_keywords = [
'aes-128-ctr',
diff --git a/crypto_dev_signer/keystore/reference.py b/crypto_dev_signer/keystore/reference.py
@@ -21,7 +21,7 @@ from .interface import Keystore
from crypto_dev_signer.error import UnknownAccountError
from crypto_dev_signer.encoding import private_key_to_address
-logg = logging.getLogger(__file__)
+logg = logging.getLogger(__name__)
def to_bytes(x):