You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe
Hardware wallets are portable, hardened computing devices which allow storing a wallet's private keys in a secure way, as well as performing cryptographic operations on those keys. Examples of hardware wallets are Ledger Nano S, Ledger Blue and Trezor. For added security, Unit-e should allow storing private keys in a hardware wallet. As a first step, we want to add support for Ledger Nano S.
Describe the solution you'd like
A Ledger-enabled application consists of two communicating processes. One of them is an embedded application, deployed on the hardware wallet. The other is deployed on the user's computer, communicates with the Bitcoin network, and delegates the cryptography to the first process. In our case, we'll need to implement the embedded application, and extend the united daemon to communicate with it.
It makes sense to build the embedded application based on the existing Ledger Bitcoin application. The operations that we need to implement in the daemon are:
Generating new Unit-e addresses and associated private keys
New private keys can be derived from the device's master private key by BIP0032 derivation. We can record the fact that the key is stored in the hardware wallet, together with its chain path, in our wallet database.
The changes in the desktop GUI should be minimal: allow the user to indicate that a new public key should be generated in hardware, e.g. by ticking a checkbox. This will require adding a new boolean parameter to the getnewaddress RPC call "is_hardware" (default: false).
Signing Unit-e transaction using a given private key (or rather, the private key chain path)
If we reuse the implementation from the Ledger BTC app, which follows the API in the Ledger Technical Specification, we can use the "transaction hash start"/"hash sign" commands to parse and sign a transaction, as implemented for example in the Particl Bitcoin wallet.
We might have to adapt the transaction parsing logic from the Ledger BTC app to the new types of Unit-e transactions, though.
Is your feature request related to a problem? Please describe
Hardware wallets are portable, hardened computing devices which allow storing a wallet's private keys in a secure way, as well as performing cryptographic operations on those keys. Examples of hardware wallets are Ledger Nano S, Ledger Blue and Trezor. For added security, Unit-e should allow storing private keys in a hardware wallet. As a first step, we want to add support for Ledger Nano S.
Describe the solution you'd like
A Ledger-enabled application consists of two communicating processes. One of them is an embedded application, deployed on the hardware wallet. The other is deployed on the user's computer, communicates with the Bitcoin network, and delegates the cryptography to the first process. In our case, we'll need to implement the embedded application, and extend the
united
daemon to communicate with it.It makes sense to build the embedded application based on the existing Ledger Bitcoin application. The operations that we need to implement in the daemon are:
New private keys can be derived from the device's master private key by BIP0032 derivation. We can record the fact that the key is stored in the hardware wallet, together with its chain path, in our wallet database.
The changes in the desktop GUI should be minimal: allow the user to indicate that a new public key should be generated in hardware, e.g. by ticking a checkbox. This will require adding a new boolean parameter to the
getnewaddress
RPC call "is_hardware" (default: false).If we reuse the implementation from the Ledger BTC app, which follows the API in the Ledger Technical Specification, we can use the "transaction hash start"/"hash sign" commands to parse and sign a transaction, as implemented for example in the Particl Bitcoin wallet.
We might have to adapt the transaction parsing logic from the Ledger BTC app to the new types of Unit-e transactions, though.
Additional context
The Ledger embedded programming documentation is stored at https://ledger.readthedocs.io/ . The sample embedded applications can be found at https://github.com/LedgerHQ/blue-sample-apps .
The text was updated successfully, but these errors were encountered: