-
sarang
Updated paper on recursive proof composition:
eprint.iacr.org/2019/1021
-
needmonero90
What would be the privacy ramifications if we allowed txes to be created without a ring signature (or one member), but only for txes that occurred within the past 10 blocks (our current hard-coded limit that you can't respend within)
-
needmonero90
Which would of course allow clients to blacklist the now probably spent output and not use it in rings
-
needmonero90
Provably spent*
-
sgp_
of course there are obvious privacy drawbacks for the specific transaction
-
sgp_
are there efficiency limitations for searching for and avoiding these specific outputs?
-
needmonero90
If blacklisting the provably spent output handles the privacy issues, and efficiency isn't a concern, this would potentially allow for chained spends within 20 minutes
-
sgp_
I suppose one ramification is that if these quick-spend transactions are removed from the typical decoy spend distribution, it would impact the distribution
-
sgp_
decoy selection would need to be adapted for the change in user behavior (again)
-
needmonero90
Would it be worth it for the upside of quick spends?
-
sgp_
possibly assuming it was clearly communicated
-
sgp_
maybe use ringsize - 1 to be slightly more safe (chose exclusively from past 10 blocks)
-
sgp_
the main drawback would be if this feature was widely used
-
needmonero90
Make it a prompt, but only in situations where there is no alternative
-
needmonero90
Just received from exchange, sending to Atm (for example)
-
sgp_
is there a possibility of wallets stupidly only implementing this less-safe send method?
-
needmonero90
No available outs other than one within 10 blocks, 'Attempt quick spend? Blah blah reduced privacy, wait X blocks if you want to be safe'
-
needmonero90
Of course there is
-
sgp_
that is a potential severe issue
-
needmonero90
It would require users to be using their wallet every 20 minutes to be a problem
-
sgp_
open up a less-safe method, some idiots (or a system devised by idiots) will always use it
-
needmonero90
I don't think it's that much of a concern
-
sgp_
oh here's a mitigation
-
sgp_
if ringsize is (ringsize -1) [or whatever we set it to be identifiable], then consensus rule that all decoys must be within the last 10 blocks or so
-
needmonero90
I thought that was the assumption to begin with
-
sgp_
probably with some padding for latency
-
needmonero90
No padding.
-
sgp_
that's the assumption, but it would need to be a consensus rule
-
needmonero90
Hmmm
-
moneromooo
Txes become invalid fast if there's any contention.
-
sgp_
so if I try to stupidly spend my output this way a month later, the nodes would reject
-
moneromooo
But maybe that's what you want if you need to meet a timer...
-
sgp_
since at least 1 output will be old
-
sgp_
we can also require that these transactions have high fees
-
needmonero90
Does this seem worth looking into?
-
sgp_
but miners may disregard
-
needmonero90
You can force fees with block penalties, but thats also potentially dangerous
-
sgp_
maybe use ringsize + 1 to make larger transactions lol
-
moneromooo
Then you can't do this if there's very few txes in the last 10 blocks.
-
moneromooo
Or the last 8. Since you want your tx not to become invalid before it has a chance to get mined.
-
moneromooo
I forget what the reasons for the 10 block thing are, beyond "reorgs make everyone's life harder". Since that one would be (mostly ?) fixed by signing for output keys rather than indices.
-
needmonero90
It was a privacy issue
-
needmonero90
Because people ended up using txes in mempool iirc
-
needmonero90
As ring members
-
moneromooo
I suppose it'd still be vulnerable to signig with an output that gets reorg'd out by a double spend...
-
moneromooo
Can you expand on that ? Unmined txes can't be used since you don't know their outputs' indices yet...
-
moneromooo
Or I guess you can guess and spray :P
-
needmonero90
🤔
-
moneromooo
They actually did that ?
-
needmonero90
I can't recall now
-
needmonero90
It's been so long since I last thought about the 10 block window
-
sgp_
it was some privacy and reog combination
-
sgp_
transactions can't be confirmed if they include outputs that don't exist on another chain
-
sgp_
decoys complicate the process, so the window helps things settle down
-
sgp_
(as far as I understand it)
-
sgp_
Isthmus worked on some numbers for reorg lengths under "normal" network conditions
-
sgp_
needmonero90: my gut feeling is that if this feature were implemented, the nodes would need to check that all outputs of this transaction type are from the last 20 blocks
-
needmonero90
and we can't overlap the windows, I suspect, so that would mean doubling the length of time before you can 'securely' spend
-
needmonero90
definitely a tradeoff
-
sgp_
no I am assuming the windows overlap
-
needmonero90
hm
-
sgp_
*ideally* a wallet would spend correctly after block 10
-
sgp_
but due to latency, this would only be consensus-imposed after block 20-ish
-
sgp_
in some ways, segregating user behavior into these classifications *may* improve privacy
-
sgp_
just like I believe separating coinbase outputs will improve user privacy for >95% of users
-
sgp_
but in this case I think the privacy benefits are less clear, since we would be permitting behavior that isn't currently allowed. How would it be used? How many people would use it? etc
-
sgp_
I don't yet know if I want to be a champion for this idea and research, but obviously if the tradeoff is deemed to be acceptable, that would provide a huge UX improvement
-
sarang
Documentation write-up for transaction proofs, intended for Zero to Monero:
gist.github.com/SarangNoether/99a24506772db5ce25e89500d9317e3e
-
sarang
Accounts for the new InProofV2 and OutProofV2 from
monero-project/monero #6329
-
derpy_bridge_
[keybase] <surae>: Hoooooo
-
sarang
Hello suraeNoether surae
-
sarang
When is your Triptych talk?
-
derpy_bridge_
[keybase] <surae>: In about 40
-
derpy_bridge_
[keybase] <surae>: I think
-
derpy_bridge_
[keybase] <surae>: Oops, lunch first, then second talk after that
-
sarang
Neat! Are the talks recorded/posted/streamed?
-
sarang
Also, any last-minute questions or details you'd like clarified for the talk?
-
sarang
(I didn't review any further changes you made to the Overleaf presentation since we talked last)
-
suraeNoether
nope, i'm good. i believe that the talks will be made available online...
-
suraeNoether
allegedly at
fields.utoronto.ca but I don't think they'll be posted today.
-
sgp_
I'll be watching closely :)
-
derpy_bridge_
[keybase] <surae>: National archives of Korea appears to have invented a rather convoluted blockchain scheme for official record keeping.
-
derpy_bridge_
[keybase] <surae>: First few talks were on crypto protocols and quantum computing. These two are from librarians, then me again.
-
derpy_bridge_
[keybase] <surae>: It's a curious scheduling choice
-
derpy_bridge_
[keybase] <surae>: Wait: are these streaming??
-
scoobybejesus
is the korean blockchain PoW?
-
derpy_bridge_
[keybase] <surae>: Not clear, I am going to ask why not use a DB with a public facing bulletin board
-
derpy_bridge_
[keybase] <surae>: I would guess it's staked since it's governmental
-
derpy_bridge_
[keybase] <surae>: Seems more like a chain of signatures instead of a blockchain, not sure what a fork means :/
-
derpy_bridge_
[keybase] <surae>: I'm not going to ask my question because he has already gone over time
-
sarang
Initial timing estimates coming in for new protocols... running the numbers now
-
sarang
And the winner is... Triptych!
-
moneromooo
And the crowd goes wild!
-
sarang
The post-BP chain would take the following number of hours to verify (spend, balance, and range proofs only):
-
sarang
rct3-multi 4.12
-
sarang
rct3-single 4.60
-
sarang
triptych-multi 3.68
-
sarang
triptych-single 3.94
-
sarang
(this is for ring=11, as an initial test)
-
sarang
I need to get additional timing data to compare to estimates for CLSAG/MLSAG
-
sgp_
very cool
-
sgp_
let's just go all-in on triptych already
-
sgp_
I need an excuse to visit that brewery
-
sarang
Interestingly, there are some changes at higher ringsize, where Triptych still wins but the RCT3 variants swap
-
sarang
The same chain region for ring=256 would take about 20 hours to verify
-
sarang
(verification is linear in the ring size)
-
sarang
This assumes per-block batching, BTW
-
sgp_
can you do better than per-block?
-
sarang
Next up is to use larger fixed batches, and pull some operation timing data to compare to CLSAG/MLSAG (which use different ops)
-
sarang
^^ yes
-
sarang
The current default is per-block, so I coded that in
-
sarang
Once I have the added functionality, I'll post the code for the analysis tool
-
sgp_
the linear verification time is not ideal :(
-
sgp_
but this is still exciting
-
sarang
Yeah, can't do better than that (up to a logarithmic factor from multiexp)
-
sarang
You could get crazier and start factoring in common ring epochs across a batch due to the selection algorithm
-
selsta
sarang: What is the hardware for this kind of timing?
-
sarang
It's a 2.1 GHz Opteron
-
sarang
Same machine as all the timing data I've reported earlier
-
selsta
ok
-
sarang
It's straightforward to run perftests for multiexp and use those timings in the tool, though
-
sarang
at large N, an N-multiexp is quite linear
-
sarang
so the estimates are pretty reasonable
-
derpy_bridge_
[keybase] <surae>: Agreed
-
sarang
Agreed to which part? =p
-
sarang
Anyway, I'll get some better comparison data and run plots over various ring sizes
-
sgp_
I'm so excited for this data
-
sarang
Yeah, the tool is finished for all the Triptych and RCT3 variants already... it's just a matter of running it across the whole parameter space of interest
-
sarang
Which IMO is probably N=128 to N=1024
-
sarang
i.e. 1 and 2 orders of magnitude higher than current
-
sarang
I should have the plots ready to go by tomorrow's meeting
-
derpy_bridge_
[keybase] <surae>: Agreed re: going hard on triptych
-
sarang
It doesn't win for size, but it wins for time
-
sarang
Heh, surae I thought you were agreeing to "at large N, an N-multiexp is linear"
-
sarang
I mean, sure
-
moneromooo
Given size tends towards constant with increasing ring size, I think time is the most important. Even discounting arguments about physics.
-
sarang
-
sarang
-
sarang
Todo: include CLSAG/MLSAG timing estimates
-
sarang
Todo: modify for arbitrary batch sizes
-
sarang
FWIW both Triptych variants are ~12% faster than RCT3-single at N=256
-
sarang
and ~30% faster than RCT3-multi at N=256
-
sarang
RCT3-multi really suffers at large ring size because of its padding requirements
-
sarang
hence the single and multi variants flipping
-
sarang
Anyway, anyone is welcome to play around with the tool and dataset if they like
-
sarang
It doesn't cache results for common transaction structures (for simplicity), so it's pretty slow
-
sarang
but it'll do a full-chain run in under a minute
-
sarang
Rather, a post-BP chain run (for better protocol consistency)
-
sarang
-
gingeropolous
hooray triptych!
-
gingeropolous
lemme make that PR and call it a day
-
sarang
Who knows? Perhaps a future version of Omniring will win
-
sarang
It's still under development
-
selsta
Triptych has the best name for marketing
-
gingeropolous
well, that brings up the concern of the cutting edge.... there's always gonna be something in development
-
selsta
What about the mathematical difficulty / complexity of the protocols, are there obvious differences between the protocols?
-
sarang
RCT3 uses a proving system based on Bulletproofs
-
sarang
Triptych uses a proving system based on one by Groth and Kohlweiss
-
sarang
Neither is crazy complex
-
derpy_bridge_
[keybase] <surae>: I feel like triptych is less prone to implementation problems
-
derpy_bridge_
[keybase] <surae>: But that's not quantifiable
-
derpy_bridge_
[keybase] <surae>: It's probably my own familiarity with it, not a comment on the complexity
-
sarang
Bigger batching shaves maybe an hour (out of 20) off full verification time for Triptych
-
sarang
so only about 5% over per-block
-
derpy_bridge_
[keybase] <surae>: That's significant
-
derpy_bridge_
[keybase] <surae>: Since we have an exponential trade-off between time and speed
-
sarang
Yeah, but not as significant as I'd hoped
-
derpy_bridge_
[keybase] <surae>: Time and space*
-
sarang
*spacetime
-
sarang
batching code pushed
-
sarang
in case you're playing along at home
-
UkoeHB_
20hrs or 19hrs is quite a lot
-
derpy_bridge_
[keybase] <surae>: Wait: sarang are you saying the entire chain as-is would take 19 hours to sync if it had been triptych the whole time?
-
sarang
The post bulletproofs chain
-
sgp_
I've definitely synced full nodes recently in less than 20 hours. Am I comparing the wrong numbers?
-
sarang
Yes
-
sarang
One sec
-
sgp_
good :)
-
UkoeHB_
sgp_: without checkpoints?
-
sgp_
UkoeHB_: probably not
-
sgp_
just default run and see
-
selsta
default is with checkpoints
-
sgp_
how much faster is it with checkpoints? I thought Bitcoin removed them
-
selsta
significantly faster
-
sgp_
lopp recently tested 1 day 2 hours 40 mins with `max-concurrency=12 fast-block-sync=0 prep-blocks-threads=12`
-
selsta
sounds right, AFAIK he used strong hardware
-
sgp_
my computers are always limited by the CPU
-
moneromooo
--block-download-max-size might help, default is... 250 MB IIRC. If you have the RAM, setting it higher would allow early download.
-
sgp_
how easy is it to test the available ram and increase that automatically?
-
moneromooo
Not easy.
-
moneromooo
You start getting in the way of the OS caching.
-
sarang
sgp_ etc: the numbers I gave are estimates about taking the entire existing post-BP chain's input-output distribution and applying it instead to different protocols
-
sarang
Notably, at higher ring sizes
-
sarang
They'll be useful for comparison, but I would not use them as hard-and-fast expectations for actual sync time
-
derpy_bridge_
[keybase] <surae>: Sgp_etc would be a good v2.0 username
-
derpy_bridge_
[keybase] <surae>: So uh anyone in Toronto bored?