This package contains Ethereum smart contracts and Python based command line tools for launching your ICO crowdsale or token offering.
Github issue tracker and source code
ICO stands for a token or cryptocurrency initial offering crowdsale. It is a common method in blockchain space, decentralized applications and in-game tokens for bootstrap funding of your project.
This project aims to provide standard, secure smart contracts and tools to create crowdsales for Ethereum blockchain.
As the writing of this, Ethereum smart contract ICO business has been booming almost a year. The industry and development teams are still figuring out the best practices. A lot of similar smart contracts get written over and over again. This project aims to tackle this problem by providing reusable ICO codebase, so that developers can focus on their own project specific value adding feature instead of rebuilding core crowdfunding logic. Having one well maintained codebase with best practice and security audits benefits the community as a whole.
This package provides
- Crowdsale contracts: token, ICO, uncapped ICO, pricing, transfer lock ups, token upgrade in Solidity smart contract programming language
- Automated test suite in Python
- Deployment tools and scripts
These contracts have been tested, audited and used by several projects. Below are some notable token sales that we have used these contracts
- Best practices: Smart contracts are written with the modern best practices of Ethereum community
- Separation of concerns: Crowdsale, token and other logic lies in separate contracts that can be assembled together like lego bricks
- Testable: We aim for 100% branch code coverage by automated test suite
- Auditable: Our tool chain supports verifiable EtherScan.io contract builds
- Reusable: The contract code is modularized and reusable across different projects, all variables are parametrized and there are no hardcoded values or magic numbers
- Refund: Built-in refund and minimum funding goal protect investors
- Migration: Token holders can opt in to a new version of the token contract in the case the token owner wants to add more functionality to their token
- Reissuance: There can be multiple crowdsales for the same token (pre-ICO, ICO, etc.)
- Emergency stop: To try to save the situation in the case we found an issue in the contract post-deploy
- Build upon a foundation: Instead of building everything from the scratch, use OpenZeppelin contracts as much as possible as they are the gold standard of Solidity development