Default eth_estimateGas block parameter to pending to match Anvil/EDR behavior#509
Conversation
|
|
||
| // Default to pending block, same as EDR and original Anvil | ||
| // See: https://github.com/paritytech/contract-issues/issues/261 | ||
| let block = block.or(Some(BlockId::Number(BlockNumberOrTag::Pending))); |
There was a problem hiding this comment.
anvil-polkadot does not currently have any special support for the pending tag (like building an intermediate block with the transactions in the pool), so I don't think this achieves anything
There was a problem hiding this comment.
Thanks for reviewing this PR, Alin!
This change enables the logic in eth-rpc and pallet-revive that is triggered when the block tag is pending.
There was a problem hiding this comment.
ok, I see. So for now we only want to have the current timestamp and the block number being increased. I thought we wanted to achieve full compatibility with what a real pending block would be in upstream anvil
|
|
||
| // Default to pending block, same as EDR and original Anvil | ||
| // See: https://github.com/paritytech/contract-issues/issues/261 | ||
| let block = block.or(Some(BlockId::Number(BlockNumberOrTag::Pending))); |
There was a problem hiding this comment.
shouldn't we change that inside get_block_hash_for_tag instead when block is None?
There was a problem hiding this comment.
Updating get_block_hash_for_tag could impact the behavior of several other APIs, such as eth_call and eth_getTransactionCount. Looking at the original Anvil implementation, the block is defaulted to pending (from None) only for eth_estimateGas.
…tofgas-when-executing-repayeth
… behavior (paritytech#509) * Default eth_estimateGas to pending block to match Anvil/EDR
* [Anvil] Fix impersonation marker collision with storage keys (#489) * [Anvil] Fix impersonation marker collision with storage keys Use 0xDE marker instead of 0x00 for impersonated transaction signatures to avoid collision with Solidity mapping key computations for slot 0. Closes #488 * !fixup af24a53a0 * Use original syntax * fix * update to latest polkadot-sdk (#467) --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zerosnacks <95942363+zerosnacks@users.noreply.github.com> Co-authored-by: zerosnacks <zerosnacks@protonmail.com> * Fix etch cheatcode (#486) * Add initial sync between REVM and pallet-revive (#487) * add more deposit_limits (#493) * add more deposit_limits * clippy * update compilers (#497) * update foundry-compilers * hardcode resolc version * Fix external-projects results parsing (#499) * Fix external-projects results parsing * Change to json * Add check for cheatcodes usage in pallet-revive (#494) * Add immutable support (#498) * add immutable * Remove unnecessary genesis.rs changes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * add test * refactor: improve anvil_setImmutableStorageAt API to accept Vec<Bytes> - Changed RPC interface to accept individual immutable values instead of concatenated bytes - Moved endianness conversion (big-endian to little-endian) from test to RPC handler - Updated test to pass immutable values as separate ABI-encoded Bytes elements - Simplified byte conversion logic: removed unnecessary intermediate vector, using direct indexing - Added comprehensive documentation explaining data format and conversion process - All immutable values now handled consistently with better API clarity This makes the RPC easier to invoke and aligns with how Sourcify and solc provide immutable data. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> * Fix polkadotskip test (#502) * Fix JSON parsing in external-projects CI (#501) Co-authored-by: Pavlo Khrystenko <45178695+pkhry@users.noreply.github.com> * Fix contract storage migration (#500) * Skip auto-funding for accounts that were explicitly dealt (#496) * Skip auto-funding for accounts that were explicitly dealt * Use existing eth_deals * Add repro test case for fund_pranked_accounts bug * Remove unnecessary test * Sync dealt balances to pallet-revive when pranking and pass eth_deals directly instead of cloning * Add warning when overflow happens (#503) * Set storage deposit for etched accounts (#504) * Limit uint to u64::MAX for fuzz tests (#507) * Add cheatcode tests (#435) * update compilers (#511) * Fix timestamp clamping to prevent overflow when converting to milliseconds (#510) * Default eth_estimateGas block parameter to pending to match Anvil/EDR behavior (#509) * Default eth_estimateGas to pending block to match Anvil/EDR * Fix snapshot issues (#512) * Add Claude config (#517) * Attempt to fix CI (#513) * change urls * add transient storage support in `polkadot` test execution mode (#449) * improve logging to match upstream anvil (#522) * Fix compatibility issues after syncing with master * Fmt * Remove consensus.rs * Fix retrieve para id * skip proof recorder when forking is enabled * Add comment explaining the irrelevant harcoded slot duration * Fix fmt and clippy --------- Co-authored-by: PG Herveou <pgherveou@parity.io> Co-authored-by: Pavlo Khrystenko <45178695+pkhry@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zerosnacks <95942363+zerosnacks@users.noreply.github.com> Co-authored-by: zerosnacks <zerosnacks@protonmail.com> Co-authored-by: Sebastian Miasojed <s.miasojed@gmail.com> Co-authored-by: filip-parity <filip.baciu@parity.io> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Marian Radu <marian@parity.io> Co-authored-by: Giuseppe Re <giuseppe.re@parity.io>
The blockNumber parameter for eth_estimateGas defaults to latest in eth-rpc (consistent with go-ethereum), but EDR and original Anvil default to pending. This PR aligns anvil-polkadot with the latter.