awesome-code-reading icon indicating copy to clipboard operation
awesome-code-reading copied to clipboard

Tendermint

Open lucasleecr opened this issue 7 years ago • 0 comments

Link to the codebase

https://github.com/tendermint/tendermint

Which release/version did you read?

0.12.1 (https://github.com/tendermint/tendermint/releases/tag/v0.12.1)

Why it is a good project to read?

  • A full blockchain implementation in Go
  • Generic/stand-alone blockchain and consensus engine. Can be used to build custom blockchain applications through the abci interface (also part of the tendermint project).

Starting point

  • Tendermint core cli (https://github.com/tendermint/tendermint/blob/v0.12.1/cmd/tendermint/main.go)

Reading order

  • Tendermint core cli
  • Abci cli
  • P2P network
  • Transaction, blockchain, consensus

Interesting parts

  • Blockchain and consensus
  • Abci interface

Any parts should be skipped?

  • Non core blockchain stuff.

Any other tips?

  • Read the documentation first to learn how the cli works.
  • Setup local tendermint core instances. Useful for setting debugger when get stuck.
  • Be prepared to invest a lot of time. It's a large project with many dependencies in separate repos. Focus on tendermint core and abci.

Links and resources

  • Architecture diagram https://github.com/devcorn/hackatom/blob/master/tminfo.pdf
  • Documentation https://tendermint.readthedocs.io/projects/tools/en/v0.12.1/
  • A work-in-progress guide

Contributor

@lucasleecr

lucasleecr avatar Oct 01 '18 20:10 lucasleecr