ブロックチェーンへの湿度データ保存実験
大学の屋上に、RTK基準局やマイコン(Raspberry Pi)などを設置して色々な実験をしています。今回、公開されているブロックチェーンのサンプルプログラムを使って、屋上の温湿度センサの情報を複数PCに共有する実験をしました。このプログラムはGoという言語で書かれていて、比較的容易に改造することもできるようになっています。サンプルプログラムを公開してくださった作者様に感謝しています。
ブロックチェーンは、コンピュータ同士の相互通信(P2P: Point-to-Point)により互いに同一情報を保持する技術です。そして、新しいデータが追加されたとき、そのデータの確からしさを担保するためのデータ要約(ハッシュ)を互いに競って計算するものです。求めたハッシュが正解である条件が定義されていて(例えばハッシュの先頭に決められた数のゼロが並ぶ)、その正解をより早く導いたコンピュータのハッシュが採用されます。この正解は検証可能なので、データの改ざんが困難です。
屋上のマイコン、研究室のマイコン(これもRaspberry Pi)、そして、研究室サーバから切り出した仮想PC(Linux)の3台にそのサンプルプログラムをインストールして、ブロックチェーンの実験をしてみました。
センサが情報を取得したとき、これらのマイコンはハッシュ値の探索を競い合いました。この場合、左側のマイコンが43回目のハッシュ値の計算で先頭がゼロ2桁の正解を見つけました。ここではハッシュ値の計算を60回まで行い、正解が見つからなかったら諦める設定になっていますので、右側のマイコンは「採掘」に失敗して左側のマイコンの情報を採用することになりました。
一部のマイコンで情報が欠落しても最終的には全てのマイコンで同一情報になることや、改ざんしたデータを無理に追加しようとしてもハッシュ値に矛盾が生じて追加できないことがわかりました。実際にやってみて、ブロックチェーンとはどのようなものかがよくわかりました。