🪙

WSL上でBitcoin Core開発を学ぶためのセットアップガイド

2025/02/07に公開

はじめに

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の仕組みを学ぶ際に必要なリソースや注意点を事前に把握しておきましょう。

  1. ビットコインノードの同期

    • ストレージ容量:約350GB(初回同期時は一時的に追加で約340GBの空き容量が必要です)
    • インターネット通信量:初期同期時は大量のデータをダウンロードします
    • 金銭的コスト:基本的に無料ですが、時間とPCのリソースが必要になります
  2. テストネットの利点

    • テスト用の仮想通貨を使用するため、実際のお金を使わずに実験可能
    • 失敗しても安全に学習できる
  3. メインネット(本番環境)との違い

    • メインネットでは実際のビットコインを使用するため、取引に実際の金銭が関わります
    • 初心者はテストネットで学習することを強く推奨します

本記事では、テストネットを使用して環境構築を行うため、費用をかけずに安全に学習を進められます。

環境構築手順

ここでは、学習専用のディレクトリを作成し、そこに設定ファイルやデータをまとめる方法をご紹介します。
今回は例として ~/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などのエディタでファイルを開いて進めても問題ありません。

チュートリアルの流れ

  1. 01_0_Introduction.md から学習を開始
  2. 02_0_Setting_Up_XXX.md の内容は、この記事での環境構築でカバーされているため、スキップしても大丈夫です
  3. その後、番号順に用意された資料を読み進めていきます

注意点:

  • テストネットの完全同期が完了するまでに時間がかかります。
    同期状況は以下のコマンドで随時確認してください。
    bitcoin-cli -testnet getblockchaininfo
    
  • 同期完了の目安としては、以下の状態を確認してください:
    • initialblockdownloadfalse になる
    • verificationprogress0.9999 以上になる
    • blocksheaders の値がほぼ一致する
  • 同期中も、資料(例:01_0_Introduction.md)を読み進めながら、Bitcoinの仕組みについての理解を深めることをお勧めします

まとめ

この記事では、初心者向けにWSL上でBitcoin Coreを使ったテストネット環境の構築手順を解説しました。
WSLやLinux環境でBitcoin Coreを実際に動かすことで、実際の資金リスクを伴わずに、Bitcoinネットワークの内部構造や動作原理を学ぶことができます。

環境構築が完了したら、03_0_Understanding_Your_Bitcoin_Setup.md 以降の資料に沿って、コマンドライン操作を通じた学習を進めてみてください。
実際に手を動かしながら学ぶことで、理論だけでは得られない深い理解が身につくはずです。

(ちなみに私自身も原著の英語版を参考にしながら、直接操作して理解を深める努力をしています。)

クレジット

Discussion