简单理解为一个分布式状态机

什么是Tendermint

Tenermint是个能够在多机器上安全一致地复制应用的软件。 安全是指无论多达1/3的机器出现何种类型的故障,Tendermint都可以正常工作。
一致是指每个正确运行的机器都可以获取完全相同的交易日志并计算相同的状态。 在分布式系统中,安全一致地复制至关重要;从货币到选举再到基础设施管理等广泛应用容错方面,它都有着着重要作用。

拜占庭容错(BFT)指的是系统能够容忍机器以任意方式出现故障,包括机器故意危害系统的方式。
拜占庭容错理论已有几十年的历史,但最近由于比特币和以太坊等“区块链技术”的成功,其软件实现才逐渐流行。
区块链技术是在更现代的环境下对BFT的一种改造,重点引入了点对点网络和密码认证等技术。
区块链的名称来源于交易的处理方式,交易被打包在每一个区块中,每一个区块存储前一个区块的哈希值,形成了一个链的结构。 实际上,区块链数据结构优化了BFT设计。

Tendermint包括两个主要技术组件:区块链共识引擎通用应用程序接口
共识引擎,被称作Tendermint Core,保证所有的机器按照相同的顺序记录相同的交易。
应用程序接口,被称为应用程序区块链接口ABCI,实现任意编程语言处理交易的功能。
其他区块链和共识解决方案通常预置内部状态机,比如使用键值存储不常见的脚本语言来完成功能,而Tendermint支持开发者用任意编程语言实现拜占庭容错的状态机复制功能,并且开发环境也非常友好。

Tendermint的目标是易使用、便理解、高性能并适用各种分布式应用场景。

Tendermint 和其他技术对比

Tendermint大体上类似于两类软件。
第一类是非BFT一致性的分布式键值存储系统,包括Zookeeper、etcd和consul。
第二类是“区块链技术”,包括比特币和以太坊等加密货币和Hyperledger Burrow等分布式账本。

Zookeeper、etcd和consul

Zookeeper、etcd和consul都基于经典非拜占庭容错一致性算法,实现了分布式键值存储。
Zookeeper使用了Zookeeper Atomic Broadcast版本的的Paxos共识算法,而etcd和consul使用了更新更简单的Raft共识算法。一个典型的集群包含3-5台机器,并且可以容忍多达1/2台机器的故障,但是只要出现一个拜占庭错误机器,系统就会崩溃。

虽然这些软件都提供了各有特色的键值存储功能,但都关注为分布式系统提供基础服务,如动态配置、服务发现、锁定、领导人选举等。

Tendermint虽然在本质上和以上软件类似,但是具有两点关键不同:

  • 它实现了拜占庭容错。虽然只能够容忍系统1/3节点的故障,但是可以容忍任意类型的,包括黑客和恶意攻击的错误。

  • 它不像键值存储那样只指定一种特定的应用,而是侧重于任意状态机复制。因此从键值存储到加密货币,再到电子投票平台,开发人员可以构建适合他们的任意应用程序逻辑。

Bitcoin, Ethereum, etc

Tendermint诞生于比特币、以太坊等传统加密货币,目标是提供比比特币的PoW算法更高效、更安全的共识算法。在早期,Tendermint内置了一种简单的货币,为了参与共识,用户必须将货币“绑定”到一个保证金中, 如果他们行为不当,保证金可能会被撤销——这就是Tendermint成为PoS算法的原因。

从那时起,Tendermint已经发展成为一个通用的区块链共识引擎,可以承载任意的应用程序状态。 这表示它可以成为其他区块链软件的共识引擎的即插即用替代品。 因此,当前的以太坊代码库,无论是Rust、Go还是Haskell,都可以作为一个ABCI应用程序运行在Tendermint共识引擎之上。
Tendermint 已经实现了以太坊。Tendermint 接下来准备对比特币、ZCash和其他各种确定性应用完成类似的开发实现。

目前,另外一个已实现的基于Tendermint的虚拟货币应用程序是Cosmos 网络。

Tendermint 实现 Ethermint