**A library for smart contract development of Complex NFT Based DAOs.
- Implementations of new standards like ERC721SenatorVotes, Senate and Chancelor.
- Built upon Openzeppelin's well known and tested Governance Libraries. Cannot say enough about how Openzeppelins libraries helped in my learning growth and how thankfull i am for them.
- Stantard ERC721SenatorVotes fully compatible with ERC721 standard from Openzeppelin.
- Built under MIT License. Use it, build upon it and help make it better!!!.
🧙 Not sure how to get started? Check out our usage Examples.
I am Vin Rodrigues, Co-founder of QueenEDAO, along with other 3 people (see more at QueenE Repo), and the creator and, currently, only maintainer of RoyalDao Libraries.
QueenEDAO was an innovative project inspired by NounsDAO and using Openzeppelin Governance Contracts.
The innovation in the project falls into the fact that the collection is tied to real world events and can end at an unknown moment. In this specific case, the death of Queen Elizabeth, who inspired the fictional Character QueenE.
So, we knew from the beginning that we would need to find a solution to keep the DAO running and Growing after the event, that came sooner than any of us imagined.
With this background, I envisioned the Senate pattern. Based in the Governor pattern, from Openzeppelin, the Senate allows multiple tokens (at this point, only ERC721) to participate into one single DAO. So, no matter the project you have tokens from, if it is a member of the Senate, you can propose and vote in the same DAO.
The basic pattern is usable in beta and documentation is being done. You can see usage examples here.
$ npm install @royaldao/contracts
Or using Yarn
$ yarn add @royaldao/contracts
Once installed, you can use the contracts in the library by importing them:
pragma solidity ^0.8.0;
import "@royaldao/contracts/Governance/Chancelor.sol";
contract RepublicChancelor is
Chancelor,
ChancelorCompatibilityBravo,
ChancelorSenateControl,
ChancelorTimelockControl
{
constructor(TimelockController _timelock, Senate _senate)
Chancelor("RepublicChancelor")
ChancelorSenateControl(_senate)
ChancelorTimelockControl(_timelock)
{}
}
If you're new to smart contract development, i strongly recomend all the content made by Sir Patrick Collins, but specially his 36h Course...i swear it's woth it!
I am currently building the base docs of the library usage. Should be done soon, depending on how much i need to sleep or rest (it has been a while). But you can learn a lot by the examples repo.
Will update with documentation links when its done!
I urge you to take a look at OpenZeppelins Knowledge base! It will help a lot in Smart Contracts Development learning path.
This project is maintained by me mostly, and developed following my questionable standard for code quality and security. So ,PLEASE, use common sense when doing anything that deals with real money! I take no responsibility for your implementation decisions and any security problems you might experience.
As soon i can leverage some funds from sponsorship (request pending approval from githubsponsors platform) i intend to audit everything, but 'till there, if you find any vulnerability, please contract us through security e-mail sec.royaldao@gmail.com.
I will document the contributing process soon, but in the meanwhile you can email me at [royal dao.contracts@gmail.com](mailto:royal dao.contracts@gmail.com). Lets build!
RoyalDao's Contracts is released under the MIT License.