2021-02-11 10:16:05 +01:00
|
|
|
|
# third-party imports
|
2021-02-11 08:52:59 +01:00
|
|
|
|
from chainlib.eth.rpc import jsonrpc_template
|
2021-02-11 10:16:05 +01:00
|
|
|
|
from chainlib.eth.tx import Tx
|
|
|
|
|
from hexathon import (
|
|
|
|
|
add_0x,
|
|
|
|
|
strip_0x,
|
|
|
|
|
even,
|
|
|
|
|
)
|
2021-02-11 08:45:26 +01:00
|
|
|
|
|
2021-02-11 10:16:05 +01:00
|
|
|
|
def block():
|
2021-02-11 08:45:26 +01:00
|
|
|
|
o = jsonrpc_template()
|
|
|
|
|
o['method'] = 'eth_blockNumber'
|
|
|
|
|
return o
|
|
|
|
|
|
|
|
|
|
|
2021-02-11 10:16:05 +01:00
|
|
|
|
def block_by_hash(hsh):
|
2021-02-11 08:45:26 +01:00
|
|
|
|
o = jsonrpc_template()
|
2021-02-11 10:16:05 +01:00
|
|
|
|
o['method'] = 'eth_getBlockByHash'
|
2021-02-11 08:45:26 +01:00
|
|
|
|
o['params'].append(hsh)
|
|
|
|
|
return o
|
|
|
|
|
|
|
|
|
|
|
2021-02-11 10:16:05 +01:00
|
|
|
|
def block_by_number(n):
|
|
|
|
|
nhx = add_0x(even(hex(n)[2:]))
|
2021-02-11 08:45:26 +01:00
|
|
|
|
o = jsonrpc_template()
|
2021-02-11 10:16:05 +01:00
|
|
|
|
o['method'] = 'eth_getBlockByNumber'
|
|
|
|
|
o['params'].append(nhx)
|
|
|
|
|
o['params'].append(True)
|
2021-02-11 08:45:26 +01:00
|
|
|
|
return o
|
2021-02-11 10:16:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Block:
|
|
|
|
|
|
|
|
|
|
def __init__(self, src):
|
|
|
|
|
self.hash = src['hash']
|
|
|
|
|
self.number = int(strip_0x(src['number']), 16)
|
|
|
|
|
self.txs = src['transactions']
|
|
|
|
|
self.block_src = src
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def src(self):
|
|
|
|
|
return self.block_src
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def tx(self, i):
|
|
|
|
|
return Tx(self.txs[i], self)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def tx_src(self, i):
|
|
|
|
|
return self.txs[i]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
|
return 'block {} {}'.format(self.number, self.hash)
|
|
|
|
|
|
|
|
|
|
|