GMP and OpenSSL
brew install gmp
brew install openssl
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 [email protected]:harmony-one/mcl.git
cd mcl && make -j4 && cd ..
git clone [email protected]:harmony-one/bls.git
cd bls && make BLS_SWAP_G=1 -j4 && cd ..
git clone [email protected]:harmony-one/harmony.git
cd harmony
export GO111MODULE=on
./scripts/go_executable_build.sh
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
.
You can run the script ./scripts/go_executable_build.sh
to build all the 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
You may build the src/harmony.go locally and run 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
source scripts/setup_bls_build_flags.sh
./bin/wallet list
./bin/wallet -p local balances
./test/kill_nodes.sh
Make sure you use the following command and make sure everything passed before submitting your code.
./test/test_before_submit.sh
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.
See CONTRIBUTING
for details.
- 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
- Secure VDF
- Consensus view-change protocol
- Cross-shard transaction
- Integration with WASM
- Fast state synchronization
- Kademlia routing