Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.livepeer.org/llms.txt

Use this file to discover all available pages before exploring further.


Gateways fund two accounts in the TicketBroker contract on Arbitrum One before sending jobs: a sender deposit and a penalty escrow (reserve). These ETH balances back the probabilistic micropayment tickets the gateway sends to orchestrators.

Deposit vs Reserve

Orchestrators query the gateway’s deposit before accepting a ticket. If deposit < faceVal, the ticket is invalid and the job is rejected. Most orchestrators also apply a minimum deposit threshold above faceVal to account for concurrent sessions.

Funding Deposits via livepeer_cli

# Fund sender deposit
livepeer_cli -sender-deposit <AMOUNT_IN_ETH>

# Fund penalty reserve
livepeer_cli -sender-reserve <AMOUNT_IN_ETH>
The livepeer_cli binary ships alongside go-livepeer. Both commands prompt for confirmation before submitting the on-chain transaction.

Funding Deposits via Contract

Call TicketBroker directly on Arbitrum One using cast (Foundry) or ethers.js:
# Using cast (Foundry)
cast send <TICKET_BROKER_ADDRESS> \
  "fundDeposit()" \
  --value <AMOUNT_IN_WEI> \
  --rpc-url <ARBITRUM_RPC_URL> \
  --private-key <GATEWAY_KEY>

cast send <TICKET_BROKER_ADDRESS> \
  "fundReserve()" \
  --value <AMOUNT_IN_WEI> \
  --rpc-url <ARBITRUM_RPC_URL> \
  --private-key <GATEWAY_KEY>
Replace <TICKET_BROKER_ADDRESS> with the address from the reference.

Withdrawing Deposits

Withdrawals from TicketBroker require an unlock period. The gateway initiates an unlock, waits for the unlock period to expire, then withdraws:
livepeer_cli -unlock-deposit
# Wait for unlock period (defined by protocol)
livepeer_cli -withdraw-deposit
The unlock period prevents gateways from withdrawing funds that have already been committed to in-flight tickets. Orchestrators can still redeem outstanding winning tickets during the unlock period.

Checking Deposit Status

Query current deposit levels:
livepeer_cli -status
The output includes the sender deposit and reserve balances for the gateway’s Ethereum address. For programmatic monitoring, call getSenderInfo(address) on TicketBroker:
const ticketBroker = new ethers.Contract(
  TICKET_BROKER_ADDRESS,
  TICKET_BROKER_ABI,
  provider,
);

const info = await ticketBroker.getSenderInfo(gatewayAddress);
console.log('deposit:', ethers.formatEther(info.sender.deposit));
console.log('reserve:', ethers.formatEther(info.reserve.funds));
The Livepeer network runs on Arbitrum One, not Ethereum mainnet. Ensure your RPC URL points to an Arbitrum One endpoint and that your gateway holds ETH on Arbitrum One, not Ethereum L1.

Probabilistic Micropayments

How tickets draw on the sender deposit and what makes a ticket valid.

Payments Overview

Payment modes and gateway deposit flow overview.

Contract Addresses

TicketBroker address on Arbitrum One.
Last modified on May 19, 2026