# MOVE言語の最初のGAS設計:チェーン上のGAS手数料の計算方法の分析MOVE言語の前のバージョンは、GASなしで動作することを計画していたため、GASメカニズムの準備ができていませんでした。最近、あるブロックチェーンプロジェクトがそのMOVE言語チェーンのために最初のGAS設計案を発表し、これを公式に「冒険」と称しました。このプロジェクトのGASプランは、GASの原則、プロセス、計算方法、後期調整メカニズム、およびコミュニティの提案を受け入れる姿勢を明示しています。GASの計測は、このオンチェーンと多くの他のオンチェーンの基本概念であり、取引の実行とストレージに必要な計算およびストレージリソースの量を定義する抽象的な計算です。GASプランは、オンチェーンでのすべての実行にかかるコストを特定し、取引実行中に使用されるGASの費用を計算するために使用されます。## プロセス効果的に実行するために、このプロジェクトのオンチェーンプロセスは:1. 原則を定義する2. 評価フレームワークを準備し、各実行の価格を決定します3. MOVEのためのGAS計測システムと安全なGAS代数を構築する4. アップストリームGASフレームワークをインポートする5. GASフレームワークにストレージ意識を持たせる6. GAS計画をさらに詳細化する## 原則このプロジェクトが定義した原則には以下が含まれます:1. 操作コストは、CPU、メモリ、ネットワーク、ストレージI/O、スペース使用などのネットワークの利用可能なリソースに直接関連する必要があります。技術とプロセスの改善に伴い、GASに必要なコストはそれに応じて低下する必要があります。2. GASはオンチェーンガバナンスによって設定され、シームレスに構成可能です。3. GASはネットワークの固定リソースに対するDoS攻撃を防ぐことができ、ネットワークの状況に応じてガバナンス提案を通じて迅速に調整する必要があるかもしれません。4. GAS価格は、加速成長とブロックチェーンの普及を維持するビジョンを反映しています。5. 設計において質の高い選択を奨励し、安全性、モジュール化、アサーションなどを優先的に考慮する。## GASを計算するユーザーが取引を提出する際には、取引の中で2つの数量を指定する必要があります。1. 最大GAS数量:GAS単位で測定され、ユーザーが取引を実行するために支払う最大GAS単位数を示します。2. GAS単価:1単位のGASは8進数で計算され、1八進数=0.00000001ローカルトークン。実行中に、取引には以下の手数料がかかります:1. 固定コスト:固定ベースに大口取引の追加料金を加えたもの。2. 実行コスト:MOVE命令を実行するためのコスト。3. 読み取りコスト:永続ストレージからデータを読み取るために使用されます。4. 書き込みコスト:データを永続ストレージに書き込むために使用されます。最終的な取引手数料の計算方法は:消費されたGASの総量にGASの単価を掛けることです。例えば、1回の取引で670のGAS単位を消費し、ユーザーが指定したGASの単価が1単位あたり100 Octaの場合、最終的な取引手数料は670 * 100 = 67000 Octa = 0.00067ローカルトークンとなります。取引の実行中にGASが尽きた場合、送信者は最大GAS量に基づいて料金が請求され、その取引によって行われたすべての変更は元に戻されます。## GASプラン表の作成### 1. 基本設定GASプランには、トランザクションサイズや最大GAS単位など、単一の操作の詳細に関係しないいくつかの構成要素が含まれています。### 2. トランザクションのサイズほとんどの取引規模は千バイトの範囲です。MOVEモジュールのリリースは数千バイトに達する可能性があり、フレームワークは約100 KBです。ユーザーモジュールのサイズは通常4KBから40KBの間です。最初の取引規模は32KBに設定され、その後コミュニティのニーズに応じて64KBに調整され、アプリケーション開発を簡素化しました。大規模な取引はネットワークの帯域幅コストを増加させ、パフォーマンスに影響を与える可能性があります。最大スケールの取引のサイズとアクセス可能性のバランスを取るために、メモリプールはより大きな取引を無視する可能性があります。### 3. 最大GAS単位GASプランにおける最大GAS単位は、単一のトランザクションで実行可能な最大操作量を定義しています。設定が高すぎると、ブロックチェーンのパフォーマンスに悪影響を及ぼす可能性があります。最大のフレームワークアップグレードを行っても、GASプランの最大GAS単位(1,000,000に設定)には90%にも満たない状態です。### 4. 実行する実行コストを評価する際、ベンチマークフレームワークを構築し、分析ツールを使用してMove VMを分析しました。分析を通じて、すべてのMove命令とネイティブ関数の相対コストの推定が得られました。システムの堅牢性と安全性を強化するコーディングの例を考慮した後、最終的な実行の機械命令数が決定され、ストレージと最大GAS単位とのトレードオフが行われ、GASプラン内の現在の値が導き出されました。### 5. ストレージ永続ストレージに保存されているレジャーステート項目またはデータにアクセスする際、ノードはストレージデバイスに読み込みまたは書き込みを行います。1秒あたりのデータアクセス総数は、ストレージデバイスの帯域幅とIOPS容量に依存します。ストレージGAS計画はこれらのコストを考慮して設計されています。状態項目へのアクセスと保存は、ブロックチェーン全体の状態を検証することに関連するデータ構造のコストを引き起こします。このコストは異なる状態項目の基数に関連しています。また、各項目のサイズに比例したコストも存在します。貯蔵ガス代=item_fee+(byte_fee×bytes)### 読む、作成する、書く状態項目へのアクセスは、読み取り、作成、または書き込みの3種類に分かれます。読み取り操作は最も一般的で、一時的なリソースの不足によってのみ制限されます。作成操作は状態ストレージに新しい項目を追加し、コストが最も高くなります。書き込み操作は、状態ストレージ内の既存項目を更新します。上記の考慮に基づいて、6つのGASパラメータが定義されました:- per_item_read:IOPSに基づく補正- per_byte_read:実際の帯域幅に基づいてキャリブレーション- per_item_create:目標の総プロジェクトに基づいて調整- per_byte_create:ターゲットの総サイズに基づいて調整- per_item_write:per_item_readと同じ- per_byte_write:per_byte_createと同じ### 安定したGAS単位コスト各操作および取引自体は、ストレージおよび実行コストに対して固定の単位コストを必要とします。固定GAS単位コストは、GASプランを安定させ、ローカルトークンの市場価値から切り離すのに役立ちます。GAS単位は約3桁の精度で表され、送金取引コストは約700のGAS単位です。## コミュニティ参加コミュニティメンバーは:1. GASプランの不合理な点を見つける2. GASプランへの懸念を表明し、コミュニティディスカッションに参加する3. GASに関連するガバナンス提案に投票する## GASコスト調整GASプランはオンチェーン構成ストレージとして機能し、ガバナンス提案によって変更でき、新しい命令やネイティブ機能をシームレスに追加できます。GASプランは拡張可能に設計されており、ガバナンス提案を通じてアップグレードを許可します。継続的な改善とユーザーのフィードバックを取り入れることで、GASパラメータは時間とともに調整可能です。複雑なGASの公式変更には、ノードソフトウェアの更新が必要であり、ノードオペレーターによる大量の採用が求められます。最後に、新しいGASバージョンを使用するには、ガバナンス提案を発表し、承認を得る必要があります。## 今後の取り組みMOVEの最初の実行可能なGASフレームワークとして、このプロジェクトは今後の作業への道を開きます:1. 実行コストの削減:コンパイラーと仮想マシンの効率を改善する2. 多次元GAS計算:ユーザーが実行とストレージのために別々の予算を指定できるようにします。3. 膨張状態の緩和:各プロジェクトのTTL概念を探求し、TTLが期限切れの際に未アクセスの状態プロジェクトを削除します。
MOVE言語のGASメカニズムの創設:オンチェーン費用計算の全解析
MOVE言語の最初のGAS設計:チェーン上のGAS手数料の計算方法の分析
MOVE言語の前のバージョンは、GASなしで動作することを計画していたため、GASメカニズムの準備ができていませんでした。最近、あるブロックチェーンプロジェクトがそのMOVE言語チェーンのために最初のGAS設計案を発表し、これを公式に「冒険」と称しました。
このプロジェクトのGASプランは、GASの原則、プロセス、計算方法、後期調整メカニズム、およびコミュニティの提案を受け入れる姿勢を明示しています。GASの計測は、このオンチェーンと多くの他のオンチェーンの基本概念であり、取引の実行とストレージに必要な計算およびストレージリソースの量を定義する抽象的な計算です。GASプランは、オンチェーンでのすべての実行にかかるコストを特定し、取引実行中に使用されるGASの費用を計算するために使用されます。
プロセス
効果的に実行するために、このプロジェクトのオンチェーンプロセスは:
原則
このプロジェクトが定義した原則には以下が含まれます:
GASを計算する
ユーザーが取引を提出する際には、取引の中で2つの数量を指定する必要があります。
実行中に、取引には以下の手数料がかかります:
最終的な取引手数料の計算方法は:消費されたGASの総量にGASの単価を掛けることです。例えば、1回の取引で670のGAS単位を消費し、ユーザーが指定したGASの単価が1単位あたり100 Octaの場合、最終的な取引手数料は670 * 100 = 67000 Octa = 0.00067ローカルトークンとなります。
取引の実行中にGASが尽きた場合、送信者は最大GAS量に基づいて料金が請求され、その取引によって行われたすべての変更は元に戻されます。
GASプラン表の作成
1. 基本設定
GASプランには、トランザクションサイズや最大GAS単位など、単一の操作の詳細に関係しないいくつかの構成要素が含まれています。
2. トランザクションのサイズ
ほとんどの取引規模は千バイトの範囲です。MOVEモジュールのリリースは数千バイトに達する可能性があり、フレームワークは約100 KBです。ユーザーモジュールのサイズは通常4KBから40KBの間です。最初の取引規模は32KBに設定され、その後コミュニティのニーズに応じて64KBに調整され、アプリケーション開発を簡素化しました。
大規模な取引はネットワークの帯域幅コストを増加させ、パフォーマンスに影響を与える可能性があります。最大スケールの取引のサイズとアクセス可能性のバランスを取るために、メモリプールはより大きな取引を無視する可能性があります。
3. 最大GAS単位
GASプランにおける最大GAS単位は、単一のトランザクションで実行可能な最大操作量を定義しています。設定が高すぎると、ブロックチェーンのパフォーマンスに悪影響を及ぼす可能性があります。最大のフレームワークアップグレードを行っても、GASプランの最大GAS単位(1,000,000に設定)には90%にも満たない状態です。
4. 実行する
実行コストを評価する際、ベンチマークフレームワークを構築し、分析ツールを使用してMove VMを分析しました。分析を通じて、すべてのMove命令とネイティブ関数の相対コストの推定が得られました。システムの堅牢性と安全性を強化するコーディングの例を考慮した後、最終的な実行の機械命令数が決定され、ストレージと最大GAS単位とのトレードオフが行われ、GASプラン内の現在の値が導き出されました。
5. ストレージ
永続ストレージに保存されているレジャーステート項目またはデータにアクセスする際、ノードはストレージデバイスに読み込みまたは書き込みを行います。1秒あたりのデータアクセス総数は、ストレージデバイスの帯域幅とIOPS容量に依存します。ストレージGAS計画はこれらのコストを考慮して設計されています。
状態項目へのアクセスと保存は、ブロックチェーン全体の状態を検証することに関連するデータ構造のコストを引き起こします。このコストは異なる状態項目の基数に関連しています。また、各項目のサイズに比例したコストも存在します。
貯蔵ガス代=item_fee+(byte_fee×bytes)
読む、作成する、書く
状態項目へのアクセスは、読み取り、作成、または書き込みの3種類に分かれます。読み取り操作は最も一般的で、一時的なリソースの不足によってのみ制限されます。作成操作は状態ストレージに新しい項目を追加し、コストが最も高くなります。書き込み操作は、状態ストレージ内の既存項目を更新します。
上記の考慮に基づいて、6つのGASパラメータが定義されました:
安定したGAS単位コスト
各操作および取引自体は、ストレージおよび実行コストに対して固定の単位コストを必要とします。固定GAS単位コストは、GASプランを安定させ、ローカルトークンの市場価値から切り離すのに役立ちます。GAS単位は約3桁の精度で表され、送金取引コストは約700のGAS単位です。
コミュニティ参加
コミュニティメンバーは:
GASコスト調整
GASプランはオンチェーン構成ストレージとして機能し、ガバナンス提案によって変更でき、新しい命令やネイティブ機能をシームレスに追加できます。GASプランは拡張可能に設計されており、ガバナンス提案を通じてアップグレードを許可します。継続的な改善とユーザーのフィードバックを取り入れることで、GASパラメータは時間とともに調整可能です。
複雑なGASの公式変更には、ノードソフトウェアの更新が必要であり、ノードオペレーターによる大量の採用が求められます。最後に、新しいGASバージョンを使用するには、ガバナンス提案を発表し、承認を得る必要があります。
今後の取り組み
MOVEの最初の実行可能なGASフレームワークとして、このプロジェクトは今後の作業への道を開きます: