mirror of
https://github.com/bitcoin/bips.git
synced 2024-11-19 01:40:05 +01:00
Add BIP-wtxid-relay
This commit is contained in:
parent
7e680f9f6b
commit
3c5aef89d6
58
bip-wtxid-relay.mediawiki
Normal file
58
bip-wtxid-relay.mediawiki
Normal file
@ -0,0 +1,58 @@
|
||||
<pre>
|
||||
BIP: ???
|
||||
Layer: Peer Services
|
||||
Title: WTXID-based transaction relay
|
||||
Author: Suhas Daftuar <sdaftuar@chaincode.com>
|
||||
Comments-Summary: No comments yet.
|
||||
Comments-URI:
|
||||
Status: Draft
|
||||
Type: Standards Track
|
||||
Created: 2020-02-03
|
||||
License: BSD-2-Clause
|
||||
</pre>
|
||||
|
||||
==Abstract==
|
||||
|
||||
This BIP describes two changes to the p2p protocol to support transaction relay
|
||||
based on the BIP 141 wtxid of a transaction, rather than its txid.
|
||||
|
||||
==Motivation==
|
||||
|
||||
Historically, the INV messages sent on the Bitcoin peer-to-peer network to
|
||||
announce transactions refer to transactions by their txid, which is a hash of
|
||||
the transaction that does not include the witness (see BIP 141). This has been
|
||||
the case even since Segregated Witness (BIP 141/143/144) has been adopted by
|
||||
the network.
|
||||
|
||||
Not committing to the witness in transaction announcements creates
|
||||
inefficiencies: because a transaction's witness can be malleated without
|
||||
altering the txid, a node in receipt of a witness transaction that the node
|
||||
does not accept will generally still download that same transaction when
|
||||
announced by other peers. This is because the alternative -- of not downloading
|
||||
a given txid after rejecting a transaction with that txid -- would allow a
|
||||
third party to interfere with transaction relay by malleating a transaction's
|
||||
witness and announcing the resulting invalid transaction to nodes, preventing
|
||||
relay of the valid version of the transaction as well.
|
||||
|
||||
We can eliminate this concern by using the wtxid in place of the txid when
|
||||
announcing and fetching transactions.
|
||||
|
||||
==Specification==
|
||||
|
||||
# A new wtxidrelay message is added, which is defined as an empty message where pchCommand == "wtxidrelay".
|
||||
# The protocol version of nodes implementing this BIP must be set to 70016 or higher.
|
||||
# The wtxidrelay message must be sent in response to a VERSION message from a peer whose protocol version is >= 70016, and prior to sending a VERACK.
|
||||
# A new inv type MSG_WTX (0x00000005) is added, for use in both INV messages and GETDATA requests, indicating that the hash being referenced is a transaction's wtxid. In the case of GETDATA requests, MSG_WTX implies that the transaction being requested should be serialized with witness as well, as described in BIP 144.
|
||||
# After a node has sent and received a "wtxidrelay" message to/from a given peer, the node is required to use the MSG_WTX inv-type when announcing transactions to that peer, or requesting announced transactions from that peer.
|
||||
|
||||
==Backward compatibility==
|
||||
|
||||
As wtxid-based transaction relay is only enabled between peers that both support it, older clients remain fully compatible and interoperable after this change.
|
||||
|
||||
==Implementation==
|
||||
|
||||
https://github.com/bitcoin/bitcoin/pull/18044
|
||||
|
||||
==Copyright==
|
||||
|
||||
This BIP is licensed under the 2-clause BSD license.
|
Loading…
Reference in New Issue
Block a user