{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":23979970,"defaultBranch":"master","name":"bitcoin","ownerLogin":"murchandamus","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2014-09-12T23:11:53.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/4060799?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1713388440.0","currentOid":""},"activityList":{"items":[{"before":"2c18b861278b3960e7142068f487c882e30ce851","after":"bd34dd85e7b8b4cc26d2173d84bbeda2e9c27624","ref":"refs/heads/2023-08-fix-waste-calculation","pushedAt":"2024-05-28T14:17:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Use `exact_target` shorthand in coinselector_tests","shortMessageHtmlLink":"Use exact_target shorthand in coinselector_tests"}},{"before":"620cc6e0087a5c0eb02bf7cc42750d6363b7acdd","after":"2c18b861278b3960e7142068f487c882e30ce851","ref":"refs/heads/2023-08-fix-waste-calculation","pushedAt":"2024-05-24T18:54:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Use `exact_target` shorthand in coinselector_tests","shortMessageHtmlLink":"Use exact_target shorthand in coinselector_tests"}},{"before":"e95b9159380f2de7f9a6e7a202cc171ad285ee6c","after":"620cc6e0087a5c0eb02bf7cc42750d6363b7acdd","ref":"refs/heads/2023-08-fix-waste-calculation","pushedAt":"2024-05-24T18:48:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Use `exact_target` shorthand in coinselector_tests","shortMessageHtmlLink":"Use exact_target shorthand in coinselector_tests"}},{"before":"9a822ef4ceda6b436186b59323a14b51a15c225e","after":"2e00ea9d5155d70b2983665d82e9249f0fdd1717","ref":"refs/heads/2024-02-sand-compactor","pushedAt":"2024-04-19T20:24:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Supercharge SandCompactor","shortMessageHtmlLink":"Supercharge SandCompactor"}},{"before":null,"after":"b96ee276651bd080d4a9a8a51b6666a78bb39fa1","ref":"refs/heads/LargestFirst","pushedAt":"2024-04-17T21:14:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Remove calls to other Coin Selection algorithms","shortMessageHtmlLink":"Remove calls to other Coin Selection algorithms"}},{"before":null,"after":"9a822ef4ceda6b436186b59323a14b51a15c225e","ref":"refs/heads/2024-02-sand-compactor","pushedAt":"2024-04-08T15:09:47.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Add minimal SandCompactor tests","shortMessageHtmlLink":"Add minimal SandCompactor tests"}},{"before":"5aed48a8c08231c14c6b393370c4e000c2817bb5","after":"e95b9159380f2de7f9a6e7a202cc171ad285ee6c","ref":"refs/heads/2023-08-fix-waste-calculation","pushedAt":"2024-04-05T19:40:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Fold GetSelectionWaste() into ComputeAndSetWaste()\n\nBoth `GetSelectionWaste()` and `ComputeAndSetWaste()` now are part of\n`SelectionResult`. Instead of `ComputeAndSetWaste()` being a wrapper for\n`GetSelectionWaste()`, we combine them to a new function\n`RecalculateWaste()`.\n\nAs I was combining the logic of the two functions, I noticed that\n`GetSelectionWaste()` was making the odd assumption that the\n`change_cost` being set to zero means that no change is created.\nHowever, if we build transactions at a feerate of zero with the\n`discard_feerate` also set to zero, we'd organically have a\n`change_cost` of zero, even when we create change on a transaction.\n\nThis commit cleans up this duplicate meaning of `change_cost` and relies\non `GetChange()` to figure out whether there is change on basis of the\n`min_viable_change` and whatever is left after deducting fees.\n\nSince this broke a bunch of tests that relied on the double-meaning of\n`change_cost` a bunch of tests had to be fixed.","shortMessageHtmlLink":"Fold GetSelectionWaste() into ComputeAndSetWaste()"}},{"before":"6a8dfa579f495fcb949f5e874de696fbf8c629a2","after":"5aed48a8c08231c14c6b393370c4e000c2817bb5","ref":"refs/heads/2023-08-fix-waste-calculation","pushedAt":"2024-04-05T16:42:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Fold GetSelectionWaste() into ComputeAndSetWaste()\n\nBoth `GetSelectionWaste()` and `ComputeAndSetWaste()` now are part of\n`SelectionResult`. Instead of `ComputeAndSetWaste()` being a wrapper for\n`GetSelectionWaste()`, we combine them to a new function\n`RecalculateWaste()`.\n\nAs I was combining the logic of the two functions, I noticed that\n`GetSelectionWaste()` was making the odd assumption that the\n`change_cost` being set to zero means that no change is created.\nHowever, if we build transactions at a feerate of zero with the\n`discard_feerate` also set to zero, we'd organically have a\n`change_cost` of zero, even when we create change on a transaction.\n\nThis commit cleans up this duplicate meaning of `change_cost` and relies\non `GetChange()` to figure out whether there is change on basis of the\n`min_viable_change` and whatever is left after deducting fees.\n\nSince this broke a bunch of tests that relied on the double-meaning of\n`change_cost` a bunch of tests had to be fixed.","shortMessageHtmlLink":"Fold GetSelectionWaste() into ComputeAndSetWaste()"}},{"before":"ef072d20e76954eef8d00148ea33722b2da15a35","after":"ffaf850eac6b23ebcef4e83f6acf575871799d3c","ref":"refs/heads/2024-03-coingrinder-release-notes","pushedAt":"2024-03-15T20:28:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Add CoinGrinder release notes","shortMessageHtmlLink":"Add CoinGrinder release notes"}},{"before":null,"after":"ef072d20e76954eef8d00148ea33722b2da15a35","ref":"refs/heads/2024-03-coingrinder-release-notes","pushedAt":"2024-03-15T20:26:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Add CoinGrinder release notes","shortMessageHtmlLink":"Add CoinGrinder release notes"}},{"before":"d8ccf026def420e2a4d36e9e6b52187e8041a52c","after":"5d722bbd53308c0988c13056fd0472e83226fbb6","ref":"refs/heads/2024-03-coinselection_tests","pushedAt":"2024-03-05T13:50:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"[test] Recreate BnB iteration exhaustion test","shortMessageHtmlLink":"[test] Recreate BnB iteration exhaustion test"}},{"before":null,"after":"d8ccf026def420e2a4d36e9e6b52187e8041a52c","ref":"refs/heads/2024-03-coinselection_tests","pushedAt":"2024-03-01T22:35:42.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"[test] Recreate BnB iteration exhaustion test","shortMessageHtmlLink":"[test] Recreate BnB iteration exhaustion test"}},{"before":"3c63c2f324b839866ff90048759931dcad0bfeac","after":"8da62a1041bfaf8ce4e40a4b31c7281cbe8bb916","ref":"refs/heads/master","pushedAt":"2024-03-01T18:57:20.000Z","pushType":"push","commitsCount":256,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Merge bitcoin/bitcoin#29263: serialization: c++20 endian/byteswap/clz modernization\n\n86b7f28d6c507155a9d3a15487ee883989b88943 serialization: use internal endian conversion functions (Cory Fields)\n432b18ca8d0654318a8d882b28b20af2cb2d2e5d serialization: detect byteswap builtins without autoconf tests (Cory Fields)\n297367b3bb062c57142747719ac9bf2e12717ce9 crypto: replace CountBits with std::bit_width (Cory Fields)\n52f9bba889fd9b50a0543fd9fedc389592cdc7e5 crypto: replace non-standard CLZ builtins with c++20's bit_width (Cory Fields)\n\nPull request description:\n\n This replaces #28674, #29036, and #29057. Now ready for testing and review.\n\n Replaces platform-specific endian and byteswap functions. This is especially useful for kernel, as it means that our deep serialization code no longer requires bitcoin-config.h.\n\n I apologize for the size of the last commit, but it's hard to avoid making those changes at once.\n\n All platforms now use our internal functions rather than libc or platform-specific ones, with the exception of MSVC.\n\n Sadly, benchmarking showed that not all compilers are capable of detecting and optimizing byteswap functions, so compiler builtins are instead used where possible. However, they're now detected via macros rather than autoconf checks.\n\n This[ matches how libc++ implements std::byteswap for c++23](https://github.com/llvm/llvm-project/blob/main/libcxx/include/__bit/byteswap.h#L26).\n\n I suggest we move/rename `compat/endian.h`, but I left that out of this PR to avoid bikeshedding.\n\n #29057 pointed out some irregularities in benchmarks. After messing with various compilers and configs for a few weeks with these changes, I'm of the opinion that we can't win on every platform every time, so we should take the code that makes sense going forward. That said, if any real-world slowdowns are caused here, we should obviously investigate.\n\nACKs for top commit:\n maflcko:\n ACK 86b7f28d6c507155a9d3a15487ee883989b88943 📘\n fanquake:\n ACK 86b7f28d6c507155a9d3a15487ee883989b88943 - we can finish pruning out the __builtin_clz* checks/usage once the minisketch code has been updated. This is more good cleanup pre-CMake & for the kernal.\n\nTree-SHA512: 715a32ec190c70505ffbce70bfe81fc7b6aa33e376b60292e801f60cf17025aabfcab4e8c53ebb2e28ffc5cf4c20b74fe3dd8548371ad772085c13aec8b7970e","shortMessageHtmlLink":"Merge bitcoin#29263: serialization: c++20 endian/byteswap/clz moderni…"}},{"before":null,"after":"9dae3b970a7a82e8d9f3f755048d427da78c49da","ref":"refs/heads/2024-02-fix-coingrinder-optimality-fuzz","pushedAt":"2024-02-21T20:50:42.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"[fuzz] Avoid partial negative result","shortMessageHtmlLink":"[fuzz] Avoid partial negative result"}},{"before":"509564e05e1f221ca7ebfab6aa9e78a4e6e8c43d","after":"13161ecf032b7a850686e5942c12222c8f3d0d52","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-02-09T10:04:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"81c3d3cff79843d4e3eb69af42324b8b52b1cc68","after":"509564e05e1f221ca7ebfab6aa9e78a4e6e8c43d","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-02-06T14:24:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"ee6ff57bec959a0887202b5fa44bd339bec3bbaf","after":"81c3d3cff79843d4e3eb69af42324b8b52b1cc68","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-02-06T14:17:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"40f9f7e123753e1eaafae1c1cab0fffc256105c0","after":"ee6ff57bec959a0887202b5fa44bd339bec3bbaf","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-02-04T21:00:54.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"850348aacb56efdc240da70be7097e9f0da79215","after":"40f9f7e123753e1eaafae1c1cab0fffc256105c0","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-02-02T14:07:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"f607eabf9ca78f4d957340ea2180944c4613c8bc","after":"850348aacb56efdc240da70be7097e9f0da79215","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-02-02T13:56:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"ab7eaaa98bc29bafb96cda2d391e9a7ab16ccac7","after":"f607eabf9ca78f4d957340ea2180944c4613c8bc","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-02-01T22:03:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"03752444cd54df05a731557968d5a9f33a55c55c","after":"3c63c2f324b839866ff90048759931dcad0bfeac","ref":"refs/heads/master","pushedAt":"2024-01-31T20:55:33.000Z","pushType":"push","commitsCount":105,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Merge bitcoin/bitcoin#29347: net: enable v2transport by default\n\n0bef1042ce6c459acb1de965cbccd98867a417f1 net: enable v2transport by default (Pieter Wuille)\n\nPull request description:\n\n This enables BIP324's v2 transport by default (see #27634):\n * Inbound connections will auto-sense whether v1 or v2 is in use.\n * Automatic outbound connections will use v2 if `NODE_P2P_V2` was set in addr gossip, but retry with v1 if met with immediate failure.\n * Manual outbound connections will default to v2, but retry with v1 if met with immediate failure.\n\n It remains possible to run with `-v2transport=0` to disable all of these, and make all outbound and inbound connections v1. It also remains possible to specify the `v2transport` argument to the `addnode` RPC as `false`, to disable attempting a v2 connection for that particular added node.\n\nACKs for top commit:\n stratospher:\n ACK 0bef104.\n josibake:\n reACK https://github.com/bitcoin/bitcoin/pull/29347/commits/0bef1042ce6c459acb1de965cbccd98867a417f1\n achow101:\n ACK 0bef1042ce6c459acb1de965cbccd98867a417f1\n naumenkogs:\n ACK 0bef1042ce6c459acb1de965cbccd98867a417f1\n theStack:\n ACK 0bef1042ce6c459acb1de965cbccd98867a417f1\n willcl-ark:\n crACK 0bef1042ce6c459acb1de965cbccd98867a417f1\n BrandonOdiwuor:\n utACK 0bef1042ce6c459acb1de965cbccd98867a417f1\n pablomartin4btc:\n re ACK 0bef1042ce6c459acb1de965cbccd98867a417f1\n kristapsk:\n utACK 0bef1042ce6c459acb1de965cbccd98867a417f1\n\nTree-SHA512: 3f17a91e318b9304c40c74a7a5b231149f664ae684d13e9739a05be6c05ba9720f3c3c62da6a73ace0ae8ce733f1c8410b211f9fa15694e6a8d28999ab9882d8","shortMessageHtmlLink":"Merge bitcoin#29347: net: enable v2transport by default"}},{"before":"351db39619915173ee27c4947ba1e4bc8f5f2c8e","after":"ab7eaaa98bc29bafb96cda2d391e9a7ab16ccac7","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-01-29T19:42:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"a764328c1e895d0f3f9b1a105225a4b0084fb150","after":"351db39619915173ee27c4947ba1e4bc8f5f2c8e","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-01-29T00:10:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}},{"before":"2e8ec6b338a825a7155fff1be83993e3834ab655","after":"03752444cd54df05a731557968d5a9f33a55c55c","ref":"refs/heads/master","pushedAt":"2024-01-19T16:09:06.000Z","pushType":"push","commitsCount":297,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Merge bitcoin/bitcoin#29249: depends: add NM output to gen_id\n\n6ec2813cd88d5f0b955d746e4711a8ad256ea47f depends: add NM output to gen_id (fanquake)\n\nPull request description:\n\n `NM` is part of the current toolset, and can be set by the user. Include it in `gen_id`.\n\nACKs for top commit:\n TheCharlatan:\n Re-ACK 6ec2813cd88d5f0b955d746e4711a8ad256ea47f\n\nTree-SHA512: 2ada61e03783f9eb441f285ef5da50557ad729cb52ce2d2c4b2c38103dab29920a26262d4545fd2ac7fbf1cedc4902cd2359833544fbc0debf829c12a63e9769","shortMessageHtmlLink":"Merge bitcoin#29249: depends: add NM output to gen_id"}},{"before":"07b201cb7f07844545b1cb9b66a253fcede27213","after":"4ce5ee6315eaa68b95997d0e0c581143e5cfb721","ref":"refs/heads/2023-11-no-changeless-sffo","pushedAt":"2024-01-17T22:06:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Move SelectCoins max_weight test","shortMessageHtmlLink":"Move SelectCoins max_weight test"}},{"before":"94158639fb852aa2fa1850ba729e0520d9a83214","after":"07b201cb7f07844545b1cb9b66a253fcede27213","ref":"refs/heads/2023-11-no-changeless-sffo","pushedAt":"2024-01-17T21:44:08.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Remove test coverage mention of Knapsack test","shortMessageHtmlLink":"Remove test coverage mention of Knapsack test"}},{"before":"42a57244765c600cfaf440f3fd6687e33a8cca34","after":"6a8dfa579f495fcb949f5e874de696fbf8c629a2","ref":"refs/heads/2023-08-fix-waste-calculation","pushedAt":"2024-01-16T21:01:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Fold GetSelectionWaste() into ComputeAndSetWaste()\n\nBoth `GetSelectionWaste()` and `ComputeAndSetWaste()` now are part of\n`SelectionResult`. Instead of `ComputeAndSetWaste()` being a wrapper for\n`GetSelectionWaste()`, we combine them to a new function\n`RecalculateWaste()`.\n\nAs I was combining the logic of the two functions, I noticed that\n`GetSelectionWaste()` was making the odd assumption that the\n`change_cost` being set to zero means that no change is created.\nHowever, if we build transactions at a feerate of zero with the\n`discard_feerate` also set to zero, we'd organically have a\n`change_cost` of zero, even when we create change on a transaction.\n\nThis commit cleans up this duplicate meaning of `change_cost` and relies\non `GetChange()` to figure out whether there is change on basis of the\n`min_viable_change` and whatever is left after deducting fees.\n\nSince this broke a bunch of tests that relied on the double-meaning of\n`change_cost` a bunch of tests had to be fixed.","shortMessageHtmlLink":"Fold GetSelectionWaste() into ComputeAndSetWaste()"}},{"before":"f8a5606a2cda2a3c0ecd6a5ae4cd037a92b34378","after":"42a57244765c600cfaf440f3fd6687e33a8cca34","ref":"refs/heads/2023-08-fix-waste-calculation","pushedAt":"2024-01-16T18:49:42.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"Fold GetSelectionWaste() into ComputeAndSetWaste()\n\nBoth `GetSelectionWaste()` and `ComputeAndSetWaste()` now are part of\n`SelectionResult`. Instead of `ComputeAndSetWaste()` being a wrapper for\n`GetSelectionWaste()`, we combine them to a new function\n`RecalculateWaste()`.\n\nAs I was combining the logic of the two functions, I noticed that\n`GetSelectionWaste()` was making the odd assumption that the\n`change_cost` being set to zero means that no change is created.\nHowever, if we build transactions at a feerate of zero with the\n`discard_feerate` also set to zero, we'd organically have a\n`change_cost` of zero, even when we create change on a transaction.\n\nThis commit cleans up this duplicate meaning of `change_cost` and relies\non `GetChange()` to figure out whether there is change on basis of the\n`min_viable_change` and whatever is left after deducting fees.\n\nSince this broke a bunch of tests that relied on the double-meaning of\n`change_cost` a bunch of tests had to be fixed.","shortMessageHtmlLink":"Fold GetSelectionWaste() into ComputeAndSetWaste()"}},{"before":"80bcee5c09fb68366645d6be62fdeab4bb3ec6f3","after":"a764328c1e895d0f3f9b1a105225a4b0084fb150","ref":"refs/heads/2023-05-coingrinder","pushedAt":"2024-01-15T14:08:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"murchandamus","name":"Mark \"Murch\" Erhardt","path":"/murchandamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4060799?s=80&v=4"},"commit":{"message":"opt: Skip over barren combinations of tiny UTXOs\n\nGiven a lot of small amount UTXOs it is possible that the lookahead\nindicates sufficient funds, but any combination of them would push us\nbeyond the current best_weight.\nWe can estimate a lower bound for the minimal necessary weight to reach\ntarget from the maximal amount and minimal weight in the tail of the\nUTXO pool: if adding a number of hypothetical UTXOs of this maximum\namount and minimum weight would not be able to beat `best_weight`, we\ncan SHIFT to the omission branch, and CUT if the last selected UTXO is\nnot heavier than the minimum weight of the remainder.","shortMessageHtmlLink":"opt: Skip over barren combinations of tiny UTXOs"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEVfGIVQA","startCursor":null,"endCursor":null}},"title":"Activity · murchandamus/bitcoin"}