The Distributed Application Platform

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

Your smart contracts. Your blockchain. Your application.

Eris Components

Eris helps developers to build, test, deploy, and operate interactive applications where application logic is reliably and securely executed by a distributed network.

Eris consists of two open source packages.

  • ErisDB / Thelonious

    A fully-programmable, fully controllable, open-source blockchain database and smart contracts machine.

  • ErisServer / Decerver

    A distributed application server which displays distributed applications in an ordinary web browser.

What can I do with Eris?

When using default platform architecture, whether marketplaces, exchanges, government services, or on-demand commercial services, we rely on the service provider to manage the system and carry out our instructions.


With Eris, communities, businesses, governments, and anybody else can use smart contracts to manage their data-driven relationships on their own.

From anywhere. With anyone. For any purpose.

Step 1


Install the complete Eris platform in seconds using Docker.

$ docker pull eris/erisdb
$ docker pull eris/decerver

Step 2


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!
    // Doug is the smart contract which controls permissions
    "address" : "0000000000THISISDOUG",
    // Use this Genesis DOUG contract (or make your own)
    "doug" : "Genesis DOUG/gendoug-v3.111",
    // Add a genDoug chain permission module to a private chain
    "no-gendoug" : false,
    // turning any of these to `1` makes the action be available to
    // any one who can access the chain
    "public:commit" : 0,
    "public:create" : 0,
    "public:tx" : 0,
    // set the difficulty
    "difficulty" : 15,
    // set the target blocktime
    "blocktime" : 14,
    // set accounts which can interact with this chain giving
    // developers pinpoint control over the permissions
    "accounts": [
            // use an established PKI for capabilities based perms
            "address": "0xbbbd0256041f7aed3ce278c56ee61492de96d001",
            "name": "devProcessingNodeABD",
            // give node a balance of junk tokens if you need to
            "balance": "0",
            "permissions": {

Step 3


Build and run your distributed 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;