00:00:04 .merges 00:00:04 -xmr-pr- 8061 8232 8239 8240 8241 8245 8246 8247 8254 00:51:58 any update on seraphis release date 01:04:40 luigi1112: pls pls pls cli + gui merges 01:12:15 moneroextremist[: far in the future 02:04:09 > restricted-rpc is to avoid fingerprinting and also disable things like start/stop mining and stopping the daemon 02:06:28 selsta I meant that MD5 is not safe for authentication because its so easy reverse an MD5 hash, so any password is not safe and anyone could start/stop mining if they had challenge data and the hash 02:06:59 oh ok, I see 02:07:30 Also how does restricted-rpc prevent fingerprinting? 02:07:55 it removes specific data from get_info that can be used for fingerprinting 02:09:36 Ahh yes I forgot about that good point 02:10:20 selsta do you know of anyone working on TLS for RPC or the levin protcol? 02:10:51 I know vtnerd was doing something called the Noise protocol, which adds a bunch of noise to Levin packets 02:11:06 jeffro256[m]: did you do ./monerod --help and grep for ssl? 02:11:29 there are already options that's why I'm confused 02:11:44 Noise protocol is for P2P traffic and not RPC 02:13:58 Oh wow how did I not know about ssl for rpc 02:14:10 thats cool 02:15:25 i did know noise was for p2p 03:12:50 whoa triple plx 03:12:53 pls 03:13:04 .merges 03:13:04 -xmr-pr- 8061 8232 8239 8240 8241 8245 8246 8247 8254 03:31:09 .merges 03:31:09 Merge queue empty 03:41:10 look at all them merges! 04:18:37 .merge+ 8248 8249 04:18:37 Added 09:41:03 Hey, Management, which channel is for https://repo.getmonero.org/ ? I'm getting error: 500 10:01:50 It ran out of disk :S I'll see if I can find what's filled it. 10:28:40 Looks like it's 149 GB of website tarballs for some reason. Not sure if deleting most of them would break it... 10:29:01 All dating from today so I can't even nuke old ones. 10:40:43 There's more space now. If anything breaks, let me know, so I know even if I have nfi how to fix :) 10:41:04 Especially to do with the site repo, since it's the one I nuke stuff in. 10:41:41 It's also a temp solution, since I don't know why these things have been accumulating in the first place... 10:43:02 tarballs for the website should be in their dedicated box IIRC 10:43:23 binaryFate ^ 10:43:49 It's tarballs made by gitlab. 10:44:08 I suspect test "builds". 10:52:46 lol, 1.7 million users. Such spam. 10:53:21 Sad gitlab doens't make a one click nuke button for these gobshites. 11:31:29 How is mask normalization handled with BP+? I see where output keys are normalized for comparison against the pseudoOuts yet I don't see where it normalizes the pseudoOuts. 11:33:42 And is that the only consensus change introduced besides the BP format itself? I looked over the diff and just wanted to confirm that was it. 11:46:28 Oddly, it looks like gitlab itself removed those cache files now. I guess it was a temporary "need a lot of disk right now". 11:47:03 Or my removing some stuff made it reset the cache. Either way, there's ample free space again and it seems to still work. 17:37:16 xmrchain node uptime 48 days. just started current master 18:12:58 kayabaNerve: IIRC the pseudoOuts are not normalized. Pre-multiplying the output commitments by 1/8 is a time-saving measure since BP+ wants to multiply them by 8. 18:13:25 ... right. 18:13:39 Except they still do the equivalence check 18:14:16 Which means that the inputs, which are either of form 1 or 1/8, are checked against the outputs multiplied by 8 to 1 18:14:40 Doesn't that mean amounts get nuked with only 1/8th being spendable? 18:15:20 hmm good question 18:15:20 ... and since that's a multiplicative inverse, doesn't that mean the input amounts become incredibly high and effectively an infinite mint? 18:15:31 I don't know about any normalizing (unless that means reduction ?) but the 1/8 is to make sure the verifier can't ever get anything not in the main subgroup. 18:15:55 I'm referring to the multiplication by cofactor 18:16:24 Because I understand it's done here to ensure the correct subgroup is used but it still effects the b value directly 18:17:02 Well, if you think there might be an exploit, you'd ask luigi1111 (or, if still around somewhere, sarang). 18:17:21 I also understand this never would've made it to prod but I'm pretty sure this is on master with a stagenet height usable for testing? 18:17:59 moneromooo: My comment is the second anyone tries to use this they'll be spending commitments multiplied by INV_EIGHT which isn't feasibly valid in the slightest 18:19:23 I'll rebuild my node later (possibly tomorrow) and try it out. If it immediately breaks then... Yeah. Else I'll try to figure why it isn't breaking and what line I'm missing. 18:20:38 the equivalency check is after multiplying by 8 no? 18:20:54 amount -> *inv8 -> *8 -> check 18:20:57 IIRC rbrunner has this running on a private testnet without issues sending transactions kayabanerve 18:20:58 luigi1112: Right but the issue isn't with the outputs 18:21:01 It's with the inputs 18:21:41 that was my assumption 18:21:45 Because the outputs are saved as *inv8 and not *8 again when used as inputs... 18:22:25 luigi1112: I know saw a mul by cofactor on the outputs 18:22:31 * I only saw a mul by cofactor on the outputs 18:22:58 oh I see 18:23:15 Not to mention if it was on the inputs, we'd have to know which form they were (1 or 1/8) 18:23:46 kayabanerve[m]: maybe you could add a test showing how to exploit that (and then if the test fails, we have a guide for fixing it). 18:24:07 So then the thing is we have to get them from the block as 1/8 yet save them to disk as 1 yet I didn't see code doing that. They looked to be copied but I may have just missed the pointer handling. 18:24:10 Granted, the core tests are a bit of a pita to write... 18:26:19 moneromooo: I do hear you. It's just not an exploit. It's "this shouldn't work even without any trickery, with an honest wallet". Seth For Privacy: suggested it was running on a local net 18:26:25 So I'm more curious what I'm missing then... 18:27:41 OK, I'm not sure what you're talking about exactly, but I know where there's one *8 to match a 1/8, miht be the one you're missing: 18:27:56 luigi1112: https://github.com/monero-project/monero/blob/master/src/ringct/rctSigs.cpp#L1483-L1503 18:27:58 in expand_transaction, in cryptonote_core.cpp IIRC 18:28:12 That's when loading a tx from serialized format. 18:28:18 moneromooo: This would be it if I'm just missing it, thanks :) 18:28:43 kayabanerve[m]: https://github.com/monero-project/monero/blob/9f814edbd78c70c70b814ca934c1ddef58768262/src/ringct/rctSigs.cpp#L1490 18:29:10 Hrm. I remembered wrong actually... 18:29:16 UkoeHB: Right, for outPk 18:29:42 It's a mul by 1/8. 18:30:08 But when that outPk is saved to disk, and eventually loaded as a ring member... It'll be aG + bH * INV_EIGHT 18:30:15 oh hm 18:30:21 Which means that the pseudoOut will need to be for bH INV_EIGHT 18:30:23 Which means you'll be spending a completely disparate amount 18:30:48 seems like that should fail any test param 18:31:26 Which means either it's saving to the disk the *8 form, yet the line you quoted is on a copy, or it has to check every ring member it loads for normalization and repeat *8, voiding any performance savings 18:31:41 luigi1112: Right EXCEPT this will pass BP just fine 18:31:58 this mul 1/8 optimization added so much spaghetti, I don't think it was worthwhile (probably <1% speedup) 18:32:05 It just won't generate a spendable ring member which is why it may have been an oversight 18:32:35 UkoeHB rip it all out 18:32:45 half serious 18:33:03 UkoeHB: This was my stance and why I was here asking about it. AFAICT, it's not correctly implemented, creates disparate block/disk representative when done successfully, and doesn't have testing as of right now which makes the code living on master broken. 18:33:19 is this for the next fork/bp+? 18:33:27 Yeah 18:34:01 Which is why it wasn't noticed. I don't think anyone actually tried spending the BP+ outputs yet :p This would've been caught in a few weeks at worst 18:34:24 wait so I'm understanding: is it proposed that new outputs post fork are stored *inv8, then when loaded *8? But no distinction is made vs pre fork outputs which are obviously not stored that way? 18:34:52 luigi1112: apparently that's what the bp+ pr did 18:34:53 luigi1112: But they're not currently loaded *8 so even if that was the intent... 18:35:10 kayabanerve[m]: . 18:35:11 good work kayabanerve[m] noticing this issue 18:35:23 woof 18:35:32 plz keep investigating :) 18:35:42 You can have it with performance. You just need to save the *8 form and keep INV_EIGHT limited to serialization 18:35:59 But I'm not sure it's feasible to effectively pass it around and I don't recommend the headache 18:36:08 doesn't seem worth at all to me 18:36:25 I think the 1/8 adds too much complication. This is the reason I did not implement 1/8 for key images in seraphis (even though it would be a speedup). 18:37:00 Happy to :) I clicked on it when I reviewed Ukoe's next standing multisig PR (impeccable except for one comment I have yet to hear back on) and it stuck out to me, so figured I'd bring it up 18:37:20 Phew nice find kayabanerve 18:37:24 Surprised that wasn't caught in audits... 18:37:27 I think: 18:37:27 1) see if we can get errors in test to confirm the failure 18:37:27 2) rip it out 18:37:49 UkoeHB: Some dude called Kayaba should probably submit a Ristretto encode and fix this once and for all :p 18:39:14 sethforprivacy: I don't think audits cover the full protocol from that higher vantage point 18:39:30 sethforprivacy: It's an optimization tacked on outside of the BP+ code yet only halfway implemented. It would've immediately created invalid results and broken any testnet it ran on, unless we all are missing where it saves to disk in the proper form (keeping the 1% performance gain)/corrects it on load (worsening performance) 18:39:52 yeah agreed it would fail immediately 18:40:05 (if it exists how we think) 18:40:15 Technically you can still create valid proofs under it. 18:40:25 yeah but naively you wouldn't I would think 18:40:29 luigi1112: want a few million xmr? 👀 18:40:36 probably a lot more than that :P 18:40:46 Well I have to keep some for myself 18:41:00 ^_^ 18:41:13 this is like the key image thing all over again 18:41:18 But yeah, Monero wallet would've immediately errored 18:42:16 So Ristretto is 18:42:16 1) marginally slower to encode/decode 18:42:16 2) faster to check equality 18:42:16 But I'm still expecting a marginal performance decrease with its introduction. I'm still advocating for it though because it fixes all of this. The end 18:42:57 mul8 when decoding amounts: https://github.com/monero-project/monero/blob/9f814edbd78c70c70b814ca934c1ddef58768262/src/wallet/wallet2.cpp#L11357 18:43:06 (during view scanning) 18:43:32 We just never have this discussion or concern again. Seraphis will already force new keys. We can change curves without issue. We can even promote existing points to Ristretto if we absolutely need to so there truly shouldn't be consensus issues 18:44:23 I've got a local test env of the lastest master including bp+ set up sending and receiving bp+ tx's, spending outputs created from bp 18:44:43 Are we missing an integration test that mines rcttypebpp to chain then tries to spend them out of the ledger? 18:45:04 jberman[m]: In that case we're all missing something and I have no idea where it is. I'm guessing it's saving to disk in mul8 and we just have multiple mul8s 18:45:36 core_tests/bulletproof_plus.cpp ought to do that, but they're really GGGHNNN to write... 18:46:01 Is this possibly the line you're looking for? https://github.com/monero-project/monero/blob/9f814edbd78c70c70b814ca934c1ddef58768262/src/blockchain_db/blockchain_db.cpp#L248-L249 18:46:01 this is called right before saving to disk 18:46:12 jberman[m]: did you confirm the tx types produced are bp+? 18:46:59 jberman[m]: that line must be doing all the work, nice find 18:47:28 blockchain_db does perform this 18:47:39 > <@jberman:matrix.org> Is this possibly the line you're looking for? https://github.com/monero-project/monero/blob/9f814edbd78c70c70b814ca934c1ddef58768262/src/blockchain_db/blockchain_db.cpp#L248-L249 18:47:39 > 18:47:39 > this is called right before saving to disk 18:47:39 Yep, also just found it 18:48:43 considering how much more difficult it is to reason about the protocol with this change, I'd advocate a PR to undo the 1/8 stuff 18:49:15 ... are we keeping this or can we agree 18:49:15 1) this headache is proof it's not worth it 18:49:15 2) if we're already doing this mul 8 multiple times (signature verification, save to disk, AND wallet scanning) we're nuking the performance benefit 18:49:15 3) it's confusing to change the commitment communication format (the one committed to in hashes) midway through the chain with no need to 18:49:26 UkoeHB: Ditto 18:49:53 support 18:50:06 FWIW I don't really care about wallet scanning here, just node verification. 18:50:12 undoing this would require a hard reset of any testnet running this 18:50:27 I thought I was just missing it when I started, but then everyone here also agreed this seemed missing, and yet here it was in blockchain_db .-. 18:50:27 That happened before, not a problem. 18:50:49 the hardfork isn't scheduled in the testnet yet 18:50:50 kayabanerve[m] it did seem too obvious to miss haha 18:51:10 Hey, I coded this, I forget things as a matter of course :/ 18:51:36 any volunteers to write the PR? otherwise I can do it (would rather focus on seraphis stuff tbh) 18:51:47 luigi1112: Right. I legitimately thought if it was missing, it would've have to been the BP+ code was the tail result so it was never built off of in the tests :p I thought that may technically be possible? 18:52:07 I'll work on it now. First time doing a PR that matters so will be nice 18:52:17 cool thanks kayabanerve[m] 18:52:19 is the estimate really like 1%? 18:52:27 probably just need to go through the original pr and find all instances 18:52:32 I suppose I should write it. I owe more work to the community and I wrote it... Kinda still in burnout mode though. 18:52:48 moneromooo: I'm excited for the opportunity so don't worry ;) 18:52:51 Thanks kayabanerve[m] :D 18:53:16 It's not every day you get to say you helped decide and implement xmr consensus rules :p 18:53:25 Would be nice to see the chain verification speed change too. 18:54:33 It's replacing 6 doublings with a scalar mult and equality check, if we do actually need to force BP points to be in the main subgroup (which would be implemented the same way the key image check is) 18:54:37 luigi1112: on average, each output in a tx corresponds to ~80-100 variable base multiplications, so avoiding one mul-group-order per output is pretty small 18:55:05 (back of the napkin) 18:55:18 It does remove a exponential to group order, no ? IIRC. Maybe. 18:55:25 To check the thing is in the right subgroup. 18:56:07 * moneromooo feeling almost angry all the crypto didn't stick 18:57:36 yeah, mul-group-order = exponential to group order 18:58:08 Hrm. ISTR this is fairly slow... 18:59:48 in the context of a tx, which has a bp+ proof and clsag proof per output on average, it's not that bad 19:00:08 Alright, fair enough. 19:00:26 IIRC it seemed like a free win... 19:01:04 just making sure I'm not missing something, monero-wallet-rpc's --tx-notify only gets called when the transaction is first seen and when it has one confirm, right? 19:01:21 I was hoping it would call a third time when the funds unlocked, but I'm not seeing that 19:01:39 It's definitely not calling when it reaches 10 confirmations. 19:19:49 For what it's worth, that earlier question whether I am running a testnet: Yes, for weeks already, jberman's view tags branch, to test that. Not BP+ in any case 19:19:56 "It's definitely not calling when..." <- so to watch for when transactions hit 10 confirms, I need to first add transactions to a group from tx-notify when they hit 1 confirm and then poll them? 19:20:41 Well, poll the height I guess. But yes, polling the txes would also work. 19:20:50 IIRC tippero polls the height. 19:21:14 Jeez. Did I really write that 8 years ago :D 19:21:39 what would polling the height do? 19:23:46 Tell you current height, which you can compare to the height at which the received outputs may be spent. 19:24:14 Not quite, in case of reorg, but close enough I guess. 19:24:43 Ah I see, where do I get the height that they can be spent at? 19:24:53 and is that a better method of checking than watching for 10 confirms? 19:25:26 Good point, they might have an unlock time. In that case, polling the txes is better indeed 19:25:46 ok thanks 19:25:59 unfortunate that polling is required to do this, I was hoping I could avoid it 19:26:05 (polling height was just lightweight) 19:27:52 The monero-javascript library has some nice wallet transaction query methods that may be worth digging into. Not sure what rpc methods they're wrapping: https://moneroecosystem.org/monero-javascript/MoneroTransferQuery.html 19:27:55 moneromooo: just making sure I'm not missing some better way, tx-notify is what I should be using for making a monero payment processor, right? 19:28:38 thanks, I'll take a look 19:31:19 example query from a project i'm messing with :)... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/0bb4a1c47248c57788546fe8a8439fd4eefcb3eb) 19:35:29 Also, in the monero-javascript library, the onOutputReceived event is called 3 times - once when unconfirmed, once when confirmed, and once when unlocked. 19:36:11 cryptogrampy[m]: ah that's definitely useful, I'll look now to see how they do that 20:01:35 rbrunner: could you reapprove the ring size 16 PR? it got rebased 20:11:29 Done. 20:11:46 ty 20:35:47 wow has been running BP+ for 10 months 20:36:27 not sure if what you are discussing was included in that version 20:38:41 nioc: Really interesting to hear. I don't know the full history (the PR is only 4 months old) yet I'd assume it has this optimization. It does, technically, work. It just mutates transaction state vs effective state and redefine commitment formulas which makes it... problematic. It's a hassle not worth it overall. 20:40:01 I did get the presumed patch ready. I've been stuck building for a bit and may go to sleep soon though, so probably looking at publication tomorrow. It's pretty simple overall. 21:13:35 .merge+ 8178 21:13:35 Added 23:49:26 Hello everyone. Can I have a question about a specific issue with monerod in this channel? 23:52:36 If not dev related, ask in #monero:monero.social and ill try to answer you there 23:54:22 w[m]: Ok thank you