19:00:43 #startmeeting 19:00:43 Meeting started Thu Aug 4 19:00:43 2016 UTC. The chair is wumpus. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:00:43 Useful Commands: #action #agreed #help #info #idea #link #topic. 19:01:01 gmaxwell: mm, i just stuck some "#error foo" in the asm paths, it blows up as expected. 19:01:06 whoops, will continue after meeting 19:01:15 topic 0.13.0, I guess? 19:01:22 #topic 0.13.0 final? 19:01:33 did anyone hear of any critical problems with rc2? 19:01:54 I haven't heard much on it. Been quiet. 19:02:03 we forgot to backport 8438/8365 into 0.13... 19:02:16 sipa something for 0.13.1? 19:02:29 hi. greetings. 19:02:39 wumpus: the release notes are still inappropriate AFAIK 19:03:07 also gmaxwell was going to add a section I believe, covering the new relay policy influences (maybe I missed that being added) 19:03:11 hi 19:03:12 I think I owed some release note text which I haven't done yet re max blocksize settings. 19:03:12 this isn't short-term development related but it's high signal-noise crypto content that a few developers recently participated in, http://diyhpl.us/wiki/transcripts/2016-july-bitcoin-developers-miners-meeting/dan-boneh/ 19:03:16 Wouldn't 8438 require rc3? 19:03:16 luke-jr: then update them, sipa also still wants to add something 19:03:22 MarcoFalke: yes 19:03:28 wumpus: my PR to update them is still open. 19:03:35 luke-jr: it also updates code 19:03:43 luke-jr: does the PR still contain code changes? 19:03:46 so you want a version without code changes? 19:04:06 luke-jr: if you make a PR that just updates the changelog, and it's accepted by others, it would have been merged a long time ago 19:04:47 wumpus: the current language was not accepted. 19:04:59 sipa: do you think https://github.com/bitcoin/bitcoin/pull/8438 can wait for 0.13.1? 19:05:06 I find this double-standard somewhat annoying. 19:05:12 sigh, if this is another meeting of us all arguing against luke-jr then i'm going to find something else to do 19:05:29 heh. Yes. Finish this. luke-jr can open a pr (action) 19:05:40 I'm not arguing against luke-jr 19:06:08 anyhow that derailed my question - so no one had any critical problems with 0.13.0rc2? 19:06:22 and I don't mean with the release notes 19:06:30 is there any fear of instagibbs' problem being due to a code error? 19:06:38 what problem? 19:06:41 sipa, fwiw it's showing up on older fork... 19:06:58 it's not HD-related, or anything fairly recent 19:07:00 instagibbs: so without the bip32 changes? 19:07:04 correct 19:07:05 you mean the salvagewallet problem? that's old hat, there's two issues open with salvagewallet problems 19:07:09 instagibbs: ok, good to know 19:07:11 as I mentioned 19:07:19 sorry, i didn't follow the whole discussion 19:07:19 this is not a last minute problem 19:07:21 wumpus: earlier we were discussing 0.13.0's failure mode downgrading from 0.13.1; I am not clear what the status of that is, or if we need changes for it 19:07:22 yes I'll double-check that keys aren't actually going away 19:07:26 but not worried now 19:07:31 OK. 19:07:36 LoadWallet works anyhoo :P 19:07:39 yes 19:08:26 so, all agree that it is time to release 0.13.0 final? 19:08:34 (after say, a day of updating the release notes) 19:09:06 do we care about what happens when someone downgrades 0.13.1 to 0.13.0 after segwit activates? 19:09:08 ACK, I can live with https://github.com/bitcoin/bitcoin/pull/8438 for 0.13.1 but don't know about others opinions. 19:09:09 i think we can just tell users who want to downgrade to 0.13.0 after segwit activates to do a reindex? 19:09:27 they'll end up redownloading blocks, without witnesses, but that seems fine 19:09:30 sipa: I care only to the extent that it shouldn't make a "working" node that doesn't match consensus 19:09:32 kind of a weird case to try to optimize 19:09:45 agree with luke-jr - it should give a clear error 19:09:49 ie, it should give a hard error or reindex or something 19:09:54 it should not seem to work, but if it requires a reindex that's fine 19:10:04 sdaftuar: Yes. I think this would be good. I don't think we need to cover the downgrade case. 19:10:05 luke-jr: i think the only risk (but i haven't tried) is that it either works fine or crashes 19:10:11 Loss of #8438 is unfortunate but if including it would mean delaying the release I don't think it would be good to do so. 19:10:15 luke-jr: the UTXO set is identical across the two 19:10:42 I suggest someone should try it before final 0.13.0 19:10:53 probably not difficult using testnet? 19:10:56 sipa: i guess its somewhat unfortunate that it will seem to work fine. 19:10:57 luke-jr: ack 19:11:00 it can be tested by changing the testnet parameters. 19:11:10 detecting this situation is not hard, btw 19:11:24 oh because 0.13.1 will use OPT_WITNESS? 19:11:32 sdaftuar: yes 19:12:03 hm so maybe we should add code then to look for that, hmm 19:12:16 it's very last minute though... 19:12:23 i agree. and seemingly not that important 19:12:25 i wish we thought of this before 19:12:35 but i don't think it's worth holding up the release for 19:12:56 it's trivial to test I think; if everyone else is too busy, I will try to do it today 19:13:02 gmaxwell: it would mean doing another rc, we could do final next week 19:13:58 that woudl also allow adding segwit downgrade protection sipa is currently discussing. (should be 3loc or so) 19:14:10 I don't know if it is that critical though, at some point we should just make the cut and stop slipping 19:14:32 yes that is true 19:15:06 * sipa notes that we're only 3 days past the date in https://github.com/bitcoin/bitcoin/issues/7679 19:15:36 ideally deadlines don't slip, but iirc we're much more on track than for earlier major releases 19:15:37 Yes. Maybe https://github.com/bitcoin/bitcoin/pull/8438 + SW0.13 downgrade compatibility is worth a week delay 19:15:40 yes, we've caught up a bit with the rc1 slip by doing a fast rc phase 19:15:48 [13bitcoin] 15luke-jr opened pull request #8458: [0.13] release notes: remove bad advice to switch to blockmaxweight prematurely (06master...060.13_relnotes_remove_bad_advice) 02https://github.com/bitcoin/bitcoin/pull/8458 19:15:51 0.13.1 shouldnt be too far behind at least, but my preference is to include it and do another rc 19:15:54 note that I planned amonth for the rc1 phase 19:15:59 eh for the rc phase 19:16:31 well the downgrade protection cna't be postponed to 0.13.1 19:16:34 that'd defeat the point 19:16:38 otherwise that'd be my preference 19:16:45 8458 also mentions an idea I had for a 3-liner to make blockmaxsize perform identical to blockmaxweight, if we do another rc.. if that's desired, someone please say so and I'll do it now 19:17:01 luke-jr: i think you included a few commits too many 19:17:01 yes now everyone starts with last minute ideas 19:17:02 great 19:17:11 oh crap, I made it against master 19:17:34 [13bitcoin] 15luke-jr closed pull request #8458: [0.13] release notes: remove bad advice to switch to blockmaxweight prematurely (06master...060.13_relnotes_remove_bad_advice) 02https://github.com/bitcoin/bitcoin/pull/8458 19:17:38 luke-jr: nah, something changing transaction selection.. not a good thing now. 19:17:41 wumpus: well, it's trivial and probably unnecessary; fine if we don't do it 19:18:28 #action check if downgrade protection is really needed, or whether it already fails 19:18:52 [13bitcoin] 15luke-jr opened pull request #8459: [0.13] release-notes: Do not encourage changing blockmaxsize to blockmaxweight (060.13...060.13_relnotes_remove_bad_advice) 02https://github.com/bitcoin/bitcoin/pull/8459 19:19:40 other topics? 19:19:59 oh 19:20:29 segwit mempool malleability dos (#8279) 19:20:33 (sec, someone else feel free to go ahead) 19:20:52 #topic segwit mempool malleability dos 19:21:51 wasn't that supposed to be solved in #8312? 19:21:57 no, it was only solved for 0.13.0 19:22:04 we need to decide what to do in our first segwit release 19:22:08 so i suggested removing the "transaction failure purely due to witness does not cause rejection cache entry" 19:22:42 with the rationale that all it does it prevent an attacker from hiding a valid transaction from you in some cases 19:23:04 but it doesn't prevent it entirely (they can announce and just never send the transaction) 19:23:35 sdaftuar notes that the mempool malleability attack only needs a short lived connection, while the never send tx data attack needs a persistent one 19:23:53 and it needs more than one persistent one -- you need several, as we retry tx download from other peers 19:24:18 sdaftuar: rejection cache is also temporary, but a node won't just re-request... 19:24:31 i think i'm coming around to the idea of full verification of all txs 19:24:39 morcos: hah 19:24:51 was there rationale to inv'ing with txid instead of wtxid for segwit nodes? 19:25:31 (just noting that wtxid would be Keep The Same Behavior As Pre SegWit (tm)) 19:26:38 BlueMatt: duplicating a lot of logic (mempool, orphan, caches, ...), and causes at least a potential doubling anyway (you could be inved the same tx from a pre-segwit and post-segwit node once with txid and once with wtxid, without being able to tell they're the same) 19:27:24 also in the long term, the high malleability of witnesses would let an attacker waste lots of bandwidth. with nodes relaying different witness versions of the same txn among each other. 19:27:42 sipa: if you're inved a tx with a witness from a pre-segwit node we get a double anyway since its garbage to us 19:28:19 gmaxwell: same is true for scriptSigs...up to IsStandard limits (which could, in fact, be more easily enforced on witnesses) 19:28:22 BlueMatt: that's true but shouldn't happen, as pre-segwit nodes shouldn't be accepting segwit transactions unless they're running with an unusual policy 19:28:29 also, if you have a tx with malleable witness (say, op_drop argument), nodes on the network could modify the witness without invalidating, and you wouldn't even be able to tell you already had the transaction before download 19:28:59 and you couldn't ban them for it, because they're all valid transactions 19:30:00 BlueMatt: the kind of isstandard restriction against malleability only works great for limited classes of transactions, at least in the long term that isn't great. 19:30:10 I'm aware 19:30:18 a solution is inving with both txid and wtxid... but if we go that way, we should also adds resource information to all invs (fees, size, sigops, ...) 19:30:35 sipa: I was about to say that...seems like a real solution is inving both... 19:30:41 aren't we approachign the size of the tx at that point 19:31:04 morcos: certainly within an order of magnitude 19:31:07 gmaxwell: but IsStandard is allowed to serve the same purpose as always - enforce reasonable limits to ensure code sanity until we've explored edge cases thouroughly 19:31:20 the txid is within an order of magnitude. :P 19:31:30 sipa: i think we might we just end up overfitting current policy rules by adding resource information 19:31:32 (for the median size) 19:31:50 sdaftuar: 'overfitting' ? 19:31:51 but future mempool sync these sizes will matter less. 19:32:03 sdaftuar: feerate is pretty fundimental, however. 19:32:04 ie policy will change, and the information will be insufficient 19:32:08 I think including sigops would be dumb. 19:32:22 gmaxwell: yes, but already handled with less bandwidth by feefilter 19:32:29 if sigops really matter, something is wrong. 19:32:48 sdaftuar: indeed. feefilter makes it implicit. 19:32:53 well, ok... we could send size and fee 19:33:05 but that's not much better than making feefilter mandatory 19:33:12 except slightly more flexible 19:33:20 and sending two hashes is annoying 19:33:24 we're in the weeds for this right now. 19:33:31 agree 19:33:45 i think there is no simple clear cut solution for this 19:34:08 if we're doing set recon it doesn't really matter that much how long the identifiers are. 19:34:16 but that's much further out 19:34:20 if inv'ing both hashes werent stupid for bandwidth, Id say that was a pretty great solution 19:34:29 true 19:34:57 sipa: depends on how long it takes me to convince you to implement the relevant number theory code. :P 19:35:52 In any case, the witnessID really doesn't matter for much of anything except rejection here. 19:36:00 alternative idea: make feefilter mandatory for segwit, and just disable rejectioncache... 19:36:16 rejectioncache only helps in practice against repeated announcements of transactions below your threshold 19:36:28 it's not a protection against attacks 19:38:01 hm, not a bad idea 19:38:03 feefilter isn't even used by default last I knew? (because there is no min fee until the mempool fills) 19:38:15 luke-jr: good point 19:38:40 damn, mem^H^H^Hdiskpool was too late :( 19:38:47 i'm all for making fee filter mandatory, if i'd known people would have liked it this much, we should have designed it that way from teh beginning 19:39:06 i'm a bit worried about removing the rejection cache entirely 19:39:16 luke-jr: there is a minrelayfee. 19:39:27 Do we not feefilter on that? 19:39:29 gmaxwell: but we let in free transactions still 19:39:35 oh right. 19:39:58 anytime there is any policy difference between nodes (such as a change in minrelay fee change isDust) then you get txs bouncing aroudn the network between the sets of nodes with different policies 19:40:06 full validation and distinguishing why rejection happened would help. 19:40:11 i think its nice to have a sort of protection against that 19:42:12 we could just have one rejection filter per peer type. 19:42:25 e.g. rejection filter for non-sw peers and a rejection filter for sw peers. 19:43:03 with sw peers using wtxid invs? 19:43:30 sdaftuar: still not enough... you need to be able to tell whether you already have another version of the same tx 19:43:35 even with only sw peers 19:43:58 +full validation. 19:44:44 sipa: i don't see why that's needed, any more than we have today with not knowing a tx is a double-spend before processing 19:45:50 sdaftuar: someone connects to a 1000 nodes on the network, and relays a different version of the same valid transaction to each 19:45:59 sdaftuar: now you potentially need to download 1000 transactions 19:46:14 only one of which pays fees 19:46:20 proposal: make feefilter mandatory. fully validate txs so we can punish peers who send us invalid stuff. don't put any witness tx in the rejection cache. then evaluate how useful rejection cache continues to be or whether we have policy violating segwit txs bouncing around 19:46:21 so you mean a 3rd party uses signature malleability to do this? 19:46:32 because the tx originator can already do that 19:46:59 sdaftuar: right, the distinction isn't all that big 19:47:34 morcos: i like that... but i think it's a big change for 0.13.1 19:47:34 the distinction though is that an attacker doing it pays fees, eventually runs out of funds, vs an attacker doing it to other peoples' txn does not ever run out of funds. 19:48:10 sipa: i think if we start with " don't put any witness tx in the rejection cache" then we'll be ok 19:48:27 morcos: ack 19:48:32 we can see how easy and short he other 2 are 19:50:18 that concludes the topic for this meeting? 19:50:27 any other topic proposals? cfields? 19:50:29 for information, I created ##libconsensus bikeshedding room about how to handle libconsensus for anybody interested. 19:50:48 NicolasDorier: haha, i was just about to paste a blurb for that 19:51:06 aha I just woke up for that, will go back bed :D 19:51:22 I have to leave now, but just letting you know salvage is finding lots of "extra" keys vs keys actually in wallet. *shrug* 19:52:02 NicolasDorier and I discussed libconsensus a bit this weekend. We're hoping to discuss amongst ourselves, come up with some goals, and present them clearly for easier review 19:52:12 +100 19:52:16 jtimon: ^^ 19:52:25 #topic libconsensus 19:52:37 that was it :) 19:52:54 wumpus: we have not started the bikeshedding yet, expect longer fight about it soon :p 19:53:08 NicolasDorier: IMO just discuss it here 19:53:14 way too many channels already 19:53:31 the reason I prefer a separate channel is so we can keep history and review it more easily 19:53:46 it's not like this channel is very busy\ 19:53:47 things said here get lost quickly enough in the sea of discussion 19:54:25 that always happens on IRC, if you want discussions with good history/memory then it may be better to use a different discussion mechanism, or keep summaries or such 19:54:36 i think having a separate place to 'form' a proposal makes sense 19:55:00 #bitcoin-dev is also fairly quiet 19:55:08 involving the whole world in a design rarely leads to something useful 19:55:27 from what I talked with NicolasDorier in previous times, the current goal is to complete a verifyBlock without necessarily exposing it in libconsensus at first 19:55:28 that's true, as long as you can get the people you want to pay attention to join it's fine 19:55:41 sometimes it's good to not have too many people there 19:55:51 but speaking for myself, I'm already in so many channels, I have a hard time following more 19:55:52 to be clear, the design will be presented to the bigger group for feedback and not set in stone 19:55:57 yeah ack on limiting channel proliferation, also it is more open in a logged channel 19:56:34 i don't plan on joining the libconsensus subgroup, but i think having a focused small group will make progress actually happen 19:56:37 I'm with wumpus...too many channels these days (not that I've been paying enough attention to have much of a voice, but still) 19:56:43 then again that's up to you, doesn't need to be a discussion topic here to decide onthat. 19:56:48 I don't think creating a new channel or not is going to be important either way... 19:56:59 morcos: sure. doesn't matter to me where the discussion takes place, just hoping to organize the discussion/planning a bit. 19:57:03 any other topics? 4 minutes to go 19:57:14 i'm in favor of having it in a separate channel because i prefer not to see all discussions around it before there is clean design :) 19:57:33 bikeshedding about the creation of the channel libconsensus announce the color of the future bikeshedding on the actual code ;) 19:57:40 NicolasDorier: exactly 19:57:47 let's stop that 19:57:49 heh 19:57:50 haha 19:58:01 3 minutes 19:58:17 cfields: NicolasDorier if you can share the goals 19:58:23 looks like we're done 19:58:24 #endmeeting