編集者注: この記事は以下から引用しました 編集者注: この記事は以下から引用しましたアンビラボラトリーズ SECBIT
(ID:SECBIT)、著者:SECBIT Lab創設者Guo Yu、許可を得て公開しました。
ブロックチェーンの分野では、従来の手法を適用したソリューションでは勝てず、イノベーションのみが未来を持ちます。
——郭優
私と同じように、今日は誰もが Facebook の友達の輪に最大限に刺激されたと思います。
Facebook が開始した暗号化デジタル通貨プロジェクトである Libra が、本日 (6 月 18 日) 正式にデビューしました。リブラは多言語の公式ウェブサイトとホワイトペーパーを同時に公開し、数十億人のための世界的な通貨および金融サービスインフラとしての地位を確立した。リブラはまた、新しく開発されたプログラミング言語MoveとコンセンサスプロトコルLibraBFTについて詳しく説明したいくつかの技術ホワイトペーパーをリリースした。 LibraのソースコードはGitHubでオープンソース化されており、テストネットワークも開設されている。現在はパーミッションチェーン(コンソーシアムチェーン)として設計されているが、現在の非パーミッションチェーン(パブリックチェーン)には数十億人のニーズをサポートできる成熟したソリューションは存在しないと主張し、非パーミッションチェーンへの移行を示唆している。リリースから5年以内に連鎖が始まる 作品。
リブラの一連のリリースの中で、特に目を引くのが新しいプログラミング言語「Move」だ。初めて Move のホワイトペーパーを読みましたが、なるほど、これが将来のスマートコントラクト言語のあるべき姿なのかもしれません。
Their design goals seem to overlap, or even aim to replace Ethereum? ベルリンの開発者である Lefteris Karapetsas は、ソーシャル プラットフォームについて次のように意見を述べています。
I think "move" programming language released by $FB could be more interesting than libra. PuzzleToLife.com の創設者である CryptoPuzzleDream 氏は次のように述べています。
I'm usually pretty skeptical of anything related to cryptocurrency, but here's one piece of Libra that looks potentially interesting: a bytecode programming language called Move with semantics inspired by linear logic. 標準マニアのジェームス・クラーク氏は次のように述べています。
Move は、「デジタル資産」用のスマート コントラクト プラットフォーム言語です。
副題
Move 言語の 3 つの便利な使い方
デジタル通貨、トークン、デジタルアセットを発行する
副題
ボトムアップ静的型システム
ボトムアップ静的型システム
Well-typed programs never get stuck.
これはプログラミング言語 (PL) の世界の俗語で、型が正しいコードは決して逃げません。つまり、コントラクトコードの一部が型チェックされていれば、信頼性はかなり高くなります。
副題
一流のリソースの哲学
一流のリソースの哲学
第一級資源という言葉は非常に学術的ですが、中国語訳すると資源は第一級国民となりますが、これはどういう意味ですか?
プログラミング言語のいわゆる第一級市民は、プログラミング時にプログラミング言語が最初に考慮するプログラミング オブジェクトです。
では、リソース、リソースとは何でしょうか?とても学術的な名前でもあります。リソースは価値に相当する概念です。値は自由にコピーできますが、リソースは消費することのみが可能であり、コピーすることはできません。リソースはコーラのようなもので、ボトルを飲むとボトルが1本失われます。価値はノートに書かれた英単語のようなもので、毎朝読むことができ、覚えていれば読んだ後も消えません。それから私の頭の中でコピーを作成しました。あなたがそれを読むことができるだけでなく、私もそれを読むことができ、あなたはそれを暗唱することができ、そして私もそれを暗唱することができます。
イーサリアム スマート コントラクト言語を含む従来のプログラミング言語は、デジタル資産の簿記に Value 方式を採用しているため、簿記で間違いを犯す可能性があるという問題が生じます。実際、アカウントが誤って記録されたスマートコントラクトは非常に多く、たとえば、Zhang San が Li Si に送金すると、Li Si の口座には 10 元が追加されますが、Zhang San の口座残高は変化しません。過去 2 年間に発生したさまざまな簿記の抜け穴により、誰もがスマート コントラクトの将来に対する信頼を失うことさえありました。
Moveコントラクトはリソースタイプと呼ばれる、伝統的な「線形ロジック」の理論を吸収したタイプを採用しています。デジタル資産は「リソース タイプ」によって定義できます。このようにして、デジタル資産はリソースと同様に、線形ロジックのいくつかの特性を満たします。
デジタル資産はコピーできません
デジタル資産は空中に消えることはありません
First-class Resources の本当の意味は、デジタル資産が第一級市民であるということです。この文は、Move がデジタル資産を操作するためのスマート コントラクト言語であるという事実に拡張できます。技術的な観点から見ると、デジタル資産はコントラクト変数として使用したり、デジタル資産を保存したり、値を割り当てたり、関数/プロシージャのパラメーターとして使用したり、関数/プロシージャの戻り値として使用したりできます。また、Move の静的型システムにより、スマート コントラクト コードは、コンパイル中、つまりデプロイメント前に、コンパイラを通じてほとんどのリソース使用エラーをチェックアウトできます。保証付きスマートコントラクトは、以前ほど脆弱ではなくなりました。
ファーストクラスのリソースは、プログラマが安全なデジタル資産を実装するためだけでなく、資産をラッピングし、アクセス制御ポリシーを適用するための正しいビジネス ロジックを記述するためにも使用できる非常に一般的な概念です。これを使用して、安全なデジタル資産を実装するだけでなく、正しいビジネス ロジックを記述し、正しいアクセス コントロール ポリシーを実装することもできます。
副題
契約セキュリティ設計
Move コントラクトはセキュリティを十分に考慮して設計されています。まず、Move は動的割り当て (Dynamic Dispatch) をサポートしていません。さて、Dynamic Dispatch とは何かを説明しましょう。平たく言えば、これは非常に柔軟な言語メカニズムです。プログラムには多くの関数、プロシージャ、またはサブルーチンを記述することができます。その後、メイン プログラムはこれらの関数/プロシージャ/サブルーチンを呼び出して、それぞれ異なる関数を完了できます。プログラムが実行中の場合、どの関数が呼び出されるか、または多くの関数を特定の順序で呼び出すことができます。実行前に特定のステップの関数呼び出しがわからない場合、これらの関数呼び出しは「静的」です。が呼び出されるかどうかは、プログラムが実行されるまで観察によってのみ知ることができます。その後、この関数呼び出しは「動的」と呼ばれます。 「動的」は「静的」よりも明らかに柔軟です。
しかし、柔軟性があるということは、問題が発生しやすいということでもあります。現代のプログラミング言語の多くは、多かれ少なかれ動的代入、つまりオブジェクト指向言語における「継承」による「動的バインディング」など、言語レベルからの直接的なサポートをサポートしています。動的特徴は、プログラムの推論に役立たないだけでなく、形式的な検証 (形式検証) にも役立たないため、セキュリティ上の問題を引き起こす可能性が高くなります。 Ethereum スマート コントラクトの設計には、パラメーターとしての関数ポインター、パラメーターとしてのコントラクト、デリゲートコールなどのサポートなど、多くの「動的機能」があります。 Move 言語では、「動的割り当て」や「動的機能」の形式はサポートされていません。すべてのコントラクト実行パスはコンパイル時に決定され、完全に分析および検証できます。
Move コントラクトが実行される前に、さまざまなタイプのエラーをチェックできるバイトコード検証ツール (Bytecode Verifier) によって検証されます。同時に、バイトコードが解釈されて実行されるときにも型が保持され、実行中にチェックされます。
Ethereum EVM プラットフォームと比較すると、Move モジュール システムは循環再帰依存関係をサポートしていないため、コントラクトの再入の脆弱性 (リエントランシー) が完全に解決されます。
副題
強力なモジュールシステム
Move modules are similar to smart contracts in other blockchain languages. …, However, modules enforce strong data abstraction — a type is transparent inside its declaring module and opaque outside of it.
ホワイトペーパーによると、Move モジュール システムは関数型プログラミング言語 (OCaml、Coq、SML) スタイルで設計されています。
Move のモジュール システムは、スマート コントラクトの正式な検証に非常に優れた基盤を提供し、モジュール内で「不変条件」を定義できます。いわゆる不変条件とは、デジタル資産の内部状態に対する厳密な制約を指し、形式的な検証の自動化に非常に貴重な情報を提供することができます。さらに、モジュール システムの「不透明な抽象化」により、形式的な検証作業をモジュール化してコストを下げることができます。 Move モジュール システム上でのプログラム アナライザーとシンボリック エグゼキューターの作成は、はるかに簡単になります。抽象化すると、コントラクト ロジックが非常にシンプルになり、推論しやすくなるからです。
文章
将来性のある Move スマート コントラクト
Move は少し荒くて未熟なように見えますが、この方向性は依然としてエキサイティングであり、Move 言語レベルからは、巨大なデジタル資産プラットフォームになるという Facebook の野心がわかります。この役割はイーサリアムに属するべきでした。
なぜ私がMoveを少し好きになったのか、考えてみるとおそらく次の3つの理由があります。
PL(プログラミング言語)分野の研究成果を吸収し、EVMスマートコントラクト言語の経験と教訓も吸収しています。
「スマートコントラクトの安全性と正確性」を重視した設計
