From 5bc2907f80ca355d61745ad1e6d7004cc4dffdf7 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Tue, 5 Jul 2022 16:26:10 +0300 Subject: [PATCH] doc: update readme --- lnbits/extensions/watchonly/README.md | 85 +++++++++++++++++++++++---- 1 file changed, 74 insertions(+), 11 deletions(-) diff --git a/lnbits/extensions/watchonly/README.md b/lnbits/extensions/watchonly/README.md index 573952e4d..ccc133b31 100644 --- a/lnbits/extensions/watchonly/README.md +++ b/lnbits/extensions/watchonly/README.md @@ -4,16 +4,79 @@ 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. -1. Start by clicking "NEW WALLET"\ - ![new wallet](https://i.imgur.com/vgbAB7c.png) -2. Fill the requested fields: - - give the wallet a name - - paste an Extended Public Key (xpub, ypub, zpub) - - click "CREATE WATCH-ONLY WALLET"\ - ![fill wallet form](https://i.imgur.com/UVoG7LD.png) -3. You can then access your onchain addresses\ - ![get address](https://i.imgur.com/zkxTQ6l.png) -4. You can then generate bitcoin onchain adresses from LNbits\ - ![onchain address](https://i.imgur.com/4KVSSJn.png) +### Wallet Account + - a user can add one or more `xPubs` or `descriptors` + - the `xPub` fingerprint 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` + - this 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`) + +### Scan Blockchain + - when the user clicks `Scan Blockchain`, the app will go over the previous address list (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 re-tried + - addresses can also be rescanned individually form the 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 + +### 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 + +### 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 + +### Make 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 Advanced` allows to (see `screenshot 2`): + - select from which account the change address will be selected (defaults to the first one) + - select the `Fee Rate` + - it defaults to the `Medium` value at the moment the `Make Payment` button was clicked + - it can be refreshed + - warnings are shown if the fee is too Low or to High + +### Create PSBT + - based on the Inputs & Outputs selected by the user a PSBT will be generated + - this wallet is watch-only, therefore does not support signing + - it is not mandatory for the `Selected Amount` to be grater than `Payed Amount`. The generated PSBT can be combined with other PSBTs that add more inputs. + - the generated PSBT can be imported for signing into different wallets like Electrum + - import the PSBT into Electrum and check the In/Outs/Fee (see `screenshot 3`) + +## Screensots +- screenshot 1: +![image](https://user-images.githubusercontent.com/2951406/177181611-eeeac70c-c245-4b45-b80b-8bbb511f6d1d.png) + +- screenshot 2: +![image](https://user-images.githubusercontent.com/2951406/177331468-f9b43626-548a-4608-b0d0-44007f402404.png) + +- screenshot 3: +![image](https://user-images.githubusercontent.com/2951406/177333755-4a9118fb-3eaf-43d6-bc7e-c3d8c80bc61e.png) + +- screenshot 4: +![image](https://user-images.githubusercontent.com/2951406/177337474-bfcf7a7c-501a-4ebb-916e-ca391e63f6a7.png) + + You can now use this wallet on the LNBits [SatsPayServer](https://github.com/lnbits/lnbits/blob/master/lnbits/extensions/satspay/README.md) extension