GUI tool for running Masternode with Trezor

Honestly I'm a bit surprised it doesn't work, because similar issues were reported for Trezor and just when I started looking into it, Trezor started working fine for those who reported it to me. I assumed then that some Platform update fixed the issue for Trezor and Ledger.

Well, if the problem is still relevant for Ledger, I am ready to try to work out some solution. However, for this I need to have some UTXO from withdrawal from the Platform in my wallet. I don't have an Evonode, so if someone could withdraw a small amount (like 0.01 Dash) directing it to my address (Xey2vihQkWJWPBQr6pRLMX2PRZM2YMyc86), I would have material for testing. Thanks in advance. I will of course send the same amount back.
I will do that with next epoch (20th of January, 23:00). Could take a day to get processed.
 
Last edited:
@Bertrand256 : should be in your Ledger wallet right now, no need to return it. I will test it in my Ledger wallet too (i send some to myself as well)

Update :

DMT v0.9.39
Ledger Nano X firmware 2.0.2 (avoiding updating to v2.2.3 for now)

Tried to move the Platform withdrawal from Ledger hardware wallet address to Dash Core wallet address :

Knipsel.JPG
 
Last edited by a moderator:
@Bertrand256 : should be in your Ledger wallet right now, no need to return it. I will test it in my Ledger wallet too (i send some to myself as well)
I confirm that I received the transaction (thanks) and that I was able to reproduce the issue.
For now, I can only say is that the problem stems from the Ledger Python client library. Whether a workaround will be feasible or not, I will say after an analysis (which may take a few days).
 
@Bertrand256 : should be in your Ledger wallet right now, no need to return it. I will test it in my Ledger wallet too (i send some to myself as well)

I managed to solve the problem. The reason was that the official Ledger Python library assumed that the transaction has a structure consistent with a Bitcoin transaction. For Dash, this worked until recently, when withdrawal transactions from the Platform (type 9) were introduced. As a solution, I applied a live-patch of the original library while running within DMT.

Let me know if you want to test the patch before I prepare the official release - if so, I will prepare a beta version and share it somewhere.
 
I managed to solve the problem. The reason was that the official Ledger Python library assumed that the transaction has a structure consistent with a Bitcoin transaction. For Dash, this worked until recently, when withdrawal transactions from the Platform (type 9) were introduced. As a solution, I applied a live-patch of the original library while running within DMT.

Let me know if you want to test the patch before I prepare the official release - if so, I will prepare a beta version and share it somewhere.
That is good news !!
I trust that this will fix the problem, so just go ahead with the official release.
Thank you.
 
Ok. It will take a few more days to update other libraries like Trezor, which, btw, likes to break backwards compatibility :).
We currently do not have an issue with Trezor in combination with DMT.
We just have this issue with Ledger in combination with DMT.

Not sure we should mess with Trezor library, when its working fine with DMT.
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Knipsel.JPG


Knipsel.JPG

------------------------------------------------------------------------------------------------------------------------------------------------------------------
Should we not just fix the Ledger Python library and leave the rest as is ? Or are you perhaps talking about needing to recompile other libraries as well (Trezor for example) for the new DMT version, but not really needing to fix them ? I am a little bit confused about you mentioning Trezor.
 
Last edited:
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Should we not just fix the Ledger Python library and leave the rest as is ? Or are you perhaps talking about needing to recompile other libraries as well (Trezor for example) for the new DMT version, but not really needing to fix them ? I am a little bit confused about you mentioning Trezor.
I try to periodically update DMT to the latest versions of the Ledger, Trezor and Keepkey client libraries to reduce the likelihood of problems when new firmware versions are released and to eliminate security issues found in old versions. The last such update was about a year ago, so it's high time to do it again.
 
I try to periodically update DMT to the latest versions of the Ledger, Trezor and Keepkey client libraries to reduce the likelihood of problems when new firmware versions are released and to eliminate security issues found in old versions. The last such update was about a year ago, so it's high time to do it again.
Could you please share your patch, I think it would be very useful for Dash Electrum project

Is ledger and trezor using the same library?
 
@Bertrand256 : should be in your Ledger wallet right now, no need to return it. I will test it in my Ledger wallet too (i send some to myself as well)
Can you give me your Dash address where I should send back the funds you sent me for testing. They may not be worth much, but who knows what the future holds. Anyway, the transaction was very helpful in my current work, so thanks!
 
@Bertrand256 : should be in your Ledger wallet right now, no need to return it. I will test it in my Ledger wallet too (i send some to myself as well)

Update :

DMT v0.9.39
Ledger Nano X firmware 2.0.2 (avoiding updating to v2.2.3 for now)

Tried to move the Platform withdrawal from Ledger hardware wallet address to Dash Core wallet address :

I have just released a pre-release version of the Dash Masternode Tool, which includes a fix for the issue related to transferring withdrawals from Dash Platform using Ledger. This is not a release version because of the number of changes it includes. If you encounter any problems, please let me know.

Binaries: https://github.com/Bertrand256/dash-masternode-tool/releases/edit/v0.9.40-beta1
Changes:
  • Workaround for Ledger error when trying to send a Dash Platform withdrawal transaction
  • Wallet: fixed bug related to showing an incorrect account balance
  • Wallet: significantly improved wallet content refresh performance and reduced data transfer size, especially when using "public RPC nodes"
  • Updated dependent libraries to the latest supported versions
  • Switched to Python 3.12
 
I have just released a pre-release version of the Dash Masternode Tool, which includes a fix for the issue related to transferring withdrawals from Dash Platform using Ledger. This is not a release version because of the number of changes it includes. If you encounter any problems, please let me know.

Binaries: https://github.com/Bertrand256/dash-masternode-tool/releases/edit/v0.9.40-beta1
Changes:
  • Workaround for Ledger error when trying to send a Dash Platform withdrawal transaction
  • Wallet: fixed bug related to showing an incorrect account balance
  • Wallet: significantly improved wallet content refresh performance and reduced data transfer size, especially when using "public RPC nodes"
  • Updated dependent libraries to the latest supported versions
  • Switched to Python 3.12
Tested this pre-release version on both my Ledger hardware wallet and my Trezor hardware wallet.
No problem sending / spending my Platform withdrawal received directly in my hardware wallet address anymore through DMT.

It still works on Trezor and it now works again on Ledger as well.
Nice job.
 
Last edited:
@Bertrand256 I tried to do update payout address through DMT v0.9.40-beta1, but it could not sign the special tx :

Knipsel.JPG


I don't think i had a problem updating payout address with previous DMT releases.
Log file :

2025-02-07 03:05:25 INFO|dmt.dashd_intf|MainThread|dashd_intf.py|checkfeaturesupport|(+) Extended feature "protx_update_registrar" is available for RPC node https://alice.dash-masternode-tool.org:443
2025-02-07 03:05:25 INFO|dmt.dashd_intf|MainThread|dashd_intf.py|catch_timeout_wrapper|Arguments of the "protx" call have been encrypted with the RSA public key of the RPC node.
2025-02-07 03:05:25 ERROR|dmt.dashd_intf|MainThread|dashd_intf.py|catch_timeout_wrapper|Error while calling of "<function DashdInterface.rpc_call.<locals>.call_command at 0x000001DBC20EFF60> (2)". Details: -32603: failed to sign special tx
2025-02-07 03:05:25 ERROR|root|MainThread|upd_mn_registrar_dlg.py|send_upd_tx|Exception occurred while sending protx update_registrar.
2025-02-07 03:05:25 ERROR|root|MainThread|wnd_utils.py|error_msg|-32603: failed to sign special tx
Traceback (most recent call last):
File "upd_mn_registrar_dlg.py", line 642, in send_upd_tx
File "dashd_intf.py", line 1705, in rpc_call
File "dashd_intf.py", line 421, in catch_timeout_wrapper
File "dashd_intf.py", line 1699, in call_command
File "bitcoinrpc\authproxy.py", line 141, in __call__
bitcoinrpc.authproxy.JSONRPCException: -32603: failed to sign special tx
2025-02-07 03:09:48 INFO|dmt.dashd_intf|MainThread|dashd_intf.py|catch_timeout_wrapper|Arguments of the "protx" call have been encrypted with the RSA public key of the RPC node.
2025-02-07 03:09:48 ERROR|dmt.dashd_intf|MainThread|dashd_intf.py|catch_timeout_wrapper|Error while calling of "<function DashdInterface.rpc_call.<locals>.call_command at 0x000001DBC20EF920> (2)". Details: -32603: failed to sign special tx
2025-02-07 03:09:48 ERROR|root|MainThread|upd_mn_registrar_dlg.py|send_upd_tx|Exception occurred while sending protx update_registrar.
2025-02-07 03:09:48 ERROR|root|MainThread|wnd_utils.py|error_msg|-32603: failed to sign special tx
Traceback (most recent call last):
File "upd_mn_registrar_dlg.py", line 642, in send_upd_tx
File "dashd_intf.py", line 1705, in rpc_call
File "dashd_intf.py", line 421, in catch_timeout_wrapper
File "dashd_intf.py", line 1699, in call_command
File "bitcoinrpc\authproxy.py", line 141, in __call__
bitcoinrpc.authproxy.JSONRPCException: -32603: failed to sign special tx
 
Last edited:
@Bertrand256 I tried to do update payout address through DMT v0.9.40-beta1, but it could not sign the special tx :
....
bitcoinrpc.authproxy.JSONRPCException: -32603: failed to sign special tx
Thanks for the info. I am aware of this issue, although it's related to the RPC node, not DMT itself.
FYI, to be able to execute 'protx update_registrar' calls on behalf of the user, I had to prepare a dedicated Dashd version with some necessary changes, without which the "Update Voting Key/Payout Address/Operator Key" features in DMT wouldn't be possible. Overall, it seems that the current changes do not work properly, so I will have to look into it again.
 
Back
Top