-
Notifications
You must be signed in to change notification settings - Fork 3
Description
Describing the Issue
Liquid supply is getting complex, so much so we've thought about splitting it out into its own contract and have yet to add the operating fund to it.
This is the current calculation for action proposals
aibtcdev-contracts/contracts/dao/extensions/aibtc-action-proposals-v2.clar
Lines 355 to 369 in f41fa2d
| ;; calculate the liquid supply of the dao token | |
| (define-read-only (get-liquid-supply (blockHeight uint)) | |
| (let | |
| ( | |
| (blockHash (unwrap! (get-block-hash blockHeight) ERR_RETRIEVING_START_BLOCK_HASH)) | |
| (totalSupply (unwrap! (at-block blockHash (contract-call? .aibtc-token get-total-supply)) ERR_FETCHING_TOKEN_DATA)) | |
| (preDexBalance (unwrap! (at-block blockHash (contract-call? .aibtc-token get-balance VOTING_TOKEN_PRE_DEX)) ERR_FETCHING_TOKEN_DATA)) | |
| (dexBalance (unwrap! (at-block blockHash (contract-call? .aibtc-token get-balance VOTING_TOKEN_DEX)) ERR_FETCHING_TOKEN_DATA)) | |
| (poolBalance (unwrap! (at-block blockHash (contract-call? .aibtc-token get-balance VOTING_TOKEN_POOL)) ERR_FETCHING_TOKEN_DATA)) | |
| (treasuryBalance (unwrap! (at-block blockHash (contract-call? .aibtc-token get-balance VOTING_TREASURY)) ERR_FETCHING_TOKEN_DATA)) | |
| (totalLocked (+ preDexBalance dexBalance poolBalance treasuryBalance)) | |
| ) | |
| (ok (- totalSupply totalLocked)) | |
| ) | |
| ) |
And for core proposals (same calculation)
aibtcdev-contracts/contracts/dao/extensions/aibtc-core-proposals-v2.clar
Lines 343 to 357 in f41fa2d
| ;; calculate the liquid supply of the dao token | |
| (define-read-only (get-liquid-supply (blockHeight uint)) | |
| (let | |
| ( | |
| (blockHash (unwrap! (get-block-hash blockHeight) ERR_RETRIEVING_START_BLOCK_HASH)) | |
| (totalSupply (unwrap! (at-block blockHash (contract-call? .aibtc-token get-total-supply)) ERR_FETCHING_TOKEN_DATA)) | |
| (preDexBalance (unwrap! (at-block blockHash (contract-call? .aibtc-token get-balance VOTING_TOKEN_PRE_DEX)) ERR_FETCHING_TOKEN_DATA)) | |
| (dexBalance (unwrap! (at-block blockHash (contract-call? .aibtc-token get-balance VOTING_TOKEN_DEX)) ERR_FETCHING_TOKEN_DATA)) | |
| (poolBalance (unwrap! (at-block blockHash (contract-call? .aibtc-token get-balance VOTING_TOKEN_POOL)) ERR_FETCHING_TOKEN_DATA)) | |
| (treasuryBalance (unwrap! (at-block blockHash (contract-call? .aibtc-token get-balance VOTING_TREASURY)) ERR_FETCHING_TOKEN_DATA)) | |
| (totalLocked (+ preDexBalance dexBalance poolBalance treasuryBalance)) | |
| ) | |
| (ok (- totalSupply totalLocked)) | |
| ) | |
| ) |
Both perform the same check for quorum which is set as a constant in each contract (15% action / 25% core)
aibtcdev-contracts/contracts/dao/extensions/aibtc-action-proposals-v2.clar
Lines 238 to 241 in f41fa2d
| ;; quorum: check if enough total votes vs liquid supply | |
| (metQuorum (and hasVotes | |
| (>= (/ (* (+ votesFor votesAgainst) u100) liquidTokens) VOTING_QUORUM) | |
| )) |
Open Questions
What if a DAO uses a different DEX than Bitflow long-term? Would providing liquidity or diversifying hurt the ability to vote?
Could we measure the liquid supply by just subtracting the treasury and operating fund balance as locked amounts?
Metadata
Metadata
Assignees
Labels
Type
Projects
Status