Your smart contracts. Your blockchain. Your application.

Eris: The Smart Contract Application Platform

Eris is free software that allows anyone to build their own secure, low-cost, run-anywhere applications using blockchain and smart contract technology.

What can I do with Eris?

When using default platform architecture, whether marketplaces, exchanges, government services, or on-demand commercial services, we wholly rely on a service provider to manage the business processes required for the system.

BUT

With Eris, communities, businesses, governments, and anybody else can use smart contracts to automate their business processes between organizations. All on their own.

From anywhere. With anyone. For any purpose.

Step 1

Install

Install the complete Eris platform in seconds.

$ go get github.com/eris-ltd/eris-cli/cmd/eris
$ eris init

Step 2

Roll

Deploy your own custom blockchain in seconds or easily connect to an existing one to develop sophisticated financial or legal applications.

// Note, this is an incomplete example. Do not copy and paste!
{
  "genesis_time": "2015-11-19T21:06:11.000Z",
  "chain_id": "idiaminchain",
  "accounts": [
    {
      "address": "FECEE6FF5CD166D8A2423143D8DBE27C7FC6CB1B",
      "amount": 2251799813685248,
      "name": "idiaminchain_admin",
      "permissions": {
        "base": {
          "perms": 16383,
          "set": 16383
        },
        "roles": []
      }
    },
    {
      "address": "8344F45F69A0A0CD2DB3473B9E436E449693FA7C",
      "amount": 2251799813685248,
      "name": "idiaminchain_val_00",
      "permissions": {
        "base": {
          "perms": 32,
          "set": 127
        },
        "roles": []
      }
    },
    ...

Step 3

Build

Build and run your application using smart contract templates and a simple, web-based user interface.

contract Users {
    // Here we store the names. Make it public to
    // automatically generate an accessor function named
    // 'users' that takes a fixed-length string as an arg
    mapping (bytes32 => address) public users;

    // Register the provided name with the caller address.
    // We don't want them to register "" as their name.
    function register(bytes32 name) {
        if(users[name] == 0 && name != ""){
            users[name] = msg.sender;
        }
    }

    // Unregister the name with the caller address.
    function unregister(bytes32 name) {
        if(users[name] != 0 && name != ""){
            users[name] = 0x0;
        }
    }
}