From db87964fad4e972e99bd86f1bef249aa8d82d90a Mon Sep 17 00:00:00 2001 From: Joe Andrieu Date: Sun, 6 Aug 2017 01:52:22 -0700 Subject: [PATCH 1/8] Removed extra "s" in Summary: Receiving a Transactions --- 03_4_Receiving_a_Transaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/03_4_Receiving_a_Transaction.md b/03_4_Receiving_a_Transaction.md index aa306b3..8dc409f 100644 --- a/03_4_Receiving_a_Transaction.md +++ b/03_4_Receiving_a_Transaction.md @@ -203,7 +203,7 @@ You can also use it to look at individual transactions: A block explorer doesn't generally provide any more information than a command line look at a raw transaction; it just does a good job of highlighting the important information and putting together the puzzle pieces, including the transaction fees behind a transaction — another concept that we'll be covering in future sections. -## Summary: Receiving a Transactions +## Summary: Receiving a Transaction Faucets will give you money on the testnet. They come in as raw transactions, which can be examined with `getrawtransaction` or a block explorer. Once you've receive a transaction, you can see it in your balance and your wallet. From 30969fbd197d44c9b1b4ca3efcf0839d36028b3f Mon Sep 17 00:00:00 2001 From: Derek Mahar Date: Wed, 4 Oct 2017 10:20:53 -0400 Subject: [PATCH 2/8] Removed duplicate words. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e0a50ab..57c50de 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Unless otherwise noted, the contents of this repository are Copyright ©2017 by ## Introduction -The best way to learn to learn deeply about bitcoin is to avoid GUIs (even bitcoin-qt), and instead learn it from the command line. +The best way to learn deeply about bitcoin is to avoid GUIs (even bitcoin-qt), and instead learn it from the command line. ## Requirements From 11f990e8dd192c3e4ede8263bbb300a35ec7e070 Mon Sep 17 00:00:00 2001 From: Max Giraldo Date: Tue, 17 Oct 2017 17:01:52 -0500 Subject: [PATCH 3/8] Fix typo in 01_0_Introducing_Bitcoin.md --- 01_0_Introducing_Bitcoin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/01_0_Introducing_Bitcoin.md b/01_0_Introducing_Bitcoin.md index 6b8fe67..bda330c 100644 --- a/01_0_Introducing_Bitcoin.md +++ b/01_0_Introducing_Bitcoin.md @@ -65,7 +65,7 @@ A message (or more commonly, a hash of a message) can be signed with a private k ### What Is a Hash Function? -A hash function is an algorithm frequently used with cryptograpy. It's a way to map a large, arbitrary amount of data to a small, fixed amount of data. Hash functions used in cryptography are one-way and collision-resistant, meaning that a hash can very reliably be linked to the original data, but the original data can not be regenerated from the hash. Hashes thus allow the transmission of small amounts of data to represent large amounts of data, which can be important for efficiency and storage requirements. +A hash function is an algorithm frequently used with cryptography. It's a way to map a large, arbitrary amount of data to a small, fixed amount of data. Hash functions used in cryptography are one-way and collision-resistant, meaning that a hash can very reliably be linked to the original data, but the original data can not be regenerated from the hash. Hashes thus allow the transmission of small amounts of data to represent large amounts of data, which can be important for efficiency and storage requirements. ### Public-Key Cryptography — In Short From 2c8ff8514170c173286f191c65a1b18651b7c905 Mon Sep 17 00:00:00 2001 From: Bruno Volpato Date: Tue, 12 Dec 2017 14:08:12 -0800 Subject: [PATCH 4/8] updating version to 0.15.1 --- 02_2__Script_Linode_Setup.stackscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_2__Script_Linode_Setup.stackscript b/02_2__Script_Linode_Setup.stackscript index 988fbea..48aa81b 100644 --- a/02_2__Script_Linode_Setup.stackscript +++ b/02_2__Script_Linode_Setup.stackscript @@ -23,7 +23,7 @@ # CURRENT BITCOIN RELEASE: # Change as necessary -export BITCOIN=bitcoin-core-0.14.2 +export BITCOIN=bitcoin-core-0.15.1 # Set the variable $IPADDR to the IP address the new Linode receives. IPADDR=$(/sbin/ifconfig eth0 | awk '/inet / { print $2 }' | sed 's/addr://') From 53c92c977a5e851b96d2d7effde03ad9040639d3 Mon Sep 17 00:00:00 2001 From: Bruno Volpato Date: Tue, 12 Dec 2017 14:09:16 -0800 Subject: [PATCH 5/8] Update storage requirements --- 02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md b/02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md index 815c00c..5ff6942 100644 --- a/02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md +++ b/02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md @@ -41,13 +41,13 @@ We also suggest that you choose a Debian 8 image when you're creating your machi Afterward, boot your VPS. -> **TESTNET vs MAINNET:** The various possible setups require 5-15G of storage and 2-3G of memory. The non-Pruned Mainnet is the only setup that requires considerably more: about 120G of storage to hold the current blockchain. +> **TESTNET vs MAINNET:** The various possible setups require 5-15G of storage and 2-3G of memory. The non-Pruned Mainnet is the only setup that requires considerably more: about 170G of storage to hold the current blockchain. > > Following are suggestions for machine requirements: > > | Setup | Memory | Storage | > |-------|--------|---------| -> | Mainnet | 2-3G | 120G | +> | Mainnet | 2-3G | 170G | > | Pruned Mainnet | 2-3G | ~5G | > | Testnet | 2-3G | ~15G | > | Pruned Testnet | 2-3G | ~5G | From eaba49fb29579de82a18fd2b22f4ce37aa116d95 Mon Sep 17 00:00:00 2001 From: Bruno Volpato Date: Tue, 12 Dec 2017 14:33:16 -0800 Subject: [PATCH 6/8] Update version to 0.15.1 --- 02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md | 16 ++++++++-------- ...ing_Up_a_Bitcoin-Core_VPS_with_StackScript.md | 6 +++--- 03_2_Knowing_Your_Bitcoin_Setup.md | 11 +++++------ 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md b/02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md index 5ff6942..94ae50b 100644 --- a/02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md +++ b/02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md @@ -33,7 +33,7 @@ If your cloud provider offers two-factor authentication for their web tools, we ### Create a Machine -You should now create your Bitcoin VPS. For an Unpruned Testnet setup, you should have at least 2-3G of memory and at least 15G of storage. +You should now create your Bitcoin VPS. For an Unpruned Testnet setup, you should have at least 2-3G of memory and at least 15G of storage. > **WARNING:** We've occasionally had machines run out of memory after running `bitcoind` for a few days when they only had 2G. Coming back, we find that `bitcoind` has stopped, leaving the message "Error: Out of memory. Terminating." in the `debug.log` file. This simply requires a restart of `bitcoind` and ten or fifteen minutes to get the blockchain resynced. Be generous with your memory if you want to avoid this annoyance, but don't worry too much if you hit it. @@ -61,7 +61,7 @@ You'll need to look up the IP address of your new machine, and then you should b $ ssh root@192.168.1.52 ``` -Now, you'll need to do some bog-standard configuration, then some work to improve the security of your machine. +Now, you'll need to do some bog-standard configuration, then some work to improve the security of your machine. _If you already have your own techniques for setting up a machine, go ahead and follow them, then jump ahead to "Setting Up a User", then "Installing Bitcoin". Otherwise,continue on!_ @@ -99,7 +99,7 @@ Though you're not putting much real value on this server, you should still make ### Create Firewall Rules -To start with, create a firewall rules file. +To start with, create a firewall rules file. _For all instructions that look like this, you should just be able to cut from the "cat" all the way down to the EOF, and everything will be placed into the appropriate file._ ``` @@ -245,7 +245,7 @@ Afterward give user1 access to the directory: $ chown -R user1 ~user1/.ssh ``` If you haven't set up an SSH key on your local computer yet, there are good instructions for it on [Github](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/). - + ## Installing Bitcoin You're now ready to get to the bitcoin-specific part of this tutorial! @@ -283,7 +283,7 @@ $ /bin/chown user1 ~user1/.bash_profile ### Login as Your Unprivileged User -You now want to switch over to the user1 account for the actual install: +You now want to switch over to the user1 account for the actual install: ``` $ su user1 $ cd @@ -294,9 +294,9 @@ $ source ~/.bash_profile We suggest setting up two variables to make this installation more automatic. -The first variable, $BITCOIN, should be set to the current version of Bitcoin. It was 0.14.1 when we wrote this. The second will then automatically generate a truncated form used by some of the files. +The first variable, $BITCOIN, should be set to the current version of Bitcoin. It was 0.15.1 when we wrote this. The second will then automatically generate a truncated form used by some of the files. ``` -$ export BITCOIN=bitcoin-core-0.14.1 +$ export BITCOIN=bitcoin-core-0.15.1 $ export BITCOINPLAIN=`echo $BITCOIN | sed 's/bitcoin-core/bitcoin/'` ``` @@ -390,7 +390,7 @@ But wait, your Bitcoin daemon is probably still downloading blocks. This alias, ``` $ btcblock ``` -0.14.1 is quite fast to download blocks, but it might still take an hour to download the unpruned testnet. It might be time for a few more espressos. +0.15.1 is quite fast to download blocks, but it might still take an hour to download the unpruned testnet. It might be time for a few more espressos. > **TESTNET vs MAINNET:** An unpruned mainnet will take hours longer. diff --git a/02_2_Setting_Up_a_Bitcoin-Core_VPS_with_StackScript.md b/02_2_Setting_Up_a_Bitcoin-Core_VPS_with_StackScript.md index 8c41eb4..b21314b 100644 --- a/02_2_Setting_Up_a_Bitcoin-Core_VPS_with_StackScript.md +++ b/02_2_Setting_Up_a_Bitcoin-Core_VPS_with_StackScript.md @@ -102,7 +102,7 @@ _You can freely choose to enter this optional information or skip it:_ **SSH Key.** Copy your local computer's SSH key here; this allows you be able to automatically login in via SSH to your user1 account. If you haven't setup an SSH key on your local computer yet, there are good instructions for it on [Github](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/). You may also want to add your SSH key into your Linode LISH (Linode Interactive Shell) by going to your "Linode Home Page / My Preferences / LISH Settings / LISH Keys". Using an SSH key will give you a simpler and safer way to log in to your server. -**SSH-Allowed IPs.** This is a comma-separated list of IPs that will be allowed to SSH into the VPS. For example "192.168.1.15,192.168.1.16". If you do not enter any IPs, _your VPS will not be very secure_. It will constantly be bombarded by attackers trying to find their way in, and they may very well succeed. +**SSH-Allowed IPs.** This is a comma-separated list of IPs that will be allowed to SSH into the VPS. For example "192.168.1.15,192.168.1.16". If you do not enter any IPs, _your VPS will not be very secure_. It will constantly be bombarded by attackers trying to find their way in, and they may very well succeed. *The remaining questions all have to do with the mechanics of the VPS deployment and should be left as they are with one exception: bump the Swap Disk from 256MB to 512MB, to ensure that you have enough memory to download the blockchain._ @@ -148,7 +148,7 @@ You will know the StackScripts are done when a BITCOIN-IS-READY file appears in ``` $ ls -bitcoin-0.14.1-x86_64-linux-gnu.tar.gz laanwj-releases.asc +bitcoin-0.15.1-x86_64-linux-gnu.tar.gz laanwj-releases.asc BITCOIN-IS-READY SHA256SUMS.asc ``` @@ -266,7 +266,7 @@ Creating a Bitcoin-Core VPS with a StackScript made the whole process quick, sim You have a few options for what's next: * Read the [StackScript](02_2__Script_Linode_Setup.stackscript) to understand your setup. - * See the other method for setting up a VPS in [§2.1: Setting up a Bitcoin-Core VPS by Hand](02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md). + * See the other method for setting up a VPS in [§2.1: Setting up a Bitcoin-Core VPS by Hand](02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md). * Move on to "bitcoin-cli" with [Chapter Three: Understanding Your Bitcoin Setup](03_0_Understanding_Your_Bitcoin_Setup.md). ## Appendix: Bitcoin Installation Types diff --git a/03_2_Knowing_Your_Bitcoin_Setup.md b/03_2_Knowing_Your_Bitcoin_Setup.md index 855f317..6e1b90a 100644 --- a/03_2_Knowing_Your_Bitcoin_Setup.md +++ b/03_2_Knowing_Your_Bitcoin_Setup.md @@ -69,7 +69,7 @@ submitblock "hexdata" ( "jsonparametersobject" ) == Network == addnode "node" "add|remove|onetry" clearbanned -disconnectnode "node" +disconnectnode "node" getaddednodeinfo dummy ( "node" ) getconnectioncount getnettotals @@ -162,7 +162,7 @@ Result: } Examples: -> bitcoin-cli getmininginfo +> bitcoin-cli getmininginfo > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getmininginfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/ ``` _What is RPC?_ `bitcoin-cli` is just a handy interface that lets you send commands to the `bitcoind`. More specifically, it's an interface that lets you send RPC (or Remote Procedure Protocol) commands to the `bitcoind`. Often, the `bitcoin-cli` command and the RPC command have identical names and interfaces, but some `bitcoin-cli` commands instead provide shortcuts for more complex RPC requests. Generally, the `bitcoin-cli` interface is much cleaner and simpler than trying to send RPC commands by hand, using `curl` or some other method. However, it also has limitations as to what you can ultimately do. @@ -182,7 +182,7 @@ For example `bitcoin-cli getnetworkinfo` gives you a variety of information on y $ bitcoin-cli getnetworkinfo { "version": 140000, - "subversion": "/Satoshi:0.14.0/", + "subversion": "/Satoshi:0.15.1/", "protocolversion": 70015, "localservices": "000000000000000d", "localrelay": false, @@ -196,14 +196,14 @@ $ bitcoin-cli getnetworkinfo "reachable": true, "proxy": "", "proxy_randomize_credentials": false - }, + }, { "name": "ipv6", "limited": false, "reachable": true, "proxy": "", "proxy_randomize_credentials": false - }, + }, { "name": "onion", "limited": true, @@ -232,4 +232,3 @@ The ~/.bitcoin directory contains all of your files, while `bitcoin-cli help` an ## What's Next? Continue "Understanding Your Bitcoin Setup" with [§3.3: Setting Up Your Wallet](03_3_Setting_Up_Your_Wallet.md). - From a0545b3bb89fbee70b47090a8e8635db75ff2180 Mon Sep 17 00:00:00 2001 From: Bruno Volpato Date: Tue, 12 Dec 2017 15:51:21 -0800 Subject: [PATCH 7/8] Update outputs from bitcoin-cli on 0.15.1 --- 03_2_Knowing_Your_Bitcoin_Setup.md | 83 +++++++++++++++++------------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/03_2_Knowing_Your_Bitcoin_Setup.md b/03_2_Knowing_Your_Bitcoin_Setup.md index 6e1b90a..089c310 100644 --- a/03_2_Knowing_Your_Bitcoin_Setup.md +++ b/03_2_Knowing_Your_Bitcoin_Setup.md @@ -32,57 +32,64 @@ Most of your early work will be done with the `bitcoin-cli` command, which offer $ bitcoin-cli help == Blockchain == getbestblockhash -getblock "hash" ( verbose ) +getblock "blockhash" ( verbosity ) getblockchaininfo getblockcount -getblockhash index +getblockhash height getblockheader "hash" ( verbose ) getchaintips +getchaintxstats ( nblocks blockhash ) getdifficulty getmempoolancestors txid (verbose) getmempooldescendants txid (verbose) getmempoolentry txid getmempoolinfo getrawmempool ( verbose ) -gettxout "txid" n ( includemempool ) +gettxout "txid" n ( include_mempool ) gettxoutproof ["txid",...] ( blockhash ) gettxoutsetinfo -verifychain ( checklevel numblocks ) +preciousblock "blockhash" +pruneblockchain +verifychain ( checklevel nblocks ) verifytxoutproof "proof" == Control == getinfo +getmemoryinfo ("mode") help ( "command" ) stop +uptime == Generating == -generate numblocks ( maxtries ) -generatetoaddress numblocks address (maxtries) +generate nblocks ( maxtries ) +generatetoaddress nblocks address (maxtries) == Mining == getblocktemplate ( TemplateRequest ) getmininginfo -getnetworkhashps ( blocks height ) -prioritisetransaction -submitblock "hexdata" ( "jsonparametersobject" ) +getnetworkhashps ( nblocks height ) +prioritisetransaction +submitblock "hexdata" ( "dummy" ) == Network == addnode "node" "add|remove|onetry" clearbanned -disconnectnode "node" -getaddednodeinfo dummy ( "node" ) +disconnectnode "[address]" [nodeid] +getaddednodeinfo ( "node" ) getconnectioncount getnettotals getnetworkinfo getpeerinfo listbanned ping -setban "ip(/netmask)" "add|remove" (bantime) (absolute) +setban "subnet" "add|remove" (bantime) (absolute) +setnetworkactive true|false == Rawtransactions == -createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,"data":"hex",...} ( locktime ) +combinerawtransaction ["hexstring",...] +createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,"data":"hex",...} ( locktime ) ( replaceable ) decoderawtransaction "hexstring" -decodescript "hex" +decodescript "hexstring" fundrawtransaction "hexstring" ( options ) getrawtransaction "txid" ( verbose ) sendrawtransaction "hexstring" ( allowhighfees ) @@ -91,55 +98,57 @@ signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","re == Util == createmultisig nrequired ["key",...] estimatefee nblocks -estimatepriority nblocks -estimatesmartfee nblocks -estimatesmartpriority nblocks +estimatesmartfee conf_target ("estimate_mode") signmessagewithprivkey "privkey" "message" -validateaddress "bitcoinaddress" -verifymessage "bitcoinaddress" "signature" "message" +validateaddress "address" +verifymessage "address" "signature" "message" == Wallet == abandontransaction "txid" +abortrescan addmultisigaddress nrequired ["key",...] ( "account" ) addwitnessaddress "address" backupwallet "destination" -dumpprivkey "bitcoinaddress" +bumpfee "txid" ( options ) +dumpprivkey "address" dumpwallet "filename" encryptwallet "passphrase" -getaccount "bitcoinaddress" +getaccount "address" getaccountaddress "account" getaddressesbyaccount "account" -getbalance ( "account" minconf includeWatchonly ) +getbalance ( "account" minconf include_watchonly ) getnewaddress ( "account" ) getrawchangeaddress getreceivedbyaccount "account" ( minconf ) -getreceivedbyaddress "bitcoinaddress" ( minconf ) -gettransaction "txid" ( includeWatchonly ) +getreceivedbyaddress "address" ( minconf ) +gettransaction "txid" ( include_watchonly ) getunconfirmedbalance getwalletinfo importaddress "address" ( "label" rescan p2sh ) -importprivkey "bitcoinprivkey" ( "label" rescan ) +importmulti "requests" ( "options" ) +importprivkey "privkey" ( "label" ) ( rescan ) importprunedfunds importpubkey "pubkey" ( "label" rescan ) importwallet "filename" keypoolrefill ( newsize ) -listaccounts ( minconf includeWatchonly) +listaccounts ( minconf include_watchonly) listaddressgroupings listlockunspent -listreceivedbyaccount ( minconf includeempty includeWatchonly) -listreceivedbyaddress ( minconf includeempty includeWatchonly) -listsinceblock ( "blockhash" target-confirmations includeWatchonly) -listtransactions ( "account" count from includeWatchonly) -listunspent ( minconf maxconf ["address",...] ) +listreceivedbyaccount ( minconf include_empty include_watchonly) +listreceivedbyaddress ( minconf include_empty include_watchonly) +listsinceblock ( "blockhash" target_confirmations include_watchonly include_removed ) +listtransactions ( "account" count skip include_watchonly) +listunspent ( minconf maxconf ["addresses",...] [include_unsafe] [query_options]) +listwallets lockunspent unlock ([{"txid":"txid","vout":n},...]) move "fromaccount" "toaccount" amount ( minconf "comment" ) removeprunedfunds "txid" -sendfrom "fromaccount" "tobitcoinaddress" amount ( minconf "comment" "comment-to" ) -sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] ) -sendtoaddress "bitcoinaddress" amount ( "comment" "comment-to" subtractfeefromamount ) -setaccount "bitcoinaddress" "account" +sendfrom "fromaccount" "toaddress" amount ( minconf "comment" "comment_to" ) +sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] replaceable conf_target "estimate_mode") +sendtoaddress "address" amount ( "comment" "comment_to" subtractfeefromamount replaceable conf_target "estimate_mode") +setaccount "address" "account" settxfee amount -signmessage "bitcoinaddress" "message" +signmessage "address" "message" ``` You can also type `bitcoin help [command]` to get even more extensive info on that command. For example: ``` @@ -181,7 +190,7 @@ For example `bitcoin-cli getnetworkinfo` gives you a variety of information on y ``` $ bitcoin-cli getnetworkinfo { - "version": 140000, + "version": 150100, "subversion": "/Satoshi:0.15.1/", "protocolversion": 70015, "localservices": "000000000000000d", From c49eca8e779d95a621de58da525b8df24b24b230 Mon Sep 17 00:00:00 2001 From: kallewoof Date: Wed, 13 Dec 2017 15:25:25 +0900 Subject: [PATCH 8/8] Update 12_5_Accessing_Bitcoind_with_Other_Languages.md --- 12_5_Accessing_Bitcoind_with_Other_Languages.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/12_5_Accessing_Bitcoind_with_Other_Languages.md b/12_5_Accessing_Bitcoind_with_Other_Languages.md index 6436a99..e201f51 100644 --- a/12_5_Accessing_Bitcoind_with_Other_Languages.md +++ b/12_5_Accessing_Bitcoind_with_Other_Languages.md @@ -21,15 +21,14 @@ sudo apt-get install mocha -g ``` ### Set Up BCRPC -You should next download BCRPC from the [BCRPC Repository](https://github.com/dgarage/bcrpc). Clone it or download it, as you prefer. - -Once you've done that, you can finish setting it up: +Create a new node.js project and install BCRPC via NPM. ``` -$ unzip bcrpc-master.zip -$ cd bcrpc-master -$ npm install +$ mkdir myproject +$ cd myproject +$ npm init +[...] +$ npm install --save bcrpc ``` - ### Test BCRPC To test the BCRPC package, you must first set environmental variables for your rpcuser and rpcpassword. As noted in [§12.1: Accessing Bitcoind with Curl](12_1_Accessing_Bitcoind_with_Curl.md), these come from `~/.bitcoin/bitcoin.conf`.