BIP324 tracking issue #27634

issue sipa opened this issue on May 12, 2023
  1. sipa commented at 7:00 AM on May 12, 2023: member

    This issue will be updated to reflect the current state of BIP324 integration.

    PRs ready for review:

    Overall plan:

    • ElligatorSwift integration in Bitcoin Core (formerly 23432, 23561)
      • Dependency: Jacobi symbol support in libsecp256k1: bitcoin-core/secp256k1#979
      • Dependency: ElligatorSwift support in libsecp256k1: bitcoin-core/secp256k1#1129
      • Dependency: update libsecp256k1 subtree: currently part of 27479.
      • Main feature: #27479
    • Cipher suite implementation (formerly 25361):
      • Dependency: support for not wasting ChaCha20 stream bytes: #26153
      • Dependency: support for RFC8439 variant of ChaCha20: #27985
      • Dependency: support for incremental Poly1305 computation: #27993
      • Main feature: #28008
      • Follow-up: #28267
      • Follow-up: #28263
    • P2P v2 connection support (formerly 25361, 23233, 24545):
      • Dependency: P2P transport abstraction: #28165
      • Main feature: #28196
      • Follow up: #28433
      • Bugfix: #28489
      • Follow up: BIP change: #28525
      • Follow up: BIP change: #28577
      • Potential follow-up: decide how to report handshake/decoy bytes in per-message stats: #28331 (comment)
    • P2P v2 signalling/integration (formerly 24545):
      • Main feature: #28331
      • Follow up test: #28588
      • Follow up: make all functional tests compatible with v2: #28805
      • Potential follow-up: integrated connect/add/reconnect logic: #28331 (review)
      • Potential follow-up: reuse CNode objects on reconnect: #28331 (review)
      • Potential follow-up: use V2Transport for everything, dropping abstract class: #28331 (review)
      • Enable V2 by default: #29347
    • BIP324 functional tests:
      • Dependency: ElligatorSwift support in functional tests: #24005
      • Dependency: Field element support in functional tests: #26222
      • Dependency: Python cryptography #28374
      • Main feature: #24748
    • P2P_V2 service flag support in DNS seeder:
      • Main feature: sipa/bitcoin-seeder#102

    <details><summary>Older stuff:</summary>

    </details>

  2. ?
    project_v2_item_status_changed instagibbs
  3. ?
    added_to_project_v2 instagibbs
  4. fanquake pinned this on May 26, 2023
  5. achow101 referenced this in commit b4794740f8 on Jul 12, 2023
  6. sidhujag referenced this in commit 4adf185bcf on Jul 12, 2023
  7. bitcoin deleted a comment on Jul 17, 2023
  8. achow101 referenced this in commit 306157ae92 on Jul 17, 2023
  9. sidhujag referenced this in commit 177a9921d0 on Jul 19, 2023
  10. fanquake referenced this in commit b2ec0326fd on Aug 10, 2023
  11. fanquake commented at 1:17 PM on August 10, 2023: member

    Review comments from #28008 that could be incorporated into future changes:

  12. fanquake referenced this in commit 1fa6411dde on Aug 24, 2023
  13. fanquake referenced this in commit 4e1a38c6df on Sep 8, 2023
  14. Frank-GER referenced this in commit b01bfa3cae on Sep 8, 2023
  15. Frank-GER referenced this in commit 087e38b9a5 on Sep 8, 2023
  16. real-or-random commented at 10:22 AM on September 27, 2023: contributor

    @sipa Want to add an item for mentioning BIP324 in https://github.com/bitcoin/bitcoin/blob/master/doc/bips.md?

  17. sipa commented at 2:04 PM on September 27, 2023: member
  18. fanquake referenced this in commit 6f882e6f86 on Oct 3, 2023
  19. vasild commented at 9:44 AM on October 3, 2023: contributor

    Minor thing that was missed, can be included in some of the followups:

    <details> <summary>s/TransportDeserializer/Transport class/</summary>

    diff --git i/src/net.cpp w/src/net.cpp
    index 6b2ef5f43d..5b0efc16aa 100644
    --- i/src/net.cpp
    +++ w/src/net.cpp
    @@ -812,13 +812,13 @@ const uint256& V1Transport::GetMessageHash() const
     
     CNetMessage V1Transport::GetReceivedMessage(const std::chrono::microseconds time, bool& reject_message)
     {
         AssertLockNotHeld(m_recv_mutex);
         // Initialize out parameter
         reject_message = false;
    -    // decompose a single CNetMessage from the TransportDeserializer
    +    // decompose a single CNetMessage from the Transport class
         LOCK(m_recv_mutex);
         CNetMessage msg(std::move(vRecv));
     
         // store message type string, time, and sizes
         msg.m_type = hdr.GetCommand();
         msg.m_time = time;
    @@ -3724,13 +3724,13 @@ void CNode::MarkReceivedMsgsForProcessing()
     {
         AssertLockNotHeld(m_msg_process_queue_mutex);
     
         size_t nSizeAdded = 0;
         for (const auto& msg : vRecvMsg) {
             // vRecvMsg contains only completed CNetMessage
    -        // the single possible partially deserialized message are held by TransportDeserializer
    +        // the single possible partially deserialized message are held by Transport class
             nSizeAdded += msg.m_raw_message_size;
         }
     
         LOCK(m_msg_process_queue_mutex);
         m_msg_process_queue.splice(m_msg_process_queue.end(), vRecvMsg);
         m_msg_process_queue_size += nSizeAdded;
    

    </details>

  20. achow101 unpinned this on Oct 5, 2023
  21. ?
    removed_from_project_v2 achow101
  22. achow101 referenced this in commit 3c63c2f324 on Jan 31, 2024
  23. sipa commented at 6:18 PM on February 4, 2024: member

    There are a few minor follow-ups to consider still, but I believe this issue can be closed. Thanks everyone for getting us this far!

  24. sipa closed this on Feb 4, 2024

  25. PastaPastaPasta referenced this in commit ce9f878fa9 on Oct 24, 2024
  26. PastaPastaPasta referenced this in commit c35e47ed66 on Oct 24, 2024
  27. PastaPastaPasta referenced this in commit 3eba0e67a3 on Oct 24, 2024
  28. PastaPastaPasta referenced this in commit b216a402cc on Oct 24, 2024
  29. PastaPastaPasta referenced this in commit e1a02b6a58 on Oct 25, 2024
  30. bitcoin locked this on Sep 23, 2025
Linked (view graph)
#14032 Add p2p layer encryption with ECDH/ChaCha20Poly1305#14046 net: Refactor message parsing (CNetMessage), adds flexibility#14047 Add HKDF_HMAC256_L32 and method to negate a private key#14049 Enable libsecp256k1 ecdh module, add ECDH function to CKey#14050 Add chacha20/poly1305 and chacha20poly1305_AEAD from openssh#15512 Add ChaCha20 encryption option (XOR)#15519 Add Poly1305 implementation#15649 Add ChaCha20Poly1305@Bitcoin AEAD#16202 p2p: Refactor network message deserialization #16562 Refactor message transport packaging#17771 tests: Add fuzzing harness for V1TransportDeserializer (P2P transport)#18242 Add BIP324 encrypted p2p transport de-/serializer (only used in tests)#19296 tests: Add fuzzing harness for AES{CBC,}256{Encrypt,Decrypt}, poly1305_auth, CHKDF_HMAC_SHA256_L32, ChaCha20 and ChaCha20Poly1305AEAD#20962 Alter the ChaCha20Poly1305@Bitcoin AEAD to the new specification#22029 [fuzz] Improve transport deserialization fuzz test coverage#22331 crypto: Fix K1/K2 use in ChaCha20-Poly1305 AEAD#22704 fuzz: Differential fuzzing to compare Bitcoin Core's and D. J. Bernstein's implementation of ChaCha20#23233 BIP324: Add encrypted p2p transport {de}serializer#23271 crypto: Fix K1/K2 use in the comments in ChaCha20-Poly1305 AEAD#23322 [Fuzz] Poly1305 differential fuzzing against Floodyberry's implementation#23432 BIP324: CKey encode/decode to elligator-swift#23441 fuzz: Differential fuzzing for ChaCha20Forward4064-Poly1305@bitcoin cipher suite#23561 BIP324: Handshake prerequisites#23806 fuzz: follow up for #22704#23900 rpc: p2p_v2 rpc argument for addnode#24005 test: add python implementation of Elligator swift#24545 BIP324: Enable v2 P2P encrypted transport#24748 test/BIP324: functional tests for v2 P2P encryption#24946 Unroll the ChaCha20 inner loop for performance#25361 BIP324: Cipher suite#26153 Reduce wasted pseudorandom bytes in ChaCha20 + various improvements#26222 Introduce secp256k1 module with field and group classes to test framework#27479 BIP324: ElligatorSwift integrations#27985 Add support for RFC8439 variant of ChaCha20#27993 Make poly1305 support incremental computation + modernize#28008 BIP324 ciphersuite#28165 net: transport abstraction#28196 BIP324 connection support#28263 Add fuzz test for FSChaCha20Poly1305, AEADChacha20Poly1305#28267 crypto: BIP324 ciphersuite follow-up#28331 BIP324 integration#28374 test: python cryptography required for BIP 324 functional tests#28433 Follow-up to BIP324 connection support#28489 tests: fix incorrect assumption in v2transport_test#28525 net: Drop v2 garbage authentication packet#28577 net: raise V1_PREFIX_LEN from 12 to 16#28588 test: BIP324: add checks for v1 prefix matching / wrong network magic detection#28805 test: Make existing functional tests compatible with --v2transport#29347 net: enable v2transport by default

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-05-02 18:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me