プログラマーですが何か?まだプログラマーですが何か?プログラマーネタとアスリートネタ中心。dotnsfブロックチェーンの特徴の1つに「対改ざん性(一度格納した情報は、たとえ管理者権限を持っている人でも改ざんができない)」があります。その改ざんを困難にするためのマイニングと呼ばれる仕組みをゲーム感覚で学べるサービスを作ってみました:https://dotnsf.github.io/nonce/少しだけ補足すると、これはブロックチェーンのマイニングの仕組みをシミュレーションするサービスです。ハッシュの仕組みを理解し、ブロックチェーンがなぜ改ざんできない仕組みと言われているのかを遊びながら理解することを目的に作りました。画面含めて今後変更が加わる可能性があることを申し上げておきます。時点でのサービス内容をもとに紹介しています。チュートリアルっぽく、このサービスを紹介していきます。の)ウェブブラウザでアクセスすると、以下のような画面が表示されます(スマホのブラウザで見えないことはないと思いますが、情報量の多いページで横スクロールも併用する必要があり、現状スマホからはかなり使いにくいと思っています。してもスマホで利用する場合は画面を横にしてお使いください):この画面は目的別のパーツに分かれています。何番目のブロックかを示す数値。値とハッシュ値の値が確定してブロックチェーンに格納されたブロック(この図では空なので、まだ格納していない)↑の表や意味は後でもう一度確認するとして、まずは一度ゲームを進めてみます。値のボタンが上図のように赤ではなく、稀に緑になっている可能性があります。値の、初期状態で1と書かれているボタンを押してください(ボタンを押すたびに数値が増えていきますが、とりあえずは無視してください)。値のボタンが赤で始まることを想定しています。このボタンの色の意味は後述します。値、デフォルトでは3)のブロックをブロックチェーンに格納することが目的です。短い時間でブロックチェーンを完成させましょう。ブロックはマイニングルールと呼ばれるある条件を満たせばブロックチェーンに格納することができます。マイニングルールを満たしていないブロックはブロックチェーンに格納できません。その条件を満たすよう、注意しながら操作し、条件を満たしたタイミングでブロックチェーンに格納します。これを一定の数繰り返すことでゲームをクリアできます。【ゲームの遊び方】ややこしい話は後回しにして、とりあえずゲームとしての遊び方を紹介します。値のボタンを緑色の時に押すとブロックがブロックチェーンに格納されます。赤の時に押してもマイニングルールを満たしていないためブロックは格納されません。以下のようなメッセージが表示されます。このままマイニングを続ける場合は「キャンセル」を選択してください:表の一番右の列にブロックが格納されます(通常、この時点でブロックは暗号化されて格納されますが、このサービスでは暗号化せずにそのままマイニングしてそのまま格納しています)。1つのブロックが格納されると、次のブロックが下段に表示されます。値のボタンを押し、緑になったら押してブロックチェーンに格納します:これを繰り返して、ブロックをブロックチェーンに格納していきます:一定数(デフォルトでは3)のブロックがブロックチェーンに格納できたらゲームクリアとなります。ゲームクリア時にゲーム開始からクリアまでかかった時間と合わせてゲームクリアの情報が表示されます:なお途中で赤のボタンを押して、「自動計算しますか?」の問いに「OK」を選択するとギブアップしたことになります。値を戻すことはできません。値を探す必要があります。こんな感じのゲーム感覚でマイニングを体験するサイトです。作りました:https://github.com/dotnsf/nonce/tree/gh-pages本当は別の機会にちゃんと説明したいのですが、長くなりそうなのでシンプルに「なぜブロックチェーンに記録されたデータの改ざんが難しいのか」を説明しておきます。パワーを必要とする処理を施した上でのチェックビットのような仕組みを加え、かつそのマイニング結果を前後のブロックに持たせてつなげる(「ハッシュポインタ」)ことが対改ざん性としての鍵になっているのです(更に実際にはデータに暗号化を加えることもあります)。値が変わり、記録内容とは異なってしまうので、書き換えたことがすぐにバレてしまいます。値を再計算する必要があるのですが、マイニングルールを満たす条件があるため、ここでそれなりの処理能力が必要になります。値を持っているので、やはりここでも書き換えがバレてしまいます。とブロックチェーンの最後のブロックまで全てマイニングし直して書き換える必要がでてきてしまいます。桁以上のマイニングルールが課せられており、全てのブロックを書き換えることは事実上不可能とされているのでした。改良して認証を加え、自動計算なしでクリアしたら本当にその記録をブロックチェーンに格納する、というものをリリースする予定です。クラスタを構築する豊島屋の鳩サブレ缶がちょうどラズベリーパイ(以下「ラズパイ」)を4つ格納できるような仕切りになっていることに気付いて、この鳩サブレ缶とラズパイでクラスタ環境を作れないか、と思い立ったことがきっかけでした。クラスタを構築します:なお、構築手順の途中までは先日と全く同じです。導入する所までは同じ手続きを行います。ここまでの作業が完了している前提で以下を紹介します。環境のための手順となります。