Closed junha1 closed 2 years ago
⇒ Tendermint supports ‘evidence’ for slashing. we can choose whether slash or not.
Instant (one-block) finalization.
⇒ Tendermint supports it. https://tendermint.com/core/
On-demand block production. (No empty blocks)
There exists an option for on-demand block production.
By setting ‘create_empty_block=false’ in default configuration file created by tendermint_init, we can meet On-demand block production. https://docs.tendermint.com/master/nodes/configuration.html
Consensus-level yes-or-no choice (This becomes trivial for an asynchronous consensus, as voting for 'reject' equals to the case in the asynchrony, where a node pretends that he's missing the block proposal (which, in fact, he dislikes) because of the network asynchrony.)
⇒ O
Fair chances of block-proposing right are NOT required. (stable leader is OK, and actually desired)
⇒ Tendermint uses weighted round-robin for proposal sequence. But it does not mean stable leader. following links are explanation for round-robin system for Tendermint.
tendermint docs: https://docs.tendermint.com/master/spec/consensus/proposer-selection.html#r2-fairness
BFT threshold 1/3 is allowed to become smaller.
⇒ O
Synchrony assumptions is also OK to take.
Tendermint assume partial synchrony of the network.
There MUST be a support for the light client verification. (i.e., it must be based on cryptography, not some live observation protocol)
⇒ Tendermint supports light client verification. it is based on cryptography using Bisection algorithm and cross check.(verified using merkle root)
Sequential Verification → Bisection Algorithm(Skipping Verification) + cross checks
Message, Channel을 사용
proposal이나, vote를 하게 될 경우, 그에 대한 parameter를 protobuf를 사용하여 변환한다음 Message로 소통. proposal, signedproposal, Vote…etc 모두 Message형식으로 바꿈
그리고 각각의 따로 채널을 두어서 메세지를 구분한다.
GRCP를 사용하여 p2p network를 사용하는 것 같은데, 자세하게는 알지 못한다.
libp2p?
Concluded that it's too complicated, costly to understand, and not so applicable for our case.
Link
As Tendermint is the most likely consensus to adopt, we have to research about the existing implementation of it. We could either directly use it, or just take it as a reference for our original implementation.
The followings are what we have to research:
tendermint-rs
is capable of them.tendermint-rs
abstracted (or embed) the network layer, and should be aware of how it differs from our abstraction of networking.