Update for weeks 11/05 to 25/05.
- Researched initialization and sender/receiver wallet functions further + implementation.
- Made an interface that encapsulates the logic for dealing with the device and keys, similar to how Beam uses a KeyKeeper interface.
- I researched rangeproofs somewhat these weeks, but it isn’t yet clear to me how I should approach this further. I’ve been reading through GitHub - AdamISZ/from0k2bp: From Zero (Knowledge) to Bulletproofs - writeup and through how BP’s are used in grin. Here (grin/proof.rs at 1b8acee72e7a4236cdf8561a7af5f894bfe11985 · mimblewimble/grin · GitHub) it seems like BP’s should be created at the device. Creating BP’s is however computationally expensive for the HW. Maybe the HW should do only the part before the call to secp.bullet_proof()?
*One thing I’m thinking of as I write this, in grin-wallet, an input is a Vec<(Identifier, Option, u64). The Option<64> is an mmr_index. See: grin-wallet/types.rs at bdc5bd748a4e399e6febc5e3c4974e569ee39638 · mimblewimble/grin-wallet · GitHub. I should look into how this MMR index is generated. - I did some work again on the Grin++ side. I found a C++ library to work with Ledger, which I can communicate with the device. The plan here is to implement the same ideas as I already did in the grin-wallet. Furthermore, it is informing to see two implementations of the protocol; it makes somehow the protocol more clear to me at certains points.
- I made a document for grin-wallet and Grin++, for listing parts in the source code that should be delegated to the HW wallet. (The documents cointain permalinks and some comments about the code structure.) However, these are not ready to share yet.