zigbee-alliance / distributed-compliance-ledger

DCL is a public permissioned ledger framework for certification of device models. The ledger is based on Cosmos SDK and Tendermint.
Apache License 2.0
89 stars 44 forks source link
blockchain cosmos-sdk distributed-ledger ledger matter tendermint zigbee

Distributed Compliance Ledger

License Unit Tests

If you are interested in how to build and run the project locally, please look at README-DEV

Please note, that the only officially supported platform now is Linux. It's recommended to develop and deploy the App on Ubuntu 18.04 or Ubuntu 20.04.

Overview

DC Ledger is a public permissioned Ledger which can be used for two main use cases:

More information about use cases can be found in DC Ledger Overview and Use Case Diagrams.

DC Ledger is based on CometBFT and Cosmos SDK.

DC Ledger is a public permissioned ledger in the following sense:

In order to send write transactions to the ledger you need:

Main Components

Pool of Nodes

Node Types

See

Clients

For interactions with the pool of nodes (sending write and read requests).

Every client must be connected to a Node (either Observer or Validator).

If there is no trusted node for connection, a Light Client Proxy can be used. A Light Client Proxy can be connected to multiple nodes and will verify the state proofs for every single value query request.

Please note, that multi-value queries don't have state proofs support and should be sent to trusted nodes only.

Please make sure that TLS is enabled in gRPC, REST or Light Client Proxy for secure communication with a Node.

How To: Node Operators

Add an Observer node to existing network

See Running Node. There are two options to add an Observer nodes:

Please take into account running-node-in-existing-network.md.

Add a Validator node to existing network

A recommended way for deployment and client connection: diagram, diagram-detailed and diagram-aws.

See Running Node for possible patterns and instructions.

Please take into account running-node-in-existing-network.md.

Upgrade all nodes in a pool to a new version of DCL application

DCL application can be simultaneously updated on all nodes in the pool without breaking consensus. See Pool Upgrade and Pool Upgrade How To for details.

Run a local pool of nodes in Docker

This is for development purposes only.

See Run local pool section in README-DEV.md.

How To: Users

CLI

Light Client Proxy

Should be used if there are no trusted Observer or Validator nodes to connect.

It can be a proxy for CLI or direct requests from code done via CometBFT RPC.

Please note, that CLI can use a Light Client proxy only for single-value query requests. A Full Node (Validator or Observer) should be used for multi-value query requests and write requests.

Please note, that multi-value queries don't have state proofs support and should be sent to trusted node only.

See Run Light Client Proxy for details how to run it.

REST

gRPC

CometBFT RPC and Light Client

Instructions

After the CLI or REST API is configured and Account with an appropriate role is created, the following instructions from how-to.md can be used for every role (see Use Case Diagrams):

Useful Links