Add allowance handler

This commit is contained in:
nolash 2021-06-29 08:28:42 +02:00
parent 560e8d7bb1
commit 055710763e
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
2 changed files with 25 additions and 1 deletions

View File

@ -115,6 +115,25 @@ class ERC20(TxFactory):
return o
def allowance(self, contract_address, holder_address, spender_address, sender_address=ZERO_ADDRESS, id_generator=None):
j = JSONRPCRequest(id_generator)
o = j.template()
o['method'] = 'eth_call'
enc = ABIContractEncoder()
enc.method('allowance')
enc.typ(ABIContractType.ADDRESS)
enc.typ(ABIContractType.ADDRESS)
enc.address(holder_address)
enc.address(spender_address)
data = add_0x(enc.get())
tx = self.template(sender_address, contract_address)
tx = self.set_code(tx, data)
o['params'].append(self.normalize(tx))
o['params'].append('latest')
o = j.finalize(o)
return o
def transfer(self, contract_address, sender_address, recipient_address, value, tx_format=TxFormat.JSONRPC, id_generator=None):
enc = ABIContractEncoder()
enc.method('transfer')
@ -184,6 +203,11 @@ class ERC20(TxFactory):
return abi_decode_single(ABIContractType.UINT256, v)
@classmethod
def parse_allowance(self, v):
return abi_decode_single(ABIContractType.UINT256, v)
@classmethod
def parse_transfer_request(self, v):
v = strip_0x(v)

View File

@ -1,6 +1,6 @@
[metadata]
name = eth-erc20
version = 0.0.10a1
version = 0.0.10a2
description = ERC20 interface and simple contract with deployment script that lets any address mint and gift itself tokens.
author = Louis Holbrook
author_email = dev@holbrook.no