Skip to content
This repository was archived by the owner on Nov 29, 2022. It is now read-only.

Commit e6a8fc1

Browse files
committed
Updated docs
1 parent ad9b7e6 commit e6a8fc1

File tree

1 file changed

+47
-7
lines changed

1 file changed

+47
-7
lines changed

README.md

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,56 @@
1-
# Tenderloin
2-
Ethereum smart contracts development environment based on Ethermint/Tendermint
1+
# Etherloin
2+
3+
Hassle-free Ethereum smart contracts development kit, that uses full-fledged Ethereum cluster and does not require heavyweight mining.
4+
5+
The toolset is based on Docker-compose, Truffle framework and Ethermint/Tendermint.
6+
7+
Etherloin provides private Ethereum (Ethermint) network, that you can use both for smart contracts development and any other blockchain-related operations, e.g. create accounts, transfer funds, etc.
38

49
## Motivation
510

6-
TBD
11+
Project is inspired by existing smart contract development toolkits, such as [Ganache](http://truffleframework.com/ganache/)/TestRPC, [geth-truffle-docker](https://github.com/gregbkr/geth-truffle-docker) and [instant-dapp-ide](https://github.com/dominicwilliams/instant-dapp-ide).
12+
All 3 are great starting points for smart contract development, but have significant disadvantages:
13+
14+
* Ganache uses TestRPC instead of normal Ethereum Virtual Machine, so it can be used for deploying smart contracts, but not other related activities like acreating accounts and redistributing account funds via thos smart contracts. Another drawback is that Ganache is not docker-friendly out of the box, which adds some overhead for docker-based projects.
15+
* geth-truffle-docker and instant-dapp-ide use full-fledged go-Ethereum (AKA geth) clients and Docker, which make it free from Ganache issues but introduce a new issue: you have to enabled mining in go-ethereum in order to have gas for using smart contracts. Mining takes lot of system resources and makes development process almost impossible on battery-powered laptops.
16+
17+
Etherlion solves both issues by using Ethermint/Tendermint clients instead of go-ethereum. Ethermint is an Ethereum fork, that uses lightweight Tendermint POS consensus engine, while preserving virtually full backward compatibility with Ethereum.
718

819

920
## Usage
1021

11-
TBD
22+
### Prerequisites
23+
24+
It is assumed you already have Docker, Docker-compose and familiar with both tools.
25+
26+
### Architecturee
27+
28+
Etherlion consists of multiple Docker containers interacting with each other:
29+
30+
- `ethermaster` – main Ethermint node
31+
- `etherslave` – slave Ethermint node, have the same functionality as the main one
32+
- `tendermaster` – Tendermint consensus enging seving `ethermaster` node
33+
- `tenderslave` - Tendermint consensus enging seving `etherslave` node
34+
- `geth` – Ethereum console connecting to `ethermaster`. Technically implemented as a vanilla go-ethereum client.
35+
- `ethutils` – vanilla Ethereum client node with additional tools such as bootnode, etc. Used for cases you need to access any of those tools.
36+
- `contracts_test` – Truffle-based container that does just 1 thing: runs tests on your Solidity smart contracts.
37+
- `contracts_deploy` – automatically deploys your Truffle-based smart contracts to the private Ethermint network.
38+
- `contracts_console` – interactive Truffle console working with private Ethermint network.
39+
- `netstats`[eth-netstats](https://github.com/cubedro/eth-netstats) server. Disabled by default, see "Known issues" section.
40+
- `master_monitor` – netstats client, monitoring master Ethermint node. Disabled by default, see "Known issues" section.
41+
- `slave_monitor` – netstats client, monitoring slave Ethermint node. Disabled by default, see "Known issues" section.
42+
43+
It is assumed you'll add own containers or enable/disable some of existing ones if needed.
44+
45+
### Typical usage scenarios
46+
47+
- `docker-compose up --build` to start whole development environment
48+
- Create smart contracts in _contracts/contracts_ directory and appropriate Truffle migrations in _contracts/migrations_
49+
- Interact with Ethereum blockchain either programmatically via RPC API or via included geth client: `docker-compose run geth`
50+
51+
### Production usage
52+
53+
Etherloin uses `docker-compose` as on of its main components. However inside it is split into a set of Docker containers, so nothing stops you from using Etherloin-based application in production using docker containers deployment/orchestration tools like Kubernetes, Docker Swarm, etc.
1254

1355
## Directory structure
1456

@@ -21,15 +63,13 @@ TBD
2163

2264
## Roadmap
2365

24-
- [x] Add sample contracts subproject with truffle and autodeployment
2566
- [ ] Build Tendermint from source instead of downloading prepackaged version
26-
- [ ] Add usage docs
2767
- [ ] Include sample data encoding/decoding solidity contract
2868
- [ ] Add visual block explorer
2969
- [ ] Create a fork of netstats-client that does not break Ethermint
3070

3171
## Known issues
3272

3373
- When netstats monitoring enabled, it causes Golang errors on Ethermint nodes. Not critical for the functionality, but litters log output with errors.
34-
- When netstats monitoring enabled, it increases CPU load dramatically (but very little comparing to classic Ethereum mining), which could cause significantly smaller battery time for laptops running Tenderloin.
74+
- When netstats monitoring enabled, it increases CPU load dramatically (but very little comparing to classic Ethereum mining), which could cause significantly smaller battery time for laptops running Etherloin.
3575
- Both Tendermint and Ethermint are crashing on Docker for Windows in case their respective data directories are shared with the host OS. Same issue happens with vanilla go-Ethereum since it is not a bug on Ethereum/Ethermint/Tendermint but a bug in Docker for Windows.

0 commit comments

Comments
 (0)