chainlib/chainlib/eth/block.py

57 lines
1.0 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# third-party imports
from chainlib.eth.rpc import jsonrpc_template
from chainlib.eth.tx import Tx
from hexathon import (
add_0x,
strip_0x,
even,
)
def block():
o = jsonrpc_template()
o['method'] = 'eth_blockNumber'
return o
def block_by_hash(hsh):
o = jsonrpc_template()
o['method'] = 'eth_getBlockByHash'
o['params'].append(hsh)
return o
def block_by_number(n):
nhx = add_0x(even(hex(n)[2:]))
o = jsonrpc_template()
o['method'] = 'eth_getBlockByNumber'
o['params'].append(nhx)
o['params'].append(True)
return o
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)