Skip to content

liamzebedee/tiny-tendermint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

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

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages