The core protocol of WoopChain
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Eugene Kim f599efd160 Remove Ethereum's db, trie, and log 6 years ago
api fix comments 6 years ago
cmd change benchmark to harmony 6 years ago
consensus fix go test after enable libp2p 6 years ago
core Migrate sha3 to golang's sha3 6 years ago
crypto Merge pull request #209 from harmony-one/crypto-unit-test 6 years ago
internal Remove Ethereum's db, trie, and log 6 years ago
node change benchmark to harmony 6 years ago
p2p catch errors in SendMessage 6 years ago
scripts rename gofmt to travis_checker.sh and add testing checker 6 years ago
test remove additional local configuration files 6 years ago
.gitignore change benchmark to harmony 6 years ago
.travis.yml config travis-discord 6 years ago
README.md Update README.md 6 years ago
appspec.yml change benchmark to harmony 6 years ago
go.mod add go.mod for go v1.11 6 years ago

README.md

Harmony

Build Status gopherbadger-tag-do-not-edit Discord

Coding Guidelines

Dev Environment Setup

export GOPATH=$HOME/<path_of_your_choice>

mkdir -p $HOME/<path_of_your_choice>/src/github.com/harmony-one

cd $HOME/<path_of_your_choice>/src/github.com/harmony-one

git clone git@github.com:harmony-one/harmony.git

cd harmony

go get ./...

Build

Harmony server / main node:

go build -o bin/harmony cmd/harmony.go

Beacon node:

go build -o bin/beacon cmd/beaconchain/main.go

Wallet:

go build -o bin/wallet cmd/client/wallet/main.go

Tx Generator:

go build -o bin/txgen cmd/client/txgen/main.go

You can also run the script ./script/go_executable_build.sh to build all the executables.

Some of our scripts require bash 4.x support, please install bash 4.x on MacOS X.

Usage

You may build the src/harmony.go locally and run local test.

Running local test

The deploy.sh script creates a local environment of Harmony blockchain devnet based on the configuration file. The configuration file configures number of nodes and their IP/Port. The script starts one local beacon chain node, the blockchain nodes, and run a transactional generator program which generates and sends simulated trnsactions to the local blockchain.

./test/deploy.sh ./test/configs/local_config1.txt

Testing

Make sure you the following command and make sure everything passed before submitting your code.

./test/test_before_submit.sh

Pull Request (PR)

This github document provides some guidance on how to create a pull request in github.

PR requirement

To pursue engineering excellence, we have insisted on the highest stardard on the quality of each PR.

  • For each PR, please run golint, gofmt, to fix the basic issues/warnings.
  • Make sure you understand How to Write a Git Commit Message.
  • Add a [Test] section in every PR detailing on your test process and results. If the test log is too long, please include a link to gist and add the link to the PR.

Typical workflow example

The best practice is to reorder and squash your local commits before the PR submission to create an atomic and self-contained PR. This book chapter provides detailed explanation and guidance on how to rewrite the local git history.

For exampple, a typical workflow is like the following.

# assuming you are working on a fix of bug1, and use a local branch called "fixes_of_bug1".

git clone https://github.com/harmony-one/harmony
cd harmony

# create a local branch to keep track of the origin/master
git branch fixes_of_bug1 origin/master
git checkout fixes_of_bug_1

# make changes, build, test locally, commit changes locally
# don't forget to squash or rearrange your commits using "git rebase -i"
git rebase -i origin/master

# rebase your change on the top of the tree
git pull --rebase

# push your branch and create a PR
git push origin fixes_of_bug_1:pr_fixes_of_bug_1

Development Status

Features Done

  • Basic consensus protocol with O(n) complexity
  • Basic validator server
  • P2p network connection and unicast
  • Account model and support for Solidity
  • Simple wallet program
  • Mock beacon chain with static sharding
  • Information disposal algorithm using erasure encoding (to be integrated)
  • Blockchain explorer with performance report and transaction lookup
  • Transaction generator for loadtesting

Features To Be Implemented

  • Full beacon chain with multiple validators
  • Resharding
  • Staking on beacon chain
  • Fast state synchronization
  • Distributed randomness generation with VRF and VDF
  • Kademlia routing
  • P2p network and gossiping
  • Full protocol of consensus with BLS multi-sig and view-change protocol
  • Integration with WASM
  • Cross-shard transaction