mirror of
https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
synced 2026-02-16 22:22:58 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c255772c9 | ||
|
|
10e5ab07a2 | ||
|
|
8ed1d366a3 | ||
|
|
f869df0308 | ||
|
|
afcfa10be2 | ||
|
|
abac2c5e7c | ||
|
|
24ed516926 | ||
|
|
5cbfa18ad8 |
@ -1,6 +1,6 @@
|
|||||||
# 2.1: Setting Up a Bitcoin-Core VPS with Bitcoin Standup
|
# 2.1: Setting Up a Bitcoin-Core VPS with Bitcoin Standup
|
||||||
|
|
||||||
This document explains how to set up a VPS (Virtual Private Sever) to run a Bitcoin node on Linode.com, installed using an automated StackScript from the [Bitcoin Standup project](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts). You just need to enter a few commands and boot your VPS. Almost immediately after you boot, you'll find your new Bitcoin node happily downloading blocks.
|
This document explains how to set up a VPS (Virtual Private Sever) to run a Bitcoin node on Linode.com using an automated StackScript from the [Bitcoin Standup project](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts). You just need to enter a few commands and boot your VPS. Almost immediately after you boot, you'll find your new Bitcoin node happily downloading blocks.
|
||||||
|
|
||||||
> :warning: **WARNING:** Don’t use a VPS for a bitcoin wallet with significant real funds; see http://blog.thestateofme.com/2012/03/03/lessons-to-be-learned-from-the-linode-bitcoin-incident/ . It is very nice to be able experiment with real bitcoin transactions on a live node without tying up a self-hosted server on a local network. It's also useful to be able to use an iPhone or iPad to communicate via SSH to your VPS to do some simple bitcoin tasks. But a higher level of safety is required for significant funds.
|
> :warning: **WARNING:** Don’t use a VPS for a bitcoin wallet with significant real funds; see http://blog.thestateofme.com/2012/03/03/lessons-to-be-learned-from-the-linode-bitcoin-incident/ . It is very nice to be able experiment with real bitcoin transactions on a live node without tying up a self-hosted server on a local network. It's also useful to be able to use an iPhone or iPad to communicate via SSH to your VPS to do some simple bitcoin tasks. But a higher level of safety is required for significant funds.
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ This document explains how to set up a VPS (Virtual Private Sever) to run a Bitc
|
|||||||
|
|
||||||
## Getting Started with Linode
|
## Getting Started with Linode
|
||||||
|
|
||||||
Linode is a Cloud Hosting service that offers quick, cheap Linux servers with SSD storage. We use them for this tutorial primarily because their BASH-driven StackScripts offer an easy way to automatically set up a Bitcoin node with no fuss and no muss.
|
Linode (now Akamai Cloud) is a Cloud Hosting service that offers quick, cheap Linux servers with SSD storage. We use them for this tutorial primarily because their BASH-driven StackScripts offer an easy way to automatically set up a Bitcoin node with no fuss and no muss.
|
||||||
|
|
||||||
### Set Up a Linode Account
|
### Set Up a Linode Account
|
||||||
|
|
||||||
@ -26,75 +26,75 @@ If you prefer, the following referral code will give you two months worth of fre
|
|||||||
|
|
||||||
You'll need to provide an email address and later preload money from a credit card or PayPal for future costs.
|
You'll need to provide an email address and later preload money from a credit card or PayPal for future costs.
|
||||||
|
|
||||||
When you're done, you should land on [https://cloud.linode.com/dashboard](https://cloud.linode.com/dashboard).
|
When you're done, you should land on [https://cloud.linode.com/linodes](https://cloud.linode.com/linodes).
|
||||||
|
|
||||||
### Consider Two-Factor Authentication
|
### Consider Two-Factor Authentication
|
||||||
|
|
||||||
Your server security won't be complete if people can break into your Linode account, so consider setting up Two-Factor Authentication for it. You can find this setting on your [My Profile: Password & Authentication page](https://manager.linode.com/profile/auth). If you don't do this now, make a TODO item to come back and do it later.
|
Your server security won't be complete if people can break into your Linode account, so consider setting up Two-Factor Authentication for it. You can find this setting on your [My Profile: Password & Authentication page](https://cloud.linode.com/profile/auth). If you don't do this now, make a TODO item to come back and do it later.
|
||||||
|
|
||||||
## Creating the Linode Image using a StackScript
|
## Creating the Linode Image using a StackScript
|
||||||
|
|
||||||
### Load the StackScript
|
### Load the StackScript
|
||||||
|
|
||||||
Download the [Linode Standup Script](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts/blob/master/Scripts/LinodeStandUp.sh) from the [Bitcoin Standup Scripts repo](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts). This script basically automates all Bitcoin VPS setup instructions. If you want to be particulary prudent, read it over carefully. If you are satisfied, you can copy that StackScript into your own account by going to the [Stackscripts page](https://cloud.linode.com/stackscripts?type=account) on your Linode account and selecting to [Create New Stackscript](https://cloud.linode.com/stackscripts/create). Give it a good name (we use `Bitcoin Standup`), then copy and paste the script. Choose Debian 12 for your target image and "Save" it.
|
Download the [Linode Standup Script](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts/blob/master/Scripts/LinodeStandUp.sh) from the [Bitcoin Standup Scripts repo](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts). This script basically automates all Bitcoin VPS setup instructions. If you want to be particulary prudent, read it over carefully. If you are satisfied, you can copy that StackScript into your own account by going to the [Stackscripts page](https://cloud.linode.com/stackscripts) on your Linode account and selecting to [Create New Stackscript](https://cloud.linode.com/stackscripts/create). Give it a good name (we use `Bitcoin Standup`), then copy and paste the script. Choose Debian 13 for your target image and "Save" it.
|
||||||
|
|
||||||
### Do the Initial Setup
|
### Do the Initial Setup
|
||||||
|
|
||||||
You're now ready to create a node based on the Stackscript.
|
You're now ready to create a node based on the Stackscript.
|
||||||
|
|
||||||
1. On the [Stackscripts page](https://cloud.linode.com/stackscripts?type=account), click on the "..." to the right of your new script and choose "Deploy New Linode".
|
1. On the [Stackscripts page](https://cloud.linode.com/stackscripts?type=account), click on the "..." to the right of your new script and choose "Deploy New Linode".
|
||||||
2. Fill in a short and a fully qualified hostname
|
2. Enter the password for the "standup" user. This will be the account that runs `bitcoind`.
|
||||||
|
3. Fill in a short and a fully qualified hostname
|
||||||
* **Short Hostname.** Pick a name for your VPS. For example, "mybtctest".
|
* **Short Hostname.** Pick a name for your VPS. For example, "mybtctest".
|
||||||
* **Fully Qualified Hostname.** If you're going to include this VPS as part of a network with full DNS records, type in the hostname with its domain. For example, "mybtctest.mydomain.com". Otherwise, just repeat the short hostname and add ".local", for example "mybtctest.local".
|
* **Fully Qualified Hostname.** If you're going to include this VPS as part of a network with full DNS records, type in the hostname with its domain. For example, "mybtctest.mydomain.com". Otherwise, just repeat the short hostname and add ".local", for example "mybtctest.local".
|
||||||
3. Enter the password for the "standup" user.
|
|
||||||
4. Fill in the appropriate advanced options.
|
4. Fill in the appropriate advanced options.
|
||||||
* **X25519 Public Key.** This is a public key to add to Tor's list of authorized clients. If you don't use it, anyone who gets the QR code for your node can access it. You'll get this public key from whichever client you're using to connect to your node. For example, if you use [FullyNoded 2](https://github.com/BlockchainCommons/FullyNoded-2), you can go to its settings and "Export Tor V3 Authentication Public Key" for use here.
|
* **Installation Type.** This is likely "Mainnet" or "Pruned Mainnet" if you are setting up a node for usage and "Signet" or "Pruned Signet" if you're just playing around. The bulk of this tutorial will assume you chose "Pruned Signet", but you should still be able to follow along with other types. See the [Synopsis](#synopsis-bitcoin-installation-types) for more information on these options. (Note that if you plan to try out the Lightning chapters, you'll probably want to use an Unpruned node, as working with Pruned nodes on Lightning is iffy. See [§18.1](18_1_Verifying_Your_Lightning_Setup.md#compiling-the-source-code) for the specifics.)
|
||||||
* **Installation Type.** This is likely "Mainnet" or "Pruned Mainnet" if you are setting up a node for usage and "Testnet" or "Pruned Testnet" if you're just playing around. The bulk of this tutorial will assume you chose "Pruned Testnet", but you should still be able to follow along with other types. See the [Synopsis](#synopsis-bitcoin-installation-types) for more information on these options. (Note that if you plan to try out the Lightning chapters, you'll probably want to use an Unpruned node, as working with Pruned nodes on Lightning is iffy. See [§18.1](18_1_Verifying_Your_Lightning_Setup.md#compiling-the-source-code) for the specifics.)
|
* **Timezone.** The timezone your machine is set to.
|
||||||
* **SSH Key.** Copy your local computer's SSH key here; this allows you be able to automatically login in via SSH to the standup 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.
|
* **Security: Tor X25519 Public Key.** This is a public key to add to Tor's list of authorized clients. If you don't use it, anyone who gets the QR code for your node can access it. You'll get this public key from whichever client you're using to connect to your node. For example, if you use [FullyNoded 2](https://github.com/BlockchainCommons/FullyNoded-2), you can go to its settings and "Export Tor V3 Authentication Public Key" for use here.
|
||||||
* **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.
|
* **Security: Standup SSH Key.** Copy your local computer's SSH key here; this allows you be able to automatically login in via SSH to the standup 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/). Using an SSH key will give you a simpler and safer way to log in to your server.
|
||||||
|
* **Security: 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.
|
||||||
|
* **Cypherpunkpay.** These are options to install Cypherpunkpay on your server. They're primarily intended for other users of the Standup software and aren't used in this course, so you can just leave them be.
|
||||||
|
4. Choose a region for where the Linode will be located.
|
||||||
5. Select an Image
|
5. Select an Image
|
||||||
* **Target Image.** If you followed the instructions, this will only allow you to select "Debian 12" (though previous versions of this Stackscript worked with Debian 9 or 10 or 12 and might still).
|
* **Target Image.** If you followed the instructions, this will only allow you to select "Debian 13" (though previous versions of this Stackscript worked with Debian 9 through 12, and might still.)
|
||||||
6. Choose a region for where the Linode will be located.
|
|
||||||
|
|
||||||
*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.*
|
|
||||||
|
|
||||||
### Choose Other Standup Options
|
|
||||||
|
|
||||||
Blockchain Commons is currently in the process of expanding its Bitcoin Standup Scripts with options to install Lightning and other Bitcoin apps of note. Take a look at any extra options, and see if they're things that you'd like to play with. In particular, if Lightning is an option, we suggest installing it, because it will make [Chapter 18](18_0_Understanding_Your_Lightning_Setup.md) and [Chapter 19](19_0_Using_Lightning.md) much easier.
|
|
||||||
|
|
||||||
### Choose a Linode Plan
|
### Choose a Linode Plan
|
||||||
|
|
||||||
You'll next to choose a Linode plan.
|
You'll next need to choose a Linode plan.
|
||||||
|
|
||||||
Linode will default to Dedicated-CPU plans, but you can select the more cost-efficient Shared-CPU instead. A Shared-CPU Linode 4GB will suffice for most setups, including: Pruned Mainnet, Pruned Testnet, and even non-Pruned Testnet. They all use less than 50G of storage and 4GB is a comfortable amount of memory. This is the setup we suggest. It runs $20 per month.
|
Linode will default to Dedicated-CPU plans, but you can select the more cost-efficient Shared-CPU instead. A Shared-CPU Linode 4GB will suffice for most setups, including: Pruned Mainnet, Pruned Testnet, Pruned Signet, and even non-Pruned Signet. They all use less than 50G of storage and 4GB is a comfortable amount of memory. This is the setup we suggest. It runs $20 per month.
|
||||||
|
|
||||||
If you want to instead have a non-Pruned Mainnet in a VPS, you'll need to install a Linode with a disk in excess of 280G(!), which is currently the Linode 16GB, which has 320G of storage and 16G of memory and costs approximately $80 per month. We do _not_ suggest this.
|
If you want to instead have a non-Pruned Mainnet in a VPS, you'll need to install a Linode with a disk in excess of 715G(!), which is currently the Linode 64 GB, which has 1280G of storage and 64G of memory and costs approximately $384 per month. We do _not_ suggest this. (But see below for alternatives.)
|
||||||
|
|
||||||
The following chart shows minimum requirements
|
The following chart shows minimum requirements
|
||||||
|
|
||||||
| Setup | Memory | Storage | Linode |
|
| Setup | Memory | Storage | Linode |
|
||||||
|-------|--------|---------|---------|
|
|-------|--------|---------|---------|
|
||||||
| Mainnet | 2G | 280G | Linode 16GB |
|
| Mainnet | 2G | ~715G | Linode 64GB |
|
||||||
| Pruned Mainnet | 2G | ~5G | Linode 4GB |
|
| Pruned Mainnet | 2G | ~5G | Linode 4GB |
|
||||||
| Testnet | 2G | ~15G | Linode 4GB |
|
| Signet | 2G | ~15G | Linode 4GB |
|
||||||
|
| Pruned Signet | 2G | ~5G | Linode 4GB |
|
||||||
|
| Testnet | 2G | ~170G | Linode 16GB |
|
||||||
| Pruned Testnet | 2G | ~5G | Linode 4GB |
|
| Pruned Testnet | 2G | ~5G | Linode 4GB |
|
||||||
| Regtest | 2G | ~ | Linode 4GB |
|
| Regtest | 2G | ~ | Linode 4GB |
|
||||||
|
|
||||||
Note, there may be ways to reduce both costs.
|
Note, there may be ways to reduce both costs.
|
||||||
|
|
||||||
* For the machines we suggest as **Linode 4GB**, you may be able to reduce that to a Linode 2GB. Some versions of Bitcoin Core have worked well at that size, some have occasionally run out of memory and then recovered, and some have continuously run out of memory. Remember to up that swap space to maximize the odds of this working. Use at your own risk.
|
* For the setups we suggest as **Linode 4GB**, you may be able to reduce that to a Linode 2GB. Some versions of Bitcoin Core have worked well at that size, some have occasionally run out of memory and then recovered, and some have continuously run out of memory. Remember to up that swap space to maximize the odds of this working. Use at your own risk.
|
||||||
* For the Unpruned Mainnet, which we suggest as a **Linode 16GB**, you can probably get by with a Linode 4GB, but add [Block Storage](https://cloud.linode.com/volumes) sufficient to store the blockchain. This is certainly a better long-term solution since the Bitcoin blockchain's storage requirements continuously increase if you don't prune, while the CPU requirements don't (or don't to the same degree). A 320 GibiByte storage would be $32 a month, which combined with a Linode 4GB is $52 a month, instead of $80, and more importantly you can keep growing it. We don't fully document this setup for two reasons (1) we don't suggest the unpruned mainnet setup, and so we suspect it's a much less common setup; and (2) we haven't tested how Linodes volumes compare to their intrinic SSDs for performance and usage. But there's full documentation on the Block Storage page. You'd need to set up the Linode, run its stackscript, but then interrupt it to move the blockchain storage overly to a newly commissioned volume before continuing.
|
* For the Unpruned Mainnet, which we suggest as a **Linode 64GB**, you can probably get by with a Linode 4GB, but add [Block Storage](https://cloud.linode.com/volumes/create) sufficient to store the blockchain. This is certainly a better long-term solution since the Bitcoin blockchain's storage requirements continuously increase if you don't prune, while the CPU requirements don't (or don't to the same degree). A 750 GibiByte storage would be $75 a month, which combined with a Linode 4GB is $95 a month, instead of $384, and more importantly you can keep growing it. We don't fully document this setup for two reasons (1) we don't suggest the unpruned mainnet setup, and so we suspect it's a much less common setup; and (2) we haven't tested how Linodes volumes compare to their intrinic SSDs for performance and usage. But there's full documentation on the Block Storage page. You'd need to set up the Linode, run its stackscript, but then interrupt it to move the blockchain storage over to a newly commissioned volume before continuing.
|
||||||
|
|
||||||
If you are running a deployment that will be transacting real Bitcoins, you may want to alternatively consider a Dedicated-CPU Linode, which tends to run 50% more expensive than the Shared-CPU Linode. We've generally found the Shared CPUs to be entirely sufficient, but for a wide deployment, you may wish to consider higher levels of reliability.
|
If you are running a deployment that will be transacting real Bitcoins, you may want to alternatively consider a Dedicated-CPU Linode, which tends to run 50% more expensive than the Shared-CPU Linode. We've generally found the Shared CPUs to be entirely sufficient, but for a wide deployment, you may wish to consider higher levels of reliability.
|
||||||
|
|
||||||
### Do the Final Setup
|
### Do the Final Setup
|
||||||
|
|
||||||
The last thing you need to do is enter a root password. (If you missed anything, you'll be told so now!)
|
You may now want to change your Linode VPS's name from the default `linodexxxxxxxx`. For instance you might name it `bitcoin-signet-pruned` to differentiate it from other VPSs in your account.
|
||||||
|
|
||||||
|
The last thing you need to do is enter a root password. (If you missed anything, you'll be told so now!). You'll also have the option to add an SSH key for the root user aat this point. We again suggest doing so for both security and convenience purposes.
|
||||||
|
|
||||||
|
Linode at this point offers a few choices that have changed over time, but currently include: disk encryption, VPC, firewall, and VLAN. These are generally security features that you would want to consider for a real-world deployment, but don't need to worry about for a testing deployment. (We'd suggest at least a firewall and the disk encryption for a real-world deployment, but we leave that to you and your security people.)
|
||||||
|
|
||||||
Click "Deploy" to initialize your disks and to prepare your VPS. The whole queue should run in less than a minute. When it's done you should see in the "Host Job Queue", green "Success" buttons stating "Disk Create from StackScript - Setting password for root… done." and "Create Filesystem - 256MB Swap Image".
|
Click "Deploy" to initialize your disks and to prepare your VPS. The whole queue should run in less than a minute. When it's done you should see in the "Host Job Queue", green "Success" buttons stating "Disk Create from StackScript - Setting password for root… done." and "Create Filesystem - 256MB Swap Image".
|
||||||
|
|
||||||
You may now want to change your Linode VPS's name from the default `linodexxxxxxxx`. Go to the Settings tab, and change the label to be more useful, such as your VPS's short hostname. For instance you might name it `bitcoin-testnet-pruned` to differentiate it from other VPSs in your account.
|
|
||||||
|
|
||||||
## Login to Your VPS
|
## Login to Your VPS
|
||||||
|
|
||||||
If you watch your Linode control panel, you should see the new computer spin up. When the job has reached 100%, you'll be able to login.
|
If you watch your Linode control panel, you should see the new computer spin up. When the job has reached 100%, you'll be able to login.
|
||||||
@ -135,7 +135,9 @@ At that point, your home directory should look like this:
|
|||||||
|
|
||||||
```
|
```
|
||||||
$ ls
|
$ ls
|
||||||
bitcoin-22.0-x86_64-linux-gnu.tar.gz keys.txt SHA256SUMS SHA256SUMS.asc
|
bitcoin-30.2-x86_64-linux-gnu.tar.gz wget-btc-output.txt
|
||||||
|
SHA256SUMS wget-btc-sha-asc-output.txt
|
||||||
|
SHA256SUMS.asc wget-btc-sha-output.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
These are the various files that were used to install Bitcoin on your VPS. _None_ of them are necessary. We've just left them in case you want to do any additional verification. Otherwise, you can delete them:
|
These are the various files that were used to install Bitcoin on your VPS. _None_ of them are necessary. We've just left them in case you want to do any additional verification. Otherwise, you can delete them:
|
||||||
@ -155,24 +157,23 @@ $ sudo grep VERIFICATION /standup.log
|
|||||||
If you see something like the following, all should be well:
|
If you see something like the following, all should be well:
|
||||||
|
|
||||||
```
|
```
|
||||||
./standup.sh - SIG VERIFICATION SUCCESS: 9 GOOD SIGNATURES FOUND.
|
/root/StackScript - SIG VERIFICATION SUCCESS: 8 GOOD SIGNATURES FOUND.
|
||||||
./standup.sh - SHA VERIFICATION SUCCESS / SHA: bitcoin-22.0-x86_64-linux-gnu.tar.gz: OK
|
/root/StackScript - SHA VERIFICATION SUCCESS / SHA: bitcoin-30.2-x86_64-linux-gnu.tar.gz: OK
|
||||||
```
|
```
|
||||||
If either of those two checks instead reads "VERIFICATION ERROR", then there's a problem.
|
If either of those two checks instead reads "VERIFICATION ERROR", then there's a problem.
|
||||||
|
|
||||||
The log also contains more information on the Signatures, if you want to make sure you know _who_ signed the Bitcoin release:
|
The log also contains more information on the Signatures, if you want to make sure you know _who_ signed the Bitcoin release:
|
||||||
```
|
```
|
||||||
$ sudo grep -i good /standup.log
|
$ sudo grep -i good /standup.log
|
||||||
./standup.sh - SIG VERIFICATION SUCCESS: 9 GOOD SIGNATURES FOUND.
|
/root/StackScript - SIG VERIFICATION SUCCESS: 8 GOOD SIGNATURES FOUND.
|
||||||
gpg: Good signature from "Andrew Chow (Official New Key) <achow101@gmail.com>" [unknown]
|
gpg: Good signature from ".0xB10C <b10c@b10c.me>" [unknown]
|
||||||
gpg: Good signature from "Ben Carman <benthecarman@live.com>" [unknown]
|
gpg: Good signature from "Ava Chow <me@achow101.com>" [unknown]
|
||||||
gpg: Good signature from "Antoine Poinsot <darosior@protonmail.com>" [unknown]
|
|
||||||
gpg: Good signature from "Stephan Oeste (it) <it@oeste.de>" [unknown]
|
gpg: Good signature from "Stephan Oeste (it) <it@oeste.de>" [unknown]
|
||||||
gpg: Good signature from "Michael Ford (bitcoin-otc) <fanquake@gmail.com>" [unknown]
|
gpg: Good signature from "Michael Ford (bitcoin-otc) <fanquake@gmail.com>" [unknown]
|
||||||
gpg: Good signature from "Oliver Gugger <gugger@gmail.com>" [unknown]
|
gpg: Good signature from "Oliver Gugger <gugger@gmail.com>" [unknown]
|
||||||
gpg: Good signature from "Hennadii Stepanov (hebasto) <hebasto@gmail.com>" [unknown]
|
gpg: Good signature from "Hennadii Stepanov (GitHub key) <32963518+hebasto@users.noreply.github.com>" [unknown]
|
||||||
gpg: Good signature from "Jon Atack <jon@atack.com>" [unknown]
|
gpg: Good signature from "Matthew Zipkin (GitHub Signing Key) <pinheadmz@gmail.com>" [unknown]
|
||||||
gpg: Good signature from "Wladimir J. van der Laan <laanwj@visucore.com>" [unknown]
|
gpg: Good signature from "Sjors Provoost <sjors@sprovoost.nl>" [unknown]
|
||||||
```
|
```
|
||||||
Since this is all scripted, it's possible that there's just been a minor change that has caused the script's checks not to work right. (This has happened a few times over the existence of the script that became Standup.) But, it's also possible that someone is trying to encourage you to run a fake copy of the Bitcoin daemon. So, _be very sure you know what happened before you make use of Bitcoin!_
|
Since this is all scripted, it's possible that there's just been a minor change that has caused the script's checks not to work right. (This has happened a few times over the existence of the script that became Standup.) But, it's also possible that someone is trying to encourage you to run a fake copy of the Bitcoin daemon. So, _be very sure you know what happened before you make use of Bitcoin!_
|
||||||
|
|
||||||
@ -196,7 +197,7 @@ If all look good, congratulations, you have a functioning Bitcoin node using Lin
|
|||||||
|
|
||||||
## What We Have Wrought
|
## What We Have Wrought
|
||||||
|
|
||||||
Although the default Debian 12 image that we are using for your VPS has been modified by Linode to be relatively secure, your Bitcoin node as installed through the Linode StackScript is set up with an even higher level of security. You may find this limiting, or be unable to do things that you expect. Here are a few notes on that:
|
Although the default Debian 13 image that we are using for your VPS has been modified by Linode to be relatively secure, your Bitcoin node as installed through the Linode StackScript is set up with an even higher level of security. You may find this limiting, or be unable to do things that you expect. Here are a few notes on that:
|
||||||
|
|
||||||
### Protected Services
|
### Protected Services
|
||||||
|
|
||||||
@ -235,9 +236,9 @@ So now you probably want to play with Bitcoin!
|
|||||||
But wait, your Bitcoin daemon is probably still downloading blocks. The `bitcoin-cli getblockcount` will tell you how you're currently doing:
|
But wait, your Bitcoin daemon is probably still downloading blocks. The `bitcoin-cli getblockcount` will tell you how you're currently doing:
|
||||||
```
|
```
|
||||||
$ bitcoin-cli getblockcount
|
$ bitcoin-cli getblockcount
|
||||||
1771352
|
288191
|
||||||
```
|
```
|
||||||
If it's different every time you type the command, you need to wait before working with Bitcoin. This takes 1-6 hours currently for a pruned setup, depending on your precise machine.
|
If it's different every time you type the command, you need to wait before working with Bitcoin. This can take hours for a mainnet setup, but if you're using our suggested setup of pruned signet, it should be done in 15 minutes or so.
|
||||||
|
|
||||||
But, once it settles at a number, you're ready to continue!
|
But, once it settles at a number, you're ready to continue!
|
||||||
|
|
||||||
@ -262,7 +263,11 @@ You have a few options for what's next:
|
|||||||
|
|
||||||
**Pruned Mainnet.** This will cut the blockchain you're storing down to just the last 550 blocks. If you're not mining or running some other Bitcoin service, this should be plenty for validation.
|
**Pruned Mainnet.** This will cut the blockchain you're storing down to just the last 550 blocks. If you're not mining or running some other Bitcoin service, this should be plenty for validation.
|
||||||
|
|
||||||
**Testnet.** This gives you access to an alternative Bitcoin blockchain where the Bitcoins don't actually have value. It's intended for experimentation and testing.
|
**Signet.** This is the newest iteration of a testing network, where Bitcoins don't actually have value, and has largely surpassed Testnet. It's intended for experimentation and testing. Its big advantage is that its block production is more reliable that Testnet, where Testnet could stall out for a while, then produce a bunch of blocks together.
|
||||||
|
|
||||||
|
**Pruned Signet.** The last 550 blocks of Signet.
|
||||||
|
|
||||||
|
**Testnet.** The older testing network, still useful to some for the ability for miners to force block reorgs (and likely for other specific testing purposes). It's currently `testnet3`, but we expect it to be updated to `testnet4` in the near future (which should drop down the current large size of the blockchain).
|
||||||
|
|
||||||
**Pruned Testnet.** This is just the last 550 blocks of Testnet ... because the Testnet blockchain is pretty big now too.
|
**Pruned Testnet.** This is just the last 550 blocks of Testnet ... because the Testnet blockchain is pretty big now too.
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,9 @@ Your host's timezone is stored in `/etc/timezone`, then an appropriate file from
|
|||||||
|
|
||||||
## Step 3: Updating Debian
|
## Step 3: Updating Debian
|
||||||
|
|
||||||
The `apt-get` package manager is used to bring your machine up to date and to install `gnupg`, the random-number generator `haveged`, and the uncomplicated firewall `ufw`.
|
The `apt-get` package manager is used to bring your machine up to date and to install `gnupg`, `git`, the random-number generators `haveged` and `xxd`, and the uncomplicated firewall `ufw`.
|
||||||
|
|
||||||
|
The `apt-get` commands are run with `-y`, which should force all questions to be answered "yes", and allow the script to be run without interaction (e.g., as a StackScript). That failed with the Debian 13 update, with some questions going unanswered and locking up the script, so the `-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"` options were added to say, "We're really serious, no questions!"
|
||||||
|
|
||||||
Your machine is setup to automatically stay up to date with `echo "unattended-upgrades unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections`.
|
Your machine is setup to automatically stay up to date with `echo "unattended-upgrades unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections`.
|
||||||
|
|
||||||
@ -20,7 +22,7 @@ Your machine is setup to automatically stay up to date with `echo "unattended-up
|
|||||||
|
|
||||||
A `standup` user is created, which will be used for your Bitcoin applications. It also has `sudo` permissions, allowing you to take privileged actions with this account.
|
A `standup` user is created, which will be used for your Bitcoin applications. It also has `sudo` permissions, allowing you to take privileged actions with this account.
|
||||||
|
|
||||||
If you supplied an SSH key, it will allow you access to this account (otherwise, you must use the password you created in setup).
|
If you supplied a Standup SSH key, it will allow you access to this account (otherwise, you must use the password you created in setup).
|
||||||
|
|
||||||
If you supplied an IP address, `ssh` access will be limited to that address, per `/etc/hosts.allow`.
|
If you supplied an IP address, `ssh` access will be limited to that address, per `/etc/hosts.allow`.
|
||||||
|
|
||||||
|
|||||||
13
README.md
13
README.md
@ -1,4 +1,4 @@
|
|||||||
# Learning Bitcoin from the Command Line 2.2.0
|
# Learning Bitcoin from the Command Line 2.2.2
|
||||||
### _by Christopher Allen and Shannon Appelcline_
|
### _by Christopher Allen and Shannon Appelcline_
|
||||||
|
|
||||||

|

|
||||||
@ -157,11 +157,18 @@ If you'd like to make your own translation, please see [Contributing](https://gi
|
|||||||
|
|
||||||
## Status - Beta
|
## Status - Beta
|
||||||
|
|
||||||
v2.1.0 of **Learning Bitcoin from the Command Line** is feature complete and has undergone full editing and integration. It is ready for learning
|
v2.2.2 of **Learning Bitcoin from the Command Line** is feature complete and has undergone full editing and integration. It is ready for learning. However, it is out-of-date, focused on Bitcoin Core 22.0. We are currently working on [v3.0](TODO-30.md) of the course, for release toward the end of 2026. If you'd like to support work of that sort, become a [GitHub Sponsor](https://github.com/sponsors/BlockchainCommons) or support us at our [BTCPay Server](https://btcpay.blockchaincommons.com/), and let us know that **Learning Bitcoin** was the reason why.
|
||||||
|
|
||||||
We are also tentatively considering what we could include in a [v3.0](TODO-30.md) of the course. If you'd like to support work of that sort, become a [GitHub Sponsor](https://github.com/sponsors/BlockchainCommons) or support us at our [BTCPay Server](https://btcpay.blockchaincommons.com/), and let us know that **Learning Bitcoin** was the reason why.
|
|
||||||
### Version History
|
### Version History
|
||||||
|
|
||||||
|
#### 2.2.2 (January 22, 2026)
|
||||||
|
|
||||||
|
* Updated §2.1 and Appendix 1 to accomodate recent updates to [Bitcoin-Standup-Scripts](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts) as well as changes to the Linode interface.
|
||||||
|
|
||||||
|
#### 2.2.1 (January 15, 2026)
|
||||||
|
|
||||||
|
* Incorporation of PRs and Issues, to close out previous iteration of course, in prep for big 3.0 update.
|
||||||
|
|
||||||
#### 2.2.0 (November 17, 2021)
|
#### 2.2.0 (November 17, 2021)
|
||||||
|
|
||||||
* [Portuguese translation](https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line/tree/master/pt)
|
* [Portuguese translation](https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line/tree/master/pt)
|
||||||
|
|||||||
137
TODO-20.md
137
TODO-20.md
@ -1,137 +0,0 @@
|
|||||||
# Todo List for v2.0 of Learning Bitcoin
|
|
||||||
|
|
||||||
This is a list of potential (or planned) TODO items for "Learning Bitcoin from the Command Line". Many are drawn from issues found at the previous locale of this repo.
|
|
||||||
|
|
||||||
**Updating Work Begun:** 6/10
|
|
||||||
**Updating Work Done:** 10/27
|
|
||||||
**Pending Issues:** Third-party edit of whole course
|
|
||||||
|
|
||||||
Please also see [TODO-30.md](the v3.0 TODO) for the next iteration of the course.
|
|
||||||
|
|
||||||
## 1. Integrate with Bitcoin-Standup
|
|
||||||
|
|
||||||
Replace our current scripts with Bitcoin Standup (which was based on those scripts)
|
|
||||||
|
|
||||||
1. <strike>Fix Verification errors in Bitcoin Standup Scripts</strike> **6/10**
|
|
||||||
* <strike>Fix IPADDR error in Bitcoin Standup Scripts</strike> **6/10**
|
|
||||||
2. <strike>Upgrade Bitcoin Standup Scripts to Debian 10</strike> **6/16**
|
|
||||||
3. <strike>Upgrade Bitcoin Standup Scripts to Bitcoin 0.20</strike> **6/16**
|
|
||||||
4. <strike>Ensure Bitcoin Standup covers everything else in previous scripts</strike> **6/16**
|
|
||||||
5. <strike>Rewrite the StackScript chapter</strike> **6/16**
|
|
||||||
6. <strike>Rewrite the "by-hand" chapter to match Bitcoin Standup</strike> **7/27**
|
|
||||||
* <strike>Write New Appendix 1</strike> **7/27**
|
|
||||||
* <strike>Revise All Chapter Ordering for Cut §2.1</strike> **7/27**
|
|
||||||
7. <strike>Reintroduce aliases after setup</strike> **6/19**
|
|
||||||
8. <strike>Figure out what to do about the old `btcblock` on testnet, where there seems to be no CLI way to determine blockheight.</strike> **No Known Solution on Testnet**
|
|
||||||
|
|
||||||
## 2. Upgrade to 0.20
|
|
||||||
|
|
||||||
9. <strike>Walk through chapters 1-6, making sure all commands work with Bitcoin Core 0.20 (and changing them if not). Redo the output of all examples.</strike> **6/19**, **6/23**, **6/30**
|
|
||||||
* <strike>Edit Chapter 0</strike> **6/19**
|
|
||||||
* <strike>Edit Chapter 1</strike> **6/19**
|
|
||||||
* <strike>Re-edit Chapter 2</strike> **6/19**
|
|
||||||
* <strike>Edit & Check Chapter 3</strike> **6/19**
|
|
||||||
* <strike>Edit & Check Chapter 4</strike> **6/23**
|
|
||||||
* <strike>Double-check fee calculator in 4.2I with a more complex example</strike> **6/19**
|
|
||||||
* <strike>Integrate older Curl Interlude</strike> **6/19**
|
|
||||||
* <strike>Edit & Check Chapter 5</strike> **6/23**
|
|
||||||
* <strike>Edit & Check Chapter 6</strike> **6/30**
|
|
||||||
* <strike>Update for change in importaddress</strike> **7/7**
|
|
||||||
|
|
||||||
## 3. Add BTCDEB Support
|
|
||||||
|
|
||||||
10. Update Scripting & Integrate `btcdeb`
|
|
||||||
* <strike>Edit & Integrate Chapter 9</strike> **7/15**
|
|
||||||
* <strike>Fix P2PKH Example</strike> **7/15**
|
|
||||||
* <strike>Write P2WPKH Chapter</strike> **7/15**
|
|
||||||
* <strike>Edit & Integrate Chapter 10</strike> **7/15, 7/21**
|
|
||||||
* <strike>Write P2WSH Chapter</strike> **7/21**
|
|
||||||
* <strike>Edit & Integrate Chapter 11</strike> **7/21**
|
|
||||||
* <strike>Edit & Integrate Chapter 12</strike> **7/21**
|
|
||||||
* <strike>Edit & Integrate Chapter 13</strike> **7/21**
|
|
||||||
* Turn off verbose info on btcdeb?
|
|
||||||
* Get sigs working right on btcdeb?
|
|
||||||
|
|
||||||
## 4. Add New Concepts
|
|
||||||
|
|
||||||
Add and document the following new concepts:
|
|
||||||
|
|
||||||
11. <strike>Add SegWit Transactions. The majority of Bitcoin transactions now use this signing methodology, so it needs to be fully explained and incorporated, alongside its newer bech32 addresses.</strike> **6/23**
|
|
||||||
* <strike>Add definitions of Segwit and bech32 addresses to 3.3</strike> **6/23**
|
|
||||||
* <strike>Do we still have to use "bitcoin-cli getnewaddress "" legacy" on CLI? If not, run back through chapters that use legacy in their examples, starting in 3.3</strike> **Gonna leave it for now. A future version might shift to P2SH-SegWit as default.**
|
|
||||||
* <strike>Integrate discussions of SegWit into early parts of chapter 4.</strike> **6/23**
|
|
||||||
* <strike>Write chapter 4.6</strike> **6/23**
|
|
||||||
12. <strike>Add PSBT. Partially Signed Bitcoin Transactions are a powerful new interchange format that should be fully included in our discussions of multi-sigs and escrows (which instead fell back on older methodologies in v1.0).</strike> **7/2**, **7/7**, **7/10**
|
|
||||||
* <strike>Research PSBTs</strike> **7/2**
|
|
||||||
* <strike>Update Outlines</strike> **7/2**
|
|
||||||
* <strike>Write 7.1: Creating a PSBT</strike> **7/7**
|
|
||||||
* <strike>Create Illustrations for 7.1</strike> **7/7**
|
|
||||||
* <strike>Write 7.2: Using a PSBT</strike> **7/7**, **7/10**
|
|
||||||
* <strike>Multisigs</strike> **7/7**
|
|
||||||
* <strike>Redo with correct math</strike> **7/10**
|
|
||||||
* <strike>Fund Pooling</strike> **7/10**
|
|
||||||
* <strike>CoinJoins</strike> **7/10**
|
|
||||||
|
|
||||||
13. <strike>Add Wallet Updates.</strike> **6/30**, **7/2**, **7/7**
|
|
||||||
* <strike>Bitcoin Descriptors</strike> **6/30**
|
|
||||||
* <strike>Show what a SegWit descriptor looks like</strike> **7/2**
|
|
||||||
* <strike>Show what a multi-sig descriptor looks like</strike> **7/2**
|
|
||||||
* <strike>Revise based on comments</strike> **7/7**
|
|
||||||
* <strike>Key Ordering (sortedmulti)</strike> **7/2** **Partially Supported in 0.20**
|
|
||||||
14. <strike>Consider HWI.</strike> **7/14**
|
|
||||||
* <strike>Write 7.3: Using HWI</strike> **7/14**
|
|
||||||
* <strike>Edit All of Chapter 6-8</strike> **7/14**
|
|
||||||
15. <strike>Consider splitting up Chapter 6 (definitely if we get an HWI chapter)</strike>
|
|
||||||
* <strike>Break apart Chapter 6</strike> **7/2**
|
|
||||||
* <strike>Rewrite all section links in early chapters (1-5, 6, 8)</strike> **7/7**
|
|
||||||
* <strike>Update Script Chapters</strike> **7/15**
|
|
||||||
* <strike>Update Tor Chapter</strike> **7/22**
|
|
||||||
* <strike>Update Programming Chapters</strike>
|
|
||||||
|
|
||||||
## 5. Finish Later Chapters
|
|
||||||
|
|
||||||
16. <strike>Edit & Integrate Tor Chapter. </strike> **7/22**
|
|
||||||
17. <strike>Edit & Integrate all "C" work</strike> **8/5** - **8/26**
|
|
||||||
* <strike>Edit & Update Chapter 15</strike> **8/5**
|
|
||||||
* <strike>Write the Libwally section</strike> **8/5** - **8/26**
|
|
||||||
* <strike>16.1: Intro</strike> **8/5**
|
|
||||||
* <strike>16.2: BIP39</strike> **8/11**
|
|
||||||
* <strike>16.3: BIP32</strike> **8/11**
|
|
||||||
* <strike>16.4: PSBTs</strike> **8/12**
|
|
||||||
* <strike>16.5: Scripts</strike> **8/12**
|
|
||||||
* <strike>16.6: Other Functions</strike> **8/18**
|
|
||||||
* <strike>16.7: Integration</strike> **8/25**, **8/26**
|
|
||||||
18. <strike>Edit & Integrate all "Other Languages" work</strike> **9/1**-**9/30**
|
|
||||||
* <strike>Edit 17.1: Go</strike> **9/1**
|
|
||||||
* <strike>Edit 17.2: Java</strike> **9/2**
|
|
||||||
* <strike>Edit 17.3: NodeJS</strike> **9/2**
|
|
||||||
* <strike>Edit 17.4: Python</strike> **9/8**
|
|
||||||
* <strike>Edit 17.5: Rust</strike> **9/8**
|
|
||||||
* <strike>Write 17.6: Swift</strike> **9/29**
|
|
||||||
* <strike>Setup Swift Environment</strike> **9/9**, **9/15**
|
|
||||||
* <strike>Document Swift Environment</strike> **9/23**
|
|
||||||
* <strike>Do Basic RPC Commands</strike> **9/29**
|
|
||||||
* <strike>Look at Wallets</strike> **9/29**
|
|
||||||
* <strike>Create Transaction</strike> **9/29**
|
|
||||||
* <strike>First edit of Swift</strike> **9/30**
|
|
||||||
* <strike>Edit All of 17</strike> **9/30**
|
|
||||||
* <strike>Finalize Naming of Src</strike> **9/30**
|
|
||||||
* <strike>Full Edit of 17.1-17.6</strike> **9/30**
|
|
||||||
19. <strike>Edit & Integrate Appendices work</strike> **7/27**, **8/4**
|
|
||||||
* <strike>Edit & Integrate A2: Compiling</strike> **7/27**
|
|
||||||
* <strike>Edit & Integrate A3: RegTest</strike> **8/4**
|
|
||||||
20. <strike>Edit & Integrate Lightning Chapters</strike> **10/13**, **10/14**
|
|
||||||
* <strike> Figure out how/if to set up a pruned core lightning</strike> **10/13**
|
|
||||||
|
|
||||||
## 6. Finalize Book
|
|
||||||
|
|
||||||
21. <strike>Take out warnings for all old chapters</strike> **10/20**
|
|
||||||
22. <strike>Add new first chapter, indicating places to start for people of different levels</strike> **10/20**
|
|
||||||
23. <strike>Add other Bitcoin standup options to Ch. 2</strike> **10/27**
|
|
||||||
24. <strike>Move an coding appendices (e.g., JQ interlude) to src code directory </strike> **10/20**
|
|
||||||
25. <strike>Write letter about new edition</strike> **10/27**
|
|
||||||
26. <strike>Write tweetstorm</strike> **10/27**
|
|
||||||
|
|
||||||
## 7. Additional Support
|
|
||||||
|
|
||||||
27. Full edit of book (intern?)
|
|
||||||
Loading…
x
Reference in New Issue
Block a user