getActivePieceCount fails with out-of-gas for large datasets
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- solidity
- Ambito
- blockchain
Direzione di ricerca
Inizia individuando l’implementazione Solidity di getActivePieceCount(uint256 setId) e confrontala con il comportamento paginato di getActivePieces. Riproduci le chiamate piccola e grande con cast e l’endpoint RPC fornito. Il lavoro è completo quando la chiamata di conteggio viene completata per il dataset di 54,568 pezzi senza out-of-gas e rimane coerente con i pezzi attivi restituiti tramite la paginazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Solidity
- Stelle
- 20
- Fork
- 18
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di FilOzone/pdp
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Release process improvement ideas/observations from pdp v3.5.0Forse di nuovo libera @BigLep l’ha presa 81 giorni fa e non c’è nessuna pull request aperta. Aperta
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
Tutte le issue di FilOzone/pdp
Issue simili
-
Log filters reject `"fromBlock": null` (and `toBlock`/`blockHash`) instead of treating it as unsetApertaL1 rpc-api
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
lambdaclass/ethrex#7530 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
yegor256/erc20#218 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG]: Oracle with rewardBps above 1e5 can never accept a funded price submissionForse già presa @kansalakshat l’ha presa 1 giorno fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
StabilityNexus/OrbOracle-Solidity#27 · 1 commento ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100