chainlib/chainlib/eth/nonce.py

38 lines
697 B
Python
Raw Normal View History

2021-02-09 09:42:46 +01:00
# third-party imports
from hexathon import (
add_0x,
strip_0x,
)
# local imports
2021-02-11 08:52:59 +01:00
from chainlib.eth.rpc import jsonrpc_template
2021-02-09 09:42:46 +01:00
def nonce(address):
o = jsonrpc_template()
o['method'] = 'eth_getTransactionCount'
o['params'].append(address)
o['params'].append('pending')
return o
class DefaultNonceOracle:
def __init__(self, address, conn):
self.address = address
self.conn = conn
2021-02-12 00:24:10 +01:00
self.nonce = self.get()
2021-02-09 09:42:46 +01:00
2021-02-12 00:24:10 +01:00
def get(self):
2021-02-09 09:42:46 +01:00
o = nonce(self.address)
r = self.conn.do(o)
n = strip_0x(r)
return int(n, 16)
2021-02-12 00:24:10 +01:00
def next(self):
n = self.nonce
self.nonce += 1
return n