mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 02:33:24 -03:00
doc: Prepend 'build/' to binary paths under 'src/' in docs
This commit is contained in:
parent
91b3bc2b9c
commit
6a68343ffb
10 changed files with 70 additions and 70 deletions
|
@ -82,7 +82,7 @@ about the connection. Peers can be selected individually to view recent P2P
|
||||||
messages.
|
messages.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ python3 contrib/tracing/p2p_monitor.py ./src/bitcoind
|
$ python3 contrib/tracing/p2p_monitor.py ./build/src/bitcoind
|
||||||
```
|
```
|
||||||
|
|
||||||
Lists selectable peers and traffic and connection information.
|
Lists selectable peers and traffic and connection information.
|
||||||
|
@ -150,7 +150,7 @@ lost. BCC prints: `Possibly lost 2 samples` on lost messages.
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$ python3 contrib/tracing/log_raw_p2p_msgs.py ./src/bitcoind
|
$ python3 contrib/tracing/log_raw_p2p_msgs.py ./build/src/bitcoind
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -188,7 +188,7 @@ In a different terminal, starting Bitcoin Core in SigNet mode and with
|
||||||
re-indexing enabled.
|
re-indexing enabled.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ./src/bitcoind -signet -reindex
|
$ ./build/src/bitcoind -signet -reindex
|
||||||
```
|
```
|
||||||
|
|
||||||
This produces the following output.
|
This produces the following output.
|
||||||
|
@ -241,7 +241,7 @@ A BCC Python script to log the UTXO cache flushes. Based on the
|
||||||
`utxocache:flush` tracepoint.
|
`utxocache:flush` tracepoint.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ python3 contrib/tracing/log_utxocache_flush.py ./src/bitcoind
|
$ python3 contrib/tracing/log_utxocache_flush.py ./build/src/bitcoind
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -300,7 +300,7 @@ comprising a timestamp along with all event data available via the event's
|
||||||
tracepoint.
|
tracepoint.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ python3 contrib/tracing/mempool_monitor.py ./src/bitcoind
|
$ python3 contrib/tracing/mempool_monitor.py ./build/src/bitcoind
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
This script requires a 'bitcoind' binary compiled with eBPF support and the
|
This script requires a 'bitcoind' binary compiled with eBPF support and the
|
||||||
'validation:block_connected' USDT. By default, it's assumed that 'bitcoind' is
|
'validation:block_connected' USDT. By default, it's assumed that 'bitcoind' is
|
||||||
located in './src/bitcoind'. This can be modified in the script below.
|
located in './build/src/bitcoind'. This can be modified in the script below.
|
||||||
|
|
||||||
EXAMPLES:
|
EXAMPLES:
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ BEGIN
|
||||||
connected block is between the start and end height (or the end height is
|
connected block is between the start and end height (or the end height is
|
||||||
unset).
|
unset).
|
||||||
*/
|
*/
|
||||||
usdt:./src/bitcoind:validation:block_connected /arg1 >= $1 && (arg1 <= $2 || $2 == 0 )/
|
usdt:./build/src/bitcoind:validation:block_connected /arg1 >= $1 && (arg1 <= $2 || $2 == 0 )/
|
||||||
{
|
{
|
||||||
$height = arg1;
|
$height = arg1;
|
||||||
$transactions = arg2;
|
$transactions = arg2;
|
||||||
|
@ -102,7 +102,7 @@ usdt:./src/bitcoind:validation:block_connected /arg1 >= $1 && (arg1 <= $2 || $2
|
||||||
blocks where the time it took to connect the block is above the
|
blocks where the time it took to connect the block is above the
|
||||||
<logging threshold in ms>.
|
<logging threshold in ms>.
|
||||||
*/
|
*/
|
||||||
usdt:./src/bitcoind:validation:block_connected / (uint64) arg5 / 1000> $3 /
|
usdt:./build/src/bitcoind:validation:block_connected / (uint64) arg5 / 1000> $3 /
|
||||||
{
|
{
|
||||||
$hash = arg0;
|
$hash = arg0;
|
||||||
$height = (int32) arg1;
|
$height = (int32) arg1;
|
||||||
|
|
|
@ -5,7 +5,7 @@ BEGIN
|
||||||
printf("Logging P2P traffic\n")
|
printf("Logging P2P traffic\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
usdt:./src/bitcoind:net:inbound_message
|
usdt:./build/src/bitcoind:net:inbound_message
|
||||||
{
|
{
|
||||||
$peer_id = (int64) arg0;
|
$peer_id = (int64) arg0;
|
||||||
$peer_addr = str(arg1);
|
$peer_addr = str(arg1);
|
||||||
|
@ -15,7 +15,7 @@ usdt:./src/bitcoind:net:inbound_message
|
||||||
printf("inbound '%s' msg from peer %d (%s, %s) with %d bytes\n", $msg_type, $peer_id, $peer_type, $peer_addr, $msg_len);
|
printf("inbound '%s' msg from peer %d (%s, %s) with %d bytes\n", $msg_type, $peer_id, $peer_type, $peer_addr, $msg_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
usdt:./src/bitcoind:net:outbound_message
|
usdt:./build/src/bitcoind:net:outbound_message
|
||||||
{
|
{
|
||||||
$peer_id = (int64) arg0;
|
$peer_id = (int64) arg0;
|
||||||
$peer_addr = str(arg1);
|
$peer_addr = str(arg1);
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
This script requires a 'bitcoind' binary compiled with eBPF support and the
|
This script requires a 'bitcoind' binary compiled with eBPF support and the
|
||||||
'utxocache' tracepoints. By default, it's assumed that 'bitcoind' is
|
'utxocache' tracepoints. By default, it's assumed that 'bitcoind' is
|
||||||
located in './src/bitcoind'. This can be modified in the script below.
|
located in './build/src/bitcoind'. This can be modified in the script below.
|
||||||
|
|
||||||
NOTE: requires bpftrace v0.12.0 or above.
|
NOTE: requires bpftrace v0.12.0 or above.
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@ BEGIN
|
||||||
/*
|
/*
|
||||||
Attaches to the 'utxocache:add' tracepoint and prints additions to the UTXO set cache.
|
Attaches to the 'utxocache:add' tracepoint and prints additions to the UTXO set cache.
|
||||||
*/
|
*/
|
||||||
usdt:./src/bitcoind:utxocache:add
|
usdt:./build/src/bitcoind:utxocache:add
|
||||||
{
|
{
|
||||||
$txid = arg0;
|
$txid = arg0;
|
||||||
$index = (uint32)arg1;
|
$index = (uint32)arg1;
|
||||||
|
@ -44,7 +44,7 @@ usdt:./src/bitcoind:utxocache:add
|
||||||
/*
|
/*
|
||||||
Attaches to the 'utxocache:spent' tracepoint and prints spents from the UTXO set cache.
|
Attaches to the 'utxocache:spent' tracepoint and prints spents from the UTXO set cache.
|
||||||
*/
|
*/
|
||||||
usdt:./src/bitcoind:utxocache:spent
|
usdt:./build/src/bitcoind:utxocache:spent
|
||||||
{
|
{
|
||||||
$txid = arg0;
|
$txid = arg0;
|
||||||
$index = (uint32)arg1;
|
$index = (uint32)arg1;
|
||||||
|
@ -66,7 +66,7 @@ usdt:./src/bitcoind:utxocache:spent
|
||||||
/*
|
/*
|
||||||
Attaches to the 'utxocache:uncache' tracepoint and uncache UTXOs from the UTXO set cache.
|
Attaches to the 'utxocache:uncache' tracepoint and uncache UTXOs from the UTXO set cache.
|
||||||
*/
|
*/
|
||||||
usdt:./src/bitcoind:utxocache:uncache
|
usdt:./build/src/bitcoind:utxocache:uncache
|
||||||
{
|
{
|
||||||
$txid = arg0;
|
$txid = arg0;
|
||||||
$index = (uint32)arg1;
|
$index = (uint32)arg1;
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
# dependencies that cannot be fixed in-tree.
|
# dependencies that cannot be fixed in-tree.
|
||||||
#
|
#
|
||||||
# Example use:
|
# Example use:
|
||||||
# $ valgrind --suppressions=contrib/valgrind.supp src/test/test_bitcoin
|
# $ valgrind --suppressions=contrib/valgrind.supp build/src/test/test_bitcoin
|
||||||
# $ valgrind --suppressions=contrib/valgrind.supp --leak-check=full \
|
# $ valgrind --suppressions=contrib/valgrind.supp --leak-check=full \
|
||||||
# --show-leak-kinds=all src/test/test_bitcoin
|
# --show-leak-kinds=all build/src/test/test_bitcoin
|
||||||
#
|
#
|
||||||
# To create suppressions for found issues, use the --gen-suppressions=all option:
|
# To create suppressions for found issues, use the --gen-suppressions=all option:
|
||||||
# $ valgrind --suppressions=contrib/valgrind.supp --leak-check=full \
|
# $ valgrind --suppressions=contrib/valgrind.supp --leak-check=full \
|
||||||
# --show-leak-kinds=all --gen-suppressions=all --show-reachable=yes \
|
# --show-leak-kinds=all --gen-suppressions=all --show-reachable=yes \
|
||||||
# --error-limit=no src/test/test_bitcoin
|
# --error-limit=no build/src/test/test_bitcoin
|
||||||
#
|
#
|
||||||
# Note that suppressions may depend on OS and/or library versions.
|
# Note that suppressions may depend on OS and/or library versions.
|
||||||
# Tested on:
|
# Tested on:
|
||||||
|
|
|
@ -468,11 +468,11 @@ which includes known Valgrind warnings in our dependencies that cannot be fixed
|
||||||
in-tree. Example use:
|
in-tree. Example use:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ valgrind --suppressions=contrib/valgrind.supp src/test/test_bitcoin
|
$ valgrind --suppressions=contrib/valgrind.supp build/src/test/test_bitcoin
|
||||||
$ valgrind --suppressions=contrib/valgrind.supp --leak-check=full \
|
$ valgrind --suppressions=contrib/valgrind.supp --leak-check=full \
|
||||||
--show-leak-kinds=all src/test/test_bitcoin --log_level=test_suite
|
--show-leak-kinds=all build/src/test/test_bitcoin --log_level=test_suite
|
||||||
$ valgrind -v --leak-check=full src/bitcoind -printtoconsole
|
$ valgrind -v --leak-check=full build/src/bitcoind -printtoconsole
|
||||||
$ ./test/functional/test_runner.py --valgrind
|
$ ./build/test/functional/test_runner.py --valgrind
|
||||||
```
|
```
|
||||||
|
|
||||||
### Compiling for test coverage
|
### Compiling for test coverage
|
||||||
|
|
|
@ -9,7 +9,7 @@ This tutorial uses [jq](https://github.com/stedolan/jq) JSON processor to proces
|
||||||
Before starting this tutorial, start the bitcoin node on the signet network.
|
Before starting this tutorial, start the bitcoin node on the signet network.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./src/bitcoind -signet -daemon
|
./build/src/bitcoind -signet -daemon
|
||||||
```
|
```
|
||||||
|
|
||||||
This tutorial also uses the default WPKH derivation path to get the xpubs and does not conform to [BIP 45](https://github.com/bitcoin/bips/blob/master/bip-0045.mediawiki) or [BIP 87](https://github.com/bitcoin/bips/blob/master/bip-0087.mediawiki).
|
This tutorial also uses the default WPKH derivation path to get the xpubs and does not conform to [BIP 45](https://github.com/bitcoin/bips/blob/master/bip-0045.mediawiki) or [BIP 87](https://github.com/bitcoin/bips/blob/master/bip-0087.mediawiki).
|
||||||
|
@ -27,7 +27,7 @@ These three wallets should not be used directly for privacy reasons (public key
|
||||||
```bash
|
```bash
|
||||||
for ((n=1;n<=3;n++))
|
for ((n=1;n<=3;n++))
|
||||||
do
|
do
|
||||||
./src/bitcoin-cli -signet createwallet "participant_${n}"
|
./build/src/bitcoin-cli -signet createwallet "participant_${n}"
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -47,9 +47,9 @@ declare -A xpubs
|
||||||
|
|
||||||
for ((n=1;n<=3;n++))
|
for ((n=1;n<=3;n++))
|
||||||
do
|
do
|
||||||
xpubs["internal_xpub_${n}"]=$(./src/bitcoin-cli -signet -rpcwallet="participant_${n}" listdescriptors | jq '.descriptors | [.[] | select(.desc | startswith("wpkh") and contains("/1/*"))][0] | .desc' | grep -Po '(?<=\().*(?=\))')
|
xpubs["internal_xpub_${n}"]=$(./build/src/bitcoin-cli -signet -rpcwallet="participant_${n}" listdescriptors | jq '.descriptors | [.[] | select(.desc | startswith("wpkh") and contains("/1/*"))][0] | .desc' | grep -Po '(?<=\().*(?=\))')
|
||||||
|
|
||||||
xpubs["external_xpub_${n}"]=$(./src/bitcoin-cli -signet -rpcwallet="participant_${n}" listdescriptors | jq '.descriptors | [.[] | select(.desc | startswith("wpkh") and contains("/0/*") )][0] | .desc' | grep -Po '(?<=\().*(?=\))')
|
xpubs["external_xpub_${n}"]=$(./build/src/bitcoin-cli -signet -rpcwallet="participant_${n}" listdescriptors | jq '.descriptors | [.[] | select(.desc | startswith("wpkh") and contains("/0/*") )][0] | .desc' | grep -Po '(?<=\().*(?=\))')
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -71,8 +71,8 @@ Define the external and internal multisig descriptors, add the checksum and then
|
||||||
external_desc="wsh(sortedmulti(2,${xpubs["external_xpub_1"]},${xpubs["external_xpub_2"]},${xpubs["external_xpub_3"]}))"
|
external_desc="wsh(sortedmulti(2,${xpubs["external_xpub_1"]},${xpubs["external_xpub_2"]},${xpubs["external_xpub_3"]}))"
|
||||||
internal_desc="wsh(sortedmulti(2,${xpubs["internal_xpub_1"]},${xpubs["internal_xpub_2"]},${xpubs["internal_xpub_3"]}))"
|
internal_desc="wsh(sortedmulti(2,${xpubs["internal_xpub_1"]},${xpubs["internal_xpub_2"]},${xpubs["internal_xpub_3"]}))"
|
||||||
|
|
||||||
external_desc_sum=$(./src/bitcoin-cli -signet getdescriptorinfo $external_desc | jq '.descriptor')
|
external_desc_sum=$(./build/src/bitcoin-cli -signet getdescriptorinfo $external_desc | jq '.descriptor')
|
||||||
internal_desc_sum=$(./src/bitcoin-cli -signet getdescriptorinfo $internal_desc | jq '.descriptor')
|
internal_desc_sum=$(./build/src/bitcoin-cli -signet getdescriptorinfo $internal_desc | jq '.descriptor')
|
||||||
|
|
||||||
multisig_ext_desc="{\"desc\": $external_desc_sum, \"active\": true, \"internal\": false, \"timestamp\": \"now\"}"
|
multisig_ext_desc="{\"desc\": $external_desc_sum, \"active\": true, \"internal\": false, \"timestamp\": \"now\"}"
|
||||||
multisig_int_desc="{\"desc\": $internal_desc_sum, \"active\": true, \"internal\": true, \"timestamp\": \"now\"}"
|
multisig_int_desc="{\"desc\": $internal_desc_sum, \"active\": true, \"internal\": true, \"timestamp\": \"now\"}"
|
||||||
|
@ -94,7 +94,7 @@ There are other fields that can be added to the descriptors:
|
||||||
* `internal`: Indicates whether matching outputs should be treated as something other than incoming payments (e.g. change).
|
* `internal`: Indicates whether matching outputs should be treated as something other than incoming payments (e.g. change).
|
||||||
* `timestamp`: Sets the time from which to start rescanning the blockchain for the descriptor, in UNIX epoch time.
|
* `timestamp`: Sets the time from which to start rescanning the blockchain for the descriptor, in UNIX epoch time.
|
||||||
|
|
||||||
Documentation for these and other parameters can be found by typing `./src/bitcoin-cli help importdescriptors`.
|
Documentation for these and other parameters can be found by typing `./build/src/bitcoin-cli help importdescriptors`.
|
||||||
|
|
||||||
`multisig_desc` concatenates external and internal descriptors in a JSON array and then it will be used to create the multisig wallet.
|
`multisig_desc` concatenates external and internal descriptors in a JSON array and then it will be used to create the multisig wallet.
|
||||||
|
|
||||||
|
@ -107,17 +107,17 @@ Then import the descriptors created in the previous step using the `importdescri
|
||||||
After that, `getwalletinfo` can be used to check if the wallet was created successfully.
|
After that, `getwalletinfo` can be used to check if the wallet was created successfully.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./src/bitcoin-cli -signet -named createwallet wallet_name="multisig_wallet_01" disable_private_keys=true blank=true
|
./build/src/bitcoin-cli -signet -named createwallet wallet_name="multisig_wallet_01" disable_private_keys=true blank=true
|
||||||
|
|
||||||
./src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" importdescriptors "$multisig_desc"
|
./build/src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" importdescriptors "$multisig_desc"
|
||||||
|
|
||||||
./src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" getwalletinfo
|
./build/src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" getwalletinfo
|
||||||
```
|
```
|
||||||
|
|
||||||
Once the wallets have already been created and this tutorial needs to be repeated or resumed, it is not necessary to recreate them, just load them with the command below:
|
Once the wallets have already been created and this tutorial needs to be repeated or resumed, it is not necessary to recreate them, just load them with the command below:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
for ((n=1;n<=3;n++)); do ./src/bitcoin-cli -signet loadwallet "participant_${n}"; done
|
for ((n=1;n<=3;n++)); do ./build/src/bitcoin-cli -signet loadwallet "participant_${n}"; done
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.4 Fund the wallet
|
### 1.4 Fund the wallet
|
||||||
|
@ -131,9 +131,9 @@ The url used by the script can also be accessed directly. At time of writing, th
|
||||||
Coins received by the wallet must have at least 1 confirmation before they can be spent. It is necessary to wait for a new block to be mined before continuing.
|
Coins received by the wallet must have at least 1 confirmation before they can be spent. It is necessary to wait for a new block to be mined before continuing.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
receiving_address=$(./src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" getnewaddress)
|
receiving_address=$(./build/src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" getnewaddress)
|
||||||
|
|
||||||
./contrib/signet/getcoins.py -c ./src/bitcoin-cli -a $receiving_address
|
./contrib/signet/getcoins.py -c ./build/src/bitcoin-cli -a $receiving_address
|
||||||
```
|
```
|
||||||
|
|
||||||
To copy the receiving address onto the clipboard, use the following command. This can be useful when getting coins via the signet faucet mentioned above.
|
To copy the receiving address onto the clipboard, use the following command. This can be useful when getting coins via the signet faucet mentioned above.
|
||||||
|
@ -145,7 +145,7 @@ echo -n "$receiving_address" | xclip -sel clip
|
||||||
The `getbalances` RPC may be used to check the balance. Coins with `trusted` status can be spent.
|
The `getbalances` RPC may be used to check the balance. Coins with `trusted` status can be spent.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" getbalances
|
./build/src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" getbalances
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.5 Create a PSBT
|
### 1.5 Create a PSBT
|
||||||
|
@ -161,13 +161,13 @@ For simplicity, the destination address is taken from the `participant_1` wallet
|
||||||
The `walletcreatefundedpsbt` RPC is used to create and fund a transaction in the PSBT format. It is the first step in creating the PSBT.
|
The `walletcreatefundedpsbt` RPC is used to create and fund a transaction in the PSBT format. It is the first step in creating the PSBT.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
balance=$(./src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" getbalance)
|
balance=$(./build/src/bitcoin-cli -signet -rpcwallet="multisig_wallet_01" getbalance)
|
||||||
|
|
||||||
amount=$(echo "$balance * 0.8" | bc -l | sed -e 's/^\./0./' -e 's/^-\./-0./')
|
amount=$(echo "$balance * 0.8" | bc -l | sed -e 's/^\./0./' -e 's/^-\./-0./')
|
||||||
|
|
||||||
destination_addr=$(./src/bitcoin-cli -signet -rpcwallet="participant_1" getnewaddress)
|
destination_addr=$(./build/src/bitcoin-cli -signet -rpcwallet="participant_1" getnewaddress)
|
||||||
|
|
||||||
funded_psbt=$(./src/bitcoin-cli -signet -named -rpcwallet="multisig_wallet_01" walletcreatefundedpsbt outputs="{\"$destination_addr\": $amount}" | jq -r '.psbt')
|
funded_psbt=$(./build/src/bitcoin-cli -signet -named -rpcwallet="multisig_wallet_01" walletcreatefundedpsbt outputs="{\"$destination_addr\": $amount}" | jq -r '.psbt')
|
||||||
```
|
```
|
||||||
|
|
||||||
There is also the `createpsbt` RPC, which serves the same purpose, but it has no access to the wallet or to the UTXO set. It is functionally the same as `createrawtransaction` and just drops the raw transaction into an otherwise blank PSBT. [[source](https://bitcointalk.org/index.php?topic=5131043.msg50573609#msg50573609)] In most cases, `walletcreatefundedpsbt` solves the problem.
|
There is also the `createpsbt` RPC, which serves the same purpose, but it has no access to the wallet or to the UTXO set. It is functionally the same as `createrawtransaction` and just drops the raw transaction into an otherwise blank PSBT. [[source](https://bitcointalk.org/index.php?topic=5131043.msg50573609#msg50573609)] In most cases, `walletcreatefundedpsbt` solves the problem.
|
||||||
|
@ -181,9 +181,9 @@ Optionally, the PSBT can be decoded to a JSON format using `decodepsbt` RPC.
|
||||||
The `analyzepsbt` RPC analyzes and provides information about the current status of a PSBT and its inputs, e.g. missing signatures.
|
The `analyzepsbt` RPC analyzes and provides information about the current status of a PSBT and its inputs, e.g. missing signatures.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./src/bitcoin-cli -signet decodepsbt $funded_psbt
|
./build/src/bitcoin-cli -signet decodepsbt $funded_psbt
|
||||||
|
|
||||||
./src/bitcoin-cli -signet analyzepsbt $funded_psbt
|
./build/src/bitcoin-cli -signet analyzepsbt $funded_psbt
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.7 Update the PSBT
|
### 1.7 Update the PSBT
|
||||||
|
@ -193,9 +193,9 @@ In the code above, two PSBTs are created. One signed by `participant_1` wallet a
|
||||||
The `walletprocesspsbt` is used by the wallet to sign a PSBT.
|
The `walletprocesspsbt` is used by the wallet to sign a PSBT.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
psbt_1=$(./src/bitcoin-cli -signet -rpcwallet="participant_1" walletprocesspsbt $funded_psbt | jq '.psbt')
|
psbt_1=$(./build/src/bitcoin-cli -signet -rpcwallet="participant_1" walletprocesspsbt $funded_psbt | jq '.psbt')
|
||||||
|
|
||||||
psbt_2=$(./src/bitcoin-cli -signet -rpcwallet="participant_2" walletprocesspsbt $funded_psbt | jq '.psbt')
|
psbt_2=$(./build/src/bitcoin-cli -signet -rpcwallet="participant_2" walletprocesspsbt $funded_psbt | jq '.psbt')
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.8 Combine the PSBT
|
### 1.8 Combine the PSBT
|
||||||
|
@ -203,7 +203,7 @@ psbt_2=$(./src/bitcoin-cli -signet -rpcwallet="participant_2" walletprocesspsbt
|
||||||
The PSBT, if signed separately by the co-signers, must be combined into one transaction before being finalized. This is done by `combinepsbt` RPC.
|
The PSBT, if signed separately by the co-signers, must be combined into one transaction before being finalized. This is done by `combinepsbt` RPC.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
combined_psbt=$(./src/bitcoin-cli -signet combinepsbt "[$psbt_1, $psbt_2]")
|
combined_psbt=$(./build/src/bitcoin-cli -signet combinepsbt "[$psbt_1, $psbt_2]")
|
||||||
```
|
```
|
||||||
|
|
||||||
There is an RPC called `joinpsbts`, but it has a different purpose than `combinepsbt`. `joinpsbts` joins the inputs from multiple distinct PSBTs into one PSBT.
|
There is an RPC called `joinpsbts`, but it has a different purpose than `combinepsbt`. `joinpsbts` joins the inputs from multiple distinct PSBTs into one PSBT.
|
||||||
|
@ -217,9 +217,9 @@ The `finalizepsbt` RPC is used to produce a network serialized transaction which
|
||||||
It checks that all inputs have complete scriptSigs and scriptWitnesses and, if so, encodes them into network serialized transactions.
|
It checks that all inputs have complete scriptSigs and scriptWitnesses and, if so, encodes them into network serialized transactions.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
finalized_psbt_hex=$(./src/bitcoin-cli -signet finalizepsbt $combined_psbt | jq -r '.hex')
|
finalized_psbt_hex=$(./build/src/bitcoin-cli -signet finalizepsbt $combined_psbt | jq -r '.hex')
|
||||||
|
|
||||||
./src/bitcoin-cli -signet sendrawtransaction $finalized_psbt_hex
|
./build/src/bitcoin-cli -signet sendrawtransaction $finalized_psbt_hex
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.10 Alternative Workflow (PSBT sequential signatures)
|
### 1.10 Alternative Workflow (PSBT sequential signatures)
|
||||||
|
@ -229,11 +229,11 @@ Instead of each wallet signing the original PSBT and combining them later, the w
|
||||||
After that, the rest of the process is the same: the PSBT is finalized and transmitted to the network.
|
After that, the rest of the process is the same: the PSBT is finalized and transmitted to the network.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
psbt_1=$(./src/bitcoin-cli -signet -rpcwallet="participant_1" walletprocesspsbt $funded_psbt | jq -r '.psbt')
|
psbt_1=$(./build/src/bitcoin-cli -signet -rpcwallet="participant_1" walletprocesspsbt $funded_psbt | jq -r '.psbt')
|
||||||
|
|
||||||
psbt_2=$(./src/bitcoin-cli -signet -rpcwallet="participant_2" walletprocesspsbt $psbt_1 | jq -r '.psbt')
|
psbt_2=$(./build/src/bitcoin-cli -signet -rpcwallet="participant_2" walletprocesspsbt $psbt_1 | jq -r '.psbt')
|
||||||
|
|
||||||
finalized_psbt_hex=$(./src/bitcoin-cli -signet finalizepsbt $psbt_2 | jq -r '.hex')
|
finalized_psbt_hex=$(./build/src/bitcoin-cli -signet finalizepsbt $psbt_2 | jq -r '.hex')
|
||||||
|
|
||||||
./src/bitcoin-cli -signet sendrawtransaction $finalized_psbt_hex
|
./build/src/bitcoin-cli -signet sendrawtransaction $finalized_psbt_hex
|
||||||
```
|
```
|
||||||
|
|
|
@ -25,7 +25,7 @@ We are going to first create an `offline_wallet` on the offline host. We will th
|
||||||
1. On the offline machine create a wallet named `offline_wallet` secured by a wallet `passphrase`. This wallet will contain private keys and must remain unconnected to any networks at all times.
|
1. On the offline machine create a wallet named `offline_wallet` secured by a wallet `passphrase`. This wallet will contain private keys and must remain unconnected to any networks at all times.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[offline]$ ./src/bitcoin-cli -signet -named createwallet \
|
[offline]$ ./build/src/bitcoin-cli -signet -named createwallet \
|
||||||
wallet_name="offline_wallet" \
|
wallet_name="offline_wallet" \
|
||||||
passphrase="** enter passphrase **"
|
passphrase="** enter passphrase **"
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ We are going to first create an `offline_wallet` on the offline host. We will th
|
||||||
2. Export the public key-only descriptors from the offline host to a JSON file named `descriptors.json`. We use `jq` here to extract the `.descriptors` field from the full RPC response.
|
2. Export the public key-only descriptors from the offline host to a JSON file named `descriptors.json`. We use `jq` here to extract the `.descriptors` field from the full RPC response.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[offline]$ ./src/bitcoin-cli -signet -rpcwallet="offline_wallet" listdescriptors \
|
[offline]$ ./build/src/bitcoin-cli -signet -rpcwallet="offline_wallet" listdescriptors \
|
||||||
| jq -r '.descriptors' \
|
| jq -r '.descriptors' \
|
||||||
>> /path/to/descriptors.json
|
>> /path/to/descriptors.json
|
||||||
```
|
```
|
||||||
|
@ -58,7 +58,7 @@ The `watch_only_wallet` wallet will be used to track and validate incoming trans
|
||||||
> `disable_private_keys` indicates that the wallet should refuse to import private keys, i.e. will be a dedicated watch-only wallet.
|
> `disable_private_keys` indicates that the wallet should refuse to import private keys, i.e. will be a dedicated watch-only wallet.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[online]$ ./src/bitcoin-cli -signet -named createwallet \
|
[online]$ ./build/src/bitcoin-cli -signet -named createwallet \
|
||||||
wallet_name="watch_only_wallet" \
|
wallet_name="watch_only_wallet" \
|
||||||
disable_private_keys=true
|
disable_private_keys=true
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ The `watch_only_wallet` wallet will be used to track and validate incoming trans
|
||||||
2. Import the `offline_wallet`s public key descriptors to the online `watch_only_wallet` using the `descriptors.json` file created on the offline wallet.
|
2. Import the `offline_wallet`s public key descriptors to the online `watch_only_wallet` using the `descriptors.json` file created on the offline wallet.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[online]$ ./src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" importdescriptors "$(cat /path/to/descriptors.json)"
|
[online]$ ./build/src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" importdescriptors "$(cat /path/to/descriptors.json)"
|
||||||
|
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -109,7 +109,7 @@ At this point, it's important to understand that both the `offline_wallet` and o
|
||||||
1. Generate an address to receive coins. You can use _either_ the `offline_wallet` or the online `watch_only_wallet` to generate this address, as they will produce the same addresses. For the sake of this guide, we'll use the online `watch_only_wallet` to generate the address.
|
1. Generate an address to receive coins. You can use _either_ the `offline_wallet` or the online `watch_only_wallet` to generate this address, as they will produce the same addresses. For the sake of this guide, we'll use the online `watch_only_wallet` to generate the address.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[online]$ ./src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" getnewaddress
|
[online]$ ./build/src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" getnewaddress
|
||||||
|
|
||||||
tb1qtu5qgc6ddhmqm5yqjvhg83qgk2t4ewajg0h6yh
|
tb1qtu5qgc6ddhmqm5yqjvhg83qgk2t4ewajg0h6yh
|
||||||
```
|
```
|
||||||
|
@ -119,7 +119,7 @@ tb1qtu5qgc6ddhmqm5yqjvhg83qgk2t4ewajg0h6yh
|
||||||
3. Confirm that coins were received using the online `watch_only_wallet`. Note that the transaction may take a few moments before being received on your local node, depending on its connectivity. Just re-run the command periodically until the transaction is received.
|
3. Confirm that coins were received using the online `watch_only_wallet`. Note that the transaction may take a few moments before being received on your local node, depending on its connectivity. Just re-run the command periodically until the transaction is received.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[online]$ ./src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" listunspent
|
[online]$ ./build/src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" listunspent
|
||||||
|
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -148,7 +148,7 @@ tb1qtu5qgc6ddhmqm5yqjvhg83qgk2t4ewajg0h6yh
|
||||||
2. Create a funded but unsigned PSBT to the destination address with the online `watch_only_wallet` by using `send [{"address":amount},...]` and export the unsigned PSBT to a file `funded_psbt.txt` for easy portability to the `offline_wallet` for signing:
|
2. Create a funded but unsigned PSBT to the destination address with the online `watch_only_wallet` by using `send [{"address":amount},...]` and export the unsigned PSBT to a file `funded_psbt.txt` for easy portability to the `offline_wallet` for signing:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[online]$ ./src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" send \
|
[online]$ ./build/src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" send \
|
||||||
'{"tb1q9k5w0nhnhyeh78snpxh0t5t7c3lxdeg3erez32": 0.009}' \
|
'{"tb1q9k5w0nhnhyeh78snpxh0t5t7c3lxdeg3erez32": 0.009}' \
|
||||||
| jq -r '.psbt' \
|
| jq -r '.psbt' \
|
||||||
>> /path/to/funded_psbt.txt
|
>> /path/to/funded_psbt.txt
|
||||||
|
@ -165,13 +165,13 @@ cHNidP8BAHECAAAAAWLHKR9/xAjetzL/FCmZU5lbfINRMWPRPHWO68PfUzkPAQAAAAD9////AoA4AQAA
|
||||||
Decode and analyze the unsigned PSBT on the `offline_wallet` using the `funded_psbt.txt` file:
|
Decode and analyze the unsigned PSBT on the `offline_wallet` using the `funded_psbt.txt` file:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[offline]$ ./src/bitcoin-cli -signet decodepsbt $(cat /path/to/funded_psbt.txt)
|
[offline]$ ./build/src/bitcoin-cli -signet decodepsbt $(cat /path/to/funded_psbt.txt)
|
||||||
|
|
||||||
{
|
{
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
[offline]$ ./src/bitcoin-cli -signet analyzepsbt $(cat /path/to/funded_psbt.txt)
|
[offline]$ ./build/src/bitcoin-cli -signet analyzepsbt $(cat /path/to/funded_psbt.txt)
|
||||||
|
|
||||||
{
|
{
|
||||||
"inputs": [
|
"inputs": [
|
||||||
|
@ -202,13 +202,13 @@ Notice that the analysis of the PSBT shows that "signatures" are missing and sho
|
||||||
Use the walletpassphrase command to unlock the `offline_wallet` with the passphrase. You should specify the passphrase and a timeout (in seconds) for how long you want the wallet to remain unlocked.
|
Use the walletpassphrase command to unlock the `offline_wallet` with the passphrase. You should specify the passphrase and a timeout (in seconds) for how long you want the wallet to remain unlocked.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[offline]$ ./src/bitcoin-cli -signet -rpcwallet="offline_wallet" walletpassphrase "** enter passphrase **" 60
|
[offline]$ ./build/src/bitcoin-cli -signet -rpcwallet="offline_wallet" walletpassphrase "** enter passphrase **" 60
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Process, sign and finalize the PSBT on the `offline_wallet` using the `walletprocesspsbt` command, saving the output to a file `final_psbt.txt`.
|
2. Process, sign and finalize the PSBT on the `offline_wallet` using the `walletprocesspsbt` command, saving the output to a file `final_psbt.txt`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[offline]$ ./src/bitcoin-cli -signet -rpcwallet="offline_wallet" walletprocesspsbt \
|
[offline]$ ./build/src/bitcoin-cli -signet -rpcwallet="offline_wallet" walletprocesspsbt \
|
||||||
$(cat /path/to/funded_psbt.txt) \
|
$(cat /path/to/funded_psbt.txt) \
|
||||||
| jq -r .hex \
|
| jq -r .hex \
|
||||||
>> /path/to/final_psbt.txt
|
>> /path/to/final_psbt.txt
|
||||||
|
@ -218,7 +218,7 @@ Use the walletpassphrase command to unlock the `offline_wallet` with the passphr
|
||||||
Broadcast the funded, signed and finalized PSBT `final_psbt.txt` using `sendrawtransaction` with an online node:
|
Broadcast the funded, signed and finalized PSBT `final_psbt.txt` using `sendrawtransaction` with an online node:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[online]$ ./src/bitcoin-cli -signet sendrawtransaction $(cat /path/to/final_psbt.txt)
|
[online]$ ./build/src/bitcoin-cli -signet sendrawtransaction $(cat /path/to/final_psbt.txt)
|
||||||
|
|
||||||
c2430a0e46df472b04b0ca887bbcd5c4abf7b2ce2eb71de981444a80e2b96d52
|
c2430a0e46df472b04b0ca887bbcd5c4abf7b2ce2eb71de981444a80e2b96d52
|
||||||
```
|
```
|
||||||
|
@ -228,7 +228,7 @@ c2430a0e46df472b04b0ca887bbcd5c4abf7b2ce2eb71de981444a80e2b96d52
|
||||||
Confirm the updated balance of the offline wallet using the `watch_only_wallet`.
|
Confirm the updated balance of the offline wallet using the `watch_only_wallet`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[online]$ ./src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" getbalances
|
[online]$ ./build/src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" getbalances
|
||||||
|
|
||||||
{
|
{
|
||||||
"mine": {
|
"mine": {
|
||||||
|
@ -247,7 +247,7 @@ Confirm the updated balance of the offline wallet using the `watch_only_wallet`.
|
||||||
You can also show transactions related to the wallet using `listtransactions`
|
You can also show transactions related to the wallet using `listtransactions`
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[online]$ ./src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" listtransactions
|
[online]$ ./build/src/bitcoin-cli -signet -rpcwallet="watch_only_wallet" listtransactions
|
||||||
|
|
||||||
{
|
{
|
||||||
...
|
...
|
||||||
|
|
|
@ -366,13 +366,13 @@ USDT support.
|
||||||
To list probes in Bitcoin Core, use `info probes` in `gdb`:
|
To list probes in Bitcoin Core, use `info probes` in `gdb`:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ gdb ./src/bitcoind
|
$ gdb ./build/src/bitcoind
|
||||||
…
|
…
|
||||||
(gdb) info probes
|
(gdb) info probes
|
||||||
Type Provider Name Where Semaphore Object
|
Type Provider Name Where Semaphore Object
|
||||||
stap net inbound_message 0x000000000014419e /src/bitcoind
|
stap net inbound_message 0x000000000014419e /build/src/bitcoind
|
||||||
stap net outbound_message 0x0000000000107c05 /src/bitcoind
|
stap net outbound_message 0x0000000000107c05 /build/src/bitcoind
|
||||||
stap validation block_connected 0x00000000002fb10c /src/bitcoind
|
stap validation block_connected 0x00000000002fb10c /build/src/bitcoind
|
||||||
…
|
…
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -382,7 +382,7 @@ The `readelf` tool can be used to display the USDT tracepoints in Bitcoin Core.
|
||||||
Look for the notes with the description `NT_STAPSDT`.
|
Look for the notes with the description `NT_STAPSDT`.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ readelf -n ./src/bitcoind | grep NT_STAPSDT -A 4 -B 2
|
$ readelf -n ./build/src/bitcoind | grep NT_STAPSDT -A 4 -B 2
|
||||||
Displaying notes found in: .note.stapsdt
|
Displaying notes found in: .note.stapsdt
|
||||||
Owner Data size Description
|
Owner Data size Description
|
||||||
stapsdt 0x0000005d NT_STAPSDT (SystemTap probe descriptors)
|
stapsdt 0x0000005d NT_STAPSDT (SystemTap probe descriptors)
|
||||||
|
@ -406,7 +406,7 @@ between distributions. For example, on
|
||||||
[ubuntu binary]: https://github.com/iovisor/bcc/blob/master/INSTALL.md#ubuntu---binary
|
[ubuntu binary]: https://github.com/iovisor/bcc/blob/master/INSTALL.md#ubuntu---binary
|
||||||
|
|
||||||
```
|
```
|
||||||
$ tplist -l ./src/bitcoind -v
|
$ tplist -l ./build/src/bitcoind -v
|
||||||
b'net':b'outbound_message' [sema 0x0]
|
b'net':b'outbound_message' [sema 0x0]
|
||||||
1 location(s)
|
1 location(s)
|
||||||
6 argument(s)
|
6 argument(s)
|
||||||
|
|
|
@ -11,7 +11,7 @@ When following your systems build instructions, make sure to install the `Qt` de
|
||||||
To run:
|
To run:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./src/qt/bitcoin-qt
|
./build/src/qt/bitcoin-qt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Files and Directories
|
## Files and Directories
|
||||||
|
|
Loading…
Add table
Reference in a new issue