プライベートブロックチェーンでの取引きそれぞれの資産の移動、イーサリウムのマイニング、スマートコントラクトの動作についてパート1ではEthereumの基本について調査を行った。具体的には、イーサリウムのためのgethクライアントソフトウェアのインストールから、アカウントの作成、基本的なテストの動作確認までを行った。パート2では、まず簡単にパート1について再度確認、解説し、最初の2つのノードがピアとして独自のプライベートブロックチェーンを作成した。パート3となる本記事ではプライベートのブロックチェーンにて実際に取引を行う。初めに、事前に用意した資産を移動し、イーサリウムをマイニングした後、スマートコントラクトを実行する。これらはイーサリウムにおいて、最も面白い部分だろう。Piを再インストールすることにした。upgradeコマンドで更新を行う。gethクライアントの最新ビルドバージョンを実行したい場合は、この執筆時の時点でRaspianに標準でインストールされているgolangのパッケージ版は古すぎると思われたため、インストールされている場合はまずgolangを一度削除しよう。以下のコマンドで削除できる。autoremoveもしスクラッチ(何もない状態)から始める場合は、gitツールと、その他の依存関係が必要となる。これらは以下のコマンドでインストールできる。libgmp3-devまた、現在はgethとgolangのバージョンに少し問題があるらしいことを確認した。具体的にはリリースされたgethの1.8のブランチではgolangの1.9.2が動作しているのだが、現在raspbianに標準でインストールされているバージョンでは問題があるようだった。そのため、以下のコマンドを利用してgolangのバージョン1.9.2をインストールする。PATH=$PATH:/usr/local/go/binまた、上記コマンドの最後にあるように、exportコマンドを利用して環境パスを~/.profileに追加すると、OSにログインした際に新たにインストールされたgoバイナリが常に利用することが可能になるのだ。golangをインストールした後に、gethのバージョン1.8を用意、ビルドとインストールが可能になる。/usr/local/bin/これらのプロセスはパート1で詳しく解説しているが、最新のgethクライアントツールをインストールしたい場合は、こちらを参考に再度インストールを行ってほしい。一度環境について振り返っておこう。パート1からここまで、マシン2台を利用して検証と解説を行ってきた。Pi、もう一台はノートパソコンである。それぞれのマシンはブロックチェーン上の一つのノードとなり、パート2で紹介したプライベートなブロックチェーンには、この2台のノードのみが存在している。詳しくはパート2に目を通してくれると良いだろう。パート2では主にプライベートなブロックチェーンの作成と、2つのノードを用意して初期化を行うところまで進めた。今回、それらの方法について再度解説はしないので、各自必要に応じでパート2を振り返ってほしい。パート2までできたのであれば、各ノードにてgethクライアントからadmin.peerseを実行すると上の図のような出力になるはずだ。上の図から2つのノードがピアであることが分かる。資産の移動とマイニングでは各ノードのアカウントにて、イーサリウムの残高がどれだけ残っているのか確認してみよう。以下のコマンドで確認できる。“ether”)上の図では設定されたアカウントの残高が0であることがわかる。こちらのノートパソコンに設定されたアカウントには事前に用意しておいたイーサリウムが20だけあることが分かる。Pi側のアカウントに事前にイーサリウムを用意しており、ノートパソコン側には用意していなかった。これには特に深い意味はないため、もしこちらの記事を読んで進めている方は、各ノードにおいて事前に用意する資産の量などは各自の好きにしてくれて構わない。Piへと送信を行った。そのためにはアドレスが必要となる。以下のコマンドをノードパソコン側のノードで入力しよう。Pi側のアカウントを設定している。Piへとイーサリウムを送信している。Pi側とノートパソコン側の両方とも変化はないはずだ。これは「同期」が行われていないためだ。そこで、実際に取引をすすめるために、ノードパソコン側のノードでマイナー(マイニングするツール)を動作させる。miner.start()最初に目につく“DAG”は、作業を行ったことを記録するための有効グラフデータ構造だ。これを生成した後に、マイニングと同期を開始する必要がある。一度同期が開始すると、上の図のような出力となるはずだ。Piで現在の残高を確認してみよう。上の図のように資産を受け取れていたら成功だ。今回の検証では2つのノードしか存在しないため、マイニングの難易度(difficulty)も低いため、ノートパソコン側で動作するマイナーが事前に割り当てた20をすぐに超えるだろう。マイナーを停止したいときは以下のコマンドから停止できる。miner.stop()新しいブロックのストリームを生成するためにはマイナーを一つだけ動作させればいいことに注意してほしい。ここではマイニングに必要なリソースに制限がないマシンにおいて実行できる。worldスマートコントラクトを行ってみよう。このグリーターは「ブロックチェーン上に存在し、その入力に基づいて相互に通信できる誰とでも会話できるインテリジェントな存在」と表現されている。“Solidity”と呼ばれる言語で書かれたスマートコントラクトについてはパート1に戻って確認してほしい。この言語はJavaに似ており、コンパイルすると実行のためのバイトコードへと変換される。今回もノートパソコン側で動作させるために、そのコンパイラのインストールが必要となる。solcPPAは既に設定されており、gethはインストールされているため、上記の最初のコマンドは今回のケースでは本当は必要ないものだ。実際にSolidityを利用してみよう。以下のSlidityコードを用意し、Greeter.solといファイル名で保存しよう。}}これを以下のコマンドでコンパイルする。Greeter.sol上記の実行結果にはいくつかの警告が表示されているものの、指定したディレクトリにGreeter、Mortal、コントラクト用のabiファイルの4つのファイルが生成されている。これをgethへと読み込むための最も簡単な方法はスクリプトを作成することだ。今回はこれをgreeter.jsとする。以下が完成したファイルだ。}})最初の2行には生成されたabiファイルとbinファイルの内容が含まれている。実際には、これらはコントラクトの機能について記述しており、greeterCompiledという変数はコンパイルされたバイトコードだ。Greeter.bin>"_greetingという変数はその名の通り挨拶のメッセージのために定義されている。これはコントラクトが実行されると返されるものだ。次に適したノードにおいてマイナーが動作できるか確認しよう。コントラクトをデプロイしたいマシンにおいてアカウントをアンロックする。Piからコントラクトをデプロイする。先ほど紹介したスクリプトをgreeter.jsとして保存しておこう。loadScript("greeter.js")成功した!同期を行っているメッセージの中にコントラクトの取引が行われ、それがマイニングされるのを待っている通知と、マイニングが完了した通知を確認できる。以下のコマンドで検証できる。Piにて残高を確認すると、わずかだが減っていることが分かる。資産は適切なマイナーへと移動した。この場合はノートパソコン側となるだろう。最後に、次のコマンドでコントラクトを実行しよう。greeter.greet();イーサリウムのwebサイトによると返信は即座に返ってくるだろう。これはブロックチェーン上に何も影響がなく、手数料であるgasコストもないためだ。ドキュメント作成とデバッグイーサリウムのドキュメントは既に時代遅れであることに注意した方が良い。さまざまなWebサイトやウィキに情報が拡散されているため、統一した手順が見つからず、場合によってはうまくいかずに混乱するだろう。gethのウィキにあるコントラクトのチュートリアルだ。これはgethからにSolidityのコンパイルを提案しているが、これは既にサポートされていないのだ。多くのブロックチェーン技術と同様に、イーサリウムは攻撃と効率に対して耐性を持つように作られている、高速で開発が進む技術だ。開発よりもドキュメント作成のほうが遅れており、イーサリウムやその他ツールのバージョンについて気を付けrw正しいドキュメントを利用しなければうまく動作しないだろう。今回紹介したようなプライベートなネットワークにおいて、将来的に古いバージョンのソフトウェアなどが利用されることとなるが、これはあまりお勧めではないだろう。現在なにも取引していない状態であるならば、以下のコマンドを利用してブロックチェーンをリセットできる。.designsparkしかし、再度実行する際には.jsonファイルにてネットワークの初期化を行わなければいけないことに注意しよう。まとめではここまでやってきてことについてまとめてみよう。Piのような小さなノードが理論的にどのように大きなブロックチェーンに参加するのか、について紹介した。ここまで紹介したことを参考に、さらにノードを増やし、スマートコントラクトを作成していくつかの便利な機能を実現することができるだろう。イーサリウムのブロックチェーン技術によって提供される機能の利点を有効的に利用していこう。Back事前に用意した資金とピアノードで新しいテストネットワークを構築しよう!パート1では、Ethereumの基礎について調査した。Ethereumがもっともシンプルな仮想通貨であり、スマートコントラクトのための分散プラットフォームの提供について解説している。4は、あなたのデスクトップPCの性能を上回っているかもしれない。4に関する疑問に迫る。PiでGPSレシーバを搭載させると、現在位置と性格な時間の両機能が使用できるようになります。移動中の機器の位置を突き止める場合や、正確な時間同期が必要なシステムに最適です。Alexa開発を手軽に始めることができます。