Changeset View
Changeset View
Standalone View
Standalone View
test/functional/wallet_coinbase_category.py
Show All 27 Lines | def assert_category(self, category, address, txid, skip): | ||||
assert_array_result(self.nodes[0].gettransaction(txid)["details"], | assert_array_result(self.nodes[0].gettransaction(txid)["details"], | ||||
{"address": address}, | {"address": address}, | ||||
{"category": category}) | {"category": category}) | ||||
def run_test(self): | def run_test(self): | ||||
# Generate one block to an address | # Generate one block to an address | ||||
address = self.nodes[0].getnewaddress() | address = self.nodes[0].getnewaddress() | ||||
self.generatetoaddress(self.nodes[0], 1, address) | self.generatetoaddress(self.nodes[0], 1, address) | ||||
hash = self.nodes[0].getbestblockhash() | blockhash = self.nodes[0].getbestblockhash() | ||||
txid = self.nodes[0].getblock(hash)["tx"][0] | txid = self.nodes[0].getblock(blockhash)["tx"][0] | ||||
# Coinbase transaction is immature after 1 confirmation | # Coinbase transaction is immature after 1 confirmation | ||||
self.assert_category("immature", address, txid, 0) | self.assert_category("immature", address, txid, 0) | ||||
# Mine another 99 blocks on top | # Mine another 99 blocks on top | ||||
self.generate(self.nodes[0], 99) | self.generate(self.nodes[0], 99) | ||||
# Coinbase transaction is still immature after 100 confirmations | # Coinbase transaction is still immature after 100 confirmations | ||||
self.assert_category("immature", address, txid, 99) | self.assert_category("immature", address, txid, 99) | ||||
# Mine one more block | # Mine one more block | ||||
self.generate(self.nodes[0], 1) | self.generate(self.nodes[0], 1) | ||||
# Coinbase transaction is now matured, so category is "generate" | # Coinbase transaction is now matured, so category is "generate" | ||||
self.assert_category("generate", address, txid, 100) | self.assert_category("generate", address, txid, 100) | ||||
# Orphan block that paid to address | # Orphan block that paid to address | ||||
self.nodes[0].invalidateblock(hash) | self.nodes[0].invalidateblock(blockhash) | ||||
# Coinbase transaction is now orphaned | # Coinbase transaction is now orphaned | ||||
self.assert_category("orphan", address, txid, 100) | self.assert_category("orphan", address, txid, 100) | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
CoinbaseCategoryTest().main() | CoinbaseCategoryTest().main() |