Skip to content

Smart Contracts

This section describes the core smart contracts that make up the Rugdrome protocol.

Core Contracts

ContractFilePurpose
RUGDcontracts/Rugd.solERC-20 RUGD token.
VotingEscrowcontracts/VotingEscrow.solLocks RUGD and mints veNFTs.
Votercontracts/Voter.solLets veNFT holders vote for gauges and claim bribes.
Routercontracts/Router.solSwap and liquidity routing for v1 pairs.
Paircontracts/Pair.solv1 AMM pair (Solidly-style).
RewardsDistributorcontracts/RewardsDistributor.solDistributes fees to veNFT holders.
Mintercontracts/Minter.solMints weekly RUGD emissions.
ProtocolForwardercontracts/ProtocolForwarder.solERC-2771 trusted forwarder.

Factory Contracts

ContractFilePurpose
PairFactorycontracts/factories/PairFactory.solDeploys v1 pairs.
GaugeFactorycontracts/factories/GaugeFactory.solDeploys standard gauges.
BribeFactorycontracts/factories/BribeFactory.solDeploys internal and external bribes.
CLFactorycontracts/factories/CLFactory.solDeploys concentrated-liquidity pools.
CLGaugeFactorycontracts/factories/CLGaugeFactory.solDeploys CL gauges.

Concentrated Liquidity

ContractFilePurpose
CLPoolcontracts/cl/CLPool.solCL pool implementation.
CLGaugecontracts/cl/CLGauge.solCL gauge for emissions.
CLPositionManagercontracts/cl/CLPositionManager.solManages CL positions.
CLQuotercontracts/cl/CLQuoter.solOff-chain swap quoting.

Governance

ContractFilePurpose
RugdGovernorcontracts/governance/RugdGovernor.solOpenZeppelin Governor.
RugdTimelockControllercontracts/governance/RugdTimelockController.solDelays and executes proposals.

Deployment Order

A typical deployment follows this order:

  1. Deploy RUGD token (Rugd.sol).
  2. Deploy VotingEscrow and VeArtProxy.
  3. Deploy factories: PairFactory, GaugeFactory, BribeFactory, CLFactory, CLGaugeFactory.
  4. Deploy FactoryRegistry and register factories.
  5. Deploy Voter, RewardsDistributor, and Minter.
  6. Deploy Router, ZapHelper, SwapHelper, and VestingHelper.
  7. Deploy RugdGovernor (RugdGovernor.sol) and RugdTimelockController (RugdTimelockController.sol).
  8. Wire ownership and permissions.

The full deployment is automated by scripts/deploy/deployFull.js and scripts/deploy/runDeployment.js.

Contract Addresses

Mainnet addresses for the original Rugdrome deployment are listed in the root README.md. New Rugdrome deployment addresses are recorded in deployments.json after running the deployment scripts.

Contract READMEs

Each contract directory also contains a README.md with a file-by-file description. See:

  • contracts/README.md
  • contracts/cl/README.md
  • contracts/factories/README.md
  • contracts/governance/README.md
  • contracts/interfaces/README.md
  • contracts/libraries/README.md

Released under the GNU AGPL v3 License.