GithubHelp home page GithubHelp logo

a-petrini / zen Goto Github PK

View Code? Open in Web Editor NEW

This project forked from horizenofficial/zen

0.0 0.0 0.0 44.87 MB

Horizen

Home Page: https://www.horizen.io

License: Other

Shell 1.40% C++ 69.17% Python 17.97% C 6.90% Java 0.29% Assembly 0.27% PowerShell 0.04% CSS 0.01% Makefile 1.51% HTML 0.48% Batchfile 0.01% M4 1.57% Dockerfile 0.09% Sage 0.29% Jinja 0.01%

zen's Introduction

Zen 3.1.0

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 necessary components to deploy their own fully customizable blockchains on Horizen’s open sidechain protocol, Zendoo.

Zend_oo - the Zendoo-powered Sidechain Platform

Zend_oo is the new version of zend allowing the Horizen mainchain to manage and interact with any number of sidechains. This version of zend implements the Zendoo verifiable Cross-Chain Transfer Protocol (CCTP) that allows the creation of ad-hoc sidechains with independently customizable business logic. Additionally, it enables the transfer of coins from the mainchain to sidechains and from sidechains back to the mainchain through SNARK verifiable withdrawal certificates.

Horizen Sidechains are fully scalable and decentralized:

  • The Cross-Chain Transfer Protocol (CCTP) enables coin transferring between sidechains and the mainchain without the need for the mainchain to follow them and to know their internal structure. The coin transfers from sidechains to the mainchain are performed using cryptographically authenticated certificates received from the sidechains.
  • Certificate authentication and validation are achieved through the innovative use of SNARK technology, which enables constant-sized proofs of arbitrary computations, without involving a trusted third party and keeps the mainchain totally agnostic from any sidechain rules.

The main feature of our construction is the high degree of generalization. Sidechains are allowed to use their own rules and data, defining custom SNARKs to let the mainchain authenticate their certificates without any knowledge of the sidechain internals.

You can read more about the Zendoo protocol in our whitepaper, and explore our default sidechain implementation and SDK in our Sidechains-SDK.

New features

  • Sidechain declaration with customizable SNARK verification key
  • Forward transfers from mainchain to sidechain
  • Sidechain backward transfers from sidechain to mainchain by means of withdrawal certificates
  • Sidechain epoch management with liveness monitoring and ceasing procedure
  • Mainchain backward transfer request from sidechain to mainchain
  • Ceased sidechain withdrawals
  • Agnostic withdrawal certificate validation via custom SNARK proof verification (powered by ginger-lib)
  • Extended RPC interface to create and dispatch sidechain declaration, forward transfer transactions, mainchain backward transfer requests, ceased sidechain withdrawal requests and withdrawal certificates.
  • Extensive unit tests and integration tests for verifying sidechain functionality

Building from source

  1. Get dependencies:
    1. Ubuntu
    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
    
    1. Cross compilation for Windows target
    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
    
  • Install for Linux
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)
# Build with AddressIndexing support for block explorers
./zcutil/build.sh --enable-address-indexing -j$(nproc)
# Fetch key
./zcutil/fetch-params.sh
# Run
./src/zend
  • Install for Mac OS (using clang)

Read and follow the README.md at https://github.com/HorizenOfficial/zencash-apple

  • Install for Windows (Cross-Compiled, building on Windows is not supported yet)
sudo update-alternatives --config x86_64-w64-mingw32-g++
(chose: /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
    sudo apt-get install \
    python python-dev python-pip python-setuptools \
    python-wheel python-wheel-common python-zmq
    sudo pip install --upgrade pyblake2 websocket-client
    
    1. MacOS
    brew install python@2
    sudo pip install --upgrade pyblake2 pyzmq websocket-client
    
  2. Start test suite

    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.

Zend_oo is experimental and a work in progress. Use at your own risk.

Need Help?

Help is available at Horizen’s Discord #zendoo channel.

Want to Participate in Development?

  • Code review is welcomed!
  • Please submit any identified issues here
  • Enroll in the Horizen Early Adopter Program HEAP to take part in new product and feature testing

Participation in the Horizen project is subject to a Code of Conduct.

License

For license information see the file COPYING.

zen's People

Contributors

laanwj avatar gavinandresen avatar sipa avatar abi87 avatar alsala avatar str4d avatar cronicc avatar theuni avatar bitcartel avatar non-github-bitcoin avatar ebfull avatar franckdg avatar zkbot avatar luke-jr avatar gmaxwell avatar jonasschnelli avatar daira avatar fanquake avatar thebluematt avatar defuse avatar i-alex avatar cozz avatar petertodd avatar marcool94 avatar pierstab avatar jtimon avatar albertog78 avatar danieledibenedetto avatar paveljanik avatar ageis avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.