Chain: Base Sepolia (84532)
Timestamp: Started ~2026β04β21 18:50 UTC, still stuck at time of posting. First affected request tx: 2026-04-20 20:26 UTC / block 40473046.
Environment
- EntryPoint / Entropy: 0x41c9e39574f40ad34c79f1c99b66a45efb830d4c
- Provider: 0x6cc14824ea2918f5de5c2f75a9da968ad4bd6344 (Fortuna staging)
- My requester contract: 0x5d7Cff5fD3021032Bc05F305b4461BDCE05C7144
- Stuck sequences: 33454, 33455, 33456, 33459 (all manually recovered via expirePendingRequest since)
- SDK: @pythnetwork/entropy-sdk-solidity
Steps to reproduce
- EOA calls buyPickFourTickets(β¦) on my requester contract.
- Contract internally calls entropy.requestV2{value: entropyFee}() (noβarg variant).
- Pyth Requested(V2) event is emitted on-chain β gasLimit: 500_000 (verified on every affected tx).
- Fortuna staging picks up the request but never submits revealWithCallback.
- Explorer shows my request row with Error response: Unable to estimate gas usage.
- Request stays pending indefinitely until I call expirePendingRequest(seq) myself.
Observed scope: zero Revealed events emitted by this provider for ~30+ min across all callers, not just mine. Seems provider-wide, but
wanted to confirm.
What I already verified
- gasLimit: 500_000 is in every Requested(V2) emitted β Pyth clamps up.
- My entropyCallback uses ~103k gas (measured via debug_traceCall on a forked Base Sepolia, winning and losing paths). Succeeds at 196k
budget, so 500k = 2.5Γ headroom. - On-chain validateUserOp returns 0 (signature valid).
- Tested a patched contract with explicit requestV2(300_000) on a Foundry fork β Pyth still emits gasLimit: 500_000. Identical behavior to
no-arg. - Other requesters on the same provider emit successful callbacks at ~330k gas used, so the provider itself is wired correctly β itβs
specifically the estimator step thatβs failing for my op.
Code snippet (the call into Entropy)
// V6.sol β inside buyPickFts
uint128 entropyFee = entropy.getFeeV2();
if (address(this).balance < entropyFee) revert InsufficientEntropyFunds(entropyFee, address(this).balance);
// β¦ USDC transferFrom from buyer β¦
uint64 sequenceNumber = entropy.requestV2{value: entropyFee}();
Callback (works fine when reached β only hits ~103k gas):
function entropyCallback(uint64 sequenceNumber, address provider, bytes32 randomNumber)
internal override nonReentrant
{
// decode pending state, tier settlement, USDC transfers, events
// measured gas usage: ~103k
}
Links
- Explorer (filter this contract):
Pyth Network Entropy Explorer - First stuck request tx: Base Transaction Hash: 0x2ae7d858fb... | BaseScan Sepolia
Question
Given 500k is emitted and the callback only uses ~100k: is this a provider-side / Fortuna estimator issue, or is there something I should
still change on the contract side (e.g., explicitly pass a lower gasLimit via the requestV2(gasLimit) overload)? Docs suggest explicit gas
limits as a remedy, but my tests show Pyth clamps to 500k anyway.
Thanks!