-
koe000[m]
I spent some time in Excel with my perf test data. This is probably the most important high-level-view plot.
-
-
koe000[m]
Basically, my take-away is we will probably have to accept 64-member rings. Note that BOTH axes are log-2.
-
koe000[m]
Since I know people will ask... here is tx size.
-
-
koe000[m]
These are 2-in/2-out transactions.
-
Rucknium[m]
koe000: What is the significance of decomp.n and decomp.m? They have a big effect on verification times
-
Rucknium[m]
From what I see in the data
-
UkoeHB
It is how reference sets are handled by grootle proofs. n^m = ref set size
-
UkoeHB
I found that 3-series was slightly better than 2-series, and >3 was either equal to or worse than 2.
-
UkoeHB
For transaction size*, verification costs were independent of decomposition base.
-
gingeropolous[m]
wow, so sizewise a 128 ringmember seraphis is the same size as a 32 ringmember triptych.
-
koe000[m]
Rucknium
-
-
gingeropolous[m]
and squashed a 128 is about 16 msec?
-
koe000[m]
I like this combined view better.
-
-
UkoeHB
gingeropolous[m]: more like 18msec
-
UkoeHB
17.6*
-
gingeropolous[m]
and a current clsag ringsize 11 is like 9msec?
-
UkoeHB
gingeropolous[m]: I really like how clean this data is :) thanks to your nice machine
-
gingeropolous[m]
glad it worked out!
-
UkoeHB
yeah about 9msec in this poc
-
gingeropolous[m]
though, should we get #s on different processors etc?
-
UkoeHB
right, but they should still be 'relatively' the same (proportionally)
-
gingeropolous[m]
yeah
-
-
UkoeHB
With batching, squashed can shave off another ~2ms I think.
-
Rucknium[m]
I'm not sure how useful that ^ is.
-
Rucknium[m]
<UkoeHB> "For transaction size*, verificat..." <- What do you mean by this?
-
UkoeHB
Check my 'decomp' image. The verification lines all match, while tx sizes don't line up.
-
Rucknium[m]
With my OLS regression approach, I'm seeing both decomp.n and decomp.m have a substantial effect on verification times, with the effect of decomp.m being larger. But my approach may be inappropriate here.
-
UkoeHB
Yes, I mean verification costs as a function of ref set size (as a function of decomposition) are the same if you change the decomposition base (n). The ‘variable relation’ is the same.
-
Rucknium[m]
So, no "interaction effect" between ref set size and decomp.n
-
UkoeHB
I guess?
-
Rucknium[m]
verif.time = beta_1 * ref.set.size + beta_2 * decomp.n + beta_3 * ref.set.size*decomp.n + error
-
Rucknium[m]
Then beta_3 = 0
-
Rucknium[m]
There is no combined effect, I think we are trying to say
-
Rucknium[m]
All the effect of ref.set.size and decomp.n on verification time is accounted for by their individual effects in isolation rather than their combination. It's probably not an important point.
-
sethsimmons
<koe000[m]> "mock_tx_perf_z2a_2_refset.png" <- koe000: mind if I share this on Twitter, or too early for that?
-
sethsimmons
Also, thank you all for producing such clean charts/data this early on! Extremely useful for the non-statisticians among us 🙂
-
UkoeHB
sethsimmons: it is a bit early, I want to clean up the charts a bit
-
sethsimmons
UkoeHB: Definitely understand, will put it in the backlog 🙂
-
sethsimmons
Thanks for all your work on Seraphis! Looking very exciting.
-
boogerlad[m]
UkoeHB: does seraphis reduce or increase the number of communication rounds necessary for multisig compared to monero today?
-
boogerlad[m]
I know triptych increased the number
-
UkoeHB
boogerlad[m]: it is the same as currently
-
yanmaani
What's the goal here? To determine best algorithm in terms of performance etc?
-
UkoeHB
Yes, and the best design choices for each algorithm.
-
UkoeHB
The biggest decision is ring size. I don't think we should choose a ring size that causes much slower tx verification than current tx.
-
Rucknium[m]
UkoeHB: Should I try to do more visualizations? I am somewhat hindered by the fact that I don't understand the meaning of some of the variables.
-
UkoeHB
Rucknium[m]: I think what I have right now will work.
-
UkoeHB
Today I will write an MRL github issue discussing the results.
-
Rucknium[m]
Ok sounds good
-
yanmaani
valuable to do regression, try to determine a model?
-
yanmaani
seems like the bulk of the work is in determining trade-offs
-
UkoeHB
Eh idk if a model would be super useful when the final decision is based on heuristics and eye-balling it.
-
gingeropolous
and id hope there might be more optimizations eventually
-
boogerlad[m]
is verification a single threaded task?
-
UkoeHB
Afaik you can verify multi-threaded, so long as key-image checks are atomic.
-
dEBRUYNE
UkoeHB: I think choosing a ring size that approximately equals the current verification time is the best option
-
gingeropolous
thats gonna be like 16
-
gingeropolous
and a 16 seraphis is larger than a 16 clsag :(
-
carrington[m]
If light wallet servers become more of a thing, a bump in verification time isn't the worst thing in the world
-
gingeropolous
well i guess the question is what do we mean by "current verification time", because afaik we're all on board for a ringsize 16 clsag in the next hf
-
gingeropolous
so that'll get us a ringsize 64 seraphis
-
gingeropolous
~~
-
UkoeHB
It might be possible to justify 128 using the squashed variant, which benefits a lot from batching. Needs careful thought.
-
Rucknium[m]
The danger of small ring sizes is rising. It's a tough call, but I think sacrificing longer verification times for greater privacy is what many users would prefer.
-
gingeropolous
yeah, that plus output tagging is gonna drastically change the UX on the wallet side
-
carrington[m]
64 seems like a chunky increase for a small size/verification increase. Hopefully with OSPEAD, binning and other improvements to the decoy selection we'd end up with a "smarter" 64 which is better than a naive 100+
-
Rucknium[m]
The thing is, we have these benchmarks for verification times -- they are easy to do and easy to grasp. What we somewhat lack is a sense of the privacy risks that correspond to a given ring size. That's hard to do and maybe hard to grasp (I'm working on it).
-
gingeropolous
i dunno man.... if i have something i wanna hide in a bunch of other things, id pick more other things over less other things, provided those things were picked with same mechanism
-
gingeropolous
:)
-
yanmaani
Question about RandomX: Could you run it with a scratch space size of like 200gb and get a storage-hard algorithm instead?
-
UkoeHB
sech1 hyc ^
-
yanmaani
or like RAM-hard
-
sech1
RANDOMX_DATASET_BASE_SIZE is limited to 4 GB, but technically you could increase RANDOMX_DATASET_EXTRA_SIZE to ridiculous values
-
sech1
But as it is now, it will require 200 GB of actual RAM, not SSD
-
hyc
you could mmap the SSD space but it would be incredibly destructive
-
yanmaani
hyc: But it would have less power use, right?
-
hyc
and chia already has that problem, not sure it's worth retreading the same path
-
yanmaani
sech1: how so? Couldn't I just mmap 200 GB worth of space?
-
yanmaani
Chia has additional stuff that makes their PoW algorithm extremely complex though.
-
sech1
you can mmap, but you need 256 GB of memory sticks installed, right?
-
sech1
or it will be 0.1 h/s hashrate :D
-
isthmus
👀 Foundations of Transaction Fee Mechanism Design, by Hao Chung & Elaine Shi
arxiv.org/pdf/2111.03151.pdf
-
Rucknium[m]
Damn, they scooped me
-
Rucknium[m]
See, here's a 50-page CompSci paper!
-
Rucknium[m]
"3) miner-user side contract proofness (SCP), i.e., no coalition of the miner and one or more user(s) can increase
-
Rucknium[m]
their joint utility by deviating from the honest behavior. "
-
Rucknium[m]
^ Coalitions are always tough to grapple with.
-
isthmus
I think a lot of the time people like to conceptualize a single attacker against a homogeneous and coordinated pool of "honest" miners
-
Rucknium[m]
"We prove a new impossibility result: assuming finite block size, no single-parameter, non-trivial, possibly randomized TFM can simultaneously satisfy UIC and 1-SCP."
-
isthmus
Well then, infinite block size it is
-
Rucknium[m]
Done, infinite block size is the way to go. I always knew....
-
isthmus
And once we have infinite block size, then there's no reason to stick with a finite number of ring members
-
isthmus
And statistical power of the tests asymptotically approaches zero as ring size goes to infinity, right?
-
isthmus
Dang, I dunno why we didn't spot this sooner. Easy fix, patch into the next hard fork?
-
Rucknium[m]
In all seriousness, the result may be different if there is an adjustable block size, and txs are not filling blocks routinely. Don't need quite infinite block sizes, maybe. Just block sizes that aren't a practical constraint.
-
» isthmus pauses halfway through deleting every IF/THEN block that seems to check block size or transaction size
-
isthmus
oh, ok
-
isthmus
yea maybe that
-
Rucknium[m]
I have a preliminary result for PR#8047:
-
Rucknium[m]
0.8772995% of Monero transactions since the beginning of time have at least one such "collision"
-
Rucknium[m]
I think. It's preliminary.
-
carrington[m]
Well, nothing to worry about then?
-
Rucknium[m]
I think we care about all of Monero's children.
-
Rucknium[m]
1% seems a bit higher than I would like. My guess is that it may be prevalent when large consolidations occur, like pool mining.
-
Rucknium[m]
Special thanks to neptune for setting me up with a SQL-to-R pipe
-
Rucknium[m]
isthmus: It's not clear to me, or maybe anyone else, how important this impossibility result is in practice, anyway.
-
Rucknium[m]
> <@rucknium:monero.social> I have a preliminary result for PR#8047:
-
Rucknium[m]
> 0.8772995% of Monero transactions since the beginning of time have at least one such "collision"
-
Rucknium[m]
In the last few months this figure has been around 0.4%
-
sech1
Are these transactions mostly many-input?
-
Rucknium[m]
I think so. I am writing out some code to disaggregate the results now.
-
UkoeHB
-
Rucknium[m]
sech1: For txs with 2 or fewer inputs, collisions have occurred in about 0.1% of such txs since the genesis block
-
Rucknium[m]
More recently, it has occurred in about 0.05% of such txs
-
Rucknium[m]
Well, I suppose it cannot occur when there is just one input, so keep that in mind with these stats.
-
Rucknium[m]
Ok, when the number of inputs is exactly 2, then collisions occur in 0.2255876% of all such tx since the genesis block.
-
Rucknium[m]
Actually, among txs that have a single input, a collision has occurred a total of 4 (four) times in the entire history of Monero. I'm not sure what that's about.
-
sech1
What about collisions within the same ring, irrespective the number of inputs?
-
Rucknium[m]
sech1: I am told that such collisions are prohibited. jberman , can you confirm?
-
jberman[m]
-
jberman[m]
I don't think collisions across rings are a big deal either, even if there were a larger number of them. the issue is more significant when you have an entire ring equivalent to another ring
-
Rucknium[m]
How could you have "an entire ring equivalent to another ring"?
-
jberman[m]
well aside from key image
-
jberman[m]
assume ring size of 2. user owns output ID's N and N+1. User spends both outputs in the same tx. the first ring spending output ID N selects output ID N+1 as a decoy. the second ring spending output ID N+1 selects output ID N as a decoy
-
jberman[m]
both rings would have output ID N and N+1 as decoys
-
Rucknium[m]
Yes, that could occur, but not reasonably with ring size 11+. It could be an issue with Aeon, though.
-
jberman[m]
yep agreed
-
Rucknium[m]
jberman: How about communicating your thoughts on the GitHub PR? I will post my empirical findings.
-
jberman[m]
will do