Skip to content

chainpoint/chainpoint-start

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 

Repository files navigation

This repo provides an overview of Chainpoint and links to additional resources.

Chainpoint Overview

Chainpoint is a protocol for anchoring data to Bitcoin to generate a timestamp proof.

The Chainpoint Network is a globally distributed network of nodes. Clients submit hashes to Gateways, which aggregate these hashes into a Merkle tree. Cores periodically publish the root of this tree in a Bitcoin transaction. The final Chainpoint Proof contains a series of operations that cryptographically link data to the Bitcoin blockchain.

Chainpoint Network

Draft Chainpoint Architecture Diagram

The Chainpoint Network is composed of a hierarchy of aggregators that coordinate to create Chainpoint Proofs. Here’s an overview of the process:

  1. Clients submit hashes to Gateways.
  2. Gateways aggregate hashes in a Merkle tree, and send a Merkle root to one or more Cores.
  3. Cores perform an additional round of aggregation, then write Merkle roots in transactions on a Tendermint-based blockchain called the Calendar.
  4. Every hour, a single Core is elected to anchor the state of the Calendar to Bitcoin, monitor the blockchain for six confirmations, and write the results back to the Calendar.
  5. Gateways and Clients use the new data from the Calendar to construct final Chainpoint Proofs.

Due to the characteristics of Bitcoin, this asynchronous process takes approximately 90 minutes.

Clients

A javascript client to submit hashes to Gateways, retrieve final Chainpoint Proofs, and verify proofs.

A Command Line Interface (CLI) for creating and verifying Chainpoint proofs.

Gateways

Gateways receive hashes from Clients, aggregate hashes in a merkle tree, and periodically send a merkle root to one or more Cores. Each Gateway has an integrated Lightning Node running LND. Gateways use Lighting to pay Cores an Anchor Fee for submitting a merkle root.

Core

Each Core is a member of a distributed network that uses Tendermint to reach consensus. Cores aggregate hashes received from Gateways, maintain the Chainpoint Calendar, and periodically anchor data to the Bitcoin blockchain. Each Core has an integrated Lightning Node running LND. Cores receive Anchor Fee payments from Gateways via Lightning. The default Anchor Fee is 2 satoshis. Core Operators can set their Anchor Fee to adapt to changing market conditions.

To join the network, Cores must open Lightning channels with 2/3rds of the existing Cores. Each channel must have a minimum capacity of 1,000,000 satoshis. This provides a measure of Sybil resistance and helps ensure Cores have the liquidity to receive Lightning payments from Gateways. As more Cores join the network, each Core anchors less frequently. This reduces the burden of paying Bitcoin transaction fees.

Components

The components of the Chainpoint Network and their dependencies are below.

Chainpoint Core
| -- Tendermint Core
| -- Lightning Network Daemon
| -- lightning-go
| -- merkletools-go
| -- leader-election

Chainpoint Gateway
| -- Lightning Network Daemon
| -- lnrpc-node-client
| -- merkle-tools
| -- chainpoint-parse
|    | -- chainpoint-binary
|    | -- chainpoint-proof-json-schema

Chainpoint CLI
| -- chainpoint-js
|    | -- chainpoint-parse
|    |    | -- chainpoint-binary
|    |    | -- chainpoint-proof-json-schema

Versions

Stable releases will be tagged in all relevant repos listed in the Components section of this Readme. The master branch for these repositories is considered stable.

Legacy Software

For the legacy network using the Tierion Network Token, please see the TNT-Legacy repositories.

Important Links

© 2020 Tierion. All Rights Reserved.

About

Start here to learn about the Chainpoint Network.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published