Skip to main content
Livepeer protocol contracts are deployed on Arbitrum One (active) and Ethereum Mainnet (legacy bridge and governance). Most use a proxy/target pattern: the proxy address is stable across governance upgrades, while the target changes when a new implementation is deployed.
Always verify an address on-chain before using it. Confirm you are on the official docs.livepeer.org site, and cross-check against the on-chain Controller (below) and a block explorer. An address with no label, unverified bytecode, or zero transactions is not a Livepeer contract.

Deployed addresses (Arbitrum One)

Resolved from the on-chain Controller (getContract(keccak256(name))) — last verified 1 July 2026. These are the stable proxy addresses.
ContractAddressUsed by / for
Controller0xD8E8328501E9645d16Cf49539efC04f734606ee4Registry that resolves every address below
BondingManager0x35Bcf3c30594191d53231E4FF333E8A770453e40Stake, bond/unbond, reward & fee cuts
TicketBroker0xa8bB618B1520E284046F3dFc448851A1Ff26e41BRedeem winning payment tickets for ETH
RoundsManager0xdd6f56DcC28D3F5f27084381fE8Df634985cc39fRound progression; gates the reward call
Minter0xc20DE37170B45774e6CD3d2304017fc962f27252Inflation issuance
ServiceRegistry0xC92d3A360b8f9e083bA64DE15d95Cf8180897431Orchestrator service URI for discovery
LivepeerToken (L2)0x289ba1701C2F088cf0faf8B3705246331cB8A839The LPT ERC-20 on Arbitrum
LivepeerGovernor0xcFE4E2879B786C3aa075813F0E364bb5acCb6aa0Proposals and voting (protocol + treasury)
Treasury0xf82C1FF415F1fCf582554fDba790E27019c8E8C4Governance-controlled community funds
BondingVotes0x0B9C254837E72Ebe9Fe04960C43B69782E68169AStake snapshots for voting power
Not registered in the Controller (verify via Arbiscan labels or the protocol repo): the AIServiceRegistry (AI subnet registration) and the LPT bridge contracts (L1Escrow on Ethereum, L2LPTGateway on Arbitrum).

Verify against the on-chain Controller

Every Arbitrum One protocol address is registered in the Controller at 0xD8E8328501E9645d16Cf49539efC04f734606ee4 (chain 42161). Query it directly — no trust in docs required:
# Example: resolve the BondingManager proxy address
cast call 0xD8E8328501E9645d16Cf49539efC04f734606ee4 \
  "getContract(bytes32)(address)" \
  $(cast keccak "BondingManager") \
  --rpc-url https://arb1.arbitrum.io/rpc
A registered contract returns a non-zero address. 0x000…000 means the name is misspelled or not on this chain. Then cross-check the returned address on Arbiscan or Blockscout: it should carry a Livepeer: label and verified source.

Canonical sources

Protocol source

The deployed contract code (commit-pinned).

Livepeer on Arbiscan

On-chain verified contract labels.

Protocol parameters

Governance values read from these contracts.

How the network works

What each contract does in the job and reward flow.