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.
 
 
 
Rongjian Lan 157bfaa229
Merge pull request #988 from rlan35/rj_fork
5 years ago
.github/ISSUE_TEMPLATE Update issue templates (#782) 6 years ago
.hmy [wallet] use dns name for rpc servers 6 years ago
accounts Remove bls address util and sha256 hash 6 years ago
api merge conflict 5 years ago
cmd Log errors, mostly at warn (or fatal for UT) level 5 years ago
common/denominations changing smaller units of ONE 6 years ago
consensus merge conflict 5 years ago
contracts Integrate swapped bls into core protocol 5 years ago
core Remove Difficulty and Nonce from block header 5 years ago
crypto fixed goimports 6 years ago
drand Remove use of sha3-256 6 years ago
gomock_matchers Add gomock matcher utilities 6 years ago
hmy update comments 6 years ago
internal merge conflict 5 years ago
node Integrate swapped bls into core protocol 5 years ago
p2p more rpc APIs. (#863) 6 years ago
scripts Update to use bls384_256 curve for BLS12-381 5 years ago
specs Create nat-hole-punching-spike.md 6 years ago
test add more objects to watch 6 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 don't ignore keystore 6 years ago
.gitmodules Unvendor now that module mode is on 6 years ago
.travis.yml update travis to compile SWAPPED BLS 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
PULL_REQUEST_TEMPLATE.md Update PULL_REQUEST_TEMPLATE.md 6 years ago
README.md update core code to use swapped BLS sig 5 years ago
appspec.yml change benchmark to harmony 6 years ago
go.mod update core code to use swapped BLS sig 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>
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 BLS_SWAP_G=1 -j4 && cd ..

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

cd harmony

export GO111MODULE=on

./scripts/go_executable_build.sh

Build

Note : Some of our scripts require bash 4.x support, please install bash 4.x on MacOS X. Make sure you set export GO111MODULE=on.

Build all executables

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

Build individual executables

Initialize BLS

source scripts/setup_bls_build_flags.sh

Harmony server / main node:

go build -o bin/harmony cmd/harmony/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

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/beaconchain40.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

  • 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