Skip to content

docs(contracts): verify addresses on-chain, fix Controller classification, add L2Migrator - #1

Merged
adamsoffer merged 5 commits into
adamsoffer:feat/target-check-and-redirectsfrom
livepeer:docs/contracts-0x-prefix-note
Aug 4, 2026
Merged

docs(contracts): verify addresses on-chain, fix Controller classification, add L2Migrator#1
adamsoffer merged 5 commits into
adamsoffer:feat/target-check-and-redirectsfrom
livepeer:docs/contracts-0x-prefix-note

Conversation

@rickstaa

@rickstaa rickstaa commented Aug 4, 2026

Copy link
Copy Markdown

Corrections to /network/reference/contracts, after resolving every Arbitrum One address against the
Controller on chain 42161.

  • Moved MerkleSnapshot, L2LPTDataCache and L2Migrator into the Controller-resolved table — they
    are registered, but the page said they were not
  • Added L2Migrator (0x148D5b6B…), missing while L1Migrator was listed. claimStakeEnabled() is
    still true, so unmigrated stake remains claimable
  • "Every Arbitrum One protocol address is registered in the Controller" → "Most". Four are not
    (AIServiceRegistry, L2LPTGateway, Governor, PollCreator)
  • Dropped the claim that every row in the Arbitrum table is a proxy — Controller, LivepeerToken,
    MerkleSnapshot and L2LPTDataCache are not
  • Historical note now cites the legacy Ethereum Controller (0xf96d54e4…), which still resolves the
    paused migration-era addresses via getContract
  • Historical note no longer says the protocol repo "catalogs" the mainnet contracts — it publishes no
    L1 address list. Links the streamflow branch for the code instead
  • Labelled L1Migrator as V2; a V1 exists at 0x21146B87…
  • Artifact link confluencedelta; the confluence branch predates BondingVotes,
    LivepeerGovernor, Treasury and AIServiceRegistry
  • Bumped the Arbitrum table's verified date to 4 August 2026. The Ethereum table keeps 30 July —
    those rows were not re-checked
  • Noted that a 0x0 result from a …Target lookup can mean the contract is not proxied. Five are
    not (Minter, LivepeerToken, Treasury, MerkleSnapshot, L2LPTDataCache)

No address on the page changed. Earlier commits in this PR: 0x prefix note, Arbiscan deep-link, and
the Target-implementation section.

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
rickstaa force-pushed the docs/contracts-0x-prefix-note branch from 969cbe0 to 27bdac2 Compare August 4, 2026 07:09
rickstaa and others added 2 commits August 4, 2026 09:25
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>
@rickstaa rickstaa changed the title docs(contracts): note 0x prefix for Controller getContract lookups docs(contracts): verify addresses on-chain, fix Controller classification, add L2Migrator Aug 4, 2026
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>
@adamsoffer
adamsoffer merged commit 4d42b8b into adamsoffer:feat/target-check-and-redirects Aug 4, 2026
@adamsoffer
adamsoffer deleted the docs/contracts-0x-prefix-note branch August 4, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants