README.md 4.0 KB
Newer Older
N
Nathan Hourt 已提交
1 2
# Eos

3
Welcome to the EOS source code repository!
N
Nathan Hourt 已提交
4 5 6 7 8 9 10

## Getting Started
The following instructions overview the process of getting the software, building it, and running a simple test network that produces blocks.

### Setting up a build/development environment
This project is written primarily in C++14 and uses CMake as its build system. An up-to-date C++ toolchain (such as Clang or GCC) and the latest version of CMake is recommended. At the time of this writing, Nathan uses clang 4.0.0 and CMake 3.8.0.

D
Daniel Larimer 已提交
11
### Installing Dependencies
N
Nathan Hourt 已提交
12
Eos has the following external dependencies, which must be installed on your system:
13
 - Boost 1.64
N
Nathan Hourt 已提交
14
 - OpenSSL
15
 - LLVM 4.0
N
Nathan Hourt 已提交
16
 - [secp256k1-zkp (Cryptonomex branch)](https://github.com/cryptonomex/secp256k1-zkp.git)
D
Daniel Larimer 已提交
17

D
Daniel Larimer 已提交
18 19 20 21 22 23 24
```
git clone https://github.com/cryptonomex/secp256k1-zkp.git
./autogen.sh
./configure
make
sudo make install
```
D
Daniel Larimer 已提交
25

N
Nathan Hourt 已提交
26 27 28 29 30 31 32 33 34 35
### Getting the code
To download all of the code, download Eos and a recursion or two of submodules. The easiest way to get all of this is to do a recursive clone:

`git clone https://github.com/eosio/eos --recursive`

If a repo is cloned without the `--recursive` flag, the submodules can be retrieved after the fact by running this command from within the repo:

`git submodule update --init --recursive`

### Configuring and building
N
Nathan Hourt 已提交
36
To do an in-source build, simply run `cmake .` from the top level directory. Out-of-source builds are also supported. To override clang's default choice in compiler, add these flags to the CMake command:
N
Nathan Hourt 已提交
37 38 39 40 41 42 43

`-DCMAKE_CXX_COMPILER=/path/to/c++ -DCMAKE_C_COMPILER=/path/to/cc`

For a debug build, add `-DCMAKE_BUILD_TYPE=Debug`. Other common build types include `Release` and `RelWithDebInfo`.

After successfully running cmake, simply run `make` to build everything. To run the test suite after building, run the `chain_test` executable in the `tests` folder.

N
Nathan Hourt 已提交
44
### Creating and launching a single-node testnet
N
Nathan Hourt 已提交
45 46
After successfully building the project, the `eosd` binary should be present in the `programs/eosd` directory. Go ahead and run `eosd` -- it will probably exit with an error, but if not, close it immediately with Ctrl-C. Note that `eosd` will have created a directory named `data-dir` containing the default configuration (`config.ini`) and some other internals. This default data storage path can be overridden by passing `--data-dir /path/to/data` to `eosd`.

N
Nathan Hourt 已提交
47
Edit the `config.ini` file, adding the following settings to the defaults already in place:
N
Nathan Hourt 已提交
48 49

```
N
Nathan Hourt 已提交
50 51 52 53 54
# Load the testnet genesis state, which creates some initial block producers with the default key
genesis-json = /path/to/eos/source/genesis.json
# Enable production on a stale chain, since a single-node test chain is pretty much always stale
enable-stale-production = true
# Enable block production with the testnet producers
N
Nathan Hourt 已提交
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
producer-name = init0
producer-name = init1
producer-name = init2
producer-name = init3
producer-name = init4
producer-name = init5
producer-name = init6
producer-name = init7
producer-name = init8
producer-name = init9
producer-name = init10
producer-name = init11
producer-name = init12
producer-name = init13
producer-name = init14
producer-name = init15
producer-name = init16
producer-name = init17
producer-name = init18
producer-name = init19
producer-name = init20
N
Nathan Hourt 已提交
76 77
# Load the block producer plugin, so we can produce blocks
plugin = eos::producer_plugin
N
Nathan Hourt 已提交
78 79
```

N
Nathan Hourt 已提交
80
Now it should be possible to run `eosd` and see it begin producing blocks. At present, the P2P code is not implemented, so only single-node configurations are possible. When the P2P networking is implemented, this instructions will be updated to show how to create an example multi-node testnet.
peterwillcn's avatar
peterwillcn 已提交
81 82 83 84 85 86 87 88 89 90 91 92

### Run in docker

So simple and fast operation EOS:
 - [Docker](https://docs.docker.com)
 - [Docker-compose](https://github.com/docker/compose)
 - [Docker-volumes](https://github.com/cpuguy83/docker-volumes)

Build eos images

```
cd eos/Docker
93
cp ../genesis.json .
peterwillcn's avatar
peterwillcn 已提交
94 95 96 97 98 99 100 101 102 103 104 105
docker build -t eosio/eos .
```

Start docker

```
sudo mkdir -p /data/store/eos
docker-compose -f docker-compose.yml up
```

Done