dBFT 2.0 consensus for Tutus blockchain
Go to file
Admin 0f8973ec33 Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
.github Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
docs Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
formal-models Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
internal Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
timer Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
.gitignore Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
CHANGELOG.md Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
LICENSE.md Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
README.md Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
block.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
change_view.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
change_view_reason.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
change_view_reason_string.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
check.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
commit.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
config.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
consensus_message.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
consensus_message_type.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
consensus_payload.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
context.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
dbft.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
dbft_test.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
go.mod Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
go.sum Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
helpers.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
helpers_test.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
identity.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
pre_block.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
pre_commit.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
prepare_request.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
prepare_response.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
recovery_message.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
recovery_request.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
rtt.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
send.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
timer.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
transaction.go Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00

README.md

Tutus Consensus

Go implementation of the dBFT 2.0 (delegated Byzantine Fault Tolerant) consensus algorithm for the Tutus blockchain.

Overview

This library provides the core consensus mechanism for Tutus blockchain nodes, enabling deterministic finality with 1-second block times.

Features

  • Immediate Finality - No forks, no rollbacks
  • Byzantine Fault Tolerant - Tolerates up to f = (n-1)/3 faulty nodes
  • Configurable Validators - Support for dynamic validator sets
  • Formal Verification - TLA+ specifications in formal-models/

Installation

import "github.com/tutus-one/tutus-consensus"

Design

  1. Interface-Driven - Cryptography, hashing, and block types are provided via interfaces
  2. Block & Transaction Abstractions - Located in block.go and transaction.go
  3. Timer Abstraction - timer package provides production-ready timer implementation
  4. Callback Architecture - Event-driven design for integration flexibility

Usage

Implement your event loop and call the provided callbacks:

  • Start() - Initialize consensus
  • Reset() - Reinitialize for new height
  • OnTransaction() - Process proposed transactions
  • OnReceive() - Handle incoming payloads
  • OnTimer() - Handle timer events

See internal/simulation/main.go for a complete 6-node example.

Documentation

License

MIT License - see LICENSE.md


Part of the Tutus blockchain infrastructure.