chainlib/chainlib/eth/block.py

57 lines
1.0 KiB
Python
Raw Normal View History

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)