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.
 
 
 
Minh Doan 885ccf190a add comments and fix imports and add mock generation 6 years ago
.github/ISSUE_TEMPLATE Ask to add references to the relevant code 6 years ago
api add comments and fix imports and add mock generation 6 years ago
cmd Merge pull request #519 from harmony-one/rj_branch 6 years ago
consensus check minimal number of peers before sending pong message 6 years ago
contracts Make the first staking transaction working on the contract 6 years ago
core add resharding logic 6 years ago
crypto Add case for SetMask 6 years ago
drand [cleanup] remove libp2p unicast support 6 years ago
internal Use hard coded account for staking 6 years ago
node add comments and fix imports and add mock generation 6 years ago
p2p Regen mocks 6 years ago
scripts Check the output status of gogenerate.sh 6 years ago
specs/p2p update peerdiscovery.md with 2-stage peer discovery process 6 years ago
test Support multiple newnodes 6 years ago
vendor/github.com remove golang vendor package due to third party usage inconsistency 6 years ago
.coveralls.yml add coveralls 6 years ago
.gitignore ignore stakingkey 6 years ago
.gitmodules Remove the extra tests that havev heavy external dependency, we actually don't need them 6 years ago
.travis.yml Ensure mockgen is installed 6 years ago
CONTRIBUTING.md s/gofmt/goimports/ 6 years ago
FLA.md cla@ → licensing@ 6 years ago
LICENSE Add MIT License 6 years ago
PULL_REQUEST_TEMPLATE.md Update PULL_REQUEST_TEMPLATE.md 6 years ago
README.md add go version requirement 6 years ago
appspec.yml change benchmark to harmony 6 years ago
go.mod set module version 6 years ago
go.sum Revert "Ignore go.sum" 6 years ago

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

The required go version is: go1.11

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

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.

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

  • 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