-
UkoeHB
Meeting 2hr
-
rbrunner
UkoeHB: Still looking for a Seraphis folder name to replace 'seraphis_core' that sorts after 'seraphis_crypto'?
-
rbrunner
If yes, how about 'seraphis_fundamentals' or 'seraphis_essentials'?
-
UkoeHB
-
UkoeHB
1. greetings
-
UkoeHB
hello
-
Rucknium[m]
Hi
-
rbrunner
Hello
-
vtnerd
hi
-
one-horse-wagon[
Hello!
-
UkoeHB
rbrunner: hey seraphis_essential might work :)
-
rbrunner
Ok :)
-
dangerousfreedom
Hi
-
» isthmus is partially around 👋
-
UkoeHB
2. updates, what's everyone working on?
-
UkoeHB
me: continued cleanup of the seraphis library (for example yesterday I updated the legacy balance recovery stuff to support non-default hw devices)
-
vtnerd
added admin-rest-api functions to monero-lws - the PR hasnt been made but the code is on my github
-
vtnerd
this week is finally some bp++ hopefully
-
Rucknium[m]
I did some historical analysis of the P2Pool outputs issue. Summary: The share was about 5% before the August hard fork, which is good news for privacy. It would have been bad if ring size was lower than now and p2pool output share was 15 - 20%. I will post the plots to the GitHub issue in 30 minutes (waiting on data processing).
-
dangerousfreedom
still on the knowledge proofs
-
isthmus
I've been doing housekeeping on some drafts that have been 95% done for months or years but still reside in private overleaf drafts... Main one is the fungibility defect labeling framework that has been shared here a few times in the past
-
Rucknium[m]
isthmus: Maybe tonz0fphun 's project could look at on-chain transaction uniformity defects.
-
isthmus
Yea, based on recent chatter in this room I think that project could be a very good fit
-
UkoeHB
3. discussion
-
Rucknium[m]
On OSPEAD: I am waiting for ArticMine's feedback on my draft. However, it's been 4 months so at some point I will just have to implement the plan in the document hyc and isthmus gave a green light to the general plan.
-
UkoeHB
I've been thinking a little bit about data flow and when it's good or not good to use variants. Right now I have the seraphis tx implementations in separate structures, with the thought that it's much easier to reason about what a tx contains and what rules apply to it when everything is isolated. However, any marginal structural change will require an entirely new transaction type and essentially parallel
-
UkoeHB
implementation of tx builders and files. Idk if this is really solvable or if it's just a tough tradeoff between spaghetti and verbosity.
-
Rucknium[m]
Other members of the MAGIC Monero Committee (not me; I needed to abstain) voted to close mj's project that would help OSPEAD with things I cannot do. There was a lack of funds raised after two months. So like I have said before, OSPEAD will have some blind spots due to lack of C++ support. But the plan is mostly intact.
-
UkoeHB
The alternative to separate structs is to make every tx component a variant, and then any tx handler internally branches off the variant types.
-
Rucknium[m]
Unless someone else wants to work on the C++ work or mj finds funding another way.
-
rbrunner
Hmmm, would that be a good topic for a new screen-sharing session, where you show what you have? I think without such an introduction it's hard to really get into this.
-
UkoeHB
Which is what I'm doing for balance recovery - every enote type is piped into a variant, and enote handling involves an open-close branching pattern for type-based processing.
-
rbrunner
For me right now not even the question is fully clear :)
-
one-horse-wagon[
OSPEAD will have some blind spots due to lack of C++ support. But the plan is mostly intact. Could you be more specific on the "blind spots" if possible?
-
UkoeHB
Rucknium[m]: do you have an estimate of how much code is needed to get OSPEAD in shape? Like a couple files, maybe 2k lines, or a bunch of files, 5-10k lines?
-
Rucknium[m]
For implementation in the Monero codebase? A few lines
-
Rucknium[m]
It's just changing the probability distribution. You may have to import a new one or define it manually. Should not be hard
-
UkoeHB
ah
-
UkoeHB
so all the work is about studying and defining the distribution?
-
Rucknium[m]
Wait. Did you mean the actual process of statistical estimation. I may have misunderstood
-
UkoeHB
yeah I meant for monero implementation mainly
-
rbrunner
The work for that somehwat elusive C++ dev maybe?
-
Rucknium[m]
-
Rucknium[m]
Part of the selling point of OSPEAD is that it would remain parametric (the P in OSPEAD). So the actual change to the codebase would be small.
-
Rucknium[m]
A very rough guess at the total number of C++ lines that would need to be written for tasks 1 - 3 there is...maybe 2k. But task 1 and 2 is mostly reading code.
-
rbrunner
But I guess without 3 you are a bit in the dark how those few changed lines in the Monero codebase have to best look?
-
UkoeHB
How do points 1 and 2 tie into 3, if the goal is an entirely new selection algorithm?
-
UkoeHB
estimation of the real distribution via subtracting the artificial one(s)?
-
Rucknium[m]
UkoeHB: The new selection algorithm is determined based on what's already on the chain, i.e. user behavior.
-
Rucknium[m]
rbrunner: I don't quite understand your question
-
rbrunner
3 is "Program a fast C++ implementation of a statistical procedure that estimates Monero's real spend age distribution. "
-
isthmus
@Rucknium[m] is there a reason that the analysis code needs to be in C++
-
rbrunner
I guess without the result of that it's hard to adjust decoy selection in a really good way
-
isthmus
Since it's not going into the Monero codebase?
-
Rucknium[m]
No. It would be nice if it was in a fast language. C, Rust, even Fortran
-
Rucknium[m]
I can write it in a scripting language, but that's slow. That's my plan now. Write it in R.
-
hyc
Fortran might actually be most appropriate for the job...
-
Rucknium[m]
It would be "nice" if it were a language that interfaces with R well like C, Fortran or C++. Maybe Rust does as well. It doesn't have to link to R though.
-
Rucknium[m]
With a slow implementation, the estimate will not be as precise. And we will probably not have a good measure of how precise it is.
-
isthmus
How would statistical performance depend on compute performance?
-
Rucknium[m]
Statistical performance depends somewhat on items 1 - 2 in that list.
-
isthmus
Oh I think we're talking about different things
-
Rucknium[m]
Measurement of precision (i.e. confidence intervals or standard errors) would depend on performance since bootstrapping feasibility depends on compute performance.
-
isthmus
Most of the serious "python libraries" are actually C/C++ engines with python bindings. pandas, numpy, etc. Does R have anything like that?
-
Rucknium[m]
Same with R. C/Fortran/C++ under the hood. But there is a difference in getting under the hood vs being on top of it
-
Rucknium[m]
If you write an explicit loop in a scripting language like R, then it's much slower than a vectorized operation that uses C under the hood.
-
Rucknium[m]
I know how to write fast R code, but it definitely has limits.
-
isthmus
"But there is a difference in getting under the hood vs being on top of it" hahaha yep. Going to borrow this analogy for design debates
-
isthmus
I've had to explain this to people before but didn't have a good quip like this
-
rbrunner
USD 48 collected on that MAGIC fundraiser, over 2 months, looks pretty bad.
-
Rucknium[m]
Bootstrapping: Bootstrapping is taking a single statistical procedure and running it many times. Usually 100 at a minimum. Better if it is 1000+. It sounds like throwing things at a wall and hoping it sticks, but there is strong statistical theory for it , developed by Efron in the 1980's.
-
Rucknium[m]
That's one reason why we might not get a measure of precision. I can write the code so that R can complete in reasonable time, but multiplied by 1000...that's a lot. The procedure itself is computationally expensive. Just the math.
-
Rucknium[m]
-
Rucknium[m]
Change the distribution and define the values of the parameters of the new distribution.
-
rbrunner
Maybe a somewhat pragmatic first attempt is needed, to get *something* better than now out of the door? So maybe it's 100x and some uncertaintly, but certainly better than today?
-
Rucknium[m]
rbrunner: Yes. Not having fast code doesn't stop the project. It creates some blind spots. I will make it work with the resources that we have.
-
rbrunner
Sounds promising.
-
rbrunner
Now I understand better what you meant with "blind spots".
-
isthmus
Is the process "embarrassingly parallel" ?
-
rbrunner
So we could start "OSPEAD at home"? :)
-
isthmus
I need a new screensaver
-
Rucknium[m]
Bootstrapping is definitely embarassingly parallel. Completely independent runs.
-
Rucknium[m]
And I have to split up the data anyway into weekly sets of data. And those procedures can run in parallel.
-
Rucknium[m]
By "have to" I mean I need to understand what's happening over time. The estimation could take a whole year of data, but then I would just have the average.
-
UkoeHB
We are approaching the end of the meeting, any last-minute questions or comments?
-
UkoeHB
ok seems like we are done, thanks for attending everyone
-
Rucknium[m]
-
UkoeHB
nice work thanks Rucknium[m]
-
rbrunner
Yeah, nice, Rucknium[m]. I would advice you make that known somehow to the Monero subreddit. People just love such graphs. Graphs or it didn't happen :)
-
Rucknium[m]
Thanks. I may post it in r/MoneroMining next week. Tomorrow I will post about the mining pool tx confirmation delays.
-
UkoeHB
Since publishing this seraphis design overview I have made various improvements
gist.github.com/UkoeHB/f508a6ad973fbf85195403057e87449e . If anyone thought the first version sucked, it should be noticeably better now :)
-
Rucknium[m]
Useful? "zkalc helps you calculate how much time cryptographic operations take on a real computer."
crypto.ethereum.org/blog/zkalc