[Feat] Remote Wallet Support
Introduction
This PR introduces support for the Remote Wallet functionality as specified in this spec.
Description
This PR introduces its changes in the remote-wallet directory. There are two architectural components this PR introduces:
- WalletRemoteClient - in
remote-wallet/client - WalletRemoteServer - in
remote-wallet/server
The common package in remote-wallet/common serves as a single source of truth for the communication between the client and server by defining message types and other common things.
The WalletRemoteServer is supposed to be run on the machine where the user's wallet is present. The WalletRemoteClient is a package that is used by the Gocoin node (see here).
This PR adds a new endpoint to the WebUI server for handling the sign_transaction request. The UI is also modified to accommodate the Sign Transaction button.
I have added support for realtime connection status update in the UI, and refactored some code, and enhanced error handling.
Screen Recording:
https://github.com/user-attachments/assets/376e3e05-1393-4a00-afa4-4515365d781e
In the frontend side, the user experience can be enhanced further by adding support for notifications, loading states, etc.
Todos:
- Improve the transaction signing confirmation user experience in the client side
- Show details of transaction when asking for confirmation