The core protocol of harmony
Branch: master
Clone or download
LeoHChen Merge pull request #464 from LeoHChen/walletfix
upload lib for wallet on mac/linux
Latest commit 4fe6e8d Feb 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Ask to add references to the relevant code Jan 21, 2019
api Merge pull request #457 from harmony-ek/go_generate_redux Feb 16, 2019
cmd fix command parameter in wallet Feb 16, 2019
consensus Add RandPreimage in block; Add pRnd into new block Feb 15, 2019
contracts Fixed staking contract and added test Feb 13, 2019
core Merge pull request #458 from harmony-one/rj_branch Feb 18, 2019
crypto Remove trillian dependency in p256 Feb 15, 2019
drand Add real vrf into drand with validator generating vrf and leader veri… Feb 14, 2019
internal use gossip for all consensus messages Feb 14, 2019
node Add RandPreimage in block; Add pRnd into new block Feb 15, 2019
p2p Merge pull request #463 from harmony-ek/fix_stream_leak Feb 16, 2019
scripts upload lib for wallet on mac/linux Feb 16, 2019
specs/p2p update with 2-stage peer discovery process Feb 6, 2019
test Remove testdata Feb 15, 2019
vendor/ remove golang vendor package due to third party usage inconsistency Feb 8, 2019
.coveralls.yml add coveralls Jan 18, 2019
.gitignore introduce libp2p peer discovery to txgen Feb 7, 2019
.gitmodules Remove the extra tests that havev heavy external dependency, we actua… Feb 15, 2019
.travis.yml Install protoc and gencodec Feb 15, 2019 s/gofmt/goimports/ Jan 25, 2019 cla@ → licensing@ Jan 11, 2019
LICENSE Add MIT License Jan 11, 2019 Update Jan 29, 2019 DYLD_LIBRARY_PATH → DYLD_FALLBACK_LIBRARY_PATH Feb 12, 2019
appspec.yml change benchmark to harmony Jan 10, 2019
go.mod add go.mod for go v1.11 Jan 10, 2019


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

Installation Requirements

GMP and OpenSSL

brew install gmp
brew install openssl

Dev Environment Setup

export GOPATH=$HOME/<path_of_your_choice>
export CGO_CFLAGS="-I$GOPATH/src/ -I$GOPATH/src/ -I/usr/local/opt/openssl/include"
export CGO_LDFLAGS="-L$GOPATH/src/ -L/usr/local/opt/openssl/lib"

mkdir -p $HOME/<path_of_your_choice>/src/

cd $HOME/<path_of_your_choice>/src/

git clone

cd mcl && make -j4 && cd ..

git clone

cd bls && make -j4 && cd ..

git clone

cd harmony

go get ./...

git submodule update --init --recursive


Harmony server / main node:

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

Beacon node:

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


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 ./scripts/ to build all the executables.

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


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

Running local test

The 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 transactions to the local blockchain.

./test/ ./test/configs/local_config1.txt


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



Harmony is licensed under the MIT License. See LICENSE file for the terms and conditions.

Also please see our Fiduciary License Agreement if you are contributing to the project. By your submission of your contribution to us, you and we mutually agree to the terms and conditions of the agreement.

Contributing To Harmony

See CONTRIBUTING for details.

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