Tendermint 大体上与两类软件很类似。第一类包含了分布式的键值存储,比如 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 机器发生任意形式的故障 -- 包括黑客和恶意攻击。
它并不像键值存储一样针对某一指定类型的应用。相反,它关注与任意的状态机复制,因此开发者可以量身打造适合自己的应用逻辑,从键值存储到加密货币到电子投票平台,甚至更多的应用都可适用。
以上内容取自于 consul.io 和 Hashicorp sites.
Bitcoin, Ethereum, etc.
在比特币和以太坊这样的传统加密货币下出现了 Tendermint,它的目的在于提供一个比比特币的工作量证明更加有效和安全的共识算法。在早期,Tendermint 内置了简单的货币来参与共识,用户必须向一个安全账户中“绑定”一定数量的货币,如果他们表现不端,这些钱就会被收回 -- 这一点使得 Tendermint 成为一个 POS 算法。
自那时起,Tendermint 已经进化为一个能够承载任意应用状态的通用区块链共识引擎。这意味着它可以成为其他区块链软件共识引擎的一个即插即用的替代品。所以基于当前的以太坊代码库,无论是以 Rust,Go,Haskell,任何人都可以使用 Tendermint 共识运行一个 ABCI 应用。实际上,我们已经完成了这一点(https://github.com/tendermint/ethermint)。此外,我们也计划为 Bitcoin,ZCash,和其他确定性的应用完成同样的工作。另一个基于 Tendermint 构建的加密货币应用是 Cosmos。
Fabric, Burrow
Fabric 采用了与 Tendermint 类似的方法,但是更关注于如何管理状态,并且要求所有的应用行为能够在多个 docker 容器,它们叫做 “chaincode” 的模块中运行。它使用了来自 IBM (augmented to handle potentially non-deterministic chaincode) 的 PBFT 实现。通过扩展 Tendermint 来处理未来工作存在的不确定性,在 Tendermint 中以一个 ABCI 应用实现这个基于 docker 的行为是完全有可能的。Burrow 是一个以太坊虚拟机和以太坊交易机制的实现,同时附带有名字注册,许可权和天然合约,可替代区块链 API等额外特性。它使用 Tendermint 作为它的共识引擎,提供了一个特殊的应用状态。
网友评论