トップへ戻る
公開日
2022年11月21日
筆者:Curvegrid
ピエール・ルセ

長年のポリゴン・トランザクションのアンダープライス問題

Polygon Mainnetの1年前のバグを発見し、対処しました。

TLDR: Polygonブロックチェーンノードを運用している場合、すぐにgpo.ignorepriceと txpool.pricelimitを同じ値に設定する必要があります。Polygonは30Gweiを推奨しています。先週、多くの人気ノードプロバイダーがこれらのパラメータを揃えていないことを発見しました。

MultiBaasブロックチェーンミドルウェアのお客様から、一部のPolygonトランザクションがトランザクションアンダープライスエラーで拒否されるという報告を受け、Polygonノードのデフォルト設定ファイルからキー設定値が欠落し、一般的なブロックチェーンノードのプロバイダの多くに伝播していると判断しました。

2021年10月、Polygonはトランザクションを検証するための最小ガスチップを30Gweiに引き上げることを推奨しました。バリデータとノードプロバイダーは、miner.gasprice(取引の採掘のための最小ガス価格)とtxpool.pricelimit(保留中の取引プールへの取引を許可する最小ガス価格制限)のノード設定を30Gweiにすることを推奨したが、必須ではありませんでした。

しかし、gpo.ignoreprice設定パラメータは、それと同じくらい重要です。これは、ブロックチェーンノード内のガス価格オラクルのための最小取引価格を指定します。ブロックチェーンクライアント(web3ウォレット、DAppsなど)が取引を行う際、ガス価格が指定されていない場合、ブロックチェーンノードは自身の内部のガス価格オラクルに最近のネットワーク状況に基づいた最も適切なガス価格を問い合わせ、それを無署名取引に挿入します。

ガス価格オラクルのロジックはこちらでご覧いただけます。デフォルト設定では、オラクルは過去20ブロックのそれぞれに含まれる最低価格取引3件の60パーセンタイルを返します。言い換えれば、過去 20 ブロックの 60 トランザクションを考慮します。

ガスチップの最小値設定はあくまで推奨であり、要件ではないため、一部のバリデーターは、推奨の最小値を下回る価格のブロック内のトランザクションを含んでいる。gpo.ignorepriceが txpool.pricelimitと一致しない場合、ガス価格オラクルは、ノードが提出した取引に対して受け入れることができる価格を下回る価格を返すことがある。

例えば、0x1efecb61a2f80aa34d3b9218b564a64d05946290で採掘されたブロック35612499(図)には、有効ガスチップ価格が30Gwei基準以下の取引が多く含まれています。以下、そのうちの3つを紹介する。

トランザクションハッシュ

TXタイプ

最大料金単価またはガス料金

ガスあたりの最大優先料金

基本料金

ガスチップの有効価格

0x43cd...

レガシー

105 グウェイ

-

103 Gwei

2 グウェイ

0xc615...

レガシー

106 Gwei

-

103 Gwei

3 グウェイ

0x229f...

EIP-1559

107 Gwei

107 Gwei

103 Gwei

4 Gwei

Polygonブロックチェーンの人気ノードプロバイダー4社を使ってトランザクションを合成するプログラムを書き、数時間かけて次のようなケースを観察しました。

これらの結果を、後に発見した5番目のノードプロバイダーと合わせてまとめると、以下のようになります。

ブロックチェーンノードプロバイダー

Accepts TX < 30Gwei

Suggest Price < 30 Gwei

A

いいえ

あり

B

いいえ

あり

C

いいえ

あり

D

いいえ

いいえ

E

いいえ

あり

修正方法は簡単です。Polygonブロックチェーンノードを実行する場合、すぐにgpo.ignorepriceと txpool.pricelimitを同じ値に設定する必要があります。Polygonは30Gweiを推奨しています。

私たちは、影響を受けたPolygonノードプロバイダにすぐに知らせ、迅速な解決を望んでいます。また、Polygonチームにも連絡し、上流のPolygonノード設定ファイルで修正するための課題(#62)とプルリクエスト(#63,#586)を開きました。

2022年11月24日更新:2つのノードプロバイダーが我々の提案した修正を実装し、2つのノードプロバイダーは我々の要求をまだ検討中です。

2022年11月26日更新:Polygonチームは、上流のノード設定ファイルに関する我々の提案した修正を承認しました。

2022年12月2日更新:追加のノードプロバイダーが私たちが提案した修正を実装し、別のノードプロバイダーが数日中にリリースを予定しています。