BIP 0016 QA

From Bitcoin Wiki
Revision as of 18:49, 30 January 2012 by Gavinandresen (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 44987


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

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

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)
Run Bitcoin 0.6 on main net

Result: blocks created properly Result: blocks include /P2SH/ string in their coinbase

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)