CCIP Number | 012 |
---|---|
Title | Stabilize Emissions and Treasuries |
Author(s) | Jason Schrader [email protected] |
BowTiedMooneeb [email protected] | |
Ryan Waits [email protected] | |
Consideration | Economic, Governance, Technical |
Type | Standard |
Status | Ratified |
Created | 2022-08-04 |
License | BSD-2-Clause |
This proposal implements the first of two changes to help stabilize the CityCoins protocol design, allowing for future development, experimentation, and growth.
Please see CCIP-0131 for the second part of the proposal.
This proposal is divided into two phases:
- Phase 1: reduce current CityCoin emissions to 2%
- Phase 2: move treasuries to smart contract vaults
Previously, the community successfully voted for and implemented CCIP-008 in April 20222. This change included a single iteration to test stemming the miner arbitrage problem, the results were mixed as the arbitrage volume was reduced, but is still persistent3.
Phase 1 change reduces inflation to 2% annually for existing CityCoins, and works in concert with proposed changes described in Phase 3 and Phase 4 included in CCIP-0131.
To implement this change a proposal will be submitted to the auth contract for MIA/NYC, using the update-coinbase-amounts
and update-coinbase-thresholds
functions defined in CCIP-0104.
The coinbase thresholds and amounts will be updated based on the schedule described in the supplemental spreadsheet5, with a visual example of the reduction in total supply below:
The epochs will remain the same, but the coinbase thresholds will shift slightly, such that:
Epoch | Threshold MIA Before | Threshold MIA After | Threshold NYC Before | Threshold NYC After |
---|---|---|---|---|
0 | 34,497 | 34,497 | 47,449 | 47,449 |
1 | 59,497 | 59,497 | 72,449 | 72,449 |
2 | 109,497 | 76,990 | 122,449 | 76,990 |
3 | 209,497 | 209,497 | 222,449 | 222,449 |
4 | 409,497 | 409,497 | 422,449 | 422,449 |
5 | 809,497 | 809,497 | 822,449 | 822,449 |
Epoch | Legacy/Current Block Reward | Proposed MIA Reward | Proposed NYC Reward |
---|---|---|---|
0 | 250,000 | 250,000 | 250,000 |
1 | 100,000 | 100,000 | 100,000 |
2 | 50,000 | 50,000 | 50,000 |
3 | 25,000 | 2,292 | 2,044 |
4 | 12,500 | 2,440 | 2,182 |
5 | 6,250 | 2,730 | 2,441 |
6 | 3,125 | 3,402 | 3,041 |
The total supply will be reduced as follows:
Blocks Passed | Legacy Total Supply | Current Total Supply | Proposed Total Supply |
---|---|---|---|
10,000 | 2,500,000,000 | 2,500,000,000 | 2,500,000,000 |
30,000 | 4,500,000,000 | 4,500,000,000 | 4,500,000,000 |
50,000 | 6,500,000,000 | 5,750,000,000 | 5,248,428,498 |
100,000 | 11,500,000,000 | 7,875,000,000 | 5,350,629,940 |
200,000 | 21,500,000,000 | 10,187,500,000 | 5,557,104,039 |
400,000 | 32,000,000,000 | 12,593,750,000 | 5,997,406,396 |
800,000 | 40,375,000,000 | 15,046,875,000 | 6,982,737,860 |
Under the current protocol the treasuries for a CityCoin are stored in a 2-of-3 multi-signature Bitcoin wallet.
Bitcoin wallets possess the ability to make STX transfers and stack STX via Bitcoin transactions, but cannot interact with smart contracts.
This phase would replace the 2-of-3 multi-signature wallet with a smart contract vault secured by a DAO implementation that can grow with the protocol.
The basic structure of the DAO would start with:
- deploying the initial contract (similar to ExecutorDAO6/StackerDAOs7/EcosystemDAO8)
- setup with 3-of-5 signers from the auth contract
- enable direct proposals and temporary veto/execution
Using this DAO structure, the initial contract and following extensions are deployed on mainnet, where extensions are abbreviated with ccd
to represent the CityCoins DAO:
- executor-dao.clar
- ccd001-direct-execute.clar
- ccd002-treasury-mia.clar
- ccd002-treasury-nyc.clar
This configuration allows the original 3-of-5 signers to execute further proposals, and the DAO to be used to manage the treasuries.
(impl-trait .proposal-trait.proposal-trait)
(define-public (execute (sender principal))
(begin
;; Enable genesis extensions.
(try! (contract-call? .base-dao set-extensions
(list
{extension: .ccd001-direct-execute, enabled: true}
{extension: .ccd002-treasury-mia, enabled: true}
{extension: .ccd002-treasury-nyc, enabled: true}
)
))
;; set 3-of-5 signers
(try! (contract-call? .ccd001-direct-execute set-approver 'ADDRESS true))
(try! (contract-call? .ccd001-direct-execute set-approver 'ADDRESS true))
(try! (contract-call? .ccd001-direct-execute set-approver 'ADDRESS true))
(try! (contract-call? .ccd001-direct-execute set-approver 'ADDRESS true))
(try! (contract-call? .ccd001-direct-execute set-approver 'ADDRESS true))
(try! (contract-call? .ccd001-direct-execute set-signals-required u3))
(print "CityCoins DAO has risen! Our mission is to empower people to take ownership in their city by transforming citizens into stakeholders with the ability to fund, build, and vote on meaningful upgrades to their communities.")
(ok true)
)
)
The structure of the DAO is very flexible and would provide an easy path to implementing features such as community proposals, community voting (via CCIP-0119 or a new method), as well as directly manage the protocol contracts through the DAO.
The first proposal submitted after bootstrapping the DAO would be a proposal to stack the CityCoins treasuries.
This CCIP modifies the coinbase amounts listed in CCIP-0089, but does not implement a new token contract or change the token contract outside of using the function get-coinbase-thresholds
defined in CCIP-0104.
This CCIP will be voted on using a vote contract that adheres to CCIP-01110 using the last two active cycles from when the voting contract is deployed.
Currently, this would be:
- MIA cycles 21 and 22
- NYC cycles 15 and 16
The scale factor for MIA was determined using the same formula used in CCIP-01110 and calculated based on the total supply at the start block of the first cycle and the end block of the last cycle.
- MIA scale factor: 0.8605 (prev: 0.6987)
The calculations used for the scale factor are available in the supplemental spreadsheet11.
Footnotes
-
https://github.com/citycoins/governance/blob/feat/stabilize-protocol/ccips/ccip-013/ccip-013-stabilize-protocol-and-simplify-contracts.md ↩ ↩2
-
See the citycoins-v2-mining-analysis reference, citycoins-v2-mining-analysis data and the supplemental spreadsheet of the compiled data. ↩
-
https://github.com/citycoins/governance/blob/main/ccips/ccip-010/ccip-010-citycoins-auth-v2.md ↩ ↩2
-
https://github.com/citycoins/governance/blob/main/ccips/ccip-008/ccip-008-citycoins-sip-010-token-v2.md ↩ ↩2
-
https://github.com/citycoins/governance/blob/main/ccips/ccip-011/ccip-011-citycoins-stacked-tokens-voting.md ↩ ↩2
-
See the ccip-012-vote-calculations-per-ccip-011 spreadsheet. ↩