getActivePieceCount fails with out-of-gas for large datasets
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- solidity
- 領域
- blockchain
調査の方向性
まず getActivePieceCount(uint256 setId) の Solidity 実装を見つけ、ページネーションされた getActivePieces の動作と比較します。提供された RPC endpoint を使い、cast で小さい呼び出しと大きい呼び出しを再現します。54,568-piece のデータセットに対する count 呼び出しが out-of-gas にならず完了し、ページネーションで返される active pieces と一貫していれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Problem
getActivePieceCount(uint256 setId) has O(n) complexity where n = nextPieceId[setId]. For datasets with tens of thousands of pieces, this exceeds the gas limit for eth_call requests.
Reproduction
On mainnet verifier (0xBADd0B92C1c71d02E7d520f64c0876538fa2557F):
# Works - small dataset
cast call 0xBADd0B92C1c71d02E7d520f64c0876538fa2557F "getActivePieceCount(uint256)(uint256)" 1 --rpc-url https://api.node.glif.io/rpc/v1
# Returns: 2
# Fails - large dataset (54,568 pieces)
cast call 0xBADd0B92C1c71d02E7d520f64c0876538fa2557F "getActivePieceCount(uint256)(uint256)" 89 --rpc-url https://api.node.glif.io/rpc/v1
# Error: out of gas
Note: getActivePieces with pagination works fine for the same dataset.
- 主要言語
- Solidity
- スター
- 20
- フォーク
- 18
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
FilOzone/pdp のほかの issue
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
-
Release process improvement ideas/observations from pdp v3.5.0再び着手できるかも @BigLep が 81 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 28/100
似ている issue
-
Log filters reject `"fromBlock": null` (and `toBlock`/`blockHash`) instead of treating it as unsetオープンL1 rpc-api
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
lambdaclass/ethrex#7530 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 91/100
yegor256/erc20#218 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[BUG]: Oracle with rewardBps above 1e5 can never accept a funded price submission対応中かも @kansalakshat が 1 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
StabilityNexus/OrbOracle-Solidity#27 · コメント 1 件 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100