Add robinhood chains to ethgas readers and ethrpc networks - #217
Merged
Merged
Conversation
Adds robinhood (4663) and robinhood-testnet (46630) to CustomGasPricePaidReaders. Both are Arbitrum Orbit chains running Arbitrum Nitro, so they belong with the other arbitrum entries. Without this they fall through to DefaultGasPricePaidReader, which reports each transaction's GasFeeCap -- the maximum the sender was willing to pay. On these chains that overstates the price actually paid: eth_maxPriorityFeePerGas returns 0, and ordering is first-come-first-served by sequencer arrival, so tips cannot affect inclusion and effectively nothing is paid above the base fee. arbitrumGasPricePaidReader reports block.BaseFee() instead, which is what was really paid. Affects gas statistics only, not transaction correctness. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds robinhood (4663) and robinhood-testnet (46630) to ethrpc.Networks, which ethreceipts consults for NumBlocksToFinality when a caller does not set its own. NumBlocksToFinality 50 matches every arbitrum entry in this map (arbitrum, arbitrum-testnet, arbitrum-nova), which is the right reference since robinhood is an Arbitrum Orbit chain. Without an entry both chains fell back to DefaultNumBlocksToFinality of 40 -- workable, but implicit and inconsistent with the rest of the family. Note 50 blocks is ~5s at robinhood's 100ms block time, against ~12.5s for arbitrum at 250ms. Reorg depth is block-based, so matching the family's depth is the sensible reading, but the wall-clock window is correspondingly shorter. There is no ArbitrumChain field on the Network struct -- only OptimismChain -- so nothing else to set here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds robinhood (4663) and robinhood-testnet (46630) to the two chain-ID registries that treat Arbitrum chains specially. Both are Arbitrum Orbit chains running Arbitrum Nitro.
1.
ethgas/readers.go— gas price paid readerWithout an entry these chains fall through to
DefaultGasPricePaidReader, which reports each transaction'sGasFeeCap— the maximum the sender was willing to pay. On these chains that overstates what was actually paid:eth_maxPriorityFeePerGasreturns 0 on both, andfeeHistoryp50 rewards are 0 across 100 blocksSo tips cannot affect inclusion and effectively nothing is paid above base fee.
arbitrumGasPricePaidReaderreportsblock.BaseFee(), which is what was really paid. Affects gas statistics only, not correctness.2.
ethrpc/networks.go— Networks registryethreceiptsconsults this forNumBlocksToFinalitywhen a caller doesn't set its own. 50 matches every arbitrum entry in the map (arbitrum, arbitrum-testnet, arbitrum-nova). Without an entry both chains fell back toDefaultNumBlocksToFinalityof 40 — workable, but implicit and inconsistent with the family.Worth flagging: 50 blocks is ~5s at robinhood's 100ms block time, against ~12.5s for arbitrum at 250ms. Reorg depth is block-based so matching the family's depth is the sensible reading, but the wall-clock window is shorter. Easy to raise if you'd prefer time parity.
There's no
ArbitrumChainfield on theNetworkstruct — onlyOptimismChain— so nothing else to set.Verification
go build ./...passes andgofmtis clean for both files.go test ./ethgas/...passes.go test ./ethrpc/...fails withpanic: ethtest: unable to connect to testchain— confirmed pre-existing by running the same test on an unmodified tree, where it panics identically. That suite needs a local testchain that isn't running in this environment.Context
Companion to 0xsequence/relayer#189, which adds the same two chain IDs to the relayer's
isArbitrum()— that one does affect correctness, since it was silently overridingMinGasTipto 1 Gwei on a ~0.05 Gwei chain. Chain configs are in 0xsequence/devops#4687.Both repos now carry hardcoded chain-ID allowlists for this, so each new Orbit chain needs a release in both. Replacing that with a config flag is planned as a separate follow-up.
🤖 Generated with Claude Code