Skip to content

Releases: SecureSECO/diamond-governance

v1.0.3

30 Oct 13:55
46d18ff
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.0.2...v1.0.3

v1.0.2

11 Jul 12:03
39ac0e3
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.0.1...v1.0.2

v1.0.1

11 Jul 11:43
2df3664
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.0.0...v1.0.1

v1.0.0

29 Jun 20:40
b9bbf60
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.2.1...v1.0.0

v0.3.0

19 Jun 11:53
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.2.1...v0.3.0

v0.2.0

12 Jun 07:15
9fdee71
Compare
Choose a tag to compare

What's Changed

v0.1.0

07 May 15:36
03b2312
Compare
Choose a tag to compare

The first official release of Diamond Governance! As there is no previous release yet this will be just a list of current functionality.

SDK

A typescript sdk is available for this plugin, allowing developers to easily communicate with the plugin in their projects. It can be found on npm. Currently this SDK exposes all the interface functions with interface checking as a pure ethers layer (this is also auto generated). There is a sugar layer for the most important methods, such as those related to governance. In the future you can expect this sugar layer to be increased and possibly the pure layer will be tweaked to allow people to use their custom facet with the SDK. Furthermore this sdk will receive frequent updates, as every new interface will require a new version. This will be automated upon creating a merge with the master branch in the future.

Facets

Governance

Partial Voting

This facet extends upon Aragon's token voting. Instead of wallets only being able to vote once with all their voting power, proposals can be configured to allow people to vote multiple times with a part of their voting power. This plugin also supports multiple proposal types and a cap on voting power for any single wallet. Partial voting is based on the idea that people do not have super strong opinions on all proposals and thus do not want to influence the vote massively.

Partial Burn Voting

This facet is partial voting, with the addition of all used voting power being burned. If the proposal voted on does not reach the participation threshold, the plugin can be configured to make the burned tokens refundable. Partial burn voting is a way to make sure people will only vote on proposals that they care about, with an amount of voting power based on how much they care.

Partial Burn Voting Proposals

This facet adds to the proposal creation of partial voting. Proposal creation will burn an amount of voting power of the proposer. The plugin can be configured to make the burned tokens refundable if the created proposal passes. Partial burn voting proposals is created to incentivize people to put effort and thought into their proposals and thus filter out ridiculous and low quality proposals.

Structures

Multiple governance structures have been defined for plugins to interact with each other. These structures allow future facets to be compatible with all existing plugins using the implemented structure interface.

Membership

These structures are related to what wallets are considered members of the DAO and other member-related information, such as ranks.

Base

All these plugins are based on the IMembership of Aragon.

Extended

This interface requires the implementer to be able to tell if a wallet is a member at a certain timestamp and be able to provide a list of wallets that have been members at some point. This information can be used to loop over all members at a given timestamp on chain.

Tiered

This interface also gives each member a tier instead of a yes/no value. These tiers can be used however wanted, for example, to give members who achieve a certain feat more permissions.

Whitelist

This interface can add a wallet to the whitelist. This is a special way for a wallet to become a member, although it does not meet the normal member requirements.

Voting Power

These structures are related to how much voting power a given wallet has and losing or gaining voting power.

Base

The base governance structure should be able to provide information about the total voting power at a given block number and the total voting power of a certain wallet at a given block number.

Mintable

This interface can mint voting power to a given wallet. This is done with a token id and/or amount, depending on what the voting token interface is (ERC20, ERC721, or ERC1155).

Burnable

This interface can burn voting power from a given wallet. This is just an amount, and the implementer should decide how this maps to token ids and amounts.

Token

ERC20

Governance ERC20

This token is identical to the Governance ERC20 contract made by Aragon, only converted to a facet.

Governance ERC20 Burnable

This facet is an extension of Governance ERC20, allowing the token to be burned.

Governance ERC20 Disabled

This facet is an alteration of Governance ERC20, allowing functionality to be disabled. This will most often be used to create non-transferable and/or non-delegatable tokens.

ERC721 and ERC1155

These token types are planned for the future. In all the code written so far, they have been kept in mind, so after implementation, they will be compatible with the existing facets.

Claiming

Time based

Allows time based rewards to be available to be claimed by members of the DAO. There is also a tiered version that allows members of different tiers to get different rewards. There is also a configurable maximum amount of claimable tokens at once, preventing inactive members from being able to claim a large sum of tokens after a long period of inactivity.

One time

Allows for a one-time reward to be claimed. The most basic claimable facet of this type will be claimable once per wallet, given that the wallet is a member of the DAO. There is a second, more advanced version that allows users to claim a reward for every verification that they pass.

Permissions

The permission management defines which wallets are allowed to do certain actions. 

AragonOSx

Currently, this is the only permission provider using the grant functionality of the DAO. However, the implementation allows for more providers to be added easily in the future and also allows members to use their own custom permission provider if wanted.

Other

Verification

First plugin to implement Secure SECO Verification. Allowing wallets to become members of the DAO by verifying with their 1-year-old GitHub account or proof of humanity.

GitHub Pull Request Merger

Allows the plugin to merge pull requests on GitHub. This means that DAO members will be able to maintain the GitHub without needing to trust a centralized team of reviewers. This does however require some setup, which can be found on their GitHub.

Planned

This functionality is planned to be added to the project in the future. These are based on requests seen in the Aragon Discord.

Role-based membership

Wallets are granted certain roles, and based on this, they are allowed to use certain functionality of the plugin.

NFT governance

Voting power based on certain ERC721 or ERC1155 tokens present in the wallet.

Dashboard

Web portal to allow users to easily create a DAO with the Diamond Governance plugin and create proposals to alter the Diamond Governance plugin in existing DAOs.

Testing

The testing framework will be improved significantly to be able to create a facet selection specifically for this test case very easily, allowing for more targeted and extensive testing. This easy customization of faucets will be used in the dashboard too.

Documentation

Currently we only have the readme and facet development guide. There will be more guides related to development in the future and the code will also be more thoroughly commented.

Auto verification on polygonscan

For now verification can be done using the cli, however ideally a deploy should also verify all the deployed contracts right away. The main hassle from cli verification comes from the constructor arguments, which is why code verification seems the way to go here.

Deployment

This is the official polygon deployment log of this release.

Deploying to  mumbai
Standalone verification contract deployed at 0xFd0Dd8AbcdE7eFB68E14816D57b2459A0d0D3ED8
DiamondGovernanceSetup deployed at 0x7b7cc80D41f506B0754910e9952F2607C9D7E8ff
DiamondInit deployed at 0x5d6274A233cF45b03C43a5818deEFdaf65ab1e88
DiamondLoupeFacet deployed at 0xc581884A41db081104f471fde2225A8C1939412b
DAOReferenceFacet deployed at 0x85Aa8fcD5F468B7fD782eBa70Ae1b21433bE98Df
PluginFacet deployed at 0x498FE12a0a91B8FEB5E848D7F99A6A1Ff92A1d78
AragonAuth deployed at 0x2024a4b3062222dfBC9540943aa939E3E3F31D5b
PartialBurnVotingProposalFacet deployed at 0xF13229DED3d5C234178E8025B3a79E5BbC682376
PartialBurnVotingFacet deployed at 0x66CD5e31142b4199dBDB7b91828b7aF83a5f34f0
GovernanceERC20DisabledFacet deployed at 0xD4Cc27A7a993cc106D3AFb9978C830Eee37004c2
GovernanceERC20BurnableFacet deployed at 0xbD3B0577c7321D260c5C44F4745a32ef73fe0CDf
ERC20PartialBurnVotingRefundFacet deployed at 0xFFF2EcF4cbE57846973c81b502485e8454FF1f5E
ERC20PartialBurnVotingProposalRefundFacet deployed at 0x74B0806a9C39709544D2643B4d21e8E7D64203FE
ERC20TieredTimeClaimableFacet deployed at 0x0Ad8bC41213E6B0A968B6842277D2aBdb10c4378
VerificationFacet deployed at 0x91c99423611fD701ff6cDECEab6179bEB26deAc1
ERC20OneTimeVerificationRewardFacet deployed at 0x61721a25098d4F632A5551886DBD1A668270D84C
SearchSECOMonetizationFacet deployed at 0x2Aa8a08A2e08a1DE9321308654e62Ce8E90b9B95
GithubPullRequestFacet deployed at 0x4277d1852634F1B2B3d1efB5094BcD6b150A1F3D
SearchSECORewardingFacet deployed at 0x03F28375686FF0C3FE9A0008C6880a0a859074B7
Uploaded DAO metadata to ipfs://QmQ6wLnNiwtJZ51TqwvMozhgP2PdrFkATwUV5uEsihEMvW
DAO at:  0x29c88B008B2C1E24320B514a1b41F6A5586f21AB
Diamond Governance at:  0x0287fDB9aD1577E6ec2aD2dc261B195C29423B01
Deploy finished!