net: Remove g_relay_txes #20217

pull jnewbery wants to merge 5 commits into bitcoin:master from jnewbery:2020-10-remove-grelaytxes changing 8 files +66 −47
  1. jnewbery commented at 11:19 am on October 22, 2020: member

    g_relay_txes is only required inside net_processing and is set only once at startup. Instead of having a global, move it to be a const member of PeerManager.

    This requires moving PushNodeVersion() into PeerManager, which also allows us to remove the connman argument.

  2. fanquake added the label P2P on Oct 22, 2020
  3. MarcoFalke added the label Refactoring on Oct 22, 2020
  4. in src/init.cpp:1408 in 45e81e1eb2 outdated
    1403@@ -1404,7 +1404,10 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
    1404     node.chainman = &g_chainman;
    1405     ChainstateManager& chainman = *Assert(node.chainman);
    1406 
    1407-    node.peerman.reset(new PeerManager(chainparams, *node.connman, node.banman.get(), *node.scheduler, chainman, *node.mempool));
    1408+    assert(!node.peerman);
    1409+    const bool blocks_only = args.GetBoolArg("-blocksonly", DEFAULT_BLOCKSONLY);
    


    MarcoFalke commented at 11:53 am on October 22, 2020:

    Any reason to change the name from relay_txes to blocks_only? With block-relay-only connections, I’d prefer to stick to the old name to avoid confusion.

    The purpose is to ignore incoming inv and tx messages, so another name suggestion could be ignore_incoming_tx_relay, as outgoing tx relay is unaffected.


    jnewbery commented at 12:35 pm on October 22, 2020:
    Done
  5. in src/net_processing.h:98 in 45e81e1eb2 outdated
    94@@ -94,6 +95,9 @@ class PeerManager final : public CValidationInterface, public NetEventsInterface
    95      */
    96     void Misbehaving(const NodeId pnode, const int howmuch, const std::string& message);
    97 
    98+    /** Whether this node is in blocks only mode */
    


    MarcoFalke commented at 12:15 pm on October 22, 2020:
    0    /** Whether to ignore incoming tx relay traffic */
    

    jnewbery commented at 12:35 pm on October 22, 2020:
    Done
  6. MarcoFalke commented at 12:16 pm on October 22, 2020: member

    Left some style questions. Feel free to ignore, obviously.

    Concept ACK on the change.

  7. jnewbery force-pushed on Oct 22, 2020
  8. jnewbery commented at 12:36 pm on October 22, 2020: member
    Thanks for the review @MarcoFalke. I’ve taken your suggested name change.
  9. practicalswift commented at 6:53 pm on October 22, 2020: contributor
    Concept ACK: globals going down is good!
  10. DrahtBot commented at 10:42 pm on October 22, 2020: member

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #20541 (Move special CAddress-without-nTime logic to net_processing by sipa)
    • #20228 (addrman: Make addrman a top-level component by jnewbery)
    • #19858 (Periodically make block-relay connections and sync headers by sdaftuar)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  11. fanquake commented at 2:57 am on October 23, 2020: member
    Concept ACK
  12. ervanipank88 commented at 1:22 am on October 29, 2020: none
    .
  13. DrahtBot added the label Needs rebase on Nov 4, 2020
  14. jnewbery commented at 2:51 pm on November 4, 2020: member
    Rebased
  15. jnewbery force-pushed on Nov 4, 2020
  16. DrahtBot removed the label Needs rebase on Nov 4, 2020
  17. sipa commented at 2:11 am on November 5, 2020: member
    utACK 179616f8211883739df6e06852bd976dcdd0c3c9
  18. narula commented at 11:07 pm on November 14, 2020: contributor

    code review ACK.

    I was confused about the relationship between g_relay_txes (now m_ignore_incoming_txs) and m_tx_relay. I think it’s if m_tx_relay is null, this is a blocks-only peer, and if m_ignore_incoming_txs is true, I am a blocks-only peer. Is that right? I think unifying everything under names with “blocks-only” would be clearer but is out of scope for this change.

  19. jnewbery commented at 10:08 am on November 16, 2020: member

    Yes, this has been confusing for people, which is why I think it’s important to be precise with terminology:

    • a block-relay-only connection is a type of connection to a peer where we only send and process blocks. We do not send or process transactions or addresses to/from that peer. We’ll request that the peer not send us transactions by setting relay to 0 in the version message that we send to them. We also won’t initialize the m_tx_relay data structure for that peer, since we’re not doing tx relay with them.
    • -blocksonly mode is a configuration option where we don’t process transactions from any of our peers. We’ll set relay to 0 in all of our version messages. It’s mostly used to reduce bandwidth usage for people who don’t need a mempool.

    think unifying everything under names with “blocks-only” would be clearer

    I think that’s probably less clear since it would confuse those two concepts.

  20. narula commented at 5:09 pm on November 16, 2020: contributor
    • a block-relay-only connection is a type of connection to a peer where we only send and process blocks. We do not send or process transactions or addresses to/from that peer. We’ll request that the peer not send us transactions by setting relay to 0 in the version message that we send to them. We also won’t initialize the m_tx_relay data structure for that peer, since we’re not doing tx relay with them.
    • -blocksonly mode is a configuration option where we don’t process transactions from any of our peers. We’ll set relay to 0 in all of our version messages. It’s mostly used to reduce bandwidth usage for people who don’t need a mempool.

    Hmm, these still seem like the same concept to me but I’m probably missing something; let me ask the question in a different way: What is the difference between me being a -blocksonly node and me setting all of my connections to block-relay-only (let’s hypothetically say you could)? Is it how the node addresses incoming transactions? If there is no difference, I would say they are the same concept?

  21. jnewbery commented at 5:52 pm on November 16, 2020: member

    What is the difference between me being a -blocksonly node and me setting all of my connections to block-relay-only (let’s hypothetically say you could)?

    Some differences:

    • block-relay-only isn’t a configuration option. The user has no control over how many block-relay-only connections the node makes, or to which addresses.
    • in -blocksonly mode, we still participate in address relay (we send getaddr messages to our peers, process the addr messages in response, and gossip new incoming addresses). block-relay-only connections do not participate in address relay, to preserve the privacy of those connections.
    • in -blocksonly mode, we could theoretically turn off other components, such as the fee estimator (which relies on participating in p2p transaction relay). #18766 does that.
    • block-relay-only connections are persisted across restart as ‘anchor connections’.

    There may be others.

  22. narula commented at 7:29 pm on November 16, 2020: contributor

    What is the difference between me being a -blocksonly node and me setting all of my connections to block-relay-only (let’s hypothetically say you could)?

    Some differences:

    • block-relay-only isn’t a configuration option. The user has no control over how many block-relay-only connections the node makes, or to which addresses.
    • in -blocksonly mode, we still participate in address relay (we send getaddr messages to our peers, process the addr messages in response, and gossip new incoming addresses). block-relay-only connections do not participate in address relay, to preserve the privacy of those connections.
    • in -blocksonly mode, we could theoretically turn off other components, such as the fee estimator (which relies on participating in p2p transaction relay). #18766 does that.
    • block-relay-only connections are persisted across restart as ‘anchor connections’.

    There may be others.

    Thank you, that’s very helpful! Just to wrap up, it sounds like in my thought experiment (a hypothetical node with all block-relay-only connections vs. a node with -blocksonly) the applicable differences are bullet points 2 and 4, in that the -blocksonly node would still send around and process addrs and its connections would not be persisted across restart.

    This makes sense because in -blocksonly mode a node still needs to learn about other nodes, so processing addrs is important. block-relay-only connections were never designed to be all of the connections, so it’s fine for them not to process addrs because the node can rely on the other connections to do that.

    We wouldn’t want to persist all connections across a restart (https://github.com/bitcoin/bitcoin/issues/17326#issuecomment-550521262), but because block-relay-only connections are more privacy-preserving and they are extra connections (we can rely on the other connections cycling) it’s fine for them to be persisted. And persisting them sort of helps with eclipse attacks (https://github.com/bitcoin/bitcoin/issues/17326).

    I think I’m confused because the check for block-relay-only connections in the code is sometimes to see if m_tx_relay exists, which is non-intuitive because block-relay-only also implies that addrs are not gossiped with this peer either, not just transactions, and sometimes to call IsBlockOnlyConn().

    I think the new name for !g_relay_txes, m_ignore_incoming_txs, is much clearer.

  23. jnewbery commented at 11:20 am on November 19, 2020: member

    I think I’m confused because the check for block-relay-only connections in the code is sometimes to see if m_tx_relay exists, which is non-intuitive because block-relay-only also implies that addrs are not gossiped with this peer either, not just transactions, and sometimes to call IsBlockOnlyConn().

    IsBlockOnlyConn() was added later, and I think is much clearer since it’s instantly obvious what the test is for, rather than if (m_tx_relay), which might just be defensive code to ensure that a null ptr isn’t dererenced. I’d support a PR that made changes like:

     0diff --git a/src/net_processing.cpp b/src/net_processing.cpp
     1index a69efa4fc0..3ea2c1a1f9 100644
     2--- a/src/net_processing.cpp
     3+++ b/src/net_processing.cpp
     4@@ -1657,7 +1657,7 @@ void static ProcessGetData(CNode& pfrom, Peer& peer, const CChainParams& chainpa
     5 
     6         const CInv &inv = *it++;
     7 
     8-        if (pfrom.m_tx_relay == nullptr) {
     9+        if (peer.IsBlockOnlyConn()) {
    10             // Ignore GETDATA requests for transactions from blocks-only peers.
    11             continue;
    12         }
    

    That’s out of scope for this PR.

    I think the new name for !g_relay_txes, m_ignore_incoming_txs, is much clearer.

    Great. @MarcoFalke gets credit for that!

  24. in src/net_processing.cpp:2353 in 3b81ec59d1 outdated
    2350@@ -2351,7 +2351,7 @@ void PeerManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDat
    2351 
    2352         // Be shy and don't send version until we hear
    2353         if (pfrom.IsInboundConn())
    


    MarcoFalke commented at 1:06 pm on November 19, 2020:

    style-nit in commit 3b81ec59d15c17bb1c39eeb044c113117c41071d:

    Could add {


    jnewbery commented at 6:09 pm on December 7, 2020:
    I joined the lines since the if block is one line.
  25. in src/net_processing.h:98 in 2ebb63696b outdated
    93@@ -94,6 +94,9 @@ class PeerManager final : public CValidationInterface, public NetEventsInterface
    94      */
    95     void Misbehaving(const NodeId pnode, const int howmuch, const std::string& message);
    96 
    97+    /** Whether this node ignores txs received over p2p  */
    


    MarcoFalke commented at 1:06 pm on November 19, 2020:
    style-nit in 2ebb63696b0bac6dd627551d44aa935b769d8bde: double space

    jnewbery commented at 6:11 pm on December 7, 2020:
    Fixed
  26. in src/init.cpp:1408 in 10182aaa5b outdated
    1403@@ -1404,7 +1404,8 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
    1404     node.chainman = &g_chainman;
    1405     ChainstateManager& chainman = *Assert(node.chainman);
    1406 
    1407-    node.peerman.reset(new PeerManager(chainparams, *node.connman, node.banman.get(), *node.scheduler, chainman, *node.mempool));
    1408+    assert(!node.peerman);
    1409+    node.peerman = MakeUnique<PeerManager>(chainparams, *node.connman, node.banman.get(), *node.scheduler, chainman, *node.mempool);
    


    MarcoFalke commented at 1:07 pm on November 19, 2020:
    style nit in 10182aaa5bb2521ef6836d9984806968d3f46b24: When changing this, I’d prefer to use std::make_unique, not the deprecated wrapper.

    MarcoFalke commented at 2:56 pm on December 7, 2020:
    has this been addressed?

    jnewbery commented at 6:17 pm on December 7, 2020:
    Done
  27. MarcoFalke approved
  28. MarcoFalke commented at 1:15 pm on November 19, 2020: member

    review ACK 179616f8211883739df6e06852bd976dcdd0c3c9 nice cleanup! 🚔

    Signature:

     0-----BEGIN PGP SIGNED MESSAGE-----
     1Hash: SHA512
     2
     3review ACK 179616f8211883739df6e06852bd976dcdd0c3c9 nice cleanup! 🚔
     4-----BEGIN PGP SIGNATURE-----
     5
     6iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p
     7pUhgiwv8DdUGvchEGZlcyNFDb/+qNnq3WawkfpGWNb6Ncw1UhyOpoKtyLHCU8YtX
     88KFBToEOqMSQw9vljAJx9oRYEd/ugMBJgCxpdlLMuFeOpw9q7DIxGCUxJdtte3sU
     9HQUPMduUvIb3PD6AXZC0uiTJk7S2DtZ7GhdPiVC1MK9prUZv/t17EA4o2daYFYZQ
    102kz5vsvRXk2I5oh56sk0IlXr2Wid0+m6XDLj1Nf1CKZntg1DrR7+FeF9KN+pDuu5
    11FV6hUE7Enqnv67MY8L2qDegLAxdHGhCoS6wWwZIciahEtXbUHPLexERdE7Mm38pp
    12nHyidWXW1BVpYPIu8EssHboMreNxiX2BN4kyA2YPlKwmsmQjprBil+SnYaIVAWD4
    138B5hxjH+f+DIxDliIphn3ABiLvJmXXh7GVG1XKKGdoBv5Po+YXh0UezPli6Fon49
    14gqWmaqYeRfD1gxFAdMaM0Bl1bbFUuDKarN1knvU99h87t7u4op6PcxDl52r2mb93
    15ePmRESnn
    16=hNL8
    17-----END PGP SIGNATURE-----
    

    python: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory

  29. jnewbery commented at 2:50 pm on November 19, 2020: member
    Thanks @MarcoFalke. All good suggestions. I’ll take them all if I need to rebase this.
  30. DrahtBot added the label Needs rebase on Dec 7, 2020
  31. jnewbery commented at 1:55 pm on December 7, 2020: member
    rebased
  32. jnewbery force-pushed on Dec 7, 2020
  33. in src/init.cpp:1376 in ceedf230fd outdated
    1375@@ -1376,7 +1376,7 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
    1376     // see Step 2: parameter interactions for more information about these
    


    MarcoFalke commented at 2:51 pm on December 7, 2020:
    unrelated: Not sure what this comment is trying to say. Could remove in this pull?

    jnewbery commented at 2:59 pm on December 7, 2020:
    done
  34. MarcoFalke commented at 2:56 pm on December 7, 2020: member

    re-ACK ceedf230fd only change is rebase 🏑

    Signature:

     0-----BEGIN PGP SIGNED MESSAGE-----
     1Hash: SHA512
     2
     3re-ACK ceedf230fd only change is rebase 🏑
     4-----BEGIN PGP SIGNATURE-----
     5
     6iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p
     7pUgCvAv+K3VviMunaCVXNAeZ/hZH34QUHITi3yW5mVjRux8HD/eTowDKtm+kMo/p
     8t2+ADIT+xufMOh4xBjJ/tk18daxL7IHceABiNuAP/uDUVOn+QeCYbfueVj0UBepS
     9G1mBS750Cy/frouSFD2Gn35H/8fNBtSTyAggKAveJ27cSK9h/nk2pp7xiyo+pG27
    108+KoEt//u44zMRlLKFiEkMG6O60/RtxIndpLuU0t+T3qUv8CFyJYaWVjMng8ZA5B
    112CvEI/7reaSWzyvfLakbkPdUtX6YqMixGSphq2U0AjcKShOSGF6wRnpo3bspsHXy
    12aBo8OOp/E3X74Ui8DaAEnXP7VQj6wYLZsCKAsv/f0Dn3AohEawRPkiNG/4pgArbH
    13iN746lD/VpJIABh3LdgY2FsyQ+lvf0mwol7WpNzMzIpy3qzvs8mixN+2HAuDWo02
    14/XNDqfOP2sb22+leSeiujZTm0YmkLdBfJbjSpVeLWBmEbHZ8aUY4GTewFe0CvULf
    15GcvKddFt
    16=+MY6
    17-----END PGP SIGNATURE-----
    

    Timestamp of file with hash c72658247447f9b3ea4dd216ccb2048076b4de79b559adad9feea0a1f8001eea -

  35. jnewbery force-pushed on Dec 7, 2020
  36. DrahtBot removed the label Needs rebase on Dec 7, 2020
  37. MarcoFalke commented at 3:49 pm on December 7, 2020: member

    Would be nice if the previous feedback about MakeUnique was addressed, but looks fine already.

    re-ACK 4fdca52007 🎞

    Signature:

     0-----BEGIN PGP SIGNED MESSAGE-----
     1Hash: SHA512
     2
     3re-ACK 4fdca52007 🎞
     4-----BEGIN PGP SIGNATURE-----
     5
     6iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p
     7pUjHMAv/ZPMhJbZefHl6UIHBCAxBD64CT2DiBLoPw/GmGmgxq1vBr8LIPR1RYfvB
     8tr8VcMtrqa+WaMszsEE3f+WAC86C49rbGn4r1MIEkFMiBZWn4N1nno5thhtCv9h8
     9mfnFpJUqlgeFv+5ZXh63Y0mA1PbA4B7KQ1V1hc9WXK+tTzTN06B7wKJGf9/PJWUl
    10sCWYpN5KBr4KGjlw6eJB9C141aIyUOgXzzep7waYeQqA4kUaJ6h7xk2g/1pLRA2f
    11v5Ds/DrHY5wHfdLEv82Jdpmi+GC2DZ+buiuo+CpHMli3VdclrOtPLEVkAwPJTSMu
    12UMOLzgZ9cOm0B9yCm2DtgRh1bVLJfAN3lzKpv2NObVZgW1sUQYHg1AFBJDMtj7dA
    130zssUKJWLkbwKrND5LAocCHWlu0hBoYeM2wycWNRNvTUJlO8b9tzwrh2jpFlmVBK
    14AjM40R1MbjIl3SirWjbB7a4DD0ubl9KPCYCm6eGEZryT5VuIvOAfDz7IeC6iKjrq
    15uQVHH7b8
    16=1TZV
    17-----END PGP SIGNATURE-----
    

    Timestamp of file with hash 7771d7eb2920b1e3060dc2d3e986607c8393b9886bc4213c99ec34be0994af1c -

  38. jnewbery commented at 6:17 pm on December 7, 2020: member
    @MarcoFalke addressed your review comments. Sorry for dropping them earlier.
  39. jnewbery force-pushed on Dec 7, 2020
  40. MarcoFalke commented at 6:40 pm on December 7, 2020: member

    re-ACK a21667ace8 🖱

    Signature:

     0-----BEGIN PGP SIGNED MESSAGE-----
     1Hash: SHA512
     2
     3re-ACK a21667ace8 🖱
     4-----BEGIN PGP SIGNATURE-----
     5
     6iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p
     7pUhcBAwAqm9wdxwAE32mOhS0kcpLhVxGPmTuZ3Xwxca3DJNo20MX3qzUkmfG+izj
     80it+s6TycxiPR0EXKDutg3qWxUcu0Js2pAcYnYrNAbUx91SwcT31kQ/VCSU/5MNj
     9xrrMKZLJ5nVeKSMnF76jvpc8yoQO6wJpbWCnt5w38noa9BhwDU2pvHQF9vhVA7V1
    10wZsqtr8z3gR54Ov7fQbN1DQ7eX/K8MjAjuUZvWTuEWVZPLUp5ewbm4r1iFQzskBJ
    11JhjwoIfg/dxAscOQzrXhwlt1aVHQPygQAICNw06W41jxZpVyGVsIOOd6h7nWc5O4
    12uSMF6W1HWuS12JhfCLl6W6HCRFt6/vt1pHu5sdTCpyFZPy66nTlDpbJBT7XnBh3T
    133JGJTq+h5EP/p8A4Fh3bBnWmSqTGX4b3vCTcejO6nq4Knn2BGVjy4irYirXAkR//
    14ReIsxEwclRLo0iCl9LgmOGV25MUASd1BKlGl4NknohG3LoIra7ZJeuQW6ZnoWqhZ
    15GvvZqsbN
    16=mv04
    17-----END PGP SIGNATURE-----
    

    Timestamp of file with hash 0174d24f81d7b43cdafd8412778651b9496d8a3add89e495cf7fddb037bd18f1 -

  41. DrahtBot added the label Needs rebase on Dec 9, 2020
  42. jnewbery force-pushed on Dec 9, 2020
  43. jnewbery commented at 11:37 am on December 9, 2020: member
    rebased
  44. jnewbery commented at 11:38 am on December 9, 2020: member
    At different times, this PR has had ACKs from @sipa @narula and @MarcoFalke. There have only been minor changes and rebases since those ACKs. Some reACKs at the same commit hash would be very appreciated!
  45. MarcoFalke commented at 11:50 am on December 9, 2020: member

    re-ACK 22d960b124 🥃

    Signature:

     0-----BEGIN PGP SIGNED MESSAGE-----
     1Hash: SHA512
     2
     3re-ACK 22d960b124 🥃
     4-----BEGIN PGP SIGNATURE-----
     5
     6iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p
     7pUjh9wv9GVZefOvKGq4C4k3P+5QHVrXbC5F9CYF6K/n+QKgIole9iTT5rRNT0C+o
     8WHb2Q3I3cdyo8WirtL/pBytgn3wBKu1Ap2v4Wygzb1p9+KbM/e2lcQLhGH7hfrKo
     9yt30H+V+mnAqiln7iPc9BtskrIcL/hMvgkyU01p7UguvPzKzfo+2wVNkJFialPqe
    10VrdpDO2cHbIexxD7Fjr12Q3Gdo2SRR66qo0poHNZkLZ1FRhzlRFsaixAwJTdDz9j
    11YG3qZl7QuZtEIwqlDDZSoGiplqA7zvNSxxlcEGCPHvHuPkHnv2Fc51iu+q0VduQA
    12H0hBpIVHeezSZpCAKbPz2f1dBPvRgw2H3Y5dReAuP8AFnJQmEqSmqIKMct7cqYR0
    13eUJCauczOLfaNCB6iiEP6aUXgzIv9GWcumx0LSh46JHuMUk690lj3uwMrqOFNjbv
    14WXEMx9a318Mu/nZNIkxItEJ579qhRyt7L/blV+hhUfupezceehR57UKP6oZVXJWq
    15yDQK6uHW
    16=altt
    17-----END PGP SIGNATURE-----
    

    Timestamp of file with hash 63b2a105ac69ff10887f137cd6a439977e3e14920cb1b46d6faaf934b73581b9 -

  46. DrahtBot removed the label Needs rebase on Dec 9, 2020
  47. MarcoFalke added the label Needs rebase on Dec 9, 2020
  48. MarcoFalke commented at 2:39 pm on December 9, 2020: member
    needs rebase :dagger:
  49. [net processing] Move PushNodeVersion into PeerManager 5805b8299f
  50. [net processing] Add IgnoresIncomingTxs() function to PeerManager f3f61d0eb9
  51. [init] Use MakeUnique<> to construct peerman 4d510aa055
  52. [net processing] Add m_ignores_incoming_txs to PeerManager and use internally 68334b3944
  53. Remove g_relay_txes
    Also remove vestigial commend in init.cpp
    34e33ab859
  54. jnewbery force-pushed on Dec 9, 2020
  55. jnewbery commented at 6:23 pm on December 9, 2020: member
    rebased
  56. narula commented at 7:00 pm on December 9, 2020: contributor
    utACK 34e33ab8592d757b3acfe812c20d235029bbc319
  57. DrahtBot removed the label Needs rebase on Dec 9, 2020
  58. MarcoFalke commented at 6:28 am on December 10, 2020: member

    re-ACK 34e33ab85 💐

    Signature:

     0-----BEGIN PGP SIGNED MESSAGE-----
     1Hash: SHA512
     2
     3re-ACK 34e33ab85 💐
     4-----BEGIN PGP SIGNATURE-----
     5
     6iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p
     7pUjrNwwAhgjzJwknztCmt65CG19czsI/ftTRBzjJQ2dkkxI/DpPNtVRdzMyiDX7C
     8kG7nZI+4PS2/DmzD46EwllFvndY3vLqVuGvr4I7/JIwAA49caGSABfY+5dW95BNp
     9sc3N0/w8TpM/HEsW71xoz2ebRMG7tV0WoY4rYuQm3ynQltQ51uk+DYB997QKqI4/
    10WRPyK0tXb0rG8nLj3zUBHBB4V1+4Qsjn22KS1O0MhSJh8/zrmooHcL4d1Z+GC3At
    11BkcyzLRWbAq5uVnqHgJyQcZsakWR/fUAx4LMjw4D4n7WV/ja2BOL3NlCtMKarqvO
    1288Ts9JcuI03rDfagB1K7JzpoSVDwpzP2E/7eE7fyB3Bo8mzNZ9OrwyoHDu957ydp
    13rUvZj7jzyg4LBFxwxvVEf0AvGCID4rYMDxdqjYNs5dLKee2UaqNaB6VY76lrj7fJ
    14szECMByBUJmqj0uZJNGVlzd3KcrfySW9KRAT+EoRPDSByehI6hfJtzJS/phOQ1Je
    15ngdR9Lq0
    16=kxdj
    17-----END PGP SIGNATURE-----
    

    Timestamp of file with hash 50413236396d5df336002d2266fca66543a43dc9ee2cb2ba69a71db2cca5df6a -

  59. MarcoFalke merged this on Dec 10, 2020
  60. MarcoFalke closed this on Dec 10, 2020

  61. jnewbery deleted the branch on Dec 10, 2020
  62. sidhujag referenced this in commit 91c8703918 on Dec 10, 2020
  63. Fabcien referenced this in commit 042e6fa41e on Jan 25, 2022
  64. DrahtBot locked this on Feb 15, 2022

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: 2024-07-01 13:12 UTC

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