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.
Detects Arbitrum Nitro rollups in a pretty simple manner by looking only at the transactions which have
CreateRollup
signature.For OP stack everything is way more complicated, but in short:
AddressManager
,ProxyAdmin
,OptimismPortal
,L1CrossDomainMessenger
,L2OutputOracle
,OptimismMintableERC20Factory
,SystemConfig
,L1StandardBridge
,L1ERC721Bridge
) it checks for the new contract deployed with the specific hash of acode_change
AddressManager
,ProxyAdmin
) it looks for the transactions which haveUpgrade
orUpgradeAndCall
call signatures in theProxyAdmin
contract and the checks the function arguments against already saved implementation addressesThis approach has ways to improve, starting with using Substreams store modules in order to make sure we are correctly enriching one rollup entity instead of creating a new one, because it's pretty much possible that the implementation contracts deployment and proxy settings might happen in different blocks. For now our substreams have no inter-block state management.