WSL上でBitcoin Core開発を学ぶためのセットアップガイド
はじめに
Bitcoin Coreは、ビットコインネットワークの中核を担うフルノードソフトウェアです。
つまり、Bitcoin Coreはビットコインのマイニング専用というわけではなく、トランザクションの検証やブロックチェーンの維持など、ビットコインの仕組みを支える重要な役割を果たします。
暗号通貨やブロックチェーン技術の学習においては、英語であれば教材も多く存在します。
ですが、日本語での情報が不足しているため、初めの一歩をやる機会がない方も多いかと思います。
きっと、そもそもこのような概念を学ぼうとする方は英語に明るい方が多いからだと思います。
しかし、そうでない方もきっかけがありさえすればブロックチェーン技術の勉強を初めるのではないでしょうか..
そこで本記事では、初心者向けに、WSL(Windows Subsystem for Linux)を使って安全に実験できるテストネット環境でのBitcoin Coreセットアップ方法を、カジュアルな文体で解説します。
本記事の目的
- 日本語話者がBitcoinの仕組みを学びやすくする
- Bitcoinエコシステムへの理解を深め、技術習得の第一歩を支援する
Learning Bitcoin from the Command Lineとは
「Learning Bitcoin from the Command Line」は、暗号通貨業界で実績のあるBlockchainCommonsが提供する、実際にコマンド操作を通じてBitcoinの基礎から応用まで学べるオープンソース教材です。
GitHub上では3,200以上のスター、760以上のフォークを獲得しており、定期的にメンテナンスされています。
この教材では、Bitcoin CoreやLightning NetworkのRPCインターフェースを直接操作することで、理論だけでなく実践的なスキルを身につけることができます。
簡単に言うと、コマンドラインを使って実際に操作しながら学べるプロジェクトというわけです。
学習内容の構成
パート | 説明 | 必要なスキル |
---|---|---|
Part 1: Bitcoin準備 | Bitcoinの基本概念とサーバーの設定方法 | 基本的なコマンドライン操作 |
Part 2: Bitcoin-CLI使用 | bitcoin-cliを使ったトランザクション作成 | 基本的なコマンドライン操作 |
Part 3: Bitcoinスクリプト | スクリプトを利用したBitcoin操作の拡張 | プログラミングの基礎 |
Part 4: Tor活用 | Torを使ったノードのセキュリティ強化 | 基本的なコマンドライン操作 |
Part 5: RPCプログラミング | C言語などを用いたRPCアクセスの実装 | C言語などのプログラミング |
Part 6: Lightning-CLI使用 | Lightning-CLIでのトランザクション作成 | 基本的なコマンドライン操作 |
学習にあたっては、基本的なUNIXコマンド(ssh、cd、lsなど)の理解があれば十分です。また、プログラミングが必要なパートでは、Go、Java、Pythonなどから自分に合った言語を選んで学習してください。
学習にかかるコストについて
Bitcoinの仕組みを学ぶ際に必要なリソースや注意点を事前に把握しておきましょう。
-
ビットコインノードの同期
- ストレージ容量:約350GB(初回同期時は一時的に追加で約340GBの空き容量が必要です)
- インターネット通信量:初期同期時は大量のデータをダウンロードします
- 金銭的コスト:基本的に無料ですが、時間とPCのリソースが必要になります
-
テストネットの利点
- テスト用の仮想通貨を使用するため、実際のお金を使わずに実験可能
- 失敗しても安全に学習できる
-
メインネット(本番環境)との違い
- メインネットでは実際のビットコインを使用するため、取引に実際の金銭が関わります
- 初心者はテストネットで学習することを強く推奨します
本記事では、テストネットを使用して環境構築を行うため、費用をかけずに安全に学習を進められます。
環境構築手順
ここでは、学習専用のディレクトリを作成し、そこに設定ファイルやデータをまとめる方法をご紹介します。
今回は例として ~/bitcoin-testnet/
を使用します。
1. 開発環境の準備
本チュートリアルはLinux環境を前提としています。
- Windowsユーザー:WSL(Windows Subsystem for Linux)でLinux環境を構築できます
- macOSユーザー:Homebrewなどで環境を整えてください
WSLでの環境構築
管理者権限のPowerShellを開き、以下を実行します。
wsl --install -d Ubuntu-22.04
※ 注意:現時点ではUbuntu 24.04向けのBitcoinリポジトリが未対応のため、Ubuntu 22.04を使用してください。
初回起動時には、ユーザー名とパスワードの設定が求められます。
2. 必要なパッケージのインストール
Ubuntuターミナルで以下を実行し、システムのアップデートと必要パッケージ(例:git)のインストールを行います。
# システムアップデート
sudo apt update && sudo apt upgrade -y
# 必要なパッケージのインストール
sudo apt install software-properties-common git -y
次に、Bitcoin Coreの最新バージョンの取得方法です。
ここでは例としてバージョン26.0のダウンロードURLを記載していますが、最新のバージョンはBitcoin Core Downloadsでご確認ください。
# Bitcoin Core(例:26.0)のダウンロード
wget https://bitcoincore.org/bin/bitcoin-core-26.0/bitcoin-26.0-x86_64-linux-gnu.tar.gz
# ダウンロードファイルの展開
tar xzf bitcoin-26.0-x86_64-linux-gnu.tar.gz
# バイナリのインストール(/usr/local/binにコピー)
sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-26.0/bin/*
インストール確認は以下で行います。
bitcoin-cli --version
bitcoind --version
続いて、学習用のリポジトリをクローンします。
git clone https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line
cd Learning-Bitcoin-from-the-Command-Line
3. Bitcoin設定ファイルの作成
ここでは、自動生成スクリプトを利用した方法と、手動作成の方法を紹介します。
※ なお、設定ファイルにはTestnetモードおよびRPCサーバーの起動設定を記述します。
(A) 自動生成スクリプトを利用する方法
以下のスクリプト例では、シェル上でランダムなパスワードを生成し、環境変数 RPCPASS
に代入した上で bitcoin.conf
を自動生成します。
※ シェル変数はこの時点で展開され、最終的なファイルには実際のパスワードが記録されます。
# 学習用ディレクトリの作成
mkdir -p $HOME/bitcoin-testnet
# セキュリティ用パスワードを生成し環境変数に格納
RPCPASS=$(openssl rand -base64 24)
echo "生成されたRPCパスワード: $RPCPASS"
# bitcoin.conf を自動生成
cat <<EOF > $HOME/bitcoin-testnet/bitcoin.conf
# Testnetモードで動作(実際のお金は使いません)
testnet=1
# RPCサーバーを有効化(bitcoin-cliから操作可能に)
server=1
# RPC認証情報
rpcuser=bitcoinrpc
rpcpassword=${RPCPASS}
EOF
# 設定ファイルのパーミッションを制限
chmod 600 $HOME/bitcoin-testnet/bitcoin.conf
(B) 手動で作成する方法
手動で作成する場合は、以下のコマンドでエディタを起動し、先ほど生成したパスワード(ターミナルに表示された値)を貼り付けてください。
nano $HOME/bitcoin-testnet/bitcoin.conf
ファイル内容の例(rpcpassword
は実際のパスワードに置き換える):
# Testnetモードで動作(実際のお金は使いません)
testnet=1
# RPCサーバーを有効化
server=1
# RPC認証情報
rpcuser=bitcoinrpc
rpcpassword=ここに生成されたパスワードを貼り付ける
4. Bitcoinノードの起動と同期
起動時は、先ほど作成した設定ファイルと学習用ディレクトリを明示的に指定します。
Testnetモードの場合、Bitcoin Coreは自動的に testnet3
というサブディレクトリ内にデータやログを格納します。
つまり、ログファイルは $HOME/bitcoin-testnet/testnet3/debug.log
に出力されます。
以下のコマンドで、Bitcoinノードをバックグラウンドで起動してください。
bitcoind -daemon -conf=$HOME/bitcoin-testnet/bitcoin.conf -datadir=$HOME/bitcoin-testnet
同期状況の確認は次のコマンドで行います。
bitcoin-cli -datadir=$HOME/bitcoin-testnet -conf=$HOME/bitcoin-testnet/bitcoin.conf getblockchaininfo
ログの確認方法:
Testnetモードの場合、ログは次のパスにあります。
- カスタムデータディレクトリを使用している場合:
$HOME/bitcoin-testnet/testnet3/debug.log
ログをリアルタイムで監視するには、以下のコマンドを実行してください。
tail -f $HOME/bitcoin-testnet/testnet3/debug.log
※【補足】
初回の同期には数時間から場合によっては12時間以上かかることがあります。
PCのシャットダウンやスリープ中は同期が一時停止するため、余裕のある時間に実行してください。
学習の進め方
このチュートリアルは、ターミナル上で直接テキストファイルを閲覧しながら進める想定です。
例えば以下のように、コマンドラインで内容を確認できます。
less 01_0_Introduction.md
英語のテキストを読みながら翻訳して学習したい方や、ターミナル操作に慣れていない方は、VSCodeなどのエディタでファイルを開いて進めても問題ありません。
チュートリアルの流れ
- 01_0_Introduction.md から学習を開始
- 02_0_Setting_Up_XXX.md の内容は、この記事での環境構築でカバーされているため、スキップしても大丈夫です
- その後、番号順に用意された資料を読み進めていきます
注意点:
- テストネットの完全同期が完了するまでに時間がかかります。
同期状況は以下のコマンドで随時確認してください。bitcoin-cli -testnet getblockchaininfo
- 同期完了の目安としては、以下の状態を確認してください:
-
initialblockdownload
がfalse
になる -
verificationprogress
が0.9999
以上になる -
blocks
とheaders
の値がほぼ一致する
-
- 同期中も、資料(例:
01_0_Introduction.md
)を読み進めながら、Bitcoinの仕組みについての理解を深めることをお勧めします
まとめ
この記事では、初心者向けにWSL上でBitcoin Coreを使ったテストネット環境の構築手順を解説しました。
WSLやLinux環境でBitcoin Coreを実際に動かすことで、実際の資金リスクを伴わずに、Bitcoinネットワークの内部構造や動作原理を学ぶことができます。
環境構築が完了したら、03_0_Understanding_Your_Bitcoin_Setup.md
以降の資料に沿って、コマンドライン操作を通じた学習を進めてみてください。
実際に手を動かしながら学ぶことで、理論だけでは得られない深い理解が身につくはずです。
(ちなみに私自身も原著の英語版を参考にしながら、直接操作して理解を深める努力をしています。)
クレジット
- 本記事はBlockchainCommons/Learning-Bitcoin-from-the-Command-Line(CC-BYライセンス)の環境構築手順を元に作成しています。
- 原著作者:Blockchain Commons
Discussion