mirror of
https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
synced 2025-06-09 00:46:25 +00:00
Update 4_2__Interlude_Using_JQ.md
This commit is contained in:
parent
34b839666a
commit
8e9d97ed19
@ -13,7 +13,7 @@ Once you've downloaded the binary, you can install it on your system:
|
||||
$ mv jq-linux64 jq
|
||||
$ sudo /usr/bin/install -m 0755 -o root -g root -t /usr/local/bin jq
|
||||
```
|
||||
## Use JQ to Capture a JSON Object Key-Value by Key
|
||||
## Use JQ to Access a JSON Object Value by Key
|
||||
|
||||
**Usage Example:** _Capture the hex from a signed raw transaction._
|
||||
|
||||
@ -42,7 +42,7 @@ $ echo $signedtx
|
||||
$ bitcoin-cli sendrawtransaction $signedtx
|
||||
3f9ccb6e16663e66dc119de1866610cc4f7a83079bfec2abf0598ed3adf10a78
|
||||
```
|
||||
## Use JQ to Capture a JSON Array Key-Value by Key
|
||||
## Use JQ to Access a JSON Array Value by Key
|
||||
|
||||
**Usage Example:** _Capture the txid and vout for a selected UTXO._
|
||||
|
||||
@ -79,7 +79,7 @@ $ echo $newvout
|
||||
```
|
||||
Voila! We could now create a new raw transaction using our 0th UTXO as an input, without having to type in any of the UTXO info by hand!
|
||||
|
||||
## Use JQ to Capture Multiple JSON Array Key-Values by Key
|
||||
## Use JQ to Access Multiple JSON Array Values by Key
|
||||
|
||||
**Usage Example:** _List the value of all unspent UTXOs._
|
||||
|
||||
@ -103,7 +103,7 @@ $ bitcoin-cli getbalance
|
||||
6.61000000
|
||||
```
|
||||
|
||||
## Use JQ to Display Multiple Values by Multiple Keys
|
||||
## Use JQ to Display Multiple JSON Object Values by Multiple Keys
|
||||
|
||||
**Usage Example:** _List usage information for all UTXOs._
|
||||
|
||||
@ -158,7 +158,7 @@ You can of course rename your new keys as you see fit:
|
||||
"bitcoins": 1.95
|
||||
}
|
||||
```
|
||||
## Use JQ to Capture a JSON Object Key-Value by Value
|
||||
## Use JQ to Access a JSON Object by Accessed Value
|
||||
|
||||
**Usage Example:** _Automatically look up a UTXO being used in a transaction._
|
||||
|
||||
@ -304,7 +304,7 @@ for txid in ${usedtxid[@]}; do bitcoin-cli listunspent | jq -r '.[] | select (.t
|
||||
}
|
||||
```
|
||||
|
||||
## Use JSON for Simple Calculation by Key-Value
|
||||
## Use JSON for Simple Calculation by Value
|
||||
|
||||
**Usage Example:** _Automatically calculate the value of the UTXOs used in a transaction._
|
||||
|
||||
@ -322,8 +322,6 @@ $ for txid in ${usedtxid[@]}; do bitcoin-cli listunspent | jq -r '.[] | select (
|
||||
4.66
|
||||
```
|
||||
|
||||
For more JSON magic (and if any of this isn't clear), please read the [JSON Manual](https://stedolan.github.io/jq/manual/) and the [JSON Cookbook](https://github.com/stedolan/jq/wiki/Cookbook).
|
||||
|
||||
## Use JQ for Complex Calculations
|
||||
|
||||
**Usage Example:** _Calculate the fee for a real transaction._
|
||||
@ -338,14 +336,11 @@ $ echo "$btcin-$btcout"| /usr/bin/bc
|
||||
```
|
||||
And that's also a good example of why you double-check your fees: we'd intended to send a transaction fee of 5,000 satoshis, but sent 95,000 satoshis instead. Whoops!
|
||||
|
||||
If you'd like to have this JQ
|
||||
> **WARNING:** This script has not been robustly checked. If you are going to use it to verify real transaction fees you should only do it as a triple-check after you've already done all the math yourself.
|
||||
For more JSON magic (and if any of this isn't clear), please read the [JSON Manual](https://stedolan.github.io/jq/manual/) and the [JSON Cookbook](https://github.com/stedolan/jq/wiki/Cookbook). We'll be regularly using JQ in future examples.
|
||||
|
||||
### Use JQ to Calculate Transaction Fees for Real
|
||||
### The Transaction Fee Script
|
||||
|
||||
**Usage Example:** _Calculate the fee for a real transaction._
|
||||
|
||||
However, as we've noted, a real transaction may have more than one input and will almost always have more than one output. We'll construct one of those in a future section, but for now here's a more robust bash script that uses JQ to calculate the transaction fee for a transaction with multiple vins and vouts.
|
||||
If you'd like to have this JQ in a script, you can use the following.
|
||||
|
||||
> **WARNING:** This script has not been robustly checked. If you are going to use it to verify real transaction fees you should only do it as a triple-check after you've already done all the math yourself.
|
||||
|
||||
@ -377,3 +372,10 @@ $ ./txfee-calc.sh $rawtxhex
|
||||
|
||||
## Make Some New Aliases
|
||||
|
||||
JQ code can be a little unwieldly, so you should consider adding some longer and more interesting invocations to your ~/.bash_profile
|
||||
```
|
||||
lias btcunspent="bitcoin-cli listunspent | jq -r '.[] | { txid: .txid, vout: .vout, amount: .amount }'"
|
||||
alias btctxfee="~/txfee-calc.sh"
|
||||
```
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user