Skip to content
PoissonPoivre edited this page Dec 20, 2021 · 9 revisions

Welcome to Concord!

User workflow for v0.1.1

Workflow V0.1.1

This Whimsical board is accessible at https://whimsical.com/concord-WNUDrpLppwKAVTbK4YKHSt.

Description

  • 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
Submit a proposal
  • 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.
Claim a task
  • 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.
Tip someone
  • As a member, I can tip another user in Discord
  • As a non-member, I first need to top up my account

Voting

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)

Tokenomics

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:

Donations

  • Anyone can donate to DAO, meaning send ETH to the contract (receive() or give() 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).

Cashing out

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.

Top up & withdraw

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.

Security

Safeguards must be put in place to prevent the case where the bot owner modifies the code, including the rules of the vote.

Clone this wiki locally