前回までサトシナカモトの論文を読んでビットコインについて学んできました!
では、次に何を学ぶかといったら、、
ということで、ネットで普通にイーサリアムの日本語版ホワイトペーパーを見つけられたので、今日から少しずつ読み進めていこうかと思います!
https://github.com/ethereum/wiki/wiki/%5BJapanese%5D-White-Paper
はっきり言ってただの見切り発車ですが、やろうと決めたらできるでしょ!笑
ぜひみなさんも一緒に勉強していきましょう!
まずは最初のチャプターから!
ここではビットコインに至るテクノロジーの歴史が書かれています。
80-90年代に「ブラインディング署名blinding signature」技術による匿名のデジタル通貨がたくさん開発されましたが、いずれも中央集権モデルであったため、広く使われることはありませんでした。
1998年にはWei Daiによって分散型のコンセンサス形成モデルによる通貨b-moneyのアイデアが提唱されています。
2005年Hal Finneyより発展したreusable proofs of workというコンセプトを発表しましたが、真に分散型とは呼べず、失敗に終わっています。
そして2009年にサトシナカモト によって「公開鍵暗号」と「proof of work」を結びあわせたBitcoinが生み出されました。
何もないところから生み出されたわけじゃなく、先人たちのたくさんのトライアンドエラーの結果だったんですね!
技術的観点から見ると、(本来 Bitcoin は、状態を持たない、ただの関数の鎖に過ぎない純粋なものですが、) Bitcoin をはじめとした暗号通貨の帳簿は、全 bitcoin の所有状況をあらわす「状態」と、状態と取引(トランザクション、状態遷移関数のこと)から新たな状態を出力する「状態遷移関数」をもった、「状態遷移」のシステムとしてみることができます。
んーちょっと何言ってるかわかんないですね笑
「状態」というのは「未使用の取引出力値(UTXO)」の集合ことで、UTXOには「残高」と「所有者」が記載されています。「残高と所有者」がわかれば全体の「状態」がわかりますよね。
対して、「状態遷移関数」はトランザクションのことで、AさんがBさんに送金したということを表す関数のことです。
つまり、「既存の未使用の取引出力値UTXOへの参照」と「所有者のアドレスと関連づけられた秘密鍵による暗号署名」を入力として、「新しく生成されたUTXO」を出力とする関数のことです。
この関数自体をコインとみなそうというのがビットコインです。
なかなか難しい話ですね笑
「状態」はいかなる点においても、ブロック内に記述されないことに注意してください。(ブロックは状態遷移関数をつなげ合わせた関数そのものであり、入力値 である「状態」については何も書かれていません)
つまり、コインというのは、「あの人からあの人にいくら送金しましたよ」という記録(状態遷移関数)そのものであり、それら記録のまとまりであるブロックをチェーンとしてつなぎ合わせたブロックチェーンがビットコインというシステムだということですね。
もし、アクセス対象として信用取引可能な 中央集約型 のサービスを使っているのであれば、 このシステムの実装は至極簡単なものであったでしょう。 単に上記のプログラムコードを記すのに、中央サーバーのハードディスクを使用し、「状態」を記録・維持すれば済む話であったでしょう。 しかし、わたしたちが Bitcoin を用いてやろうとしているのは、分散型通貨システムの構築です。 なので、トランザクションの順番をみんなが合意できることを確約するために、 状態遷移システム と 大衆意思決定のシステム をくっつけてやらなくてはなりません。
これはまさにビットコインが行なっていることの説明ですね。
ビットコインでは採掘を行うことによって、取引を記録したブロックが正しいことを証明します。
ブロックには、
が含まれています。
ビットコインでは、これらのデータを統合して、ブロックを作ります。その際にSHA256というハッシュ関数を用いて取引の記録をハッシュ化したものがブロックとなります。SHA256は完全にランダムなハッシュ値を作り出すので、ハッシュ値の最初のnビットを0にしなければいけないというルールのもとでは、それに合うノンスをひたすら変えてみて、nビットが0になるノンスを探し続けるしかありません。
この作業を採掘といい、見事始めに探し当てたノードが報酬をもらうことができるということですね。
2016ブロック生成されるごとに難易度調整がされ、平均して10分ごとに生成されるように調整されます。
この辺の内容はサトシナカモト の論文のなかでも説明しているのでぜひ参照ください!
まだイーサリアムについては言及されていないですね!
とりあえず今回はここまでにしましょう。
続きは次回の投稿で!