Conviction Voting Upgrade!

Hey honey holders :honey_pot:, we got some news!

We have submitted a vote to install a new conviction-voting app.

This new app includes new functionality such as:

  • Abstain proposal. This is signaling proposal to signal that you don’t support any proposals right now.

  • Enable cancelling of proposals (This can be done by the creator of the propsoal or whoever has the CANCEL_PROPOSAL role).

  • Updated threshold formula such that:

    • Uses totalStaked as opposed to totalSupply if it’s above a minimum percentage of totalSupply.
    • Uses The aforementioned percentage of totalSupply if totalStaked is below.
  • Enabled updating conviction settings which includes

    • decay
    • maxRatio
    • weight
    • minThresholdStakePercentage

:information_source: Something to consider is that this will be a fresh install as opossed to an app upgrade, so the current installed conviction voting will be removed from the DAO.

Below is a screenshot of what the vote will execute if approved.

What does this all mean? We’ll go step by step explaining what every of this actions do.

  • Install the new conviction voting app
Kernel: Create a new upgradeable instance of 0xabb88ccde8e73f80a3f4a14ef4f6bbfcc19f172a073a5d4cace3af06a8f2a182 app linked to the Kernel, setting its code to 
0x6A99…5abd
  • Create the permission to update conviction settings and grant it to 0x60a9…A0Bf (this is me) where the manager is the voting app.
ACL: Create a new permission granting 
0x60a9…A0Bf
 the ability to perform actions of role 0x9d4f140430c9045e12b5a104aa9e641c09b980a26ab8e12a32a2f3d155229ae3 on 
0xbe75…71bA
 (setting “Voting” as the permission manager)
  • Create the permission to create proposals and grant it to anyone where the manager is the voting app.
ACL: Create a new permission granting “Any account” the ability to perform actions of role “Create a proposal” on 
0xbe75…71bA
 (setting “Voting” as the permission manager)
  • Create the permission to cancel proposals and grant it to 0x60a9…A0Bf (this is me) where the manager is the voting app.
ACL: Create a new permission granting 
0x60a9…A0Bf
 the ability to perform actions of role 0x3e317d8f3de745777f176274dda437b0b9bbbe0704f48e9be1821136c177b933 on 
0xbe75…71bA
 (setting “Voting” as the permission manager)
  • Grant the permission to transfer funds from the vault to the new conviction voting app.
ACL: Grants 
0xbe75…71bA
 the ability to perform actions of role 0x8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c on “Vault”
  • Grant 0x5141…81d8 (WillGriff) the permission to cancel proposals.
ACL: Grants 
0x5141…81d8
 the ability to perform actions of role 0x3e317d8f3de745777f176274dda437b0b9bbbe0704f48e9be1821136c177b933 on 
0xbe75…71bA
  • Grant 0x5141…81d8 (WillGriff) the permission update conviction settings.
ACL: Grants 
0x5141…81d8
 the ability to perform actions of role 0x9d4f140430c9045e12b5a104aa9e641c09b980a26ab8e12a32a2f3d155229ae3 on 
0xbe75…71bA

We granted the permission to cancel proposals and update conviction settings to two of the trusted core member teams which will take the responsibility to take action when required. The reason for this was mainly because otherwise the actions would always go through a vote which would take 2 weeks to materialize if approved.

If you have any more questions feel free to ask!

5 Likes

That’s a great work, thanks for taking the time to write the script @fabriv.

While installing CV to CommonsStack DAO I’ve found a couple of issues:

  • The signature is malformed and may cause an error when trying to execute the current vote (we probably will need to create a new vote with the fixed script).
  • I’m not sure about this one but I think the appId for convicton-voting.open.aragonpm.eth should be 0x589851b3734f6578a92f33bfc26877a1166b95238be1f484deeaac6383d14c38, and not 0xabb88...afB2. This is what I obtain when running this snippet on remix:
pragma solidity ^0.4.24;


contract Namehash {

    /// Events
    event Log(bytes32 appId);
    
    bytes32 internal constant APM_NODE = 0x9065c3e7f7b7ef1ef4e53d2d0b8e0cef02874ab020c1ece79d5f0d3d0111c0ba;

    function apmNamehash(string name) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked(APM_NODE, keccak256(bytes(name))));
    }

    function getNamehash() public {
        bytes32 _appId = keccak256(abi.encodePacked(apmNamehash("open"), keccak256("conviction-voting")));
        emit Log(_appId);
    }
}

The strange thing is that I only get the IPFS UI when using the 0xabb88...afB2 appId, so I guess this is the correct one. Do you know is this appId obtained?

  • The signature is malformed and may cause an error when trying to execute the current vote (we probably will need to create a new vote with the fixed script).

Oh shoot, you are right :slightly_frowning_face:
We will need to create the vote again yes, apologies for this.

  • I’m not sure about this one but I think the appId for convicton-voting.open.aragonpm.eth should be 0x589851b3734f6578a92f33bfc26877a1166b95238be1f484deeaac6383d14c38 , and not 0xabb88...afB2 . This is what I obtain when running this snippet on remix:

Yes, we are using conviction-beta.aragonpm.eth for this one.

I have created the new vote with the fix. Thanks @sem for pointing it out.

This script also includes one more action which will revoke the permission to the old conviction voting app for transfering funds from the vault.

1 Like