3 ms·
A consensus algorithm is one that ensures that multiple independent actors come to agreement about anything. In a blockchain, multiple independent miners or va
by jaekwon 11y ago
A consensus algorithm is one that ensures that multiple independent actors come to agreement about anything. In a blockchain, multiple independent miners or validators need to come to agreement about which blocks have been committed.
A fault-tolerant consensus algorithm is a consensus algorithm that can tolerate failure of any nodes (e.g. miners or validators). By failure, I'm referring to fail-stop failures, where a miner or validator crashes or goes offline. The key metric for fault-tolerant consensus algorithms is the threshold for how many failures the system can tolerate. For example, Raft is a fault-tolerant consensus algorithm can tolerate up to 49.99% of node failures.
A Byzantine fault-tolerant consensus algorithm is a fault-tolerant consensus algorithm that can tolerate not just fail-stop failures, but arbitrary failures. For example, one or more nodes that get hacked by a malicious hacker might be coordinated to subvert consensus from within. Bitcoin is exciting because it can tolerate such attacks from within (e.g. any miner) to a significant degree. Tendermint is similar, except it doesn't require significant energy expenditure for its security.
Proof-of-Stake was a family of early consensus algorithms from cryptocurrency projects that don't use PoW mining. A lot of them are terrible and suffered from the "nothing at stake" problem. For a while, the Tendermint project had been using collateral bonds to ensure that there is actually "something at stake". But Tendermit is more general than that. You can have stake with collateral posted on-or-off-chain, or, you don't need to use collateral at all. It all depends on what you're trying to build.
If you want a standalone cryptocurrency blockchain, you'll want in-chain collateral with bond deposits. But different blockchains have different requirements, so posting collateral to put something at stake may not be one of them.
Personally I think we should just avoid the term "proof of stake".
See ErisIndustries using Tendermint for ErisDB: https://github.com/eris-ltd/eris-db/blob/master/erisdb/serve.go https://github.com/eris-ltd/eris-db/blob/master/erisdb/serve...
Actually, we wrote the Ethereum virtual machine implementation that they're using. We're moving away from the EVM though, because the TMSP architecture allows for easier native-application development.
http://github.com/tendermint/tmsp http://github.com/tendermint/tmsp
If you want proof on the security of the Tendermint consensus algorithm, it's in the Github wiki.
- fsiefken 11y agoIs that a reference to the Illuminatus trilogy in the Eris name and Tendermint logo?