Tendermint 是为 Cosmos 开发的一种基于拜占庭容错(BFT)的 PoS 共识机制。它最初的软件由 Tendermint(公司)开发,起源可以追溯到 2014 年。
Tendermint 由两个核心技术组件组成:区块链共识引擎 Tendermint Core 和通用应用程序界面 ABCI。
Tendermint Core 是 Cosmos 的默认共识引擎。它用来确保相同的交易在去中心化网络中的每台机器上以相同的顺序记录。简单来说,Tendermint Core 能够在多台机器机器上复制信息来保证数据的一致性。在 Tendermint Core 的支持下,Cosmos 网络中每个正确运行的机器都可以获取完全相同的交易日志并计算相同的交易状态。
因此在这种机制下,即使多达三分之一的网络节点出现任意种类的错误,区块链网络也能正常工作。Cosmos 的安全性从而得以保证。同时,Tendermint Core 还具有锁定机制。如果有验证节点成功破坏了网络安全或曾试图这么做,它们就会被 Tendermint 识别并锁定。它可以帮助网络在安全性事件发生后尽快进行责任追究并确认错误发生原因。
另一方面,在性能上,Tendermint Core 也为 Cosmos 带来了不小的优势。Tendermint 共识可以为 Cosmos 提供快速的交易确认速度,实现交易的即时确认性。在它的支持下,Cosmos 的区块终结时间为 1-2 秒,理论上的最高 TPS 可以达到 10,000。
但 Tendermint 的设计并不完美。它的问题在于如果参与形成共识的节点过多,就会降低网络的速度。Cosmos Hub 就对其网络上的验证节点进行了限制。在 Cosmos Hub 中,并非任何人都能成为网络的验证者。只有质押 $ATOM 价值排名前 100 的节点才能成为验证者。这种设计为了保证性能,会在一定程度上牺牲网络的去中心化程度。
除了 Tendermint Core 共识引擎,Tendermint 还包括一个通用的应用程序界面,被称为 Application BlockChain Interface(ABCI)。ABCI 的作用是充当共识引擎和应用程序之间的桥梁。Tendermint BFT 可以通过 ABCI 与应用程序相连。
ABCI 使交易能够以任意编程语言处理。与其他区块链解决方案预打包内置的脚本语言不同,ABCI 允许开发人员使用适合他们的任何编程语言和开发环境。打个比方,ABCI 就像一个翻译器一样。它能够将任意语言翻译成一种通用语言,帮助应用程序与共识引擎进行通话(交易信息传递)。