上記のページでは、環境はVirtualbox + ubuntuで、ソースからビルドしましたが、今回はバイナリー版を使ってみます。
環境はRaspbian Stretchです。
(現RaspbianはBusterです。Stretchのイメージ->Lite、Full)
今回はこんな感じのプライベートネットです。
例えばこんな風になっているとします。
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
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にマイニングしてもらう
Leave a Reply