Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Coverage Status License NPM

Set Protocol: A Specification for Token Abstraction


Set Protocol is a specification for abstraction of higher order tokens on the ethereum blockchain written in the Solidity programming language. We use Truffle as a development environment for compiling, testing, and deploying our contracts. See the whitepaper for more details about Set Protocol.

More details about our contract architecture and deployed contracts can also be found in our wiki.


We highly encourage participation from the community to help shape the development of Set. If you are interested in developing on top of Set Protocol or have any questions, please ping us on Discord.


For legacy users, our audited V1 contracts can be found here.


  1. Docker Set up

    Firstly, you need to install Docker. The easiest way is to follow the Instructions on

    You need to pull the docker image that you want to use by using the following command:

    docker pull ethereum/solc:0.5.7

    If you wish not to set up docker, you can turn off the docker: true flag in truffle.js

  2. Run yarn install

    yarn install
  3. Run an ethereum chain on a separate terminal window

    yarn chain
  4. Run unit tests

    yarn test