urbit/WALLET.scratch.md

104 lines
3.4 KiB
Markdown
Raw Normal View History

2020-10-30 14:45:38 +03:00
# btc-wallet-* Scratch Code
## xpub
2020-11-03 14:50:10 +03:00
Mnemonic
```
absurd sick rose mask magnet know slide spell rent casual someone grant giant inhale toward
```
2020-10-30 14:45:38 +03:00
```
2020-10-31 12:41:00 +03:00
=xpub1 'zpub6r8dKyWJ31XF6n69KKeEwLjVC5ruqAbiJ4QCqLsrV36Mvx9WEjUaiPNPGFLHNCCqgCdy6iZC8ZgHsm6a1AUTVBMVbKGemNcWFcwBGSjJKbD'
=xpub2 'xpub6D7yaZieZEeG617UcKXDhbsDeso6bmxSAiGWkvkASoiwcjaRtrH5HeNRnDT25s7zmxYzj6MtFe32dVqcf9YcBKKgn9THHjwn2uSjkvobK4e'
2020-10-30 14:45:38 +03:00
=bl -build-file %/lib/btc-wallet-store/hoon
```
### get address at indices
```
2020-11-11 15:30:22 +03:00
=walt1 (from-xpub:bl xpub1 ~ ~)
(~(mk-address wad:bl walt1 %0) 0)
:: gives [%bech32 'bc1q0adfj7ur750hjwufzzlfj5ytqzsnd7fz9fjuzc']
2020-10-30 14:45:38 +03:00
```
2020-10-31 12:41:00 +03:00
### update address data
```
2020-11-11 15:30:22 +03:00
=walt1 (from-xpub:bl xpub1 ~ ~)
(~(mk-address wad:bl walt1 %0) 0)
2020-10-31 14:25:32 +03:00
:: gives bc1q0adfj7ur750hjwufzzlfj5ytqzsnd7fz9fjuzc
2020-11-11 15:30:22 +03:00
=walt1 (~(watch-address wad:bl walt1 %0) [%bech32 'bc1q0adfj7ur750hjwufzzlfj5ytqzsnd7fz9fjuzc'] [%0 0 ~])
nixt.walt1
2020-10-31 14:25:32 +03:00
:: gives [p=1 q=0] (nixt updated since it was 0)
2020-11-11 15:30:22 +03:00
=walt1 (~(watch-address wad:bl walt1 %0) [%bech32 'bc1qa5jcdww8u8493zttjjf6q5wu89e6knpvmsh7x4'] [%0 2 ~])
nixt.walt1=walt1 (~(watch-address wad:bl walt1 %0) [%bech32 'bc1qa5jcdww8u8493zttjjf6q5wu89e6knpvmsh7x4'] [%0 2 ~])
nixt.walt1
2020-10-31 14:25:32 +03:00
:: gives [p=1 q=0] (no update)
2020-11-11 15:30:22 +03:00
=walt1 (~(watch-address wad:bl walt1 %0) [%bech32 'bc1qvqrdh8suyv63ntaa0d7hmcamavv8283sngh6e5'] [%0 1 ~])
nixt.walt1
2020-10-31 14:25:32 +03:00
:: gives [p=3 q=0] (skips index 2, since already a used address there)
2020-11-02 10:21:48 +03:00
2020-11-11 15:30:22 +03:00
=walt1 (~(watch-address wad:bl walt1 %0) [%bech32 'bc1qvqrdh8suyv63ntaa0d7hmcamavv8283sngh6e5'] [%0 4 ~])
:: gives error, because address is inserted at index that doesn't match it
2020-11-02 10:21:48 +03:00
```
### generate new address (for receiving payment)
```
2020-11-11 16:54:47 +03:00
=walt1 (from-xpub:bl xpub1 ~ ~)
=res ~(gen-address wad:bl walt1 %0)
2020-11-02 10:21:48 +03:00
p.res
2020-11-11 16:54:47 +03:00
nixt.q.res
2020-11-02 10:21:48 +03:00
:: gives
:: [%bech32 'bc1q0adfj7ur750hjwufzzlfj5ytqzsnd7fz9fjuzc']
:: [p=1 q=0]
2020-10-31 12:41:00 +03:00
```
2020-11-02 20:51:19 +03:00
## Scanning
2020-11-03 14:50:10 +03:00
Mnemonic
```
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
```
2020-11-02 20:51:19 +03:00
### manual scanning of empty wallet
2020-11-11 16:54:47 +03:00
Uses `btc-wallet-hook`, with max-gap=3
2020-11-02 20:51:19 +03:00
```
2020-11-04 18:24:00 +03:00
:btc-wallet-hook|action [%set-provider ~dopzod]
2020-11-02 20:51:19 +03:00
=scan-xpub 'zpub6rFR7y4Q2AijBEqTUquhVz398htDFrtymD9xYYfG1m4wAcvPhXNfE3EfH1r1ADqtfSdVCToUG868RvUUkgDKf31mGDtKsAYz2oz2AGutZYs'
:btc-wallet-store|action [%add-wallet scan-xpub ~ [~ 3]]
:btc-wallet-store +dbug
:: shows scans with the xpub and {0 1 2} todos
2020-11-03 14:50:10 +03:00
:: %0 account has no used
2020-11-11 12:41:13 +03:00
=btc -build-file %/lib/btc/hoon
2020-11-03 14:50:10 +03:00
:btc-wallet-store|action [%watch-address scan-xpub %0 1 *(set utxo:btc) used=%.n]
:btc-wallet-store|action [%watch-address scan-xpub %0 2 *(set utxo:btc) used=%.n]
:btc-wallet-store|action [%watch-address scan-xpub %0 0 *(set utxo:btc) used=%.n]
:: dbug should give empty for scans: [xpub %0]
:btc-wallet-store|action [%watch-address scan-xpub %1 2 *(set utxo:btc) used=%.n]
:btc-wallet-store|action [%watch-address scan-xpub %1 0 *(set utxo:btc) used=%.n]
:btc-wallet-store|action [%watch-address scan-xpub %1 1 *(set utxo:btc) used=%.y]
:: dbug should show re-filled scans: [xpub %1]
2020-11-02 20:51:19 +03:00
```
2020-11-11 12:41:13 +03:00
## scrys
```
.^((list @t) %gx /=btc-wallet-store=/scanned/noun)
```
2020-11-02 10:53:04 +03:00
2020-11-11 12:41:13 +03:00
## Algos
2020-11-02 10:53:04 +03:00
2020-11-02 13:37:55 +03:00
### Monitor addresses
- nixt also stores next 50 addresses for each account.
- every update-address call also checks those
2020-10-30 14:45:38 +03:00
### make a payment
* make payment
- get address
- on-agent gets return value, construct tx
- store tx (view or other command can get it)
2020-10-30 14:45:38 +03:00
::
++ send-address-update
|= [xpub=tape =walt a=address:btc us=(set utxo)]
^- (quip card _state)
:_ state(walts (~(put by walts.state) xpub walt))
~[[%give %fact ~[/wallets] %btc-wallet-store-update !>([%address a us])]]
::