{
  "founder": "achow101",
  "channel": "#bitcoin-core-dev",
  "network": "libera",
  "id": "8bc1b1e288004d7fa55dad7a56ee2779",
  "name": "#bitcoin-core-dev",
  "chair": "achow101",
  "chairs": [
    "achow101"
  ],
  "nicks": {
    "achow101": 42,
    "core-meetingbot": 4,
    "S3RK": 50,
    "sipa": 3,
    "Murch[m]": 41,
    "michaelfolkson": 1,
    "gribble": 1,
    "prayank": 11
  },
  "start_time": "2021-12-17T19:00:18+00:00",
  "end_time": "2021-12-17T19:52:02+00:00",
  "active": false,
  "original_topic": "Bitcoin Core development discussion and commit log | Feel free to watch, but please take commentary and usage questions to #bitcoin | Channel logs: http://www.erisian.com.au/bitcoin-core-dev/, http://gnusha.org/bitcoin-core-dev/ | Meeting topics http://gnusha.org/bitcoin-core-dev/proposedmeetingtopics.txt / http://gnusha.org/bitcoin-core-dev/proposedwalletmeetingtopics.txt",
  "current_topic": "add optional transaction(s) to getbalances (prayank)",
  "messages": [
    {
      "id": "7fe7c58cfc6841d1bf9245e575128457",
      "sender": "achow101",
      "payload": "#startmeeting",
      "action": false,
      "timestamp": "2021-12-17T19:00:18+00:00"
    },
    {
      "id": "d2b238f4ecf04109b295d97549fddfef",
      "sender": "core-meetingbot",
      "payload": "Meeting started Fri Dec 17 19:00:18 2021 UTC.  The chair is achow101. Information about MeetBot at https://bitcoin.jonasschnelli.ch/ircmeetings.",
      "action": false,
      "timestamp": "2021-12-17T19:00:18+00:00"
    },
    {
      "id": "aecef716abe24d1693ba797a20b32781",
      "sender": "core-meetingbot",
      "payload": "Available commands: action commands idea info link nick",
      "action": false,
      "timestamp": "2021-12-17T19:00:18+00:00"
    },
    {
      "id": "792e3f67f7fb493db2f857232dba8bb0",
      "sender": "achow101",
      "payload": "#bitcoin-core-dev Wallet Meeting: achow101 _aj_ amiti ariard BlueMatt cfields Chris_Stewart_5 darosior digi_james dongcarl elichai2 emilengler fanquake fjahr gleb glozow gmaxwell gwillen hebasto instagibbs jamesob jarolrod jb55 jeremyrubin jl2012 jnewbery jonasschnelli jonatack jtimon kallewoof kanzure kvaciral laanwj larryruane lightlike luke-jr maaku marcofalke meshcollider michagogo moneyball morcos nehan NicolasDorier paveljanik petertodd",
      "action": false,
      "timestamp": "2021-12-17T19:00:28+00:00"
    },
    {
      "id": "864670ac139a40cd8e70346a1a2262c5",
      "sender": "achow101",
      "payload": "phantomcircuit promag provoostenator ryanofsky sdaftuar sipa vasild S3RK",
      "action": false,
      "timestamp": "2021-12-17T19:00:29+00:00"
    },
    {
      "id": "84cbd420a86842ac82534cf22495ce62",
      "sender": "S3RK",
      "payload": "hi",
      "action": false,
      "timestamp": "2021-12-17T19:00:38+00:00"
    },
    {
      "id": "1b251a66a7184bac83e230cf52f7f69b",
      "sender": "sipa",
      "payload": "hi",
      "action": false,
      "timestamp": "2021-12-17T19:00:40+00:00"
    },
    {
      "id": "7866be9a6bdc48118af15cecea5fab7b",
      "sender": "achow101",
      "payload": "any topics?",
      "action": false,
      "timestamp": "2021-12-17T19:00:46+00:00"
    },
    {
      "id": "3ce01b53d6b640cdba5cc735fa6c2798",
      "sender": "sipa",
      "payload": "none from me",
      "action": false,
      "timestamp": "2021-12-17T19:01:00+00:00"
    },
    {
      "id": "4494c24ac8ef420aa39efcdb90f70974",
      "sender": "S3RK",
      "payload": "bnb upper limit?",
      "action": false,
      "timestamp": "2021-12-17T19:01:02+00:00"
    },
    {
      "id": "4238a80c04ed46ed9c498a8aea924807",
      "sender": "achow101",
      "payload": "#topic bnb upper limit (S3RK)",
      "action": false,
      "timestamp": "2021-12-17T19:01:19+00:00"
    },
    {
      "id": "e081fbebecf94e6885a9a272859eb709",
      "sender": "core-meetingbot",
      "payload": "topic: bnb upper limit (S3RK)",
      "action": false,
      "timestamp": "2021-12-17T19:01:20+00:00"
    },
    {
      "id": "9a34107dddd54333aea56b5fee3d43e5",
      "sender": "sipa",
      "payload": "i invoke murch",
      "action": false,
      "timestamp": "2021-12-17T19:01:25+00:00"
    },
    {
      "id": "2916bc2a470c4b7ab67507e90eebeffb",
      "sender": "Murch[m]",
      "payload": "Hi",
      "action": false,
      "timestamp": "2021-12-17T19:01:27+00:00"
    },
    {
      "id": "a1a600d4f91a457c9fc6d0308305edb3",
      "sender": "S3RK",
      "payload": "oh nice",
      "action": false,
      "timestamp": "2021-12-17T19:01:31+00:00"
    },
    {
      "id": "1df394e1e77c481a9a6c0a73ffd87abf",
      "sender": "S3RK",
      "payload": "so the current upper limit for bnb is not optimal",
      "action": false,
      "timestamp": "2021-12-17T19:01:55+00:00"
    },
    {
      "id": "59c6e7f8435c49f0be53433755955296",
      "sender": "S3RK",
      "payload": "it's economically better to drop more than the current upper limit for fees rather than add an extra input and create change output",
      "action": false,
      "timestamp": "2021-12-17T19:02:27+00:00"
    },
    {
      "id": "fff392a1a32144be815fb8795684da30",
      "sender": "S3RK",
      "payload": "we can either 1) increase the limit or 2) drop the limit",
      "action": false,
      "timestamp": "2021-12-17T19:02:37+00:00"
    },
    {
      "id": "206fb23929504ed7a89875ed880861cf",
      "sender": "Murch[m]",
      "payload": "Yeah, we ran some experiments removing the upper bound for the exact match window and that resulted in an overall lower cost",
      "action": false,
      "timestamp": "2021-12-17T19:02:38+00:00"
    },
    {
      "id": "5b7bb1857f4245c98cc91f75077ac97f",
      "sender": "michaelfolkson",
      "payload": "hi",
      "action": false,
      "timestamp": "2021-12-17T19:02:45+00:00"
    },
    {
      "id": "2ddf03f88c7741889811d9718ebd9352",
      "sender": "Murch[m]",
      "payload": "S3RK: My current position would be that I'd be apprehensive about dropping the limit altogether.",
      "action": false,
      "timestamp": "2021-12-17T19:03:17+00:00"
    },
    {
      "id": "fdeda87014a644f9adf53b95d5269d9a",
      "sender": "achow101",
      "payload": "if our calculation for the upper bound is incorrect, I would prefer to fix it rather than drop the limit entirely",
      "action": false,
      "timestamp": "2021-12-17T19:03:26+00:00"
    },
    {
      "id": "4f1f6ee1c85d4ab7bd9bec7f1fe4e908",
      "sender": "Murch[m]",
      "payload": "If both Knapsack and SRD find very bad solutions, we may drop a ton of money to fees.",
      "action": false,
      "timestamp": "2021-12-17T19:03:36+00:00"
    },
    {
      "id": "8347618d29ba422881c00fe20f03047a",
      "sender": "S3RK",
      "payload": "it's a bit tricky to calculate exact upper limit",
      "action": false,
      "timestamp": "2021-12-17T19:03:56+00:00"
    },
    {
      "id": "1dfb7a9f16ab417eb529acab9825f1cb",
      "sender": "achow101",
      "payload": "but IIRC part of the issue is that our drop to fees handling is independent of the selection algorithm",
      "action": false,
      "timestamp": "2021-12-17T19:03:59+00:00"
    },
    {
      "id": "1d2e2574756c4b19af975b1862643909",
      "sender": "Murch[m]",
      "payload": "Right, but without an upper bound, BnB may end up returning a result that has a larger remainder than what's dropped and our transaction building ends up building a tx with a minuscule change",
      "action": false,
      "timestamp": "2021-12-17T19:04:46+00:00"
    },
    {
      "id": "f9d20c867bd5418c847713b6c4eea758",
      "sender": "S3RK",
      "payload": "hm... I'd say that's a related but separate issue. Would love to discuss it as well, but let's talk about the bnb limit first",
      "action": false,
      "timestamp": "2021-12-17T19:04:49+00:00"
    },
    {
      "id": "c068f1b4d81a44a9ab2fa1619bcf26bd",
      "sender": "Murch[m]",
      "payload": "So, we could just post-filter BnB solutions to not use such a solution",
      "action": false,
      "timestamp": "2021-12-17T19:05:02+00:00"
    },
    {
      "id": "79b113d411334123869fc03a3f638a81",
      "sender": "S3RK",
      "payload": "Murch, why do you think knapsack wouldn't find the same solution but with change?",
      "action": false,
      "timestamp": "2021-12-17T19:05:32+00:00"
    },
    {
      "id": "63baf18b9c8242049ca8be0fc43ee271",
      "sender": "achow101",
      "payload": "the min change target",
      "action": false,
      "timestamp": "2021-12-17T19:05:47+00:00"
    },
    {
      "id": "c40c206004a54e0dbb757237e4fe4ca4",
      "sender": "Murch[m]",
      "payload": "Because Knapsack minimizes the overshoot past minChange",
      "action": false,
      "timestamp": "2021-12-17T19:05:58+00:00"
    },
    {
      "id": "01e7ab630e544810b20b9b8db1373386",
      "sender": "S3RK",
      "payload": "hm...",
      "action": false,
      "timestamp": "2021-12-17T19:05:59+00:00"
    },
    {
      "id": "c0b28fee99964509999526cd824f239e",
      "sender": "Murch[m]",
      "payload": "It doesn't prefer input sets with lower waste",
      "action": false,
      "timestamp": "2021-12-17T19:06:08+00:00"
    },
    {
      "id": "89caddeeec6a475199c3ff42281725ae",
      "sender": "S3RK",
      "payload": "what about SRD?",
      "action": false,
      "timestamp": "2021-12-17T19:06:49+00:00"
    },
    {
      "id": "863eb611f651459c9134ba429662748f",
      "sender": "S3RK",
      "payload": "ah.. also min change",
      "action": false,
      "timestamp": "2021-12-17T19:06:54+00:00"
    },
    {
      "id": "6c16c830a4d241c8b448a88a955aea9b",
      "sender": "Murch[m]",
      "payload": "SRD only runs once and also aims to create at least minChange",
      "action": false,
      "timestamp": "2021-12-17T19:07:05+00:00"
    },
    {
      "id": "3df8a464fe0c485c80fba604da288baf",
      "sender": "S3RK",
      "payload": "yes, that's a bit of problem",
      "action": false,
      "timestamp": "2021-12-17T19:07:16+00:00"
    },
    {
      "id": "b57afa733ba14572afcdc2a3985e9d2d",
      "sender": "Murch[m]",
      "payload": "So you could have solutions on Knapsack and SRD that each have 10+ inputs",
      "action": false,
      "timestamp": "2021-12-17T19:07:16+00:00"
    },
    {
      "id": "0830a91e2a5c4d7ebb0978f01c9dbf56",
      "sender": "Murch[m]",
      "payload": "and BnB finds a solution with a single input that ends up dropping 20k sats",
      "action": false,
      "timestamp": "2021-12-17T19:07:29+00:00"
    },
    {
      "id": "d968992e059443049908335665a756be",
      "sender": "Murch[m]",
      "payload": "Or let's say 1k sats",
      "action": false,
      "timestamp": "2021-12-17T19:07:49+00:00"
    },
    {
      "id": "e05727aa3201496786d995a13105b245",
      "sender": "Murch[m]",
      "payload": "and we end up creating a transaction with a 750 sat output",
      "action": false,
      "timestamp": "2021-12-17T19:08:05+00:00"
    },
    {
      "id": "d415aae89e9b4d9abdac97dd08b45c16",
      "sender": "S3RK",
      "payload": "doesn't mean that right now we would say \"insufficient funds\" for such a tx?",
      "action": false,
      "timestamp": "2021-12-17T19:09:06+00:00"
    },
    {
      "id": "60fc03daddb04952a84bcd238ec0f263",
      "sender": "S3RK",
      "payload": "sorry",
      "action": false,
      "timestamp": "2021-12-17T19:09:12+00:00"
    },
    {
      "id": "8f8b4b879346419cb09f62ffd8683964",
      "sender": "S3RK",
      "payload": "does it mean taht ...",
      "action": false,
      "timestamp": "2021-12-17T19:09:15+00:00"
    },
    {
      "id": "4858b39ff4c54fe5a54711ca2978b5c3",
      "sender": "Murch[m]",
      "payload": "So, right now, BnB would not find that solution, and it wuold use one of the Knapsack or SRD",
      "action": false,
      "timestamp": "2021-12-17T19:09:41+00:00"
    },
    {
      "id": "feaacce8c916437f9a2e9da5e32b9753",
      "sender": "achow101",
      "payload": "actually knapsack should find the solution but with change",
      "action": false,
      "timestamp": "2021-12-17T19:09:54+00:00"
    },
    {
      "id": "b64df7cecab94370868c86a4d6167c56",
      "sender": "achow101",
      "payload": "even if min change is not met",
      "action": false,
      "timestamp": "2021-12-17T19:10:00+00:00"
    },
    {
      "id": "7e1180c15425418280eacba7d2c691cd",
      "sender": "achow101",
      "payload": "srd wouldn't",
      "action": false,
      "timestamp": "2021-12-17T19:10:18+00:00"
    },
    {
      "id": "abfdf9f7a2644e8bae0113b7ae94b565",
      "sender": "S3RK",
      "payload": "I have to confess I don't know the details how knapsack works right now",
      "action": false,
      "timestamp": "2021-12-17T19:10:23+00:00"
    },
    {
      "id": "617b138094134be593ecb9b106ab204e",
      "sender": "Murch[m]",
      "payload": "Right, but the scenario wasn't that we didn't have enough funds, but just that the solutions that Knapsack and SRD propose have huge input sets",
      "action": false,
      "timestamp": "2021-12-17T19:10:39+00:00"
    },
    {
      "id": "54e77d82de2248da95f1775c5f8482ac",
      "sender": "Murch[m]",
      "payload": "achow101: Do I misremember that Knapsack prefers the solution that overshoots the minchange the least?",
      "action": false,
      "timestamp": "2021-12-17T19:10:58+00:00"
    },
    {
      "id": "9d2c027ae3e8467f82ac6ce227508b42",
      "sender": "achow101",
      "payload": "that sounds right",
      "action": false,
      "timestamp": "2021-12-17T19:11:44+00:00"
    },
    {
      "id": "3cb72458e13d49bf8fb40d17c505dbb4",
      "sender": "achow101",
      "payload": "it also prefers the solution that meets min change, but will produce a solution that does not if min change cannot be met",
      "action": false,
      "timestamp": "2021-12-17T19:12:15+00:00"
    },
    {
      "id": "75b4e79b08ac46a098f10bc7e018d9d1",
      "sender": "Murch[m]",
      "payload": "Right",
      "action": false,
      "timestamp": "2021-12-17T19:12:41+00:00"
    },
    {
      "id": "654d94d863f749ec88145f6f15a99c70",
      "sender": "S3RK",
      "payload": "It seems we should codify this scenarious in tests",
      "action": false,
      "timestamp": "2021-12-17T19:13:10+00:00"
    },
    {
      "id": "453eff12d2ab4cbcbb373567b650be3d",
      "sender": "Murch[m]",
      "payload": "I guess we could amend Knapsack to compare the 1,000 trials via the waste metric instead of minimizing the excess, and then I'd agree.",
      "action": false,
      "timestamp": "2021-12-17T19:13:11+00:00"
    },
    {
      "id": "93b8c49146df41fbb999d4386a877e90",
      "sender": "achow101",
      "payload": "so if bnb without limit found a solution that throws away lots to fees, knapsack should find the same thing but with change",
      "action": false,
      "timestamp": "2021-12-17T19:13:33+00:00"
    },
    {
      "id": "7f6aa7ca2c544decaae3919ba9d1c090",
      "sender": "achow101",
      "payload": "the excess should dominate the waste calculation",
      "action": false,
      "timestamp": "2021-12-17T19:13:49+00:00"
    },
    {
      "id": "6df79610168c4d12a65f57f791c552be",
      "sender": "Murch[m]",
      "payload": "Yes",
      "action": false,
      "timestamp": "2021-12-17T19:13:49+00:00"
    },
    {
      "id": "9eaab45613244392a0ad8612ad8a50bb",
      "sender": "S3RK",
      "payload": "achow101 +1 that was my understanding as well",
      "action": false,
      "timestamp": "2021-12-17T19:13:54+00:00"
    },
    {
      "id": "5c24a94a95074051a4ae641d4911f201",
      "sender": "Murch[m]",
      "payload": "Correct",
      "action": false,
      "timestamp": "2021-12-17T19:13:55+00:00"
    },
    {
      "id": "e2117bac52b6490084135bfb018529d0",
      "sender": "Murch[m]",
      "payload": "That's why I painted a scenario in which they find different solutions because they optimize for different metrics in their selection ;)",
      "action": false,
      "timestamp": "2021-12-17T19:14:19+00:00"
    },
    {
      "id": "f81c61e962454f838abaa57f66139538",
      "sender": "Murch[m]",
      "payload": "But yeah, if we use the waste metric internally to compare input sets on Knapsack as well, it would be pretty safe to drop the limit on BnB",
      "action": false,
      "timestamp": "2021-12-17T19:14:53+00:00"
    },
    {
      "id": "46ca1ddb20324b8380805e6e8f809f6a",
      "sender": "achow101",
      "payload": "however knapsack may also find a different solution that spends more inputs as it tries to meet min change. this would still be less waste on the knapsack side since excess dominates the bnb solution's waste",
      "action": false,
      "timestamp": "2021-12-17T19:15:13+00:00"
    },
    {
      "id": "849d427677e24cec9dee682bc7eea8ab",
      "sender": "Murch[m]",
      "payload": "But it would also kinda be pointless, because then Knapsack is very similar to BnB just for a solution that targets a +minchange larger target",
      "action": false,
      "timestamp": "2021-12-17T19:15:23+00:00"
    },
    {
      "id": "044d408873c546a9bc9382959397143f",
      "sender": "Murch[m]",
      "payload": "Yes",
      "action": false,
      "timestamp": "2021-12-17T19:15:33+00:00"
    },
    {
      "id": "e4bf502aa6974bc4bb9c4943b8259786",
      "sender": "achow101",
      "payload": "even if the knapsack fees are higher",
      "action": false,
      "timestamp": "2021-12-17T19:15:34+00:00"
    },
    {
      "id": "d2451f2797494dc496a29599065fb14a",
      "sender": "Murch[m]",
      "payload": "Knapsack and BnB are very similar in approach, except that Knapsack quasirandomly explores the binary UTXO tree, while BnB does it deterministically.",
      "action": false,
      "timestamp": "2021-12-17T19:16:15+00:00"
    },
    {
      "id": "a92ebe4602274f5c824bc524fba17b34",
      "sender": "achow101",
      "payload": "I think we need to change how we drop things to fees, and then run simulations",
      "action": false,
      "timestamp": "2021-12-17T19:16:36+00:00"
    },
    {
      "id": "007a9c32a3f5443092ab368530e34108",
      "sender": "achow101",
      "payload": "and see if bnb without limit causes some scenarios where we drop ridiculous amounts to fees",
      "action": false,
      "timestamp": "2021-12-17T19:17:03+00:00"
    },
    {
      "id": "04a0ce10e52e41a9b547dea6d531e64d",
      "sender": "S3RK",
      "payload": "you can test on #23367 i guess",
      "action": false,
      "timestamp": "2021-12-17T19:17:20+00:00"
    },
    {
      "id": "bd8a275a1c4c4221810e443e93ae325e",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/23367 | Optimize coin selection by dropping BnB upper limit by S3RK \u00c3\u0082\u00c2\u00b7 Pull Request #23367 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2021-12-17T19:17:21+00:00"
    },
    {
      "id": "42d04da2c0be4cdc8d0cee786a4a42ea",
      "sender": "Murch[m]",
      "payload": "Well, in the experiment you ran for us, the numbers showed that we had more BnB solutions used than changeless transactions.",
      "action": false,
      "timestamp": "2021-12-17T19:17:40+00:00"
    },
    {
      "id": "3585b8f1a1054903bf03069fea2a1f44",
      "sender": "Murch[m]",
      "payload": "So, essentially, you've shown that already.",
      "action": false,
      "timestamp": "2021-12-17T19:17:47+00:00"
    },
    {
      "id": "e5b9c9f5b7db4fa98d27bf69ba2d0d88",
      "sender": "S3RK",
      "payload": "it doesn't mean we drop ridiculous amounts to fees",
      "action": false,
      "timestamp": "2021-12-17T19:18:19+00:00"
    },
    {
      "id": "52587f34521e4e9ba14cb9499614fe9b",
      "sender": "S3RK",
      "payload": "just more than we currently drop",
      "action": false,
      "timestamp": "2021-12-17T19:18:27+00:00"
    },
    {
      "id": "b802a4e9ca8647779689f9069d449add",
      "sender": "S3RK",
      "payload": "which I argue could still be more economical",
      "action": false,
      "timestamp": "2021-12-17T19:18:38+00:00"
    },
    {
      "id": "33ca516744674c26b8be7125efa8870a",
      "sender": "Murch[m]",
      "payload": "Yes, agreed",
      "action": false,
      "timestamp": "2021-12-17T19:18:44+00:00"
    },
    {
      "id": "488460ad8b4c412e868fb3fd30e369e9",
      "sender": "S3RK",
      "payload": "what if we introduce a safeguard?",
      "action": false,
      "timestamp": "2021-12-17T19:19:13+00:00"
    },
    {
      "id": "3ee2e26434ca4692a3b0d1ddb0b51fa3",
      "sender": "S3RK",
      "payload": "put a limit on what is \"ridiculous\" to drop to fees?",
      "action": false,
      "timestamp": "2021-12-17T19:19:25+00:00"
    },
    {
      "id": "cde309d42c5e42ca898826934667a707",
      "sender": "Murch[m]",
      "payload": "But it also breaks a lot of assumptions about BnB, because previously we assumed that BnB never creates change, and when we find a really large excess, the transaction we build actually does result in a change output",
      "action": false,
      "timestamp": "2021-12-17T19:19:26+00:00"
    },
    {
      "id": "b1292591c1864b3d8a9cd7168b60fbf8",
      "sender": "achow101",
      "payload": "time for \"absurdly-high-fee\" errors again :p",
      "action": false,
      "timestamp": "2021-12-17T19:19:50+00:00"
    },
    {
      "id": "7cadeb4621ab41eba6f2dab24b07332e",
      "sender": "Murch[m]",
      "payload": "Isn't that equivalent to just updating our upper bound for the exact match window? ;)",
      "action": false,
      "timestamp": "2021-12-17T19:19:52+00:00"
    },
    {
      "id": "7f10190e8217460584fb128abec401d7",
      "sender": "S3RK",
      "payload": "my PR does exactly this. BnB never creates change",
      "action": false,
      "timestamp": "2021-12-17T19:19:52+00:00"
    },
    {
      "id": "89cc0b9b6eef45e4adae7d4c902aa7f8",
      "sender": "achow101",
      "payload": "yes, we do need to look at 23367 and also run simulations on it",
      "action": false,
      "timestamp": "2021-12-17T19:20:18+00:00"
    },
    {
      "id": "198e62d545af451d9ab34f360e72e488",
      "sender": "S3RK",
      "payload": "hm... yes we can also extend upper bound by the \"absurdly-high-fee\"",
      "action": false,
      "timestamp": "2021-12-17T19:20:50+00:00"
    },
    {
      "id": "e97275c4e3274be49949a8b448ab92bd",
      "sender": "achow101",
      "payload": "(there used to be a mempool policy reject error named absurdly-high-fee)",
      "action": false,
      "timestamp": "2021-12-17T19:21:33+00:00"
    },
    {
      "id": "4d7008304dcc45da95fd4b21c8479779",
      "sender": "achow101",
      "payload": "I think the fee had to be 0.1 or thereabouts",
      "action": false,
      "timestamp": "2021-12-17T19:21:52+00:00"
    },
    {
      "id": "c65d51d49a724dcbb11e690482b510d4",
      "sender": "S3RK",
      "payload": "there is still some limit. 0.1 sounds about right",
      "action": false,
      "timestamp": "2021-12-17T19:22:04+00:00"
    },
    {
      "id": "0260cad52e5b43d18bfd8d909cdba244",
      "sender": "S3RK",
      "payload": "if you can write in plain english scenarios that concerns you, I can codify them as tests",
      "action": false,
      "timestamp": "2021-12-17T19:23:21+00:00"
    },
    {
      "id": "7d63449bd25946b0aa40d9c8d706e2f6",
      "sender": "prayank",
      "payload": "AI",
      "action": false,
      "timestamp": "2021-12-17T19:23:38+00:00"
    },
    {
      "id": "adf5d26d02a74a76a119097e47f821da",
      "sender": "S3RK",
      "payload": "I take it as a compliment :)",
      "action": false,
      "timestamp": "2021-12-17T19:23:57+00:00"
    },
    {
      "id": "2b704952a29d4ddcbcba386ac224d4fc",
      "sender": "achow101",
      "payload": "one thing that concerns me is that it's probably going to hit the iteration limit very quickly",
      "action": false,
      "timestamp": "2021-12-17T19:24:26+00:00"
    },
    {
      "id": "ff2dfd73b1c34e7d85f2d9250adcccd3",
      "sender": "S3RK",
      "payload": "constexpr CAmount DEFAULT_TRANSACTION_MAXFEE{COIN / 10};",
      "action": false,
      "timestamp": "2021-12-17T19:24:28+00:00"
    },
    {
      "id": "72c6a80975ee414a833031deb31e9489",
      "sender": "S3RK",
      "payload": "BnB iter limit?",
      "action": false,
      "timestamp": "2021-12-17T19:24:45+00:00"
    },
    {
      "id": "2b9f9e9a5e0b4dec9a3e6c7986da1df2",
      "sender": "achow101",
      "payload": "since we are removing one of the bounds that allow BnB to be called Branch and _Bound_",
      "action": false,
      "timestamp": "2021-12-17T19:24:53+00:00"
    },
    {
      "id": "c0956353177b4c1e8957f75b896ae391",
      "sender": "S3RK",
      "payload": "it shouldn't because there will be no branching",
      "action": false,
      "timestamp": "2021-12-17T19:25:04+00:00"
    },
    {
      "id": "bd987800aaeb4b08a3552a1c699e6b90",
      "sender": "S3RK",
      "payload": "so it's linear to the amount of coins higher than the target",
      "action": false,
      "timestamp": "2021-12-17T19:25:22+00:00"
    },
    {
      "id": "8cf187edb5cc4a3d9ce467b02ed5cce7",
      "sender": "Murch[m]",
      "payload": "achow101: No, finding a valid solution backtracks just like overshooting the window does",
      "action": false,
      "timestamp": "2021-12-17T19:25:52+00:00"
    },
    {
      "id": "8fc2e9f69cde4bdf975112036543d70b",
      "sender": "Murch[m]",
      "payload": "Once you find a solution, it next explores the omission branch of the last included UTXO, the same as when it overshoots and stops searching the subtree because it already has too much",
      "action": false,
      "timestamp": "2021-12-17T19:26:58+00:00"
    },
    {
      "id": "dc0fc9d642984209b41ced39f8f96051",
      "sender": "achow101",
      "payload": "oh right",
      "action": false,
      "timestamp": "2021-12-17T19:27:09+00:00"
    },
    {
      "id": "3598c1f582a241e69c0eed2dce894648",
      "sender": "achow101",
      "payload": "overshoot == finding a solution without limit, and both backtrack",
      "action": false,
      "timestamp": "2021-12-17T19:27:50+00:00"
    },
    {
      "id": "1310549494b849b8973d1272dc6c3996",
      "sender": "achow101",
      "payload": "anything else to discuss?",
      "action": false,
      "timestamp": "2021-12-17T19:30:08+00:00"
    },
    {
      "id": "c1af0c26901a4113a0d873f1c0af18b2",
      "sender": "Murch[m]",
      "payload": "It would be great if we had a test that does produce selections for which BnB without an upper bound on the exact match window breaks down",
      "action": false,
      "timestamp": "2021-12-17T19:30:12+00:00"
    },
    {
      "id": "9fd873ed40bd44f48aef091112ff6649",
      "sender": "S3RK",
      "payload": "what do you mean by breaks down",
      "action": false,
      "timestamp": "2021-12-17T19:30:40+00:00"
    },
    {
      "id": "43a1f41288f84648b109161e0a693587",
      "sender": "S3RK",
      "payload": "I have a crazy idea. What if we create a test that iterates sending value from 1sat to 10^8sat and verifies fees",
      "action": false,
      "timestamp": "2021-12-17T19:32:19+00:00"
    },
    {
      "id": "3b5e43d77be645b0b86542abeda294d4",
      "sender": "Murch[m]",
      "payload": "Well, something were SRD and BnB would be highly likely to produce an input set with a large count of inputs, while BnB finds one that overshoots the exact match window severely and the BnB input set scores best according to the waste metric",
      "action": false,
      "timestamp": "2021-12-17T19:32:20+00:00"
    },
    {
      "id": "038b7185a07b4b6aafcd3f60972170a3",
      "sender": "Murch[m]",
      "payload": "S3RK: I think that would be interesting, but probably the source of the issue would probably be found in the UTXO pool rather than the target amount",
      "action": false,
      "timestamp": "2021-12-17T19:33:21+00:00"
    },
    {
      "id": "d0a5b6fb93eb47639aa6e0c3d2a1dcd0",
      "sender": "Murch[m]",
      "payload": "E.g. a wallet that has 1,000 UTXOs that have the same size, and one that is larger",
      "action": false,
      "timestamp": "2021-12-17T19:33:58+00:00"
    },
    {
      "id": "2eb613be0dd148d6bb1bb25a179df488",
      "sender": "S3RK",
      "payload": "true",
      "action": false,
      "timestamp": "2021-12-17T19:34:08+00:00"
    },
    {
      "id": "acbcde48908c44fc8fadf396d47848b1",
      "sender": "Murch[m]",
      "payload": "And 100 UTXOs match the target plus minChange plus fees by the satoshi, but the one large input is just enough for the target without change but has a large excess",
      "action": false,
      "timestamp": "2021-12-17T19:34:53+00:00"
    },
    {
      "id": "c9f8c7c3845346a680789e4b5af27887",
      "sender": "S3RK",
      "payload": "if we agreed that the waste metric is a good metric, than there is no problem with dropping more to fees no?",
      "action": false,
      "timestamp": "2021-12-17T19:34:54+00:00"
    },
    {
      "id": "30553765993b4c22b9a506beb8c0d53a",
      "sender": "S3RK",
      "payload": "I'll try to create some interesting test scenarios. Including one where current coin selectio fails",
      "action": false,
      "timestamp": "2021-12-17T19:35:33+00:00"
    },
    {
      "id": "d2a8cfb6177f4b7cbdfa3f00d8089404",
      "sender": "Murch[m]",
      "payload": "Mh, I guess the fees would still be lower overall on the BnB solution in what I describe, but you'd not get the benefit of consolidating 100 UTXOs, so it feels like you paid more for less",
      "action": false,
      "timestamp": "2021-12-17T19:35:47+00:00"
    },
    {
      "id": "3a07b3f5414d4c7d90971987d242f06f",
      "sender": "S3RK",
      "payload": "the benefit of consolidating only works if the fees are lower than \"long term fee\"",
      "action": false,
      "timestamp": "2021-12-17T19:36:27+00:00"
    },
    {
      "id": "f1d993c775334d3586d99d1f1d586821",
      "sender": "S3RK",
      "payload": "if that's the case that would lower the waste",
      "action": false,
      "timestamp": "2021-12-17T19:36:33+00:00"
    },
    {
      "id": "d2d33973c0e54ebc879d62f330826f0d",
      "sender": "S3RK",
      "payload": "i.e. consolidating value is counted in waste",
      "action": false,
      "timestamp": "2021-12-17T19:36:48+00:00"
    },
    {
      "id": "58cdde64aa0046bfb631b96ea01c4863",
      "sender": "S3RK",
      "payload": "achow101 Murch what would be a good place for such tests?",
      "action": false,
      "timestamp": "2021-12-17T19:37:39+00:00"
    },
    {
      "id": "748a0bf257fc4c6681fed08cc9166720",
      "sender": "achow101",
      "payload": "if fees are high, the 100 utxos might have a larger fee than the bnb excess",
      "action": false,
      "timestamp": "2021-12-17T19:37:40+00:00"
    },
    {
      "id": "4920a4d0d54f40148aaf13739f766dd8",
      "sender": "S3RK",
      "payload": "coinselection_test or some new/existing functional test?",
      "action": false,
      "timestamp": "2021-12-17T19:38:04+00:00"
    },
    {
      "id": "5b4ee068324a455a93e7986bdbd51a8f",
      "sender": "Murch[m]",
      "payload": "yes, to both",
      "action": false,
      "timestamp": "2021-12-17T19:38:07+00:00"
    },
    {
      "id": "f46cacd70b504503a4938d883ed23d56",
      "sender": "Murch[m]",
      "payload": "but it still feels a bit icky, if you know what I mean",
      "action": false,
      "timestamp": "2021-12-17T19:38:17+00:00"
    },
    {
      "id": "201edd6172d541fa8cd951297d571666",
      "sender": "S3RK",
      "payload": "yes :)",
      "action": false,
      "timestamp": "2021-12-17T19:38:29+00:00"
    },
    {
      "id": "19c94543ee214ccf94ff8e921666b142",
      "sender": "achow101",
      "payload": "S3RK: usually rpc_fundrawtransaction",
      "action": false,
      "timestamp": "2021-12-17T19:38:34+00:00"
    },
    {
      "id": "fe0b952c094e4dac822e93dae2534bb0",
      "sender": "achow101",
      "payload": "and coinselection_tests",
      "action": false,
      "timestamp": "2021-12-17T19:38:46+00:00"
    },
    {
      "id": "af2c1aa623be4b17b1bae41b2edd0b1f",
      "sender": "S3RK",
      "payload": "so in conclusion 1) I work on the tests",
      "action": false,
      "timestamp": "2021-12-17T19:40:01+00:00"
    },
    {
      "id": "23f5daf472134b07a5ce24ace47189d0",
      "sender": "S3RK",
      "payload": "achow101 could run simulations",
      "action": false,
      "timestamp": "2021-12-17T19:40:14+00:00"
    },
    {
      "id": "81371ec127234ef1ab8f4dce63c1ce4b",
      "sender": "S3RK",
      "payload": "and you can also take a look at the PR",
      "action": false,
      "timestamp": "2021-12-17T19:40:38+00:00"
    },
    {
      "id": "7d33d9dc52784761b45ab27cf9446454",
      "sender": "achow101",
      "payload": "yes",
      "action": false,
      "timestamp": "2021-12-17T19:40:58+00:00"
    },
    {
      "id": "c9a7c6b1086e46ebba1f22b8750a1d0d",
      "sender": "Murch[m]",
      "payload": "Yes",
      "action": false,
      "timestamp": "2021-12-17T19:41:04+00:00"
    },
    {
      "id": "21878f33ab9144c2a0cf174a4aee13d2",
      "sender": "S3RK",
      "payload": "thanks",
      "action": false,
      "timestamp": "2021-12-17T19:41:14+00:00"
    },
    {
      "id": "1bf55cc09f7b47b58e205d3ca0b9b368",
      "sender": "achow101",
      "payload": "any other topics?",
      "action": false,
      "timestamp": "2021-12-17T19:42:16+00:00"
    },
    {
      "id": "e55baa903bc84c79b9b27b38628a094b",
      "sender": "S3RK",
      "payload": "congrats, it looks like you'll be wallet maintainer soon :)",
      "action": false,
      "timestamp": "2021-12-17T19:42:40+00:00"
    },
    {
      "id": "c650097d2cc442678f4df9b21b7eaf44",
      "sender": "prayank",
      "payload": "achow101: yes",
      "action": false,
      "timestamp": "2021-12-17T19:42:53+00:00"
    },
    {
      "id": "e932c1327a824436b3162259beb548e0",
      "sender": "achow101",
      "payload": "prayank: you have a topic?",
      "action": false,
      "timestamp": "2021-12-17T19:44:49+00:00"
    },
    {
      "id": "aa167aa368fd4951a2f24e05a336cb34",
      "sender": "prayank",
      "payload": "Not sure if this can be discussed. Wanted to understand why isnt this better approach? https://github.com/bitcoin/bitcoin/pull/22776",
      "action": false,
      "timestamp": "2021-12-17T19:45:10+00:00"
    },
    {
      "id": "ac3c994941e74edd936c162e5cd9aea5",
      "sender": "prayank",
      "payload": "RPC would respond with balance and getbalances already does that but we add a condition so parameter",
      "action": false,
      "timestamp": "2021-12-17T19:45:46+00:00"
    },
    {
      "id": "14c731604e0840359f3a9f58172b9bfd",
      "sender": "achow101",
      "payload": "#topic add optional transaction(s) to getbalances (prayank)",
      "action": false,
      "timestamp": "2021-12-17T19:45:53+00:00"
    },
    {
      "id": "bd087df62fd943dabf51e5bf63a4c186",
      "sender": "core-meetingbot",
      "payload": "topic: add optional transaction(s) to getbalances (prayank)",
      "action": false,
      "timestamp": "2021-12-17T19:45:53+00:00"
    },
    {
      "id": "9fde0da58e354264bd5d41144a922c5f",
      "sender": "achow101",
      "payload": "prayank: because such an RPC can be expanded to be much more than just balance fetching",
      "action": false,
      "timestamp": "2021-12-17T19:46:07+00:00"
    },
    {
      "id": "a6e1790b9f724d779e9c4337f2380329",
      "sender": "prayank",
      "payload": "like?",
      "action": false,
      "timestamp": "2021-12-17T19:46:17+00:00"
    },
    {
      "id": "5afe431552974bc28f78931b499cbbc1",
      "sender": "achow101",
      "payload": "the reason I asked for simulaterawtransaction is because we can do things like seeing if a transaction has conflicts with the wallet, and if it does, what gets replaced",
      "action": false,
      "timestamp": "2021-12-17T19:47:01+00:00"
    },
    {
      "id": "e259cd762634460383bf797eaa74e154",
      "sender": "prayank",
      "payload": "hmm",
      "action": false,
      "timestamp": "2021-12-17T19:47:51+00:00"
    },
    {
      "id": "9f438fce052541608f533b3aa5bd4d80",
      "sender": "prayank",
      "payload": "I liked the idea of having such params in few other RPC to simulate things",
      "action": false,
      "timestamp": "2021-12-17T19:48:25+00:00"
    },
    {
      "id": "054d3106d1254d368d75cfce6e5e9114",
      "sender": "prayank",
      "payload": "You don't like the idea to add similar parameter in getmempool and see how mempool looks if some txs get added?",
      "action": false,
      "timestamp": "2021-12-17T19:48:33+00:00"
    },
    {
      "id": "c9ccba5578504bfea44141fbfbea06df",
      "sender": "achow101",
      "payload": "IMO it's better to have simulating things in one spot, rather than spread in many different places",
      "action": false,
      "timestamp": "2021-12-17T19:48:43+00:00"
    },
    {
      "id": "21f5902a76a5477686191a2da37bc5af",
      "sender": "prayank",
      "payload": "yes its one param",
      "action": false,
      "timestamp": "2021-12-17T19:48:57+00:00"
    },
    {
      "id": "2a7c57d2a68740aa9f04008bd544f4ff",
      "sender": "achow101",
      "payload": "prayank: no, I think that should be its own RPC",
      "action": false,
      "timestamp": "2021-12-17T19:49:08+00:00"
    },
    {
      "id": "5658b459379e4b1ba6c63847e2679ffd",
      "sender": "achow101",
      "payload": "I don't think it makes sense to have a fetching function do simulation things",
      "action": false,
      "timestamp": "2021-12-17T19:49:42+00:00"
    },
    {
      "id": "42d3271176624931b1efe7190c9b01d0",
      "sender": "prayank",
      "payload": "ah okay then I guess we have different opinion. No problem. But the wallet conflicts thing makes sense.",
      "action": false,
      "timestamp": "2021-12-17T19:49:47+00:00"
    },
    {
      "id": "67cc2a8791ba413ba870269fc33a64fa",
      "sender": "achow101",
      "payload": "anything else?",
      "action": false,
      "timestamp": "2021-12-17T19:51:17+00:00"
    },
    {
      "id": "f3e1212afbd84afa82dac29f0fccf5f3",
      "sender": "prayank",
      "payload": "No. Thanks for sharing your opinion.",
      "action": false,
      "timestamp": "2021-12-17T19:51:40+00:00"
    },
    {
      "id": "c94201b4ad2240ac9fc43b0018b86fd9",
      "sender": "achow101",
      "payload": "#endmeeting",
      "action": false,
      "timestamp": "2021-12-17T19:52:02+00:00"
    }
  ],
  "events": [
    {
      "event_type": "START_MEETING",
      "message": {
        "id": "7fe7c58cfc6841d1bf9245e575128457",
        "sender": "achow101",
        "payload": "#startmeeting",
        "action": false,
        "timestamp": "2021-12-17T19:00:18+00:00"
      },
      "operand": null,
      "id": "7fe7c58cfc6841d1bf9245e575128457",
      "timestamp": "2021-12-17T19:00:18+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "4238a80c04ed46ed9c498a8aea924807",
        "sender": "achow101",
        "payload": "#topic bnb upper limit (S3RK)",
        "action": false,
        "timestamp": "2021-12-17T19:01:19+00:00"
      },
      "operand": "bnb upper limit (S3RK)",
      "id": "4238a80c04ed46ed9c498a8aea924807",
      "timestamp": "2021-12-17T19:01:19+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "bd8a275a1c4c4221810e443e93ae325e",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/23367 | Optimize coin selection by dropping BnB upper limit by S3RK \u00c3\u0082\u00c2\u00b7 Pull Request #23367 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2021-12-17T19:17:21+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/23367",
      "id": "bd8a275a1c4c4221810e443e93ae325e",
      "timestamp": "2021-12-17T19:17:21+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "14c731604e0840359f3a9f58172b9bfd",
        "sender": "achow101",
        "payload": "#topic add optional transaction(s) to getbalances (prayank)",
        "action": false,
        "timestamp": "2021-12-17T19:45:53+00:00"
      },
      "operand": "add optional transaction(s) to getbalances (prayank)",
      "id": "14c731604e0840359f3a9f58172b9bfd",
      "timestamp": "2021-12-17T19:45:53+00:00"
    },
    {
      "event_type": "END_MEETING",
      "message": {
        "id": "c94201b4ad2240ac9fc43b0018b86fd9",
        "sender": "achow101",
        "payload": "#endmeeting",
        "action": false,
        "timestamp": "2021-12-17T19:52:02+00:00"
      },
      "operand": null,
      "id": "c94201b4ad2240ac9fc43b0018b86fd9",
      "timestamp": "2021-12-17T19:52:02+00:00"
    }
  ],
  "aliases": {},
  "vote_in_progress": false,
  "motion_index": null
}