Cardanoは2019年最もアクティブに開発が進められた暗号通貨プロジェクトのトップにランクされました。 「Santiment2019年市場調査」より

02

Shelley

分散化

Byron期に続くCardano Shelley(シェリー)期は、ネットワークの成長と発展の時代です。メインネットの公開という1つの事象から始まったByron期とは異なり、Shelleyへの移行はサービスの中断を招くことなくスムーズに低リスクで行われるようにデザインされています。

Shelley期はCardanoが分散化を最適化するまでに必要となる初期の重要なステップを網羅しています。例に漏れず、こうした初期ステップは漸次的ですが重要です。Byron期のネットワークは連合型でしたが、Shelley期にはより多くのノードがCardanoコミュニティによって実行される方向にシフトしていきます。ノードの過半数がネットワーク参加者により実行されるようになれば、Cardanoは分散性を高め、結果として安全性と堅牢性が高まります。

Shelleyではまた、委任およびインセンティブスキームも導入されます。ステークプールとコミュニティによる運営を促進する報酬システムです。プルーフオブステークネットワークでは、ユーザーは自分のADAを賭けてネットワークに参加します。ゲーム理論とプルーフオブステークネットワークに関する最新研究を使用してきめ細やかにデザインされた委任およびインセンティブスキームにより、ユーザーはコミュニティにより実行される常駐のネットワークノードであるステークプールに自分のステークを委任し、ネットワークに誠実に参加することによって報酬を得ることができます。

Shelley期が終了するまでに、Cardanoは他の大規模なブロックチェーンに比べて50~100倍分散化され、1000程度のステークプールで平衡に達するようにデザインされたインセンティブスキームを有すると期待されています。現在の主だったブロックチェーンネットワークは10に満たないマイニングプールにコントロールされていることが多く、悪意のある行動により侵害される深刻なリスクにさらされています。Cardanoは、そもそも大規模な分散化を促進するためにデザインされたシステムによりこれを回避します。そればかりでなく、Cardanoネットワーク全体がプルーフオブワークブロックチェーンに比べてほんのわずかの電力、すなわち小さな国にかかる電力の代わりに、家1件分の電力で賄うことができます。

Shelley期はネットワークの自然な成熟期を顕現しています。実用性と報酬が増し、新規ユーザーにとっても従来のユーザーにとっても価値が高まります。さらにこの時期は将来に向けた準備期間でもあります。Shelleyが完全に分散化されたネットワークの素地を作り、Goguen、Basho、Voltaireの各期とともにまったく新しいいアプリケーションエコシステムが到来するのです。

Shelley期の関連研究(英語のみ)


Ouroboros Praos: An Adaptively-Secure, Semi-synchronous Proof-of-Stake Blockchain(Ouroboros Praos:適応的安全な準同期式プルーフオブステークブロックチェーン)

Ouroboros Praos(ウロボロスプラオス)を分析し論じる研究論文。Ouroborosを改良し、Cardanoの適応的攻撃者に対する耐性を高めた証明可能安全性をもつプルーフオブステークプロトコル。


Ouroboros Genesis: Composable Proof-of-Stake Blockchains with Dynamic Availability(Ouroboros Genesis:ダイナミックアベイラビリティをもつコンポーザブルなプルーフオブステークブロックチェーン)

Ouroboros Genesis(ウロボロスジェネシス)を分析し論じる研究論文。Ouroboros Genesisはステークホルダーがブロックチェーンに安全に参加または再参加することができるように、Ouroborosのプルーフオブステークプロトコルをさらに改良したプロトコル。


Stake-Bleeding Attacks on Proof-of-Stake Blockchains(プルーフオブステークブロックチェーンに対するステークブリーディング攻撃)

チェックポイントのないプルーフオブステークブロックチェーンに対する攻撃を紹介する研究論文。トランザクション手数料および報酬と、PoSプロトコルのセキュリティプロパティ間の密接な関係を示す。


Secure Two-Party Computation over Unreliable Channels(信頼性のないチャネルにおける安全な二者間コンピュテーション)

信頼性の高いチャネルがないことを想定(現実世界の環境を反映)した、プレーンモデルによる二者間コンピュテーションを検討した研究論文。コミュニケーションを最適化し、ノイズ耐性のある、セミオネストな二者間コンピュテーションの実現可能性を調査し、それを基に情報理論の手法を考案している。


Decreasing Security Threshold Against Double Spend Attack in Networks with Slow Synchronization(遅行同期のネットワークにおける二重支払い攻撃に対するセキュリティ閾値の減少)

プルーフオブワークブロックチェーンにおける二重支払い攻撃の確率の変化を、ネットワークパラメーターとの関係から研究し、攻撃を成功させる最小の攻撃者の割合を確立とともに紹介した研究論文。


A Formal Specification of the Cardano Ledger(Cardanoレジャーの形式仕様記述)

Shelleyのリリースにより導入された、台帳ルールの形式仕様記述および実行可能モデル。


Specification of the Blockchain Layer(ブロックチェーン層の仕様)

Cardano Byron期およびShelleyへの移行期における有効ブロックの定義およびブロックチェーンを追加する際の要件を形式化した形式仕様記述。


Engineering Design Specification for Delegation and Incentives in Cardano Shelley(Cardano Shelleyにおける委任とインセンティブのエンジニアリングデザイン仕様)

Cardanoが委任機能をサポートし、インセンティブを提供するために必要な追加機能のデザインの詳細を示すエンジニアリング仕様。


Ouroboros-BFT: A Simple Byzantine Fault Tolerant Consensus Protocol(Ouroboros-BFT:ビザンチンフォールトトレラント性をもつシンプルなコンセンサスプロトコル)

ビザンチンフォールトトレラント性を持つ台帳コンセンサスのシンプルな決定性プロトコルを定義した論文。プロトコルが同期ネットワークでn個のサーバーにより実行されているとき、t < n/3である限り、tの数にかかわらずビザンチンフォールトを許容できる。


Ouroboros Chronos: Permissionless Clock Synchronization via Proof-of-Stake(Ouroboros Chronos:プルーフオブステークを経由した非許可型クロック同期)

Ouroborosコンセンサスプロトコルの新バージョン、Ouroboros Chronos(ウロボロスクロノス)を紹介する学術論文。グローバルタイム機能へのアクセスを想定せずともUC安全性を保証することで、プルーフオブステークシステム積年の課題に取り組んでいる。

Shelleyの開発範囲


コンセンサスのインセンティブと手数料

コンセンサスのインセンティブと手数料

インセンティブスキームを設計する上での目標は、各ユーザーが自己の利益のもとに行動することで、システム全体を安定性および信頼性をもって機能させることです。数学、ゲーム理論、経済理論を使用したインセンティブシステムはこの点に集中します。フルノードを操作している場合の適切な報酬、ステーク委託のインセンティブ、トランザクション手数料の設定方法などがここに含まれます。


委任証明書

委任証明書

ステークの委任は、ADA保有者が指定しブロックチェーンに記録される委任証明書により機能します。ADA保有者は新たな委任証明書を発行することにより、いつでも委任の設定を変更できます。委任中であっても、ADA保有者は自分のADAを独自の裁量で使用する権利を保持します。


OUROBOROSの委任機能に関する研究論文および実装

OUROBOROSの委任機能に関する研究論文および実装

分散化の鍵となるのは、ステークホルダーがステークを委任できることです。Cardanoのようなプルーフオブステークシステムでは、ステークホルダーにプロトコル参加が義務づけられています。これが難しいステークホルダーが義務を果たせるようにするために、こうした義務を他者に委任することができるいわゆるステークプールと呼ばれる機能を設定しました。ステークプールは常にオンライン上にあるコアノードを操作し、プロトコルに参加してブロックチェーン内でブロックを生成します。IOHKの研究者はこれをどのように達成するかについてのアウトラインを示した論文「Reward Sharing Schemes for Stake Pools(ステークプールの報酬共有スキーム)」を発表しており、コードへの実装が始まっています。


ステークプール

ステークプール

すべてのADAステークホルダーがCardanoノードを恒常的に操作するリソース、知識、そして熱意を持っているわけではありません。これを踏まえたうえで、安定した効率の良いネットワークノードを推進するために、ADA保有者がCardanoステークプールにステーキングの権利を委任できるシステムが提供されます。ステークプールとは、Cardanoネットワークに恒常的に関与でき、応答時間、セキュリティ、即時性をサポートできる適切なハードウェア環境を備えたネットワーク参加者が運営するCardanoノードです。ADA保有者からステークを委任されたステークプールオペレーターは、ネットワークをサポートすることで報酬を獲得します。現在進行しているネットワークの分散化を確保し、数多くのステークプールへの委任を促進するために、インセンティブモデルおよび報酬モデルがデザインされています。インセンティブモデルにより促進された最適なステークプール数はパラメーターであり、ネットワークのパフォーマンスを整えるために調節することができます。


OUROBOROS PRAOS

OUROBOROS PRAOS

Cardanoの拡大に伴い、セキュリティの維持が不可欠となります。Ouroboros Praos(ウロボロスプラオス)はプルーフオブステークプロトコルであるOuroboros(ウロボロス)の改良版です。Praosは適応的攻撃者に対するセキュリティを強化し、より過酷なネットワーク環境を容認しながら効率化(すなわちスケーラビリティ)を実現します。

リーダーの選出を秘匿し、前方秘匿性の鍵変化型署名を使用することにより、Praosは強力な敵対者でも次のスロットリーダーを予測し、DDos攻撃といった対象を絞った攻撃を行うことを不可能にします。またこのプロトコルは、ステークの過半数が誠実なステークホルダーに保持されている限り、悪意によるメッセージ配信の遅延や、ステークホルダー数の拡大における個人参加者の漸進的腐敗への耐性を維持します。


OUROBOROS GENESIS

OUROBOROS GENESIS

Ouroboros Genesis(ウロボロスジェネシス)はOuroborosプロトコルを進化させた次世代バージョンであり、ダイナミックアベイラビリティにおける安全性を確保します。各ノードが事前のアレンジなしにオフラインとなり再接続しても、スムーズにプロトコルを実行できる関数型モデルを導入しています。

主要なセキュリティカンファレンスで発表された本 プロトコルはまた、信用できる第三者やチェックポイントを必要とせずにジェネシスブロックのみに基づいて実行チェーンに再参加する「ジェネシスからのブートストラップ」方式を可能とする、新たなチェーン選定ルールを採用しています。Genesisにより、各ステークホルダーは、新規参加であっても再参加であっても最新バージョンのブロックチェーンを得ることができるため、ロングレンジ攻撃を回避できます。

ここで重要となるのは、Ouroboros Genesisを通じて、Cardanoおよび他のプルーフオブステークブロックチェーンにプルーフオブワークブロックチェーンと匹敵する安全性が保証されるということです。


OUROBOROS BFT

OUROBOROS BFT

Shelley期に向けての開発段階において、OBFTの実装は主要なマイルストンとなります。Cardano 1.5およびOBFTのリリースは、段階的分散化に向けてネットワークの準備が開始されたことを示しています。ユーザーが現在使用する機能性にこの更新は直接影響しませんが、Shelleyの完全な分散化を準備するために必要な技術的ステップです。


DAEDALUSの委任機能

DAEDALUSの委任機能

Daedalus(ダイダロス)では、シンプルで直感的なUIを使用して、ユーザーがアプリケーション内からステーキングを委任することができるようになります。ADA保有者は委任先のステークプールを選ぶにあたり、利用可能なステークプールおよび、推定報酬額を含む関連情報を確認することができます。またユーザーは、いつでもウォレット内で委任設定を変更することができます。


ウォレットバックエンドの再デザイン

ウォレットバックエンドの再デザイン

Daedalusウォレットの新しいバックエンドデザインは、IOHKの研究者が作成したCardanoウォレットの形式仕様記述を基にしており、形式仕様記述から構築し、形式的検証を用いてテストした初の暗号通貨ウォレットです。通常ユーザーおよび取引所ユーザーのいずれもが、パフォーマンスの向上とともに、厳密な手法により作成されたウォレットが持つ比類のない安全性を享受できます。


ウォレットの分離

ウォレットの分離

ウォレット機能は、機能の独立性を高め、依存性を弱めるためにノードの実装から分離、削除されました。


ペーパーウォレット V2

ペーパーウォレット V2

安全性強化のため、ペーパーウォレットの新バージョンではオフラインでペーパーウォレットの生成を行うことができ、Daedalusをブロックチェーンと同期させる必要がなくなりました。新しい単一アドレス方式が使用されますが、ペーパーウォレットの復元では、前バージョンのペーパーウォレット証明書との互換性が保持されます。ペーパーウォレットを通常のADAウォレットにリンクさせるという、より簡単で直感的なプロセスになります。Daedalusは、監査を目的とした読込専用モードでのペーパーウォレット復元もサポートするため、秘密鍵はオフラインで安全に保存されます。


ハードウェアウォレットのサポート

ハードウェアウォレットのサポート

ハードウェアウォレットは当初YoroiおよびAdaLiteの各ライトウォレットでサポートされていましたが、Daedalusウォレットでもサポート対象となりました。これにより、ユーザーはLedger Nano、Ledger X、TrezorなどのハードウェアウォレットにADAを安全に保管できます。


ウォレット復元を迅速化

ウォレット復元を迅速化

ウォレット復元のプロセスが改善されました。ウォレットの残高が復元後即座に表示される一方、トランザクション履歴はバックグラウンドで復元されます。この作業自体は完了しましたが、ウォレット復元プロセスの改良は継続しています。


DAEDALUSバックエンドおよび復元の改良

DAEDALUSバックエンドおよび復元の改良

ウォレットにはユーザーエラーがつきものです。ウォレット復元方法の改良は、ユーザーエクスペリエンスの向上、ユーザーエラーの減少につながります。このため、BIP39ニーモニックコードを個別のハッシュキーにリンクさせます。これにより、ユーザーはニーモニックコードが正しく入力されているかを識別できるとともに、簡単にバックアップと復元ができるようになります。ハッシュキーは印刷またはペーパーウォレットや通常のウォレットとともに保管することができ、コードおよびベクターイメージの両方で表示されます。ニーモニックコードを入力すると、ハッシュキーが表示されます。ユーザーは表示された鍵と保管された鍵を比べればいいだけです。


ホット&コールドウォレット

ホット&コールドウォレット

従来、コールドウォレットは可読性を犠牲にして安全性を提供してきました。ホット&コールドウォレットの実装により、ホットウォレットとコールドウォレットを入れ替えることが可能となりました。実際には、ホットウォレットから秘密鍵を削除することで、可読性を残しながらコールドウォレットとして機能させます。これにより可読性を持つコールドウォレットでトランザクションや資金のエビデンスを提供でき、第三者への送金を行うことができます。ただし、新規トランザクションを行うことはできません。


ノードおよびブロックチェーンのステータスUI

ノードおよびブロックチェーンのステータスUI

ブロックチェーンおよび、コンポーネント間コミュニケーションのステータスをグラフ表示する新たなインターフェイスが追加されます。システムの状態を確認できるため、あらゆる問題を特定することができます。


BIP44階層的決定性ウォレットアドレス

BIP44階層的決定性ウォレットアドレス

Cardanoは階層的決定性(HD)ウォレットを追加しています。HDウォレットはBIP32(ビットコインインプルーブメントプロポーザル)で紹介され、後にBIP44で改良されました。この鍵の誘導方式では階層的決定性を持つ鍵を使用して、鍵ペアを単一のマスターペアから引き出します。HDウォレットは親鍵からスタートして、親鍵のハッシュ値とインデックス値から新たに子鍵を生成します。インデックス値を変えることにより異なる鍵が生成されますが、これは親鍵にインデックス値を与えることによって確実に再構築することができます。HDウォレットでは、ユーザーが使用のたびに新たな鍵を生成、保管する必要はありません。親鍵のみを保管しておけば、残りの鍵は引き出すことができます。


簡潔なアドレス

簡潔なアドレス

ウォレットは複数のアドレスで構成されており、各アドレスにADAがあります。現在、ウォレットのアドレスは文字と数字の長い羅列であり、一目で各アドレスを特定することは困難です。Cardanoのアドレスはビットコインのアドレスに比べて非常に長いのが現状です。この機能によりウォレットアドレスを短くすることができ、取引きの際のコミュニケーションが容易になります。この取組みの目標はアドレスの長さをビットコインと同等のレベルまで近づけることです。このため、アドレスに含まれる情報を最小化し、ステーク委任情報の表現方法を改善します。


鍵変化型署名(KEY EVOLVING SIGNATURES:KES)

鍵変化型署名(KEY EVOLVING SIGNATURES:KES)

鍵変化型署名はセキュリティ機能であり、スロットリーダーの鍵を定期的に変化させることで、過去のスロットリーダーから盗まれたり不正に購入された鍵を使用して過去のスロットに変更を加えようとする悪意の使用を防ぎます。


マルチシグのトランザクション

マルチシグのトランザクション

Cardanoにおける複数署名方式(マルチシグ方式)トランザクションにより、Daedalusでは共同資産管理をしている複数の人々の間でウォレットを共有できます。例えば、二人で共有された単純なジョイントウォレットでのトランザクションはその二人の署名を必要とします。また、三人で共有するウォレットの場合に、トランザクションの必要署名者をそのうちの二人にするといったような、複雑な設定も可能です。これは、誰か一人の鍵が漏洩したときにも不正利用を防止するのに効果の高いセキュリティ機能であり、資産の利用に合意を必要とするようなジョイント式の資産管理を可能にします。


旧アドレス方式との互換性

旧アドレス方式との互換性

BIP44ウォレットアドレスの実装後も、従来のウォレットアドレスにADAが残っている場合があります。Cardanoは無期限で従来のウォレットアドレスをサポートします。したがって、新たなウォレットアドレス方式の導入後もADAを移動させる必要はありません。


ウォレットバックエンドにおける複数コードベースのサポート

ウォレットバックエンドにおける複数コードベースのサポート

ウォレットのバックエンドはノードから分離され、コミュニケーションインターフェイスは取り除かれました。これにより、技術仕様に従い、一つはHaskell、一つはRustといった複数のコードベースで同機能のノードを実装することが可能となります。


スムーズなコードアップデート

スムーズなコードアップデート

他のブロックチェーンに見られるようなハードフォークに陥ることなく、Cardanoではスムーズなコードの更新を実現します。一回の更新で旧コードから新コードへ移行する代わりに、新コードは旧コードとともに組み込まれ、旧コードのノードは継続して使用されます。そして、ネットワークで十分な数が更新されて初めてコードの移行が実施されます。


高速で耐性に優れたストレージ

高速で耐性に優れたストレージ

Shelley期ではストレージシステムの再設計、再構築によりI/O効率を改善し、Cardanoノードとウォレットの性能を向上させました。また、ブロックチェーンデータに近年起こった、終了前または中止時のシャットダウンによる破損など、一般的なデータ破損に対するウォレットの処理機能も向上しています。


デザインを一新したネットワーク層

デザインを一新したネットワーク層

Shelley期に向け、ネットワーク層のデザインにはパフォーマンスおよびリソースのフル活用に主眼を置いた抜本的な変更を施しました。パイプラインをサポートすることで複数のリクエストが毎回リプライを待たずとも送信できるようすべてのネットワークプロトコルを再設計し、ネットワークの利用効率を大幅に改善しました。


ネットワーク

ネットワーク

完全に分散化された暗号通貨は完全に分散化されたネットワーク層を必要とします。これが、ノードがネットワークに参加し、トランザクションとブロックの送受信を可能にするシステムの一部を構成します。ネットワークの分散化により、中央当局に頼らないP2Pトランザクションが可能になります。また現状では、特別なファイアウォールやホームインターネットの設定も必要としません。ネットワークは誰でも参加できるオープンなものである必要がありますが、既存のP2Pネットワークは少数の敵対的なノードに対してすら脆弱です。IOHKでは、このような既存のP2Pネットワークをたたき台として研究者達が推奨するベストプラクティスを実現しています。また新しいネットワーク層は、大規模なDDoS(分散型サービス拒否)攻撃から、ネットワークを保護する役割を果たします。

ネットワークプロトコル

上記を遂行するために、Cardanoは、以下のミニプロトコルで構成される、完全にカスタム仕様のネットワーク層を使用しています。

  • ノード2ノードプロトコルバンドル
  • ノード2クライアントプロトコルバンドル
  • ハンドシェイクバージョンネゴシエーション
  • ベアラートポロジー設定および管理 - ピアディスカバリーおよび選定
  • チェーン同期プロトコル
  • ブロックフェッチプロトコル
  • トランザクション送信プロトコル
  • 多重化層

BYRON-SHELLEY移行フレームワーク

BYRON-SHELLEY移行フレームワーク

BYRON-SHELLEY移行フレームワークは、Byron期からShelley期へ安全に移行する手段を提供しています。連合型ネットワークからの旧ノードはブロック生成の責任をステークプールへと徐々に委譲し、DevOpsチームはチェーンの成長や正常に委任されたステーク量など健康状態を監視します。このメカニズムがCardanoの重要な段階におけるリスク回避のカギとなります。


BYRON-SHELLEYネットワークプロキシ

BYRON-SHELLEYネットワークプロキシ

これはネットワークインフラストラクチャーの一部で、Shelleyへのアップグレード後もCardanoの新旧ノード間におけるコミュニケーションの継続を可能にします。Byron互換期では、このプロキシを使用することにより、ShelleyノードがByron期に生成されたブロックを検証することを可能にし、レガシーノードによるネットワークの運用性を確保します。


メモリープールの再実装

メモリープールの再実装

メモリープールはブロック生成前の未処理のトランザクションを保管します。Shelley期に向けて、効率性を高めて再実装したCardanoメモリープールにより、パフォーマンスが向上しました。また、DDoS(分散型サービス拒否)攻撃への耐性強化を意識してデザインされています。


トランザクション作成および送信の再実装

トランザクション作成および送信の再実装

Shelleyのコードベースでは、トランザクションの作成および送信プロセスは2段階に分かれています。これにより、ハードウェアウォレットや多くの取引所で要件となる、オフラインでのトランザクション作成および署名が可能となります。


チェーンの生成および検証コンポーネント

チェーンの生成および検証コンポーネント

チェーンの生成および検証コンポーネントは、テストを目的としたチェーンのランダムな生成および検証に使用され、様々なシナリオにおけるコンセンサスおよびネットワーク機能の徹底したテストを可能とします。チームはシステム上でこれらを使用したプロパティベースのテストを実行し、稀なエッジケースでのみ起こりうる、通常のテスト方式ではほぼ発見不可能な欠陥を特定し、修正することができます。


ログおよび監視

ログおよび監視

操作性能と不具合の診断を追跡する追加機能を備えた、ログシステムおよび監視システムが実装されました。構造的に機械と人間による可読性を持つフォーマットにより、検索可能性と使いやすさを高めています。ログシステムの改良により、ライブモニタリングおよび測量が可能となると同時に、ランタイム時にコンポーネントレベルで起動、調節ができるため、再起動なしにログ設定が変更できます。


コードの改良と再実装

コードの改良と再実装

Cardanoネットワークが初めて公開されてから、全コードベースを強化するために多大な努力が払われました。時には全面的な書き直しまで行いながら、コードの基本構造とともに効率を改善してきました。ストレージや同期といったネットワークの核となる要素もまた再設計ののちに再実装し、コードベース全体のパフォーマンス、信頼性、保全性の向上を実現しました。


Shelleyインセンティブ付きテストネット

Shelleyインセンティブ付きテストネット

Shelleyインセンティブ付きテストネットはCardanoネットワークの分散化へ向けた最初の重要なステップです。ユーザーは、箱庭の環境でADAをリスクに晒すことなくステークプールを運営し、自分のステークを委任して - これは長期にわたるCardanoの成功の基盤となります - 実際の報酬を稼ぐことができるのです。テストネットの一環として実際の報酬を提供することにより、ゲーム理論と行動経済学を検証することができます。これはインセンティブメカニズムに裏打ちされた、今後の健全なネットワークの生命線ともなるものです。

ネットワークの分散化やステークプールの運営、ステークの委任などShelleyの主要機能を2019年内に実装し公開することはIOHKの目標でした。インセンティブ付きテストネットの完全公開により、この目標は達成され、このテストネットの結果およびコミュニティからのフィードバックはCardanoメインネットにおけるShelley機能の開発に直接資することになります。


Medusa

Medusa(メデューサ)はGitHubコードリポジトリをリアルタイムにビジュアル化した、プロジェクト履歴の全貌、舞台裏で起こっているエンジニアリングワーク、そしてコミュニティのチャートを目の当たりにできる「生きたアートワーク」です。

Cardano SL

Ouroborosプルーフオブステークプロトコルを実装した暗号通貨およびブロックチェーンネットワーク

github.com/input-output-hk/cardano-sl

リポジトリを選択

フルスクリーンモード