From b788d4b42672711121f68897f1b765dc3cb1edaf Mon Sep 17 00:00:00 2001 From: Gene Hoffman Date: Wed, 8 Apr 2020 01:26:59 -0700 Subject: [PATCH 1/3] cli can display full blocks --- src/cmds/show.py | 60 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/src/cmds/show.py b/src/cmds/show.py index 0ae5a2c8cd..b8ea0af63b 100644 --- a/src/cmds/show.py +++ b/src/cmds/show.py @@ -10,17 +10,25 @@ from src.types.header_block import HeaderBlock from src.rpc.rpc_client import RpcClient from src.util.byte_types import hexstr_to_bytes from src.util.config import str2bool +from src.types.sized_bytes import bytes32 def show_parser(parser): parser.add_argument( - "-b", + "-bh", "--block_header_hash", help="Look up a block by block header hash string.", type=str, default="", ) + parser.add_argument( + "-b", + "--block_by_header_hash", + help="Look up a block by block header hash string.", + type=str, + default="", + ) parser.add_argument( "-s", "--state", @@ -221,16 +229,54 @@ async def show_async(args, parser): elif result_txt == "": result_txt = f"NodeID {args.remove_connection}... not found." print(result_txt) - elif args.block_header_hash != "": - block = await client.get_block(hexstr_to_bytes(args.block_header_hash)) - # print(dir(block)) - if block is not None: + if args.block_header_hash != "": + block_header = await client.get_block(hexstr_to_bytes(args.block_header_hash)) + # print(dir(block_header)) + if block_header is not None: print("Block header:") - print(block.header) - block_time = struct_time(localtime(block.header.data.timestamp)) + print(block_header.header) + block_time = struct_time(localtime(block_header.header.data.timestamp)) print("Block time:", time.strftime("%a %b %d %Y %T %Z", block_time)) else: print("Block hash", args.block_header_hash, "not found.") + if args.block_by_header_hash != "": + block = await client.get_block(hexstr_to_bytes(args.block_by_header_hash)) + #print(dir(block.to_json_dict)) + # Would like to have a verbose flag for this + #print (block) + #print (block.proof_of_space.plot_pubkey) + if block is not None: + #print (dir(block.header.data.prev_header_hash)) + #print (dir(args.block_by_header_hash)) + #print ("ARGV:", args.block_by_header_hash,"<--") + prev_block_header_hash = hexstr_to_bytes(block.header.data.prev_header_hash) + #prev_block_header = await client.get_block(prev_block_header_hash) + block_time = struct_time(localtime(block.header.data.timestamp)) + block_time_string = time.strftime("%a %b %d %Y %T %Z", block_time) + print("Block:") + print( + f"Header Hash 0x{args.block_by_header_hash}\n" + f"Timestamp {block_time_string}\n" + f"Height {block.header.data.height}\n" + f"Weight {block.header.data.weight}\n" + f"Previous Block 0x{block.header.data.prev_header_hash}\n" + f"Cost {block.header.data.cost}\n" + f"Difficulty weight - last block's weight\n" + f"Total VDF Iterations {block.header.data.total_iters}\n" + f"Block VDF Iterations {block.proof_of_time.number_of_iterations}\n" + f"Proof of Space \'k\' Size {block.proof_of_space.size}\n" + #f"Plot Public Key 0x{block.proof_of_space.plot_pubkey}\n" + #f"Pool Public Key 0x{block.proof_of_space.pool_pubkey}\n" + f"Tx Filter Hash {(block.transactions_filter)}\n" + f"Tx Generator Hash {block.transactions_generator}\n" + f"Coinbase Amount {block.header.data.coinbase.amount/1000000000000}\n" + f"Coinbase Puzzle Hash 0x{block.header.data.coinbase.puzzle_hash}\n" + f"Fees Amount {block.header.data.fees_coin.amount/1000000000000}\n" + f"Fees Puzzle Hash 0x{block.header.data.fees_coin.puzzle_hash}\n" + f"Aggregated Signature {block.header.data.aggregated_signature}\n" + ) + else: + print("Block with header hash", args.block_by_header_hash, "not found.") except Exception as e: if isinstance(e, aiohttp.client_exceptions.ClientConnectorError): From c672f54a6b737399e9d1097e98113bafc8be406b Mon Sep 17 00:00:00 2001 From: Gene Hoffman Date: Wed, 8 Apr 2020 01:38:26 -0700 Subject: [PATCH 2/3] Everything works except pubkey display --- src/cmds/show.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cmds/show.py b/src/cmds/show.py index b8ea0af63b..76c31ad341 100644 --- a/src/cmds/show.py +++ b/src/cmds/show.py @@ -249,8 +249,8 @@ async def show_async(args, parser): #print (dir(block.header.data.prev_header_hash)) #print (dir(args.block_by_header_hash)) #print ("ARGV:", args.block_by_header_hash,"<--") - prev_block_header_hash = hexstr_to_bytes(block.header.data.prev_header_hash) - #prev_block_header = await client.get_block(prev_block_header_hash) + prev_block_header_hash = block.header.data.prev_header_hash + prev_block_header = await client.get_block(prev_block_header_hash) block_time = struct_time(localtime(block.header.data.timestamp)) block_time_string = time.strftime("%a %b %d %Y %T %Z", block_time) print("Block:") @@ -261,7 +261,7 @@ async def show_async(args, parser): f"Weight {block.header.data.weight}\n" f"Previous Block 0x{block.header.data.prev_header_hash}\n" f"Cost {block.header.data.cost}\n" - f"Difficulty weight - last block's weight\n" + f"Difficulty {block.header.data.weight-prev_block_header.header.data.weight}\n" f"Total VDF Iterations {block.header.data.total_iters}\n" f"Block VDF Iterations {block.proof_of_time.number_of_iterations}\n" f"Proof of Space \'k\' Size {block.proof_of_space.size}\n" From f28c012775b17ec1ec9b3e504bfaf3213642a9ea Mon Sep 17 00:00:00 2001 From: Gene Hoffman Date: Wed, 8 Apr 2020 01:52:22 -0700 Subject: [PATCH 3/3] Shoulda run flake8 first... --- src/cmds/show.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/cmds/show.py b/src/cmds/show.py index 76c31ad341..bb10303e2a 100644 --- a/src/cmds/show.py +++ b/src/cmds/show.py @@ -10,7 +10,6 @@ from src.types.header_block import HeaderBlock from src.rpc.rpc_client import RpcClient from src.util.byte_types import hexstr_to_bytes from src.util.config import str2bool -from src.types.sized_bytes import bytes32 def show_parser(parser): @@ -241,14 +240,8 @@ async def show_async(args, parser): print("Block hash", args.block_header_hash, "not found.") if args.block_by_header_hash != "": block = await client.get_block(hexstr_to_bytes(args.block_by_header_hash)) - #print(dir(block.to_json_dict)) # Would like to have a verbose flag for this - #print (block) - #print (block.proof_of_space.plot_pubkey) if block is not None: - #print (dir(block.header.data.prev_header_hash)) - #print (dir(args.block_by_header_hash)) - #print ("ARGV:", args.block_by_header_hash,"<--") prev_block_header_hash = block.header.data.prev_header_hash prev_block_header = await client.get_block(prev_block_header_hash) block_time = struct_time(localtime(block.header.data.timestamp)) @@ -265,8 +258,8 @@ async def show_async(args, parser): f"Total VDF Iterations {block.header.data.total_iters}\n" f"Block VDF Iterations {block.proof_of_time.number_of_iterations}\n" f"Proof of Space \'k\' Size {block.proof_of_space.size}\n" - #f"Plot Public Key 0x{block.proof_of_space.plot_pubkey}\n" - #f"Pool Public Key 0x{block.proof_of_space.pool_pubkey}\n" + # f"Plot Public Key 0x{block.proof_of_space.plot_pubkey}\n" + # f"Pool Public Key 0x{block.proof_of_space.pool_pubkey}\n" f"Tx Filter Hash {(block.transactions_filter)}\n" f"Tx Generator Hash {block.transactions_generator}\n" f"Coinbase Amount {block.header.data.coinbase.amount/1000000000000}\n"