Happy Moneroween to everyone! Dr. Sarang Noether here, delivering my monthly research report for October. As always, my thanks to the Monero community for your ongoing support of my work and that of the Monero Research Lab.
Our latest network upgrade is up and running, and that means smaller, faster, cheaper, and more secure transactions thanks to Bulletproofs and a whole lot of other updates and optimizations. We've also posted the last Bulletproof audit report from QuarksLab, which is a great read about their fine work reviewing several areas of the codebase. The implementation of Bulletproofs was a long and complex process, but I think we all agree that it provides great value to the project and our community as we continue to grow.
This month's research began with an updated look at ring signature decoy selection. As you may know, your transaction includes decoys to hide the true spend, and the algorithm used for selecting these decoys has been iterated over time as we learn more about making transactions indistinguishable from each other. I and other Lab researchers generalized several pieces of earlier research on this topic into a technical note and examined the effects on the Monero blockchain.
Using a custom analysis tool, we quantified the practical effects of these on-chain analysis methods, confirming that modern transactions are not susceptible to most forms of known on-chain analysis. The analysis tool flags old transaction outputs that can be proven to be spent, and should not be chosen as decoys. Fortunately, these old outputs are exceptionally unlikely to be chosen anyway due to the way we select decoys, so even use of the flagging tool is realistically not needed. Coinciding with this, we've upgraded our decoy selection algorithm to better mitigate against certain types of timing analysis. If you keep your wallet software updated, you'll automatically get this benefit. We'll continue to optimize decoy selection as we iterate on the algorithm.
I revisited an older ring confidential transaction scheme proposed last year by outside researchers, which we lovingly dubbed StringCT (among other names; we're terrible at naming things). The scheme would permit larger ring sizes with better size scaling than we use currently. Unfortunately, the verification of the resulting transaction proofs and signatures was much slower than we had hoped, and we put the work aside. However, thanks to some underlying algorithmic plumbing that we built for Bulletproofs, I took the StringCT algorithms, ported them to Python for easier prototyping, and added the new plumbing along with a test suite. This includes multiexponentiation and even batch verification using some clever algebra. Initial testing suggests that we may be able to get the verification times down to a reasonable level with the ring sizes we might choose in the future. This work is ongoing but promising. Note that we have no plans to migrate to this scheme, as this analysis is still in its early stages.
Now on to Sarang's Reading Corner, a collection of just some of the interesting papers that I've come across recently. The appearance of a paper in this list does not imply that I endorse it, or even agree with its contents or conclusions.
- Bolt: Anonymous Payment Channels for Decentralized Currencies
- QuisQuis: A New Design for Anonymous Cryptocurrencies
- Fast Secure Multiparty ECDSA with Practical Distributed Key Generation and Applications to Cryptocurrency Custody
- Zexe: Enabling Decentralized Private Computation
- ZLiTE: Lightweight Clients for Shielded Zcash Transactions using Trusted Execution
- Efficient Inversion In (Pseudo-)Mersenne Prime Order Fields
- Chameleon-Hashes with Dual Long-Term Trapdoors and Their Applications