mirror of
https://github.com/bitcoin/bips.git
synced 2025-05-12 12:03:29 +00:00
Fixed conflict
Conflicts: README.mediawiki
This commit is contained in:
commit
65442116b4
@ -10,173 +10,214 @@ Those proposing changes should consider that ultimately consent may rest with th
|
|||||||
!Number
|
!Number
|
||||||
!Title
|
!Title
|
||||||
!Owner
|
!Owner
|
||||||
|
!Type
|
||||||
!Status
|
!Status
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0001.mediawiki|1]]
|
| [[bip-0001.mediawiki|1]]
|
||||||
| BIP Purpose and Guidelines
|
| BIP Purpose and Guidelines
|
||||||
| Amir Taaki
|
| Amir Taaki
|
||||||
|
| Standard
|
||||||
| Active
|
| Active
|
||||||
|-
|
|-
|
||||||
| [[bip-0010.mediawiki|10]]
|
| [[bip-0010.mediawiki|10]]
|
||||||
| Multi-Sig Transaction Distribution
|
| Multi-Sig Transaction Distribution
|
||||||
| Alan Reiner
|
| Alan Reiner
|
||||||
|
| Informational
|
||||||
| Draft
|
| Draft
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0011.mediawiki|11]]
|
| [[bip-0011.mediawiki|11]]
|
||||||
| M-of-N Standard Transactions
|
| M-of-N Standard Transactions
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #ffcfcf"
|
|- style="background-color: #ffcfcf"
|
||||||
| [[bip-0012.mediawiki|12]]
|
| [[bip-0012.mediawiki|12]]
|
||||||
| OP_EVAL
|
| OP_EVAL
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Withdrawn
|
| Withdrawn
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0013.mediawiki|13]]
|
| [[bip-0013.mediawiki|13]]
|
||||||
| Address Format for pay-to-script-hash
|
| Address Format for pay-to-script-hash
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Final
|
| Final
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0014.mediawiki|14]]
|
| [[bip-0014.mediawiki|14]]
|
||||||
| Protocol Version and User Agent
|
| Protocol Version and User Agent
|
||||||
| Amir Taaki, Patrick Strateman
|
| Amir Taaki, Patrick Strateman
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #ffcfcf"
|
|- style="background-color: #ffcfcf"
|
||||||
| [[bip-0015.mediawiki|15]]
|
| [[bip-0015.mediawiki|15]]
|
||||||
| Aliases
|
| Aliases
|
||||||
| Amir Taaki
|
| Amir Taaki
|
||||||
|
| Standard
|
||||||
| Withdrawn
|
| Withdrawn
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0016.mediawiki|16]]
|
| [[bip-0016.mediawiki|16]]
|
||||||
| Pay To Script Hash
|
| Pay To Script Hash
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #ffcfcf"
|
|- style="background-color: #ffcfcf"
|
||||||
| [[bip-0017.mediawiki|17]]
|
| [[bip-0017.mediawiki|17]]
|
||||||
| OP_CHECKHASHVERIFY (CHV)
|
| OP_CHECKHASHVERIFY (CHV)
|
||||||
| Luke Dashjr
|
| Luke Dashjr
|
||||||
| Withdrawn
|
| Withdrawn
|
||||||
|
| Draft
|
||||||
|-
|
|-
|
||||||
| [[bip-0018.mediawiki|18]]
|
| [[bip-0018.mediawiki|18]]
|
||||||
| hashScriptCheck
|
| hashScriptCheck
|
||||||
| Luke Dashjr
|
| Luke Dashjr
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|-
|
|-
|
||||||
| [[bip-0019.mediawiki|19]]
|
| [[bip-0019.mediawiki|19]]
|
||||||
| M-of-N Standard Transactions (Low SigOp)
|
| M-of-N Standard Transactions (Low SigOp)
|
||||||
| Luke Dashjr
|
| Luke Dashjr
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|- style="background-color: #ffcfcf"
|
|- style="background-color: #ffcfcf"
|
||||||
| [[bip-0020.mediawiki|20]]
|
| [[bip-0020.mediawiki|20]]
|
||||||
| URI Scheme
|
| URI Scheme
|
||||||
| Luke Dashjr
|
| Luke Dashjr
|
||||||
|
| Standard
|
||||||
| Replaced
|
| Replaced
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0021.mediawiki|21]]
|
| [[bip-0021.mediawiki|21]]
|
||||||
| URI Scheme
|
| URI Scheme
|
||||||
| Nils Schneider, Matt Corallo
|
| Nils Schneider, Matt Corallo
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0022.mediawiki|22]]
|
| [[bip-0022.mediawiki|22]]
|
||||||
| getblocktemplate - Fundamentals
|
| getblocktemplate - Fundamentals
|
||||||
| Luke Dashjr
|
| Luke Dashjr
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0023.mediawiki|23]]
|
| [[bip-0023.mediawiki|23]]
|
||||||
| getblocktemplate - Pooled Mining
|
| getblocktemplate - Pooled Mining
|
||||||
| Luke Dashjr
|
| Luke Dashjr
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0030.mediawiki|30]]
|
| [[bip-0030.mediawiki|30]]
|
||||||
| Duplicate transactions
|
| Duplicate transactions
|
||||||
| Pieter Wuille
|
| Pieter Wuille
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0031.mediawiki|31]]
|
| [[bip-0031.mediawiki|31]]
|
||||||
| Pong message
|
| Pong message
|
||||||
| Mike Hearn
|
| Mike Hearn
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0032.mediawiki|32]]
|
| [[bip-0032.mediawiki|32]]
|
||||||
| Hierarchical Deterministic Wallets
|
| Hierarchical Deterministic Wallets
|
||||||
| Pieter Wuille
|
| Pieter Wuille
|
||||||
|
| Informational
|
||||||
| Accepted
|
| Accepted
|
||||||
|-
|
|-
|
||||||
| [[bip-0033.mediawiki|33]]
|
| [[bip-0033.mediawiki|33]]
|
||||||
| Stratized Nodes
|
| Stratized Nodes
|
||||||
| Amir Taaki
|
| Amir Taaki
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0034.mediawiki|34]]
|
| [[bip-0034.mediawiki|34]]
|
||||||
| Block v2, Height in coinbase
|
| Block v2, Height in coinbase
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0035.mediawiki|35]]
|
| [[bip-0035.mediawiki|35]]
|
||||||
| mempool message
|
| mempool message
|
||||||
| Jeff Garzik
|
| Jeff Garzik
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|-
|
|-
|
||||||
| [[bip-0036.mediawiki|36]]
|
| [[bip-0036.mediawiki|36]]
|
||||||
| Custom Services
|
| Custom Services
|
||||||
| Stefan Thomas
|
| Stefan Thomas
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|- style="background-color: #cfffcf"
|
|- style="background-color: #cfffcf"
|
||||||
| [[bip-0037.mediawiki|37]]
|
| [[bip-0037.mediawiki|37]]
|
||||||
| Bloom filtering
|
| Bloom filtering
|
||||||
| Mike Hearn and Matt Corallo
|
| Mike Hearn and Matt Corallo
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|-
|
|-
|
||||||
| [[bip-0038.mediawiki|38]]
|
| [[bip-0038.mediawiki|38]]
|
||||||
| Passphrase-protected private key
|
| Passphrase-protected private key
|
||||||
| Mike Caldwell
|
| Mike Caldwell
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|-
|
|-
|
||||||
| [[bip-0039.mediawiki|39]]
|
| [[bip-0039.mediawiki|39]]
|
||||||
| Mnemonic code for generating deterministic keys
|
| Mnemonic code for generating deterministic keys
|
||||||
| Slush
|
| Slush
|
||||||
|
| Standard
|
||||||
| Accepted
|
| Accepted
|
||||||
|
| Draft
|
||||||
|-
|
|-
|
||||||
| 40
|
| 40
|
||||||
| Stratum wire protocol
|
| Stratum wire protocol
|
||||||
| Slush
|
| Slush
|
||||||
|
| Standard
|
||||||
| BIP number allocated
|
| BIP number allocated
|
||||||
|-
|
|-
|
||||||
| 41
|
| 41
|
||||||
| Stratum mining protocol
|
| Stratum mining protocol
|
||||||
| Slush
|
| Slush
|
||||||
|
| Standard
|
||||||
| BIP number allocated
|
| BIP number allocated
|
||||||
<!-- 42-49 reserved for stratum extensions -->
|
<!-- 42-49 reserved for stratum extensions -->
|
||||||
|-
|
|-
|
||||||
| [[bip-0050.mediawiki|50]]
|
| [[bip-0050.mediawiki|50]]
|
||||||
| March 2013 Chain Fork Post-Mortem
|
| March 2013 Chain Fork Post-Mortem
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Informational
|
||||||
| Draft
|
| Draft
|
||||||
<!-- 50 series reserved for a group of post-mortems -->
|
<!-- 50 series reserved for a group of post-mortems -->
|
||||||
|-
|
|-
|
||||||
| [[bip-0060.mediawiki|60]]
|
| [[bip-0060.mediawiki|60]]
|
||||||
| Fixed Length "version" Message (Relay-Transactions Field)
|
| Fixed Length "version" Message (Relay-Transactions Field)
|
||||||
| Amir Taaki
|
| Amir Taaki
|
||||||
|
| Standard
|
||||||
|
| Draft
|
||||||
|
|-
|
||||||
|
| [[bip-0061.mediawiki|61]]
|
||||||
|
| "reject" P2P message
|
||||||
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|-
|
|-
|
||||||
| [[bip-0070.mediawiki|70]]
|
| [[bip-0070.mediawiki|70]]
|
||||||
| Payment protocol
|
| Payment protocol
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|-
|
|-
|
||||||
| [[bip-0071.mediawiki|71]]
|
| [[bip-0071.mediawiki|71]]
|
||||||
| Payment protocol MIME types
|
| Payment protocol MIME types
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|-
|
|-
|
||||||
| [[bip-0072.mediawiki|72]]
|
| [[bip-0072.mediawiki|72]]
|
||||||
| Payment protocol URIs
|
| Payment protocol URIs
|
||||||
| Gavin Andresen
|
| Gavin Andresen
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|-
|
|-
|
||||||
| [[bip-0073.mediawiki|73]]
|
| [[bip-0073.mediawiki|73]]
|
||||||
| Use "Accept" header with Payment Request URLs
|
| Use "Accept" header with Payment Request URLs
|
||||||
| Stephen Pair
|
| Stephen Pair
|
||||||
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|}
|
|}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ This BIP proposes the following process, with terms in quotes referring to recom
|
|||||||
# The user creating the TxDP (the preparer) will create the transaction as they would like to see it spent, but with blank TxIn scripts (where the signatures scripts will eventually go).
|
# The user creating the TxDP (the preparer) will create the transaction as they would like to see it spent, but with blank TxIn scripts (where the signatures scripts will eventually go).
|
||||||
# The proposed transaction will be spending a set of unspent TxOuts available in the blockchain. The full transactions containing these TxOuts will be serialized and included, as well. This so that the values of the TxIns can be verified before signing (the prev-tx-hash is part of the data being signed, but the value is not). By including the full tx, the signing party can verify that the tx matches the OutPoint hash, and then verify input values, all without any access to the blockchain.
|
# The proposed transaction will be spending a set of unspent TxOuts available in the blockchain. The full transactions containing these TxOuts will be serialized and included, as well. This so that the values of the TxIns can be verified before signing (the prev-tx-hash is part of the data being signed, but the value is not). By including the full tx, the signing party can verify that the tx matches the OutPoint hash, and then verify input values, all without any access to the blockchain.
|
||||||
# The TxDP will have an "DP ID" or "Unsigned ID" which is the hash of the proposed transaction with blanked scripts, in Base58. This is a specific naming convention to make sure it is not confused with the actual the transaction ID that it will have after it is broadcast (the transaction ID cannot be determined until after all signatures are collected). The final Tx ID can be referred to as its "Broadcast ID", in order to distinguish it from the pre-signed ID.
|
# The TxDP will have an "DP ID" or "Unsigned ID" which is the hash of the proposed transaction with blanked scripts, in Base58. This is a specific naming convention to make sure it is not confused with the actual the transaction ID that it will have after it is broadcast (the transaction ID cannot be determined until after all signatures are collected). The final Tx ID can be referred to as its "Broadcast ID", in order to distinguish it from the pre-signed ID.
|
||||||
# The TxDP will have an potentially-unordered list of sig-pubkey pairs which represent collected signatures. If you receive a TxDP missing only your signature, you can broadcast it as soon as you sign it.
|
# The TxDP will have a potentially-unordered list of sig-pubkey pairs which represent collected signatures. If you receive a TxDP missing only your signature, you can broadcast it as soon as you sign it.
|
||||||
# Identical TxDP objects with different signatures can be easily combined. This allows one party to send out all the requests for signatures at once, and combine them all when they are received (instead of having to "pass it around".
|
# Identical TxDP objects with different signatures can be easily combined. This allows one party to send out all the requests for signatures at once, and combine them all when they are received (instead of having to "pass it around".
|
||||||
# For cases where the TxDP might be put into a file or sent via email, it should use .txdp or .btcdp suffix
|
# For cases where the TxDP might be put into a file or sent via email, it should use .txdp or .btcdp suffix
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ The new bitcoin address type is constructed in the same manner as existing bitco
|
|||||||
|
|
||||||
Version byte is 5 for a main-network address, 196 for a testnet address.
|
Version byte is 5 for a main-network address, 196 for a testnet address.
|
||||||
The 20-byte hash is the hash of the script that will be used to redeem the coins.
|
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.
|
And the 4-byte checksum is the first four bytes of the double SHA256 hash of the version and hash.
|
||||||
|
|
||||||
==Rationale==
|
==Rationale==
|
||||||
|
|
||||||
|
@ -238,6 +238,10 @@ A C++ implementation is available at https://github.com/CodeShark/CoinClasses/tr
|
|||||||
|
|
||||||
A Ruby implementation is available at https://github.com/wink/money-tree
|
A Ruby implementation is available at https://github.com/wink/money-tree
|
||||||
|
|
||||||
|
A Go implementation is available at https://github.com/WeMeetAgain/go-hdwallet
|
||||||
|
|
||||||
|
A JavaScript implementation is available at https://github.com/sarchar/brainwallet.github.com/tree/bip32
|
||||||
|
|
||||||
==Acknowledgements==
|
==Acknowledgements==
|
||||||
|
|
||||||
* Gregory Maxwell for the original idea of type-2 deterministic wallets, and many discussions about it.
|
* Gregory Maxwell for the original idea of type-2 deterministic wallets, and many discussions about it.
|
||||||
|
@ -148,7 +148,40 @@ Obviously, nFlags == 1 or nFlags == 2 mean that the filter will get dirtier as m
|
|||||||
|
|
||||||
A ''Merkle tree'' is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the ''Merkle root''. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a ''Merkle branch'') a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.
|
A ''Merkle tree'' is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the ''Merkle root''. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a ''Merkle branch'') a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.
|
||||||
|
|
||||||
The encoding works as follows: we traverse the tree in depth-first order, storing a bit for each traversed node, signifying whether the node is the parent of at least one matched leaf txid (or a matched txid itself). In case we are at the leaf level, or this bit is 0, its merkle node hash is stored, and its children are not explored further. Otherwise, no hash is stored, but we recurse into both (or the only) child branch. During decoding, the same depth-first traversal is performed, consuming bits and hashes as they written during encoding.
|
====Constructing a partial merkle tree object====
|
||||||
|
|
||||||
|
* Traverse the merkle tree from the root down, and for each encountered node:
|
||||||
|
** Check whether this node corresponds to a leaf node (transaction) that is to be included OR any parent thereof:
|
||||||
|
*** If so, append a '1' bit to the flag bits
|
||||||
|
*** Otherwise, append a '0' bit.
|
||||||
|
** Check whether this node is a internal node (non-leaf) AND is the parent of an included leaf node:
|
||||||
|
*** If so:
|
||||||
|
**** Descend into its left child node, and process the subtree beneath it entirely (depth-first).
|
||||||
|
**** If this node has a right child node too, descend into it as well.
|
||||||
|
*** Otherwise: append this node's hash to the hash list.
|
||||||
|
|
||||||
|
====Parsing a partial merkle tree object====
|
||||||
|
|
||||||
|
As the partial block message contains the number of transactions in the entire block, the shape of the merkle tree is known before hand. Again, traverse this tree, computing traversed node's hashes along the way:
|
||||||
|
* Read a bit from the flag bit list:
|
||||||
|
** If it is '0':
|
||||||
|
*** Read a hash from the hashes list, and return it as this node's hash.
|
||||||
|
** If it is '1' and this is a leaf node:
|
||||||
|
*** Read a hash from the hashes list, store it as a matched txid, and return it as this node's hash.
|
||||||
|
** If it is '1' and this is an internal node:
|
||||||
|
*** Descend into its left child tree, and store its computed hash as L.
|
||||||
|
*** If this node has a right child as well:
|
||||||
|
**** Descend into its right child, and store its computed hash as R.
|
||||||
|
**** If L == R, the partial merkle tree object is invalid.
|
||||||
|
**** Return Hash(L || R).
|
||||||
|
*** If this node has no right child, return Hash(L || L).
|
||||||
|
|
||||||
|
The partial merkle tree object is only valid if:
|
||||||
|
* All hashes in the hash list were consumed and no more.
|
||||||
|
* All bits in the flag bits list were consumed (except padding to make it into a full byte), and no more.
|
||||||
|
* The hash computed for the root node matches the block header's merkle root.
|
||||||
|
* The block header is valid, and matches its claimed proof of work.
|
||||||
|
* In two-child nodes, the hash of the left and right branches was never equal.
|
||||||
|
|
||||||
===Bloom filter format===
|
===Bloom filter format===
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ A PaymentRequest is PaymentDetails optionally tied to a merchant's identity:
|
|||||||
|-
|
|-
|
||||||
| pki_type || public-key infrastructure (PKI) system being used to identify the merchant. All implementation should support "none", "x509+sha256" and "x509+sha1".
|
| pki_type || public-key infrastructure (PKI) system being used to identify the merchant. All implementation should support "none", "x509+sha256" and "x509+sha1".
|
||||||
|-
|
|-
|
||||||
| pki_data || PKI-system data that identifies the merchant and can be used to create a digital signature. In the case of X.509 certificates, pki_data one or more X.509 certificates (see Certificates section below).
|
| pki_data || PKI-system data that identifies the merchant and can be used to create a digital signature. In the case of X.509 certificates, pki_data contains one or more X.509 certificates (see Certificates section below).
|
||||||
|-
|
|-
|
||||||
| serialized_payment_details || A protocol-buffer serialized PaymentDetails message.
|
| serialized_payment_details || A protocol-buffer serialized PaymentDetails message.
|
||||||
|-
|
|-
|
||||||
|
Loading…
x
Reference in New Issue
Block a user