Byteballの導入②〜DAGとは〜
どうも、Mr.おしゃべりです(・ω・)ノ
今回は、前回の記事の続きになります。
MediumでSuielavさんが出されている記事の翻訳をさせていただこうと思います。
元記事はこちらとなりますので、合わせて参照してください。
この記事は、Byteballについての記事の2本目になります。1本目のブログではなぜByteballについてを説明しています。もし読んでいなければ、そちらを読んでから戻ってきてくださいね。
では、ゆっくりしていってください。
もし、記事ではなく動画を見たいという方いれば、下のリンク先から動画を見てください。動画を見ない方は、この記事を読み進めてください。
Byteball | Smart payments made simple - Part 2 of 4 - The DAG
Byteballとは
Byteballを用いると、合意に基づいて正確に実行される安全な契約を結ぶことができます。例え全員が知らない人だらけだとしても、誰も信用する必要はありません。誰かを信用しないと事が進まないという状況は現実にも多くありますが、Byteballのシステムでは誰も信用しなくても事をすすめることができるのです。加えて、たとえ誰かを信用できる状態になっていたとしても、Byteballのシステムの方が依然として圧倒的に安く、速く、より確実です。
しかし、私の言葉をただ鵜呑みにするだけでなく、これらすべてを可能にする技術を掘り下げて見てみましょう。
ByteballとDAG
Byteballは、ブロックのない分散台帳です。ブロックを取り除くことで価値が生まれるのですが、それには幾つかの理由があります。
まず1つ目に、もし我々がブロックとトランザクションを所有していた場合、技術的な設計において2つの情報を所有しないといけないということになります。Byteballはブロックがないため、トランザクションしか所有する必要がなく、システムをよりシンプルにすることができます。よりシンプルであることは、往々にしてより良いことであることが多いです。
2つ目に、ブロックチェーンの設計には多くの変数が存在します。例えば、適切なブロックサイズはどれくらいなのか、であったり、ブロックの適切な生成時間はどれくらいかという問題があります。更に問題なのは、どの値が適切であるかに関して誰ひとりとして合意できないということです。
3つ目に、これが一番重要ですが、ブロックチェーンではブロックを生成する存在が必要となります。彼らが、ブロックに何を書き込むかを決める権限を持つことになります。Byteballにはそのような人々を持たないシステムが存在します。
この3つが、我々が”DAG”を採用した理由です。Byteballではトランザクションはブロックにまとめられることはなく、代わりに直接繋がることになります。個々の新しいトランザクションは、1つ以上の前のトランザクション(親)を参照するシステムとなっています。
これを絵で表したものが下の画像になります。
DAG内では、時間内に処理されるトランザクションの量に理論的な制限はありません。大きさが制限されているブロック内にトランザクションを格納する必要もなく、1つの直線のようにブロックを繋ぐ必要もありません。DAGでは、複数のトランザクションを並列で処理することができ、並行処理の程度を現在の負荷によって動的に変化させることもできます。ブロックチェーンよりも柔軟な仕組みになっているのです。
もう1つ重要な点として、ブロックが存在しないということはPoWではないということです。PoWの仕組みは非常にコストが掛かるのと同時に、誰かがその仕組の維持のためにお金を払う必要があります。PoWでは環境への影響のコストも必然的に価格に反映されてしまいますが、我々はシステムを出来る限り手頃な料金にしたいと思っています。我々はシステムが世界を壊すのではなく、世界に新たな価値を生み出すものであってほしいと思っています。
では、ブロックもなくPoWでもないとすればどのようにDAGは機能するのでしょうか。DAG上では、一度新しいトランザクションが追加されると、ネットワークの参加者にそのトランザクションが見えるようになります。
ネットワークの参加者たちは、新しい取引の下に子のトランザクションを追加することができます。DAGでは、新しいトランザクションは参加者達から素早く存在を認識されます。
これらすべての承認が繋がり、雪玉のようになっていきます。
これが「Byteball」という名前の由来になっています。
しかし、これらの認識や発見というのはその取引の存在が認識されているだけであり、トランザクションが二重支払いでないと証明されたわけではありません。よって、二重支払い対策が必要となります。
我々は既にDAG内に半順序関係を設けています。この半順序関係により、対立するような2つのトランザクションがあり、一方から直接的に親と子のリンクを辿ってもう一方へ到達できる場合、後者のトランザクションをすぐに削除します。
では、上記の画像のように2つのトランザクション間に順序関係がなかった場合どうでしょうか?
そのような状態を避けるため、Byteballには何人かの特別なユーザが必要となります。上記画像のように、彼らはトランザクションを必ず順番がわかるように作成していきます。
ウィットネスは、トランザクションを必ず順序付けた状態で記録します。上記のように、どちらが大きいか順序付けられないようなトランザクションを記録することはありません。
これにより、互いに順序関係の決まっていないトランザクションであっても順序付けをすることが可能になります。そのために、ByteballではDAG上に”メインチェーン”と呼ばれるチェーンを作成します。
メインチェーンは、ウィットネスによって記録されたトランザクションを基に作成されます。メインチェーンは、新しいトランザクションが記録されるたびに更新されます。
また、メインチェーン上にないトランザクションに対しては、メインチェーンに到達する最短経路を設定することとします。これをそのトランザクションのメインチェーン上の場所とします。
これにより、もし二重支払いがあった場合、競合するトランザクションがメインチェーン上に先に存在していた場合有効とみなされ、後に存在するトランザクションは無効とみなされることになります。無効化されたトランザクションもDAG上に存在し続けてしまいますが、そのトランザクションが行う予定であったコインの移動は無視されることになります。
以上から、ウィットネスはByteballのセキュリティにとってとても大事であることがわかります。もう少し詳しく見ていきましょう。
管理権限を持つノードが存在する他の暗号通貨、IOTAやPeercoinと比較してみましょう。他の通貨の管理権限を持つノードは、基本的に正しいトランザクションの履歴を選択できると考えられています。しかし、他の通貨は1つしか管理権限を持っていないため単一障害点[1]になってしまいます。管理権限を持つノードの1つの失敗によって、全てが台無しになってしまいますし、管理権限は開発者によって運用されています。Byteballでは、管理権限を持つウィットネスは12個存在します。
トランザクションの順序付けのために、どれほどウィットネスが重要かを理解していただいたと思います。その為、我々は何か問題が起きる可能性を最小化するため、ウィットネスに関して幾つかのルールを決めなければいけません。
既に、ウィットネスは順序付けてトランザクションを生成することは説明しました。他に挙げておくべきこととして、ウィットネスはコミュニティによって選ばれ、何か問題を起こし信頼を失墜した場合、他の人と交代されるということです。Byteballの最もユニークな特徴は、もし彼らが何か問題を起こした場合、Byteballのコミュニティだけでなく実世界でも何かを失ってしまうという所にあります。
この方法により、Byteballのセキュリティが実世界の価値に支えられていることがわかります。さながらByteballの安全保障の様なものになっています。
例えば、あなたがニューヨークで保険商品の販売を行い成功しているとしましょう。同時にあなたはByteballのウィットネスだとします。もしあなたがByteballのコミュニティで問題を起こせば、コミュニティ内での評判を落とすだけでなく実世界のビジネスでも評判を落とし倒産してしまいます!
この方法の大きなメリットは、Byteballが内部のコミュニティの大きさに依存しないことにあります。
もちろんウィットネスはByteballのエコシステムに貢献するので、トランザクションの手数料を受け取ります。しかし、実世界のビジネスで得るものには比べるに足らない程度のものです。
この手数料を、ブロックの生成能力やインセンティブが内部のエコシステムにしか存在しないPoWやPoSのシステムと比べてみましょう。
さて、今幾つかのトークンとネイティブ通貨[2]があるとしましょう。ブロックの報酬や資産保有による報酬としてネィティブ通貨が得られます。
しかし、他のあるトークン、もしくは他のトークンの組み合わせよりもネイティブ通貨が安かったらどうでしょうか?大きな報酬が得られない場合、問題が起こることは確実です。PoWやPoSなどのようなシステムは、特定の範囲内でしか安定して機能しないのです。
ネイティブ通貨が価値の大部分を占めているときだけ、このような仕組みが機能するというわけです。
したがって、ネイティブ通貨の有用性という部分は非常に重要になってきます。価値の大部分を占めるためには、本当に便利であることが求められます。
Byteballはこの問題を、とてもエレガントな方法で回避しています。
もしByteballのシステムを使えば、自分自身の支払いデータや契約データを台帳上で保護することができます。あなたが支払ったり、支払われたりした情報が複数の独立した人々によって保存・検証され、間違いなく明確かつ最終的な残高であることが約束されるのです。
このシステムは金額の情報だけではなく、どんな契約の情報もその人々(ネットワークの参加者)によって確実に検証され施行されます。これはとても価値のあることです。
さて、このようなサービスに支払う金額は、おおよそシステムのリソースの利用量と比例したものになるべきであり、それが公平だといえます。
リソースの利用額の最も単純明快な見積もりは、トランザクションや契約、その他の保存したいデータの大きさです。データの大きさはbyte換算されます。これが、Byteballの単位がBytesである理由であり、1Byteはちょうど1byteのデータを保存するために必要な金額となります。保存を終わらせるためのトランザクション手数料は、トランザクションに含まれるデータの大きさによって決まります。
このシステムのいいところは通貨の価値が乱高下せず、消費価値に依存していることです。Byteballの背景には、実世界の需要が存在するということです。
1Byteは、1byteのデータをグローバルで安全な分散化されたデータベースに永久に保存するための価値となります。
このデータがあなたのお金や契約を保証します。このようなシステムの実益がどれほど実際の通貨(フィアット)でどれくらいの金額になるかは、そのネットワークが提供するサービスへの需要の程度で決まります。
来る数年で、どれくらいの需要になるかを楽しみにしています。
〜以上〜
最後まで読んでくださってありがとうございます。
残り3つほどあると思うので、それも訳す予定です!
ビットコインアドレス
3MYtZxcEw2y2zFXwK4TiZRKtdga5rwD1Zr
ご支援いただければ幸いです!
補足
[1]1つ欠陥があればすべてのシステムが止まってしまうことです
[2]ネイティブ通貨とは、ブロックチェーンのプロトコル自体を維持するために発行される通貨のことです。マイニング等で得られる通貨であるビットコインが主な例です。