(self)
| 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 |
no test coverage detected