docs(contracts): verify addresses on-chain, fix Controller classification, add L2Migrator - #1
Merged
adamsoffer merged 5 commits intoAug 4, 2026
Conversation
Online keccak-256 tools return the digest without a leading 0x, which Arbiscan's Read Contract tab rejects with "invalid arrayify value". Call that out in the Target implementation steps. Also mention applications alongside orchestrators and delegators in the page description, since integrators read these contracts too. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Anchor the Read Contract link at #F1 so it opens with getContract expanded instead of the top of the tab. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rickstaa
force-pushed
the
docs/contracts-0x-prefix-note
branch
from
August 4, 2026 07:09
969cbe0 to
27bdac2
Compare
The historical note pointed at the protocol repo root and said contracts were "cataloged" there. The repo publishes no L1 address list — the only Ethereum artifact is deployments/mainnet/BridgeMinter.json on streamflow, and deployments/arbitrumMainnet is Arbitrum One, not Ethereum. Point at the streamflow branch and say "contract code" so readers do not expect addresses. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ntracts Verified every Arbitrum One address on the page against the Controller on chain 42161 today. Three contracts listed as "not registered in the Controller" actually are, which wrongly told readers they could not verify them by name: - MerkleSnapshot -> 0x10736ffa... - L2LPTDataCache -> 0xd78b6bD0... - L2Migrator -> 0x148D5b6B... Moved those into the Controller-resolved table. The four that genuinely return 0x0 (AIServiceRegistry, L2LPTGateway, Governor, PollCreator) stay put, cross-checked instead via on-chain state: AIServiceRegistry controller() and L2LPTGateway l2Lpt() point at the Controller and LPT respectively, PollCreator QUORUM() returns 333300. Other fixes: - Add L2Migrator, which was missing while L1Migrator was listed. claimStakeEnabled() returns true, so delegators who never migrated can still claim stake. Address is the proxy, per arbitrum-lpt-bridge artifacts (target 0x4F59b39e...). - The verify section claimed "every" address is Controller-registered. Four are not. Say "most". - The Arbitrum intro called every row a proxy. Controller, LivepeerToken, MerkleSnapshot and L2LPTDataCache are not proxies. - Cite the legacy Ethereum Controller (0xf96d54e4...) in the historical note. It still resolves the paused migration-era addresses via getContract (BondingManager -> 0x511Bc455...), so readers can enumerate that set rather than take the note on faith. - Label L1Migrator as V2; a V1 exists at 0x21146B87... and would otherwise look like a docs error to anyone cross-checking. - Deployment artifact link pointed at the confluence branch, which lacks BondingVotes, LivepeerGovernor, Treasury and AIServiceRegistry. Use delta. - Bump the Arbitrum table's verification date to 4 August 2026. The Ethereum table keeps 30 July, since those rows were not re-checked. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Five of the Controller-registered contracts (Minter, LivepeerToken, Treasury, MerkleSnapshot, L2LPTDataCache) are deployed directly rather than behind a proxy, so <Name>Target resolves to 0x0 for them. The page attributed that result to a misspelled name or wrong chain only. 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.
Corrections to
/network/reference/contracts, after resolving every Arbitrum One address against theController on chain 42161.
MerkleSnapshot,L2LPTDataCacheandL2Migratorinto the Controller-resolved table — theyare registered, but the page said they were not
L2Migrator(0x148D5b6B…), missing whileL1Migratorwas listed.claimStakeEnabled()isstill
true, so unmigrated stake remains claimable(
AIServiceRegistry,L2LPTGateway,Governor,PollCreator)Controller,LivepeerToken,MerkleSnapshotandL2LPTDataCacheare not0xf96d54e4…), which still resolves thepaused migration-era addresses via
getContractL1 address list. Links the
streamflowbranch for the code insteadL1Migratoras V2; a V1 exists at0x21146B87…confluence→delta; theconfluencebranch predatesBondingVotes,LivepeerGovernor,TreasuryandAIServiceRegistrythose rows were not re-checked
0x0result from a…Targetlookup can mean the contract is not proxied. Five arenot (
Minter,LivepeerToken,Treasury,MerkleSnapshot,L2LPTDataCache)No address on the page changed. Earlier commits in this PR:
0xprefix note, Arbiscan deep-link, andthe Target-implementation section.