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