diff --git a/programs/autocrat/src/error.rs b/programs/autocrat/src/error.rs index 87649abda..973d3450c 100644 --- a/programs/autocrat/src/error.rs +++ b/programs/autocrat/src/error.rs @@ -28,4 +28,6 @@ pub enum AutocratError { InsufficientLpTokenBalance, #[msg("The LP tokens passed in have less liquidity than the DAO's `min_quote_futarchic_liquidity` or `min_base_futachic_liquidity`")] InsufficientLpTokenLock, + #[msg("Question must have exactly 2 outcomes for binary futarchy")] + QuestionMustBeBinary, } diff --git a/programs/autocrat/src/instructions/initialize_proposal.rs b/programs/autocrat/src/instructions/initialize_proposal.rs index ac3199e80..eb3a7d8e4 100644 --- a/programs/autocrat/src/instructions/initialize_proposal.rs +++ b/programs/autocrat/src/instructions/initialize_proposal.rs @@ -88,6 +88,12 @@ impl InitializeProposal<'_> { pub fn validate(&self) -> Result<()> { let clock = Clock::get()?; + require_eq!( + self.question.num_outcomes(), + 2, + AutocratError::QuestionMustBeBinary + ); + for amm in [&self.pass_amm, &self.fail_amm] { // an attacker is able to crank 5 observations before a proposal starts require!(