Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

ContinuumDAO Forum

hal0177H

hal0177

@hal0177
Guild - Developers
Unfollow Follow
About
Posts
12
Topics
4
Shares
0
Groups
3
Followers
1
Following
1

Posts

Recent Best Controversial

  • DAO 2.0: Multiple-Option Proposals and Seamless Aggregate Network Governance
    hal0177H hal0177
    Announcements

    senate_rome.jpg

    If you have ever taken part in on-chain governance, particularly with Compound's Bravo, you'll know that running your company or community in a decentralized, transparent way has never been easier. A DAO member with sufficient vested interest in the organisation's success can propose a motion, fellow members can deliberate (or delegate this responsibility to those better equipped), members can cast their vote weight behind their preferred outcome, and ultimately a conclusion can be reached as to whether the DAO should proceed with the motion or throw it out.

    Execution with Nuance

    But what if a decision needs to be made that is not a binary-outcome dichotomy? What if the success of a proposal rests on a quantitative decision, and not a qualitative one? Sometimes a simple Yes/No choice does not best steer the DAO in the direction cumulatively sought after by the DAO members. Enter multiple-option (Delta) voting. Built on top of OpenZeppelin's Governor standard as a standalone counting module, Delta proposals can provide a choice of up to 255 outcomes (256 if you count none of the above), predicated upon a few proposer-specified values:

    1. Number of options: the total number of options in the proposal.
    2. Number of winners: the number of options that will be executed, by vote tally. This means in a 3 option/2 winner configuration, the highest two voted for options will be executed and the third discarded.
    3. Options: each option has its own list of Actions, which can be on-chain calls or no-ops in the case of symbolic proposals.
      DAO members may vote in a variety of ways according to their preference:
    • Single-choice: allocate all voting power to one option.
      Approval: split their voting power evenly between multiple options.
    • Weighted: split their voting power unevenly between multiple options.
    • NOTA: if no option seems appealing, none of the above (NOTA).
      The reason this module was so crucial for us is because ContinuumDAO is entirely governed on-chain. All revenue goes through the DAO and all decisions reflect the wishes of the members. These kinds of shots cannot be called with a simple For or Against. See the GovernorCountingMultiple module on our GitHub if you wish to learn the underlying mechanics or use it in your DAO.

    Under the Hood

    Delta proposals are possible as a counting module for Governor by leveraging the propose(address[] memory targets, uint256[] memory values, bytes[] calldata calldatas, string memory description, address proposer) function signature. While it appears as though there is only room for a single dimension of executable calls in a proposal, Delta proposals find a way to divide these Actions into separate Options.

    How do we know a proposal is Delta and not Bravo?

    In Delta proposals, the first index in the calldatas array is reserved for metadata. If the targets[0] value is address(0) AND the calldatas[0] is NOT empty, then the contract knows to treat this as a Delta proposal; otherwise it gets channeled through the Bravo route. If calldatas[0] is metadata for a Delta proposal, then it might look like this (ignoring the length prefix):

    0000000000000000000000000000000000000000000000000000000000000002
    0000000000000000000000000000000000000000000000000000000000000001
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000002
    

    The metadata is structured as follows:

    1. First 32 byte slot: number of possible outcomes in the proposal (nOptions)
    2. Second 32 byte slot: number of winning outcomes in the proposal (nWinner)
    3. Remaining slots: the index in the overarching targets/values/calldatas array that marks the start of that Option's on-chain Actions.

    That third point is crucial - it effectively turns a one-dimensional array into a two-dimensional array, which is useful for us as each possible outcome could have its list of on-chain calls. In our example, the number of options is 2, the number of winners is 1, option 1's Actions list starts at index 0 in the targets/values/calldatas array, and option 2's Actions list starts at index 2. Therefore, we can see that:

    • The proposal outlines two possible outcomes
    • Only one of them will win, based on which one gets more votes
    • Option 1, if successful, would execute two on-chain Actions
    • Option 2, if successful, would execute all remaining actions in the array, starting at index 2.

    You don't need to understand all this to use the GovernorCountingMultiple module - the frontend knows how to translate your proposal's list of Options & Actions into this format.

    Franchising DAO Influence

    One of the benefits of developing our cross-chain messaging protocol (Continuum Cross-Chain Caller, or C3Caller) in-house is the option to integrate it in some way into our DAO. In fact, this ability allowed us to reap the rewards of different chains without being subject to the accompanying downsides. We wanted our token, CTM, to be minted on Ethereum, to leverage the trust and ecosystem that comes with it. We also wanted to operate our protocol software (including the DAO!) on a cheaper chain, otherwise gas cost would have made our daily operations unbearable and unappealing (who would want to hit the execute button on a proposal that will make 30 different on-chain calls?). Therefore we didn't compromise. With an instance of C3Governor deployed on Ethereum and Linea (and wherever else governance is required), DAO decisions proposed, voted on and executed on Linea can atomically call our messaging function c3call, allowing the receiving C3Governor on the destination chain to execute some call and enact the result of the proposal. The best part, a single successful proposal could "mint 500 CTM on Ethereum", "transfer it over to Linea", "upgrade the protocol contracts on Linea" - same proposal, different networks.

    Under the Hood

    C3Governor is built on C3Caller, our cross-chain messaging protocol. In the context of C3Governor and cross-chain governance, we can see C3Caller as simply a grand central station that routes traffic between chains.

    A C3Governor instance is deployed on each chain of interest. On the chain where the DAO contract is deployed, a successful proposal can call C3Governor.sendParams(uint256 nonce, string[] memory targetStrs, string[] memory toChainIdStrings, bytes[] memory calldatas). The nonce is simply the proposal ID. targetStrs defines the target contract address/EOA to call on the destination chain(s). toChainIdStrings defines the chain ID corresponding to that index. calldatas contains calldata to execute on the corresponding target.

    Note how targetStrs is string and not address, and how toChainIdStrings is string and not uint256. This is because we may want to invoke a non-EVM contract address, on a chain ID isn't represented by a number. A single sendParams call can target multiple destination chain. When called, it broadcasts each call to the C3Caller network.

    On the destination chain, receiveParams(uint256 nonce, uint256 index, string memory targetStr, string memory toChainIdStr, bytes memory calldata) is called (by the C3Caller network). Notice how this operates on a per-call basis, unlike the transmission itself, which fans out to multiple chains at once. receiveParams executes the data on the target chain and marks the proposal (and the call's index in that proposal) as executed to prevent replay attacks.

    This allows for two useful features:

    1. Contracts on a chain separate to the DAO can set their priviliged address (gov/admin/operator) to the local C3Governor, and trust that only the DAO can invoke it.
    2. Treasuries on other chains can be established, where they can only be moved by the DAO on the home chain.

    Try it out

    If you want to include Delta voting in your DAO then check out our GitHub, and stay tuned for our next post on how ContinuumDAO is governed by our Multi-Party Agent wallet.


  • Recognise the veCTM Marketplace as the official DAO marketplace and integrate it into the frontend UI
    hal0177H hal0177
    Proposals - Decision

    @Hal-Selqui_Agent Source code for the marketplace is available here: https://github.com/ContinuumDAO/vectm-marketplace/blob/master/src/VotingEscrowMarketplace.sol


  • Compensate the Whitehat Who Found Critical Protocol Bugs
    hal0177H hal0177
    Proposals - Treasury

    Reward Whitehat Security Researcher

    Abstract

    On the 15th July 2026, a whitehat security researcher reached out to ContinuumDAO developers to flag some discovered critical bugs. These bugs were subsequently addressed and fixed. The whitehat did not withhold these bugs from the developers or seek payment in exchange for their disclosure. These bugs could well have not been discovered without the generous contribution of this individual. Therefore this proposal seeks to reward the whitehat 25,000 veCTM, locked for 4 years.

    Proposal Actions

    The individual who raised the developers' attention to this critical information shall receive 25,000 veCTM, the NFT paid directly to their account on Linea: 0xCccbB73ea22c9749D22089Ee617bd715b143b63D


  • Proposal to Set DAO Super Quorum to 50% of Total Voting Power at Snapshot
    hal0177H hal0177
    Proposals - Constitution

    https://app.continuumdao.org/governance/proposal/0


  • Proposal to Set DAO Super Quorum to 50% of Total Voting Power at Snapshot
    hal0177H hal0177
    Proposals - Constitution

    The super quorum is the percentage threshold of total voting power at snapshot that if cast as 'For', allows the remainder of the voting period to be skipped, effectively advancing the proposal to a Succeeded, Executable state. This proposal seeks to set the super quorum to 50% of total voting power at snapshot (ie. a majority of all voting power at snapshot is in favour).


  • A Proposal to Create a Voting Escrow NFT and Governance for ContinuumDAO
    hal0177H hal0177
    Ideas & Suggestions

    @Everyone, thanks very much for the feedback and suggestions. I have already created a repository on GitHub with the bare bones of the system, pending successful vote. Please reach out to me on this thread or on TG, any further concerns or suggestions are welcome.


  • A Proposal to Create a Voting Escrow NFT and Governance for ContinuumDAO
    hal0177H hal0177
    Ideas & Suggestions

    Hi @Raini-Ng, I appreciate the comment. I agree about the veMulti display issue, it should be more readable.

    As for OpenSea, I believe they get the image from the NFT smart contract once and cache it for further use, meaning the data displayed on most of the NFTs on OpenSea is not up to date. Not to worry, we'll always keep this data up to date on our site.


  • A Proposal to Create a Voting Escrow NFT and Governance for ContinuumDAO
    hal0177H hal0177
    Ideas & Suggestions

    Hi @Selqui, good idea. The functionality for this feature is built in to ERC721 already, so yes, it's possible.


  • A Proposal to Create a Voting Escrow NFT and Governance for ContinuumDAO
    hal0177H hal0177
    Ideas & Suggestions

    Hi @Jerry, thanks for the reply. From my understanding of the White Paper, the liquidation penalty is 50% for a full lock, decreasing linearly to 0% at unlock time. I will update the doc to reflect this detail.


  • A Proposal to Create a Voting Escrow NFT and Governance for ContinuumDAO
    hal0177H hal0177
    Ideas & Suggestions

    Hi @Apxymous, thanks for your comments, appreciate the feedback. I don't know how much CTM will be worth at launch, but I'd like to get some since I didn't get much in the airdrop and I want to be a part of the project in the future. It might be hard to buy some since I think a lot of people will hold on to it after launch. I think that since I'm proposing to write a core part of the code, it is important that I have an interest in ContinuumDAO doing well after I have finished this project, and owning the token and taking part in governance will ensure that. The USDC I requested is enough to pay the bills, even though I agree that there is a lot of work to do here.


  • A Proposal to Create a Voting Escrow NFT and Governance for ContinuumDAO
    hal0177H hal0177
    Ideas & Suggestions

    Hi @John-CTM. Thanks for the comment, appreciate it. If my proposal passes, I'm looking forward to working with you all.


  • A Proposal to Create a Voting Escrow NFT and Governance for ContinuumDAO
    hal0177H hal0177
    Ideas & Suggestions

    By Hal (Telegram, Github @hal0177)
    31st October 2023

    Abstract

    This document proposes the creation of a vote escrow system for use by ContinuumDAO in line with the objectives of the White Paper. The system will be uniquely tailored for a DAO-led MPC network.

    Motivation

    The goal is to create an on-chain token based governance reward system comprised of two parts:

    • An NFT which contains locked CTM, called veCTM. This NFT represents a stake in the ContinuumDAO and can be used for voting, revenue collection, MPC node attachment, and tracking proof of contribution to the ContinuumDAO.

    • A governance suite of smart contracts which operates a comprehensive on-chain governance process, which automatically executes the results of the vote.

    The system will implement OpenZeppelin’s Governor smart contract system, with some significant modifications to accommodate for ContinuumDAO’s unique requirements.

    It will be deployed to a chain which has yet to be chosen. The veCTM will be using a proxy pattern contract, so that it can be upgraded following an on-chain governance vote.

    Overview

    Developer

    My name is Hal, I am a smart contract and web app developer with 3 years experience, having been trained in the Moralis academy. I've worked on Fusion protocol, and Multichain, among other projects. I am based in Europe.

    veCTM-1200.png

    Token Vesting

    Holders of CTM, which is a simple fixed supply ERC20, will be able to lock them into a vote escrow NFT, to be named veCTM, for up to four years. The voting power will decrease linearly, where max power is at four years, decreasing to the minimum of zero power on the maturation date, unless locked CTM amount is increased and/or lock time is extended.

    In addition, users will be able to merge veCTMs with the resulting lock time having a weighted average lock time of its composite tokens.

    Users will also be able to split their veCTM into two or more veCTMs as they wish.

    Finally, users will be able to liquidate their veCTM into CTM with a penalty of 50% of the vested power, also being paid to the DAO Treasury.

    Governance

    The veCTM will either have voting rights or be designated non-voting. For a non-voting veCTM, you cannot merge with another veCTM token, but you can still split them, resulting in two or more non-voting tokens, any of which may be liquidated. A veCTM with voting rights will allow voting either through Snapshot or Tally.

    The voting power of an address that owns multiple veCTMs will calculated by adding the constituent veCTM voting powers, so that the address will only have to vote or delegate once.

    The veCTM will have a public interface to output the underlying voting power. The token will inherit the OpenZeppelin governance smart contract system, Governor, and contains all of its features, such as the ability to delegate voting power to another address.

    There will be some modifications made to the code, for example the delegate vote feature will be disabled for non-voting veCTM. Governor will allow a vote to automatically execute some smart contract code, such as transferring funds from the Treasury, executing a contract upgrade, or configuring an on-chain parameter in a smart contract.

    Included in the deliverables will be a demonstration of basic Governor voting mechanisms such as:

    • Simple transfer of funds from the Treasury to another wallet.
    • Adding and removing a list of veCTM IDs, attaching and detaching them to nodes.
    • Redeploying the veCTM smart contract via its proxy pattern.

    The Continuum MPC Node Delegation

    The veCTM may be attached to a node running on the Continuum to receive extra rewards. The attach/detach mechanisms will be performed by DAO governance. The information provided for attaching a node will be the enode and the wallet address of the veCTM. The rewards paid to attached veCTMs will be adjustable by the DAO. Once attached, a veCTM will not be able to be merged, split, or liquidated. The DAO will also have the power to disable extra rewards for a non-performant attached veCTM, and revoke a veCTM's ability to transfer, liquidate, and split into other veCTMs - if it is attached to a bad actor node on the network.

    The contract will be able to access a Fractal ID DiD attached to a wallet address to allow KYC for wallets attaching nodes.

    Tally Integration

    Integration of a front end to interact with the Governor interface will be created. Tally provides a Governor interaction suite, which will require configuration to suit our unique governance structure. A time lock provision will be included to allow the Committee to prevent the automatic execution of a voting result within a defined window following a successful vote.

    Audit

    In the case of suggestions for modification of the smart contract code from the auditors, the appropriate modifications will be made to satisfy them. Neither the cost or selection of the auditors will be subject to this proposal.

    Token Distribution

    Immediately following the audit on the smart contract code, the CTM token contract will be deployed, all tokens minted, and the veCTM will be minted and distributed as appropriate to CTMDAOVOTE token holders.

    Type of Proposal

    Request for funding.

    Scope

    Milestones

    1. veCTM proxy pattern contract that allows vesting, merging, splitting, and liquidation of token IDs. (Fully tested)
    2. Inclusion of MPC node attachment. (Fully tested)
    3. Modified OpenZeppelin Governor proxy pattern contract. (Fully tested)
    4. Functional front end to all veCTM user features. (Completed)
    5. Token distribution. (Completed)

    All tasks will be completed in collaboration with the core contributors, seeking their input into the design of the code and their sign off on each Milestone.

    Timeline

    Milestones 1 to 4 are anticipated to take 2 months to complete. Work can be started immediately, upon acceptance of this proposal.

    Budget

    The cost for all the above tasks is 8,000 USDC and 30,000 veCTM, locked for 4 years. The first half of the USDC is payable upon completion of Milestones 1 and 2, and the balance payable upon completion of Milestones 3 and 4. The veCTM will be payable following Milestone 5 which will be completed following the audit.

    The cost of the audit is not included here.

  • Login

  • Login or register to search.
Powered by NodeBB Contributors
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups