Richard Liu
b9c627d9b5
|
6 years ago | |
---|---|---|
.github/ISSUE_TEMPLATE | 6 years ago | |
api | 6 years ago | |
cmd | 6 years ago | |
consensus | 6 years ago | |
contracts | 6 years ago | |
core | 6 years ago | |
crypto | 6 years ago | |
drand | 6 years ago | |
internal | 6 years ago | |
node | 6 years ago | |
p2p | 6 years ago | |
scripts | 6 years ago | |
specs | 6 years ago | |
test | 6 years ago | |
.coveralls.yml | 6 years ago | |
.gitignore | 6 years ago | |
.gitmodules | 6 years ago | |
.travis.yml | 6 years ago | |
CONTRIBUTING.md | 6 years ago | |
FLA.md | 6 years ago | |
LICENSE | 6 years ago | |
PULL_REQUEST_TEMPLATE.md | 6 years ago | |
README.md | 6 years ago | |
appspec.yml | 6 years ago | |
go.mod | 6 years ago |
README.md
Harmony
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/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/oneshard1.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