Proposal Types
Every Governance Proposal must be of a single Proposal Type. The parameters required for each Proposal Type differ based on the particular action required to be performed.
All OptSwap Contracts are Non-Custodial. While the proposal types below are versatile and quite powerful in terms of the actions that can be performed by the governance, it is just as important (if not more so) to understand what the governance cannot do. Specifically, the governance:
Cannot access or withdraw user funds from any contracts (DEX/AMM/Staking/etc.,)
Cannot change or manipulate user positions in the DEX or AMM contracts.
Cannot change or reverse past transactions in any manner whatsoever.
Cannot change the on-chain spot and settlement prices reported by the Meta Oracle.
Meta Oracle
Add Oracle
Track a unique Uniswap V2/V3 Pair as an on-chain Oracle to store Time Weighted Average Prices (TWAPs) and liquidity snapshots.
Parameters: token0
(address), token0Decimals
(number), token1
(address), token1Decimals
(number), router
(address), liquidityPool
(address), liquidityPoolType
(UniV2/UniV3
), nativeAssetToken
(Token0/Token1/None
)
Disable Oracle
Disable an existing Oracle.
Parameters: token0
(address), token1
(address), liquidityPool
(address)
Enable Oracle
Re-enable a previously disabled Oracle.
Parameters: token0
(address), token1
(address), liquidityPool
(address)
Set Treasury Mint Ratio
Sets the Treasury Mint Ratio for OS* tokens minted by the Meta Oracle as rewards during the Price Mining operations by miners. See Price Mining.
Parameters: treasuryMintRatio
(percentage between 0-100%)
Withdraw Funds
Withdraw any donations to the Meta Oracle back into the treasury.
Parameters: tokens[]
(address array)
Treasury Operations
Transfer Native Asset
Transfer an amount of the network's native asset (gas token) from the treasury to the given address.
Parameters: toAddress
(address), amount
(number)
Transfer Tokens
Transfer an amount of ERC-20 tokens from the treasury to the given address.
Parameters: toAddress
(address), transferToken
(address), amount
(number)
Approve Tokens And Notify Reward
Approve an amount of the native asset (gas token) or ERC-20 token to the given smart contract address and call the notifyReward
function. This is used mainly for transferring staking and other rewards to the respective smart contracts.
Parameters: toAddress
(address), rewardToken
(address), rewardAmount
(number)
Commercial Papers
Issue New Commercial Paper
Issues a new Commercial Paper (C-Paper) which users can subscribe to.
Parameters: name
(string), symbol
(string), whitelisted
(boolean), restrictiveLegend
(boolean), underlyingToken
(address), faceValue
(number), subscriptionDiscount
(number), issueStartAt
(timestamp), issueEndAt
(timestamp), maturityTimestamp
(timestamp), maxSupply
(number)
Whitelist Users
Approves users to be able to subscribe to a commercial paper that is not open to the public.
Parameters: cPaperAddress
(address), users[]
(address array), whitelisted[]
(boolean array)
Withdraw Funds
Withdraw funds accrued from user subscriptions into the treasury from the relevant C-Paper contract.
Parameters: cPaperAddress
(address), tokens
(address array)
Fundraising
Create Fundraising Round
Creates a new Fundraising Round for the specified token at the specified rate.
Parameters: maxSupply
(number), token
(address), tokenDecimals
(number), whitelisted
(boolean), restrictiveLegend
(boolean), rate
(number), startAt
(timestamp), endAt
(timestamp), vestingPeriod
(number)
Whitelist Users
Approves users to be able to subscribe to a fundraising round that is not open to the public.
Parameters: roundNumbers
(number array), users[]
(address array), whitelisted[]
(boolean array)
Remove Restrictive Legends
Removes the Restrictive Legend from the specified vesting fundraises.
Parameters: vestingNumbers
(number array)
Withdraw Funds
Withdraw funds accrued from fundraising rounds into the treasury.
Parameters: tokens
(address array)
Airdrops
Create Airdrops
Creates native asset (gas token) or ERC-20 token Airdrops for the specified set of users in the specified amounts and also specifies the vesting ending timestamps for each.
Parameters: users[]
(address array), tokens[]
(address array), amounts[]
(number array), vestingEndsAt[]
(timestamp array)
Withdraw Funds
Withdraw excess tokens deposited into the Airdrops contract back into the treasury.
Parameters: tokens
(address array)
DEXes & AMMs
Deploy New OptSwap DEX Contract
Deploy a new OptSwap Options Decentralized Exchange (DEX) contract for the specified underlying and cash asset pair alongside the contract and exchange specifications.
Parameters: underlyingAsset
(address), underlyingAssetDecimals
(number), cashAsset
(address), cashAssetDecimals
(number), fixedLotSize
(number), minTickSize
(number), maxUnderlyingExercisePeriod
(number), maxForceCashSettlementWaitPeriod
(number), metaOracle
(address), useViaToken
(boolean), viaTokenAddress
(address)
Deploy New OptSwap AMM Contract
Deploy a new OptSwap Automated Market Maker (AMM) contract paired to the specified DEX with the specified strike and expiry parameters.
Parameters: optSwapContract
(address), standardStrikeDistance
(number), expiryStart
(timestamp), expiryFrequency
(number)
Update OptSwap Details
Updates the fees, rewards and settlement parameters to the specified values for an existing DEX.
Parameters: optSwapContract
(address), makerFees
(number), takerFees
(number), settlementFees
(number), positionConversionFees
(number), underlyingAssetFeesDisbursalContract
(address), cashAssetFeesDisbursalContract
(address), feesTransferReward
(number), maxUnderlyingExercisePeriod
(number), maxForceCashSettlementWaitPeriod
(number), rewardPerSettlementsExecutionPoint
(number), allowForceExerciseCashCalls
(boolean), allowForceExerciseCashPuts
(boolean), allowForceExerciseWithPartialSwap
(boolean), allowForceExerciseUnderlying
(boolean), matchFinderFeesPerLot
(number)
Update OptSwap AMM Address
Registers a new AMM contract with the specified DEX.
Parameters: optSwapContract
(address), ammAddress
(address)
Set OptSwap AMM Rewards
Updates the rewards parameters for the AMM associated with the given DEX.
Parameters: optSwapContract
(address), rewardPerMatchFinderPoint
(number), rewardPerLiquidityProviderPoint
(number), rewardPerManagedOrderCancellationPoint
(number)
Staking
Deploy New Staking Contract
Creates a new staking contract for the given staked token & reward token pair. The staked & reward tokens may be any combination of the native asset (gas token) or ERC-20 tokens.
Parameters: stakedToken
(address), stakedTokenDecimals
(number), stakedTokenIsNativeAsset
(boolean), rewardToken
(address), rewardTokenIsNativeAsset
(boolean)
Other
Execute Transaction
Calls the method specified by the signature and data on the target contract (as a delegate call or not). Note that arbitrary transactions are disallowed against the Meta Oracle, Airdrops & Fundraising contracts, any of the issued tokens (OS*/veOS*) or any of the previously deployed DEXes/AMMs.
Parameters: target
(address), value
(number), signature
(string), data
(bytes), executionTime
(timestamp), withDelegatecall
(boolean)
Proxy Upgrade
Upgrade the proxy implementation (logic) contract of one of the Core smart contracts in OptSwap.
Parameters: target
(address), logicContractAddress
(address), data
(bytes), value
(number)
Proxy Change Admin
Change the proxy admin of one of the Core smart contracts in OptSwap.
Parameters: target
(address), newAdmin
(address)
Redact Proposal
Redacts the specified proposal by overwriting the string and bytes arguments.
Parameters: proposalNumber
(number)
Set Governance Proposal Fee
Set a minimum fee to create a new proposal, payable in OS* tokens.
Parameters: feeAmount
(number)
Set Proposal Execution Reward
Set a maximum reward payable to the miner who executed the proposal, denominated in OS* tokens.
Parameters: rewardAmount
(number)
Set Token Authorized Supply
Set the maximum authorized OS* token supply.
Parameters: authorizedAmount
(number)
Register New Contract
Registers a new contract of the given type with the governance registry. The parameters specific to the particular contract type must be specified by the proposer.
Parameters: target
(address), contractType
(OptSwap/OptSwapDAOStaking/OptSwapDAOCommercialPaperToken/MetaOracle/ERC-20/Other
), {...contractTypeSpecificArguments}
(multi-type)
Last updated