Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

tiny-tendermint

A tiny (sub 500 LOC) implementation of the Tendermint consensus algorithm for BFT state machine replication in Go.

Work-in-progress.

  • Understand intuition of protocol. Understand all key concepts.
  • Document key concepts - process, proposal, propose msg, prevote msg, precommit msg, timeouts, height, round, lock change
  • Implement basic model without timeouts.
    • Process thread.
    • Networking between processes.
    • Create proposal, vote proposal, commit proposal.
    • Tests.
  • Implement model with timeouts.
    • Propose timeout.
    • Vote timeout.
    • Commit timeout.

Usage.

go test ./... -count=1 -v -run Test

Readings.

Changes.

  • In Tendermint, a block is proposed, then nodes vote to commit on the block, after the vote passes, the nodes then confirm by sending commit messages. Rather than call these terms "prevote" and "precommit" you can just reframe them as "vote" and "commit" messages, where the property of "vote passed" and "block committed" is a reduction of these messages.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages