This is a Beta version and may still contain bugs. We are not responsible for any losses caused by this version.
RICO is a framework which forms a robust boilerplate for decentralized initial coin offerings (ICO). With RICO your ICO will be more responsible and be easier to set up and launch.
With a conventional ICO, the project owner can freely decide the process how tokens are generated. That is, the token design and holding ratio is decided by the project owner. After an initial issuance these tokens are sold to supporters at a certain price or exchanged for the total raised funds during the ICO.
With RICO's approach the entire execution process of issuing tokens is strictly defined on the Ethereum Virtual Machine (EVM) and executed automatically. With RICO your ICO will be fully automatic and decentrilized. The decentrilized nature of an ICO created with RICO implements a true fair distribution system.
An ICO made with RICO is:
$ npm install -g [email protected] $ npm install -g [email protected] $ npm install -g [email protected]
(You can use ethereumjs-testrpc to test your RICO build.)
Install rico-core and generate a new rico project.
$ npm install -g rico-core $ rico new helloico
rico new folder-name will create a new folder in the current directory with a clean installation of the RICO framework.
When we look in the new directory we'll see a lot of different contracts. Here is a quick overview of the most important files that make up RICO.
The RICO framework makes it possible to easily kickstart your ICO with your own ICO requirements. Currently there are three templates available for generating an ICO boilerplate: standard ICO, simple ICO and Dutch Auction.
RICO Standard ICO utilizes the
PublicSalePoD.sol for your RICO. This method is our suggested method and integrates an Initial Deposit and offers functionality for rewarding market makers. The tokens the owner receives from the Initial Deposit are locked for a fixed period of a 180 days.
A Simple ICO utilizes the
PublicSalePoD.sol for your RICO. This method is more old school, having a separate allocation for the owner and offering the remainder of the tokens through a capped or uncapped public sale. The tokens the owner receives from the separate allocation can be locked for a fixed period which can be set freely.
A Dutch Auction utilizes the
DutchAuctionPoD.sol for your RICO. This is a more advanced method. The template cannot be initialized via the Launcher contract. It can be initialized via the
init.js script inside
exec/DutchAuction, but you will need to deploy the DutchAuctionPoD contract manually.
RICO is really straightforward:
You need to deploy three contracts to the network before you can initialize your ICO:
ContractManager.sol. We made it very easy by providing a truffle migration file to deploy these contracts. Please see the
First you need to open a local testnet by either (a) opening Ganache or (b) run
ganache-cli we have already prepared the script inside the file called
# (Mac only) make rpcrun executable $ chmod +x rpcrun.bash # run the script $ ./rpcrun.bash
Then open a new Terminal window and
cd into your RICO directory to migrate and deploy rico with truffle.
$ truffle migrate --reset --network testrpc
Now we need to obtain the address that RICO was deployed to. After the migration you should see these lines in your terminal:
Replacing RICO... ... 0x66b3f9a7ab2d993a0336a55c169372762a9e33b5298de468b83321f17a96964c RICO: 0x1c6f2526b0a5128b89ee0f921f8b8b794189f2ed Replacing Launcher... ... 0xb8d1c92c5b2d8522bb038bfc86a91e30a3e24a02ba9159c0910bac6cc18495ad Launcher: 0x39326f43557b33afdad3cec0d0272619c0d7ad9b
Caution: ropsten hit the Byzantium HardFork #1700000 you have to update geth to v1.7 and sync to the latest block.
$ npm install truffle-hdwallet-provider
The required contracts are already deployed on the ropsten network:
We will need the RICO and Launcher addresses as written above. Continue to Customize and initialize your ICO.
We haven't deployed the RICO and Launcher contracts to the mainnet yet. Please use truffle console to migrate and deploy the contracts.
It's time to initialize your ICO with the
deploy.js script in
exec/KickStarter. Please check the contents and edit it to your own requirements.
# Your Mnemonic key will be saved as a process.env variable and is used in the truffle.js file. This wallet will be the project owner's wallet to be used during the ICO. $ export MNEMONIC_KEY="your mnemonic key 12 words" # Paste the correct contract address of the deployed RICO contract. $ export RICO_ADDR=0x1c6f2526b0a5128b89ee0f921f8b8b794189f2ed # Paste the correct contract address of the deployed Launcher contract. $ export LAUNCHER_ADDR=0x39326f43557b33afdad3cec0d0272619c0d7ad9b # Run the deploy.js script. $ truffle exec exec/KickStarter/deploy.js --network testrpc
RICO is licensed under the GNU General Public License v3.0.