Skip to main content
Version: release (v0.77)

Propose changing the state of a market

Below, learn how to submit a governance proposal to:

Requirements

You will need:

  • A connected Vega wallet, with your wallet name and public key to hand
  • A minimum of whichever is larger, associated with that public key: based on the network parameter values for governance.proposal.updateMarket.minProposerBalance or spam.protection.proposal.min.tokens
  • Familiarity with market governance

Anatomy of the proposal types

Thresholds

FieldDescription
closingTimestampTimestamp (Unix time in seconds) when voting closes for this proposal. The chosen time must be between network parameter values: governance.proposal.updateMarket.minClose and governance.proposal.updateMarket.maxClose after the proposal submission time. (int64 as string)
enactmentTimestamp Timestamp (Unix time in seconds) when proposal gets enacted (if passed). The chosen time must be between network parameter values governance.proposal.updateMarket.minEnact and governance.proposal.updateMarket.maxEnact after closingTimestamp. (int64 as string)

Submitting proposals in a batch

If you want to submit this proposal as part of a larger batch of proposals, follow this sample structure:

{
"batchProposalSubmission": {
"rationale": {
"title": "High level title",
"description": "Description of all parts of this batch of proposals"
},
"terms": {
"closingTimestamp": "123",
"changes": [
{
"enactmentTimestamp": 123,
"cancelTransfer": {
"changes": {
"transferId": "345"
}
}
},
{
"enactmentTimestamp": 123,
"cancelTransfer": {
"changes": {
"transferId": "789"
}
}
}
]
}
}
}

Suspend a market

A market can be suspended for an indefinite amount of time, which puts the market into auction-only mode. Suspending a market allows for the possibility that it will be open to normal trading again in the future. A market that's suspended through governance can be resumed using the resume a market proposal.

The proposal to suspend an open market requires:

  • marketID for the market to suspend
  • updateType of MARKET_STATE_UPDATE_TYPE_SUSPEND

Template: Suspend a market

In the tabs below you'll see:

  • Annotated example describing what each field is for
  • JSON example
  • Command line examples for different operating systems

Replace the example data with the relevant details before submitting.

{
proposalSubmission: {
rationale: {
title: "Suspend futures market ORANGES2023",
description: "Proposal to suspend Oranges 2023 market"
},
terms: {
updateMarketState: {
changes: {
// the market to suspend
marketId: "d2157929132456dbc66eecbd478307156066243cd8769306e71f31882c22344f",
// the type of update required
updateType: "MARKET_STATE_UPDATE_TYPE_SUSPEND"
}
},
// Timestamp as Unix time in seconds when voting closes for this proposal,
// constrained by `minClose` and `maxClose` network parameters. (int64 as string)
closingTimestamp: 1685553047,
// Timestamp as Unix time in seconds when proposal gets enacted if passed,
// constrained by `minEnact` and `maxEnact` network parameters. (int64 as string)
enactmentTimestamp: 1685639447
}
}
}

Resume a market

A market that's been suspended through governance can be resumed using the following proposal type. If the proposal passes a governance vote, it will be resumed at the enactment time in the proposal.

The proposal to resume an open market requires the marketID for the one to suspend, as well as the updateTypeof MARKET_STATE_UPDATE_TYPE_RESUME

Template: Resume a market

In the tabs below you'll see:

  • Annotated example describing what each field is for
  • JSON example
  • Command line examples for different operating systems

Replace the example data with the relevant details before submitting.

{
proposalSubmission: {
rationale: {
title: "Resume suspended futures market LINK/USDT-230930",
description: "Proposal to resume futures market"
},
terms: {
updateMarketState: {
changes: {
// the market to update
marketId: "d2157929132456dbc66eecbd478307156066243cd8769306e71f31882c22344f",
// the type of update required
updateType: "MARKET_STATE_UPDATE_TYPE_RESUME"
}
},
// Timestamp as Unix time in seconds when voting closes for this proposal,
// constrained by `minClose` and `maxClose` network parameters. (int64 as string)
closingTimestamp: 1685553047,
// Timestamp as Unix time in seconds when proposal gets enacted if passed,
// constrained by `minEnact` and `maxEnact` network parameters. (int64 as string)
enactmentTimestamp: 1685639447
}
}
}

Terminate a market

Once a market is terminated, it cannot be reversed. If the proposal to terminate a market is enacted, it will end all trading on the market, settle all positions, and close the market completely.

The proposal to resume an open market requires the marketID for the one to suspend, as well as the updateType of MARKET_STATE_UPDATE_TYPE_TERMINATE.

It also requires a final settlement price, with enough digits to account for the market's decimal places. This uses the price field.

Template: Terminate a market

In the tabs below you'll see:

  • Annotated example describing what each field is for
  • JSON example
  • Command line examples for different operating systems

Replace the example data with the relevant details before submitting.

{
proposalSubmission: {
rationale: {
title: "Terminate futures market LINK/USDT-230930",
description: "Proposal to terminate futures market"
},
terms: {
updateMarketState: {
changes: {
// the market to terminate
marketId: "d2157929132456dbc66eecbd478307156066243cd8769306e71f31882c22344f",
// the type of update required
updateType: "MARKET_STATE_UPDATE_TYPE_TERMINATE",
// the price to use for settlement
price: "100"
}
},
// Timestamp as Unix time in seconds when voting closes for this proposal,
// constrained by `minClose` and `maxClose` network parameters. (int64 as string)
closingTimestamp: 1685553047,
// Timestamp as Unix time in seconds when proposal gets enacted if passed,
// constrained by `minEnact` and `maxEnact` network parameters. (int64 as string)
enactmentTimestamp: 1685639447
}
}
}

Voting

All proposals are voted on by the community.

To vote, community members need, at a minimum, the larger of the following network parameters' values: governance.proposal.updateMarket.minVoterBalance or spam.protection.voting.min.tokens associated to their Vega key.

Your proposal will need participation of the value of network parameter governance.proposal.updateMarket.requiredParticipation, a majority determined by the value of governance.proposal.updateMarket.requiredMajority, as well as a percentage of liquidity provider votes determined by the value of governance.proposal.updateMarket.requiredMajorityLP.

Enactment

If successful, the proposal will be enacted at the time you specify in the enactmentTimestamp field.