urbit/pkg/base-dev/sur/bitcoin.hoon

85 lines
1.7 KiB
Plaintext
Raw Normal View History

2021-02-01 11:49:54 +03:00
:: sur/btc.hoon
:: Utilities for working with BTC data types and transactions
::
2020-12-08 20:31:21 +03:00
:: chyg: whether account is (non-)change. 0 or 1
:: bytc: "btc-byts" with dat cast to @ux
2020-10-05 14:57:50 +03:00
|%
+$ network ?(%main %testnet)
2021-01-26 21:36:21 +03:00
+$ hexb [wid=@ dat=@ux] :: hex byts
2021-01-27 16:09:25 +03:00
+$ bits [wid=@ dat=@ub]
2020-11-12 13:13:54 +03:00
+$ xpub @ta
2021-01-27 16:09:25 +03:00
+$ address
$% [%base58 @uc]
[%bech32 cord]
==
2021-01-26 21:36:21 +03:00
+$ fprint hexb
+$ bipt $?(%44 %49 %84)
2020-12-08 19:16:16 +03:00
+$ chyg $?(%0 %1)
2020-12-08 20:31:21 +03:00
+$ idx @ud
+$ hdkey [=fprint pubkey=hexb =network =bipt =chyg =idx]
2020-10-30 14:45:38 +03:00
+$ sats @ud
2020-11-18 14:39:57 +03:00
+$ vbytes @ud
2021-02-12 17:37:21 +03:00
+$ txid hexb
+$ utxo [pos=@ =txid height=@ value=sats recvd=(unit @da)]
2020-10-20 11:28:19 +03:00
++ address-info
$: =address
2020-10-20 12:05:37 +03:00
confirmed-value=sats
unconfirmed-value=sats
utxos=(set utxo)
2020-10-20 11:28:19 +03:00
==
2020-10-16 10:33:10 +03:00
++ tx
|%
2020-12-13 23:33:08 +03:00
+$ data
$: is=(list input)
2021-01-27 16:09:25 +03:00
os=(list output)
2020-12-13 23:33:08 +03:00
locktime=@ud
nversion=@ud
2020-12-14 17:40:31 +03:00
segwit=(unit @ud)
2020-12-13 23:33:08 +03:00
==
2020-12-06 20:53:02 +03:00
+$ val
2021-02-12 17:37:21 +03:00
$: =txid
2020-12-06 20:53:02 +03:00
pos=@ud
=address
value=sats
==
2020-12-21 12:50:33 +03:00
:: included: whether tx is in the mempool or blockchain
::
2020-12-07 23:31:09 +03:00
+$ info
2020-12-21 12:50:33 +03:00
$: included=?
2021-02-12 17:37:21 +03:00
=txid
2020-12-07 23:31:09 +03:00
confs=@ud
recvd=(unit @da)
inputs=(list val)
outputs=(list val)
==
2020-10-16 10:33:10 +03:00
+$ input
2021-02-12 17:37:21 +03:00
$: =txid
2020-12-13 23:33:08 +03:00
pos=@ud
2021-01-26 21:36:21 +03:00
sequence=hexb
2021-02-09 12:29:51 +03:00
script-sig=(unit hexb)
2021-01-26 21:36:21 +03:00
pubkey=(unit hexb)
value=sats
2020-10-16 10:33:10 +03:00
==
2020-12-13 23:33:08 +03:00
+$ output
2021-01-26 21:36:21 +03:00
$: script-pubkey=hexb
2020-12-13 23:33:08 +03:00
value=sats
==
2020-10-16 10:33:10 +03:00
--
2020-12-08 15:42:39 +03:00
++ psbt
|%
2020-12-10 18:54:39 +03:00
+$ base64 cord
2021-01-26 21:36:21 +03:00
+$ in [=utxo rawtx=hexb =hdkey]
2020-12-08 20:51:14 +03:00
+$ out [=address hk=(unit hdkey)]
2020-12-08 19:16:16 +03:00
+$ target $?(%input %output)
2021-01-26 21:36:21 +03:00
+$ keyval [key=hexb val=hexb]
2020-12-08 17:48:40 +03:00
+$ map (list keyval)
2020-12-08 15:42:39 +03:00
--
2020-10-15 13:55:41 +03:00
++ ops
|%
2020-10-16 10:33:10 +03:00
++ op-dup 118
2020-10-15 13:55:41 +03:00
++ op-equalverify 136
++ op-hash160 169
++ op-checksig 172
--
2020-10-05 14:57:50 +03:00
--