summaryrefslogtreecommitdiff
path: root/bip-0339.mediawiki
diff options
context:
space:
mode:
authorLuke Dashjr <luke-jr+git@utopios.org>2020-06-25 05:19:50 +0000
committerLuke Dashjr <luke-jr+git@utopios.org>2020-06-25 05:19:50 +0000
commitb8fefbf5761d5cef6aed3f8a9a315e68c7ee06f4 (patch)
tree7bc827e80e76be7391b716dee308f80357a95344 /bip-0339.mediawiki
parent3c5aef89d66990b2e81c9bbaf1d53624c81cd6a5 (diff)
downloadbips-b8fefbf5761d5cef6aed3f8a9a315e68c7ee06f4.tar.xz
Assign BIP 339: WTXID-based transaction relay
Diffstat (limited to 'bip-0339.mediawiki')
-rw-r--r--bip-0339.mediawiki58
1 files changed, 58 insertions, 0 deletions
diff --git a/bip-0339.mediawiki b/bip-0339.mediawiki
new file mode 100644
index 0000000..1b04d38
--- /dev/null
+++ b/bip-0339.mediawiki
@@ -0,0 +1,58 @@
+<pre>
+ BIP: 339
+ Layer: Peer Services
+ Title: WTXID-based transaction relay
+ Author: Suhas Daftuar <sdaftuar@chaincode.com>
+ Comments-Summary: No comments yet.
+ Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0339
+ 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.