Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/HorizenOfficial/zen
Horizen
https://github.com/HorizenOfficial/zen
Last synced: about 2 months ago
JSON representation
Horizen
- Host: GitHub
- URL: https://github.com/HorizenOfficial/zen
- Owner: HorizenOfficial
- License: other
- Created: 2018-01-16T21:18:28.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2024-09-05T17:52:11.000Z (4 months ago)
- Last Synced: 2024-11-05T14:29:52.029Z (2 months ago)
- Language: C++
- Homepage: https://www.horizen.io
- Size: 105 MB
- Stars: 265
- Watchers: 45
- Forks: 119
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: COPYING
- Code of conduct: code_of_conduct.md
- Security: SECURITY.md
Awesome Lists containing this project
- best-of-crypto - GitHub - 9% open · ⏱️ 03.06.2024): (Privacy Coins)
README
Zend
================
What is Horizen?
----------------
Horizen is an inclusive and scalable platform where everyone is empowered and rewarded for their contributions. Horizen's sidechain platform enables real-world applications mapped onto a public blockchain architecture with the largest node network in the industry. Horizen's Sidechain-SDK provides developers with all the necessary components to deploy their own fully customizable blockchains on Horizen's open sidechain protocol, Zendoo.`zend` - the Zendoo-powered node implementation for Horizen ($ZEN).
----------------
`zend` is the official Horizen mainchain client, fully supporting Horizen's sidechains system.
It implements the Zendoo verifiable Cross-Chain Transfer Protocol (CCTP) that allows the creation of ad-hoc sidechains with independent and customizable business logic.Horizen Sidechains are fully scalable, secure, and decentralized:
----------------
- The Cross-Chain Transfer Protocol (CCTP) enables coin transfers between the sidechains and the mainchain without knowing their internal structure and without additional software to track them. Those transfers are performed using cryptographically authenticated certificates received from the sidechains.
- Certificate authentication and validation are achieved through the innovative use of zk-SNARKs.
Thanks to this technology, the resulting zero-knowledge proofs have a constant and succinct size.
Horizen can verify proofs of arbitrary computations and can remain agnostic of the sidechains' use-cases and rules.
- This technology makes Horizen's sidechain system trustless.You can read more about the Zendoo protocol in our [whitepaper](https://www.horizen.io/assets/files/Horizen-Sidechain-Zendoo-A_zk-SNARK-Verifiable-Cross-Chain-Transfer-Protocol.pdf), and explore a reference sidechain implementation in our [Sidechains-SDK](https://github.com/HorizenOfficial/Sidechains-SDK).
Top features
----------------
INTERACTION
- RPC interface for general access to data and all available functionsSECURITY
- Proof-of-Work, the most secure consensus, ensured by one of the largest node networks in the industry
- Base58 address check, protecting from money getting lost in case of typos
- 51% attack protection
- Replay attack protection
- Sidechains state provability, powered by zk-SNARKs
- TLS end-to-end encryption - Available for Secure and Super nodesSCALABILITY
- Extended RPC interface to create and dispatch sidechain declaration, forward transfers, mainchain backward transfer requests, ceased sidechain withdrawals, and certificates.
- Sidechain declaration with customizable zk-SNARK verification key
- Sidechain epoch management with liveness monitoring and ceasing procedure
- Mainchain backward transfer request support for sidechains, to collect Zen back on a mainchain address
- Agnostic certificate validation via custom zk-SNARK proof verification (powered by [ginger-lib](https://github.com/HorizenOfficial/ginger-lib))
- Secure sidechain validator's key rotation support via custom zk-SNARK proof verification
- Support for variable epoch lengths (enabling non-ceasable sidechains)Compatibility
----------------
`zend` only supports 64-bit little-endian systems, it cannot be compiled on different architectures.Building from source
----------------1. Get dependencies:
1. Ubuntu
```{r, engine='bash'}
sudo apt-get install \
build-essential pkg-config libc6-dev m4 g++-multilib \
autoconf libtool ncurses-dev unzip git python \
zlib1g-dev bsdmainutils automake curl cmake
```
For a detailed list of dependencies, please refer to the [dependencies section](doc/dependencies.md).2. Mac OS
```
xcode-select --install
brew install \
autoconf coreutils automake libtool pkg-config cmake
```3. Cross compilation for Windows target
```{r, engine='bash'}
sudo apt-get install \
build-essential pkg-config libc6-dev m4 g++-multilib \
autoconf libtool ncurses-dev unzip git python \
zlib1g-dev wget bsdmainutils automake mingw-w64 cmake
```* Install for Linux
```{r, engine='bash'}
git clone https://github.com/HorizenOfficial/zen.git
cd zen
# Build
./zcutil/build.sh -j$(nproc)
# Build for platforms without adx, bmi2 CPU flags
./zcutil/build.sh --legacy-cpu -j$(nproc)
# Fetch key
./zcutil/fetch-params.sh
# Run
./src/zend
```* Install for Mac OS (using clang)
```
# Build. Add -jN parameter (where N is the number of cpu cores) to speed up compilation.
./zcutil/build-mac-clang.sh
```* Install for Windows (Cross-Compiled, Building on Windows is not currently supported)
```
sudo update-alternatives --config x86_64-w64-mingw32-g++
Choose the option: /usr/bin/x86_64-w64-mingw32-g++-posix.export HOST=x86_64-w64-mingw32
./zcutil/build.sh -j$(nproc)
```Running Regression Tests
----------------
1. Get dependencies:
1. Ubuntu
```{r, engine='bash'}
sudo apt-get install \
python python-dev python-pip python-setuptools \
python-wheel python-wheel-common python-zmq
pip install --upgrade websocket-client requests
```2. macOS
```{r, engine='bash'}
brew install python
pip install --upgrade pyzmq websocket-client requests
```2. Start test suite
```{r, engine='bash'}
if [[ "$OSTYPE" == "darwin"* ]]; then
TEST_ARGS="btest gtest sec-hard no-dot-so util-test secp256k1 libsnark univalue rpc --rpc-extended --rpc-exclude=rpcbind_test.py"
else
TEST_ARGS="--rpc-extended"
fi
export HOST=$(gcc -dumpmachine)
./zcutil/fetch-params.sh
./qa/zcash/full_test_suite.py ${TEST_ARGS}
```Security Warnings
----------------See important security warnings in [doc/security-warnings.md](doc/security-warnings.md).
**`zend` is experimental and a work in progress.** Use at your own risk.
Need Help?
----------------
Help is available at [Horizen's Discord](https://www.horizen.io/invite/discord) #open-a-ticket channel.Want to Participate in Development?
----------------
- Code review is welcomed!
- Please submit any identified issues [here](https://github.com/HorizenOfficial/zen/issues)
- Enroll in the Horizen Early Adopter Program [HEAP](https://heap.horizen.io/) to take part in new product and feature testingParticipation in the Horizen project is subject to a [Code of Conduct](code_of_conduct.md).
License
----------------For license information see the file [COPYING](COPYING).