--- Day changed Wed Apr 07 2021 00:07 -!- kiltzman [~k1ltzman@195.189.99.96] has quit [Ping timeout: 240 seconds] 00:08 -!- kiltzman [~k1ltzman@195.189.99.96] has joined #bitcoin-core-pr-reviews 01:13 -!- shesek [~shesek@unaffiliated/shesek] has quit [Remote host closed the connection] 01:13 -!- shesek [~shesek@164.90.217.137] has joined #bitcoin-core-pr-reviews 01:13 -!- shesek [~shesek@164.90.217.137] has quit [Changing host] 01:13 -!- shesek [~shesek@unaffiliated/shesek] has joined #bitcoin-core-pr-reviews 01:29 -!- Zenton [~user@unaffiliated/vicenteh] has quit [Read error: Connection reset by peer] 01:30 -!- Zenton [~user@unaffiliated/vicenteh] has joined #bitcoin-core-pr-reviews 01:50 -!- robert_spigler [robertspig@gateway/shell/matrix.org/x-woodfzmugqmuzqvh] has quit [Ping timeout: 248 seconds] 01:50 -!- elichai2 [sid212594@gateway/web/irccloud.com/x-jfgygubnaewcijny] has quit [Ping timeout: 248 seconds] 01:52 -!- elichai2 [sid212594@gateway/web/irccloud.com/x-ezuxkekmentqtzba] has joined #bitcoin-core-pr-reviews 02:16 -!- musdom [~Thunderbi@202.186.69.84] has quit [Ping timeout: 260 seconds] 02:21 -!- musdom [~Thunderbi@202.186.69.84] has joined #bitcoin-core-pr-reviews 02:37 -!- midnight [~midnight@unaffiliated/midnightmagic] has quit [Ping timeout: 252 seconds] 02:40 -!- midnight [~midnight@unaffiliated/midnightmagic] has joined #bitcoin-core-pr-reviews 02:42 -!- robert_spigler [robertspig@gateway/shell/matrix.org/x-fdusfcurhpiuyhtr] has joined #bitcoin-core-pr-reviews 02:51 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 02:54 -!- qubenix [~qubenix@66.172.11.228] has quit [Quit: quit] 02:59 -!- qubenix [~qubenix@66.172.11.228] has joined #bitcoin-core-pr-reviews 04:19 -!- shaunapps [shaunsun@gateway/vpn/privateinternetaccess/shaunsun] has joined #bitcoin-core-pr-reviews 04:28 -!- musdom [~Thunderbi@202.186.69.84] has quit [Ping timeout: 240 seconds] 04:34 -!- shaunapps [shaunsun@gateway/vpn/privateinternetaccess/shaunsun] has quit [Quit: Leaving] 04:44 -!- belcher_ is now known as belcher 05:54 -!- biteskola [~biteskola@170.76.76.188.dynamic.jazztel.es] has joined #bitcoin-core-pr-reviews 05:56 -!- eoin [33253cfd@51.37.60.253] has joined #bitcoin-core-pr-reviews 06:05 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 06:22 -!- eoin [33253cfd@51.37.60.253] has quit [Quit: Connection closed] 06:35 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 06:35 -!- musdom [~Thunderbi@202.186.69.84] has joined #bitcoin-core-pr-reviews 06:37 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 07:08 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 07:09 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 07:11 -!- biteskola [~biteskola@170.76.76.188.dynamic.jazztel.es] has quit [Ping timeout: 252 seconds] 07:16 -!- jeremyrubin [~jr@024-176-247-182.res.spectrum.com] has quit [Ping timeout: 246 seconds] 07:17 -!- jeremyrubin [~jr@024-176-247-182.res.spectrum.com] has joined #bitcoin-core-pr-reviews 07:37 -!- mol [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 07:42 -!- molz_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 07:42 -!- mol_ [~mol@unaffiliated/molly] has quit [Ping timeout: 268 seconds] 07:45 -!- mol [~mol@unaffiliated/molly] has quit [Ping timeout: 260 seconds] 07:52 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 08:14 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 08:22 -!- fjahr [sid374480@gateway/web/irccloud.com/x-ilpsykelulslvhrl] has quit [Ping timeout: 260 seconds] 08:22 -!- digi_james [sid281632@gateway/web/irccloud.com/x-qyguvkvdfjgkmxpb] has quit [Ping timeout: 260 seconds] 08:24 -!- illest101 [uid109953@gateway/web/irccloud.com/x-rdfuapvyiesmwzgk] has quit [Ping timeout: 246 seconds] 08:24 -!- fjahr [sid374480@gateway/web/irccloud.com/x-bvvkqfeiyvkgcmqm] has joined #bitcoin-core-pr-reviews 08:24 -!- digi_james [sid281632@gateway/web/irccloud.com/x-gjrjamphazsicukr] has joined #bitcoin-core-pr-reviews 08:25 -!- illest101 [uid109953@gateway/web/irccloud.com/x-xgmmnbgpmqvzwdte] has joined #bitcoin-core-pr-reviews 08:27 -!- ivanacostarubio [~ivan@189.172.244.183] has joined #bitcoin-core-pr-reviews 08:35 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 08:36 -!- mango [~mango@c-73-71-224-94.hsd1.ca.comcast.net] has joined #bitcoin-core-pr-reviews 08:37 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 08:38 -!- mango [~mango@c-73-71-224-94.hsd1.ca.comcast.net] has left #bitcoin-core-pr-reviews [] 08:38 -!- mango [~mango@c-73-71-224-94.hsd1.ca.comcast.net] has joined #bitcoin-core-pr-reviews 08:38 -!- mango [~mango@c-73-71-224-94.hsd1.ca.comcast.net] has left #bitcoin-core-pr-reviews [] 08:38 -!- pglazman [~pglazman@c-73-71-224-94.hsd1.ca.comcast.net] has joined #bitcoin-core-pr-reviews 08:38 -!- pglazman [~pglazman@c-73-71-224-94.hsd1.ca.comcast.net] has left #bitcoin-core-pr-reviews [] 08:45 -!- marqusat [marqusat@gateway/vpn/protonvpn/marqusat] has joined #bitcoin-core-pr-reviews 08:52 -!- __grunch__ [~grunch@242-189-16-190.fibertel.com.ar] has joined #bitcoin-core-pr-reviews 08:53 -!- stickrobot [5ac5e387@90.197.227.135] has joined #bitcoin-core-pr-reviews 08:54 -!- stickrobot [5ac5e387@90.197.227.135] has left #bitcoin-core-pr-reviews [] 08:54 -!- ecola [~3cola@95.175.17.147] has joined #bitcoin-core-pr-reviews 09:07 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 09:09 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 09:22 -!- lightlike [~lightlike@p200300c7ef15af00f19cdf24a57643ec.dip0.t-ipconnect.de] has joined #bitcoin-core-pr-reviews 09:31 -!- cec47 [aedb819a@154.sub-174-219-129.myvzw.com] has joined #bitcoin-core-pr-reviews 09:36 -!- shaunapps [shaunsun@gateway/vpn/privateinternetaccess/shaunsun] has joined #bitcoin-core-pr-reviews 09:40 -!- dulcedu [ac5ca63e@172.92.166.62] has joined #bitcoin-core-pr-reviews 09:40 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 09:44 -!- musdom [~Thunderbi@202.186.69.84] has quit [Ping timeout: 240 seconds] 09:45 -!- jadi [~jadi@93.119.217.23] has quit [Ping timeout: 240 seconds] 09:52 -!- rage-proof [5f5bf265@ip5f5bf265.dynamic.kabel-deutschland.de] has joined #bitcoin-core-pr-reviews 09:53 -!- ccdle12 [955adef3@243.222.90.149.rev.vodafone.pt] has joined #bitcoin-core-pr-reviews 09:56 -!- svav [5245568f@82-69-86-143.dsl.in-addr.zen.co.uk] has joined #bitcoin-core-pr-reviews 09:59 -!- Talkless [~Talkless@mail.dargis.net] has joined #bitcoin-core-pr-reviews 10:00 -!- stickrobot [5ac5e387@90.197.227.135] has joined #bitcoin-core-pr-reviews 10:00 < glozow> #startmeeting 10:00 < jnewbery> hi! 10:00 < _0x0ff> hi 10:00 < b10c> hi 10:00 < schmidty> hi! 10:00 < ccdle12> hi 10:00 < emzy> hi 10:00 < glozow> Hey everybody! Welcome to PR Review Club :D 10:00 < stickrobot> first time here 10:00 < svav> hi 10:00 < amiti> hi 10:00 < glozow> Today we're looking at #21061, introduce rebroadcast module 10:00 < ecola> hi 10:00 < lightlike> hi 10:00 < glozow> Notes and questions: https://bitcoincore.reviews/21061 10:00 < glozow> Welcome stickrobot! 10:00 < glozow> any other first timers? 10:00 < jnewbery> hi stickrobot. Welcome! 10:00 < _0x0ff> welcome stickrobot 10:01 < stickrobot> thanks all 10:01 -!- sishir [47ca5b95@c-71-202-91-149.hsd1.ca.comcast.net] has joined #bitcoin-core-pr-reviews 10:01 < glozow> Have y'all had a chance to review the PR? y/n 10:01 < b10c> y 10:01 < ccdle12> n :( 10:01 < _0x0ff> y 10:01 < emzy> n 10:01 < stickrobot> n 10:01 < ivanacostarubio> n :( 10:01 < svav> y 10:02 < jnewbery> y 10:02 < lightlike> y 10:02 < glozow> Would someone like to summarize what the PR is doing for those who haven't had a chance to review it? :) 10:02 -!- pglazman [~pglazman@c-73-71-224-94.hsd1.ca.comcast.net] has joined #bitcoin-core-pr-reviews 10:02 -!- cls [49d77f9f@c-73-215-127-159.hsd1.nj.comcast.net] has joined #bitcoin-core-pr-reviews 10:02 -!- sipa_ [~pw@gateway/tor-sasl/sipa1024] has joined #bitcoin-core-pr-reviews 10:03 < sishir> All nodes (instead of wallet) will rebroadcast tx that should have bee confirmed by now 10:03 < svav> It is increasing security by changing rebroadcast message contents, so IP address cannot be linked with wallet address 10:03 < sishir> *been 10:03 < glozow> sishir: svav: yes! updating rebroadcast for the sake of improving privacy 10:03 -!- cchrysos [88248599@136.36.133.153] has joined #bitcoin-core-pr-reviews 10:03 < glozow> okay let's start with some conceptual questions. In what scenarios might a user want to rebroadcast their transaction? Why 10:03 < glozow> shouldn't each wallet just be solely responsible for rebroadcasting its own 10:03 < glozow> transactions? 10:04 < b10c> When his tx didn't propagate properly or he assumes that the network has forgotten about it 10:04 < sishir> nah cause there is privacy leak when they try to rebroadcast 10:04 -!- AdamHock [~adamhock@216.30.182.130] has joined #bitcoin-core-pr-reviews 10:04 < svav> Will rebroadcast if a node thinks transaction should have been processed but wasn't 10:05 < cls> rebroadcast opens one up to privacy leakage 10:05 < b10c> and the user's wallet might not always be online to rebroadcast 10:05 < glozow> b10c: correct, sometimes tx propagation just doesn't work properly. why would the network forget about a tx that was once in their mempools? 10:05 < sishir> Q. Why do nodes only ever rebroadcast acast their own tx tho? 10:06 < sishir> *rebroadcast 10:06 < glozow> sishir: svav: cls: b10c: yes! what can a spy node do to deanon transactions? 10:06 < glozow> sishir: that's just what the legacy behavior is 10:06 -!- tkc_ [a29af3ea@162.154.243.234] has joined #bitcoin-core-pr-reviews 10:06 < sishir> spy node can infer that the node is the source wallet and execute dust attack 10:06 < svav> A spy node can compare rebroadcasts from all nodes and identify differences, thus associate an IP address with a wallet address 10:06 < _0x0ff> sishir: new implementation rebroadcasts any transaction not just their own 10:07 < glozow> sorry just to clarify, i mean what can a spy node do right now, assuming nodes don't have the changes from this PR 10:07 < b10c> transactions expire after 14 days, can get size-limited if more higher fee trasnactions are there - or can be removed in a block which is later reorged (the reorged chain does not contain the transaction) 10:07 < _0x0ff> associate an address with an ip 10:07 < cls> I believe an adversary will be able to link transaction to a users wallet/publick address 10:07 < glozow> b10c: yes exactly 10:08 < sishir> glozow _0x0ff I see Thank you 10:08 -!- dulcedu [ac5ca63e@172.92.166.62] has quit [Quit: Connection closed] 10:08 < glozow> yep, with current rebroadcast behavior, any node that announces a tx more than once -> the tx is from their wallet 10:09 -!- dulcedu [ac5ca63e@172.92.166.62] has joined #bitcoin-core-pr-reviews 10:09 < amiti> sishir: you mentioned dust attack, can you describe the attack? 10:09 < jnewbery> sishir: A dust attack is something different. It doesn't require knowing the target's network address 10:09 -!- AdamHock [~adamhock@216.30.182.130] has quit [Client Quit] 10:09 < glozow> ok cool! let's dive into the PR. How does the rebroadcast module decide which transactions to rebroadcast 10:09 < glozow> (`TxRebroadcastHandler::GetRebroadcastTransactions()`)? 10:10 < _0x0ff> It rebrodcasts tx that are: older than 30min, txfee > m_cached_fee_rate (calcualted via BlockAssembler), hasnt been rebroadcasted >= MAX_REBROADCAST_COUNT (6) and wasn't rebroadcasted in the last MIN_REATTEMPT_INTERVAL (4h). 10:10 < glozow> Code here: https://github.com/bitcoin/bitcoin/pull/21061/files#diff-7dff50848db96bdb8edffc4d21daeca6d9050ec0e67d96072780ea5751e7df06R33 10:10 < svav> A dusting attack is an attack in which a trace amount of cryptocurrency, called dust, is sent to a large number of wallet addresses with the purpose of "un-masking" or de-anonymizing the addresses. Dusting attacks are tactics utilized by both criminals and law enforcement agencies. 10:10 < glozow> _0x0ff: yes! very prepared :D 10:10 < sishir> Yessir! Dust attack is when attacker sends some btc (dusts) to various addresses and observes the wallet rebroadcasting behavior 10:11 < glozow> is it possible for `GetRebroadcastTransactions` to return 0 transactions? 10:11 < _0x0ff> glozow: hehe, i try ;P 10:11 < glozow> also, is it possible for `GetRebroadcastTransactions` to return more than a block's worth of transactions? 10:11 < _0x0ff> it is i possible to return 0 txs from what I gather, eg when mempool is empty 10:12 < glozow> not just when the mempool is empty! :) 10:12 < _0x0ff> but it's not possible to return then that a more txs that would fit the block, i think it only returns 3/4th of txs that fit the block 10:12 < b10c> more than a block's worth is not possible 10:12 < glozow> _0x0ff: b10c: correct, it would never return more than 3/4 of the maximum block weight 10:12 -!- svav [5245568f@82-69-86-143.dsl.in-addr.zen.co.uk] has quit [Quit: Connection closed] 10:13 < _0x0ff> what is the other case that would return 0 txs? 10:13 < glozow> it could return fewer though, if the mempool just doesn't have many transactions that fit the criteria _0x0ff mentioned 10:13 < glozow> the filters are applied within the assembler 10:14 < glozow> does that make sense? 10:14 < _0x0ff> yup 10:14 < glozow> coolio 10:14 < cls> yes, nice explaination 10:14 < glozow> Moving on: In what scenarios would a miner include different transactions from our 10:14 < glozow> `BlockAssembler`? More specifically, when might the miner exclude a 10:14 < glozow> transaction, and when might it include a transaction yours doesn't? 10:14 < glozow> I can think of 3 in each category :) 10:15 < b10c> 1. a transaction didn't propagte to us or the miner yet 10:15 < _0x0ff> If the scenario when miner prioritizes different transactions from ours. 10:15 < marqusat> When a given tx does not reach a miner before they start mining the block or when they censor some transactions. 10:15 < b10c> 2. the miner manually prioritized the transaction 10:15 < b10c> 3. we and the miner have a conflicting transaction in our mempools 10:15 < _0x0ff> miner could also censor a tx 10:15 < b10c> 4. one party has a RBF replacement transaction which the other party doesn't have yet (similar to 1. and 3.) 10:15 < b10c> 5. the miner mines an emtpy block 10:15 < b10c> 6. censorship 10:15 < glozow> yaaaas all good answers 10:15 -!- svav [5245568f@82-69-86-143.dsl.in-addr.zen.co.uk] has joined #bitcoin-core-pr-reviews 10:16 < cls> minor does not prioritize due to low transaction fee 10:16 < _0x0ff> good answers b10c :) 10:17 < amiti> here's a scenario where the filters wouldn't return any txns to rebroadcast: at time 0, the fee rate cache runs, identifies min fee rate. at time 1 a block comes in and picks up all our mempool txns above this fee rate. when we go to connect the tip, we don't have any remaining txns above the calculated min fee rate. 10:17 < b10c> amiti: good point 10:17 < _0x0ff> ha, good one 10:18 < glozow> amiti: right. and all the high-fee transactions that might have arrived in the meantime would not meet the 30 minute recency filter 10:18 < amiti> glozow: yeah, good point :) 10:19 < glozow> Ok! so what does the rebroadcast attempt tracker do? 10:20 -!- larryruane_ [uid473749@gateway/web/irccloud.com/x-owttibdjsvfioccp] has joined #bitcoin-core-pr-reviews 10:20 < sishir> keeps track of the # of rebroadcast attempt 10:20 < _0x0ff> it tracks how many times we've rebroadcasted a tx and what was the last time we rebrodcasted it 10:20 < svav> tracks how many times and how recently we’ve attempted to rebroadcast a transaction so that we don’t spam the network with re-announcements. 10:20 < glozow> awesome, yes, svav: nice wording 10:21 < glozow> And Why might we want to keep a transaction in our rebroadcast attempt tracker even after removing it from our mempool? 10:21 < _0x0ff> and it prevents that network doesnt ddos itself with rebroadcasts 10:21 < glozow> Hint: what happens if we expire a transaction from our mempool and then our peer rebroadcasts it to us? When might this happen? 10:22 < _0x0ff> no clue about this one 10:22 < glozow> This part was really confusing for me - feel free to guess and ask questions 10:22 < sishir> I thought we remove them 10:23 < _0x0ff> well, i dont see a reason why deal with removing the tx given it will get expired or removed (when 500 limit is reached) 10:23 < glozow> mempool expiry is 2 weeks, while the attempt tracker expiry is ~3 months. why aren't they the same? -> there must be some reasons why we'd keep a tx in the attempt tracker after the mempool has forgotten about them 10:23 < cls> Each node may have a different state in a decentralized network 10:23 < _0x0ff> oh, if fees get high, and some txs get removed from mempool 10:24 < glozow> _0x0ff: after you remove from mempool, what happens if i rebroadcast to you? 10:24 < _0x0ff> hm but no, the BlockAssembler only gets txs from mempool 10:24 < _0x0ff> it will be added back to mempool 10:24 < glozow> (i still have the tx for whatever reason) 10:24 < glozow> sure, it gets added back to mempool 10:24 < svav> A peer might have a lower minimum fee rate that us, so they won't exclude it like us 10:24 < glozow> is it possible this transaction will _never_ get mined? 10:24 < glozow> can it be consensus-invalid? or policy-invalid? 10:25 < glozow> beyond just fees 10:25 < larryruane_> no because in that case it wouldn't have entered the mempool in the first place 10:25 < glozow> larryruane_: is it possible that the rest of the network has policy rules that we don't know about? 10:26 < glozow> let's say we're version 22 nodes with rebroadcast implemented 10:26 < b10c> not consensus invalid - but policy-invalid can happen if we don't support e.g. a softfork 10:26 < glozow> version 24 nodes have a new policy for version 2 witnesses, for example 10:26 < b10c> wait can it be consensus invalid? 10:26 < glozow> b10c: are there nodes right now that don't know about some consensus rules? :) 10:27 < b10c> sure, I there are nodes that don't know about e.g SegWit 10:27 < glozow> b10c: exactly 10:27 < b10c> I think e.g. forkmonitor runs a 0.10.x Bitcoin Core node 10:28 < glozow> heh. so, what happens if there are nodes rebroadcasting transactions that don't meet new consensus rules? 10:30 < b10c> hm 10:30 < b10c> not sure 10:30 < _0x0ff> same, no idea 10:30 < jnewbery> let's try to figure it out! 10:30 < glozow> b10c: what will updated nodes do? (the ones that know about the new consensus rules) 10:30 < glozow> and _0x0ff 10:30 < b10c> reject the transaction 10:31 < glozow> b10c: correct 10:31 < glozow> and what will old nodes do? 10:31 < _0x0ff> accept it, and keep on rebroadcasting the tx 10:31 < glozow> _0x0ff: correct! 10:31 < glozow> so what happens if 2 of these old nodes are connected to each other? 10:32 < _0x0ff> they will keep sending the tx between each other so it will never expire (until expiry conditions are met) 10:32 < glozow> _0x0ff: correct 10:32 < b10c> need to be more than 2 nodes with the current filter, right? 10:32 < glozow> let's say the tx is removed from the rebroadcast attempt tracker as soon as it expires from mempool 10:32 < b10c> 4h * 4 attempts < 14 days 10:33 < glozow> will these 2 nodes ever forget about the tx? 10:33 < sipa_> the last time a consensus rule change was introduced that changed something that wasn't already very widespread nonstandard was BIP113 i believe 10:33 < sipa_> (just to give some context) 10:33 < glozow> sipa_: right. i think this applies to new policy changes as well, though 10:33 < sipa_> glozow: it does 10:34 < sipa_> though i'm not sure when the last time was that policy was restricted 10:34 < b10c> fwiw: BIP 113: Median time-past as endpoint for lock-time calculations https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki 10:36 < glozow> soooo, should we remove a tx from rebroadcast attempt tracker as soon as we remove it from mempool? 10:37 < b10c> based on your question I don't think the 2 nodes would ever forget about the tx, but tbh my train of though got a bit lost 10:37 < sishir> wait so the nodes will not forget about the tx? 10:37 < sishir> im a lil confused 10:37 < b10c> glozow: no 10:37 < svav> glozow: no 10:37 < _0x0ff> no, we shouldnt remove it - so the tx woudl get expired faster 10:37 < b10c> never* ^ 10:38 < glozow> b10c: svav: _0x0ff: correcto 10:38 < sishir> isn't the tx already confirmed, mined and in the blockchain? So, we still want to keep a copy of it in rebroadcast attempt? 10:39 < jnewbery> sishir: imagine both node A and node B have not upgraded and both consider the tx valid. If there's no way to prevent rebroadcasting, they'll just continue to rebroadcast the tx to each other. 10:39 < lightlike> though if you send >500 of these txes, they would still never forget even with the tracker, so I'm thinking the tracker only helps when this unintentional, not in an attack case or does it? 10:39 < jnewbery> sishir: this is only for unconfirmed transactions. 10:39 < _0x0ff> besides the the limit (how old tx we keep) in m_attempt_tracker there's also a size limit of 500 10:39 < sishir> Ahhh i see 10:40 < svav> You need to keep it in your rebroadcast attempt tracker so you don't rebroadcast it too many times 10:40 < glozow> lightlike: yeah, but i think you could get old nodes to keep talking about newly invalid transactions regardless 10:41 < glozow> svav: right, so let's see how the 3month expiry helps. let's say you expire a tx from mempool after 2 weeks, and you keep it in your rebroadcast attempt tracker. what happens if you see the tx again? 10:42 < glozow> (let's assume you don't exceed the 500 limit in this situation) 10:43 < svav> You would only rebroadcast it a maximum of 6 times within the 3 months 10:44 < _0x0ff> it will folow the same rules as it did before it got removed, which means we might not rebroadcast it immidiatelly after receiving it (if conditions for rebrodcasting arent met) 10:44 < glozow> svav: yup! so assuming the 2 old nodes keep it in their rebroadcast attempt trackers for 3 months, will they eventually forget about the tx? 10:45 < _0x0ff> yes :) 10:45 -!- pglazman [~pglazman@c-73-71-224-94.hsd1.ca.comcast.net] has left #bitcoin-core-pr-reviews ["Textual IRC Client: www.textualapp.com"] 10:45 < glozow> _0x0ff: :) 10:45 < svav> yes when they have each rebroadcasted it 6 times 10:45 < glozow> svav: correct, after 6 times each 10:46 < glozow> so this helps, as long as they don't reach the 500 maximum 10:46 -!- ccdle12 [955adef3@243.222.90.149.rev.vodafone.pt] has quit [Quit: Connection closed] 10:46 -!- stickrobot [5ac5e387@90.197.227.135] has quit [Quit: Connection closed] 10:46 < glozow> amiti: have you considered increasing the limit? or keeping a separate tracker for expired-from-mempool transactions? 10:46 -!- stickrobot [5ac5e387@90.197.227.135] has joined #bitcoin-core-pr-reviews 10:47 < amiti> glozow: yeah the limit is slightly arbitrary right now, just to pick a starting point. I think the most relevant will be observing the mechanism out in the wild & seeing if this limit is useful 10:47 < glozow> hopefully we feel comfortable moving to the next question? In general, when should we remove transactions from our rebroadcast attempt tracker? 10:47 < _0x0ff> i also saw a comment about persisting m_attempt_tracker to disk - do we think that's worthy to have? 10:47 < glozow> amiti: makes sense to me 10:47 < amiti> also, if the network is working as expected, we shouldn't be rebroadcasting txns heavily 10:48 < b10c> amiti: especially if many nodes rebroadcast with this patch 10:48 < amiti> =P 10:50 < jnewbery> another potential change could be to move the txids into a rolling filter if they reach MAX_REBROADCAST_COUNT, since at that point we only need a test for inclusion 10:50 < sishir> I  conflicting tx in the block & tx that gets taken out of mempool cause of RBF 10:50 < glozow> sishir: yeah, those are good ones 10:50 < cls> might be worth looking a dynamic algorithms such as TCP retransmission which slowly degrades over time 10:51 < glozow> jnewbery: ooooooh 10:51 < glozow> or a cuckoo cache 🐦 10:52 < amiti> jnewbery: are you suggesting replace attempt tracker with rolling bloom filter? or having an additional? 10:52 < glozow> anyone else have ideas for when we should remove from rebroadcast attempt tracker? 10:52 < amiti> cls: yeah I considered that sort of design, but it feels overkill for the use case 10:52 < jnewbery> potentially having an additional, but I'm just throwing an idea out. It might not be good! 10:52 < svav> when it's confirmed? 10:52 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 10:53 < amiti> jnewbery: gotcha :) 10:53 < glozow> svav: yep! that's a big one 10:53 < svav> when it expires? 10:53 < cls> amiti: totally makes sense 10:53 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 10:53 < glozow> are there any other cases, beyond seeing a conflict in a block, where the tx is guaranteed to be invalid? 10:54 < glozow> svav: expires from where? 10:54 < sipa_> glozow: did you know there is an awesome way of combing cuckoo tables with (tolling) bloom filters? :) 10:54 < sipa_> *fombining 10:54 < glozow> glozow: whaaaa?! 10:54 < glozow> sipa_* 10:54 < sipa_> **combining 10:54 < glozow> HAH i tagged myself 😂 10:54 < sipa_> look up cuckoo filter 10:55 < sishir> gotta head out but thank you glozow. learned a lot 10:55 -!- sishir [47ca5b95@c-71-202-91-149.hsd1.ca.comcast.net] has quit [Quit: Connection closed] 10:56 < sipa_> i did some work on creating an efficient rolling cuckoo filter, but put it aside with a bit higher priority things 10:56 < glozow> sishir: thanks for coming! 10:56 < glozow> sipa_ greatest crossover event 10:57 < glozow> ok I think we have time to do part of the last question: How is the estimated minimum feerate for inclusion in a block, `m_cached_fee_rate`, calculated? 10:57 < _0x0ff> It uses `BlockAssembler::minTxFeeRate()` which calculates a min fee that would still be included in the next mined block. This approach is better because it calculates fees based on the future mintxfee and not the past. 10:57 < svav> Is it something to do with MAX_ENTRY_AGE??? 10:58 < glozow> _0x0ff: correct, assemble a block and get the min fee 10:58 < glozow> when do we do this? 10:59 < glozow> svav: er, i don't think? 10:59 < svav> glozow: Sorry, this was in relation to the previous question, but we can move on 10:59 < glozow> svav: okie gotcha 11:00 < glozow> soooo we calculate `m_cached_fee_rate` every 1 minute 11:00 < glozow> that's all we have time for heh 11:00 < glozow> #endmeeting 11:00 < jnewbery> Thanks glozow! Great meeting :) 11:00 < amiti> thanks glozow! 11:00 < schmidty> Thanks glozow 11:00 < lightlike> thanks! 11:00 < glozow> thanks for coming, everybody! 11:00 < b10c> Thanks GNU loria! 11:00 < ivanacostarubio> thanks glozow ! 11:00 < stickrobot> thanks! 11:00 < marqusat> thank you! 11:00 < jonatack> thanks glozow! 11:00 -!- stickrobot [5ac5e387@90.197.227.135] has left #bitcoin-core-pr-reviews [] 11:00 < emzy> thank you glozow! 11:00 < svav> Thanks glozow! 11:01 < cls> thank you glozow -- great session 11:01 < ecola> thanks glozow 11:01 < glozow> thanks for cool PR amiti! 11:01 -!- cec47 [aedb819a@154.sub-174-219-129.myvzw.com] has quit [Quit: Connection closed] 11:01 < larryruane_> thanks glozow and amiti! 11:01 < _0x0ff> thanks glozow, this was fun! 11:01 -!- cls [49d77f9f@c-73-215-127-159.hsd1.nj.comcast.net] has quit [Quit: Connection closed] 11:01 -!- cchrysos [88248599@136.36.133.153] has quit [Quit: Connection closed] 11:01 < _0x0ff> and great work on the PR amiti, enjoyed reviewing it 11:01 < glozow> _0x0ff: ⭐ student 11:02 < amiti> thanks to everyone who has been reviewing!! I'm working on incorporating the feedback :) 11:03 < jonatack> Meeting log is up at https://bitcoincore.reviews/21061#meeting-log 🍰 11:03 -!- marqusat [marqusat@gateway/vpn/protonvpn/marqusat] has quit [Quit: Leaving] 11:03 < glozow> so rolling cuckoo bloom filters 11:04 -!- ecola [~3cola@95.175.17.147] has quit [Quit: Leaving] 11:06 < emzy> I like the name. 11:07 -!- svav [5245568f@82-69-86-143.dsl.in-addr.zen.co.uk] has quit [Quit: Connection closed] 11:07 -!- rage-proof [5f5bf265@ip5f5bf265.dynamic.kabel-deutschland.de] has quit [Quit: Connection closed] 11:24 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 11:25 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 11:29 < wumpus> yes it sounds catchy 11:30 < ivanacostarubio> exit 11:30 -!- ivanacostarubio [~ivan@189.172.244.183] has quit [Quit: WeeChat 3.1] 11:31 < sipa_> glozow: just rolling cuckoo, no bloom involved 11:32 -!- biteskola [~biteskola@170.76.76.188.dynamic.jazztel.es] has joined #bitcoin-core-pr-reviews 11:39 -!- sipa_ [~pw@gateway/tor-sasl/sipa1024] has quit [Quit: Lost terminal] 11:49 -!- tkc_ [a29af3ea@162.154.243.234] has quit [Quit: Connection closed] 11:53 -!- belcher is now known as belcher_ 11:56 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 11:58 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 11:59 -!- tkc_ [a29af3ea@162.154.243.234] has joined #bitcoin-core-pr-reviews 12:05 -!- Talkless [~Talkless@mail.dargis.net] has quit [Quit: Konversation terminated!] 12:08 -!- dulcedu [ac5ca63e@172.92.166.62] has quit [Quit: Connection closed] 12:09 -!- belcher_ [~belcher@unaffiliated/belcher] has quit [Quit: Leaving] 12:12 -!- molz_ [~mol@unaffiliated/molly] has quit [Ping timeout: 248 seconds] 12:15 -!- mol_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 12:18 < jnewbery> jonatack: thanks for uploading the log! 12:21 < jonatack> jnewbery: 👍 12:28 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 12:30 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 12:31 -!- kiltzman [~k1ltzman@195.189.99.96] has quit [Ping timeout: 265 seconds] 12:36 -!- kiltzman [~k1ltzman@5.206.224.243] has joined #bitcoin-core-pr-reviews 12:36 -!- tkc_ [a29af3ea@162.154.243.234] has quit [Quit: Connection closed] 12:52 -!- pglazman [~pglazman@c-73-71-224-94.hsd1.ca.comcast.net] has joined #bitcoin-core-pr-reviews 12:52 -!- stortz [c8b9c69a@unaffiliated/stortz] has joined #bitcoin-core-pr-reviews 13:00 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 13:02 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 13:33 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 13:34 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 13:37 -!- biteskola [~biteskola@170.76.76.188.dynamic.jazztel.es] has quit [Ping timeout: 260 seconds] 13:57 -!- lightlike [~lightlike@p200300c7ef15af00f19cdf24a57643ec.dip0.t-ipconnect.de] has quit [Ping timeout: 258 seconds] 14:05 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 14:05 -!- __grunch__ [~grunch@242-189-16-190.fibertel.com.ar] has quit [Remote host closed the connection] 14:06 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 14:12 -!- tkc_ [a29af3ea@162.154.243.234] has joined #bitcoin-core-pr-reviews 14:18 -!- tkc_ [a29af3ea@162.154.243.234] has quit [Ping timeout: 240 seconds] 14:37 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 14:41 -!- shesek [~shesek@unaffiliated/shesek] has quit [Remote host closed the connection] 14:41 -!- shesek [~shesek@unaffiliated/shesek] has joined #bitcoin-core-pr-reviews 14:43 -!- jadi [~jadi@93.119.217.23] has quit [Ping timeout: 260 seconds] 14:46 -!- stortz [c8b9c69a@unaffiliated/stortz] has quit [Quit: Connection closed] 15:11 -!- biteskola [~biteskola@170.76.76.188.dynamic.jazztel.es] has joined #bitcoin-core-pr-reviews 15:12 -!- andrewtoth_ [~andrewtot@gateway/tor-sasl/andrewtoth] has quit [Remote host closed the connection] 15:12 -!- andrewtoth_ [~andrewtot@gateway/tor-sasl/andrewtoth] has joined #bitcoin-core-pr-reviews 15:14 -!- seven_ [~seven@cpe-90-157-197-248.static.amis.net] has quit [Read error: Connection reset by peer] 15:15 -!- seven_ [~seven@cpe-90-157-197-248.static.amis.net] has joined #bitcoin-core-pr-reviews 15:26 -!- davterra [~davterra@gateway/tor-sasl/tralfaz] has quit [Remote host closed the connection] 15:26 -!- davterra [~davterra@gateway/tor-sasl/tralfaz] has joined #bitcoin-core-pr-reviews 15:35 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 15:36 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 15:39 -!- musdom [~Thunderbi@202.186.69.84] has joined #bitcoin-core-pr-reviews 15:40 -!- biteskola [~biteskola@170.76.76.188.dynamic.jazztel.es] has quit [Ping timeout: 265 seconds] 15:54 -!- biteskola [~biteskola@170.76.76.188.dynamic.jazztel.es] has joined #bitcoin-core-pr-reviews 15:59 -!- belcher [~belcher@unaffiliated/belcher] has joined #bitcoin-core-pr-reviews 16:01 -!- TheRec_ [~toto@drupal.org/user/146860/view] has joined #bitcoin-core-pr-reviews 16:02 -!- TheRec [~toto@drupal.org/user/146860/view] has quit [Read error: Connection reset by peer] 16:08 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 16:09 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 16:25 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 16:30 -!- jadi [~jadi@93.119.217.23] has quit [Ping timeout: 240 seconds] 16:44 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 16:46 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 17:12 -!- sdaftuar [~sdaftuar@gateway/tor-sasl/sdaftuar] has quit [Ping timeout: 240 seconds] 17:12 -!- sdaftuar [~sdaftuar@gateway/tor-sasl/sdaftuar] has joined #bitcoin-core-pr-reviews 17:16 -!- biteskola [~biteskola@170.76.76.188.dynamic.jazztel.es] has quit [Ping timeout: 240 seconds] 17:16 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 17:22 -!- jadi [~jadi@93.119.217.23] has quit [Ping timeout: 248 seconds] 17:34 -!- mol_ [~mol@unaffiliated/molly] has quit [Read error: Connection reset by peer] 17:35 -!- mol [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 17:45 -!- cguida [~Adium@2601:282:200:5830:29a8:44d1:650c:3c08] has joined #bitcoin-core-pr-reviews 17:49 -!- cguida [~Adium@2601:282:200:5830:29a8:44d1:650c:3c08] has quit [Ping timeout: 260 seconds] 17:51 -!- mol_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 17:54 -!- mol [~mol@unaffiliated/molly] has quit [Ping timeout: 248 seconds] 18:17 -!- molz_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 18:20 -!- mol_ [~mol@unaffiliated/molly] has quit [Ping timeout: 248 seconds] 19:18 -!- mol_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 19:21 -!- molz_ [~mol@unaffiliated/molly] has quit [Ping timeout: 252 seconds] 19:22 -!- molz_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 19:25 -!- mol_ [~mol@unaffiliated/molly] has quit [Ping timeout: 252 seconds] 19:25 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 19:29 -!- jadi [~jadi@93.119.217.23] has quit [Ping timeout: 246 seconds] 19:36 -!- mol_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 19:39 -!- molz_ [~mol@unaffiliated/molly] has quit [Ping timeout: 246 seconds] 20:21 -!- belcher_ [~belcher@unaffiliated/belcher] has joined #bitcoin-core-pr-reviews 20:25 -!- belcher [~belcher@unaffiliated/belcher] has quit [Ping timeout: 248 seconds] 20:29 -!- shaunapps [shaunsun@gateway/vpn/privateinternetaccess/shaunsun] has quit [Quit: Leaving] 21:03 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 21:25 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 21:33 -!- outfawkesd_ [outfawkesd@gateway/vpn/privateinternetaccess/outfawkesd] has joined #bitcoin-core-pr-reviews 21:34 -!- outfawkesd [outfawkesd@gateway/vpn/privateinternetaccess/outfawkesd] has quit [Ping timeout: 240 seconds] 21:45 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 21:50 -!- jadi [~jadi@93.119.217.23] has quit [Ping timeout: 248 seconds] 22:01 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 22:03 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 22:27 -!- sdaftuar [~sdaftuar@gateway/tor-sasl/sdaftuar] has quit [Ping timeout: 240 seconds] 22:29 -!- sdaftuar [~sdaftuar@gateway/tor-sasl/sdaftuar] has joined #bitcoin-core-pr-reviews 22:31 -!- avril [wha@unaffiliated/avril] has quit [Ping timeout: 258 seconds] 22:33 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 22:35 -!- jadi [~jadi@93.119.217.23] has quit [Remote host closed the connection] 22:43 -!- mol [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 22:45 -!- molz_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 22:48 -!- mol_ [~mol@unaffiliated/molly] has quit [Ping timeout: 248 seconds] 22:48 -!- mol [~mol@unaffiliated/molly] has quit [Ping timeout: 240 seconds] 22:51 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 22:58 -!- molz_ [~mol@unaffiliated/molly] has quit [Ping timeout: 240 seconds] 22:59 -!- mol [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 23:03 -!- mol_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 23:04 -!- molz_ [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 23:04 -!- jadi [~jadi@93.119.217.23] has quit [] 23:06 -!- mol [~mol@unaffiliated/molly] has quit [Ping timeout: 260 seconds] 23:08 -!- mol_ [~mol@unaffiliated/molly] has quit [Ping timeout: 260 seconds] 23:09 -!- mol [~mol@unaffiliated/molly] has joined #bitcoin-core-pr-reviews 23:09 -!- jadi [~jadi@93.119.217.23] has joined #bitcoin-core-pr-reviews 23:11 -!- molz_ [~mol@unaffiliated/molly] has quit [Ping timeout: 260 seconds] 23:52 -!- musdom [~Thunderbi@202.186.69.84] has quit [Quit: musdom] 23:52 -!- musdom1 [~Thunderbi@202.186.69.84] has joined #bitcoin-core-pr-reviews 23:54 -!- musdom1 is now known as musdom