chainlib

Generic blockchain access library and tooling
Log | Files | Refs | README | LICENSE

commit 9f799a980540f24741d77b3dd3fa8de8834a968c
parent 8f05913261d3e5fcb5fec9a562184e5d30087498
Author: nolash <dev@holbrook.no>
Date:   Tue, 15 Jun 2021 11:22:35 +0200

Revert "Add tx reverse re-pack"

This reverts commit b9788adb1855a21f50bbfd4ac90693aca96533fe.

Diffstat:
Mchainlib/eth/tx.py | 29++---------------------------
Mrequirements.txt | 2+-
Msetup.cfg | 2+-
Mtests/test_tx.py | 53++---------------------------------------------------
4 files changed, 6 insertions(+), 80 deletions(-)

diff --git a/chainlib/eth/tx.py b/chainlib/eth/tx.py @@ -14,7 +14,6 @@ from rlp import decode as rlp_decode from rlp import encode as rlp_encode from crypto_dev_signer.eth.transaction import EIP155Transaction from crypto_dev_signer.encoding import public_key_to_address -from crypto_dev_signer.eth.encoding import chain_id_to_v from potaahto.symbols import snake_and_camel @@ -72,25 +71,6 @@ def count_confirmed(address): return count(address, True) -def pack(tx_src, chain_spec): - if isinstance(tx_src, Tx): - tx_src = tx_src.as_dict() - tx = EIP155Transaction(tx_src, tx_src['nonce'], chain_spec.chain_id()) - - signature = bytearray(65) - cursor = 0 - for a in [ - tx_src['r'], - tx_src['s'], - ]: - for b in bytes.fromhex(strip_0x(a)): - signature[cursor] = b - cursor += 1 - signature[cursor] = tx_src['v'] - tx.apply_signature(chain_spec.chain_id(), signature, literal_v=True) - return tx.rlp_serialize() - - def unpack(tx_raw_bytes, chain_spec): chain_id = chain_spec.chain_id() tx = __unpack_raw(tx_raw_bytes, chain_id) @@ -174,11 +154,10 @@ def __unpack_raw(tx_raw_bytes, chain_id=1): 'gas': d[2], 'value': d[4], 'data': data, - 'v': v, - 'recovery_byte': vb, + 'v': chain_id, 'r': add_0x(sig[:32].hex()), 's': add_0x(sig[32:64].hex()), - 'chainId': vb, #chain_id, + 'chainId': chain_id, 'hash': add_0x(signed_hash.hex()), 'hash_unsigned': add_0x(unsigned_hash.hex()), } @@ -398,10 +377,6 @@ class Tx: return snake_and_camel(src) - def as_dict(self): - return self.src - - def apply_receipt(self, rcpt): rcpt = self.src_normalize(rcpt) logg.debug('rcpt {}'.format(rcpt)) diff --git a/requirements.txt b/requirements.txt @@ -1,4 +1,4 @@ -crypto-dev-signer~=0.4.14b5 +crypto-dev-signer~=0.4.14b3 pysha3==1.0.2 hexathon~=0.0.1a7 websocket-client==0.57.0 diff --git a/setup.cfg b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = chainlib -version = 0.0.3rc4 +version = 0.0.3rc3 description = Generic blockchain access library and tooling author = Louis Holbrook author_email = dev@holbrook.no diff --git a/tests/test_tx.py b/tests/test_tx.py @@ -1,7 +1,5 @@ # standard imports -import os -import unittest -import logging +import unittest # local imports from chainlib.eth.unittest.ethtester import EthTesterCase @@ -12,26 +10,9 @@ from chainlib.eth.gas import ( ) from chainlib.eth.tx import ( unpack, - pack, - raw, - transaction, TxFormat, - TxFactory, - Tx, ) -from chainlib.eth.contract import ( - ABIContractEncoder, - ABIContractType, - ) -from chainlib.eth.address import to_checksum_address -from hexathon import ( - strip_0x, - add_0x, - ) - -logging.basicConfig(level=logging.DEBUG) -logg = logging.getLogger() - +from hexathon import strip_0x class TxTestCase(EthTesterCase): @@ -45,35 +26,5 @@ class TxTestCase(EthTesterCase): self.assertEqual(tx['to'], self.accounts[1]) - def test_tx_pack(self): - nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc) - gas_oracle = RPCGasOracle(self.rpc) - - mock_contract = to_checksum_address(add_0x(os.urandom(20).hex())) - - f = TxFactory(self.chain_spec, signer=self.rpc) - enc = ABIContractEncoder() - enc.method('fooMethod') - enc.typ(ABIContractType.UINT256) - enc.uint256(13) - data = enc.get() - tx = f.template(self.accounts[0], mock_contract, use_nonce=True) - tx = f.set_code(tx, data) - (tx_hash, tx_signed_raw_hex) = f.finalize(tx, TxFormat.RLP_SIGNED) - logg.debug('tx result {}'.format(tx)) - o = raw(tx_signed_raw_hex) - r = self.rpc.do(o) - o = transaction(tx_hash) - tx_rpc_src = self.rpc.do(o) - logg.debug('rpc src {}'.format(tx_rpc_src)) - - tx_signed_raw_bytes = bytes.fromhex(strip_0x(tx_signed_raw_hex)) - tx_src = unpack(tx_signed_raw_bytes, self.chain_spec) - txo = Tx(tx_src) - tx_signed_raw_bytes_recovered = pack(txo, self.chain_spec) - logg.debug('o {}'.format(tx_signed_raw_bytes.hex())) - logg.debug('r {}'.format(tx_signed_raw_bytes_recovered.hex())) - self.assertEqual(tx_signed_raw_bytes, tx_signed_raw_bytes_recovered) - if __name__ == '__main__': unittest.main()