EMURGOブログ-Cardanoスマートコントラクトの比類なき安全性

EMURGOブログ-Cardanoスマートコントラクトの比類なき安全性


(cc:@azuazuazu @venus)
ゴーグエン(Goguen)の今後のリリースを受けて、Cardano(科学的でありかつピアレビューを実施した哲学から生まれた最初の第三世代ブロックチェーン)は、メインのCardanoブロックチェーンにスマートコントラクトを導入します。具体的には、開発者はPlutusを使用してCardanoのスマートコントラクトを記述できるようになります。

Plutusとは何ですか?

Plutusは、スマートコントラクトの開発と展開を可能にするプログラミング言語で、Cardanoのビジョンと協調する開発者、企業、アカデミアという3つの主要なオーディエンスを念頭に設計されています。今日、誰でもPlutusプレイグラウンドで開発されたテスト契約を展開できます。このグラウンドは、ブロックチェーンについての完全な開発環境を維持せずに、スマートコントラクトをテストできる軽量なWebベースの環境です。Plutusプラットフォームは、開発者に比類のないスマートコントラクト体験を与えてくれます。

どうしてでしょう?

Plutusは、明確、簡潔かつ便利であるよう設計されています。ただし、最も重要なことは、Plutusは、スマートコントラクト開発にとってこれまでの他の手段よりもはるかに安全だということです。それでも、Plutusをこのように安全でセキュアなプログラミング言語プラットフォームにしているのは正確には何でしょうか、また、なぜそれが重要なのでしょうか?

なぜ安全性が重要なのか?

Cardanoスマートコントラクトの開発者は、プログラムが、なんの副次的効果も伴わず、開発者が望んだ通りに動作することを保証したいと考えていますので、安全性が重要になります。これは、エラーが発生するリスクを最小限に抑えることを意味します。エラーは、日常的に使用される多くのプログラミング言語で共通しています。Cardanoは、これらのエラーを最小限に抑え、スマートコントラクトを介した価値の移転が高度な保証を伴い実現されることを目的としています。これにより、資金の損失、予期せぬトラブル、思いがけない複雑な事態の可能性が減少します。お気に入りのメッセージングアプリやソーシャルメディアWebサイトで発生するエラーは、メッセージが送信されなかったり、画像が投稿されなかったりする事態を引き起こすかもしれませんが、貴重な資産がライン上にあるブロックチェーン環境で発生するエラーにはより高度な安全性が求められます。実際、EMURGOはトークンレスで、インボイスベースのプロトコルSyreもサポートしています。Syreのプロトコルは、dLab/EMURGOアクセラレータを介して受信者のウォレットアドレスを確認することに関する懸念を取り除き、ADAのような暗号通貨の送信をユーザーにとって簡単で、心配の要らないものにしてくれます。

安全なスマートコントラクト:関数によるアプローチ

Plutusは、代表的な純粋関数型プログラミング言語であるHaskellに組み込まれています。この理由は、関数型プログラミング言語は、ブロックチェーン業界で現在利用可能な他の手段よりも安全かつ検証可能なスマートコントラクトにはるかに適しているという考えに基づきます。これについての重要な理由は、Haskellが提供する堅牢な型システムです。型は、正確さを強制する制約を課すよう設計されています。Plutusが使用する型システムは、他のプログラミング言語を悩ます多くのエラーを排除します。スマートコントラクトのすべての部分が論理的に一貫した、証明可能な正しい方法で一緒に適合することをチェックします。

型システムは、アーティストが自分のアートを厳密にスケッチし、キャンバスに筆を置く前にどの色がどこに配置されるかを決定する絵画技法のようなシステムと考えることができます。すぐに描き始めるのではなく、アーティストは時間をかけてすべての部分が組み合わさって、確実にうまく推移するようにするのです。Plutusでいえば、これはスマートコントラクトが適切に設計され、事前に考え抜かれているということです。

これにはより多くの先行作業が必要ですが、Cardanoでのスマートコントラクトの開発は後で報われます。スマートコントラクトが将来にわたってより安全で簡単に維持できるからです。Plutusが使用する型システムは、スマートコントラクトが実行される前に型システムがエラーを捉えますのでエラーの削除に役立ちます。これは、エラーがプログラムの実行時にのみ現れる他のスマートコントラクトのプログラミング言語とは対照的です。エラーが発生する可能性のあるスマートコントラクトを実行することは性質上リスクが大きいため、しばしばサードパーティーを使ってプログラムをチェックして正確性を確認します。Plutusでは、言語プログラミング自身の堅牢性が組み込まれているため、より効率的かつ安全な開発者体験が提供されます。

安全なスマートコントラクト:オンチェーンとオフチェーンのコード

Plutusを利用すれば、オンチェーンコードとオフチェーンコードの両方が同じプログラミング言語に基づきます。スマートコントラクト開発者は、単一のコードベースを使用できます。Plutusは展開用にオンチェーンとオフチェーンのコードとパッケージに自動的に分割します。オンチェーンのコードとは、ブロックチェーン自体で実行されるコードのことです。オフチェーンのコードは、Webブラウザーなどでブロックチェーンから外れて実行されるコードです。Plutusのこの機能は、今日のスマートコントラクト開発で見られる現在の他の手段よりもはるかに安全です。スマートコントラクトは、オンチェーンコード用に1つの言語で、オフチェーンコード用に2つ目の言語で記述されるのが業界全体で一般的です。これにより、開発に必要な時間が2倍以上になるだけでなく、スマートコントラクトのセキュリティに非常に大きなリスクを招来します。

これは、あなたが注文した料理を出すのにシェフとウェイターの両方が異なる役割を演じる、レストランでの体験に似ています。料理を準備するシェフと料理を提供するウェイターは二人とも、注文したものが正しく提供されるように互いにコミュニケートする必要があります。Plutusは、オンチェーンとオフチェーンの両方のコードを生成することにより、開発者に非常に大きな安全上の利点を提供します。つまり、料理の例でいえば、準備も提供もシェフが行います。

結論

Plutusを使用すると、開発者はスマートコントラクトが正しく実行されると確信できます。Cardanoは、最新の言語研究というゴールドスタンダードを活用して、安全でフルスタックのプログラミング環境を保証します。この環境は、代表的な関数型プログラミング言語Haskellという柱と、それがもたらすあらゆる利点に基づいて構築されています。Cardanoのスマートコントラクトは、ブロックチェーン&暗号通貨業界において比類のない高度な安全性を享受しています。