import asyncio
from test_framework.environment import on_bch, on_nex
from test_framework.util import assert_equal
from test_framework.electrumutil import (
ElectrumTestFramework,
)
from test_framework.serialize import from_hex
from test_framework import bch, nex
from test_framework.electrumconnection import ElectrumConnection
class BlockchainHeadersTip(ElectrumTestFramework):
async def run_test(self):
n = self.nodes[0]
await self.bootstrap_p2p()
cli = ElectrumConnection()
await cli.connect()
await self.mine_blocks(cli, n, num_blocks=1)
tip_hash = n.getbestblockhash()
tip_height = n.getblockcount()
tip = await cli.call("blockchain.headers.tip")
assert_equal(tip_height, tip["height"])
if on_bch():
header = from_hex(bch.nodemessages.CBlockHeader(), tip["hex"])
elif on_nex():
header = from_hex(nex.nodemessages.CBlockHeader(), tip["hex"])
else:
raise NotImplementedError()
assert_equal(tip_hash, header.gethash("hex"))
cli.disconnect()
if __name__ == "__main__":
asyncio.run(BlockchainHeadersTip().main())