Well, I guess I have to buy a Trezor now! Cool.
Monero support for Trezor
Who wants Trezor to support Monero? Sadly it doesn't currently. I think it would be awesome and would like to work on this.
I'd like to raise at least 500XMR so I could make it happen. Want to beef up your Monero wallet security? Show your support by donating and help make Monero support for Trezor a reality!
- Address for donations:
49hGzzV9XtNZKHAe1kNuXkRfhws12ZHipavhffm2gXDXR3aGxiLzt9GRBFPqL6Vgp6hEnpsiT285v5v4XmrUC93PSTaML5r
- View key:
2a2e69948dfcc5a3198ee0288494a729c65069611cf0146f8f31013dd2a0ac0c
(if anyone wants to keep an eye on the account) - Escrowed by our very own fluffypony
What I plan on doing
- Modify the Trezor firmware to support generating private keys for Monero & support signing transactions using spend key.
- Add Trezor support to simple_wallet command (or create new trezor_wallet utility)
How will the funds be used
- The raised money will go towards buying a Trezor I could use for development purposes and compensating for some of the time I put into this.
- If we don't manage to raise enough to even buy a Trezor for me, I will not be undertaking this project. All moneros received will be sent to [email protected] in this case.
- I will not be touching the money raised before I have managed to add Monero support to Trezor. Should I fail to deliver, the funds will be sent to [email protected].
Edits
- 13th April: Changed donation destination to account escrowed by fluffypony.
- 14th April: We're funded! Check out the progress of this project here.
I am sure you are welcome to donate more XMR for the project, it might help roosmaa to be able to spend more time developing.
Sounds like a great project :) 50 XMR sent, id 6FB8AD03EFDDF9FFC20E17ADB4DB8ED1C85696FA2A6C68662CFF75C4C733C1C0
That's great news! I've started a separate progress report thread. :)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Looks like we're fully funded (over funded, in fact!) -
[wallet 49hGzz]: balance
balance: 782.472749733811, unlocked balance: 782.472749733811
Take it away, roosmaa :)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBAgAGBQJVLMrAAAoJEFVDLfMczU/N/ggIAII5TfHOv3Do3yLC4bFXV0T7
PFnBFRmWlAsw42BJGFveGiI9Zp1L3lmN+ZdqYKGlrRMu+7Kv/hsPo+N7NFzocfih
K6BtwTLFGVCKLXCdNyi0fJ4QwjQlMo93Vc/GqAwHFaLIenjQ7QDyMfQUeuzyw3bw
Aks+5UBMyBAALhME7giKpm8P3KOKIevfwvhaaVMObsYZmVjFM5brX/I2gAptxC7K
UjtDuhZgisjmSWK4eyJ6rSFaogaKJNs6RAWDIvGT+JAaWiF60GcGd3QQat/sdWZQ
ThS50FBxaIRi83lWPoz/MhknOIUreyCL56LZ23Xnz1tAUArDBi3MM8kl27GyIQ4=
=EKDN
-----END PGP SIGNATURE-----
I know we are over the minimum, but I still want to donate to this project. Just sent 250 xmr eb44a68e15a3f33eb48815ae77c1b524d9cbe34d5299ffa9dcf0be77d06e937e
Fluffypony will be escrowing the funds for this project from this point forward.
So far 186.97524732 XMR have been raised. I have transferred them over to the new account (187.167749733811 XMR in b9e709ba550a142ee789586a7fd85bec109c0f99a60da1c6e4508b42af1d82f8 & 0.055 XMR in 831633a754fd0e4828820341ea4aacb4ad67ca95ffec0f56492210a794b64d3b). 0.02XMR remains on the account due to some discrepancy between actual fees and what MyMonero thinks the fees will be. Fluffpony can confirm (using the original viewkey) that all of the funds were transferred from the original account.
Donations thus far:
- unknown - 0.267502413811XMR - 3b6c9edfc99d64cd3a530092bc7614121632d949909b537357f547d31d7ca6ad
- antw081 - 100XMR in c44babb72e22dd741fe540ff09650dea253f26b974cf8cafb5b62c6e81dacc67
- Kazuki - 10XMR in 21b14c9d26253270bd6bf921a9671d9cc3116a10f3742c38a98bdf544aae58fd
- saddambitcoin - 25XMR in 0fc8358c1887d072781e16e448f488b4c8f0310cbc2cee8a5fbc98cb5efdc8a4
- fluffypony - 50XMR in 7be96e398536a1112b9453ffed8e5deba46ec383917a5de860a182e2693d5813
- test tx from me - 1.97524732XMR in 249aeb0c1f3a84b79294ecd03f7bd947492ba4eda7d68b1dc681dbde73cf49dc
I agree wrt to the communication protocol; it's using protobuffers and should be fairly easy to reuse/adapt.
Not sure how much work simplewallet integration would be. If I am not mistaken, there is no support for viewkeys yet. Maybe a plugin for the upcoming graphical wallet would be a better choice? (It would certainly be much cooler!)
If you did some embedded development before, great! (It's often kind of a rude awakening for "normal" devs.) Trezor uses the normal gcc arm toolchain, so there are no big surprises there.
Yup, you are right - Monero uses the more widely used security curve Ed25519 (SSH, etc) so finding a library that works in an embedded setting should be indefinitely easier than for the Bitcoins curve (which was pretty much unused before Bitcoin started using it).
From my brief review of the Trezor source it should be feasible to implement Monero transaction signing without changing the communication protocol that it uses to communicate with the USB host. (Though some things will be slightly misnamed.) Trezor will contain the viewkey and spendkey, viewkey will be made available to the USB host (like the xpub key for Bitcoin). Spend key will remain private, as it should. The host will then use that viewkey to scan through the blockchain (like the current simple_wallet does). For sending payments the transaction is prepared and Trezor signs it.
Of course there will probably be bumps in the road ahead (due to wrong assumptions), but so far it seems doable. I haven't done embedded programming in ages, but considering trezor-mcu is mostly fairly high-level C we should be good.
AFAIK Monero uses ECDSA with a different curve, which should be fairly easy to modify.
The rest is the hard part: the crypto libraries that deal with transactions. Worse, you have to do it at two ends (the pc end and the embedded code).
As binaryFate, I am quite familiar with the Trezor code and architecture. (Actually, we took it apart together :)). This will be a considerable undertaking. Not impossible, but you need knowledge from a bunch of different fields which makes it hard.
If you don't have solid knowledge in C, python, embedded programming, general crypto and monero specifics, you won't go far. If you do, great - good luck and god speed! :)