-
Mumuks
Breaking RSA with a Quantum Computer
-
Mumuks
A group of Chinese researchers have just published a paper claiming that they can—although they have not yet done so—break 2048-bit RSA. This is something to take seriously. It might not be correct, but it’s not obviously wrong.
-
Mumuks
-
narodnik
-
narodnik
-
UkoeHB
Meeting 1.25hr
-
one-horse-wagon[
Hello.
-
UkoeHB
-
UkoeHB
1. greetings
-
UkoeHB
hello
-
rbrunner
Hi
-
Rucknium[m]
Hi
-
vtnerd
hi
-
tevador
Hi
-
UkoeHB
2. updates, what's everyone working on?
-
UkoeHB
me: continued cleanup/review of the seraphis lib. I am at least 2/3 done, and finding plenty of things to tweak, optimize, and generally clean up. I also reviewed tevador's updates to the jamtis spec, and his new URI spec (both looking good to me).
-
Rucknium[m]
More data analysis of p2pool outputs. Also looking at tx confirmation latency. And writing responses to isthmus's comments on OSPEAD.
-
tevador
-
vtnerd
not much to report again :/ there is a c version of bp++ for reference that will definitely help. otherwise its been doing stuff on other projects or vaca time
-
UkoeHB
also @vtnerd all the seraphis PRs have been updated based on your comments if you want to review again :)
-
vtnerd
yeah will circle back through that list again
-
UkoeHB
thanks
-
tevador
vtnerd: where can I find the C code?
-
one-horse-wagon[
vtnerd: Do you have a reference for that C version?
-
vtnerd
-
one-horse-wagon[
Thanks
-
vtnerd
its written for a different crypto lib so it cant be used directly, but rough numbers can be used and compared against bp (I think)
-
UkoeHB
it's a pretty huge diff for a proof, BP and BP+ are only 1k lines
-
tevador
Thanks. Much more readable than haskell.
-
isthmus
I've just been working on a project to analyze rings that differ by only one ring member
github.com/Mitchellpkt/ringxor
-
isthmus
That implementation runs in ~O(N^2) and based on benchmarks this will take about a month to exhaustively check ring pairs. However, I have a ~O(N) solution in mind which will probably bring it down to sub-day on a decent machine.
-
isthmus
h/t @rucknium shared a transaction with me that kicked this whole thing off, @neptune is going to help with the data, and @gingeropolous has been helping me get set up on research infra
-
UkoeHB
I guess this one is 1k lines src/modules/bulletproofs/bulletproofs_pp_rangeproof_impl.h
-
UkoeHB
3. discussion
-
UkoeHB
anything to discuss today?
-
Rucknium[m]
I have number on the bytes added by p2pool coinbase txs. Over Oct-Dec the p2pool coinbases added 23 MB. That's 0.53% of the total bytes added to the blockchain over that period. p2pool found about 7% of blocks.
-
UkoeHB
makes sense
-
Rucknium[m]
p2pool miners would generally have to consolidate the payouts before making them spendable. That would cause X bytes to be added for each ring signature.
-
Rucknium[m]
X is...something that someone could tell me
-
tevador
Nowadays, every tx input has 2-3 p2pool decoys, which stick out like a sore thumb.
-
UkoeHB
should be 640 bytes per input
-
rbrunner
Would it be possible to get a rough estimate how much those consolidations will add to the blockchain?
-
rbrunner
They seem to be much, much heaver at first sight.
-
Rucknium[m]
IMHO, it would make sense to implement a no-coinbase decoy selection algorithm at the same time as (hopefully) the new decoy selection algorithm from OSPEAD is implemented. For implementation simplicity and so not to cause so many "anonymity puddles" in the ring member distributions.
-
Rucknium[m]
rbrunner: Yes. Best way would be to just multiply the number of outputs in each p2pool coinbase tx (which I already have) by 640 bytes. That would be missing the weight of the output side, but that may be ok as a good approximation
-
UkoeHB
with seraphis binned ref sets you need to select from a contiguous integer range, you'd need to segregate coinbase from normal enotes
-
rbrunner
With this idea, you would spend coinbase enotes with rings that only consist of coinbase stuff?
-
rbrunner
with "a no-coinbase decoy selection algorithm"
-
UkoeHB
you could implement a coinbase consolidation tx type that only allows coinbase inputs without ring signatures and only range proofs on outputs
-
rbrunner
Yes, somehow you must be able to spend coinbase enotes :)
-
UkoeHB
coinbase ownership is largely public information, so consolidating without ring signatures wouldn't necessarily be terrible
-
ghostway[m]
<isthmus> "That implementation runs in ~O(N..." <- That's quite interesting. Can you elaborate if that's okay?
-
Rucknium[m]
With quick calculations, I am getting 373,068,160 bytes from just the inputs/ring sigs on consolidation txs. p2pool had 582,919 payout outputs during this period.
-
tevador
Coinbase consolidations without ring signatures sounds like a reasonable solution.
-
isthmus
Sure @ghostway[m] happy to elaborate, here's what I have in mind:
-
isthmus
I was thinking of it like this: Each output on the chain is a letter. Each ring signature is a word, with the letters [outputs] in chronological order (“ACBDE” –> “ABCDE”).
-
isthmus
We eat the cost once to sort the list of words (rings) lexicographically. Then you make two fast passes over it, one where you compare each ring that starts with the same letter, and then a second pass where you compare against every ring whose first letter is my second letter.
-
isthmus
In other words, Let l_{i,j} be the jth letter of the ith word. The "first letter" pass only compares words x and y if L_{x, 0} = L_{y, 0}. And the “second letter” pass only compares words x and y if L_{x, 0} = L_{y, 1}. Because we’re looking specifically for “differ by one” rings, you don’t need to make any further passes! I think this is kind of a pigeonhole principle thing.
-
isthmus
And the reason this doesn’t subtly become O(N^2) for checks in the passes is because of the initial lexicographical sort (arguably the real magic here). If you’ve got the dictionary open to words that start with F and you want to check against other words that start with F, you already know where they are! You only need to thumb pages until you hit a word starting with an E or a G.
-
rbrunner
According to this total blockchain growth in those 3 months was between 4 and 5 Gigabytes:
localmonero.co/blocks/stats/blockchain-growth
-
Rucknium[m]
Combining that with the 23 MB from the p2pool coinbase txs, that's 9.2% of all bytes added to the blockchain during this period.
-
rbrunner
Right. 10% only to "digest" those enotes. Hmmm.
-
Rucknium[m]
rbrunner: I have 4,302,893,381 bytes in my data
-
UkoeHB
sgp_: iirc you have been advocating about coinbase enote issues for years
-
ofrnxmr[m]
-
UkoeHB
sgp[
-
UkoeHB
sgp[m]: ^
-
ofrnxmr[m]
sgp:
-
gingeropolous
would this be wallet or consensus enforcement?
-
sech1
Coinbase consolidations without ring signatures will also help reduce fees for consolidations which is a problem for small miners
-
ghostway[m]
Cool trick isthmus,, had to guess that it's about ordering :)
-
tevador
that github comment neglects the fact that real p2pool spends are easily recognized in practice
-
ofrnxmr[m]
Agreed
-
rbrunner
But the problem may come back with the binned approach of Seraphis, if we are not careful, do I understand that correctly?
-
Rucknium[m]
gingeropolous: Changes to decoy selection could happen at the wallet level. Changes to allow coinbase outputs to avoid ring sigs would require consensus changes (hard fork) AFAIK.
-
isthmus
ty ghostway[m] ^_^
-
UkoeHB
rbrunner: no, if you want coinbase consolidations then coinbase enotes should be completely segregated from normal enotes (only spendable by consolidating)
-
tevador
lower p2pool consolidation fees would be a big plus for mining decentralization
-
Rucknium[m]
Right. It would also decrease the tx fee that p2pool miners pay for consolidations :)
-
ghostway[m]
isthmus: I thought you had to compare it as a set of the people in the ring though?
-
rbrunner
"with seraphis binned ref sets you need to select from a contiguous integer range": So you number the two types of enotes independently, somehow?
-
UkoeHB
yes, just dump them into two different lists
-
rbrunner
That could possibly have some repercussions in the codebase ... but yeah.
-
UkoeHB
yeah it causes some wallet-side headaches especially
-
UkoeHB
because there is a segregated balance
-
isthmus
Yep, @ghostway[m] when it "compares words x and y" in the analogy that corresponds to taking two different rings and comparing their ring members, to see if they overlap by all but one ring member (in which case it gets marked as a DBO ring pair, otherwise it moves on to the next two rings to compare)
-
isthmus
s/DBO/"differ-by-one"
-
ghostway[m]
That doesn't sound O(N) though...
-
rbrunner
So would probably good to know early if we really start to march into this direction with Monero transactions
-
UkoeHB
ghostway[m]: it should be O(kN)
-
rbrunner
We probably should, wishing for p2pool becoming the largest pool.
-
ghostway[m]
Sure, ok
-
rbrunner
Will probably be the horror to put this into `wallet2` still.
-
UkoeHB
rbrunner: probably better to wait until seraphis
-
ghostway[m]
So maybe wallet3 specification should be there (and also wait for seraphis)
-
UkoeHB
it's also easier with seraphis because membership proofs are separate from ownership proofs
-
ghostway[m]
Yea koe said it
-
rbrunner
Well, yes, dev time going into this with the "old" codebase would probably delay Seraphis
-
Rucknium[m]
rbrunner: I pretty much agree. If nothing is done, then either we believe that p2pool has little chance of getting larger or that we don't care much about effective ring size shrinking.
-
Rucknium[m]
Decoy selection for non-mining users can be changed before Seraphis. Doesn't require a hard fork.
-
Rucknium[m]
Is it hard to exclude coinbase outputs in the old codebase? There is no binning, so you can avoid those issues.
-
rbrunner
And what then for miners? I am a bit confused
-
isthmus
Haha yea +1 @UkoeHB O(kN) better notation than "2 ~O(N) passes". Though to be thorough it is true that *within a given letter* if there are F words starting with the letter 'f' we have to make (F^2-F)/2 checks. It's just that there's a huge number of letters (66921481 at time of writing) and only a handful of words starting with each letter, so those go by very quickly and zooming out it's effectively O(kN)
-
Rucknium[m]
They don't select coinbase outputs as decoys either. They use the coinbase outputs as the real spend :D
-
Rucknium[m]
So coinbase consolidations would be even more obvious than they are now.
-
rbrunner
Ah, ok.
-
moneromoooo
Hard now than coinbases have more than one output. Otherwise, not hard.
-
rbrunner
So that's no contribution against any size saving, just the "nonsense" decoys get avoided, right?
-
Rucknium[m]
Right. To address the privacy issue
-
rbrunner
Ok. I think now I get it.
-
rbrunner
But now the rings that do have coinbase enotes become somewhat nonsensical :)
-
moneromoooo
Actually, probably not too hard, since the node can tell wihch outputs are locked, so it probably has access to the amount, and can thus see which outs are coinbases.
-
sgp[m]
-
rbrunner
Well, and now, any volunteers to code that ... :)
-
UkoeHB
ok made an MRL issue for comments
monero-project/research-lab #108
-
sgp[m]
Initially the focus was that the behavior of users never conceivably spent coinbase outputs, but that's no longer the case. "Normal" people (not just pools) now spend them. It may be tempting to sever these coinbase outputs from the normal decoy set if they grow large, but the benefits are less clear to me
-
UkoeHB
I will let it marinate for 1-2 weeks then implement it in the seraphis lib if there seems to be consensus
-
sgp[m]
Thanks UkoeHB , will review
-
rbrunner
I guess it's less than trivial to put that into the library, for some newcomers?
-
rbrunner
*more
-
UkoeHB
adding coinbase tx type only took around 15hrs I think, this may take a bit more due to balance segregation
-
rbrunner
For you as the author.
-
isthmus
Can they use the current decoy selection algorithm code and reroll on coinbase enotes? Or does that introduce second order effects?
-
UkoeHB
yes a newcomer would take quite a while, since you need to learn how the library is put together
-
isthmus
Ah I think there is a second order effect if the ratio of normal enotes to coinbase enotes is not a constant. And I would NOT assume it to be constant.
-
isthmus
🤔
-
isthmus
(it'd be OK to re-roll the whole ring. I just mean you can't throw out and re-roll one output)
-
sgp[m]
isthmus: shouldn't be constant since p2pool is a minority of blocks
-
» isthmus nods
-
isthmus
Yea that's probably not the right approach then
-
» isthmus walks back the suggestion
-
UkoeHB
ok we are approaching the end of the hour, are there any final comments or questions to address?
-
UkoeHB
I'll call it here, thanks for attending everyone
-
Rucknium[m]
<UkoeHB> "ok made an MRL issue for..." <- Should this issue also be used for discussion of non-miner decoy selection? They are separate but closely related issues.
-
UkoeHB
Rucknium[m]: I think you should make a new issue for that
-
Rucknium[m]
Ok
-
sgp[m]
-
sgp[m]
one of the most interesting things that I like to think about is what to do with the coinbase ring :)
-
monerobull[m]1
Remove it
-
sgp[m]
imposing granular restrictions on spends of coinbase outputs whether the transaction has 3+ outputs or not could further improve things for p2pool miners with no harm to public pools, and minimal cost to the network
-
monerobull[m]1
Are there any downsides to excluding Coinbase from rings?
-
sgp[m]
downsides are 1) forcing a churn, and 2) implementation complexity
-
UkoeHB
sgp[m]: it would be better not to add protocol rules in response to particular use-cases like p2pool; the goal is generic solutions
-
UkoeHB
p2pool only highlights a weakness of the current approach
-
xmrack[m]
sgp: I like the idea of incentivizing p2pool. But wouldnt adding a protocol rule such as 3+ outputs be easily bypassed by pools. Couldnt they just use 4 outputs to a bunch of subaddresses?
-
sgp[m]
xmrack: yeah but it'll cost them more money so why would they do it
-
sgp[m]
the only reason I can think of is for the sake of being malicious. which of course they can do, no way around that. this is a (theoretical at least) option for separating p2pool activity from typical mining pools for a potential benefit
-
rbrunner
Maybe stupid idea, but who knows: Is it possible to construct a transaction that spends ALL 16 enotes in its ring AND that passes current consensus rules and checks?
-
rbrunner
If that's possible people could consolidate their coinbase enotes in batches of 16 ...
-
rbrunner
(current consensus so no need for a hardfork)
-
nikg83[m]
rbrunner: It’s possible to spend 2 inputs in same ring ?
-
rbrunner
I guess not, but I think asking the people in the know can't do harm, because if it's possible it would help I think
-
rbrunner
Optimistically seen many a good idea started with a pretty dumb question :)
-
Rucknium[m]
Issue for "Avoid selecting coinbase outputs as decoys":
monero-project/research-lab #109
-
UkoeHB
rbrunner: I guess, but what's the point?
-
rbrunner
Saving fees, and saving blockchain space, if people who mine a lot have an easier way to consolidate, in batches of 16 coinbase enotes
-
rbrunner
Or maybe not the full 16, but a ring with 12 normal enotes and 4 coinbase enotes where all 4 coinbase enotes get spent, with that single ring.
-
rbrunner
All within current consensus of course, because if we need a hardfork, we can do it "properly" of course
-
tevador
That would not actually save anything. Current consensus would still require 16 (useless) ring signatures.