先日、ビットコインのUTXOの一覧から残高を調べたい用途に簡単なスクリプトを書きました。
unspent
という名前で以下のように使います
unspent tx_id index
例
$ ./unspent 41d09f53fc812c0762085e2af87ae99f1d6f58241bc209d7ebcc97abee59bfd4 0
69417 unspent
ソースは以下の通りです
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| #!/bin/bash
# UTXO checker for Bitcoin mainnet
api=https://blockstream.info/api
function usage()
{
cat <<-EOF
usage: $(basename $0) tx_id index
EOF
}
commands='jq curl'
for c in $commands; do
hash $c || { echo "install $c"; exit 255; }
done
tx=$1
index=$2
[ -n "$tx" ] || { usage; exit 255; }
[ -n "$index" ] || { usage; exit 255; }
result=$(curl -s "${api}/tx/$tx/outspends" | jq ".[${index}].spent")
[ "$result" = "null" ] && { echo 'invalid'; exit 255; }
value=$(curl -s "${api}/tx/$tx" | jq ".vout[${index}].value")
[ "$result" = "false" ] && { echo "$value unspent"; exit 0; }
[ "$result" = "true" ] && { echo "$value spent"; exit 1; }
|
Blockstream
のAPIを利用させてもらっています。