
スマートコントラクトとは何ですか?Clarityとは何ですか?Clarityは、非チューリング完全として設計された決定可能なプログラミング言語であり、コンパイルを目的としていません。
Contents
非チューリング完全プログラミング言語とは何ですか?
Clarityを理解するには、まずチューリング完全の意味を理解する必要があります。チューリングマシンが実行できるあらゆる計算を実行できる場合、そのプログラミング言語はチューリングが完全であるとみなされます。チューリングマシンは、無限のメモリと、いつメモリ内で読み取り、書き込み、または移動するかを指示するプログラムを備えた理論上のデバイスです。
TuringCompleteスマートコントラクトの欠点は何ですか?
スマートコントラクトは強力ですが、バグの歴史もあります。イーサリアムのスマートコントラクト言語であるSolidityはチューリングで完成していますが、DAOハッキング、リエントラント攻撃、停止問題などの問題に直面しています。静的分析を実行できないため、取引手数料を予測することも困難です。
明瞭さはどのように違うのでしょうか?
Clarityは、Stacksブロックチェーン用のBlockstackのスマートコントラクト言語です。チューリング完全言語とは異なり、Clarityは非チューリング完全言語であるため、コード実行前に静的分析が可能です。これにより、潜在的なバグとコストを事前に特定することで、セキュリティ、予測可能性、ユーザーエクスペリエンスが向上します。
Clarityの重要な機能
- アトミックタイプ:Clarityは、ブール値、整数、固定長バッファー、およびプリンシパルのみをサポートします。
- 再帰またはラムダ関数なし:再帰は不正であり、ラムダ関数はサポートされていません。
map、filter、またはfoldによるループ:ループはこれらの関数を使用してのみ実行できます。- 固定長リスト:関数入力のみが可変長リストを持つことができます。
- 不変変数:変数は
letバインディングを使用して作成されますが、setを使用した変更はサポートされません。 - デフォルトのプライベート関数:関数は、パブリックに宣言されない限りプライベートです。
- スマートコントラクトの権限:スマートコントラクトは、他のコントラクトからパブリック機能を呼び出し、デジタル資産を所有/制御できます。
明確なデータ処理
各スマートコントラクトには独自のデータ空間があり、マップに保存されます。コントラクトのみがマップを更新できるため、静的分析用に明確な固定長の戻り値の型が保証されます。この単純さは、実装と関数の動作に関する推論に役立ちます。
Clarityスマートコントラクトの例
以下は、EthereumのSolidityコントラクトと比較したClarityスマートコントラクトの例です。
「」
(define-public(例(param1int)(param2int))
(let((結果(+param1param2)))
(結果はOK)))
「」
Solidityでは、チューリングの完全性により、同等の作業がより複雑になり、リスクが伴う可能性があります。
結論
スマートコントラクトは、価値の交換を安全かつ透過的に自動化します。BlockstackによってStacksブロックチェーン用に設計されたClarityは、非チューリング完全で解釈され、セキュリティと予測可能性を強化することを目的としています。Clarityはアトムとリストを使用した効率的なコーディングをサポートしており、そのデータ空間と関数はシンプルさとセキュリティを考慮して設計されています。
- Clarityは、Stacksブロックチェーン用に設計された非チューリング完全な決定可能なプログラミング言語です。
- 静的分析が可能になり、スマートコントラクトのセキュリティと予測可能性が向上します。
- Clarityの独自の機能により、安全かつ効率的なスマートコントラクト開発に適しています。