@@ -54,6 +54,7 @@ pub struct DAO {
5454 pub base_burn_lamports : u64 ,
5555 pub burn_decay_per_slot_lamports : u64 ,
5656 pub slots_per_proposal : u64 ,
57+ pub market_taker_fee : i64 ,
5758 // treasury needed even though DAO is PDA for this reason: https://solana.stackexchange.com/questions/7667/a-peculiar-problem-with-cpis
5859 pub treasury_pda_bump : u8 ,
5960 pub treasury : Pubkey ,
@@ -112,6 +113,7 @@ pub mod autocrat_v0 {
112113 dao. base_burn_lamports = DEFAULT_BASE_BURN_LAMPORTS ;
113114 dao. burn_decay_per_slot_lamports = DEFAULT_BURN_DECAY_PER_SLOT_LAMPORTS ;
114115 dao. slots_per_proposal = THREE_DAYS_IN_SLOTS ;
116+ dao. market_taker_fee = 0 ;
115117
116118 let ( treasury_pubkey, treasury_bump) =
117119 Pubkey :: find_program_address ( & [ dao. key ( ) . as_ref ( ) ] , ctx. program_id ) ;
@@ -128,6 +130,7 @@ pub mod autocrat_v0 {
128130 ) -> Result < ( ) > {
129131 let openbook_pass_market = ctx. accounts . openbook_pass_market . load ( ) ?;
130132 let openbook_fail_market = ctx. accounts . openbook_fail_market . load ( ) ?;
133+ let dao = & mut ctx. accounts . dao ;
131134
132135 require ! (
133136 openbook_pass_market. base_mint
@@ -151,7 +154,7 @@ pub mod autocrat_v0 {
151154 AutocratError :: InvalidMarket
152155 ) ;
153156 require ! (
154- openbook_pass_market. taker_fee == 0 ,
157+ openbook_pass_market. taker_fee == dao . market_taker_fee ,
155158 AutocratError :: InvalidMarket
156159 ) ;
157160 require ! (
@@ -186,7 +189,7 @@ pub mod autocrat_v0 {
186189 AutocratError :: InvalidMarket
187190 ) ;
188191 require ! (
189- openbook_fail_market. taker_fee == 0 ,
192+ openbook_fail_market. taker_fee == dao . market_taker_fee ,
190193 AutocratError :: InvalidMarket
191194 ) ;
192195 require ! (
@@ -223,7 +226,6 @@ pub mod autocrat_v0 {
223226 AutocratError :: TWAPMarketInvalidExpectedValue
224227 ) ;
225228
226- let dao = & mut ctx. accounts . dao ;
227229 let proposal = & mut ctx. accounts . proposal ;
228230
229231 proposal. number = dao. proposal_count ;
@@ -409,6 +411,14 @@ pub mod autocrat_v0 {
409411
410412 Ok ( ( ) )
411413 }
414+
415+ pub fn set_market_taker_fee ( ctx : Context < Auth > , market_taker_fee : i64 ) -> Result < ( ) > {
416+ let dao = & mut ctx. accounts . dao ;
417+
418+ dao. market_taker_fee = market_taker_fee;
419+
420+ Ok ( ( ) )
421+ }
412422}
413423
414424#[ derive( Accounts ) ]
0 commit comments