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 93dade6a72
Merge pull request #1862 from harmony-ek/pubsub_discovery
5 years ago
.github/ISSUE_TEMPLATE Update issue templates (#782) 6 years ago
.hmy [wallet] fix wallet with network type support 5 years ago
accounts Replace ethereum log with zerolog and some ctxerrors 5 years ago
api Fix beacon sync 5 years ago
block Add missing staking related core code; and add some basic rpcs 5 years ago
cmd [staking] Lint 5 years ago
common/denominations Move networkType into internal config 6 years ago
consensus [staking] Fix mistake on QurorumThreshold, change Harmony share to 68 (#1863) 5 years ago
contracts Add collect rewards core transition 5 years ago
core [committee] Enable Staking on localnet at epoch 3 5 years ago
crypto Add uptime stats 5 years ago
drand [committee] Factor out committee membership, provide entry for alternative committee membership (#1818) 5 years ago
gomock_matchers Add gomock matcher utilities 6 years ago
hmy Add uptime stats 5 years ago
hmyclient Merge conflicts 5 years ago
internal Remove temporary artifacts created by mockgen 5 years ago
msgq Use per-group-receiver message queue 5 years ago
node [staking] Fix mistake on QurorumThreshold, change Harmony share to 68 (#1863) 5 years ago
numeric Implementation of EPoS (#1826) 5 years ago
p2p Use topic-based libp2p pubsub interface 5 years ago
scripts Exempt *_mock_for_test.go from style check 5 years ago
shard [staking] Implement Quorum in staked case while taking into account hmy slots (#1855) 5 years ago
specs Factor out quorum logic from consensus, undo prior consolidation of values under core (#1717) 5 years ago
staking [staking] Undo bad merge from master 5 years ago
test [test/deploy] Fix possible dependency missmatch for tests 5 years ago
tools Add github.com/golangci/golangci-lint/cmd/golangci-lint@v1.15.0 as a build tool 6 years ago
.bnkey [bootnode] add a default bootnode key locally 6 years ago
.coveralls.yml add coveralls 6 years ago
.gitignore [node] every node uses persistent DHT storage 5 years ago
.gitmodules Unvendor now that module mode is on 6 years ago
.travis.yml Peg s3 to Go 1.12 5 years ago
CONTRIBUTING.md s/gofmt/goimports/ 6 years ago
FLA.md cla@ → licensing@ 6 years ago
LICENSE Add MIT License 6 years ago
Makefile Merge branch 'master' of github.com:harmony-one/harmony into robust_state_sync 5 years ago
PULL_REQUEST_TEMPLATE.md Update PULL_REQUEST_TEMPLATE.md 6 years ago
README.md run scripts/install_build_tools.sh to make sure build tools are of correct versions 5 years ago
appspec.yml change benchmark to harmony 6 years ago
go.mod Require github.com/libp2p/go-libp2p-pubsub v0.2.3 5 years ago

README.md

Harmony

Build Status gopherbadger-tag-do-not-edit Discord Coverage Status Go Report Card

Installation Requirements

GMP and OpenSSL

brew install gmp
brew install openssl

Dev Environment Setup

The required go version is: go1.12

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/mcl.git
git clone git@github.com:harmony-one/bls.git
git clone git@github.com:harmony-one/harmony.git

cd harmony

make

Note: make sure to run scripts/install_build_tools.shto make sure build tools are of correct versions.

Build

If you want to bypass the Makefile:

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
export GO111MODULE=on

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

Build all executables

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

Build individual executables

Harmony server / main node:

./scripts/go_executable_build.sh harmony

Wallet:

./scripts/go_executable_build.sh wallet

Tx Generator:

./scripts/go_executable_build.sh txgen

Usage

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

Running local test

The debug.sh script calls test/deploy.sh script to create 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 2 shards and 7 nodes in each shard.

./test/debug.sh

Test local blockchain

source scripts/setup_bls_build_flags.sh
./bin/wallet list
./bin/wallet -p local balances

Terminate the local blockchain

./test/kill_nodes.sh

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.

Harmony includes third-party open source code. In general, a source subtree with a LICENSE or COPYRIGHT file is from a third party, and our modifications thereto are licensed under the same third-party open source license.

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

  • Fully sharded network with beacon chain and shard chains
  • Cuckoo-rule based resharding
  • Staking on beacon chain
  • Distributed randomness generation with VRF and VDF (Proof-of-Concept VDF)
  • Sharded P2P network and P2P gossiping
  • FBFT (Fast Byzantine Fault Tolerance) Consensus with BLS multi-signature
  • Account model and support for Solidity
  • Simple wallet program
  • 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

  • Secure VDF
  • Consensus view-change protocol
  • Cross-shard transaction

Features Planned after Mainnet

  • Integration with WASM
  • Fast state synchronization
  • Kademlia routing