-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Welcome to Concord!
This Whimsical board is accessible at https://whimsical.com/concord-WNUDrpLppwKAVTbK4YKHSt.
- I join a Discord server
- The admins make me a member (a specific Discord role)
- I have access to the voting channel
- I get myself an Ethereum address (using Torus Discord login or any)
- I declare my Ethereum address
- I submit a proposal asking for an amount labeled in the DAOs currency of choice (ETH for now)
- The other members vote by clicking the "Yay" or "Nay" buttons
- I get the money in cash*
- *Once the proposal is passed, the proposer will receive the relevant amount of ETH from the DAO Treasury.
- I claim a task that I performed
- The other members vote by clicking the "Yay" or "Nay" buttons
- I get the requested amount of tokens*
- *The claim function will launch the minting of community tokens, the claimer will receive the requested amount of community tokens for their contributions.
- As a member, I can tip another user in Discord
- As a non-member, I first need to top up my account
A member is a voting user.
There will be 3 different types of in-Discord votes:
-
Claim tokens for a specific task (
claimTask()
function) -
Request ETH from the treasury (
executeProposal()
function) -
Add a new member (
registerMember()
to be implemented in the bot)
Describes what's already in the smart contract. Everything is in the discussion.
The contract inherits from Open Zeppelin's ERC20.sol.
In the contract, all the functions restricted to onlyOwner
are triggered by the Discord bot.
Tokens are minted in these functions:
Tokens are burnt in this function:
Tokens are transferred in these functions:
- Anyone can donate to DAO, meaning send ETH to the contract (
receive()
orgive()
functions). - Anyone sending ETH to the contract receives the exact same amount in community tokens.
- A donor (token holder) does not automatically become a member (a voting user).
When a token holder sends tokens to the contract, (1) the tokens are burnt and (2) the sender gets a proportion of the ETH held in the contract. Here's the calculation of the rageQuit()
function:
amount of ETH transferred from the contract
= ETH balance of the contract
/ tokens total supply
* amount of tokens sent to the contract
The shutDown()
function is not implemented yet, but it will probably call the rageQuit()
function to distribute the ETH held in the contract to all the token holders.
Allows token holders to tip each other in Discord.
- When a user tops up his account, the bot transfers the requested amount of token from the user wallet to the contract and increases the user's in-contract balance.
- Any user can withdraw the amount of token when he wants. The tokens are transferred from the contract to his wallet, and his in-contract balance decreases.
Safeguards must be put in place to prevent the case where the bot owner modifies the code, including the rules of the vote.