Skip to content

Latest commit

 

History

History
70 lines (45 loc) · 3.12 KB

README.md

File metadata and controls

70 lines (45 loc) · 3.12 KB

Tendermint

This repo is forked from tendermint. Tendermint Core is Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine - written in any programming language - and securely replicates it on many machines.

For protocol details, see the specification.

Key Features

We implement several key features based on the Tendermint fork:

  1. State Sync. State sync is a way to help newly-joined users sync the latest status of the BNB Chain. It syncs the latest sync-able peer's status so that fullnode user (who wants to catch up with chain as soon as possible with a cost that discards all historical blocks locally) doesn't need sync from block height 0. Refer to BEP18 for more details.
  2. Hot Sync. A new block sync protocol to reduce network and CPU resources for full node. Refer to this PR for more details.
  3. Capacity improvement. Parallelization, dedicated cache, priority lock and many other program skills are applied to improvement the capacity of BNB Beacon Chain.

Security

To report a security vulnerability, see our bug bounty program

For examples of the kinds of bugs we're looking for, see SECURITY.md

Minimum requirements

Requirement Notes
Go version Go1.11.4 or higher

Install

See the install instructions

Quick Start

Contributing

Please abide by the Code of Conduct in all interactions, and the contributing guidelines when submitting code.

To learn more about the structure of the software, watch the Developer Sessions and read some Architectural Decision Records.

Learn more by reading the code and comparing it to the specification.

Resources

Tendermint Core

For details about the blockchain data structures and the p2p protocols, see the Tendermint specification.

For details on using the software, see the documentation which is also hosted at: https://tendermint.com/docs/

Tools

Benchmarking and monitoring is provided by tm-bench and tm-monitor, respectively. Their code is found here and these binaries need to be built seperately. Additional documentation is found here.

Sub-projects

  • Amino, reflection-based proto3, with interfaces
  • IAVL, Merkleized IAVL+ Tree implementation