test: Intermittent issue in wallet_resendwallettransactions “Unable to create transaction. Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate) (-4)” #28491

issue maflcko openend this issue on September 15, 2023
  1. maflcko commented at 2:29 pm on September 15, 2023: member

    Is there an existing issue for this?

    • I have searched the existing issues

    Current behaviour

    https://github.com/bitcoin/bitcoin/actions/runs/6198134719/job/16828006466#step:28:2207

     0  node0 2023-09-15T14:01:45.132127Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\validation.cpp:1102] [Finalize] [mempool] replacing tx bda7041b708336708a9df4bb8c2b5d934439736285253d33820923aaca732b59 (wtxid=f380f631e37abd715addb85cf8a76f27f2df70e7098ba1678cab9bc1f910fb68) with 7c0c53abb2cb5ae0918e761e53bbf1f3fef2b1a1fcb9531fcdbf1642c3cbbef4 (wtxid=183c420f88d2fd222b82c5bb0e5d4aefc51312453c94753f409abad0e0c2d594) for 0.03254028 additional fees, 0 delta bytes 
     1 node0 2023-09-15T14:01:45.132212Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\validationinterface.cpp:223] [TransactionRemovedFromMempool] [validation] Enqueuing TransactionRemovedFromMempool: txid=bda7041b708336708a9df4bb8c2b5d934439736285253d33820923aaca732b59 wtxid=f380f631e37abd715addb85cf8a76f27f2df70e7098ba1678cab9bc1f910fb68 reason=replaced 
     2 node0 2023-09-15T14:01:45.132315Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\txmempool.cpp:1029] [RemoveUnbroadcastTx] [mempool] Removed bda7041b708336708a9df4bb8c2b5d934439736285253d33820923aaca732b59 from set of unbroadcast txns before confirmation that txn was sent out 
     3 node0 2023-09-15T14:01:45.132414Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\validationinterface.cpp:213] [TransactionAddedToMempool] [validation] Enqueuing TransactionAddedToMempool: txid=7c0c53abb2cb5ae0918e761e53bbf1f3fef2b1a1fcb9531fcdbf1642c3cbbef4 wtxid=183c420f88d2fd222b82c5bb0e5d4aefc51312453c94753f409abad0e0c2d594 
     4 node0 2023-09-15T14:01:45.132505Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\txmempool.cpp:660] [check] [mempool] Checking mempool with 2 transactions and 2 inputs 
     5 node0 2023-09-15T14:01:45.132776Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\wallet\sqlite.cpp:53] [TraceSqlCallback] [D:\a\_temp\test_runner_₿_🏃_20230915_132301\wallet_resendwallettransactions_69\node0\regtest\default_wallet\wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?) 
     6 node0 2023-09-15T14:01:45.133944Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\httpserver.cpp:255] [http_request_cb] [http] Received a POST request for / from 127.0.0.1:54896 
     7 node0 2023-09-15T14:01:45.134128Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\rpc\request.cpp:181] [parse] [rpc] ThreadRPCServer method=syncwithvalidationinterfacequeue user=__cookie__ 
     8 node0 2023-09-15T14:01:45.134317Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\validationinterface.cpp:223] [operator ()] [validation] TransactionRemovedFromMempool: txid=bda7041b708336708a9df4bb8c2b5d934439736285253d33820923aaca732b59 wtxid=f380f631e37abd715addb85cf8a76f27f2df70e7098ba1678cab9bc1f910fb68 reason=replaced 
     9 node0 2023-09-15T14:01:45.134416Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\validationinterface.cpp:213] [operator ()] [validation] TransactionAddedToMempool: txid=7c0c53abb2cb5ae0918e761e53bbf1f3fef2b1a1fcb9531fcdbf1642c3cbbef4 wtxid=183c420f88d2fd222b82c5bb0e5d4aefc51312453c94753f409abad0e0c2d594 
    10 node0 2023-09-15T14:01:45.136375Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\wallet\sqlite.cpp:53] [TraceSqlCallback] [D:\a\_temp\test_runner_₿_🏃_20230915_132301\wallet_resendwallettransactions_69\node0\regtest\default_wallet\wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?) 
    11 node0 2023-09-15T14:01:45.139157Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\wallet\sqlite.cpp:53] [TraceSqlCallback] [D:\a\_temp\test_runner_₿_🏃_20230915_132301\wallet_resendwallettransactions_69\node0\regtest\default_wallet\wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?) 
    12 node0 2023-09-15T14:01:45.139450Z (mocktime: 2023-09-17T02:11:43Z) [D:\a\bitcoin\bitcoin\src\wallet\wallet.h:918] [WalletLogPrintf] [default_wallet] AddToWallet 7c0c53abb2cb5ae0918e761e53bbf1f3fef2b1a1fcb9531fcdbf1642c3cbbef4 
    13 test  2023-09-15T14:01:45.140000Z TestFramework (ERROR): JSONRPC error 
    14                                   Traceback (most recent call last):
    15                                     File "D:\a\bitcoin\bitcoin\test\functional\test_framework\test_framework.py", line 131, in main
    16                                       self.run_test()
    17                                     File "D:\a\bitcoin\bitcoin/test/functional/wallet_resendwallettransactions.py", line 94, in run_test
    18                                       bumped = node.bumpfee(child_txid)
    19                                                ^^^^^^^^^^^^^^^^^^^^^^^^
    20                                     File "D:\a\bitcoin\bitcoin\test\functional\test_framework\coverage.py", line 50, in __call__
    21                                       return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
    22                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    23                                     File "D:\a\bitcoin\bitcoin\test\functional\test_framework\authproxy.py", line 129, in __call__
    24                                       raise JSONRPCException(response['error'], status)
    25                                   test_framework.authproxy.JSONRPCException: Unable to create transaction. Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate) (-4)
    

    Expected behaviour

    Steps to reproduce

    Relevant log output

    No response

    How did you obtain Bitcoin Core

    Compiled from source

    What version of Bitcoin Core are you using?

    Operating system and version

    Machine specifications

    No response

  2. maflcko renamed this:
    test:
    test: Intermittent issue in wallet_resendwallettransactions "Unable to create transaction. Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate) (-4)"
    on Sep 15, 2023
  3. furszy commented at 3:23 pm on September 15, 2023: member
    In a first glance, might be happening because we brute force the child tx position in the wallet’s map using bumpfee. So, might be the case we bumped the tx a large number of times and surpassed the wallet’s -maxtxfee.
  4. maflcko commented at 10:47 pm on September 17, 2023: member
  5. jonatack commented at 11:32 pm on September 19, 2023: member

    The same again on Win64, like the OP: https://github.com/bitcoin/bitcoin/actions/runs/6241315697/job/16943266983?pr=28136

    Unsure how to restart the job.

  6. hebasto commented at 8:41 am on September 20, 2023: member
    Another failure on 32-bit Centos: https://cirrus-ci.com/task/6154898278973440
  7. maflcko commented at 10:05 am on September 20, 2023: member

    Trivial to reproduce locally in a loop. With --tracerpc:

     02023-09-20T10:03:51.809000Z TestFramework (INFO): Bump time & check that transaction is rebroadcast
     1-26-> setmocktime [1695333831]
     2<-26- [0.000388] null
     3-27-> mockscheduler [60]
     4<-27- [0.011216] null
     5-28-> setmocktime [1695334431]
     6<-28- [0.000424] null
     72023-09-20T10:03:51.973000Z TestFramework (INFO): Chain of unconfirmed not-in-mempool txs are rebroadcast
     8-29-> send {"outputs": [{"bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx": 0.5}], "inputs": [{"txid": "8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "vout": 0}]}
     9<-29- [0.002382] {"txid": "f09dc9f779e81000049c6e11adebd024bf4d57b1d5ed3b14119e481ebedc792d", "complete": true}
    10-30-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    11<-30- [0.000508] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "f09dc9f779e81000049c6e11adebd024bf4d57b1d5ed3b14119e481ebedc792d"]}]
    12-31-> bumpfee ["f09dc9f779e81000049c6e11adebd024bf4d57b1d5ed3b14119e481ebedc792d"]
    13<-31- [0.002366] {"txid": "fcd7fbf552905bafb19e866aa66a1e436f11d436b34e305c39e809f4e3609574", "origfee": "0.00002820", "fee": "0.00004622", "errors": []}
    14-32-> syncwithvalidationinterfacequeue {}
    15<-32- [0.000458] null
    16-33-> removeprunedfunds ["f09dc9f779e81000049c6e11adebd024bf4d57b1d5ed3b14119e481ebedc792d"]
    17<-33- [0.000688] null
    18-34-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    19<-34- [0.000471] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "fcd7fbf552905bafb19e866aa66a1e436f11d436b34e305c39e809f4e3609574"]}]
    20-35-> bumpfee ["fcd7fbf552905bafb19e866aa66a1e436f11d436b34e305c39e809f4e3609574"]
    21<-35- [0.001919] {"txid": "7451647b637c06a0cf067b437a14a03a0c6f6c1ef906b871dfcd59d35101ccdc", "origfee": "0.00004622", "fee": "0.00009223", "errors": []}
    22-36-> syncwithvalidationinterfacequeue {}
    23<-36- [0.000432] null
    24-37-> removeprunedfunds ["fcd7fbf552905bafb19e866aa66a1e436f11d436b34e305c39e809f4e3609574"]
    25<-37- [0.000716] null
    26-38-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    27<-38- [0.000480] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "7451647b637c06a0cf067b437a14a03a0c6f6c1ef906b871dfcd59d35101ccdc"]}]
    28-39-> bumpfee ["7451647b637c06a0cf067b437a14a03a0c6f6c1ef906b871dfcd59d35101ccdc"]
    29<-39- [0.002381] {"txid": "9d459024ff95b745a7c0ab1ccd41aba8e17a747cbd182a309c2e26432757b478", "origfee": "0.00009223", "fee": "0.00020970", "errors": []}
    30-40-> syncwithvalidationinterfacequeue {}
    31<-40- [0.000416] null
    32-41-> removeprunedfunds ["7451647b637c06a0cf067b437a14a03a0c6f6c1ef906b871dfcd59d35101ccdc"]
    33<-41- [0.000554] null
    34-42-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    35<-42- [0.000444] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "9d459024ff95b745a7c0ab1ccd41aba8e17a747cbd182a309c2e26432757b478"]}]
    36-43-> bumpfee ["9d459024ff95b745a7c0ab1ccd41aba8e17a747cbd182a309c2e26432757b478"]
    37<-43- [0.002593] {"txid": "bc7e181e7e9768579d0c9fc8019bceb32b138bd3c173b6e602f27aafe176e650", "origfee": "0.00020970", "fee": "0.00050962", "errors": []}
    38-44-> syncwithvalidationinterfacequeue {}
    39<-44- [0.000419] null
    40-45-> removeprunedfunds ["9d459024ff95b745a7c0ab1ccd41aba8e17a747cbd182a309c2e26432757b478"]
    41<-45- [0.000618] null
    42-46-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    43<-46- [0.000479] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "bc7e181e7e9768579d0c9fc8019bceb32b138bd3c173b6e602f27aafe176e650"]}]
    44-47-> bumpfee ["bc7e181e7e9768579d0c9fc8019bceb32b138bd3c173b6e602f27aafe176e650"]
    45<-47- [0.002406] {"txid": "e3ae86d5b236c8c9f8148a45ff50077664223a044747db05124608613d179cee", "origfee": "0.00050962", "fee": "0.00127537", "errors": []}
    46-48-> syncwithvalidationinterfacequeue {}
    47<-48- [0.000510] null
    48-49-> removeprunedfunds ["bc7e181e7e9768579d0c9fc8019bceb32b138bd3c173b6e602f27aafe176e650"]
    49<-49- [0.000674] null
    50-50-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    51<-50- [0.000518] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "e3ae86d5b236c8c9f8148a45ff50077664223a044747db05124608613d179cee"]}]
    52-51-> bumpfee ["e3ae86d5b236c8c9f8148a45ff50077664223a044747db05124608613d179cee"]
    53<-51- [0.002449] {"txid": "db95aa7342acfe9eb11c8f52e4d4695a3c7ccee006848b434d6c7740bcdacbd0", "origfee": "0.00127537", "fee": "0.00323048", "errors": []}
    54-52-> syncwithvalidationinterfacequeue {}
    55<-52- [0.000462] null
    56-53-> removeprunedfunds ["e3ae86d5b236c8c9f8148a45ff50077664223a044747db05124608613d179cee"]
    57<-53- [0.000691] null
    58-54-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    59<-54- [0.000546] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "db95aa7342acfe9eb11c8f52e4d4695a3c7ccee006848b434d6c7740bcdacbd0"]}]
    60-55-> bumpfee ["db95aa7342acfe9eb11c8f52e4d4695a3c7ccee006848b434d6c7740bcdacbd0"]
    61<-55- [0.002815] {"txid": "9e563b371e9e876167318d0f2a3f6d0e01975edce51a4d1b504c2aa6e69fa219", "origfee": "0.00323048", "fee": "0.00822225", "errors": []}
    62-56-> syncwithvalidationinterfacequeue {}
    63<-56- [0.000474] null
    64-57-> removeprunedfunds ["db95aa7342acfe9eb11c8f52e4d4695a3c7ccee006848b434d6c7740bcdacbd0"]
    65<-57- [0.000619] null
    66-58-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    67<-58- [0.000483] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "9e563b371e9e876167318d0f2a3f6d0e01975edce51a4d1b504c2aa6e69fa219"]}]
    68-59-> bumpfee ["9e563b371e9e876167318d0f2a3f6d0e01975edce51a4d1b504c2aa6e69fa219"]
    69<-59- [0.002795] {"txid": "7688cc9fa75a29a7a963be67638de6e2a24504337fb97923deb97e61ec162406", "origfee": "0.00822225", "fee": "0.02096719", "errors": []}
    70-60-> syncwithvalidationinterfacequeue {}
    71<-60- [0.000446] null
    72-61-> removeprunedfunds ["9e563b371e9e876167318d0f2a3f6d0e01975edce51a4d1b504c2aa6e69fa219"]
    73<-61- [0.000646] null
    74-62-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    75<-62- [0.000566] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "7688cc9fa75a29a7a963be67638de6e2a24504337fb97923deb97e61ec162406"]}]
    76-63-> bumpfee ["7688cc9fa75a29a7a963be67638de6e2a24504337fb97923deb97e61ec162406"]
    77<-63- [0.002305] {"txid": "a52be9b19b0be56c50b3af864547dd4513114bff7dbbb108921216a9913b9b63", "origfee": "0.02096719", "fee": "0.05350747", "errors": []}
    78-64-> syncwithvalidationinterfacequeue {}
    79<-64- [0.000441] null
    80-65-> removeprunedfunds ["7688cc9fa75a29a7a963be67638de6e2a24504337fb97923deb97e61ec162406"]
    81<-65- [0.000658] null
    82-66-> listreceivedbyaddress {"minconf": 0, "address_filter": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx"}
    83<-66- [0.000535] [{"address": "bcrt1qk6mlgzqwwukcye6s3rhph0pgj4hr20wd6g86yx", "amount": "1.50000000", "confirmations": 0, "label": "", "txids": ["8ca5c4a2f0b9eac81f184a443dbaa4a6dde748575ef08b1e4e3496dcb740a7c6", "a52be9b19b0be56c50b3af864547dd4513114bff7dbbb108921216a9913b9b63"]}]
    84-67-> bumpfee ["a52be9b19b0be56c50b3af864547dd4513114bff7dbbb108921216a9913b9b63"]
    85<-- [0.000813] {"result":null,"error":{"code":-4,"message":"Unable to create transaction. Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate)"},"id":67}
    
  8. maflcko added the label Tests on Sep 20, 2023
  9. mzumsande commented at 2:58 am on September 26, 2023: contributor

    In a first glance, might be happening because we brute force the child tx position in the wallet’s map using bumpfee. So, might be the case we bumped the tx a large number of times and surpassed the wallet’s -maxtxfee.

    Looks like before 2e35e944dab09eff30952233f8dfc0b12c4553d5 we could bump the tx thousands of times without getting this error, whereas after that commit we get the error exactly after the 10th bump (you can see that the fee more than doubles in each iteration when you print the result of bumpfee). Accordingly, the intermittent failures started after #26152 was merged (fyi @murchandamus) I didn’t review that PR, so the question is if that doubling is expected, and, if so, does that mean the trick of using bumpfee / removeprunedfunds to ensure an order in mapWallet is no longer feasible?

  10. murchandamus commented at 6:40 pm on September 26, 2023: contributor

    Oh, I think I see why the fee is now growing exponentially:

    Let’s say we have a parent transaction p and a child transaction c that both start at a feerate of 1 ṩ/vB. When we replace c with c₂. The feerate of c₂ must exceed the feerate of c by at least one incremental feerate, i.e. be 1 ṩ/vB higher than that of c. However, to ensure that c₂ actually achieves a feerate of 2 ṩ/vB, we’d also add fees to bump the parent to 2 ṩ/vB. Assuming p, c, and c₂ are all the same size, c₂ now has a feerate of 3 ṩ/vB so that {p, c₂} have an effective feerate of 2 ṩ/vB.

    Now, we try to replace c₂ with c₃. To exceed the feerate of c₂ by 1 ṩ/vB, c₃ must pay 4 ṩ/vB. To bump p to 4 ṩ/vB, c₃ needs to pay 7 ṩ/vB.
    To replace c₃ with c₄, we aim for a feerate of 8 ṩ/vB, but to bump p to 8 ṩ/vB, c₄ needs to pay 15 ṩ/vB, etc.…

    While this is the behavior we would want when we create a new transaction that should achieve the given feerate or when using RBF to reprioritize the child transaction, we might not want to bump the parent to the same feerate when we only replace the latest child to update its recipients. We might need to revisit this question more generally in the context of bumpfee.

  11. murchandamus commented at 6:42 pm on September 26, 2023: contributor
    In the context of this test, would it perhaps be possible to first grind the parent transaction a bit to make it deliberately sort further back in the mempool? That might sufficiently increase the chances of the child to sort to the front with fewer attempts.
  12. achow101 commented at 7:27 pm on September 26, 2023: member

    In the context of this test, would it perhaps be possible to first grind the parent transaction a bit to make it deliberately sort further back in the mempool? That might sufficiently increase the chances of the child to sort to the front with fewer attempts.

    It’s not about mempool sorting, it’s about sorting within the wallet’s mapWallet.

    However this does seem like there may be a bug in calculating the ancestor bump fees. I don’t think it should be going up exponentially.

  13. maflcko added this to the milestone 26.0 on Sep 27, 2023
  14. achow101 referenced this in commit 9d5150ac47 on Sep 28, 2023
  15. achow101 closed this on Sep 28, 2023

  16. Frank-GER referenced this in commit 2d2d0c1e13 on Oct 5, 2023
  17. bitcoin locked this on Sep 27, 2024

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-11-21 12:12 UTC

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