Add missing encoding lib file
This commit is contained in:
parent
6e44b903ed
commit
b4531c22cc
20
chainlib/eth/encoding.py
Normal file
20
chainlib/eth/encoding.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
from eth_abi import (
|
||||||
|
encode_single as __encode_single,
|
||||||
|
decode_single as __decode_single,
|
||||||
|
)
|
||||||
|
|
||||||
|
def abi_encode(signature, *args):
|
||||||
|
return __encode_single(signature, *args)
|
||||||
|
|
||||||
|
|
||||||
|
def abi_encode_hex(signature, *args):
|
||||||
|
return __encode_single(signature, *args).hex()
|
||||||
|
|
||||||
|
|
||||||
|
def abi_decode(signature, *args):
|
||||||
|
return __decode_single(signature, *args)
|
||||||
|
|
||||||
|
|
||||||
|
def abi_decode_hex(signature, *args):
|
||||||
|
return __decode_single(signature, *args).hex()
|
||||||
|
|
@ -1,7 +1,6 @@
|
|||||||
# third-party imports
|
# third-party imports
|
||||||
import sha3
|
import sha3
|
||||||
from hexathon import add_0x
|
from hexathon import add_0x
|
||||||
from eth_abi import encode_single
|
|
||||||
from crypto_dev_signer.eth.transaction import EIP155Transaction
|
from crypto_dev_signer.eth.transaction import EIP155Transaction
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
@ -12,6 +11,7 @@ from chainlib.hash import (
|
|||||||
from .constant import ZERO_ADDRESS
|
from .constant import ZERO_ADDRESS
|
||||||
from .rpc import jsonrpc_template
|
from .rpc import jsonrpc_template
|
||||||
from .tx import TxFactory
|
from .tx import TxFactory
|
||||||
|
from .encoding import abi_encode
|
||||||
|
|
||||||
|
|
||||||
# TODO: move to cic-contracts
|
# TODO: move to cic-contracts
|
||||||
@ -21,14 +21,13 @@ erc20_transfer_signature = keccak256_string_to_hex('transfer(address,uint256)')[
|
|||||||
|
|
||||||
|
|
||||||
class ERC20TxFactory(TxFactory):
|
class ERC20TxFactory(TxFactory):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def erc20_balance(self, contract_address, address, sender_address=ZERO_ADDRESS):
|
def erc20_balance(self, contract_address, address, sender_address=ZERO_ADDRESS):
|
||||||
o = jsonrpc_template()
|
o = jsonrpc_template()
|
||||||
o['method'] = 'eth_call'
|
o['method'] = 'eth_call'
|
||||||
data = erc20_balance_signature
|
data = erc20_balance_signature
|
||||||
data += encode_single('address', address).hex()
|
data += abi_encode('address', address).hex()
|
||||||
data = add_0x(data)
|
data = add_0x(data)
|
||||||
tx = self.template(sender_address, contract_address)
|
tx = self.template(sender_address, contract_address)
|
||||||
tx = self.set_code(tx, data)
|
tx = self.set_code(tx, data)
|
||||||
@ -50,8 +49,8 @@ class ERC20TxFactory(TxFactory):
|
|||||||
|
|
||||||
def erc20_transfer(self, contract_address, sender_address, recipient_address, value):
|
def erc20_transfer(self, contract_address, sender_address, recipient_address, value):
|
||||||
data = erc20_transfer_signature
|
data = erc20_transfer_signature
|
||||||
data += encode_single('address', recipient_address).hex()
|
data += abi_encode('address', recipient_address).hex()
|
||||||
data += encode_single('uint256', value).hex()
|
data += abi_encode('uint256', value).hex()
|
||||||
data = add_0x(data)
|
data = add_0x(data)
|
||||||
tx = self.template(sender_address, contract_address)
|
tx = self.template(sender_address, contract_address)
|
||||||
tx = self.set_code(tx, data)
|
tx = self.set_code(tx, data)
|
||||||
|
Loading…
Reference in New Issue
Block a user