Ethereum ICO smart contracts and tools for managing crowdsales
Branch: master
Clone or download
Pull request Compare This branch is 204 commits behind TokenMarketNet:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
zeppelin @ 287b873


This package contains Ethereum smart contracts and command line toolchain for launching and managing token sales.

Join the chat at Updates Documentation Status

We are hiring

TokenMarket is hiring smart contract developers. Advanced Python (3-5 years) and basic Solidity (< 1 years) experience needed. Prior contributions and track record on working with open source projects required. Remote work, but occassional travel to Europe and UK is required. Please email your CV and your Github profile link to


Github issue tracker and source code


About the project

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

Token sales

These contracts have been tested, audited and used by several projects. Below are some notable token sales that we have used these contracts

We also have third party token sales using these smart contracts

Quick token sale walkthrough

Features and design goals

  • Best practices: Smart contracts are written with the modern best practices of Ethereum community
  • KYC: Know your customer processes are support enabled to minimize legal risks associated with anonymous payments - see KYCCrowdsale
  • AML: Anti-money laundering processes are supported through offloaded chain analysis - often a requirement to open a bank account - see AMLToken
  • 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 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
  • Token upgrade: 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


TokenMarket can be a launch and hosting partner for your token sale. We offer advisory, legal, technical and marketing services. For more information see TokenMarket ICO services. TokenMarket requires everyone to have at least business plan or whitepaper draft ready before engaging into any discussions.

Community support is available on the best effort basis - your mileage may vary. To get the most of the community support we expect you to be on a senior level of Solidity, Python and open source development. Meet us at the Gitter support chat.

Audit reports

Some public audit reports available for some revisions of this codebase:

More audit reports available on a request.