Enable or replace maker rebate program
When a high-volume maker rebate program is enabled, market makers can receive a rebate of a portion of their paid fees. The higher their maker volume over the program's window length, the greater the rebate that makers can receive.
The program needs to be enabled by governance. Once it's enabled, both the requirements and the benefits can also be replaced with a new program.
This page describes what you need to propose enabling or replacing the program, and provides example proposal templates that you will need to edit before sharing and submitting.
Requirements [WIP]
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: 🔗governance.proposal.VolumeDiscountProgram.minProposerBalance (🔗more than 0 tokens) or 🔗spam.protection.proposal.min.tokens (🔗1 token)
- Familiarity with governance on Vega
Anatomy of a maker rebate program proposal
The fields below all need to be defined to enable the program or replace an existing one.
If you are suggesting a replacement program, you'll need to include all the fields, even if you don't want to change their values. Just use the existing values from the current maker rebate program program.
End of program timestamp: Date and time after which, when the current epoch ends, the program will end and discounts will be disabled.
Window length: Number of epochs over which to evaluate traders' volume of taker trades.
To end an existing program early, set your proposal up with the exact same parameters. Set the end of program timestamp to be the same as the proposal's enactment timestamp.
Benefit tier fields [WIP]
Benefit tier field | Description | Accepted values |
---|---|---|
benefitTiers | List of values defining the discount factors for the program | Holds the details of each tier of discounts, listed below. Maximum of 🔗10 tiers |
...
| lpVolumeDiscountFactor
| Proportion of each trader's liquidity fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to 🔗0.4 |
| infrastructureVolumeDiscountFactor
| Proportion of each trader's infrastructure fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to 🔗0.4 |
minimum_party_maker_volume_fraction
: the requiredparty_maker_volume_fraction
for a party to access this tieradditional_maker_rebate
: the additional rebate factor (in percentage oftrade_value_for_fee_purposes
) a party at this tier will receive when they are the maker side of a trade
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"
}
}
}
]
}
}
}
Templates and submitting [WIP]
Below you will find:
- JSON example that can be submitted with the governance dApp ↗
- Command line examples for different operating systems
- Governance dApp (JSON)
- Command line (Linux / OSX)
- Command line (Windows)
- Copy the JSON example below into a text editor.
- Replace the placeholder values with those you want for the market.
- Tip: Use markdown formatting in your proposal's rationale to make for easier community review.
- Submit your proposal on the governance dApp ↗.
- Check you can see your proposal under Open Proposals on the governance dApp ↗.
{
"proposalSubmission": {
"rationale": {
"title": "Volume discount proposal title",
"description": "This enacts or replaces the volume discount program"
},
"terms": {
"updateVolumeDiscountProgram": {
"changes": {
"end_of_program_timestamp": 1234567890,
"window_length": 11,
"benefitTiers": [
{
"minimumRunningNotionalTakerVolume": "10000",
"makerVolumeDiscountFactor": "0.002",
"lpVolumeDiscountFactor": "0.002",
"infrastructureVolumeDiscountFactor": "0.002"
},
{
"minimumRunningNotionalTakerVolume": "10198",
"makerVolumeDiscountFactor": "0.098",
"lpVolumeDiscountFactor": "0.098",
"infrastructureVolumeDiscountFactor": "0.098"
}
],
}
},
"closingTimestamp": 1111111111,
"enactmentTimestamp": 1111111155
}
}
}
- Copy the command line example below into a text editor.
- Replace the placeholder values with those you want in the proposal.
- Tip: Use markdown formatting in your proposal's rationale to make for easier community review.
- Connect to your Vega wallet and use the command line to submit your proposal.
- Check you can see your proposal under Open Proposals on the governance dApp ↗.
./vegawallet transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KEY --network NETWORK_NAME
'{"proposalSubmission": {
"rationale": {
"title": "Volume discount proposal title",
"description": "This enacts or replaces the volume discount program"
},
"terms": {
"updateVolumeDiscountProgram": {
"changes": {
"end_of_program_timestamp": 1234567890,
"window_length": 3,
"benefitTiers": [
{
"minimumRunningNotionalTakerVolume": "10020",
"makerVolumeDiscountFactor": "0.001",
"infrastructureVolumeDiscountFactor": "0.001",
"lpVolumeDiscountFactor": "0.001"
},
{
"minimumRunningNotionalTakerVolume": "10198",
"makerVolumeDiscountFactor": "0.098",
"infrastructureVolumeDiscountFactor": "0.098",
"lpVolumeDiscountFactor": "0.098" }
],
}
},
"closingTimestamp": 1111111111,
"enactmentTimestamp": 1111111155
}
}
}'
- Copy the command line example below into a text editor.
- Replace the placeholder values with those you want in the proposal.
- Tip: Use markdown formatting in your proposal's rationale to make for easier community review.
- Connect to your Vega wallet and use the command line to submit your proposal.
- Check you can see your proposal under Open Proposals on the governance dApp ↗.
vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KEY --network NETWORK_NAME ^
"{^
\"proposalSubmission\": {^
\"rationale\": {^
\"title\": \"Volume discount program proposal title\",^
\"description\": \"This explains why I want to enact or replace the volume discount program\"^
},^
\"terms\": {^
: {
\"updateVolumeDiscountProgram\":^ {
\"changes\": {^
\"end_of_program_timestamp\": \"1234567890\",:^
\"window_length\": \"3\",
\"benefitTiers\": [
{
\"minimumRunningNotionalTakerVolume\": \"10100\",^
\"makerVolumeDiscountFactor\": \"0.001\",^
\"infrastructureVolumeDiscountFactor\": \"0.001\",^
\"lpVolumeDiscountFactor\": \"0.001\"^
},
{
\"minimumRunningNotionalTakerVolume\": \"11000\",^
\"makerVolumeDiscountFactor\": \"0.098\",^
\"infrastructureVolumeDiscountFactor\": \"0.098\",^
\"lpVolumeDiscountFactor\": \"0.098\"^
}
],
}
},
\"closingTimestamp\": \"1111111111\",^
\"enactmentTimestamp\": \"1111111155\"
}^
}^
}'^
Voting
All proposals are voted on by the community.
To vote, community members need, at a minimum, the larger of 🔗more than 0 tokens or 🔗1 token associated to their Vega key.
Your proposal will need participation of 🔗0% and a majority of 🔗66%, so having community support is essential.
Proposers who invite feedback, engage with comments, and make revisions to meet the needs of the community are more likely to be successful.
Enactment
If successful, the program changes will go live in the epoch following the time you specify in the enactmentTimestamp
field.