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
It looks like making it possible for Seraphis and Jamtis wallet apps to support hardware wallets will be quite a challenge, and so far it's quite unclear how the way there will look in detail. As a very first step, this issue tries to collect info about the subject and explain some related problems.
Currently there are two hardware wallets that support Monero: Ledger and Trezor.
Only select Monero wallet apps support managing XMR using one or both of those hardware wallets. In turn, important software from the manufacturers themselves, especially Ledger Live, does not support XMR.
This state of affairs is not very satisfying, but has solid reasons and is not easy to change. On the one hand, those devices have quite modest storage for their firmware, only quite limited RAM and not that much CPU "power" for executing cryptographical computations. On the other hand, the functionality to support XMR, because of its complexity, needs much code and is quite demanding regarding computing power.
Both manufacturers also found it difficult to constantly adjust their firmware for the ever-changing Monero cryptocurrency with its frequent hardforks, and doing so in time. With the last hardfork at least one hardware wallet had "downtime".
Monero wallet apps do not implement hardware wallet support themselves, except in the form of some functions in the UI that e.g. allow the user to wish for hardware wallet use or not. They use the hardware wallet support that the core Monero wallet class wallet2 offers.
That class deals with hardware wallets using an interface that is described in the file device.hpp. Large parts of the hardware wallet "drivers" for Ledger and Trezor that implement this interface sit in the Monero code repository itself, which complicates matters further, as the companies cannot update all on their own, but have to make PRs to the Monero codebase. To use this code for software like the already mentioned Ledger Live as a module must be pretty unfeasible.
The interface may be not very "abstract" but heavily geared towards wallet2 and its requirements and methods of operations, up to the very order in which wallet2 does things right now.
Now, as if everything is not yet hard and complicated enough, there is the question how these hardware wallet will come to support Seraphis and Jamtis.
When talk briefly came to this subject, @UkoeHB recently explained in a meeting that supporting Seraphis itself in the form of the ability to sign transactions by the hardware wallets is not very difficult. If I understood correctly it's easier than signing CLSAG transaction, the current form.
One large difficulty however seems to be the fact that the hardware wallets can't drop support for CLSAG transactions, otherwise scanning of the full blockchain, required for all "old" wallets, is no longer possible. Seraphis and Jamtis will thus "come on top", straining resources further.
It looks like fully replacing walle2 and then dropping it is currently the favored implementation approach for the Seraphis wallet (see also issue #25). If it goes, the code dealing with the hardware wallets that it contains will need to be replaced as well. This in turn leads to another question, whether we keep that "device.hpp" hardware wallet driver interface, or also replace it with something better.
The text was updated successfully, but these errors were encountered:
It looks like making it possible for Seraphis and Jamtis wallet apps to support hardware wallets will be quite a challenge, and so far it's quite unclear how the way there will look in detail. As a very first step, this issue tries to collect info about the subject and explain some related problems.
Currently there are two hardware wallets that support Monero: Ledger and Trezor.
Only select Monero wallet apps support managing XMR using one or both of those hardware wallets. In turn, important software from the manufacturers themselves, especially Ledger Live, does not support XMR.
This state of affairs is not very satisfying, but has solid reasons and is not easy to change. On the one hand, those devices have quite modest storage for their firmware, only quite limited RAM and not that much CPU "power" for executing cryptographical computations. On the other hand, the functionality to support XMR, because of its complexity, needs much code and is quite demanding regarding computing power.
Both manufacturers also found it difficult to constantly adjust their firmware for the ever-changing Monero cryptocurrency with its frequent hardforks, and doing so in time. With the last hardfork at least one hardware wallet had "downtime".
Monero wallet apps do not implement hardware wallet support themselves, except in the form of some functions in the UI that e.g. allow the user to wish for hardware wallet use or not. They use the hardware wallet support that the core Monero wallet class
wallet2
offers.That class deals with hardware wallets using an interface that is described in the file device.hpp. Large parts of the hardware wallet "drivers" for Ledger and Trezor that implement this interface sit in the Monero code repository itself, which complicates matters further, as the companies cannot update all on their own, but have to make PRs to the Monero codebase. To use this code for software like the already mentioned Ledger Live as a module must be pretty unfeasible.
The interface may be not very "abstract" but heavily geared towards
wallet2
and its requirements and methods of operations, up to the very order in whichwallet2
does things right now.Now, as if everything is not yet hard and complicated enough, there is the question how these hardware wallet will come to support Seraphis and Jamtis.
When talk briefly came to this subject, @UkoeHB recently explained in a meeting that supporting Seraphis itself in the form of the ability to sign transactions by the hardware wallets is not very difficult. If I understood correctly it's easier than signing CLSAG transaction, the current form.
One large difficulty however seems to be the fact that the hardware wallets can't drop support for CLSAG transactions, otherwise scanning of the full blockchain, required for all "old" wallets, is no longer possible. Seraphis and Jamtis will thus "come on top", straining resources further.
It looks like fully replacing
walle2
and then dropping it is currently the favored implementation approach for the Seraphis wallet (see also issue #25). If it goes, the code dealing with the hardware wallets that it contains will need to be replaced as well. This in turn leads to another question, whether we keep that "device.hpp" hardware wallet driver interface, or also replace it with something better.The text was updated successfully, but these errors were encountered: