Skip to main content

Ethereum Contracts


The Audius Ethereum contracts are meant to accomplish the following goals for the Audius protocol:

  • Create the Audius token through an ERC-20
  • Keep track of different service versions
  • Allow service providers to stake and register services to run
  • Allow delegation from users holding Audius token to service providers running services on the network
  • Allow network to mint new tokens for stakers and delegators to earn staking rewards
  • Enable protocol governance to carry out protocol actions such as slash, and static value updates

All contracts are built on top of OpenZeppelin's Proxy pattern through AudiusAdminUpgradeabilityProxy which extends AdminUpgradeabilityProxy, enabling logic upgrades to be performed through the Governance contract.


Github Code available here


This contract defines the Audius Protocol token, $AUDIO

The $AUDIO token is a ERC-20 token contract with initial supply of 1 billion tokens, each divisible up to 18 decimal places, and is Mintable, Pausable, and Burnable.

Mainnet ContractSepolia Testnet Contract


This contract is responsible for allocating and minting new tokens as well as managing claim rounds.

A claim round is a period of time during which service providers with valid stakes can retrieve the reward apportioned to them in the network. Claims are processed here and new value transferred to Staking for the claimer, but the values in both ServiceProviderFactory and DelegateManager are updated through calls to DelegateManager.

Mainnet ContractSepolia Testnet Contract


This contract is responsible for tracking delegation state, making claims, and handling slash operations.

This contract allows any Audio Token holder to delegate to an existing Node Operator, earning rewards by providing additional stake the Node Operator while allocating a known percentage of their rewards to the Node Operator.

This contract manages the proportional distribution of stake between the Node Operator and delegators.

All claim and slash operations flow through this contract in order to update values tracked outside of the Staking contract appropriately and maintain consistency between total value within the Staking contract and value tracked by the DelegateManager contract and the ServiceProviderFactory contract.

Mainnet ContractSepolia Testnet Contract


Mainnet ContractSepolia Testnet Contract


This contract allows protocol participants to change protocol direction by submitting and voting on proposals.

Each proposal represents an executable function call on a contract in the Registry. Once submitted, there is a period of time during which other participants can submit their votes - Yes or No - on the proposal.

After the voting period has concluded, the proposal outcome is calculated as a the sum of the stakes of the Yes voters minus the sum of the stakes of the No voters.

Any non-negative value results in a successful proposal, at which point the specified function call is executed, and the proposal is closed.

Only addresses that have staked in Staking.sol and are represented through the Registry can submit and vote on proposals.

Mainnet ContractSepolia Testnet Contract


Contract through which external clients and Governance interact with the remaining contracts within the protocol. Each contract is registered using a key with which its address can be queried.

Mainnet ContractSepolia Testnet Contract


This contract is responsible for tracking Service Provider state within the Audius network.

A service provider is the account associated with a given service endpoint.

Each service provider can increase/decrease stake within dynamic bounds determined by the combination of endpoints they have registered, accept delegation from other token holders, define a reward cut for delegation, and continue registering endpoints as necessary.

This contract forwards staking requests to the actual Staking contract but tracks the amount of stake for the deployer - Staking tracks the sum of delegate stake + deployer stake.

ContractSepolia Testnet Contract Mainnet
A Note on Terminology

Through out the Smart Contracts that define the Audius protocol, the term "service provider" is used along with the "service endpoint(s)" that they operate.

More current terminology is "Node Operator" and "Audius Node" respectively.

  • Old: Service Providers operate service endpoints
  • New: Node Operators operate Audius Nodes


This contract is responsible for maintaining known service types, associated versioning information and service type stake requirements within the Audius Protocol.

Service types are used to identify services being registered within the protocol, for example creator-node or discovery-provider.

Service type stake requirements enforce a minimum and maximum stake amount for each endpoint of a given type that service providers register.

Mainnet ContractSepolia Testnet Contract
A Note on Terminology

Through out the Smart Contracts that define the Audius protocol, the terms creator-node and discovery-provider are used to define service types.

More current terminology is content-node and discovery-node are Audius Node types respectively.

  • Old: creator-node and discovery-provider are service types
  • New: content-node and discovery-node are Audius Node types.


This contract manages token staking functions and state across the Audius Protocol

For every service provider address in Audius Protocol, this contract:

  • Stores tokens and manages account balances
  • Tracks total stake history
  • The total stake (represented as the sun of the deployer stake plus the delegate stake)
  • Tracks last claim block
Mainnet ContractSepolia Testnet Contract


This contract serves as the on chain registry of trusted notifier services. Other services may look up and adjust their selected trusted notifier accordingly.

ContractSepolia Testnet Contract Mainnet


This contract serves as the interface between the Audius Protocol and Wormhole.

Mainnet ContractSepolia Testnet Contract