BIP 0013
BIP: 13 Title: Bitcoin Address 01 Author: Gavin Andresen <gavinandresen@gmail.com> Status: Pre-Draft Type: Standards Track Created: 18-10-2011
Abstract
This BIP describes a new type of Bitcoin address to support arbitrarily complex transactions.
Motivation
Enable "end-to-end" secure wallets and payments to fund escrow transactions or other complex transactions.
Specification
The new bitcoin address type is constructed in the same manner as existing bitcoin addresses:
base58-encode: [one-byte version][20-byte hash][4-byte checksum]
Version byte is 1 for a main-network address, 112 for a testnet address. The 20-byte hash is the hash of the script that will be used to redeem the coins. And the 4-byte checksum is the first four bytes of the SHA256 hash of the version and hash.
Rationale
One criticism is that bitcoin addresses should be deprecated in favor of a more user-friendly mechanism for payments, and that this will just encourage continued use of a poorly designed mechanism.
Another criticism is that bitcoin addresses are inherently insecure because there is no identity information tied to them; if you only have a bitcoin address, how can you be certain that you're paying who or what you think you're paying?
Furthermore, truncating SHA256 is not an optimal checksum; there are much better error-detecting algorithms. If we are introducing a new form of Bitcoin address, then perhaps a better algorithm should be used.
This is one piece of the simplest path to a more secure bitcoin infrastructure. It is not intended to solve all of bitcoin's usability or security issues, but to be an incremental improvement over what exists today. A future BIP or BIPs should propose more user-friendly mechanisms for making payments, or for verifying that you're sending a payment to the Free Software Foundation and not Joe Random Hacker.
Assuming that typing in bitcoin addresses manually will become increasingly rare in the future, and given that the existing checksum method for bitcoin addresses seems to work "well enough" in practice and has already been implemented multiple times, the Author believes no change to the checksum algorithm is necessary.
Backwards Compatibility
This proposal is not backwards compatible, but it fails gracefully-- if an older implementation is given one of these new bitcoin addresses, it will report the address as invalid and will refuse to create a transaction.
Reference Implementation
https://github.com/gavinandresen/bitcoin-git/tree/op_eval
See Also
The OP_EVAL BIP.