Changeset View
Changeset View
Standalone View
Standalone View
test/functional/abc-minimaldata-activation.py
Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | |||||
# the upgrade activation time, which we artificially set far into the future | # the upgrade activation time, which we artificially set far into the future | ||||
GRAVITON_START_TIME = 2000000000 | GRAVITON_START_TIME = 2000000000 | ||||
# If we don't do this, autoreplay protection will activate before graviton and | # If we don't do this, autoreplay protection will activate before graviton and | ||||
# all our sigs will mysteriously fail. | # all our sigs will mysteriously fail. | ||||
REPLAY_PROTECTION_START_TIME = GRAVITON_START_TIME * 2 | REPLAY_PROTECTION_START_TIME = GRAVITON_START_TIME * 2 | ||||
# Both before and after the upgrade, minimal push violations are rejected as | # Both before and after the upgrade, minimal push violations in mempool are | ||||
# nonstandard. After the upgrade they are actually invalid, but we get the | # rejected with a bannable error. | ||||
# same error since MINIMALDATA is internally marked as a "standardness" flag. | MINIMALPUSH_ERROR = 'mandatory-script-verify-flag-failed (Data push larger than necessary)' | ||||
MINIMALPUSH_ERROR = 'non-mandatory-script-verify-flag (Data push larger than necessary)' | |||||
# Blocks with invalid scripts give this error: | # Blocks with invalid scripts give this error: | ||||
BADINPUTS_ERROR = 'blk-bad-inputs' | BADINPUTS_ERROR = 'blk-bad-inputs' | ||||
class SchnorrTest(BitcoinTestFramework): | class SchnorrTest(BitcoinTestFramework): | ||||
def set_test_params(self): | def set_test_params(self): | ||||
▲ Show 20 Lines • Show All 130 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
assert_raises_rpc_error(-26, MINIMALPUSH_ERROR, | assert_raises_rpc_error(-26, MINIMALPUSH_ERROR, | ||||
node.sendrawtransaction, ToHex(nonminimaltx)) | node.sendrawtransaction, ToHex(nonminimaltx)) | ||||
assert_raises_rpc_error(-26, MINIMALPUSH_ERROR, | assert_raises_rpc_error(-26, MINIMALPUSH_ERROR, | ||||
node.sendrawtransaction, ToHex(nonminimaltx_2)) | node.sendrawtransaction, ToHex(nonminimaltx_2)) | ||||
assert_raises_rpc_error(-26, MINIMALPUSH_ERROR, | assert_raises_rpc_error(-26, MINIMALPUSH_ERROR, | ||||
node.sendrawtransaction, ToHex(nonminimaltx_3)) | node.sendrawtransaction, ToHex(nonminimaltx_3)) | ||||
self.log.info( | self.log.info( | ||||
"Sending rejected transactions via net (no banning)") | "Sending rejected transactions via net (banning)") | ||||
self.check_for_no_ban_on_rejected_tx( | self.check_for_ban_on_rejected_tx( | ||||
nonminimaltx, MINIMALPUSH_ERROR) | nonminimaltx, MINIMALPUSH_ERROR) | ||||
self.check_for_no_ban_on_rejected_tx( | self.check_for_ban_on_rejected_tx( | ||||
nonminimaltx_2, MINIMALPUSH_ERROR) | nonminimaltx_2, MINIMALPUSH_ERROR) | ||||
self.check_for_no_ban_on_rejected_tx( | self.check_for_ban_on_rejected_tx( | ||||
nonminimaltx_3, MINIMALPUSH_ERROR) | nonminimaltx_3, MINIMALPUSH_ERROR) | ||||
assert_equal(node.getrawmempool(), []) | assert_equal(node.getrawmempool(), []) | ||||
self.log.info("Successfully mine nonstandard transaction") | self.log.info("Successfully mine nonstandard transaction") | ||||
tip = self.build_block(tip, [nonminimaltx]) | tip = self.build_block(tip, [nonminimaltx]) | ||||
node.p2p.send_blocks_and_test([tip], node) | node.p2p.send_blocks_and_test([tip], node) | ||||
Show All 23 Lines | def run_test(self): | ||||
self.log.info( | self.log.info( | ||||
"Trying to mine a minimaldata violation, but we are just barely too late") | "Trying to mine a minimaldata violation, but we are just barely too late") | ||||
self.check_for_ban_on_rejected_block( | self.check_for_ban_on_rejected_block( | ||||
self.build_block(tip, [nonminimaltx_3]), BADINPUTS_ERROR) | self.build_block(tip, [nonminimaltx_3]), BADINPUTS_ERROR) | ||||
self.log.info( | self.log.info( | ||||
"If we try to submit it by mempool or RPC we still aren't banned") | "If we try to submit it by mempool or RPC we still aren't banned") | ||||
assert_raises_rpc_error(-26, MINIMALPUSH_ERROR, | assert_raises_rpc_error(-26, MINIMALPUSH_ERROR, | ||||
node.sendrawtransaction, ToHex(nonminimaltx_3)) | node.sendrawtransaction, ToHex(nonminimaltx_3)) | ||||
self.check_for_no_ban_on_rejected_tx( | self.check_for_ban_on_rejected_tx( | ||||
nonminimaltx_3, MINIMALPUSH_ERROR) | nonminimaltx_3, MINIMALPUSH_ERROR) | ||||
self.log.info("Mine a normal block") | self.log.info("Mine a normal block") | ||||
tip = self.build_block(tip) | tip = self.build_block(tip) | ||||
node.p2p.send_blocks_and_test([tip], node) | node.p2p.send_blocks_and_test([tip], node) | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
SchnorrTest().main() | SchnorrTest().main() |