# README
DOS Client and Core Libraries
Prerequisites:
Cloud Server / VPS Recommendations
- AWS Lightsail - $5 monthly plan (1 cpu, 1GB memory, 40GB ssd, 2TB bandwidth)
- Vultr - Cloud Compute $5 monthly plan (1 cpu, 1GB memory, 25GB ssd, 1TB bandwidth)
- Digital Ocean - Droplet $5 monthly plan (1 cpu, 25GB ssd, 1TB bandwidth)
- Linode - $5 monthly plan (1 cpu, 1GB memory, 25GB ssd, 1TB bandwidth)
- .
Verified and recommended installation environment
- Ubuntu 18.04 x64 LTS or higher
- An IPv4 address
- Run
$ dig +short myip.opendns.com @resolver1.opendns.com
- Or get it from cloud server providers. Most vps / cloud server
- Run
- With below ports open:
- udp port
7946
- tcp port
7946
,9501
- udp port
- It's recommended to generate ssh login key pairs and setup public key authentication instead of using password login for server security and funds safety:
- Learn how to setup SSH public key authentication on Ubuntu 18.04 and disable password logins.
Acquire testnet ether and testnet tokens
- Acquire testnet ether from rinkeby faucet.
- Acquire 100,000 testnet DOS token, (and optional - acquire several testnet DropBurn token).
- Please fill in this form to request testnet tokens.
- Replace your node ip address in config.json
Register and setup Infura api key
- Register and get Infura api key
- Replace your infura api key in config.json
Run binary from github releases
- Install:
$ wget https://github.com/DOSNetwork/core/releases/download/v1.0-beta.23/config.json $ wget https://github.com/DOSNetwork/core/releases/download/v1.0-beta.23/dos.sh $ sudo chmod +x dos.sh
- Use a existing keystore (optional):
$ mkdir vault $ cp oldKeyStore vault/
- Start:
$ ./dos.sh start
- Check client status :
$ ./dos.sh status
- Stop client :
$ ./dos.sh stop
- Debuging an issue :
$ ./dos.sh log
Building binary from source
-
Install Go and setup golang workingspace like below:
$ sudo apt-get install golang $ sudo apt-get install go-dep $ sudo apt-get install build-essential
-
Open
~/.bashrc
and set$GOPATH
and$PATH
environmental variables:$ vim ~/.bashrc export GOPATH=$HOME/go export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin $ source ~/.bashrc
-
Download source code:
$ mkdir -p $GOPATH/src/github.com/DOSNetwork $ cd $GOPATH/src/github.com/DOSNetwork && git clone https://github.com/DOSNetwork/core.git $ cd core $ git checkout v1.0-beta.20
-
Build:
$ make vendor
- to prepare dependencies for building$ make
- to build release version client
-
Run:
$ ./dos.sh start
-
Dev tips:
$ go fmt ./...
to reformat go source code.$ golint
to fix style mistakes conflicting with effective go. (golint tool for vim users.)$ make devClient
to build develoment version client.$ make updateSubmodule
to fetch latest system contracts from repo, instead of making contract modifications locally.$ make gen
to generate binding files for system contracts.$ make clean
to remove built binaries or unnecessary generated files.
Run with docker image
- TODO
Status
- Verifiable Secret Sharing
- Distributed Key Generation (Pedersen's DKG approach)
- Paring Library and Threshold BLS Signature
- Distributed Randomness Generation
- Gossip & DHT Implementation
- P2P NAT Support
- Json / Xml / Html Request Parser
- Dockerization and Client Deployment Script
- Integration with Ethereum On-chain System Contracts
- P2P Network Performance Tuning
- Staking & Delegation Contracts with a User-friendly Dashboard
- Network Status Scanner/Explorer
- Test with geth lightnode mode and experiment with parity clients