Sidechains are an innovation devised to enable blockchain scalability and extensibility by creating parallel platform and application layers that are bound to the mainchain without imposing a significant burden. Each sidechain implements the desired features and custom business logic, rooted in a protocol that offers a way to transfer coins from and to the original mainchain and each sidechain.
Zendoo is a unique sidechain and scaling solution developed by Horizen. The Zendoo sidechain SDK is a framework that supports the creation of sidechains and their custom business logic, with the Horizen public blockchain as the mainchain. A detailed description of the concept, the protocol, and details about mainchain/sidechain interaction can be found in the Zendoo Whitepaper.
Beta Features
- The Cross-Chain Transfer Protocol (CCTP) implementation to support sidechain declaration, forward transfers, backward transfer requests, and withdrawal certificates
- Basic zk-SNARK threshold signature verification circuit to authenticate withdrawal certificates See zendoo-sc-cryptolib
- Full implementation of the Latus Proof-of-Stake consensus protocol
- Built-in transactions enabling transfers of coins within the sidechain
- HTTP API for basic node operations
- Extensible transactions and boxes allowing the introduction of custom logic and data within the sidechain
- Extensible node API interface
- Command-line tool to interact with the sidechain node
- Sidechain Bootstrapping Tool to create and configure a new sidechain network
- Graphical Wallet allowing easy sidechain creations, forward transfers to sidechain, list of existing sidechains and more: Sphere by Horizen.
Supported platforms
The Zendoo Sidechain SDK is available and tested on Linux and Windows (64bit).
For more details see zendoo-sc-cryptolib
Requirements
- Java 8 or newer (Java 11 recommended)
- Scala 2.12.10+
- Python 2.7
- Maven
Interaction
Each node has an API server bound to the address:port
specified in a configuration file. The node also starts the Swagger server.
There are two ways to interact with the node:
- Swagger web interface. Open the path to the API server in your browser. By default, it's
localhost:9085
. - Use any HTTP client that supports POST requests. For example, curl or Postman.
Project Structure
The project has a Maven module structure and consists of 4 modules:
- SDK - The core of the sidechain SDK
- ScBootstrappingTool - A tool that supports the creation of a sidechain configuration file that allows the synchronization with the mainchain network
- Simple App - An example application without any specific custom logic that runs a node. The node can be connected to the mainchain network or isolated from it
- Q/A - Sidechain Test Framework for sidechain testing via RPC/REST commands
Examples
You can find an example of a sidechain implementation without any custom business logic here: Simple App. A detailed description of how to set up and run a sidechain node with a connection to the mainchain can be found here.