以下はSundaeswap Finance.medium.comに掲載された記事「The Vasil Hard Fork — From a dApp Builder’s Perspective」を翻訳したものです。
Vasilハードフォーク:dApp Builderの視点から
はじめに
Cardanoは他のブロックチェーンと同様に常に進化しており、オンチェーンでの進化はしばしば新機能や更新機能を制定するためのハードフォークで起こります。
Cardanoでは、これらのイベントは年に数回行われ、しばしば重要人物の名前が付けられます。「Vasilハードフォーク」と名付けられた次のイベントはもうすぐで、多くの人が熱い期待を寄せています。この重要なステップでは、Cardanoのパフォーマンス、スループット、スケーラビリティを強化するさまざまな新機能が導入されます。また、ブロックチェーンと相互作用する、あるいはブロックチェーンの上に構築される取引所やDAppsは、変更の一部が後方互換性を持たないため、影響を受けることになります。
この記事は、ハードフォーク(およびハードフォークコンビネーター、Cardanoがハードフォークイベントで使用する独自の技術)に関する背景情報、Vasilアップデートに含まれるもの、開発者や他のチェーンが期待すべきこと、Vasilの実装後にSundaeSwapコミュニティに与えられるオプションの4部構成になっています。
ハードフォーク
ハードフォークとは、ブロックチェーンのプロトコルを根本的に変更することで、多くの場合(常にではありませんが)、2つのブランチ(「フォーク」)、つまり2つのブロックチェーンが作成されます。ハードフォークのイベント中、フォーク前は有効だった取引の一部がアップグレード後のフォークでは無効となることがあります。このため、ハードフォークでは、すべてのネットワーク・ノードが新しいプロトコル・ルールにアップグレードする必要があります。このような変更は過激かもしれないが、ハードフォークは比較的よくあることです。
ブロックチェーンは複数のハードフォークを経る可能性がある。例えば、ビットコインはこれまで4回の大きなハードフォークを経験しています。Segregated Witness(SegWit)、Bitcoin Classic、Bitcoin Cash、Bitcoin Gold(SegWitは2015、Classicは2016、CashとGoldは2017)、さらにその他の小さなフォークが無数に存在します。
一方、イーサリアムも複数のハードフォークが行われています。特筆すべきは、イーサリアムの大きなフォークイベントの1つが、今では悪名高い2016年のDAOハッキングに端を発し、ネットワークの分裂を招いたことです。このフォークは、やや物議を醸しましたが、盗まれたETH(6000万ドルすべて)を所有者に返還されました。これはイーサリアムのチェーンをロールバックすることで行われ、事実上、新しいフォーク:イーサリアムクラシックが誕生したのです。ハードフォーク(および所有者への資金返還)を拒否した人々は、クラシックに固執しました。それ以外の人々は、今日まで主要な暗号プレーヤーの1つであるイーサリアムのチェーンに移行しました。
Cardanoのハードフォークコンビネーター
ハードフォークのイベントは、チェーンの活動に大きな混乱をもたらすという意味で、しばしば「トラウマ的」とみなされます。時には、新しいコードベースを実装するために、ネットワークを一時的に完全に停止しなければならないこともあります。十分に迅速にアップグレードされなかったノードは新しいルールを拒否し、DAppsは予期せぬ動作をしたり、完全に動作しなくなったりするかもしれません。フォークのきっかけが何であれ、(Vasil氏のように)計画的であれ、(DAOハックのように)敵対的な行為に反応して起こったものであれ、ハードフォークは決して小さな仕事ではありません。それらは非常に慎重な計画、テスト、実装を必要とします。
カルダノの開発者たちは、「スムーズな」コード更新を重要視しています。そこで彼らは、ハードフォークのチェーンへの影響を「和らげ」、これらのオンチェーンイベントに関連する「トラウマ」を排除する独創的な方法、ハードフォーク・コンビネーター(HFC)を考え出しました。
この技術は、まさに書いてあるとおりに、2つのプロトコルを1つのプロトコルに統合するものです。カルダノのエンジニアは、これを 「シーケンシャルコンビネーション」 と呼んでいる。実際には、フォークイベントの後、チェーンは元のプロトコルをしばらく実行した後、更新されたプロトコルに切り替わる。
ここにHFCのユニークさがあります。ブロックの生成は停止しないので、チェーンに切れ目がなく、プロトコル間の移行がスムーズかつ優雅に行われるのです。例えるなら、カルダノ・ブロックチェーンの進化をリレーレース(駅伝)に見立て、ハードフォークのたびに、ある走者が次の走者にバトンタッチするタイミングを表していると考えてください。そして、バトンの受け渡しがスムーズに行われるよう、しばらくの間、両者は完全に同期して走ります。そして、リレーの走者は走り出します。カルダノでは、このようなイベントが年に数回行われるため、具体的な名前がついていることが多いです。その次が、近々行われる「Vasil」ハードフォークです。
Vasilのアップデートがもたらすもの
Vasilは7月4日20:20 UTCからテストネット上で実行されています。テストネットの展開は、オンチェーンコードの動作の監視と、最終的な統合プロセスの準備の2つを可能にします。プロジェクト開発者、ステークプールオペレーター(SPO)、取引所は、7月29日に予定されているメインネット展開に先立って、新しいフォーク上でコードをテストする時間を得ることができます。
VasilはCardanoにとって非常に重要なアップデートを意味します。公式ブログの記事によると、このアップデートは、拡散パイプラインや4つのCardano Improvement Proposals(CIP)、CIP-31、CIP-32、CIP-33、CIP-40などのいくつかのメカニズムを通じて、機能性、性能、拡張性、相互運用性の向上をCardanoにもたらすとされています。以下、それぞれについて説明します。
Diffusion pipelining:拡散パイプライン:Diffusion pipeliningは、ブロックの伝搬時間を改善することで、より高いスループットを可能にします。パイプライン化とは、ブロックの検証と伝達を効率化することで、ブロックが生成されてから5秒以内にネットワークに伝達されることを目指します。パイプラインは、完全な検証が行われる前にブロックを伝搬させることでこれを実現します。
Reference inputs:参照入力 (CIP-31) :データムは単に情報の一部です。カルダノが使用する拡張未使用トランザクション出力(eEUTXO)モデルでは、トランザクションの各出力は何らかのデータを(そのハッシュを)運びます。Vasil以前は、スクリプトがデータを「見る」ためには、トランザクションの入力の1つとして消費されなければならないことを意味しました。そのため、一度に1つのトランザクションしか、そのデータを使用することができませんでした。このプロセスは非常に非効率的でした。
Reference inputs(参照入力機能)を使えば、実際にデータを使わなくても、未使用の出力データに含まれる情報を見ることができます。これにより、多くのトランザクションが並行してこのデータを読み出し、利用することができるようになりました。
また、dAppは各トランザクションでデータを正しく「再作成」することを気にする必要がないため、一部のトランザクションを簡略化することができます。
Inline datums:インラインデータム (CIP-32):インラインデータム機能は、ハッシュだけでなく、データの内容を直接出力に格納することができます。これはオフチェーンコードの仕事を大幅に簡素化します。なぜなら、オフチェーンコードは、使うべき出力に正しくハッシュするデータム(datum)を独立して保存する必要がなくなるからです。
Reference scripts :参照スクリプト(CIP-33):スクリプトのサイズはある種の問題を提示します。各トランザクション内でスクリプト全体を渡すと、dApp開発者が遵守しなければならないすでに厳しい予算の大部分を消費し、冗長なデータでチェーンを膨らませ、チェーン全体のスループットを苦痛なく制限し、高い(そして同様に不必要な)トランザクション手数料を発生させることになります。チェーンを保護するためにトランザクションのサイズを制限することはできますが、これはdApp開発者が達成できることを制限し、Cardanoのエンドユーザー体験に影響を及ぼします。
参照スクリプトは、スクリプトを出力に直接添付し(データム:datumのようなもの)、別のトランザクションからそのスクリプトを参照します。これにより、トランザクションがスクリプト全体を何度も通過させるのではなく、検証中にそれらのスクリプトを検索(または「参照」)することができるようになります。
参照スクリプトを使用すると、以前にプリントされたスクリプトを将来のブロックにさらに組み込むことができるようになります。
参照スクリプトを含めることは、参照スクリプトを使用するトランザクションのデータ量が少なくなり、トランザクションが小さくなることを意味する。これは逆に、dAppの開発者がより多くの機能を実装でき、トランザクションが迅速に処理され、その結果コストが下がることを意味します。これにより、ユーザーにとっての取引手数料が大幅に削減されます。
リファレンススクリプトにより、dDAppはオンチェーンストレージコストを一度支払い、それを再利用することができます。
Collateral outputs :担保のアウトプット(CIP-40):Plutusトランザクションを提出するには、分散型サービス拒否(DDoS)攻撃の可能性を避けるために、担保(取引手数料の150%に設定)が必要です。Vasil以前は、悪意のある、あるいはバグのあるdAppやウォレットがフェーズ2の検証(フェーズ1とフェーズ2の検証の詳細については、この素晴らしい記事を参照してください。)に失敗したトランザクションを送信すると、ユーザーは担保UTXOに格納されているすべての資金を失うことになります。この資金は、無効なトランザクションをチェックするためにリソースを浪費したSPOとデリゲータを補償する「手数料ポット」に充てられます。
ポストVasilでは、開発者は担保の変更を受け取るアドレスを指定できるようになります。そのため、トランザクションが検証に失敗しても、担保の金額のみが取得され、残りの資金は指定された変更アドレスに送られます。
VRF(Verifiable Random Function:検証可能なランダム機能(VRF)プロセスの機能強化)プロセスの強化:Vasil以前のブロック検証では、ネットワークホップごとに2つのVRF関数が必要でした。今回のアップデートにより、ブロック検証は1つのVRF関数で済むようになり、検証の高速化が期待されます。
Plutus V2:Vasilで導入されたPlutus V1用のアップデート
Vasilのアップデートには、Plutus v1スクリプトに対する3つの具体的な強化が含まれていますが、簡潔さのため、ここでは簡単にのみリストアップします。
- Plutusエバリュエーターのスピードアップ
- コストモデルパラメータの更新
- その他の入力のデータムおよびレディーマの追加
Vasilのアップデートで期待されること
Vasilは、2021年に亡くなったカルダノのアンバサダーである故Vasil St. Dabovに敬意を表して名付けられたものですが、導入される新機能やアップグレードの範囲が非常に広く、インパクトが大きいため、カルダノにとって大きな出来事となります。IOGの言葉を借りれば、Vasilはシェリー経由のステーキングの展開以来、最も重要なネットワークアップグレードとなります。
このアップデートに伴い、Cardanoはよりスケーラブルで柔軟なものとなり、開発者はより多くのユースケースに適した、より新しく優れたDAppsを作成することができるようになるのです。
よくある質問の1つは、ハードフォークとそれがもたらす新機能が、すでに展開されているdAppsにどのような影響を与えるかということです。カルダノ・ブロックチェーンは後方互換性を保っており、これまで通りこれらのトランザクションを実行することができます。
より微妙な答えは、もちろん、より興味深いものです。まず、既存のコントラクトは引き続き機能するが、新機能を利用することはできません。例えば、参照スクリプトやインラインデータを使用する取引は、Plutus V2スクリプトによってロックされた資金のみを含まなければなりません。つまり、これらの新機能が旧来のコントラクトのセキュリティ保証を変更するリスクはありませんが、dApp開発者がその恩恵を受けるためにコントラクトを変更しなければならないことを意味します。これには、例えば新しい監査が必要になる可能性が高いと予想されます。
さらに、オンチェーンコードは影響を受けませんが、多くのdAppは「オフチェーン」システムと手をつないで動作しています。これらのシステムは、トランザクションを構築したり、dAppのグローバルな状態に関する統計をロールアップしたりといったことを行います。dAppのオフチェーンコードは、新しいポストハードフォークトランザクション形式を認識し、正しく解釈できるように更新する必要があります。dAppによって、これは簡単な場合もあれば、非常に複雑な場合もあり、多くの場合、複数の組織が調整する必要があります。SundaeSwapでは、この作業に懸命に取り組んできました。この作業の一部を概説し、各dApp開発者とエコシステム構築者が何をしてきたかを垣間見ることは、興味深いことだと思いました。
VasilはSundaeSwapにどのような影響を与えるか
前述の通り、オンチェーンコントラクト(dAppの中で最もセキュリティに敏感な領域)は影響を受けません。以下は、アップデートが必要だったオフチェーンシステムの一部です。
私たちがしなければならなかったこと
- Ogmiosから読み取るためのGoクライアントライブラリである「Ogmigo」を更新し、新しく追加されたフィールドを認識できるようにしました。
- スクリプトのコンパイルに影響を与えず、スクリプトのハッシュを変更することなく、有効なポストVasilトランザクションを作成するために、トランザクションの構築を更新します。
- UTXOのクエリに関するcardano-nodeの性能低下を回避するため、scooperソフトウェアを更新しました。
- トランザクションへの入力の値を調べる多くの場所を更新し、現在では付随する出力を指すことがあります。
- 統計のロールアップとイールドファーミングに関連するすべてのコードの全般的な見直しを行い、我々の仮定に違反する可能性のある場所を特定しました。
- これらすべての変更点の徹底的なテストを行いました。
さらに、現在配備されているコントラクトでは、節約とスケーラビリティの改善を利用できませんが、すでに新しいバージョンのコントラクトに取り組んでいました。まだ初期段階ですが、この作業には、発売以来判明した劇的な改善や新しいアイデアが含まれており、完成後、完全に監査され、リリースされれば、Vasilの機能をフルに活用できるように設計されています。その詳細については、開発ライフサイクルがさらに進んだときに、より詳しく説明します。
Vasilハードフォークは、私たちの新生エコシステムに多様な改善をもたらすでしょう。これは、多様なDeFiパートナーと協力して行われる最初のカルダノのハードフォークであり、したがって、カルダノのユニークな進化と革新の能力を実証する重要なマイルストーンとなります。私たちはその一端を担うことができ、また、私たちが共有するCardanoの理念を反映した慎重で整然としたアプローチの一端を担うことができ、大変光栄に思っています。