Market and governance

Instructions for creating markets, parameter proposals, referrals and protocol administration.

Updated Sep 25, 2026

Creating a market, operator and optional-manager bundles with full notice, referral revenue sharing, and the protocol-level administration only the futarchy authority can call. See Launch a market and Market operators.

initialize_market

Create a market for a base and quote pair with its configuration, vaults and parameter hash, paying the creation fee.

The creator's mint order defines the market. The SDK builds the LP mints, transfer-hook state and canonical Metaplex metadata into the same versioned transaction, using an address lookup table when needed.

Caller
The market creator
In the app
Launch a market
Discriminator
2323bdc19b30aacb

Arguments

args: InitializeMarketArgs

FieldTypeNotes
params_hash[u8; 32]sha256 of namespace, label and mints; part of the market address.
configMarketConfigThe complete market configuration: fees, curve, EMAs, borrow limits, IRM.
operator_interest_share_bpsu16Operator share of base interest; protocol markup is global and additive.
oracleOption<OraclePolicy>Initial oracle policy, installed atomically with the market. None uses native pricing. First liquidity authenticates a current report when the selected weight is positive. Oracle sources/policy are creation-only.
bootstrap_price_nadu64The opening quote-per-base price.
launch_fee_progress_offsetu16Starting point on the launch fee schedule.
srlp_metadataInitializeLpMetadataArgsMetadata for the three LP mints, created atomically with the market.
base_hlp_metadataInitializeLpMetadataArgs
quote_hlp_metadataInitializeLpMetadataArgs
MarketConfig
FieldTypeNotes
swap_fee_bpsu16
divergence_fee_share_cap_bpsu16
volatility_fee_share_cap_bpsu16
target_hlp_leverage_bpsu16
settlement_divergence_bpsu16
ema_half_life_msu64
directional_ema_half_life_msu64
curve_depth_ema_half_life_msu64
max_daily_borrow_bpsu16
global_health_contribution_cap_bpsu16
borrow_market_health_floor_bpsu16
ammAmmConfig
irmRiskRateConfig
start_timei64
AmmConfig
FieldTypeNotes
peak_amplification_nadu64
core_half_width_bpsu16
fade_width_bpsu16
center_ema_half_life_msu64
volatility_half_life_msu64
adjustment_step_nadu64
volatility_shock_cap_nadu64
volatility_cap_nadu64
divergence_fee_coefficient_nadu64
volatility_fee_coefficient_nadu64
swap_fee_collect_modeu8Asset in which swap, toxicity, volatility, and retained-recenter fees are denominated. Lending and hLP funding interest remain in the borrowed asset and are not affected by this setting.
compounding_fee_bpsu16Share of the LP-owned swap fee which becomes ordinary reserve principal instead of a claimable fee liability. Zero disables native compounding; `BPS_DENOMINATOR` compounds the complete LP share.
launch_fee_start_bpsu16Optional launch-only base fee. The premium above `swap_fee_bps` decays from `start_time` and is zero after the configured duration.
launch_fee_duration_secondsu64
launch_fee_decay_modeu8
launch_market_price_step_bpsu16When all three values are zero, the launch fee follows the time schedule above. A fully nonzero tuple selects a price-milestone scheduler whose reference price is bound by the first liquidity seed.
launch_market_number_of_periodsu16
launch_market_reduction_factor_bpsu16
launch_rate_limit_assetu8Optional launch buy-size limiter. The configured asset is the asset being bought, not the input asset. Each full/partial reference amount after the first adds `launch_rate_limit_increment_bps`, capped by `launch_rate_limit_max_fee_bps`.
launch_rate_limit_reference_nadu64
launch_rate_limit_increment_bpsu16
launch_rate_limit_max_fee_bpsu16
launch_rate_limit_duration_secondsu64
reserved[u8; 0]
RiskRateConfig
FieldTypeNotes
lower_signal_nadu64
upper_signal_nadu64
lower_utilization_bpsu16
upper_utilization_bpsu16
half_life_msu64
initial_apr_nadu64
OraclePolicy
FieldTypeNotes
formatu8
providerpubkey
base_accountpubkey
quote_accountpubkey
base_feed_id[u8; 32]
quote_feed_id[u8; 32]
lambda_bpsu16
adjustment_cap_nadu64
max_age_secondsu32
max_age_slotsu64
max_confidence_bpsu16
max_publish_skew_secondsu32
InitializeLpMetadataArgs
FieldTypeNotes
namestring
symbolstring
uristring

Accounts

AccountFlagsResolutionNotes
payerwritable · signer
base_mint
quote_mint
srlp_mintwritable
base_hlp_mintwritable
quote_hlp_mintwritable
srlp_token_metadatawritablePDA ["metadata", "0x0b7065b1e3d17c45389d527f6b04c3cd58b86c731aa0fdb549b6d1bc03f82946", srlp_mint]
base_hlp_token_metadatawritablePDA ["metadata", "0x0b7065b1e3d17c45389d527f6b04c3cd58b86c731aa0fdb549b6d1bc03f82946", base_hlp_mint]
quote_hlp_token_metadatawritablePDA ["metadata", "0x0b7065b1e3d17c45389d527f6b04c3cd58b86c731aa0fdb549b6d1bc03f82946", quote_hlp_mint]
marketwritablePDA ["market_v2", base_mint, quote_mint, args.args.params_hash]
futarchy_authorityPDA ["futarchy_authority"]
base_reserve_vaultwritablePDA ["market_reserve", market, base_mint]
quote_reserve_vaultwritablePDA ["market_reserve", market, quote_mint]
base_collateral_vaultwritablePDA ["market_collateral", market, base_mint]
quote_collateral_vaultwritablePDA ["market_collateral", market, quote_mint]
base_interest_vaultwritablePDA ["market_interest", market, base_mint]
quote_interest_vaultwritablePDA ["market_interest", market, quote_mint]
team_treasury
team_treasury_wsol_accountwritable
system_program11111111…1111
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
sysvar_instructionsSysvar1n…1111
token_metadata_programmetaqbxx…8x1s
event_authorityPDA ["__event_authority"]
program

update_lp_metadata

Update the name, ticker and metadata URI of an existing senior, hedged or junior LP mint belonging to the market.

Requires the current market operator and the market's metadata update authority. Accounting, mint identity, authority, royalties and other metadata settings are preserved.

Caller
The market operator
In the app
Operator tooling
Discriminator
bd016fe8e61e0cf5

Arguments

args: InitializeLpMetadataArgs

FieldTypeNotes
namestring
symbolstring
uristring

Accounts

AccountFlagsResolutionNotes
operatorsigner
marketPDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
lp_mint
token_metadatawritablePDA ["metadata", token_metadata_program, lp_mint]
token_metadata_programmetaqbxx…8x1s

announce_operator_change

Announce one atomic bundle of market settings or operator-owned authority and revenue changes.

One bundle is pending per market. Every replacement restarts the full maximum junior notice plus one day. Managers can edit settings only and cannot replace an operator-authored bundle.

Caller
The market operator or its optional manager
In the app
Operators
Discriminator
770a832757f2736e

Arguments

args: AnnounceOperatorChangeArgs

FieldTypeNotes
nonceu64
expected_epochu64
updatesVec<MarketParameterUpdate>
next_operatorOption<pubkey>
next_managerOption<pubkey>
revenue_recipientOption<pubkey>
interest_share_bpsOption<u16>
metadataProposalMetadataV1
MarketParameterUpdate
VariantFields
FeeFeeProfile
Concentrationpeak_amplification_nad: u64, core_half_width_bps: u16, fade_width_bps: u16, ramp_duration_slots: u64
IrmRiskRateUpdate
EmaHalfLivesprice_ms: u64, directional_price_ms: u64, curve_depth_ms: u64, center_price_ms: u64
DailyBorrowLimitmax_daily_borrow_bps: u16
CenterControlleradjustment_step_nad: u64
Tranchejunior_income_share_bps: u16
ProposalMetadataV1
FieldTypeNotes
versionu8
titlestring
description_uristring
description_sha256[u8; 32]
description_lenu32

Accounts

AccountFlagsResolutionNotes
payerwritable · signer
operatorsigner
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
proposalwritablePDA ["operator_change", market, args.args.nonce]
system_program11111111…1111
event_authorityPDA ["__event_authority"]
program

execute_operator_change

Execute the committed bundle after its notice and before its deadline, applying every change atomically.

Fixed Dusk limits, current authority, revisions, digest and market admission checks still apply. A successor operator signs to accept ownership; every ownership transfer clears the manager. Concentration targets start guarded ramps.

Caller
Anyone; the successor signs an ownership handoff
In the app
Operators
Discriminator
72921b743d869723

Arguments

None.

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
futarchy_authorityPDA ["futarchy_authority"]
proposalwritablePDA ["operator_change", market, proposal.nonce]
accepting_operatorsigner · optional
previous_revenuewritable · optional
event_authorityPDA ["__event_authority"]
program

resolve_operator_change

Cancel a pending bundle or close an executed, expired or stale bundle, returning rent to its recorded payer.

Caller
The operator, the manager for its own bundle, or anyone for terminal cleanup
In the app
Operators
Discriminator
ad04d0db3ce7817c

Arguments

ArgumentTypeNotes
cancelbool

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
proposalwritablePDA ["operator_change", market, proposal.nonce]
rent_refundwritable
operatorsigner · optional
event_authorityPDA ["__event_authority"]
program

remove_market_manager

Remove the optional manager immediately and invalidate that manager’s pending bundle.

An operator-authored pending bundle remains valid. Reappointment requires a new fully noticed bundle.

Caller
The market operator
In the app
Operators
Discriminator
f1600229e0329bae

Arguments

None.

Accounts

AccountFlagsResolutionNotes
operatorsigner
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
event_authorityPDA ["__event_authority"]
program

initialize_operator_revenue

Create the revenue account used to preserve one recipient’s collected interest entitlement.

Caller
Any payer
Discriminator
70d2b9085ad70f29

Arguments

None.

Accounts

AccountFlagsResolutionNotes
payerwritable · signer
marketPDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
revenuewritablePDA ["operator_revenue", market, market.operator.revenue_epoch]
system_program11111111…1111

claim_operator_revenue

Pay collected operator interest to its recorded recipient; historical collected fees stay with that recipient after a handoff.

Caller
Any payer; the payout destination is fixed
In the app
Operators
Discriminator
bd2fa9891749dd25

Arguments

args: ClaimOperatorRevenueArgs

FieldTypeNotes
revenue_epochu64
max_debitu64
minimum_creditu64

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
revenuewritable · optional
recipient
asset_mint
interest_vaultwritable
recipient_asset_accountwritable
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__event_authority"]
program

set_market_reduce_only

Switch one market into or out of reduce-only mode: no new borrows, deposits, leverage or proposals.

Caller
The emergency reduce-only key fixed in the program
Discriminator
b24edbc6bcb9b558

Arguments

args: SetMarketReduceOnlyArgs

FieldTypeNotes
reduce_onlybool

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
authority_signersigner3YL87sTC…Y6QV
event_authorityPDA ["__event_authority"]
program

configure_referral_partner

List a referral partner and set its share of protocol interest revenue.

Caller
The futarchy authority
Discriminator
24b32acc42a1c6fe

Arguments

args: ConfigureReferralPartnerArgs

FieldTypeNotes
referrerpubkey
interest_share_bpsu16
activebool

Accounts

AccountFlagsResolutionNotes
authority_signerwritable · signer
futarchy_authorityPDA ["futarchy_authority"]
referral_partnerwritablePDA ["referral_partner", args.args.referrer]
system_program11111111…1111
event_authorityPDA ["__event_authority"]
program

initialize_referral_accrual

Create the account that accrues a partner's claimable interest for one market and mint.

Caller
Any payer, usually composed with the first referred debt
Discriminator
b07e01b03bb10f52

Arguments

None.

Accounts

AccountFlagsResolutionNotes
payerwritable · signer
referral_partnerPDA ["referral_partner", referral_partner.authority]
marketPDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
asset_mint
referral_accrualwritablePDA ["referral_accrual", referral_partner, market, asset_mint]
system_program11111111…1111

set_referral_recipient

Change the wallet a partner's claims are paid to.

Caller
The partner authority
Discriminator
3675250e5a3e7025

Arguments

args: SetReferralRecipientArgs

FieldTypeNotes
recipientpubkey

Accounts

AccountFlagsResolutionNotes
authoritywritable · signer
referral_partnerwritablePDA ["referral_partner", authority]
event_authorityPDA ["__event_authority"]
program

claim_referral_interest

Pay a partner's accrued interest for one market and mint to its recipient.

Caller
The partner authority
In the app
Referral
Discriminator
105901c68c48590d

Arguments

None.

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
authoritywritable · signer
referral_partnerPDA ["referral_partner", authority]
asset_mint
referral_accrualwritablePDA ["referral_accrual", referral_partner, market, asset_mint]
interest_vaultwritable
recipient_token_accountwritable
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__event_authority"]
program

init_futarchy_authority

Create the protocol-level authority account with its revenue shares and recipients.

Caller
The deployer, once
Discriminator
856e9a1df0ce4764

Arguments

args: InitFutarchyAuthorityArgs

FieldTypeNotes
authoritypubkey
swap_bpsOption<u16>None uses DEFAULT_PROTOCOL_REVENUE_SHARE_BPS; Some(0) explicitly disables the share.
interest_bpsOption<u16>Global additive interest markup. None uses the protocol default; Some(0) disables markup.
max_referral_interest_share_bpsu16
futarchy_treasurypubkey
futarchy_treasury_bpsu16
buybacks_vaultpubkey
buybacks_vault_bpsu16
team_treasurypubkey
team_treasury_bpsu16
staking_vaultpubkey
fee_auction_accepted_mintpubkey
buyback_auction_accepted_mintpubkey

Accounts

AccountFlagsResolutionNotes
deployerwritable · signer
futarchy_authoritywritablePDA ["futarchy_authority"]
program_dataPDA ["0x1b8c6728b392ade47867b3a3510378d466851102cd70dfde697e46bb64527021"]
system_program11111111…1111

update_futarchy_authority

Rotate the futarchy authority key.

Caller
The futarchy authority
Discriminator
0fc49dd971e25919

Arguments

args: UpdateFutarchyAuthorityArgs

FieldTypeNotes
new_authoritypubkey

Accounts

AccountFlagsResolutionNotes
authority_signerwritable · signer
futarchy_authoritywritablePDA ["futarchy_authority"]

update_protocol_revenue

Set the protocol's share of swap fees and of realized interest.

Caller
The futarchy authority
Discriminator
b08b83c528e17dc8

Arguments

args: UpdateProtocolRevenueArgs

FieldTypeNotes
swap_bpsOption<u16>
interest_bpsOption<u16>
max_referral_interest_share_bpsOption<u16>
revenue_distributionOption<RevenueDistribution>
protocol_auction_splitOption<ProtocolAuctionSplit>
RevenueDistribution
FieldTypeNotes
futarchy_treasury_bpsu16
buybacks_vault_bpsu16
team_treasury_bpsu16
ProtocolAuctionSplit
FieldTypeNotes
fee_auction_bpsu16
buyback_auction_bpsu16

Accounts

AccountFlagsResolutionNotes
authority_signerwritable · signer
futarchy_authoritywritablePDA ["futarchy_authority"]
event_authorityPDA ["__event_authority"]
program

update_revenue_recipients

Set the futarchy treasury, buybacks vault and team treasury recipients.

Caller
The futarchy authority
Discriminator
74b3892f76a741d9

Arguments

args: UpdateRevenueRecipientsArgs

FieldTypeNotes
futarchy_treasuryOption<pubkey>
buybacks_vaultOption<pubkey>
team_treasuryOption<pubkey>

Accounts

AccountFlagsResolutionNotes
authority_signerwritable · signer
futarchy_authoritywritablePDA ["futarchy_authority"]

update_protocol_auction_config

Set the accepted mint, price parameters and reference-age limit of protocol auctions.

Caller
The futarchy authority
Discriminator
04ca71c2d07ad449

Arguments

args: UpdateProtocolAuctionConfigArgs

FieldTypeNotes
laneProtocolAuctionLane
accepted_mintOption<pubkey>
paramsOption<ProtocolAuctionParams>
ProtocolAuctionLane
VariantFields
Feeunit
Buybackunit
ProtocolAuctionParams
FieldTypeNotes
start_multiplier_bpsu16
floor_multiplier_bpsu16
duration_slotsu64
max_reference_age_slotsu64

Accounts

AccountFlagsResolutionNotes
authority_signerwritable · signer
futarchy_authoritywritablePDA ["futarchy_authority"]
event_authorityPDA ["__event_authority"]
program

update_protocol_auction_recipients

Set where protocol auction proceeds go.

Caller
The futarchy authority
Discriminator
d2d25e53bc0e26f7

Arguments

args: UpdateProtocolAuctionRecipientsArgs

FieldTypeNotes
laneProtocolAuctionLane
treasuryOption<pubkey>
staking_vaultOption<pubkey>
treasury_bpsOption<u16>
staking_vault_bpsOption<u16>
ProtocolAuctionLane
VariantFields
Feeunit
Buybackunit

Accounts

AccountFlagsResolutionNotes
authority_signerwritable · signer
futarchy_authoritywritablePDA ["futarchy_authority"]
event_authorityPDA ["__event_authority"]
program

update_protocol_auction_route

Set a market's route for selling its protocol revenue.

Caller
The futarchy authority
Discriminator
25a0c21c354e2b77

Arguments

args: UpdateProtocolAuctionRouteArgs

FieldTypeNotes
laneProtocolAuctionLane
sold_mintpubkey
reference_marketpubkeyA governance-approved market key. The default key removes the approval and permits settlement only from the sold market's own direct pair.
ProtocolAuctionLane
VariantFields
Feeunit
Buybackunit

Accounts

AccountFlagsResolutionNotes
authority_signersigner
futarchy_authorityPDA ["futarchy_authority"]
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
event_authorityPDA ["__event_authority"]
program

set_global_reduce_only

Switch the whole protocol into or out of reduce-only mode.

Caller
The emergency reduce-only key fixed in the program
Discriminator
f2977b8bef57f962

Arguments

args: SetGlobalReduceOnlyArgs

FieldTypeNotes
reduce_onlybool

Accounts

AccountFlagsResolutionNotes
authority_signerwritable · signer3YL87sTC…Y6QV
futarchy_authoritywritablePDA ["futarchy_authority"]

settle_protocol_auction

Buy accumulated protocol revenue from one lane (fee or buyback) and source (swap or interest) at the auction price.

Caller
Anyone with the accepted mint
Discriminator
cecc208708164850

Arguments

args: SettleProtocolAuctionArgs

FieldTypeNotes
laneProtocolAuctionLane
sourceProtocolRevenueSource
sold_amountu64
max_payment_amountu64
ProtocolAuctionLane
VariantFields
Feeunit
Buybackunit
ProtocolRevenueSource
VariantFields
Swapunit
Interestunit

Accounts

AccountFlagsResolutionNotes
bidderwritable · signer
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
futarchy_authoritywritablePDA ["futarchy_authority"]
sold_mint
accepted_mint
sold_vaultwritable
bidder_payment_accountwritable
bidder_receive_accountwritable
treasury_payment_accountwritable
staking_vault_payment_accountwritable
reference_market
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__event_authority"]
program