dBFT 2.0 consensus for Tutus blockchain
Go to file
Tutus Development 2dba25e993 Fix internal imports: github.com -> git.marketally.com 2025-12-27 15:53:09 +00:00
.github Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
docs Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
formal-models Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
internal Fix internal imports: github.com -> git.marketally.com 2025-12-27 15:53:09 +00:00
timer Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
.gitignore Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
CHANGELOG.md Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
LICENSE.md Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
README.md Initial commit - Tutus Consensus (dBFT 2.0) 2025-12-21 06:00:02 -05:00
block.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
change_view.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
change_view_reason.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
change_view_reason_string.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
check.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
commit.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
config.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
consensus_message.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
consensus_message_type.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
consensus_payload.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
context.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
dbft.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
dbft_test.go Fix internal imports: github.com -> git.marketally.com 2025-12-27 15:53:09 +00:00
go.mod Migrate module path to git.marketally.com 2025-12-27 09:55:42 -05:00
go.sum Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
helpers.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
helpers_test.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
identity.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
pre_block.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
pre_commit.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
prepare_request.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
prepare_response.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
recovery_message.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
recovery_request.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
rtt.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
send.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
timer.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00:00
transaction.go Rebrand to Tutus - update license, workflows, and dependencies 2025-12-27 15:45:22 +00: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.