Changeset View
Changeset View
Standalone View
Standalone View
test/functional/abc-wallet-standardness.py
Show First 20 Lines • Show All 160 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
OP_CHECKMULTISIG]), False, False, | OP_CHECKMULTISIG]), False, False, | ||||
sign_error='Data push larger than necessary') | sign_error='Data push larger than necessary') | ||||
fund_and_test_wallet( | fund_and_test_wallet( | ||||
CScript([OP_1, pubkey, b'\x01', OP_CHECKMULTISIG]), False, False, | CScript([OP_1, pubkey, b'\x01', OP_CHECKMULTISIG]), False, False, | ||||
sign_error='Data push larger than necessary') | sign_error='Data push larger than necessary') | ||||
fund_and_test_wallet( | fund_and_test_wallet( | ||||
CScript([b'\x01', pubkey, OP_1, OP_CHECKMULTISIG]), False, False, | CScript([b'\x01', pubkey, OP_1, OP_CHECKMULTISIG]), False, False, | ||||
sign_error='Data push larger than necessary') | sign_error='Data push larger than necessary') | ||||
# Note: 1-of-5 is nonstandard to fund but standard to spend. | # Note: 1-of-5 is nonstandard to fund yet is standard to spend. However, | ||||
fund_and_test_wallet( | # trying to spend it with our wallet in particular will generate | ||||
CScript([OP_1, pubkey, pubkey, pubkey, pubkey, pubkey, OP_5, OP_CHECKMULTISIG]), False, False) | # too-dense sigchecks since our wallet currently only signs with ECDSA | ||||
# (Schnorr would not have this issue). | |||||
fund_and_test_wallet( | |||||
CScript([OP_1, pubkey, pubkey, pubkey, pubkey, pubkey, | |||||
OP_5, OP_CHECKMULTISIG]), False, False, | |||||
sign_error='Input SigChecks limit exceeded') | |||||
fund_and_test_wallet( | fund_and_test_wallet( | ||||
CScript([OP_1, pubkey, pubkey, pubkey, OP_PUSHDATA1, | CScript([OP_1, pubkey, pubkey, pubkey, OP_PUSHDATA1, | ||||
pubkey, pubkey, OP_5, OP_CHECKMULTISIG]), False, False, | pubkey, pubkey, OP_5, OP_CHECKMULTISIG]), False, False, | ||||
sign_error='Data push larger than necessary') | sign_error='Data push larger than necessary') | ||||
# Dust also is nonstandard to fund but standard to spend. | # Dust also is nonstandard to fund but standard to spend. | ||||
fund_and_test_wallet( | fund_and_test_wallet( | ||||
CScript([pubkey, OP_CHECKSIG]), False, True, amount=200, nonstd_error="dust (code 64)") | CScript([pubkey, OP_CHECKSIG]), False, True, amount=200, nonstd_error="dust (code 64)") | ||||
# and we end with an empty wallet | # and we end with an empty wallet | ||||
assert_equal(std_node.getbalance(), 0) | assert_equal(std_node.getbalance(), 0) | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
WalletStandardnessTest().main() | WalletStandardnessTest().main() |