Skip to content

Instantly share code, notes, and snippets.

@compleatang
Created January 12, 2015 19:33
Show Gist options
  • Save compleatang/23b9a9ddf350955221be to your computer and use it in GitHub Desktop.
Save compleatang/23b9a9ddf350955221be to your computer and use it in GitHub Desktop.
---
# Eris
### Participatory Architecture for Social Scientists (and Everyone Else)
---
### Ideas Alone Are Not That Powerful
* 2008 -- Koyoto Protocol CDM + Kiva
* 2009 -- Aquaponics for Villages
* 2010 -- Uber for Veggies
* 2011 -- Picture This
* 2012 -- Clan Based Insurance Mechanism
* 2013 -- Smart Recycling
* 2014 -- The Dawn of the DAO..?
---
But **ideas** combined with a **vernacular** and **tools** can be very powerful indeed.
---
Wanna follow along? Have a laptop? Make sure you have [golang](https://golang.org/doc/install) installed!
```
https://golang.org/doc/install
```
---
![eris](lib/img/EI-Rect-Med.png)
We empower developers to embrace participatory software architecture via distributed computing and smart contract systems.
---
In other words: we are a `devtools` shop.
---
### What is **Participatory Architecture**?
It is a method of designing software where the users of the application participate in the **operation** and **scaling** of the application via:
1. lending computational power to assist in data management
2. lending storage space to assist in content distribution
---
Using participatory architecture, distributed systems, and smart contracts, **complex ideas** become easier to study.
And to implement
---
What is a **Smart Contract**?
`A cryptographically provable execution of code`
---
![smart contracts intro](lib/img/smart-ks.png)
---
What is **Eris Industries** Building?
---
`a distributed application server -- distributed systems agnosticism with a harmonized actions layer`
---
`a distributed database management system -- blockchains for everyone`
---
### Scenario
> A group of social scientists is interested in researching some aspect of Universal Basic Income. The research will be collaborative and distributed among a dozen researchers across the globe.
---
#### Step 1: Get the Tools
```bash
go get github.com/eris-ltd/thelonious/cmd/monk
cd $GOPATH/src/github.com/eris-ltd/thelonious/cmd/monk/
go install
```
```bash
go get github.com/eris-ltd/epm-go/cmd/epm/
cd $GOPATH/src/github.com/ethereum/serpent-go
git submodule init
git submodule update
cd $GOPATH/src/github.com/eris-ltd/epm-go/cmd/epm/
go install
epm init
```
---
#### Step 2: Design Your Chain
* Transactors
* Creators
* Committers
* Doug-ers
---
#### Step 3: Create Accounts
We don't have a tool for this yet, but we will be building one soon.
Distribute the keys for the accounts to all of the participants.
---
#### Step 4: Build genesis.json (1/4)
```json
{
"address": "0000000000THISISDOUG",
"pdx": "",
"doug": "",
"unique": true,
"private-key": "",
"no-gendoug": false,
"consensus": "",
"difficulty": 15,
"public:mine": 0,
"public:create": 0,
"public:tx": 0,
"maxgastx": "",
"tapow": 0,
"blocktime": 0,
"vm": null
}
```
---
#### Step 4: Build genesis.json (2/4)
```json
"accounts": [
{
"address": "0xbbbd0256041f7aed3ce278c56ee61492de96d001",
"name": "researcherA",
"balance": "1000000000000000000000000000000000000",
"permissions": {"tx":1,"mine":1,"create":1,"doug":1},
"stake": 0
},
...
]
}
```
`x12`
---
#### Step 4: Build genesis.json (3/4)
```json
"accounts": [
{
"address": "0xaaad0256041f7aed3ce278c56ee61492de96d224",
"name": "trustedParticipantA",
"balance": "0",
"permissions": {"tx":1,"mine":1,"create":0,"doug":0},
"stake": 0
},
...
]
}
```
`x100`
---
#### Step 4: Build genesis.json (4/4)
```json
"accounts": [
{
"address": "0xcccd0256041f7aed3ce278c56ee61492de96d445",
"name": "participantA",
"balance": "0",
"permissions": {"tx":1,"mine":0,"create":0,"doug":0},
"stake": 0
},
...
]
}
```
`x100000`
---
#### Step 5: Deploy Your Chain
```bash
epm new --genesis ./genesis.json --name researchProjectUBI_A
2015/01/12 19:21:04 [EPM-CLI] Deployed and installed chain: thelonious/d144e0971c674bbc3b983b8cbb29660dcf0ca530
2015/01/12 19:21:04 [EPM-CLI] Checked out chain: thelonious/d144e0971c674bbc3b983b8cbb29660dcf0ca530
```
```bash
epm refs
Available refs:
researchProjectUBI_a : thelonious/d144e0971c674bbc3b983b8cbb29660dcf0ca530
researchProjectUBI_b : thelonious/a2f25e98b90410a132fa0e6f75f83b333bc9f2d7
researchProjectUBI_c : thelonious/15deb792e5577ed67bc39105001c8044720586e3
researchProjectUBI_d : thelonious/0eab6abd02e1a79e60cb96c3d63e70fac2c31f8c
```
---
#### Step 6: Build & Deploy Your Smart Contracts
```bash
epm deploy --chain researchProjectUBI_A
```
---
#### Step 7: Have Fun!
---
### Thanks for Listening
```bash
erisindustries.com
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment