Ethereumをラズパイで使ってみる


ubuntuの環境で単一のノードでやってみた場合

上記のページでは、環境はVirtualbox + ubuntuで、ソースからビルドしましたが、今回はバイナリー版を使ってみます。

環境はRaspbian Stretchです。

今回はこんな感じのプライベートネットです。

例えばこんな風になっているとします。

B+ (RaspberryPi 3 Model B+)  192.168.0.31

B    (RaspberryPi 3 Model B)  192.168.0.28

Win10 (Windows 10 PC 64bit) 192.168.0.23


Windows 10にGethをインストール

PCはWindowsでもLinuxでもなんでもいいのですが、以前ubuntuでやったので今回はWindows….というだけの理由です。

これをマイニングに使います。

現ラズパイ(3B,B+,Zero)ではメモリやらマシンパワーやらの問題でマイニングは実行できませんでした。

ので、こういう作業はPCにやってもらいます。


Geth(Go-ethereum)をラズパイにインストール

ラズパイ3のカーネルをチェックしてマシン名を確認

$uname -m

B,B+こうなってると思います。

armv7l

Zeroはこうです。

armv6l

Gethバイナリーの最新はここを参照。

以下はB、B+についてですがZeroの場合はarm7をarm6に置き換えるだけです。

:やってみたところ、Zeroでは何故かアカウントを作成できませんでした。なので、Zeroは今回は不採用。原因が分かれば復活するかもしれませんが…..。

Linux ARMv7のSignatureを参照。

geth-linux-arm7-1.8.27-4bcc0a37.tar.gz

バイナリーのアーカイブをダウンロードします。

/usr/localにgethをインストール

 

パスを通しておきます。

$sudo leafpad /home/pi/.bashrc

以下を追加

export PATH=$PATH:/usr/local/geth

$source /home/pi/.bashrc

シンボリックリンクを張っておきます。

確認

$geth version


環境にはまだブロックは存在しません。

ubuntuの環境で単一のノードでやってみた場合に倣ってみます。

まず最初のブロック(ジェネシスブロック)を生成するために、以下のファイルを/home/piに創っておきます。

【Genesis.json】

チェーンデータを初期化します。

 


Gethを起動します。

自ノード情報を確認します。
>admin.nodeInfo.enode

ノード情報として、この赤線で囲った部分をコピーして使います。

塗りつぶした部分にはIPアドレスが記述されていますが、グローバルIPが表示される場合があります。

ローカルネットで使う場合はプライベートIPに置き換えます。


各ラズパイを相互接続

ノード情報を使って相互に接続します。

 

B  ->  B+

B+  ->  B

 

他も同様に接続します。

 

接続を確認

接続数を確認。

このプライベートネットなら2が表示されます。

 


admin.addPeerコマンドを使わずに相互接続

上記で取得したノード情報を記述した以下のようなファイルを、それぞれの/home/pi/My_eth_chain/gethに置いておきます。

以下は例です。

【static-nodes.json】

 

それぞれGethを起動し、admin.peersを実行すると相互に接続しているのが確認できます。

30303というポート番号は仮のもので、最初に起動するものがこれを使用し、後続するものは順次別のポート番号が振られるようです。どういう規則なのかは……わかりません。

注:

このstatic-nodes.jsonを使用する方法は非推奨になっているようです。

代わりに「TOML config fileを使え」だそうです….。

bootnodeというツールを使うという手もあるようです。

bootnodeについて(工事中)


ラズパイからのコマンドでWindowsにマイニングしてもらう


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*