ずっとDuskのコアとなるロジックは、コンセンサスアルゴリズムと仮想マシンの中にあるのだと思っていました。しかし、より下層のアーキテクチャまで掘り下げて初めて気づいたんです。プロトコルの根っこの部分は、実は2つのジェネシス(創世)スマートコントラクトの上に「載っている」——StakeコントラクトとTransferコントラクトです。この2つは、表面的に見えるコンセンサス・プロトコルよりも、はるかに基盤的な役割を持っています。
Transferコントラクトは、資産の流れの入口を扱います。Phoenixの機密トランザクションのルートを通ろうが、Moonlightの公開トランザクションのルートを通ろうが、最終的にはこのコントラクトを通じて状態変更を完了しなければなりません。つまりこれはスマートコントラクト実行の入口でもあり、通常の送金であれコントラクトの呼び出しであれ、まず必ずここを通過します。Stakeコントラクトは、provisioner、ステーキング(質押)数量、報酬の配分、バリデータ集合といった、コンセンサスの安全性に直結する状態を専門に追跡します。先ほど話したslashing(スラッシング)ペナルティも、そして基盤層でトリガーされる状態変更も、このコントラクトが記録することで成立します。
この2つのコントラクトは「ジェネシス・コントラクト」と呼ばれていて、つまり普通の開発者がデプロイできる普通のコントラクトではなく、創世ブロックと一緒にプロトコルへ“書き込まれて固定された”基盤インフラなのです。ある意味では、従来のOSにおけるカーネル・モジュールのようなもので、アプリケーション層の一般的なプログラムとは、特権レベルがまったく違います。この設計意図は——資産移転とコンセンサスの安全性という2つの事柄が、チェーン全体の最も基本的な信頼仮定に直結しているからだと理解しています。もしこの2つのロジックが、普通のコントラクトと同じように、誰でも自由にデプロイして置き換えられてしまうなら、システムの安全境界はどんどん曖昧になってしまう。だからこそ、それらをプロトコル層に“溶接”して、動かせない「土台(不動の基礎)」の領域を切り出す。残りのあらゆる機能は、その土台の上に構築されるのです。
この観点は、私に「プロトコル」と「アプリケーション」という2つの層の境界を改めて理解させてくれました。多くの人はスマートコントラクトのチェーンの話になると、すべてのロジックを「上で動くアプリケーション」として捉えがちです。しかし、資産がどう流れ、コンセンサスがどう維持されるのか——これらの問題は、本来は普通のアプリ層ロジックに決めさせるべきではありません。改ざんできない下限を支える“受け皿”が必要であり、Genesis(ジェネシス)コントラクトはその下限を具体的に体現している、というわけです。#dusk $DUSK @Dusk
Transferコントラクトは、資産の流れの入口を扱います。Phoenixの機密トランザクションのルートを通ろうが、Moonlightの公開トランザクションのルートを通ろうが、最終的にはこのコントラクトを通じて状態変更を完了しなければなりません。つまりこれはスマートコントラクト実行の入口でもあり、通常の送金であれコントラクトの呼び出しであれ、まず必ずここを通過します。Stakeコントラクトは、provisioner、ステーキング(質押)数量、報酬の配分、バリデータ集合といった、コンセンサスの安全性に直結する状態を専門に追跡します。先ほど話したslashing(スラッシング)ペナルティも、そして基盤層でトリガーされる状態変更も、このコントラクトが記録することで成立します。
この2つのコントラクトは「ジェネシス・コントラクト」と呼ばれていて、つまり普通の開発者がデプロイできる普通のコントラクトではなく、創世ブロックと一緒にプロトコルへ“書き込まれて固定された”基盤インフラなのです。ある意味では、従来のOSにおけるカーネル・モジュールのようなもので、アプリケーション層の一般的なプログラムとは、特権レベルがまったく違います。この設計意図は——資産移転とコンセンサスの安全性という2つの事柄が、チェーン全体の最も基本的な信頼仮定に直結しているからだと理解しています。もしこの2つのロジックが、普通のコントラクトと同じように、誰でも自由にデプロイして置き換えられてしまうなら、システムの安全境界はどんどん曖昧になってしまう。だからこそ、それらをプロトコル層に“溶接”して、動かせない「土台(不動の基礎)」の領域を切り出す。残りのあらゆる機能は、その土台の上に構築されるのです。
この観点は、私に「プロトコル」と「アプリケーション」という2つの層の境界を改めて理解させてくれました。多くの人はスマートコントラクトのチェーンの話になると、すべてのロジックを「上で動くアプリケーション」として捉えがちです。しかし、資産がどう流れ、コンセンサスがどう維持されるのか——これらの問題は、本来は普通のアプリ層ロジックに決めさせるべきではありません。改ざんできない下限を支える“受け皿”が必要であり、Genesis(ジェネシス)コントラクトはその下限を具体的に体現している、というわけです。#dusk $DUSK @Dusk
