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