# Mico : The Meritocratic ICO
## Intro
If you want to raise funding for your crypto project and create a project token one option is to do an ICO. But an ICO has some drawbacks :
- You're raising funds upfront (you might already have a demo or an MVP), before real value has been added to your token. So it takes a lot of convincing towards your sponsors, and you need a good performant team later on to create all promised value.
- An ICO is typically a time-framed event. So sponsors that are interested at a later time to invest are left out. With the abundance of ICO's it's difficult to promote your ICO withtin this whort timeframe of the ICO itself.
So all and all this classic ICO approach is not very appealing any more.
What if we would have a more meritocratic model that allows tokens to be distributed while your project grows - and sponsors can choose in what aspect of your project to invest in.
Enter **Mico** - the Meritocratic ICO.
## Concept
You first start with
1. choosing the funding currency for your project (ETH, or an existing ERC20 token... let's take `SWT` as an example funding token )
2. then you define a token that you're going to reward your sponsors with ( ex. MyToken )
3. You define your first `phase` (ex. **MVP**) in your project that needs to have
- a time-frame ( ex 3 months )
- a reward ratio ( ex. 1:1 => 1 SWT invested will return 1 MyToken )
4. You also define a _minimum_ decrease in reward ratio for follow-up `phases`. ( ex _minimum_ 5% decrease for every phase ) This decrease is fixed throughout the project to incentivise early sponsors.
5. You define a team-reward: a percentage of additional minted tokens that will be rewarded to the organizing team for each completed task. (ex 5%)
Then you describe your project's first phase (**MVP**) roadmap: define some `tasks` that need to be executed to deliver **MVP** and give them an allocation. ( ex 100 SWT for the `task` 'build a landingpage' - 50 SWT for the `task` 'design a logo' - 200 SWT for the `task` 'build app opening screen' ... etc).
Ofcourse your token needs to have a utility function in your project when it becomes usable - or it also can be a vanity token ( example in the case of a non profit project ) where contributors get a symbolic token for their donation.
When having all this info the real work starts: you deploy a MICOManager - a smart contract that will
- manage the minting of tokens
- forward the funds of your sponsors to the task they invested in
- take care of your project `tasks`
- guard all the boundaries of the project (timeline of phases - creation of new phases )
Upon creation - the MICOManager will create your new token on the blockchain and will become the manager of your token supply.
Now you can now fill up your `phase` with the `tasks` that need to be executed for making your project a success : coding tasks , PR tasks , copywriting, UI design, outreach, ... anything you need.
## Wisdom of the crowd to fund your project
Now for each `task` in your project - you assigned a number of tokens as a reward for executing this task.
Since MICOManager uses the `StandardBounties` format for your project, you can post your project` tasks` in a growing list of sites that support this format, like https://bounties.network/ - or https://gitcoin.io
The MICOmanager will open up the possibility for sponsors to fund any specific task. When the task is fully funded by any number of sponsors, the MICOmanager will create, fund and activate a StandardBounties bounty for execution.
```sequence
Title: Mico simple cycle
Project Team->MICO SC: Define issue 1
Note left of Sponsor: Decides issue 1 is priority
Sponsor->MICO SC: Fund issue 1
Note right of MICO SC: until enough funding received
Project Team-->MICO SC: activate issue 1
MICO SC->StandardBounties SC: issueAndActivateBounty `issue 1`
Contributor->StandardBounties SC: Fulfill
Project Team-->StandardBounties SC: AcceptFulfillment `issue 1`
StandardBounties SC->Contributor: Payout
StandardBounties SC->MICO SC: Close Bounty
MICO SC->Sponsor: Mint sponsor tokens
MICO SC->Project Team: Mint % project team tokens
```
When the **MPV** phase is completed - you can start a new phase in your project by iterating through the same cycle again, but now with a slightly lower reward ratio for your sponsors.
## Benefits of this approach
### For project organizers
- You can bootstrap any idea in no-time. You can already start when you have defined your first `phase` and your first `task`.
- You can easily and transparantly self-fund parts of your project.
- Your project can grow with its popularity. You can add more and more phases in your project and find sponsors for it, even for follow-up phases like adding new features.
- There is no time-pressure on doing an ICO. The tokens are generated continuously, but in an ever declining ratio.
- sponsors are forced to learn about the phases and tasks in your project, since they only can fund individual tasks.
- Immediate feedback: If you don't succeed in finding sponsors for your `task` maybe the task is not well defined or maybe it does not fit in the current phase and should be postponed to a later phase.
### For sponsors
- The quality of investment is higher: you only will invest in projects with a well defined roadmap.
- No rush to invest a lot in the beginning
- Performance of the executing team will be apparent since it's recorded on the blockchain.
- Exit scams become impossible since the project is gradually sponsored.
## Proposed execution
There are a bunch of ready-to-use components that could be glued together to create the Mico project
### 1. React-trello
A JSON-based React component that implements the whole UI for a kanban board. It can be easily adapted to fit the Mico use-case.
Check a [demo](http://rcdexta.me/react-trello/?selectedKind=Drag-n-Drop&selectedStory=Drag%20Styling&full=0&down=0&left=1&panelRight=0) here.
Source code :
- https://github.com/rcdexta/react-trello
### 2. Standardbounties
The Standardbounties system (https://bounties.network/) defines a set of functions to issue and fulfill bounty-based tasks. It is compatible with https://gitcoin.co/ and is battle tested for some time now.
Source code:
- https://github.com/Bounties-Network/StandardBounties
### Current status
#### MICO-manager smart contract
Preliminary work has been done on creating the smart contracts to manage the token rewards for creating and managing the phases and tasks. The concept seems to work - but it needs more effort to implement all phases of a MICO project.
https://github.com/micoproject/mico-contracts
#### MICO-manager UI
An initial React-UI has been bootstrapped to show how a MICO project could be managed. The kanban board is saved as a JSON payload to IPFS on every mutation of the board.
https://github.com/micoproject/mico-frontend
### Demo
You can play around with the UI here http://dev.micoproject.com/