This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
MOVEが初めて提案したGAS設計:オンチェーンリソース消費計算方法の解析
MOVE言語による最初のGAS設計:オンチェーンGAS支出の計算方法
MOVE言語の前のバージョンは、GASなしで動作することを意図していたため、GAS計画の準備はされていませんでした。最近あるパブリックチェーンのために作られたGAS計画は、MOVE言語の最初のGAS設計であり、「冒険」と呼ばれています。
このGASプランは、GASを策定するための原則、プロセス、計算方法、後期調整、およびコミュニティの提案を受け入れることなどを明らかにしています。
GAS計量は多くのブロックチェーンの基本概念であり、それは実行およびストレージのオンチェーントランザクションに必要な計算およびストレージリソースの量を定義する抽象的な計算です。GASプランは、オンチェーンでのすべての実行に消費されるコストを決定し、取引の実行中に使用されるGASの費用を計算するために使用されます。
プロセス
効果的に実行するために、オンチェーンプロセスは以下の通りです:
###原則
定義された原則には次のものが含まれます:
GASの計算
ユーザーが取引を提出する際には、指定する必要があります:
取引の実行中に、以下の料金が請求されます。
最終取引手数料 = 消費されたGASの合計量×GAS単価
例えば、取引で670のGAS単位を消費し、ユーザーが指定したGAS単価が100 Octa/単位であれば、最終的な費用は670 × 100 = 67000 Octa = 0.00067 APTです。
取引実行中にGASが尽きた場合、送信者は最大GAS量で請求され、その取引に対する変更は元に戻されます。
GASスケジュールの確立
GASプランには、トランザクションサイズや最大GASユニットなど、単一の操作に依存しないコンポーネントが含まれています。
ほとんどの取引規模はキロバイトレベルです。MOVEモジュールのリリースは数千バイトに達し、あるフレームワークは約100 KBです。ユーザーモジュールは通常4-40 KBの間です。取引規模の値は最初32 KBに設定され、その後コミュニティのフィードバックに基づいて64 KBに調整されました。
大規模な取引はネットワークの帯域幅コストを増加させ、パフォーマンスに影響を与える可能性があります。メモリプールは大規模な取引を無視する可能性があるため、最大規模とアクセシビリティの間でバランスを取る必要があります。
3.最大GAS単位
GASプランでの最大GAS単位は、単一のトランザクションで実行可能な最大操作数を定義します。設定が高すぎると、ブロックチェーンのパフォーマンスに悪影響を及ぼす可能性があります。テストの結果、最大フレームアップグレードを行っても、最大GAS単位(のうち90%未満しか使用されていません。最大GAS単位は1,000,000)に設定されています。
ベンチマークフレームワークを構築し、Valgrindを使用してMOVE VMの実行コストを評価します。出力は注釈付きのソースコードで、各行のコードが生成するマシン命令の数を示します。
これに基づいて、すべてのMOVE命令とネイティブ関数の相対コストを大まかに推定します。インライン関数に関していくつかの問題があることに注意し、数値の加算で解決できます。
最終的に、システムの堅牢性と安全性を強化するためのコーディングの例を考慮し、実行されるマシン命令の数を導き出します。この数字をストレージと最大GAS単位とのトレードオフと比較し、GAS計画における現在の値を決定します。
レジャーのステータス項目またはデータにアクセスする際、ノードはストレージデバイスに読み書き要求を送信します。1秒あたりのデータアクセス総数は、ストレージデバイスの帯域幅とIOPS容量に依存します。データアクセスは、システムの負荷時にユーザーが料金市場で競争する瞬間的に希少なリソースです。データを書き込むディスクの占有コストはオンチェーンで永久的です。
状態項のアクセスと保存は、ブロックチェーン全体の状態を検証することに関連するデータ構造に関連するコストを生じさせます。このコストは、異なる状態項の基数に関係しており、($2^{256}$)に関連しています。また、各項目のサイズに比例するコストも存在します。
状態項目操作の手数料(の次の説明にある例外を除いて)は:
貯蔵ガス料金=item_fee+(byte_fee × bytes)
読む、作成する、書く
状態項目のアクセスは、3つのタイプに分けられます: 読み取り、作成、または書き込み。アクセスは、項目費用とバイト費用に基づいて料金が発生します。
読み取り操作は最も一般的であり、一時的なリソースの不足にのみ制限されます。読み取りコストは、ディスクIOPSおよび参照ハードウェア仕様の帯域幅容量に基づいて調整されます。
作成操作は、ステートストレージに新しい項目を追加し、認証データ構造のコストを増加させるため、最も高価です。作成コストは、ネットワークが所有するリファレンスディスクスペースに基づいて調整されます。
書き込み操作は既存の項目を更新し、認証データ構造に追加のオーバーヘッドを発生させません。しかし、既存のエントリをより大きなバイト数に変更することは、ディスクを占有する可能性があるため、更新項目のバイト数に対して作成と同じ料金が請求されます。
ストレージ関連のコストは、各トランザクションを基に評価されます:同じリソースを複数回読み書きしても、料金は一度だけ請求されます。
上記の考慮に基づいて、合計費用を構成する6つのGASパラメータが定義されました:
安定したGAS単位コスト
各操作及び取引自体は、APTまたは法定通貨で計算された市場価値に関係なく、保存および実行コストに対して固定の単位コストを必要とします。固定GAS単位コストは、GASプログラムを不変に保ち、APTの自由市場価値から切り離すのに役立ちます。GAS単位の正しい精度を選択することは、GASプログラムの安定性を維持するのに寄与します。この点を考慮して、GAS単位は約3桁の精度で表されます。したがって、送金取引コストは約700 GAS単位です。
コミュニティ参加
コミュニティメンバーは:
GASコスト調整
GASプランはオンチェーン設定ストレージとして機能し、ガバナンス提案によって変更可能で、新しい命令やネイティブ機能をシームレスに追加できます。
GASプランは拡張性を持つ設計で、ガバナンス提案を通じてアップグレードを許可します。ユーザーからのフィードバックを取り入れながら、GASパラメータは時間と共に調整可能です。
時々、GASの公式は複雑な変更を必要とすることがあります。これらの公式は通常Rustでコーディングされ、オンチェーンGAS特徴フラグによって区別されます。これらの公式をアップグレードするには、ノードソフトウェアを更新し、大量に採用し、新しいGASバージョンの使用をガバナンス提案で承認する必要があります。
働き方の未来
Moveの最初の実行可能なGASフレームワークとして、今後の作業方向には以下が含まれます:
実行コストの削減: 実際のGASモデルを利用してコンパイラと仮想マシンの効率を表示し、実行コストを低減するように改善する
多次元GAS計算:ユーザーが実行と保存のために別々の予算を指定できるようにし、コード品質の問題による高額なGAS価格の支払いを避けることができます。
膨張状態の緩和: 各プロジェクトのTTL概念を探求し、TTLが期限切れになると未訪問の状態プロジェクトを削除する