スマートコントラクトのフォーマル検証

スマートコントラクトのフォーマル検証は、多くの注目を集めるハッキングや固有のセキュリティ上の懸念につながるスマートコントラクトのバグや脆弱性のインスタンスを減らすことに焦点を当てた暗号通貨分野の新しいトレンドです.

フォーマル検証には、ハードウェアおよびソフトウェアシステムに関してさまざまなアプリケーションがあります。システムの複雑さが増すにつれて、特にハードウェアで、それは非常に重要になりました。ブロックチェーンネットワークでは、スマートコントラクトの脆弱性とエクスプロイトの数々により、スマートコントラクトのプログラミングと監査を改善する必要が生じています。.

スマートコントラクトのフォーマル検証

フォーマル検証の背景

フォーマル検証の用途 形式手法 ハードウェアまたはソフトウェアシステムの設計が特定のプロパティセットを満たしているかどうかを確認します。形式手法は、ハードウェアシステムとソフトウェアシステムの両方の仕様、開発、および検証のための特定のタイプの数学的手法です。意図されたアルゴリズムの正しさを証明または反証するために形式手法を使用することは、形式検証として知られています.

Martin Davisは、1954年に最初のコンピューター生成の数学的証明を開発したとされています。この概念は、PascalやJavaなどの初期言語のコンピュータープログラムの正確さを検証するために1960年代に注目を集め始めました。次のようないくつかの有名なコンピュータのバグに続いて PentiumFDIVバグ 1994年に、フォーマル検証がユビキタスである必要があるという感情が雪だるま式に始まりました。.

ソフトウェアまたはハードウェアシステムのテストは、2つの一般的なフェーズに分けることができます。

  1. 検証
  2. 検証

検証とは、製品がユーザーのニーズを満たしているかどうかを判断することです.

検証とは、製品が仕様に準拠しているかどうかをテストすることです。.

検証は、製品の設計仕様(つまり、アルゴリズム、ハードウェアチップ)に相関する抽象的な数学的モデルの作成で構成されますが、モデルの生成に使用される形式手法は、主に理論計算機科学の基礎に基づいています。.

フォーマル検証の使用は、ハードウェアシステムで非常に重要になり、ほとんどすべての主要なハードウェアメーカーが、製品の堅牢性を確保するために使用しています。ただし、その使用は、主にハードウェア製造の商業的性質に起因するハードウェアほど普及していません。.

ただし、そのダイナミクスは、分散型ネットワーク全体でかなりの価値の転送が自律的に実行されるブロックチェーンと暗号通貨の出現によって変化し始めています。従来のシステムよりも多くの価値が危機に瀕しているため、スマートコントラクトの正確性が差し迫った懸念事項になっています.

A 簡単な歴史 スマートコントラクトエクスプロイトの多くは、コントラクトコードの単純な脆弱性の結果を理解するために必要なすべてです.

スマートコントラクトに使用する理由?

最近によると 調査 ほぼ100万のイーサリアムスマートコントラクトで実行され、そのうち34,200は、コントラクトごとに10秒で脆弱であるとフラグが立てられました。その驚異的な数は、次のようなスマートコントラクトの痕跡の脆弱性を分析することによって達成されました。

  • 資金を無期限にロックする契約を見つける
  • 不用意に任意のユーザーに資金を漏らす契約
  • 誰でも殺すことができる契約

ブロックチェーンのスマートコントラクトのプログラミングに関連する一般的な論理的な複雑さと目新しさに加えて、ブロックチェーンにコミットすると、その不変の性質により、脆弱性がさらに大きな損害を与える可能性があります。.

ブライアンマリックとデジュンパークは素晴らしい 分析 スマートコントラクトの脆弱性と、フォーマル検証がインスタンスの軽減にどのように役立つかについて説明します。基本的に、開発者がスマートコントラクトから必要なものを取得できない可能性があるのは通常2つの方法です.

  1. 誤解された意図
  2. その意図を実装するときに間違いを犯す

これらの標準エラーの多くは、のように莫大な金額のロックされた資金につながる可能性があります パリティウォレット またはイーサリアムと 再帰的な送信エクスプロイト の中に DAO事件. フォーマル検証は、特定の脆弱性がエクスプロイトベクトルの損傷につながらないことを数学的に確認する方法として使用されます。.

正式な仕様は、スマートコントラクトが探している正確な出力または結果として使用され、コンピューターで確認できます。その後、コントラクトがバイトコードにコンパイルされると検証が行われ、正式な検証により、コンパイルされたバイトコードが仕様を実装していることが証明されます。ただし、フォーマル検証を手動で実行することは困難なプロセスであり、時にはそれ自体の間違いが伴います。正式な証明結果を検証することでさえ、そのニュアンスを伴う可能性があります.

のようなツール Coqプルーフアシスタント プログラムのプロパティに関する機械化された証明を容易にするために開発され、現在、使用する言語がCoqに埋め込まれているいくつかの新しい暗号通貨で使用されています.

スマートコントラクト監査は、コードレビューを通じて非常に必要とされている保証の層を提供しますが、スマートコントラクトのフォーマル検証は、数学的分析を通じて脆弱性のインスタンスをさらに減らすのに役立ちます。スマートコントラクトが普及するにつれ、フォーマル検証の適用が業界でより広く普及するのは当然のようです。.

フォーマル検証の現在のアプリケーション

いくつかのプラットフォームは、すでにフォーマル検証を統合しているか、まもなく統合する予定です。これらのプラットフォーム内で動作するスマートコントラクトの安全性とセキュリティを評価することは、重大な脆弱性を食い止める効果を評価するために不可欠です。.

ジリカ

Zilliqaは、スケーラブルで安全な分散型アプリケーション(dapps)をホストするように設計された高スループットのブロックチェーンです。 Zilliqaの背後にある技術開発者の何人かは、何千ものスマートコントラクトの弱点を明らかにした以前の研究の著者でした.

ジリカ

Zilliqaは、Zilliqaチームのメンバーやその他の関連会社によって設計されたScillaと呼ばれる新しいプログラミング言語を使用しています。 Scillaは、Coq ProofAssistantに組み込まれている中級レベルの言語です。これは、コントラクトがバイトコードにコンパイルされる前に分析と検証を実行するための高級言語の翻訳ターゲットとなることを目的としています。.

テゾス

Tezosはで書かれています OCaml そのスマートコントラクト言語は、OCamlに基づくMichelsonです。 OCamlが選ばれたのは、速度、明確な構文とセマンティクス、および正式な証明を実装するための関数型プログラミングが提供されているためです。 Tezosは、スマートコントラクトのフォーマル検証を容易にするためにCoq ProofAssistantも使用しています.

テゾスガイド

アーサーブライトマン— Tezosの共同創設者— 投稿 いくつかの検証に関する詳細 マイケルソン契約 Coqで、昨年のテストネットでのマルチシグ契約を含みます。 Tezosは最近発売されたため、フォーマル検証の適用は、この方法を使用したスマートコントラクトのセキュリティが向上した状態の優れたゲージを提供するはずです。 Solidity契約を悩ませてきたエクスプロイトがテゾスで実行されるかどうかは、展開するのに少し時間がかかりますが、スマートコントラクトがテゾスでどのように安全になるかを評価することは、継続的な傾向を非常に示している可能性があります.

カルダノ

CardanoはHaskellで書かれており、そのスマートコントラクト言語はHaskellに基づくPlutusです。.

カルダノガイド

Cardanoは、次の2つのレイヤーで構成されるCardano Computation Layer(CCL)を使用して設計されています。

  1. 正式に指定された仮想マシンと言語フレームワーク
  2. スマートコントラクトコードの検証を容易にする正式に指定された言語

目標は、契約が壊滅的な脆弱性なしに設計どおりに機能することを保証するプロセスを合理化する環境を作成することです。特に、CardanoはEthereumのEVMのような有界スタック設計を使用していないため、スタック演算フローについて心配する必要がないため、スマートコントラクトをはるかに簡単にフォーマル検証できます。.

イーサリアム

イーサリアムはかなり前からフォーマル検証の組み込みを研究しており、いくつかのプロジェクトでその可能性を調査しています。そのような出版物の1つ、「スマートコントラクトをよりスマートにする,」はスマートコントラクトのバグに焦点を当て、フォーマル検証を促進するためにイーサリアムの操作的セマンティクスを改善するなど、それらを軽減する方法を提案します.

イーサリアムガイド

イーサリアムのガス制限はそれを作ります 挑戦 フォーマル検証を実装します。さらに、Solidityプログラムの意味を知る唯一の方法は、それをバイトコードにコンパイルすることです。コンパイラは急速に変化するため、検証ツールも変化率に合わせて調整する必要があります。イーサリアムの確立されたネットワークと歴史を考慮すると、イーサリアムでのスマートコントラクトのフォーマル検証は、ネットワークで広く使用されるようになるフォーマル検証であった脆弱性の軽減におけるそれらの有効性の最良のゲージを表面上提供します.

結論

フォーマル検証は非常に複雑で骨の折れる作業です。それにもかかわらず、それはハードウェア業界の普遍的な標準になり、ソフトウェア分野で勢いを増し続ける可能性があります。価値の高い転送が一般的であるブロックチェーンと暗号通貨ネットワークは、この効果を確実に加速します。スマートコントラクトのフォーマル検証のプラスの影響を測定することは、業界ではるかに広範なトレンドになるはずの始まりを見ているだけなので、展開するのに数年かかる可能性があります.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me