I’ve been working on adding MWC support to the Ledger Nano X hardware wallet for a few months. The code is pretty much done at this point, however I’m stuck on securely generating bulletproofs with the device.
Here’s the code:
Using the secp256k1_bulletproof_rangeproof_prove function directly on the device would require the hardware wallet to have significantly more RAM and takes a noticeable about of time to perform on such a low range device, so this approach isn’t possible for the Ledger Nano X.
I made some progress with generating bulletproofs on a Ledger Nano X. I’m now able to calculate taux on the hardware wallet and use that and a private nonce to finish creating the bulletproof on a computer.
Does anyone who understands the bulletproof algorithm know if there’s any risk that comes with exposing the private nonce used in the secp256k1_bulletproof_rangeproof_prove function?
Btw, Grin has an ongoing implementation on this, but it’s not clear when it can be completed. But I think your implementation could be a better choice if you can complete it firstly.
Refs:
We can now securely generate a bulletproof’s tau_x, t_one, and t_two on a Ledger Nano X and use those values to finish creating the bulletproof on a computer.