An open API service indexing awesome lists of open source software.

https://github.com/elastos/elastos.ela.arbiter


https://github.com/elastos/elastos.ela.arbiter

Last synced: 4 months ago
JSON representation

Awesome Lists containing this project

README

        

Elastos ELA Arbiter
===========
[![Build Status](https://travis-ci.org/elastos/Elastos.ELA.Arbiter.svg?branch=master)](https://travis-ci.org/elastos/Elastos.ELA.Arbiter) [![Go Report Card](https://goreportcard.com/badge/github.com/elastos/Elastos.ELA.Arbiter)](https://goreportcard.com/report/github.com/elastos/Elastos.ELA.Arbiter)

## Introduction
##### This project is the source code that can build a arbiter of ELA.

## Table of Contents
- [Elastos ELA Arbiter](#elastos-ela-arbiter)
- [Introduction](#introduction)
- [Table of Contents](#table-of-contents)
- [Pre-requisites on Mac](#pre-requisites-on-mac)
- [1. Check OS version](#1-check-os-version)
- [2. Install Go distribution 1.9](#2-install-go-distribution-19)
- [Pre-requisites on Ubuntu](#pre-requisites-on-ubuntu)
- [1. Check OS version](#1-check-os-version-1)
- [2. Install git](#2-install-git)
- [3. Install Go distribution 1.9](#3-install-go-distribution-19)
- [Configure the node](#configure-the-node)
- [Build the node](#build-the-node)
- [1. Check Go version](#1-check-go-version)
- [2. Clone source code](#2-clone-source-code)
- [3. Make](#3-make)
- [4. Run the node](#4-run-the-node)
- [Interact with the node](#interact-with-the-node)
- [1. JSON RPC API of the node](#1-json-rpc-api-of-the-node)
- [Contribution](#contribution)
- [Acknowledgments](#acknowledgments)
- [License](#license)

## Pre-requisites on Mac

#### 1. Check OS version

Make sure the OSX version is 16.7+

```shell
$ uname -srm
Darwin 16.7.0 x86_64
```

#### 2. Install Go distribution 1.13

Use Homebrew to install Golang 1.13.

```shell
$ brew install [email protected]
```

> If you install older version, such as v1.8, you may get missing math/bits package error when build.

## Pre-requisites on Ubuntu

#### 1. Check OS version

Make sure your ubuntu version is 16.04+

```shell
$ cat /etc/issue
Ubuntu 16.04.3 LTS \n \l
```

#### 2. Install git

```shell
$ sudo apt-get install -y git
```

#### 3. Install Go distribution 1.13

```shell
$ curl -O https://storage.googleapis.com/golang/go1.13.5.linux-amd64.tar.gz
$ tar -xvf go1.13.5.linux-amd64.tar.gz
$ sudo chown -R root:root ./go
$ sudo mv go /usr/local
$ export GOPATH=$HOME/go
$ export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
$ source ~/.profile
```

> If you install older version, such as v1.8, you may get missing math/bits package error when build.

## Configure the node

See the [documentation](./docs/config.json.md) about config.json to understand what each parameter means on the configuration file.

If you would like to connect to testnet, do the following:
```shell
$ cp docs/testnet_config.json.sample config.json
```

If you would like to connect to mainnet, do the following:
```shell
$ cp docs/mainnet_config.json.sample config.json
```

Make sure to modify the parameters to what your own specification.

## Build the node

#### 1. Check Go version

Check the golang version. Make sure they are the following version number or above.

```shell
$ go version
go version go1.13.5 darwin/amd64
```

If you cannot see the version number, there must be something wrong when install.

#### 2. Clone source code
Make sure you are in the folder
```shell
$ git clone https://github.com/elastos/Elastos.ELA.Arbiter.git
```

If clone works successfully, you should see folder structure like Elastos.ELA.Arbiter/Makefile

#### 3. Make

Build the node.
```shell
$ cd Elastos.ELA.Arbiter
$ make
```

If you did not see any error message, congratulations, you have made the arbiter full node.

#### 4. Run the node

Run the node.
```shell
$ ./arbiter -p password
```

## Interact with the node

#### 1. JSON RPC API of the node

Once the node is running successfully, you can access Arbiter Node's JSON RPC APIs:

Example 1: Get the block height synchronized by SPV from the main chain
```bash
curl -H 'Content-Type: application/json' -H 'Accept:application/json' --data '{"method":"getspvheight"}' http://localhost:20606
{
"error": null,
"id": null,
"jsonrpc": "2.0",
"result": 2509
}
```

Example 2: Get the block height of side chain by side chain genesis block hash
```bash
curl -H 'Content-Type: application/json' -H 'Accept:application/json' --data '{"method":"getsidechainblockheight","params":{"hash":"56be936978c261b2e649d58dbfaf3f23d4a868274f5522cd2adb4308a955c4a3"}}' http://localhost:20606
{
"error": null,
"id": null,
"jsonrpc": "2.0",
"result": 70
}
```

If you would like to learn more about what other JSON RPC APIs are available for the node, please check out the [JSON RPC API](docs/jsonrpc_apis.md)

## Contribution

We welcome contributions to the Elastos ELA Arbiter Project.

## Acknowledgments

A sincere thank you to all teams and projects that we rely on directly or indirectly.

## License

This project is licensed under the terms of the [MIT license](https://github.com/elastos/Elastos.ELA.Arbiter/blob/master/LICENSE).