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
Permalink
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 peerdiscovery.md with 2-stage peer discovery process Feb 6, 2019
test Remove testdata Feb 15, 2019
vendor/github.com 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
CONTRIBUTING.md s/gofmt/goimports/ Jan 25, 2019
FLA.md cla@ → licensing@ Jan 11, 2019
LICENSE Add MIT License Jan 11, 2019
PULL_REQUEST_TEMPLATE.md Update PULL_REQUEST_TEMPLATE.md Jan 29, 2019
README.md 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

README.md

Harmony

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/github.com/harmony-one/bls/include -I$GOPATH/src/github.com/harmony-one/mcl/include -I/usr/local/opt/openssl/include"
export CGO_LDFLAGS="-L$GOPATH/src/github.com/harmony-one/bls/lib -L/usr/local/opt/openssl/lib"
export LD_LIBRARY_PATH=$GOPATH/src/github.com/harmony-one/bls/lib:$GOPATH/src/github.com/harmony-one/mcl/lib:/usr/local/opt/openssl/lib
export LIBRARY_PATH=$LD_LIBRARY_PATH
export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH

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/mcl.git

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

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

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

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

cd harmony

go get ./...

git submodule update --init --recursive

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

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

Testing

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

./test/test_before_submit.sh

License

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