メインコンテンツまでスキップ

ガスレス統合ガイド

Status Networkはプロトコルレベルでガスレストランザクションを提供します。ペイマスターやリレイヤーは不要です。ビルダーとしての中心的なタスクは、送信者の状態に応じて手数料を正確に推定し表示することです。

基本ルール

トランザクションUXを準備する際、ガス手数料の信頼できるソースとしてlinea_estimateGas RPCメソッドを使用してください。

その他のJSON-RPCメソッドのリファレンスについては、JSON-RPC APIを参照してください。

Karma対応の手数料推定

Lineaでは、linea_estimateGasはすでにガス推定の推奨メソッドです。 1回の呼び出しgasLimitbaseFeePerGaspriorityFeePerGasを返し、手数料フィールドは圧縮されたトランザクションサイズ、L1検証コスト、L1/L2ガス価格比率を反映します — eth_名前空間のメソッドでは把握できない要素です。

Status Networkはlinea_estimateGasをさらに拡張し、手数料フィールドにKarmaシステムを組み込んでいます。対象ユーザーの手数料がゼロに削減されたり、拒否リストに載ったユーザーの手数料が増加したりする場合があります。

図: linea_estimateGasを使用したガス推定フロー

これが、ビルダーがStatus Networkでトランザクションコストの推定やユーザー向けEIP-1559手数料フィールドの事前入力にlinea_estimateGasを使用すべき理由です。

詳細

Karmaとガス手数料およびトランザクション特権への影響に関する詳細な説明は、カルミックトークノミクスページを参照してください。

ガスレスシステムの実装と適用方法の技術的な詳細は、ガスレストランザクションドキュメントを参照してください。

linea_estimateGasのリクエスト/レスポンス形式

リクエスト

linea_estimateGaseth_estimateGas同じトランザクション呼び出しオブジェクトを受け取ります。 gasLimiteth_estimateGasと同じEVM実行ロジックを使用)と、LineaのL2固有の価格設定とStatus NetworkのKarmaルールの両方を反映した手数料フィールドを、単一のレスポンスで返します。

important

必ずfromを含めてください。 これがないと、ノードはKarma/クォータ/拒否リストのロジックを適用できません。

レスポンス

linea_estimateGasは以下を含むオブジェクトを返します:

  • gasLimit: 16進数 - EVM実行のための推定ガスユニット(eth_estimateGasと同じ計算)
  • baseFeePerGas: 16進数 - Status NetworkのKarmaルールを反映した次のブロックの基本手数料
  • priorityFeePerGas: 16進数 - Status NetworkのKarmaルールを反映した推奨優先手数料

これらの手数料フィールドは、eth_gasPriceeth_maxPriorityFeePerGaseth_feeHistoryなどのeth_名前空間の呼び出しが返す値とは大きく異なる場合があります。これらはLineaのL2固有の価格設定やStatus NetworkのKarma調整を認識していません。

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"gasLimit": "0x5208",
"baseFeePerGas": "0x0",
"priorityFeePerGas": "0x0"
}
}

移行ガイド: 複数のeth_呼び出しからlinea_estimateGas

このセクションでは、一般的な「複数のeth_呼び出しによるEIP-1559」フローから単一のlinea_estimateGas呼び出しへの移行方法を説明します。Status Networkでより正確なL2固有の手数料データとKarma対応の価格設定を提供します。

移行前: eth_名前空間を使用したEVMチェーンでの一般的なEIP-1559推定フロー

多くのEVMチェーンでは、一般的なEIP-1559推定フローは次のようになります:

  1. ガスリミットの推定eth_estimateGas
  2. maxPriorityFeePerGasの取得eth_maxPriorityFeePerGasおよび/またはeth_feeHistory
  3. baseFeePerGasの取得eth_getBlockByNumber
  4. 以下を使用してEIP-1559トランザクションを構築:
    • gas
    • maxPriorityFeePerGas
    • maxFeePerGas、通常は 2baseFeePerGas+maxPriorityFeePerGas2 \cdot \mathrm{baseFeePerGas} + \mathrm{maxPriorityFeePerGas}
# 1) Gas limit (EVM execution)
curl -X POST -H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"eth_estimateGas",
"params":[{
"from":"0xYOUR_SENDER",
"to":"0xCONTRACT_OR_RECIPIENT",
"data":"0xYOUR_CALLDATA",
"value":"0x0"
}]
}' \
https://YOUR_RPC_URL

# 2) Fetch suggested tip amount
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":2,"method":"eth_maxPriorityFeePerGas","params":[]}' \
https://YOUR_RPC_URL

# 3) Fetch base fee
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":3,"method":"eth_getBlockByNumber","params":["pending",false]}' \
https://YOUR_RPC_URL

移行後: linea_estimateGasを使用したStatus Networkのガス推定フロー

Status Networkでは、linea_estimateGasから手数料の提案を取得する必要があります。正確な手数料推奨がKarmaに依存するためです:

  • アカウントがガスレストランザクションの対象になる可能性があります
  • 拒否リストに載ったアカウントはプレミアムガス手数料を支払う必要がある場合があります
curl -X POST -H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"linea_estimateGas",
"params":[{
"from":"0xYOUR_SENDER",
"to":"0xCONTRACT_OR_RECIPIENT",
"data":"0xYOUR_CALLDATA",
"value":"0x0"
}]
}' \
https://YOUR_STATUS_NETWORK_RPC_URL
ツールの統合

多くのイーサリアムライブラリは内部的にeth_estimateGasを呼び出します(例: provider.estimateGas(...))。Status Networkでは標準のeth_メソッドにはそれらのライブラリを引き続き使用しつつ、ユーザー向けのトランザクションパラメータを構築または表示する際はガスリミットと手数料フィールドをlinea_estimateGasで明示的に取得してください

UIでの手数料シナリオの処理

1) ガスレス

baseFeePerGaspriorityFeePerGasが両方ゼロの場合:

  • 明確な無料トランザクション状態を表示します。
  • 不要な手数料警告をスキップします。

2) プレミアム手数料

送信者が拒否リストに載っている場合(クォータ超過またはRLNポリシー):

  • 手数料の金額を表示し、クォータまたはスパムポリシーによりプレミアムガスが適用されることを説明します。
  • 送信者が手数料を支払うか、クォータ期間がリフレッシュされるまで待つことができることを明確にします。
  • トランザクションを可能に保ちます。完全にブロックしないでください。

よくある落とし穴

落とし穴対処法
手数料判定にeth_メソッドを使用(eth_gasPriceeth_maxPriorityFeePerGaseth_feeHistorylinea_estimateGasを使用
linea_estimateGas呼び出し時にfromを省略Karma対応の推定を受け取るため、常に送信者アドレスを渡す
手数料の前提をハードコーディング返されたbaseFeePerGaspriorityFeePerGasの値から手数料UIを構築
すべてのユーザーがガスレスであると仮定ガスレス(手数料ゼロ)と拒否リスト(プレミアム手数料)の両方を処理
リトライ時に推定値をキャッシュ送信時に近いタイミングで再推定 — 送信者のKarma状態は変更される可能性がある

次のステップ