-
br-m
<rucknium> MRL meeting in this room in two hours.
-
br-m
<rucknium> Meeting time!
monero-project/meta #1443
-
br-m
<rucknium> 1. Greetings
-
br-m
<vtnerd> Hi
-
br-m
<slowbeardigger:matrix.org> Hello
-
br-m
<jberman> waves
-
br-m
<jeffro256> Howdy
-
rbrunner
Hello
-
br-m
<articmine> hi
-
br-m
<jpk68:matrix.org> Hello
-
sech1
Hello
-
br-m
<rucknium> 2. Updates. What is everyone working on?
-
br-m
<slowbeardigger:matrix.org> Not sure if it is relevant to the meeting but I am working on carrot25519, a little experimental C11 allocation-free primitive implementing the raw Montgomery ladder that CARROT uses, with portable/fiat51, ARM64/cc0, x86_64-baseline and BMI2+ADX backends, still need some optimizations, and DataHoarder and Tevador been helping :)
-
br-m
<slowbeardigger:matrix.org> @slowbeardigger:matrix.org: parallel to that I’m pushing the xmr-pay Carrot side (view-key only scanning + settlement/reorg) so compatible payment integrations can be ready for the community as soon as public stressnet or mainnet Carrot lands. (yay)
-
sech1
I'm working on adding Carrot-compatible coinbase transactions to P2Pool (last week I was quite busy IRL, so this work just started)
-
DataHoarder
hello. seeing sech1 move to Carrot/FCMP++ for P2Pool and reviewing anything
-
br-m
<jpk68:matrix.org> Me: attempting to decrease lock contention in monerod
-
br-m
<jberman> Some upstream PR handling and re-reviewing the Carrot hot/cold wallet PR
-
br-m
<rucknium> me: Testing Dandelion++ privacy protections in monerosim. Not ready to share statistical results yet, but everything looks good so far. I can get precise estimates of spy node effectiveness with just a few dozen simulation runs. Continuing to report issues in monerosim:
github.com/Fountain5405/monerosim/issues
-
br-m
<ack-j:matrix.org> Hi
-
br-m
<vtnerd> me: spent time updating serialization code (still not pred), updated/tested racy code in epee/levin, and now working on updating all my prs to work against head master version
-
br-m
<jeffro256> me: implemented tevador's suggestion for PQ turnstile indistinguishability:
seraphis-migration/monero #456. Reviewing upstream PRs
-
br-m
<rucknium> 3. PQ turnstile spend enables a Carrot/Jamtis distinguisher (privacy leak) (
jeffro256/carrot #10).
-
br-m
<jeffro256> PR for K^j_v implementation here:
seraphis-migration/monero #456. API for scanning coinbase enotes changed slightly, requiring the user to pass their main address view pubkey, but otherwise the API didn't need updating
-
br-m
<jeffro256> If we go with the above change, I'll need to update the Carrot spec
-
br-m
<rucknium> Would the change require anything to be re-audited or receive external review again?
-
DataHoarder
Carrot spec already needs update due to the personalization string / Generator T changing
-
DataHoarder
-
br-m
<jeffro256> I don't think so, because actually the first Carrot spec audit had d_e bind to K^j_v, so it's actually already been audited
-
br-m
<jeffro256> DataHoarder: You're right about the T generator, but #424 doesn't require changes to the spec
-
br-m
<jeffro256> It's a big API overhaul, but it didn't change anything with the protocol itself
-
DataHoarder
Oh, fair, I guess we just pick the values differently. I do remember a few tweaks were also done for the PQ turnstile to work for coinbase outputs, cannot remember if those were brought back to spec
-
br-m
<jeffro256> Yes, the PQ stuff should already be in the latest version of the spec
-
br-m
<rucknium> More on this topic? Should it appear on the agenda next week, too?
-
br-m
<jeffro256> If tevador isn't here, then there's not too much to discuss
-
br-m
<jeffro256> I think that the rest of the discussion could happen on that Github issue
-
br-m
<rucknium> I will take it off the agenda next week unless someone requests it to be placed on the agenda.
-
br-m
-
br-m
<jberman> Next major item: Re-reviewing @jeffro256:monero.social's hot/cold wallet PR now, which is also currently a dependency for UkoeHB 's multisig work. Hot/Cold wallet stuff is very close I think
-
br-m
<jberman> RFQ is going out for gadgets + circuit + fcmp-plus-plus audit, nothing to report on there yet
-
br-m
<jeffro256> Licensing discussion still ongoing in
monero-project/monero #10964 for mx25519. Tevador proposed an interesting solution: effectively make the core API+portable impl licensed permissively, and the fast assembly backends (where the magic happens) copyleft
-
br-m
<jeffro256> I was hoping that he'd be here today, oh well
-
br-m
<rucknium> Thanks, @jberman:monero.social and @jeffro256:monero.social . More on this topic?
-
rbrunner
That "trick" probably won't extend to the much simpler Polyseed library?
-
br-m
<jeffro256> I was wondering if it would be worth it to work on a quick license library to fetch license text to display in-binary for applicable licenses
-
br-m
<jeffro256> Unless tevador chooses to re-license, then Polyseed remains under LGPL
-
br-m
<tobtoht> @jeffro256: How would that work?
-
br-m
<slowbeardigger:matrix.org> What about, relicensing the mx25519 to MPL-2.0 pls split the library?
-
br-m
<slowbeardigger:matrix.org> like BSD-3 the core + C portable implementation, MPL-2.0 the assembly backends
-
br-m
<slowbeardigger:matrix.org> Compilation flags included on the fast assembly[... more lines follow, see
mrelay.p2pool.observer/e/mP--pKILQjhCa2N2 ]
-
br-m
<slowbeardigger:matrix.org> I think Trevador said he likes a way like that
-
br-m
<tobtoht> That's exactly the solution tevador suggested.
-
br-m
<slowbeardigger:matrix.org> yeah
-
br-m
<slowbeardigger:matrix.org> if you ask me, that seems to be the “easiest” way
-
br-m
<articmine> The licensing issue raisees many questions for dicussion.
-
br-m
<slowbeardigger:matrix.org> Gets the thing done in a couple of commits, and not a lot of drama
-
br-m
<slowbeardigger:matrix.org> less friction way imo
-
br-m
<articmine> I am just looking at the Github
-
br-m
<jeffro256> @tobtoht: It would look like a license command in daemon/wallet CLI/wallet RPC etc which pulls text from an in-binary array, which is inserted during build time based on a maintained license file
-
br-m
<jeffro256> So when we add a new dependency which requires distrubuting source code information alongside the binary, a contribuor would append applicable info to the license file, which gets added into the binary during build time
-
br-m
<jpk68:matrix.org> Not sure there's much point to the licensing section of the CoC if it can just be ignored
-
br-m
<jeffro256> Even without mx25519/Polyseed we should probably do this because we are out of compliance with some BSD-3 licensing
-
br-m
<tobtoht> Our biggest licensing issue right now is our GPLv3'd readline dependency
-
br-m
<tobtoht> I suggested replacing it with linenoise from Redis
-
br-m
<jpk68:matrix.org> It would also be a drastic reduction in LoC for that functionality
-
br-m
<rucknium> FWIW, R and python have a license text that can be printed with license().
-
rbrunner
Would this license content mechanism be available to smartphone wallet apps as well?
-
br-m
<tobtoht> @jpk68:matrix.org: Yep, would also drop ncurses.
-
br-m
<tobtoht> rbrunner: We could expose it in wallet api?
-
rbrunner
Sounds reasonable.
-
br-m
<rucknium> 5. Relative locks with FCMP++ (
monero-project/research-lab #161).
-
br-m
<rucknium> Last meeting, UkoeHB said he would put review of
seraphis-migration/monero #445 on his list
-
br-m
<rucknium> Any discussion of this for now? If not, I will move on to the next item.
-
br-m
-
br-m
<jberman> Re: relative locks, I just commented on the original issue here:
monero-project/research-lab #161#issuecomment-5345884915
-
br-m
<slowbeardigger:matrix.org> oh boy
-
br-m
<slowbeardigger:matrix.org> :) can’t wait
-
br-m
<jberman> I think it could potentially help strengthen the case for them if the Grease people want to run with that primitive
-
br-m
<jberman> Re: beta stressnet. Discussed with @jeffro256:monero.social and we're going to aim to have the hot/cold wallet changes in for beta v3 as well. So desired order of operations is hot/cold wallet changes then rebase on top of latest master
-
br-m
<jberman> The hot/cold wallet changes bring a pretty significant change to the wallet, and I think it'll be good to have it sorted out in that order
-
br-m
<rucknium> I have shut down all my tx spammers and switched my nodes back to regular testnet.
-
br-m
<jberman> So right now working on my re-review of the hot/cold wallet PR and hopefully we'll have that ready by next week. I know I said hoping by next week last week, but hot/cold wallet stuff does make sense to get in first for reasons above (which I wasn't considering when I said that)
-
br-m
<jberman> And making sure hot/cold wallets are ready for the fork is obviously a requirement for the fork anyway
-
UkoeHB
Did not review that PR yet
-
br-m
<jeffro256> ukoe is the hot/cold PR sort of a prereq for some of the multisig stuff?
-
UkoeHB
Multisig branch is on top of that branch
-
UkoeHB
IIRC it's just tx_builder that's a dep
-
br-m
<jberman> One thing I've been thinking that would be nice is to have some good concrete testing of the new wallet/daemon software before the fork. We don't need to spam during that period (that would spam current testnet), but a concerted effort at testing during that period would be nice
-
br-m
<jberman> Maybe we'd want to consider an initial fork from current testnet that just separates networks, but maintain current rules pre-fork, that would allow people to spam
-
br-m
<rucknium> @jberman: You could have cuprate on stressnet for that time, too.
-
br-m
<rucknium> More on stressnet?
-
br-m
<jberman> nothing from me
-
br-m
<rucknium> 7. PoW-Admitted Zero-Fee Transactions for P2Pool (
gist.github.com/SChernykh/aae5b2d414095e742437134ab20d4353).
-
br-m
<rucknium> sech1. And maybe DataHoarder[m]
-
DataHoarder
nothing from me here at this point
-
br-m
<rucknium> sech1 was here at the beginning of the meeting.
-
sech1
I created
monero-project/monero #11102 to make life easier for P2Pool when handling these transactions
-
sech1
This item can be removed from agenda for the next meeting, because I'll be working on general FCMP++/Carrot support for P2Pool, and zero-fee transaction support will be added after all that.
-
br-m
<rucknium> More discussion on this item?
-
br-m
<rucknium> We can end the meeting here. Thanks everyone.
-
br-m
<slowbeardigger:matrix.org> Thanks, have a good one y'all
-
tevador
apologies for missing the meeting
-
selsta
Polyseed could also be made optional, since we need to keep old seed code for backwards compatability anyway, it could be disabled during compile time and old seed code is used. For those niche cases where copyleft code is not acceptable it should be fine to not have Polyseed. A relicense to MPL 2.0 like mx25519 would still be good.
-
br-m
<articmine> selsta: What would be an example niche case where copyleft code is not acceptable?
-
tevador
Yes, Polyseed is definitely optional. Wallets that don't support Polyseed can still be used to import Polyseed converted to a legacy seed (it's a one way conversion).
-
selsta
BTCPay Server for example would have extra compliance obligations when integrating Monero, they could disable Polyseed since it's not required for accepting payments.
-
selsta
(I did not research this example so it's possible it would not be an issue for them anyway)
-
tevador
BTCPay Server is open source, so where exactly the problem would be?
btcpayserver.org links to their github, which, IMO, counts as "reasonable means" to provide the source code per the MPL-2 license.
-
br-m
<rbrunner7> "Polyseed could also be made optional" Not soure how you mean that. People who build on Monero code but don't want the license burden would compile the code without Polyseed inclusion? Or would we public 2 different versions of the CLI wallet app, one with Polyseed and one without?
-
tevador
^ I think optional here means there is a compile-time switch to disable it.
-
selsta
yes, for the public there would only be one version
-
selsta
tevador: I don't think including MPL 2.0 code would be an issue for BTCPay Server, but tobtoht had reservations and I don't know enough about licensing to judge myself. It appears a compile time switch is a compromise everyone agress on.
-
br-m
<rbrunner7> Well, if I think about the many, many places where I put in code to handle Polyseeds ... if the way to go is #if ... #endif around all of them, I don't know whether that idea would really fly ...
-
br-m
<rbrunner7> Or would we link in a dummy Polyseed library?
-
br-m
<rbrunner7> All the methods, but no code behind it?
-
br-m
<jpk68:matrix.org> What is the benefit of Polyseed using a copyleft license? I can't think of any optimizations one would want to be open-sourced, which the author would be forced to reveal under a "weak" copyleft license such as the LGPL
-
br-m
<jpk68:matrix.org> Dependency injection could also be used to circumvent it to some extent
-
br-m
<rbrunner7> Maybe some significant extensions, like using the checksum polynoms to restore a single missing word (as I think to remember that is technically possible)?
-
br-m
<tobtoht> We can do a cleanroom reimplementation in C++ and license it under BSD-3. We already have a BSD-3 polyseed implementation written in Dart, could use that as a template. No licensing drama, no additional obligations, and our entire downstream gets to benefit from polyseed.
-
tevador
Speaking of the dart implementation:
cake-tech/polyseed_dart #7
-
br-m
-
br-m
<kayabanerve:matrix.org> I don't claim that to be clean room but it wasn't a translation and was written from scratch. The most copied would solely be the definition of constants.
-
br-m
<kayabanerve:matrix.org> cc tevador if they want to clarify at first glance, if they believe it's derivative (re: GPL requirements) and/or would prefer any acknowledgement/statements.
-
br-m
<kayabanerve:matrix.org> TBH, I'd prefer polyseed, the spec, be copyleft but the impls be BSD-3 or comparable. I don't think that is feasible under current legal constructs, even if it can be stated as a request within respectful society.
-
br-m
<jpk68:matrix.org> Ah, how conducive to the spirit of open source. Let's impound ourselves with more bureaucracy and legal requirements
-
br-m
<kayabanerve:matrix.org> As in, use or derivative designs have to specified, stated, and published, but my impl of Polyseed would be MIT while citing it is an impl of this spec licensed as follows.
-
br-m
<kayabanerve:matrix.org> ^ ramblings, feel free to ignore, but I do welcome any opinions from tevador on if my Rust library is respectful or not. I'm willing to make adjustments to ensure it is, even if I don't believe I'd be legally obligated to.
-
br-m
<kayabanerve:matrix.org> @jpk68:matrix.org: This is off-topic for Lab so for my last message on this: People can want to abolish copyright. That doesn't change if I publish something with a request, people should reasonably respect my request. I should be allowed to say, if you use this spec, please declare so and state changes, even though your impl [... too long, see
mrelay.p2pool.observer/e/hM-aqKILUG5jX2Ns ]
-
tevador
The rust version doesn't look like a translation at first glance, at least not to the extent that the dart one does.
-
br-m
<kayabanerve:matrix.org> But it's all up to tevador as it's tevador's thing. This was just my hat in the ring on what could be a good choice of license and requirements to ensure respect, but what's respectful is following what they request or choosing not to engage with them and their work. Free choice in association and all that.
-
br-m
<jpk68:matrix.org> @kayabanerve:matrix.org: Sure, people can do that all they want. I wasn't really taking issue with what you said; having the spec be copyleft and the implementation be permissive would even be preferable, IMO
-
br-m
<kayabanerve:matrix.org> tevador: Cool. I won't insist that's a binding legal opinion. Lmk at any time if I can do anything to better acknowledge you :)
-
tevador
Yes, polyseed is missing a formal specification. That's something that should be fixed.
-
br-m
<jpk68:matrix.org> However, a license is more than just an acknowledgment to respect someone's work - not sure if I can agree with something that would potentially let the state punish someone for "copying" source code. Does that not sound a bit dissonant to what the point of digital cash is?
-
tevador
I think it would be quite hard to violate MPL just by copying code. You'd have to either remove the copyright notices (this would also violate most permissive licenses) or make it closed-source.
-
br-m
<jeffro256> DataHoarder: I misspoke about the T generator, those changes are already in the spec
-
DataHoarder
unbiashed hash to point is changing, so that'd be changed to dc42e1d3307b2d4b3b02729abe577e231d79478141cb5b310ca9fa6e127616a3
-
DataHoarder
(it'd use blake2b with the Monero personalization string)
-
DataHoarder
you changed the representation here,
monero-oxide/monero-oxide #188 which changes the derived T value
-
br-m
<jeffro256> Durrr you're right, I copy and pasted the wrong value from that PR
-
DataHoarder
Hp^2 also needs to get updated with the new target commit ids, or maybe not, as H64 was indicated for use and it just ended up with Monero personalization being good everywhere
-
DataHoarder
also, on master I don't see any pushes since 4 months ago so maybe you are talking about a different local repo?
-
DataHoarder
I am looking at
github.com/jeffro256/carrot unless there's somewhere else with the Carrot spec
-
br-m
<ofrnxmr> Fwiw, i think they ship the stock monero binary, so i dont think it has to include anything? > <selsta> BTCPay Server for example would have extra compliance obligations when integrating Monero, they could disable Polyseed since it's not required for accepting payments.
-
br-m
<ofrnxmr> also, btcpayserver doesnt ship or support monero upstream, btcpay-monero ships a plugin, and its that plugin that ships prebuilt monerod and monero-wallet-rpc. Also dont think they use seeds
-
br-m
<ofrnxmr> (Just imported view-only wallets)
-
br-m
<jpk68:matrix.org> IIUC, if they download pre-built release binaries and Polyseed/mx25519 is licensed under LGPL, they will indeed have to include licenses
-
br-m
<jpk68:matrix.org> That may not be the case for MPL, however