mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-26 15:42:30 +01:00
* feat: add `Share PSBT` button with options * feat: add basic communication via the serial port * chore: code format * feat: send data to and from serial port * fix: port disconnect * feat: handle psbt extract * feat: show signed transaction details * fix: handle Connect/Disconnect failure state * feat:small UI improvements * feat: broadcast transaction (partial solution) * feat: integrate psbt response from HWW * feat: login and send commands to HWW * feat: ui improvements * feat: ui/ux improvements * feat: more small UI impreovemsnts * feat: simplify UI * feat: add `help` command * feat: add wipe command * feet: add `seed` command * feat: add `restore` command * feat: always show PSBT input text (for outside PSBTs) * feat: show spinner while signing tx * feat: hide panels after transaction is broadcast * feat: basic use of custom components * refactor: move components one folder up * refactor: extract wallet-config * refactor: extract `wallet-list` component * refactor: clean-up * chore: code format html component files * refactor: extract address-list component * refactor: extract `history` component * refactor: extract `utxo-list` component * feat: UI/UX improvements * feat: partial payment redesign * refactor: rename `fee` to `fee-rate` * refactor: rename component * refactor: extract `send-to` component * refactor: payment: first migration * fix: init `sendToList` * fix: change address * fix: change address and `Select All` coins * feat: show custom fees & two way binding for addresses * fix: scanAddressesWithAmount * fix: max amount * fix: coin selection mode * chore: code clean-up * feat: shuffle the UI * fix: change amount * feat: update tx size in real time * fix: coin selection * fix: show erro messages * fix: psbt generation * refactor: move serial port logic * refactor: payment component * refactor: code clean-up; use `slot` for `serial-signer` * feat: toggle serial port * feat: add Disconnect command * feat: prompt for `Connect` and `Login` before signing * refactor: send psbt to device * feat: extract signed transaction * refactor: code clean-up * feat: show auth green icon * chore: code clean-up * feat: show console * feat: allow `Connect` from dropdown menu * fix: stop if serial port cannot be open * feat: confirm outputs and fee * feat: add cancel command * fix: add `sats-denominated` for confirmations * feat: wait for HWW to authenticate, then open dialog * feat: share PSBT as text * refactor: extract `refreshAddresses` * feat: small UI improvements * feat: add default `Mainnet` network * feat: fix mempool endpint * feat: propagate config update only when explicitly updated * feat: add network for wallet accounts * fix: stop scanning when network changed * chore: code clean-up * chore: code clean-up * feat: show hardware device Xpub option * fix: handle failed to parse psbt * feat: add accounts using the HWW * fix: testnet is in the bip32 derivation path * feat: add spinner while wallet account is created * fix: check network and masterpub for duplicate accounts * feat: integrate transaction broadcast * feat: add password confirmation for `Wipe` and `Restore` * fix: fingerprint is not unique per account (it is the fingerprint of the master) * chore: code clean-up, remove `masterpub_fingerprint` * fix: account name diplay * chore: code format * fix: memppol links * fix: shortcut buttons * fix: note update * chore: code format * chore: clean-up rebase left overs * chore: clean-up * feat: less technical labels for addresses * feat: add serial port config params * fix: address type selection * chore: drop `mempool` table * fix: change & fee value * fix: handle no input signed scenario * fix: sat/btc unit * fix: small UI stuff * doc: update the readme * Update README.md
85 lines
4.5 KiB
Markdown
85 lines
4.5 KiB
Markdown
# Onchain Wallet (watch-only)
|
|
|
|
## Monitor an onchain wallet and generate addresses for onchain payments
|
|
|
|
Monitor an extended public key and generate deterministic fresh public keys with this simple watch only wallet. Invoice payments can also be generated, both through a publically shareable page and API.
|
|
|
|
You can now use this wallet on the LNBits [SatsPayServer](https://github.com/lnbits/lnbits/blob/master/lnbits/extensions/satspay/README.md) extension
|
|
|
|
### Wallet Account
|
|
- a user can add one or more `xPubs` or `descriptors`
|
|
- the `xPub` must be unique per user
|
|
- such and entry is called an `Wallet Account`
|
|
- the addresses in a `Wallet Account` are split into `Receive Addresses` and `Change Address`
|
|
- the user interacts directly only with the `Receive Addresses` (by sharing them)
|
|
- see [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account-discovery) for more details
|
|
- same `xPub` will always generate the same addresses (deterministic)
|
|
- when a `Wallet Account` is created, there are generated `20 Receive Addresses` and `5 Change Address`
|
|
- the limits can be change from the `Config` page (see `screenshot 1`)
|
|
- regular wallets only scan up to `20` empty receive addresses. If the user generates addresses beyond this limit a warning is shown (see `screenshot 4`)
|
|
- an account can be added `From Hardware Device`
|
|
|
|
### Scan Blockchain
|
|
- when the user clicks `Scan Blockchain`, the wallet will loop over the all addresses (for each account)
|
|
- if funds are found, then the list is extended
|
|
- will scan addresses for all wallet accounts
|
|
- the search is done on the client-side (using the `mempool.space` API). `mempool.space` has a limit on the number of req/sec, therefore it is expected for the scanning to start fast, but slow down as more HTTP requests have to be retried
|
|
- addresses can also be rescanned individually form the `Address Details` section (`Addresses` tab) of each address
|
|
|
|
### New Receive Address
|
|
- the `New Receive Address` button show the user the NEXT un-used address
|
|
- un-used means funds have not already been sent to that address AND the address has not already been shared
|
|
- internally there is a counter that keeps track of the last shared address
|
|
- it is possible to add a `Note` to each address in order to remember when/with whom it was shared
|
|
- mind the gap (`screenshot 4`)
|
|
|
|
### Addresses Tab
|
|
- the `Addresses` tab contains a list with the addresses for all the `Wallet Accounts`
|
|
- only one entry per address will be shown (even if there are multiple UTXOs at that address)
|
|
- several filter criteria can be applied
|
|
- unconfirmed funds are also taken into account
|
|
- `Address Details` can be viewed by clicking the `Expand` button
|
|
|
|
### History Tap
|
|
- shows the chronological order of transactions
|
|
- it shows unconfirmed transactions at the top
|
|
- it can be exported as CSV file
|
|
|
|
### Coins Tab
|
|
- shows the UTXOs for all wallets
|
|
- there can be multiple UTXOs for the same address
|
|
|
|
### New Payment
|
|
- create a new `Partially Signed Bitcoin Transaction`
|
|
- multiple `Send Addresses` can be added
|
|
- the `Max` button next to an address is for sending the remaining funds to this address (no change)
|
|
- the user can select the inputs (UTXOs) manually, or it can use of the basic selection algorithms
|
|
- amounts have to be provided for the `Send Addresses` beforehand (so the algorithm knows the amount to be selected)
|
|
- `Show Change` allows to select from which account the change address will be selected (defaults to the first one)
|
|
- `Show Custom Fee` allows to manually select the fee
|
|
- it defaults to the `Medium` value at the moment the `New Payment` button was clicked
|
|
- it can be refreshed
|
|
- warnings are shown if the fee is too Low or to High
|
|
|
|
### Check & Send
|
|
- creates the PSBT and sends it to the Hardware Wallet
|
|
- a confirmation will be shown for each Output and for the Fee
|
|
- after the user confirms the addresses and amounts, the transaction will be signed on the Hardware Device
|
|
|
|
### Share PSBT
|
|
- Show the PSBT without sending it to the Hardware Wallet
|
|
|
|
## Screensots
|
|
- screenshot 1:
|
|

|
|
|
|
- screenshot 2:
|
|

|
|
|
|
- screenshot 3:
|
|

|
|
|
|
- screenshot 4:
|
|

|
|
|
|
|