Sowellian: How It Works
Sowellian: How It Works
Sowellian is a prediction market governance plugin for SPL Governance. It transforms traditional governance proposals into betting markets where participants stake tokens on the outcome of proposals, combining financial incentives with governance participation.
Overview
Instead of simply voting "Yes" or "No" on a proposal, Sowellian creates a bet tied to each proposal. Participants stake tokens on their predicted outcome, and when the bet is resolved, winners earn from the losing pool. This creates a "skin in the game" dynamic that incentivizes informed participation and honest signal expression.
Program ID: sowEL1Rtn3p479rg34gW7mVPeCNY58Es5rkLpFsCJAW
Core Concepts
Bet
A Bet is the central account that ties a prediction market to an SPL Governance proposal. It tracks:
The associated proposal
Total tokens staked on Yes vs No
The bet's lifecycle state (Active, Settled, Resolved)
The seed used for PDA derivation
The owner (proposer) who created it
Vote Receipt
When a participant places a bet (casts a Sowellian vote), a Vote Receipt is created. This receipt:
Records the voter's position (Yes or No)
Records the amount staked
Becomes the
governing_token_ownerfor a dedicated Voter Weight RecordIs used to claim winnings after resolution
Registrar
The Registrar configures the Sowellian plugin for a specific Realm. It stores:
The linked Realm and governing token mint
The governance account
The treasury address (for fee collection)
The realm authority
Lifecycle
1. Create a Bet
When a proposal is created, a bet is created alongside it:
The proposer provides an initial stake and defines the bet parameters. A proposal is automatically created in SPL Governance tied to this bet.
2. Cast Sowellian Votes
Participants stake tokens on their predicted outcome:
is_yes: true- Betting the proposal will passis_yes: false- Betting the proposal will failamount- Number of tokens to stake
Tokens are transferred to the bet vault (an Associated Token Account controlled by the bet PDA).
Each vote creates:
A Vote Receipt PDA:
['vote-receipt', bet, vote_seed]A Voter Weight Record PDA for the receipt, allowing the governance program to recognize the vote
The Sowellian plugin simultaneously casts the governance vote through CPI (Cross-Program Invocation) to the SPL Governance program.
3. Settle the Bet
After the governance vote concludes, anyone can settle the bet:
Settlement:
Locks in all staked amounts
Prevents further betting
The proposal owner's receipt is created
A treasury cut is taken from the pool
4. Resolve the Bet
The realm authority resolves the bet with the actual outcome:
Resolution:
Sets the winning side
Takes a 1% treasury cut from the total pool
Marks the bet as resolved
5. Claim Winnings
Winners claim their share of the losing pool:
Winnings are distributed proportionally based on each winner's stake relative to the total winning pool.
Fee Structure
Proposer Profit Share
15%
Portion of profits allocated to the bet creator
Voter Profit Share
5%
Additional share for governance voters
Bet Loss Rake
1%
Treasury cut from the total pool on resolution
Bet Weight Multiplier
Sowellian applies a weight multiplier to bets based on the participant's position in the betting order, divided into 10 buckets:
The multiplier ranges from 1x (first bucket) to 2.5x (last buckets). A participant's bucket is determined by their position relative to the total number of bettors.
PDA Addresses
Registrar
['registrar', realm, governing_token_mint]
Bet
['bet', seed]
Vote Receipt
['vote-receipt', bet, vote_seed]
Voter Weight Record
['voter-weight-record', realm, governing_token_mint, vote_receipt]
Bet Vault
ATA of the bet PDA for the governing token mint
Integration with SPL Governance
Sowellian works as a governance plugin by:
Registering as a voter weight addin on the Realm through
SetRealmConfigCreating VoterWeightRecords for each bet participant (keyed to their vote receipt, not their wallet directly)
Casting governance votes via CPI when a Sowellian vote is placed
The governance program reads the Sowellian-managed VoterWeightRecords to determine voting power
This means every Sowellian bet simultaneously functions as a governance vote, bridging prediction markets with on-chain governance execution.
Helper Functions
Last updated