Releases: SecureSECO/diamond-governance
v1.0.3
v1.0.2
v1.0.1
v1.0.0
What's Changed
- feat: sdk publish action by @Plopmenz in #73
- feat: separate calculate mining rewards function by @djeelun in #74
- Feat/verification reward pool by @djeelun in #75
- Docs/file headers by @Plopmenz in #76
- chore: remove autogenerated files from tracker by @Plopmenz in #77
- fix: removed duplicate to 18 decimals by @djeelun in #78
- fix: reward multiplier settings more user friendly by @djeelun in #80
- fix: add math min to secoin in verif rewards by @djeelun in #81
- feat: ABC benchmark test by @Plopmenz in #82
- Fix/reward multiplier to days by @djeelun in #83
- chore: expose queryTreasuryRatio + rename by @djeelun in #84
- feat: after dao launch script by @Plopmenz in #79
- chore: sdk publish release to push by @Plopmenz in #85
- feat: sdk erc20 approve action support by @Plopmenz in #87
- fix: bug where more than the pool could be requested by @djeelun in #88
- chore: rename hashReward -> hashRepReward by @djeelun in #89
- feat: get/set for inflation timestamp by @djeelun in #90
- Feat/get set verification by @djeelun in #91
- fix: add transfer ownership to verification by @djeelun in #93
- feat: add more get/set to rewardmultiplier by @djeelun in #94
- Feat/totalvotingpower membership check by @djeelun in #95
- Feat/sdk verification blocknumber changes by @djeelun in #96
- fix: split owner and signer by @djeelun in #97
- Hype/polygon deploy by @Plopmenz in #98
Full Changelog: v0.2.1...v1.0.0
v0.3.0
What's Changed
- feat: sdk publish action by @Plopmenz in #73
- feat: separate calculate mining rewards function by @djeelun in #74
- Feat/verification reward pool by @djeelun in #75
- Docs/file headers by @Plopmenz in #76
- chore: remove autogenerated files from tracker by @Plopmenz in #77
- fix: removed duplicate to 18 decimals by @djeelun in #78
- fix: reward multiplier settings more user friendly by @djeelun in #80
- fix: add math min to secoin in verif rewards by @djeelun in #81
- feat: ABC benchmark test by @Plopmenz in #82
- Fix/reward multiplier to days by @djeelun in #83
- chore: expose queryTreasuryRatio + rename by @djeelun in #84
- feat: after dao launch script by @Plopmenz in #79
- chore: sdk publish release to push by @Plopmenz in #85
Full Changelog: v0.2.1...v0.3.0
v0.2.0
What's Changed
- docs: Requested changes by @Plopmenz in #35
- feat: change hardhat dependency to ethers by @Plopmenz in #36
- Fix/sdk/verification contract abi by @djeelun in #38
- feat + test: add get/set hash reward & tests by @mik-0 in #39
- fix: base partial voting production ready by @Plopmenz in #37
- Sdk fixes: add reverifyThreshold + removed action types by @djeelun in #41
- feat: deployment rework by @Plopmenz in #42
- Erc20 searchseco token by @djeelun in #40
- chore: Update SignVerification to latest version by @Plopmenz in #44
- feat: proposal actions rework by @Plopmenz in #43
- Feat/variable detection by @Plopmenz in #47
- fix: sdk proposal duplicates and ipfs by @Plopmenz in #48
- test: sorting proposals by @Plopmenz in #50
- feat: sdk update signer or address by @Plopmenz in #53
- chore: add proposal cost to deploy by @Plopmenz in #52
- fix: dao auth by @Plopmenz in #51
- fix: partial vote past max by @Plopmenz in #49
- Feat/reward multiplier by @djeelun in #45
- feat: vote abstain not used power by @Plopmenz in #54
- Feat/mining reward multiplier by @djeelun in #55
- docs: add getter/setter docs to facet-dev by @djeelun in #56
- Feat/replace 64.64 with quad by @djeelun in #57
- Docs/more facet dev updates by @djeelun in #58
- Add sha to pr merge params by @mik-0 in #59
- Feat/apply reward multiplier by @djeelun in #60
- fix: add deploy of mining reward pool facet to deploy.ts by @djeelun in #63
- Feat/hash devaluation to division by @djeelun in #62
- Feat/augmented bonding curve by @Plopmenz in #61
- feat: diamond cut proposal generator by @Plopmenz in #65
- Minor rewarding rework by @mik-0 in #68
v0.1.0
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!