This page is a Quality Assurance test plan for BIP 16. If you see a test missing, please add it. If you can help test, please edit this page to sign-off on it.
Done | Test Procedure | Tested by |
---|---|---|
✓ |
Run BIP-16-capable Bitcoin 0.6 on testnet and main net Send coins using GUI, RCP sendtoaddress, and RCP sendmany commands Result: coins sent in all cases | Gavin Andresen |
✓ |
Test multisig 1-of-1 Run 0.6 bitcoind, get a public key with: ./bitcoind -testnet validateaddress $(./bitcoind -testnet getnewaddress) Generate a multisig 1-of-1 address: ./bitcoind addmultisigaddress 1 {public key from above} Send-to-self some bitcoins using that address Result: transaction is confirmed by network, displays properly in listtransactions. Result: balance is unaffected | Gavin Andresen; see transactions in testnet block 44989 |
✓ |
Test multisig 1-of-2 Run 0.6 bitcoind, get 2 new bitcoin addresses Generate a multisig 1-of-2 address: ./bitcoind addmultisigaddress 1 {address1} {address2} Send-to-self some bitcoins using that address Result: transaction is confirmed by network, displays properly in listtransactions. Result: bitcoin balance is unaffected. | Gavin Andresen; see transactions in testnet block 44989 |
✓ |
Test multisig 1-of-3, 2-of-3, 3-of-3 Repeat test procedures above, with the other new multisignature transaction types | Gavin Andresen; see transactions in testnet block 44989 |
✓ |
Test multisig send-to-other Repeat test procedures above, but use two bitcoinds, prepared as follows: bitcoind 1 : Run getnewaddress and addmultisigaddress bitcoind 2 : Just addmultisigaddress Send coins from 2 to 1 using the address Result: transaction is accepted/confirmed by network Result: balance for 2 goes down, listtransactions for 2 displays correct result Result: balance for 1 goes up, listtransactions for 1 displays correct result | Gavin Andresen; see transactions in testnet block 44989 |
✓ |
Test redeeming multisignature transactions Fund a new, empty wallet entirely with multisig transactions Wait for transactions to confirm Use sendtoaddress and sendmany to generate spend-from-multisig transactions Spend to both single-address and multisig address, and test send-to-other and send-to-self Result: transactions are accepted/confirmed by network Result: balance decreases, listtransactions displays correct information | Gavin Andresen; see transactions in testnet block 44989 |
✓ |
Run 0.6 Bitcoin-Qt GUI on one of the test wallets from above Result: balance and transactions displayed correctly | Gavin Andresen |
✓ |
Run BIP-16-capable backport Bitcoin 0.3.19 through 0.5.1 on testnet and main net Send coins using GUI, RCP sendtoaddress, and RCP sendmany commands Result: coins sent in all cases | Gavin Andresen (tested 0.3.19, 0.3.24 and 0.5.1) |
✓ |
Run BIP-16-capable Bitcoin 0.6.0 on testnet Mine coins using built-in miner Result: blocks accepted, show up on blockexplorer.com/testnet Result: mined blocks' coinbase contains /P2SH/ string | Gavin Andresen |
✓ |
Run BIP-16-capable Bitcoin 0.6.0 on testnet Mine coins using getwork interface Result: blocks accepted, show up on blockexplorer.com/testnet Result: mined blocks' coinbase contains /P2SH/ string | Gavin Andresen |
Run BIP-16-capable Bitcoin 0.6.0 on testnet Mine coins using getmemorypool interface Result: blocks accepted, show up on blockexplorer.com/testnet Result: mined blocks' coinbase contains /P2SH/ string | Gregory Maxwell; Using p2pool see testnet block 45400 (and many others, also tested on mainnet) | |
✓ |
Run BIP-16-capable Bitcoin 0.3.19 through 0.5.1 backports on testnet Mine coins using built-in miner Result: blocks accepted, show up on blockexplorer.com/testnet Result: mined blocks' coinbase contains /P2SH/ string | Gavin Andresen (tested all on a testnet-in-a-box) |
✓ |
Run BIP-16-capable Bitcoin 3.19 through 0.5.1 backports on testnet Mine coins using getwork interface Result: blocks accepted, show up on blockexplorer.com/testnet Result: mined blocks' coinbase contains /P2SH/ string | Gavin Andresen (tested all on a testnet-in-a-box) |
✓ |
Run BIP-16-capable Bitcoin 0.3.19 through 0.5.1 backports on testnet Mine coins using built-in miner Result: blocks accepted, show up on blockexplorer.com/testnet Result: mined blocks' coinbase contains /P2SH/ string | Gavin Andresen (tested all on a testnet-in-a-box) |
✓ |
Run BIP-16-capable Bitcoin 3.19 through 0.5.1 backports on testnet Mine coins using getwork interface Result: blocks accepted, show up on blockexplorer.com/testnet Result: mined blocks' coinbase contains /P2SH/ string | Gavin Andresen (tested all on a testnet-in-a-box) |
Run BIP-16-capable Bitcoin 3.19 through 0.5.1 backports on testnet Mine coins using getmemorypool interface Result: blocks accepted, show up on blockexplorer.com/testnet Result: mined blocks' coinbase contains /P2SH/ string | ||
✓ |
Create/run unit tests for: multisignature signing/verification multisignature invalid signature failure multisignature IsStandard() success/failure extraction of addresses from multisignature transactions BIP 16 IsStandard() success/failure (including failure with OP_PUSHDATA1/2/4) BIP 16 AreInputsStandard() success/failure BIP 16 compatibility with other 3 standard transaction types BIP 16 no-recursion test BIP 16 switchover date logic OP_CHECKMULTISIG counting of signature operations inside BIP 16 transactions | Gavin Andresen (see test/multisig_tests.cpp, test/script_tests.cpp, test/script_P2SH_tests.cpp, test/sigopcount_tests.cpp in the bitcoin source tree; 'make test_bitcoin' in src/ directory to compile) |
✓ | Create/run 'transaction fuzzer' to stress-test BIP 16 transactions | Gavin Andresen (https://github.com/gavinandresen/bitcoin-git/tree/fuzzer , run twice on both testnet-in-a-box and testnet with 100,000 'fuzzed' transactions each test run) Valid fuzzed transactions appeared in (for example) testnet block 44987 |
✓ |
Run Bitcoin 0.6 on main net Result: blocks created properly Result: blocks include /P2SH/ string in their coinbase | various mining pools |
✓ |
Run BIP 16 vinced_mergedmine backport on main net Result: blocks created properly Result: blocks include /P2SH/ string in their coinbase |
(Gavin for slush: after bug fixes, running with no issues) |
✓ |
Test chain-split handling on testnet-in-a-box Create two valid hash, invalid signature transactions in two blocks separated in time on a testnet-in-a-box chain Run a bitcoind to synchronize with the chain, with -paytoscripthashtime set in between the two blocks Result: first transaction/block accepted, second causes a chain split Re-run bitcoind with -paytoscripthashtime in the future Result: entire chain accepted |
Gavin Andresen: testnet-in-a-box files at: http://www.skypaint.com/bitcoin/bip16chain.tar.gz first half-valid BIP16 transaction at block 2431 (time 1328202835) second at block 2436 (time 1328204241) |