SlideShare a Scribd company logo
1 of 37
Download to read offline
Bitcoin勉強会3
testnetでのローカルBitcoinネット
ワークの構築
目的
• 

Bitcoinの仕組みを理解するためのテスト環境の構築
本物のBitcoinを使用せず、Block Chainへも影響を与えない環境の構
築

• 

具体的には、testnetを使用して、限定された端末のみのローカル
Bitcoinネットワークを構築

• 

ローカルBitcoinネットワーク内で、Bitcoinの送金や採掘の実施
testnetとは?
• 

Bitcoinとは別にtestnet用のBitcoin block chainを使用したBitcoinネッ
トワーク

• 

Bitcoinの体験や、Bitcoinアプリケーションの開発などの使用が目的

※以降、本物のBitcoinネットワークを、mainnetと記載。
mainnetとtestnetとの違い
• 

Bitcoin network protocol listen port
mainnet:8333
•  testnet:18333
• 

• 

RPC connection port
mainnet:8332
•  testnet:18332
• 

• 

testnetの1.0difficultyは、mainnetの半分 0.5difficultyに相当

• 

mainnetとは異なる、genesis blockを使用。

※参考:https://en.bitcoin.it/wiki/Testnet
使用する環境
• 

Mac OS X のPC上で、仮想環境(WMware fusion)を使用。

• 

端末構成
• 

Miner役 端末A:Linux Ubuntu 12.10 (in VMware fusion)
• 

• 

Miner役 端末B:Linux Ubuntu 12.10 (in VMware fusion)
• 

• 

アプリケーション:bitcoind

取引役 端末C:Windows 8 (in VMware fusion)
• 

• 

アプリケーション:bitcoind

アプリケーション:Bitcoin-Qt

取引役 端末D:MAC OS X Mavericks
• 

アプリケーション:Bitcoin-Qt
使用する環境②
使用する環境③
• 

アプリケーション
• 

各アプリケーション(bitcoind、Bitcoin-Qt)のインストール方法に関しては、以
下のURLなどを参考にしてください。

• 

コンパイル済みアプリケーション
• 

• 

https://bitcoin.org/en/download

ソースコード
• 

https://github.com/bitcoin/bitcoin
testnetを使用した「ローカルBitcoinネットワー
ク」の構築手順
• 

以下の手順で環境を構築します。
• 

①bitcoin.confの設定
• 

• 

②testnet block chainの取得
• 

• 

testnetに接続し、testnet block chainの取得。

③testnetのbitcoinの取得
• 

• 

Bitcoin設定ファイルの説明と設定。

取引を行うために、testnetからbitcoinの取得。

④testnet ローカルBitcoinネットワークの構築
• 

上記①と②で取得した、block chainとbitcoinを使用して、ローカルBitcoinネットワーク
の構築。
bitcoin.conf①
• 

bitcoin.confとは
• 

• 

Bitcoinアプリケーション(bitcoind、Bitcoin-Qtなど)の設定ファイル。

格納場所
• 

以下のサイトの「Bitcoin.conf Configuration File」を参照
• 

• 

https://en.bitcoin.it/wiki/Running_bitcoind#Bitcoin.conf_Configuration_File

bitcoin.confのサンプル
• 

以下のサイトの「Sample Bitcoin.conf」を参照
• 

https://en.bitcoin.it/wiki/Running_bitcoind#Bitcoin.conf_Configuration_File
bitcoin.confの設定①
• 

miner役AとBは、以下を記載
• 

testnetを使用するための設定(既に設定済み)
• 

• 

testnet=1

JSON-RPC コマンドの受付許可
• 

server=1

• 

rpcuser=ユーザ名
• 

• 

例:rpcuser=Ulysseys

rpcpassword=パスワード
• 

例:rpcpassword=1234
bitcoin.confの設定②
• 

取引役CとDは、以下を記載
• 

testnetを使用するための設定(既に設定済み)
• 

testnet=1
testnet block chainの取得①
• 

miner役AとBでのblock chainの取得
• 

• 

「bitcoind」をそのまま起動してください。
本来のtestnetのblock chainを取得します。

取引役CとDでのblock chainの取得
• 

「Bitcoind-Qt」をそのまま起動してください。
本来のtestnetのblock chainの取得します。
testnet block chainの取得②
• 

PCの性能にもよりますが、同期の完了まで45分から1時間程度。
同期が成功したかどうかは、取引役CやD(bitcoin-Qt)で確認。
testnetのbitcoinアドレスの確認
• 

Bitcoinアドレスの確認
testnetのbitcoinの取得①
• 

以下のサイトを使用し、
testnet用のbitcoinを取得
• 

http://tpfaucet.appspot.com/
testnetのBitcoinの取得②
• 

取得したBitcoinは一旦「unconfirmed」に計上。
minerによる検証が完了すると「Balance」に計上。
testnet ローカルBitcoinネットワークの構築
• 

以下の手順で環境を構築します。
(一旦、全てのアプリは終了してから行う)
• 

①bitcoin.confの設定
• 

miner役A/miner役B/取引役C/取引役D

• 

②miner役Aとminer役Bの相互接続

• 

③取引役Cと取引役Dの接続
miner役Aの設定①
• 

bitcoin.confに以下の設定を行う。
• 

testnetを使用するための設定(既に設定済み)
• 

• 

DNS シートの未使用設定
• 

• 

testnet=1

dnsseed=0

P2Pネットワークの接続先ノードの指定
• 

connect=miner役BのIPアドレス:ポート番号
• 

例:connect=192.168.100.102:19000
ポート番号は任意。「19000」を使用する例
miner役Aの設定②
• 

bitcoin.confに以下の設定を行う。
• 

他のノードからの接続を許可
• 

• 

listen=1

他のノードを受け付けるポート番号の指定
• 

port=ポート番号
• 

• 

例:port=19000

採掘の設定
• 
• 

gen=0
※初期値は採掘をしない設定とし、必要に応じてJSON-RPC コマンドで、ONにする。
miner役Aの設定③
• 

bitcoin.confに以下の設定を行う。
• 

JSON-RPC コマンドの受付許可
• 

server=1

• 

rpcuser=ユーザ名
• 

• 

rpcpassword=パスワード
• 

• 

例:rpcuser=Ulysseys

例:rpcpassword=1234

rpcport=ポート番号
• 

例:rpcport=19001
miner役Aの設定④
• 

その他:不要な機能の停止
• 

UPnPの停止
• 

• 

外部IPアドレスの取得の停止
• 

• 

upnp=0

discover=0

今まで紹介した設定以外は、必要に応じて設定してください。
miner役Bの設定
• 

miner役Aとの差分のみ記載

• 

P2Pネットワークの接続先ノードの指定
• 

connect=miner役AのIPアドレス:ポート番号
• 

例:connect=192.168.100.103:19000
取引役Cの設定①
• 

bitcoin.confに以下の設定を行う。
• 

testnetを使用するための設定
• 

• 

DNS シートの未使用設定
• 

• 

testnet=1

dnsseed=0

P2Pネットワークの接続先ノードの指定
• 

connect=miner役BのIPアドレス:ポート番号
• 

例:connect=192.168.100.102:19000
取引役Cの設定②
• 

bitcoin.confに以下の設定を行う。
• 

その他:不要な機能の停止
• 

UPnPの停止
• 

• 

upnp=0

外部IPアドレスの取得の停止
• 

discover=0
取引役Dの設定
• 

取引役Cとの差分のみ記載

• 

P2Pネットワークの接続先ノードの指定
• 

connect=miner役AのIPアドレス:ポート番号
• 

例:connect=192.168.100.103:19000
miner役Aとminer役Bの相互接続①
• 

以下のコマンドで、miner役Aとminer役Bの起動
$ ./bitcoind -debug -debugnet -printtoconsole

• 

コマンドオプション
• 

-debug:デバッグ情報を出力

• 

-debugnet:ネットワーク関連のデバッグ情報を出力

• 

-printtoconsole:デバッグ情報をコンソールに出力
miner役Aとminer役Bの相互接続②
• 

ログの確認

miner役A	
 

miner役B
取引役Cと取引役Dの接続①
• 

取引役CとDの起動
※ローカルbitocoinネットワーク内で、一定時間以上新たなblockの生成が行われていない場
合、非同期状態となる。一定時間以内なら同期状態のまま。

取引役C	
 

取引役D
動作確認
• 

以下の動作確認を行います。
• 

mining(新規のblockの採掘)

• 

Bitcoinの送金と入金

• 

proof-of-workの発見
mining(新規のblockの採掘)①
• 

miner役Aで新規のblockを採掘
以下のJSON-RPCコマンドで、miningを有効にする。
• 

$ ./bitcoind setgenerate true
※無効にする場合は、「true」を「false」に変更

• 

CPUのcoreが2つのため、2つのスレッドでblockを生成開始。
mining(新規のblockの採掘)②
• 

proof-of-workの発見
mining(新規のblockの採掘)③
• 

取引役CとDの同期
新規のblockが採掘され、同期が行われた。

取引役C	
 

取引役D
Bitcoinの送金
• 

取引役DからCへBitcoinの送金

取引役D	
 

取引役C
Bitcoinの送金②
• 

miner役Aのデバッグログの確認
proof-of-workの発見①
• 

miner役Aでのproof-of-workの発見時のデバッグログ

• 

miner役Bでのデバッグログ
proof-of-workの発見③
• 

送金の完了
今後やってみたいこと
• 

Bitcoinの技術を検証するために、Bitcoin福岡勉強会で以下のような
ことをやれたら面白いかなと思っています。
1. 

Bitcoinをカスタマイズし、新たなblock chainを持つ「実験用Bitcoin」の作成
現状、bitcoin-0.6.3ベースでgenesis blockの作成まで成功。

2. 

「実験用Bitcoin」を使用して以下のようなことを検証。
• 

Bitcoinの技術的な課題の明確化

• 

上記課題の対処方法の検討

• 

Bitcoinの技術を流用したサービスの検討

• 

etc…

More Related Content

What's hot

What's hot (20)

[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他
 
後期第六回ネットワークチーム講座資料2016
後期第六回ネットワークチーム講座資料2016後期第六回ネットワークチーム講座資料2016
後期第六回ネットワークチーム講座資料2016
 
モダンブラウザストレージ
モダンブラウザストレージモダンブラウザストレージ
モダンブラウザストレージ
 
いろいろなデバイスでOpenVNetを動かしてみようとした。
いろいろなデバイスでOpenVNetを動かしてみようとした。いろいろなデバイスでOpenVNetを動かしてみようとした。
いろいろなデバイスでOpenVNetを動かしてみようとした。
 
how to port * to BitVisor (2)
how to port * to BitVisor (2)how to port * to BitVisor (2)
how to port * to BitVisor (2)
 
170916 nem introduction
170916 nem introduction170916 nem introduction
170916 nem introduction
 
DVCSとGitの基礎
DVCSとGitの基礎DVCSとGitの基礎
DVCSとGitの基礎
 
図解 Blockchainの仕組み
図解 Blockchainの仕組み図解 Blockchainの仕組み
図解 Blockchainの仕組み
 
Valu VS 株
Valu VS 株Valu VS 株
Valu VS 株
 
MySQL-Docker
MySQL-DockerMySQL-Docker
MySQL-Docker
 
FreeBSD VPSでLive Migration
FreeBSD VPSでLive MigrationFreeBSD VPSでLive Migration
FreeBSD VPSでLive Migration
 
量子コンピュータと量子暗号 Quantum Computer & Quantum Cryptography
量子コンピュータと量子暗号 Quantum Computer & Quantum Cryptography量子コンピュータと量子暗号 Quantum Computer & Quantum Cryptography
量子コンピュータと量子暗号 Quantum Computer & Quantum Cryptography
 
名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~
 
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
 
マイクラ自動化枠第2回資料
マイクラ自動化枠第2回資料マイクラ自動化枠第2回資料
マイクラ自動化枠第2回資料
 
FreeBSD Capsicum
FreeBSD CapsicumFreeBSD Capsicum
FreeBSD Capsicum
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
 
マイクラ自動化枠第1回資料
マイクラ自動化枠第1回資料マイクラ自動化枠第1回資料
マイクラ自動化枠第1回資料
 
ブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかけるブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかける
 
Introduction to Bitcoin
Introduction to BitcoinIntroduction to Bitcoin
Introduction to Bitcoin
 

Similar to Bitcoin testnet

猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKit
Naruto TAKAHASHI
 
JOSUG 9th Study
JOSUG 9th StudyJOSUG 9th Study
JOSUG 9th Study
irix_jp
 

Similar to Bitcoin testnet (20)

ブロックチェーン技術概論1 輪読
ブロックチェーン技術概論1 輪読ブロックチェーン技術概論1 輪読
ブロックチェーン技術概論1 輪読
 
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKit
 
Bitcoin x javascript
Bitcoin x javascriptBitcoin x javascript
Bitcoin x javascript
 
RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編
 
Raspberrypi+yocto in Yocto Workshop Japan #1
Raspberrypi+yocto in Yocto Workshop Japan #1Raspberrypi+yocto in Yocto Workshop Japan #1
Raspberrypi+yocto in Yocto Workshop Japan #1
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
 
みんなのブログ紹介
みんなのブログ紹介みんなのブログ紹介
みんなのブログ紹介
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
JOSUG 9th Study
JOSUG 9th StudyJOSUG 9th Study
JOSUG 9th Study
 
チュートリアル: ブロックチェーンの計算モデル
チュートリアル: ブロックチェーンの計算モデルチュートリアル: ブロックチェーンの計算モデル
チュートリアル: ブロックチェーンの計算モデル
 
ライトニングノードをいじってみよう
ライトニングノードをいじってみようライトニングノードをいじってみよう
ライトニングノードをいじってみよう
 
OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
Mk vpp for-containers-vppug
Mk vpp for-containers-vppugMk vpp for-containers-vppug
Mk vpp for-containers-vppug
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
 
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.0(旧)
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.0(旧)IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.0(旧)
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.0(旧)
 
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料) ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
 
20161129 neutron recent topic
20161129 neutron recent topic20161129 neutron recent topic
20161129 neutron recent topic
 

Recently uploaded

Recently uploaded (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Bitcoin testnet