DocumentationguidesCreate a Proposal

Create a Proposal

Submit governance proposals to the CredDAO community for voting.

Prerequisites

Before creating a proposal, ensure you have:

  • Connected wallet with sufficient SOL
  • Registered member profile
  • Minimum reputation tier (Gold for standard proposals)
  • At least 30 active days on the platform
Note:

Proposal creation requires Gold tier (FairScore 70+) for standard proposals, or Platinum tier (85+) for expedited and emergency proposals.

Proposal Types

TypeTier RequiredTime-LockUse Case
StandardGold+Based on tierRegular governance decisions
ExpeditedPlatinum24 hoursUrgent matters
EmergencyPlatinum + Badges24 hoursCritical situations

Create via SDK

import { CredDAOClient, ProposalType } from '@creddao/sdk';
 
const client = new CredDAOClient({ provider, programId });
 
// Check your tier first
const profile = await client.getMemberProfile(wallet.publicKey);
console.log('Your tier:', profile.tier);
 
// Create a standard proposal (Gold+ required)
const proposal = await client.createProposal({
  proposalType: ProposalType.Standard,
  title: 'Treasury Allocation for Development Fund',
  description: 'Allocate 5% of treasury to fund community-driven development projects over the next quarter.',
});
 
console.log('Proposal created:', proposal.signature);
console.log('Proposal address:', proposal.proposalAddress.toBase58());

Create via Frontend

Connect Wallet

Click “Select Wallet” in the navigation bar and approve the connection request.

Navigate to Proposals

Go to the Proposals page and click Create Proposal.

Select Proposal Type

Choose the appropriate type based on urgency:

  • Standard - Regular governance matters
  • Expedited - Time-sensitive issues (Platinum only)
  • Emergency - Critical situations (Platinum + badges)

Fill in Details

Provide:

  • Clear, descriptive title
  • Detailed description with rationale
  • Expected outcomes
  • Any relevant links or references

Submit and Confirm

Review the transaction and confirm in your wallet.

Proposal Requirements

Standard Proposals

// Requirements check
const canCreate = profile.tier === 'gold' || profile.tier === 'platinum';
const hasActiveDays = profile.activeDays.toNumber() >= 30;

Emergency Proposals

Warning:

Emergency proposals require both Platinum tier AND sufficient badges earned through governance participation.

// Emergency proposal requirements
const canEmergency = 
  profile.tier === 'platinum' && 
  profile.badges >= daoConfig.emergencyBadgeCount;

Best Practices

Do

  • Write clear, specific titles
  • Provide detailed rationale
  • Include expected outcomes
  • Link to relevant discussions
  • Set realistic timelines

Don’t

  • Submit duplicate proposals
  • Create vague proposals
  • Bypass community discussion
  • Request excessive funding
  • Ignore quorum requirements

Example Proposal

const proposal = await client.createProposal({
  proposalType: ProposalType.Standard,
  title: 'Community Treasury Diversification',
  description: `
    ## Summary
    Diversify 20% of the DAO treasury into stablecoins to reduce volatility exposure.
    
    ## Rationale
    - Current treasury is 95% native token
    - Market volatility affects treasury value
    - Stablecoin allocation provides stability
    
    ## Implementation
    1. Swap 20% of treasury to USDC over 2 weeks
    2. Use TWAP strategy to minimize price impact
    3. Update treasury management policy
    
    ## Expected Outcomes
    - Reduced treasury volatility
    - Improved financial stability
    - Better runway for operations
  `,
});

Monitor Your Proposal

After creation, monitor your proposal:

// Get proposal status
const proposal = await client.getProposal(proposalAddress);
 
console.log('State:', proposal.state); // 'voting', 'succeeded', etc.
console.log('For votes:', proposal.forVotes.toNumber());
console.log('Against votes:', proposal.againstVotes.toNumber());
console.log('Voting ends:', new Date(proposal.votingEnd.toNumber() * 1000));
console.log('Time-lock expires:', new Date(proposal.timeLockExpiry.toNumber() * 1000));

Troubleshooting

InsufficientReputationTier error

Your FairScore is too low for this proposal type. Either:

  • Wait for your score to increase through participation
  • Submit a simpler proposal type available to your tier
  • Delegate to a higher-tier member to advocate for your proposal
InsufficientActiveDays error

You need at least 30 active days before creating proposals. Continue participating in the DAO to meet this requirement.

InsufficientBadges error

Emergency proposals require governance badges earned through:

  • Voting on proposals
  • Successful proposal creation
  • Long-term participation