担保とスマートコントラクトについて

カルダノ技術解説

担保とは?

担保の仕組みは、スマートコントラクトの実行を成功させるために設計された重要な機能です。

ユーザーがスクリプトを使用した取引(スマートコントラクト)をカルダノネットワークに送信すると、その取引の処理には通常の取引に比べ、計算の負担がかかります。この場合、バリデーターのこれらの計算に対して埋め合わせをする必要があります。

もしこのような取引が成功すれば、インプットから生じる取引コストでこの検証コストをまかなうことができます。しかし、スクリプトの不正な実行により取引が失敗した場合、これらのインプットは検証コストをカバーすることができなくなってしまいます。

これを補うために、トランザクションの作成者は、バリデーターのトランザクション検証を考慮して、担保を設定しなければならなりません。設定された担保は、スクリプト実行が失敗した場合にのみ消費されます。

トランザクションの二段階検証

カルダノでは2段階の検証スキームを実装しています。2段階検証を導入した主な理由は、ノードによる報酬のない検証作業の量を制限するためです。この目標を達成するために、各フェーズが目的を果たします。

・第1フェーズでは、トランザクションが正しく構築され、処理手数料を支払うことができるかどうかをチェックします。

・第2フェーズでは、トランザクションに含まれるスクリプトを実行します。

トランザクションが第1フェーズで有効な場合、第2フェーズのスクリプトが実行される。第1フェーズが失敗した場合、スクリプトは実行されず、トランザクションは直ちに破棄される。

第2フェーズの検証が失敗した場合、担保は、ノードに作業に対する補償を保証するために使用される。

したがって、担保とは、スマートコントラクトが慎重に構築されていて、スクリプトが実行可能であることを保証するためにユーザーがバリデーターに提供する金銭的な保証のことと言えます。ユーザーが保証の条件を満たし、契約が成立すれば、担保は安全です。

担保がないと起こる問題

担保がなければ、スマートコントラクトが失敗しても補償コストはユーザーには請求されません。しかし、取引が失敗するまでに、ネットワークは取引を開始し検証するためのコストをすでに負担しています。これを利用されると、悪意のあるユーザーが、わずかなコストで無効な取引をカルダノネットワーク中に溢れるくらい流し込み、その影響で他のユーザーがサービスを利用できなくなる可能性があります。

これを防ぐために、ユーザーがトランザクションを開始する際、その実行コストをカバーするのに十分なADAを担保として設定させます。

担保は、トランザクションがバリデーションに失敗した場合にのみ徴収されます。契約が検証を通過した場合、取引手数料は徴収されるが、担保は徴収されません。

誠実なユーザーは担保を失わない

カルダノブロックチェーンは、取引コストに関して決定論的です。なぜなら、これらのコストはローカル値とローカル状態のみに依存するからです。ローカルとは、ユーザー自身の環境のことを言います。つまり、ユーザーはトランザクションを送信する前に、その実行コストを計算することができます。

この特徴は、ネットワークの活動がガスコストに影響を与える可能性のあるイーサリアムなどの他のブロックチェーンとは異なります。必要な担保の額は実行コストのみに依存します。

また、カルダノのテストネットは無料の”テストADA”を使用できる安全な環境を提供します。そのため、分散型アプリケーション(DApp)開発者はメインネットにデプロイする前にスマートコントラクトを徹底的にテストすることができます。テストネットでトランザクションが成功すれば、開発者はすべてのスクリプトが成功することを完全に確信することができます。

参考文献

How to use collateral outputs

Developers’ Corner: Solving Cardano’s Collateral Problem

About the collateral mechanism

カルダノ技術解説

僕は現在、SASA Stake Poolへのステーキングによって発生するSPO報酬によって執筆活動を続けることができています。

もしこの記事が気に入ってもらえましたらSASA Stake Poolへの委任をよろしくお願いいたします。

また、カルダノに関しての質問がありましたら、TwitterのDMに気軽にメッセージしてください。いつでもお答えします!

SASA Stake Poolの詳細はこちら。

nagapandaをフォローする
SASA Stake Pool

コメント

タイトルとURLをコピーしました