All Projects → DRI-network → Rico

DRI-network / Rico

Licence: gpl-3.0
The Responsible Initial Coin Offering Framework

Programming Languages

solidity
1140 projects

Projects that are alternatives of or similar to Rico

Supply Chain
Supply chain management on blockchain using Angular 4 + Truffle + IPFS + Ethereum
Stars: ✭ 76 (-8.43%)
Mutual labels:  ethereum, smart-contracts, truffle
Solidity Idiosyncrasies
Solidity gotchas, pitfalls, limitations, and idiosyncrasies.
Stars: ✭ 267 (+221.69%)
Mutual labels:  ethereum, smart-contracts, truffle
Erc20 Generator
Create an ERC20 Token for FREE in less than a minute with the most used Smart Contract Generator for ERC20 Token. No login. No setup. No coding required.
Stars: ✭ 202 (+143.37%)
Mutual labels:  ethereum, smart-contracts, truffle
Cryptocurrencyawesome
Cryptocurrency study materials resources
Stars: ✭ 118 (+42.17%)
Mutual labels:  ethereum, smart-contracts, ico
React Ethereum Dapp Example
A starter boilerplate for an Ethereum dapp using web3.js v1.0, truffle, react, and parity
Stars: ✭ 384 (+362.65%)
Mutual labels:  ethereum, smart-contracts, truffle
Ico Contracts
Ethereum smart contracts that have been used during successful ICOs
Stars: ✭ 160 (+92.77%)
Mutual labels:  ethereum, smart-contracts, ico
Ethereum Ico Contract
Tested Ethereum ICO Contract for Token Crowdsales
Stars: ✭ 59 (-28.92%)
Mutual labels:  ethereum, smart-contracts, ico
Sablier
The protocol for real-time finance on the Ethereum blockchain
Stars: ✭ 147 (+77.11%)
Mutual labels:  ethereum, smart-contracts, truffle
Ico Contracts
🎉 ICO Contracts of the ALIS.
Stars: ✭ 69 (-16.87%)
Mutual labels:  ethereum, smart-contracts, ico
Love Ethereum
区块链学习
Stars: ✭ 323 (+289.16%)
Mutual labels:  ethereum, smart-contracts, truffle
Truffle
A tool for developing smart contracts. Crafted with the finest cacaos.
Stars: ✭ 11,909 (+14248.19%)
Mutual labels:  ethereum, smart-contracts, truffle
Smart Contracts
Ethereum smart contracts for security and utility tokens
Stars: ✭ 1,187 (+1330.12%)
Mutual labels:  ethereum, smart-contracts, ico
Truffle Flattener
Truffle Flattener concats solidity files from Truffle and Buidler projects with all of their dependencies
Stars: ✭ 254 (+206.02%)
Mutual labels:  ethereum, smart-contracts, truffle
0xdeca10b
Sharing Updatable Models (SUM) on Blockchain
Stars: ✭ 285 (+243.37%)
Mutual labels:  ethereum, smart-contracts, truffle
Eth Crypto
Cryptographic javascript-functions for ethereum and tutorials to use them with web3js and solidity
Stars: ✭ 420 (+406.02%)
Mutual labels:  ethereum, smart-contracts, truffle
Eth.social
An Ethereum dApp for posting social events.
Stars: ✭ 17 (-79.52%)
Mutual labels:  ethereum, smart-contracts, truffle
Trace
Supply chain transparency platform proof-of-concept based on the Ethereum blockchain ✍️
Stars: ✭ 52 (-37.35%)
Mutual labels:  ethereum, truffle
Remix
This has been moved to https://github.com/ethereum/remix-project
Stars: ✭ 1,063 (+1180.72%)
Mutual labels:  ethereum, smart-contracts
Awesome Ethereum Cn
Web3.js、Solidity、Truffle开发教程及以太坊开发资源汇总
Stars: ✭ 54 (-34.94%)
Mutual labels:  ethereum, truffle
Ethereumbook
Mastering Ethereum, by Andreas M. Antonopoulos, Gavin Wood
Stars: ✭ 11,663 (+13951.81%)
Mutual labels:  ethereum, smart-contracts

npm version CircleCI Slack Channel

This is a Beta version and may still contain bugs. We are not responsible for any losses caused by this version.

Table of Contents

Design Concept

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.

The problems with conventional ICO's

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.

RICO's approach

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:

  • Decentralized
  • Autonomous
  • Fair
  • Mintable
  • Easy to use

Docs

Whitepaper

Tutorial

Dependencies

  • Node v9.0.0 (visit the website for installation)
  • Truffle v4.0.1
  • solidity-compiler v0.4.18
  • ganache-cli v6.0.3

Install dependencies:

$ 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.)

Installation & overview

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.

RICO file structure

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.

Contracts:

  • RICO.sol handles the minting of the Tokens of your ICO.
  • PoD.sol stands for "Proof of Donation". This handles all the donation logic during your ICO. This contract extends the other PoDs inside the PoDs folder.
  • PoDs/PublicSalePoD.sol handles the donations for the public sale.
  • PoDs/RICOStandardPoD.sol handles the Initial Deposit and rewarding the market makers.
  • PoDs/TokenMintPoD.sol handles a separate token allocation outside of the public sale.
  • PoDs/DutchAuctionPoD.sol handles the Dutch Auction ICO format.
  • Launcher.sol can deploy and initialize your ICO based on your own parameters.

Execution scripts:

  • KickStarter/deploy.js is your startpoint to set your ICO's parameters and send them to the Launcher.

RICO templates

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

RICO Standard ICO utilizes the RICOStandardPoD.sol and 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.

Simple ICO

A Simple ICO utilizes the TokenMintPoD.sol and 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.

Dutch Auction

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.

Using RICO

RICO is really straightforward:

  1. Deploy RICO to the blockchain.
  2. Initialize your ICO with the Launcher contract.
  3. Mint tokens through the RICO contract.

Deploying the RICO contracts

You need to deploy three contracts to the network before you can initialize your ICO: RICO.sol, Launcher.sol and ContractManager.sol. We made it very easy by providing a truffle migration file to deploy these contracts. Please see the migrations/2_deploy_contracts.js.

Local Testnet deploy

First you need to open a local testnet by either (a) opening Ganache or (b) run ganache-cli. For ganache-cli we have already prepared the script inside the file called rpcrun.bash.

# (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

We will need the RICO and Launcher addresses as written above. Continue to Customize and initialize your ICO down below. Or see the complete walkthrough if you have trouble with testing RICO.

Testnet deploy (ropsten)

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:

  • Launcher.sol address: 0x40c75eb39c3a06c50b9109d36b1e488d99aadf97 etherscan
  • RICO.sol address: 0x9e18e5bdb7f47631cf212b34a42cd54cfd713a6d etherscan

We will need the RICO and Launcher addresses as written above. Continue to Customize and initialize your ICO.

Mainnet deploy

We haven't deployed the RICO and Launcher contracts to the mainnet yet. Please use truffle console to migrate and deploy the contracts.

Customize and initialize your ICO

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

LICENSE

RICO is licensed under the GNU General Public License v3.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].