BIP 0016 QA

From Bitcoin Wiki
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 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)