Integrate Realms

Integrate Realms Into Your Stack

Integrate Realms Into Your Stack

This guide covers how to integrate SPL Governance (Realms) into your application, whether you're building a DeFi protocol, NFT project, or any on-chain application that needs decentralized decision-making.

Integration Approaches

1. Use Realms as Your Upgrade Authority

The simplest integration: let your DAO control program upgrades.

# Transfer program upgrade authority to your DAO wallet
solana program set-upgrade-authority <PROGRAM_ID> \
  --new-upgrade-authority <DAO_WALLET_ADDRESS>

The DAO Wallet is the native treasury PDA derived from your Governance account. Once transferred, all program upgrades must go through a governance vote.

2. Use the DAO Wallet as Admin Authority

If your program has admin/authority accounts, point them to the DAO Wallet:

// In your program's initialize instruction
pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
    let config = &mut ctx.accounts.config;
    config.authority = dao_wallet_address; // DAO controls this program
    Ok(())
}

Any instruction in your program that requires this authority can now only be executed through a governance proposal.

3. SDK Integration

Install

Read Governance Data

Create Governance Actions

The SDK uses a builder pattern where all instruction-building functions are prefixed with with and push instructions onto a TransactionInstruction[] array:

4. Embed Governance in Your dApp

Display governance data within your own frontend:

5. Plugin Integration

If your protocol has a custom token model (staking, locking, etc.), build a governance plugin so your token holders can vote with their staked/locked tokens. See Create a Custom Plugin for details.

Architecture Patterns

Pattern A: Governance-Controlled Protocol

Pattern B: Multi-Governance Setup

Create multiple governances within a single realm for different security tiers:

Pattern C: Council + Community Hybrid

Use a council for quick decisions and community for major changes:

Deployment Models

Shared Instance (Quick Start)

Use the public governance program instance:

Own Instance (Maximum Control)

Deploy your own instance for full sovereignty:

This way your DAO governs its own governance program - no external party can change the rules.

SPL Token 2022 Support

SPL Governance v3.1.2 supports Token-2022 (Token Extensions) for both community and council mints. Pass the appropriate GoverningTokenConfigAccountArgs with the token type when creating the realm:

Last updated