MCPcopy Create free account
hub / github.com/ElementsProject/elements / _test_getblock

Method _test_getblock

test/functional/rpc_blockchain.py:469–551  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

467 assert_waitforheight(current_height + 1)
468
469 def _test_getblock(self):
470 node = self.nodes[0]
471 fee_per_byte = Decimal('0.00000010')
472 fee_per_kb = 1000 * fee_per_byte
473
474 self.wallet.send_self_transfer(fee_rate=fee_per_kb, from_node=node)
475 blockhash = self.generate(node, 1)[0]
476
477 def assert_fee_not_in_block(verbosity):
478 block = node.getblock(blockhash, verbosity)
479 assert 'fee' not in block['tx'][1]
480
481 def assert_fee_in_block(verbosity):
482 block = node.getblock(blockhash, verbosity)
483 tx = block['tx'][1]
484 assert 'fee' in tx
485 bitcoin = "b2e15d0d7a0c94e4e2ce0fe6e8691b9e451377f6e46e8045a86f7c4b5d4f0f23"
486 assert_equal(tx['fee'][bitcoin], tx['vsize'] * fee_per_byte)
487
488 def assert_vin_contains_prevout(verbosity):
489 block = node.getblock(blockhash, verbosity)
490 tx = block["tx"][1]
491 total_vin = Decimal("0.00000000")
492 total_vout = Decimal("0.00000000")
493 for vin in tx["vin"]:
494 assert "prevout" in vin
495 assert_equal(set(vin["prevout"].keys()), set(("value", "height", "generated", "scriptPubKey")))
496 assert_equal(vin["prevout"]["generated"], True)
497 total_vin += vin["prevout"]["value"]
498 for vout in tx["vout"]:
499 total_vout += vout["value"]
500 assert_equal(total_vin, total_vout) # ELEMENTS: FIXME explain why the fee is not included
501
502 def assert_vin_does_not_contain_prevout(verbosity):
503 block = node.getblock(blockhash, verbosity)
504 tx = block["tx"][1]
505 if isinstance(tx, str):
506 # In verbosity level 1, only the transaction hashes are written
507 pass
508 else:
509 for vin in tx["vin"]:
510 assert "prevout" not in vin
511
512 # ELEMENTS: fee outputs are explicit
513 # self.log.info("Test that getblock with verbosity 1 doesn't include fee")
514 # assert_fee_not_in_block(1)
515
516 self.log.info('Test that getblock with verbosity 2 and 3 includes expected fee')
517 assert_fee_in_block(2)
518 assert_fee_in_block(3)
519
520 self.log.info("Test that getblock with verbosity 1 and 2 does not include prevout")
521 assert_vin_does_not_contain_prevout(1)
522 assert_vin_does_not_contain_prevout(2)
523
524 self.log.info("Test that getblock with verbosity 3 includes prevout")
525 assert_vin_contains_prevout(3)
526

Callers 1

run_testMethod · 0.95

Calls 5

get_datadir_pathFunction · 0.90
assert_raises_rpc_errorFunction · 0.90
send_self_transferMethod · 0.80
infoMethod · 0.80
generateMethod · 0.45

Tested by

no test coverage detected