プログラミング言語「Move」の仕組み
Pontem Network
Moveエコシステムを世界にもたらす、Pontem Networkのトークンリリースに向けたホワイトリスト登録はこちらから!
Diemを支えるソフトウェアを理解する
先月、MetaはDiemステーブルコインを暗号通貨分野に深く関与しながら銀行業を営むSilvergateに売却することを発表しました。Silvergateは、多くのトップクラスの暗号取引所によって使用される24/7資産移転システムであるSilvergate Exchange Network (SEN)を運営しています。Silvergateは、買収したDiemのインフラを利用して、SENにドル担保のステーブルコインを導入する計画を持っています。
シルバーゲートが2億ドル近くを支払って購入したDiemパッケージの重要な部分は、Moveプログラミング言語です。MetaでDiem(旧Libra)プロジェクトに時間がかかった理由の多くは、暗号通貨のための独自のプログラミング言語を作成したことでした。今回は、Moveのハイライトと、SilvergateがDiemの将来像を描く際の今後の利用法について紹介します。
主な用語
先に進む前に、いくつかの重要な語彙を定義しておく必要があります。この記事はかなり専門的な内容になっていますので、ご注意ください。
プログラミング言語 — 「ソフトウェアプログラムを作成するために使用するコマンド、命令、およびその他の構文のセット」MoveはDiemのプログラミング言語であり、暗号通貨の基本的な機能だけでなく、Diemの将来のアプリケーションを構築することも可能にします。
ブロックチェーン — 「大規模な分散型、一般にアクセス可能なネットワーク内で同時に使用、共有できる情報(金融取引の記録など)を含むデジタルデータベース」ブロックチェーンは、暗号通貨を動かすもので、行われた取引の不変の台帳を作成します。トランザクションが記録される前に、合意形成が必要となります。
ブロックチェーンのトリレンマ — 「ブロックチェーンネットワークのセキュリティ(攻撃耐性)、スケーラビリティ(拡張性)、分散化(地理的・ユーザー的な分散性)の同時実現が困難であること」これまで、ブロックチェーンはこの3つの目標の達成に苦労しています。イーサリアムのような現在のトップブロックチェーンの多くは、安全性と分散性を備えています。しかし、そのために速度が遅く、トランザクション手数料が高いことによって、スケーラビリティに悪影響を及ぼしています。Diemは、ほとんどのブロックチェーンと同様に、このトリレンマを解決することを目指しています。Moveはその解決策の大きな部分を担っています
線形論理 — 1987年にJean-Yves Giradによって作られた数学的論理体系で、完全な真理や完全な証明を必要とするのではなく、リソースとしての数式を重視するものであり、「リソースは永久に真として扱われるのではなく、一度しか使えないという論理」(例:「AをBに交換できる」ではなく「Aを1回与えると、Bを1回与える」)です。このため、線形論理はコンピュータサイエンスにおいて有用であり、数式を普遍的な真理として扱うのではなく、リソースに限定することで、より汎用的なシステムを実現することができます。
リソース — 線形論理システムの基本単位です。Moveでは「リソースはコピーや暗黙の廃棄はできず、プログラムの格納場所間の移動のみが可能」とされています。トークン、台帳、その他のブロックチェーン要素が永続的である必要があるため、線形論理、特にリソースがMove言語の構築に使用されています。
Moveとは?
Moveは、Diem Blockchainのために設計されたプログラミング言語です。MoveもDiemも、Metaが支援する技術コンソーシアム「Diem Association」によって作られました。最近、このMove言語で構築されている代表的なプロジェクトであるDiemは、Silvergateに売却されました。
Moveの実行形式は、「アセンブリよりも高レベルでありながらソース言語よりも低レベルのバイトコード」である。バイトコードは、バイトコードベリファイアによって、リソース、型、メモリの安全性をオンチェーンでチェックされ、バイトコードインタープリタによって直接実行されるものです。この仕組みは、トランザクションにコンパイルのコストを加えることなく、安全性を最大限に高め、イーサリアムと比較してガス代を最小にするために設計されています。これは、Moveがデザインによってトリレンマを解決するために誕生しました。
リソース:Moveの特徴
Moveが他のプログラミング言語と異なる大きな部分は、線形論理という数学的な考え方から導き出されたリソースの使い方です。線形論理では、数式は一度しか使えない基本的なリソースとして扱われます。Moveでは、「リソースはコピーや暗黙の破棄はできず、プログラムの格納場所間の移動のみが可能」です。Moveでは、開発者がカスタムリソースタイプをエンコードすることができ、そのリソースは「ファーストクラス」として扱われ、複製や消去ができません。
これは、Moveの静的型システムによって実現されている。つまり、プログラミング言語の変数は、ある特定の型(数値や単語など)として定義されなければなりません。Moveでは、このシステムにより、リソースのファーストクラス性が守られています。しかし、リソースは他の保護されていない要素と同じように使用することができます。データ構造に格納したり、プロシージャの引数として渡したり(計算に使う値として提供)することができるのです。
このように、Moveのリソースは高い安全性と表現力を兼ね備えており、コード内で保護されながら、あらゆる演算に自由に利用できます。この組み合わせは、トリレンマのセキュリティとスケーラビリティの両面に対応するため、ブロックチェーンプログラミングに最適なのです。現在、Moveでは「Diemコイン、トランザクション処理、バリデータ管理」のすべてがリソースとしてエンコードされています。
Moveの野望
Moveのホワイトペーパーには、この言語設計に至った動機が明確に列挙されています。また、Moveだけでなく、全てのブロックチェーンプログラミング言語に共通する課題についても言及しています。
特に、Diem(Libra)は、誰もがブロックチェーンの状態を閲覧し、トランザクションを送信できる「オープンシステム」でなければならないことを指摘しています。これは、デジタルバンキングサービスのような従来の資産管理用ソフトウェアとは根本的な理念が異なるものです。既存のシステムにアクセスする場合、何段階もの特別な許可が必要で、ユーザーに対する透明性も非常に限定されています。
一方で、ブロックチェーンでは「全ての参加者が対等な立場にある」ことが根本的な理念となっています。これは、同時に様々な課題を発生させます。例えば、あるユーザーが他のユーザーの資産を譲渡しようとするような、無効な取引の提出を防ぐことが大きな課題です。また、ブロックチェーンは、ソフトウェアでは実現が難しい従来の通貨の2つの側面をとらえる必要があります。1つは希少性で、資産の複製は禁止され、新しい資産の作成は特権的でなければなりません。(この特権を平等でオープンなシステムで実現することは特に難しく、システムの分散化が大きく制限されます)。第二に、アクセス性です。ユーザーが自分の資産を管理し保護する能力は、最も重要となります。Moveで保護された一流のリソースを使用することは、これらの希少性とアクセスの問題を解決するための試みとして、大きなアドバンテージとなります。
エンジニアリングチームは、既存のブロックチェーン言語、特にビットコインスクリプトとイーサリアム仮想マシン(それぞれビットコインとイーサリアムの主要なプログラミング言語)に見られる3つの主要な問題点を挙げています:
資産の間接的なエンコード
プログラミングは数学的に実行されるため、様々な要素が整数で表現されます。これには、ビットコインやイーサリアムのような暗号通貨のようなブロックチェーンアセットも含まれます。Moveのエンジニアは、これによって暗号資産に基づくプログラムを書くことが「複雑でエラーが起こりやすい」と感じており、そのため、MoveはDiemをリソースとして表現しています。
拡張不可能な希少性
ビットコインとイーサリアムの言語は、主要な暗号通貨の希少性の保護にも大きく寄与しています。しかし、これらの言語は希少性のある新たな資産を作るには適していません。これは、イーサリアムのブロックチェーンに基づくERC-20トークンの作成を可能にするイーサリアム仮想マシンに関する特別な問題です。このような場合、開発者は言語からのサポートなしに、独自に希少性を設計しなければなりません。Moveはそれを変えます。
柔軟性に欠けるアクセス制御
希少性の場合と同様に、ビットコインとイーサリアムは主要な暗号通貨のアクセス権を厳しく管理し、所有権や譲渡が改ざんされないようにしています。しかし、これを他の要素に拡大したり、アクセスのレベルや手段をカスタマイズすることは容易ではありません。希少性の場合と同様に、Moveのエンジニアは、これらの機能をより拡張可能、カスタマイズ可能にすることで、より汎用的でスケーラブルな言語となるよう努めました。