02:19:24 DGoon[m], i don't particularly remember size being a problem. I think everyone just believes in the gospel of optimization. (but who knows maybe something else is in the logs and code :)) 15:15:22 meeting 1.75hr 16:59:58 meeting time https://github.com/monero-project/meta/issues/822 16:59:58 1. greetings 16:59:58 hello 17:00:12 Hello 17:00:31 Hello 17:00:33 Hello 17:00:36 Hi 17:00:39 Hi 17:00:43 Hello 17:00:43 Howdy 17:01:00 hi 17:02:01 2. updates, what's everyone working on? 17:02:42 I implemented the solution for research lab issue 109 in this PR: https://github.com/monero-project/monero/pull/8815 17:03:04 me: new CCS https://repo.getmonero.org/monero-project/ccs-proposals/-/merge_requests/384 , updated the seraphis draft https://github.com/UkoeHB/Seraphis , next need to write the jamtis-instantiation companion paper 17:03:06 Monitoring Mordinals. In the last 3 days Mordinal minting has essentially ceased: https://gist.github.com/Rucknium/67cc9efdf7e43a40c52417611b322d43 17:03:51 LWS stuff, and reviewed jberman patch for decoy selection off by one 17:04:14 I also started reviewing jeffro256 's code ^ to avoid selecting coinbase outputs when spending non-coinbase outputs. 17:04:16 vtnerd__: how's it going with BP++? 17:04:54 I will probably do a write-up next week on the empirical privacy effects of Mordinals (+ coinbase outputs). 17:05:14 Nice 17:05:36 haven't had the time, busy with personal it stuff and taxes, etc. 17:05:55 UkoeHB: If you had to summarize the seraphis doc updates in one sentence, what would it be? 17:06:02 I'll ping you privately about it later, as there simply isn't enough to report here 17:06:12 vtnerd__: ok thanks 17:07:08 seraphis paper updates: minor cleanup, cut out implementation recommendations, simplified composition proof writeup, added grootle proof construction + security proof (mostly copied from lelantus-spark paper) 17:09:32 I wonder if compdec has something they want to bring up. 17:09:40 I decided not to do anything beyond that with the main seraphis paper, since security proofing and whatnot is not my area of enthusiasm or expertise. It is in a good spot to get help upgrading the security model. 17:10:58 Sounds like a good plan to me. 17:11:00 greets 17:11:10 will i get kicked now for saying hello 17:11:35 narodnik: no 17:11:48 3. discussion; today we must return to the tx_extra issue 17:12:24 about the ECIP proof, we are in the middle of some stuff and it takes all my time, but i started writing the benchmarks on the side 17:12:24 I summarized my position here: https://github.com/monero-project/monero/issues/6668#issuecomment-1476531556 17:13:09 now im doing the normal pedersen commit, have the scheme written in sage, then will begin constructing circuits with modified ECIP proof to benchmark against normal pedersen commit 17:14:34 thanks narodnik 17:16:37 Does anyone have anything new to add on the subject of tx_extra? 17:17:06 I didn't see any discussion about tx_extra anywhere for quite some time now, seems the subject has exhausted itself a bit lately 17:17:30 there has been some activity here: https://github.com/monero-project/monero/issues/6668 17:17:38 IMHO, the "encrypted by default" phrase is a little misleading to most readers. By default, wallet2 would not be able to put arbitrary data into tx_extra, encrypted or not AFAIK. And if the encryption "rule" has no enforcement mechanism whatsoever, then "by default" is misleading. 17:18:09 "I summarized my position here..." <- I mostly agree with this with one difference: I don't think we should trivialize that one bit of information of "is this field present or not?" This one bit of likability is different from other bits in say, input selection, in that the "cost" of this bit is very high compared to other entropy. It is represents whether or not a user uses some functionality. In can be reasonable 17:18:09 expected that a user who uses that field is more likely to use it in the future, and one who doesn't is less likely. Same for the users that a user interacts with. Long story short, tx_extra, if kept, should be mandatory because even giving transaction constructors the option of having it be present is a bigger privacy issue than initially assumed IMO 17:19:49 I think the phrasing is close enough, the information that goes into tx extra from wallet2 doesn't leak user info 17:20:19 Rucknium[m]: the current trajectory is changing tx_extra for seraphis, in which case there would not be wallet2. The core library would encrypt/decrypt tx extra contents by default. Whether anything above that adds tx_extra data to txs or uses recovered tx_extra data isn't pertinent. 17:20:22 but if accuracy is that important it can be reworked to say that 17:20:54 ah yes, seraphis won't use tx extra for the ecdh pub, right? 17:21:22 Intuitively, tx_extra is used for applications. Users who use an application interact with other users who use an application. Thus, whether tx_extra is present or not I think is a stronger heuristic for linkability than one might initially assume. 17:21:28 vtnerd___: right, currently there are no standard uses of tx_extra 17:22:08 the new tx_extra should also be prunable 17:22:27 tevador: yes I was thinking more about that today, it should be doable fairly easily 17:22:32 Agreed, it isn't used for consensus anyways 17:23:21 I agree near enough 99% with Ukoe's linked comment. The heuristic of "user uses app which needs tx_extra" will get weaker once there are more "apps" using this feature. 17:23:41 jeffro256[m]: the point of having 1 bit distinction is the two 'puddles' will be very large 17:25:47 If the two puddles are of equal size, we are halving the effective ring size. If one of the pools is much larger than the other, then one of the puddles gets screwed over incredibly hard 17:26:37 Halving the ring size? The two puddles won't only transact within themselves, one would think 17:26:49 > If the two puddles are of equal size, we are halving the effective ring size. 17:26:49 it's not that dramatic, there is only an analytical bias that may be stronger/weaker depending how much information you have 17:27:27 I think the effective ring size would only be halved if the recipient of the tx knew what kind of "user" they were dealing with, always. O if an external observer somehow knew. 17:27:54 Yes, but if you make the assumption that users with tx_extra interact with those who do, and vice versa, the effective ring size is half unles you do decoy selection for only outputs in transaction which matching tx_extra 17:28:48 And there, with that assumption, I have my doubts whether it's realistic 17:28:52 I don't think that's a reasonable assumption 17:29:21 regukar spends wouldnt use it 17:29:23 IRL the huerustic probably won’t be that strong , but we’re opening ourselves up to that possibility if we allow the field to be optional 17:29:28 I we think the portion of transactions using tx_extra will be significant, we should make it mandatory instead. The space savings argument becomes much weaker then. 17:29:44 only apps etc would 17:29:55 If a user gets their XMR from a DEX that uses tx_extra and then spends it like normal to a merchant (not using tx_extra), then the assumption would be incorrect 17:30:24 tevador: it would be easy enough to switch to mandatory 17:30:48 a merchant recieving the funds knows to exckude txextra (sorry for bad typing) 17:31:14 and unconstrained -> optional -> mandatory (-> removed) would be the conservative development path 17:31:31 id skip optional 17:31:37 That's also not the "faultline" of the community, it's question about a detail. The main question still is "remove" versus "keep in some form". We are stuck there. 17:32:08 Rucknium[m]: Right it wouldn’t be so cut and dry in real life but why allow it ? 17:32:09 (i mean, if were talking abot hard forks. optional right now isnt ideal either) 17:33:37 jeffro256[m]: It’s just simply worse for privacy by a large margin which is why we’re discussing tx_extra in the first place 17:35:00 It seems that nobody is arguing strongly for removal today. 17:35:11 I am 17:35:20 Ofrn is 17:35:26 rbrunner - remove is just an extension of 255 limit. need to start with relocating stuff furst 17:35:29 i sm as well 17:35:30 Oh, sorry, you meant like today today. 17:35:55 No yeah, post-Seraphis removal is what I mean 17:36:17 Yes, of course. I claim that we are (almost) all talking post seraphis hardfork anyway 17:36:29 I meant today as in in this meeting. 17:36:35 i dont mind sooner :) 17:36:54 post seraphis hardfork, or simply don't include it in seraphis? 17:37:01 yes sir tevador. technical difgiculties or id say more 17:37:03 v0.18.2.2 is tagged / to be released when binaryFate does the 'things' 17:37:29 Yes, and people who want to keep even want to keep tx_extra with everything else relocated, just to avoid misunderstandings 17:38:46 For what it's worth, I was once reading when sech1 seemed to explain that they changed their opinion, from "remove" to "keep" ... 17:39:35 tevador, are you in the party of standarizing outputs? any thiughts on inputs? 17:39:39 Of course the proposal that is on the table, keep with a quite small size limit and a strong push toward encryption 17:40:13 id just add the return address fuekd, encryot it with destination address, maje it a dummy if not enabked 17:40:56 You mean something like allowing only strictly 2 outputs? 17:41:07 yes sir 17:41:22 or 2 and 16 17:41:27 That's ... something else :) 17:41:46 largeky the sane topic of bad decits 17:41:54 decoys 17:42:27 Yes, but adding this to the already difficult and mostly stuck tx_extra keep versus remove discussion probably does not make things easier, no? 17:42:34 I believe that keeping tx_extra is signaling that arbitrary data injection has a stable standardized place on the Monero blockchain that is open and efficient. I believe that this is counter-productive towards Monero's goals. I believe that if arbitrary data is to be stored on the chain it should look just like any other tx data, meaning that only if a party chooses to reveal their keys may privacy be harmed, just like 17:42:34 with normal txs. 17:42:43 it does imo 17:43:09 That may bloom into some new argument? 17:43:14 I also believe that arbitrary data storage on the XMR chain should be disincentivized to the greatest practical extent. 17:43:57 arbitrary data can be stored in outputs, ~30 bytes per output and it's impossible to stop it 17:44:11 Because, after all, that's an important point: What is *new*? 17:44:26 but steg doesnt stand out 17:44:31 sech1: I understand, but it's better if it blends in with the crowd 17:44:34 which is why fixed small tx_extra is better than forcing arbitrary data into outputs 17:44:51 Nobody is forcing anyone to use outputs, people can use CLSAG too 17:44:51 and return address field + small msg is what thirchain or serai need 17:45:12 so.. they just beed anothey dummy change address 17:45:18 CLSAG after Seraphis? 17:45:28 afaict 17:45:28 And keep in mind, sech1 , that there is little business case to develop applications around an unstable API. 17:45:53 would the return address be one per tx or one per output? 17:45:56 If you want to make a stable arbitrary data API you are signalling that aribitrary data is welcome on the chain. 17:46:29 developers are now welcome to write arbitrary data and create an application layer and soft forks. 17:46:41 This will harm fungibility and privacy. 17:46:47 politicalweasel[: standarize to 2 out and question is answered 17:46:48 If it stays uniform (fixed size and encrypted), it doesn't hurt privacy 17:47:48 AFAIK, putting data in output public keys does not blend in. You can put plaintext data there that is easy to detect....with your eyes, for example. 17:48:48 sech1: 1. there's no way to ensure encryption 17:48:48 2. there's no way to prevent people from softforking that way 17:48:49 3. you are imposing a storage and tx fee burden on the most users for the benefit of the application layer and soft forkers; you're practically disincentivizing people from *not* utilizing tx_extra since they pay the fee anyway 17:48:57 I am going to implement tx_extra pruning + optional encrypted field in the seraphis library as a temporary solution. These changes can be considered incremental improvement over the current library. Future incremental changes are still on the table. 17:49:54 For example, the first output public keys of this tx is all zeros: https://xmrchain.net/search?value=35ccad6e5f36a4320d1296ecb02ee34ce1591096658f236915943d2e55e43007 17:50:09 Alex|LocalMonero There are statistical randomness tests. We can tune them to be very sensitive to non-random data. Even if they give false positives on 10% of true random data, wallet can regenerate it until the test passes. 17:50:09 what does txextra in seraphis cyrrebtky look like? 17:50:21 ofrnxmr[m]: same as today except TLV is enforced 17:50:30 ok 17:50:46 And all standard stuff moved out, of course 17:50:58 So empty as default, I guess 17:51:02 Has a study on uniqueness of output public keys been done before? 17:51:54 AFAIK yes. There are many duplicates. 17:52:12 hbs: AFAIK, you generally will not have a collision unless it is deliberate. 17:52:20 sech1: Why are we bending over backwards to accomodate arbitrary data injectors? Why do they get a pass unlike ASIC manufactureres who used to be just as inevitable? Make arbtrary data unstable, inefficient, costly, and ideally indistinguishable from other data. Wouldn't you agree that this is the best solution 17:52:34 cuz its easier 17:52:36 Because outputs 17:52:37 Return addresses + stealth address + encrypted amounts field + ecdh key would likely be enough for at least 128 bytes of arbitrary data 17:52:39 jsut saying 17:52:45 sech1 with seraphis it would be 30 + 18 + 8 + 32 bytes per output (Ko, encrypted addr tag, encoded amount, enote ephemeral pubkey) 17:52:51 Tell me how to prevent stuffing arbitrary data into outputs and I'll change my opinion 17:53:04 politicalweasel[: which is fine if its akso a user feature 17:53:10 Deliberate cases could be an attempt to exploit the "burning bug" against a naive victim and victim's naive software 17:54:11 "Why are we bending over backwards" That's a funny description of what we do. 17:55:04 we are approaching the hour, are there any last-minute questions or comments on other topics? 17:55:12 sech1: 1. outputs are not going away just cuz we add tx_extra. Malicious actors can still exploit it, even non-malicious ones might prefer to use outputs if you put a low enough limit on the size of tx_extra. You would have a case if tx_extra closed the outputs exploit, but it doesn't, it just adds another risk to fungibility 17:55:12 2. well-intentioned devs can steg into CLSAG for now; as for post-seraphis, we'll have to see what other steg methods might be available 17:55:12 3. the honest subset of arbitrary data injectors are a marginal minority and do not at the moment pose a risk for the chain. if/when they do the question can be revisited, not the other way around 17:56:25 koe, just that i thinj standarizing in/out might be wirth more duscussion alongside coinbase and txextra 17:56:28 ty 17:57:05 there is a snowball effect: if you create a stable arbitrary data API you attract more people to rely on arbitrary data injection which will create more risk for output exploitation by honest actors. By disincentivizing arbitrary data injection, refusing to signal a stable API, you also minimize honest actor output exploit risks as well 17:58:21 protocol instability is the opposite of what want to aim for 17:58:39 For arbitrary data injectors? It should be, I believe. 17:59:16 We could abbreviate that to "ADIs" :) 17:59:24 good idea 18:00:29 that's the end of the hour, thanks for attending everyone; it may be a while before I implement those tx_extra changes, I'll keep the channel updated as usual 18:01:06 thanks koe! 18:01:06 ty koe 👍 18:02:02 I am in favor of 255 bytes per output optional with the requirement that either:... (full message at ) 18:02:41 255 bytes per output? Damn. 18:03:53 I see this as a compromise between the current free for all and complete removal 18:04:15 But we already have a limit ArticMine , it's practically 32 bytes. 18:04:35 I mean, a soft fork limit. 18:04:42 How? 18:04:44 Not at the protocol level. 18:05:11 I am talking at protocol 18:05:41 We can keep node relay limits that are strcter 18:06:06 Stricter 18:06:24 ArticMine[m]: Why do you believe it necessary to compromise with ADIs? 18:06:54 tx_extra is not per-output, it's global to the transaction (AFAIK also in the seraphis implemetation) 18:07:34 Also my understanding, I think "bytes per output" solution variations were discussed much less 18:08:07 So you encrypt with which output? 18:08:51 Maybe I am wrong, but I think the idea is everybody can encrypt with whatever key they like 18:08:55 that's up to the protocol that uses it 18:09:19 they can slice it between outputs or use just one key 18:09:40 ArticMine: "I am in favor of 255 bytes per output" <- This is saying "Just add a dummy output if you need more space in tx_extra". 18:09:57 So then a global 255 or 0 instead per tx 18:10:12 Much simpler 18:10:28 At least that's my understanding, yes, and the point where I argue from 18:10:44 I am fine with that actually 18:12:04 Also tx extra transactions will pay as a minimum the normal as opposed to min fee 18:12:27 So one fee tier up 18:12:32 From the minimum 18:14:24 i dont want insert persons name looking at a tx i sent them and knowing 80% of my deciys areny the true spend 18:15:51 simply by excluding txextra, big tx sizes, fees, and non 2 outs 18:16:12 too many puddles for 16 rings 18:16:45 jeffro has a pr to remove coinbase from that list 18:17:24 Yeah, and even quite uncontroversial, as it seems so far 18:17:28 We. can restrict outputs per tx to 2, 4, 8, and 16 18:17:30 but morbinaks + coinbase were >30% and woukd have been higher is p2pool hf didbt happen 18:18:06 Or even 2, 4 and 16 18:18:36 ArticMine @articmine:monero.social: i think its a good idea to restrict outputs, but i have more thinking to do about inputs 18:19:28 tevador: to reasonably claim the field is 'encrypted by default', the encryption needs to be standardized in the core library 18:19:57 per-out field would be much more straightforward from a UX and implementation standpoint 18:20:26 Restricting number of outputs could have the side effect of services rapidly spending outputs as soon as the 10 block lock was finished. Identification of those txs wouldn't be deterministic, of course. 18:21:01 tobtoht[m]: that's the case with any incarnation of the tx extra 18:22:15 We eliminate the inefficient outputs such as 3, 5, 10, etc 18:22:52 So it does force the addition of dummy outputs 18:23:10 dummies arent bad 18:23:17 .. but it is still efficient 18:23:27 1/2 is 1.5kb, 1/16 is 3.2kb 18:23:48 UkoeHB: with 256-byte tx extra and 2/4/8/16 outputs, you have 256/64/32/16 bytes per recipient. Easy to implement. 18:23:48 so a 1/9 or a 1/13 isnt much of a size dufferebce 18:25:18 Is there an advantage of 255 bytes over 256 bytes? 18:42:15 how does that look with:... (full message at ) 21:57:58 tevador: would it make sense to tie tx extra decryption to the reverse-DH secret (amount baked key)? that way payment validators can decrypt normal enote extras, but find-received cannot