Skip to main content
The Boost V2 Docs are under active development and will be subject to changes.
The Managed Budget contract is a flexible budget implementation that allows for the distribution of tokens with role-based access control. A Managed Budget is required to deploy boosts. In order to deploy boosts from a budget, the budget must be funded with enough ERC-20 tokens to cover the cost of the boost incentives, plus any fees.

Smart Contract

Read the smart contracts

Typedoc

See technical documentation

SDK Implementation

See the source
ManagedBudget is designed to hold and distribute assets while providing fine-grained control over who can perform various operations.
Boost Budget Flow

Key Features

  • Role-based access control for management and administration
  • Flexible allocation and distribution of assets
  • Clawback functionality for asset recovery

Create a new ManagedBudget

To initialize a new ManagedBudget contract:
import { BoostCore } from '@boostxyz/sdk/BoostCore'
import { BoostRegistry } from '@boostxyz/sdk/BoostRegistry'
import { Roles } from '@boostxyz/sdk'
import { config } from "./config";

const core = new BoostCore({ config });
const registry = new BoostRegistry({ config });

// initialize a new budget contract
const budget = await registry.initialize(
  "MyBoostBudget",
  core.ManagedBudget({
    owner: account.address,
    authorized: [account.address, core.assertValidAddress()],
    roles: [Roles.ADMIN, Roles.MANAGER],
  })
);

const budgetAddress = budget.assertValidAddress();

Get an existing ManagedBudget

To get an existing ManagedBudget contract:
const budget = core.ManagedBudget("0xc55F719709bDad022B320E76f9DfF7e6F5680767")

// or if you want a budget from a specific chain
const budgetOnBase = core.ManagedBudget(
  "0xc55F719709bDad022B320E76f9DfF7e6F5680767",
  { chainId: 8453 }
)
Once a budget is created, it can be funded and used to deploy boosts.