卒論から始まるBlockchain

卒論から始まるBlockchain

俺の屍を越えて行け

新品Macにbitcoindを入れて、testnetに繋いでみよう

ひっっっさしぶりの投稿です。まあ寛容に見てください。

最近パソコンをMacに変更しました。(実際は会社から支給されたため。本っっっ当にありがとうございます)長年windowsを触っていた弊害で、悪戦苦闘する場面もありますがなんとかやっております。

さて、Macに変更したので新たにbitcoindを入れ直すのですが、せっかくなのでその手順をここに記しておきます。ほぼ新品状態(このブログ前に必要最低限のプログラムは入れたので)からbitcoindを入れていきたいと思います。

windowsの時もかーーーーなり苦労して入れたのですが、今回もそれなりに労力を費やしました。これからBitcoinを触ってみよう!!という方のお力になれれば幸いです( ´∀`)

ちなみに今回参考にしたのは以下のブログです。途中経過とかどうでもいいので、さっさとやり方教えてください、みたいな人はこれを見た方が早いです(´・_・`)

block-chain.jp

 

今回のPC情報

PC:Macbook Pro

メモリ:16G

OS:macOS 10.14.1

 

事前準備

以下が必要みたいです。事前にインストールしましょう。

インストール、の前に

インストールの前に、以下のコマンドをターミナルに入力(先頭の$は必要ないよ)

$ brew install autoconf automake libtool berkeley-db4 boost miniupnpc openssl pkg-config protobuf qt 

 すると、

$ brew install autoconf automake libtool berkeley-db4 boost miniupnpc openssl pkg-config protobuf qt

touch: /usr/local/Homebrew/.git/FETCH_HEAD: Permission denied

touch: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/FETCH_HEAD: Permission denied

fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied

error: could not lock config file .git/config: Permission denied

Cannot rebase: You have unstaged changes.

Please commit or stash them.

Warning: berkeley-db@4 4.8.30 is already installed and up-to-date

To reinstall 4.8.30, run `brew reinstall berkeley-db@4`

Warning: boost 1.67.0_1 is already installed and up-to-date

To reinstall 1.67.0_1, run `brew reinstall boost`

Warning: miniupnpc 2.1 is already installed and up-to-date

To reinstall 2.1, run `brew reinstall miniupnpc`

Warning: openssl 1.0.2p is already installed and up-to-date

To reinstall 1.0.2p, run `brew reinstall openssl`

Error: Permission denied @ dir_s_mkdir - /usr/local/Cellar/openssl/1.0.2p/.d20181102-4907-1dbez7v

はい、エラー。幸先いいですね( *`ω´)

とりあえずググってみるとこんなのが出てきました。(Can not install/upgrade formulae cause openssl is outdated · Issue #3431 · Homebrew/brew · GitHub

よくわからないけど、

$ sudo chown -R $(whoami) /usr/local/*

これやったら解決するよ!みたいな感じで終わってるのでとりあえずやってみましょう。終わったらbrew doctorで確認してみます。

$ brew doctor

Your system is ready to brew.

が出てきたので大丈夫っぽいです。(もしこれでYour system is ready to brew.以外の文面が出てきたら、エラーということです。ググりまくって解決しましょう!)ということでもう一度やってみましょう。

$ brew install autoconf automake libtool berkeley-db4 boost miniupnpc openssl pkg-config protobuf qt

Updating Homebrew... 以下長いので省略

できた!!でも最後に

See: https://docs.brew.sh/Homebrew-and-Python

==> protobuf

Editor support and examples have been installed to:

  /usr/local/opt/protobuf/share/doc/protobuf

==> qt

We agreed to the Qt open source license for you.

If this is unacceptable you should uninstall.

 

qt is keg-only, which means it was not symlinked into /usr/local,

because Qt 5 has CMake issues when linked.

 

If you need to have qt first in your PATH run:

  echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile

 

For compilers to find qt you may need to set:

  export LDFLAGS="-L/usr/local/opt/qt/lib"

  export CPPFLAGS="-I/usr/local/opt/qt/include"

 

For pkg-config to find qt you may need to set:

  export PKG_CONFIG_PATH="/usr/local/opt/qt/lib/pkgconfig"

とか出てきました。まあエラーじゃないし、使い方によってはPATH通せよ?みたいな感じ(多分)なので無視。

続いて一旦opensslのバージョンを見てみます。

$ openssl version

OpenSSL 1.0.1f 6 Jan 2014

見たいのが正常らしいけど、出てきたのはこちら

$ openssl version
LibreSSL 2.2.7

!!??何これ?なんか違う!

ただダメな場合は以下を打つらしいのでやってみます。

brew link openssl --force

そしたらこのブログに書かれているようなエラーが出現。macOS High Sierra(OSX)のOpenSSLをデフォルトのLibreSSLからOpenSSLに変更する - Qiita

でも、出てきたエラー文にも書いてあるように

echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

とやるだけらしいので

$ echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

を入力。一回ターミナルを閉じて、もう一度開きopenssl version を入力すると

$ openssl version

OpenSSL 1.0.2p  14 Aug 2018

ふむ。まあ正常と言われているやつと微妙に違う気がするけど、気にせず進みます。

 

インストール

$ git clone https://github.com/bitcoin/bitcoin.git

$ cd bitcoin

$ ./autogen.sh
$./configure
$ make

$ make check
$ make install

途中の./autogen.shでエラーが出る場合は必要なものが入っていないなどだと思うので、エラーに従って入れてください。またmakeも足りないものがあると途中で止まってエラーを吐き出します。それも同様にエラーに従って必要なものをインストールしてからmakeをすれば、途中から自動でビルドしてくれます。makeは20分ぐらいかかるので気長に待ちましょう。(自分は15分ぐらいだった気がする)

※追記:2018/11/07

こんな裏技あるみたいです。

f:id:mochi-mochi-0397:20181107125700p:plain

一連の流れが終わったら、ちゃんとダウンロードされているか見てみましょう。

$ which bitcoind

/usr/local/bin/bitcoind

$ which bitcoin-cli

/usr/local/bin/bitcoin-cli

と表示されたら大丈夫です。

 

Bitcoindを起動してみよう

$ bitcoind

を入力して起動してみます。

すると猛烈に動き始めます。これはメインチェーンのブロックをダウンロードしているからで、このままだと450GBほどメモリを食います。まあ、フルノードで俺は行くぜ!!という方は止めませんが、今回はテストネットでいきますので、止めます。

一旦新しいターミナルを開き、$bitcoin-cli stopで終了します。

$ bitcoin-cli stop

Bitcoin server stopping

 

testnetに繋いでみよう

Bitcoinには、3つのネットワークが用意されています。

  • メインネット …… 本番用ネットワーク(パブリック)
  • テストネット …… 開発用ネットワーク(パブリック)
  • regtest …… 開発用ネットワーク(プライベート)。マイニングなどの機能が試せる

また、ここからは以下のものを参考に進めました。

coin-wave.com

テストネットに繋ぐにはbitcoin.confというファイルをいじればいいのですが、これはLibrary/Application\ Support/Bitcoin/ にあるようです。なので以下のコマンドで移動し、中身を書き換えます。

$ cd Library/Application\ Support/Bitcoin/

$ ls    #bitcoin.confがあるか確認

$ vim bitcoin.conf

最後のコマンドを入力するとvim(ヴィム)というテキストエディターが開きます。開いたら、iを押して編集可能にし、以下を書き込みます。

testnet=3

txindex=1

server=1

rest=1

rpcuser=<ユーザー名>

rpcpassword=<パスワード>

rpcport=18332

 

書き終えたらexitを押し:wqを押してvimを終了します。

 

Bitcoin Coreを起動してみよう

早速アプリケーションにあるBitcoin Coreを起動してみましょう!

f:id:mochi-mochi-0397:20181103005239p:plain

f:id:mochi-mochi-0397:20181103005340p:plain

ビットコインマークが緑色で、上のバーがBitcoin Core [testnet]となっていれば成功です!

 

まとめ

長い・ややこしい・分かりづらいの三拍子が見事に揃っており、何度ベットに逃げ込み、Youtubeを見始めたか分かりません。(言い訳)

また、学校のパソコンでやるとBitcoin のポート番号が禁止されているのか、ダウンロードできてもピアと接続できませんでした。学生の方はポートを開けてもらうか、学外ネットワークでやるしかないと思います。

改めてGoogle Playからダウンロードするぐらいの軽いノリで出来るようになるのを願うばかりです(´・ω・) 

 

//Macbook Proになったおかげで今まででは考えられないスピードでAndroid Studioが動きます。こういうのはケチってはいけないと身にしみました(´・∀・`)

 

参考資料

Gitの使い方】GitをMacにインストールする方法! | オリジナルゲーム.com

Xcode をインストールする、 iOSアプリ作成準備

Can not install/upgrade formulae cause openssl is outdated · Issue #3431 · Homebrew/brew · GitHub

Mac OS X で bitcoind をコンパイル、インストールする方法 | block-chain.jp

macOS High Sierra(OSX)のOpenSSLをデフォルトのLibreSSLからOpenSSLに変更する - Qiita

Bitcoin Coreをテスト環境で導入しよう

ビットコインとブロックチェーン:暗号通貨を支える技術

ブロックチェーン・プログラミング 仮想通貨入門 (KS情報科学専門書)