一、什么是Tendermint
Tendermint 是支持拜占庭容错的区块链引擎,包含区块链共识引擎(Tendermint Code)和通用应用程序接口(Tendermint Application BlockChain Interface, 也称作为 Tendermint ABCI).
基于Tendermint 我们可以很方便的进行公链和联盟链的开发。
以广为人知的加密货币比特币为例。 比特币是一个加密货币区块链,每个节点都维护一个经过完全验证的未支出交易输出(UTXO)数据库。 如果有人想在ABCI上创建一个类似比特币的系统,Tendermint Core将会实现:
- 在节点之间共享区块和交易
- 建立交易标准/不可更改的顺序(即区块链)
应用程序将会实现
- 维护UTXO数据库
- 验证交易签名
- 防止使用未产生的交易
- 允许客户端查询UTXO数据库
Tendermint通过在应用程序进程和共识进程之间提供非常简单的API(即ABCI)来分解区块链设计。
二、Tendermint 共识
Tendermint 共识是通过tendermint Code 进行的,是异步进行且支持拜占庭容错的。
共识的产生顺序
2/3 prevote 通过 -> 2/3 precommit 通过-> new block
共识产生失败的原因:
- 当前的区块提交者可能离线
- 网络可能拥堵。
三、Tendermint 技术原理图
四、Tendermint ABCI APP
An ABCI application must provide two things:
a socket server
a handler for ABCI messages
Tendermint RPC API
https://docs.tendermint.com/master/rpc/#/
五、Farbric 简介
随着比特币、以太坊以及其他一些衍生技术的普及,人们对将区块链、分布式账本和分布式应用平台的底层技术应用于更具创新性的企业用例的兴趣也随之增长。然而,许多企业用例,使用无许可区块链技术(目前)无法提供的足够的性能。
对于企业使用,我们需要考虑以下要求:
- 参与者必须是被识别的/能够被识别的
- 需要企业许可才能接入网络
- 足够高的交易吞吐量性能
- 足够低的交易确认时延
- 与商业交易有关交易和数据的隐私和保密
虽然许多早期的区块链平台目前正有企业使用,但Hyperledger结构从一开始就设计用于企业使用。以下各节描述了Hyperledger Fabric(Fabric)如何与其他区块链平台区分开来,并描述了一些决定设计当今fabric架构的动机。
Fabric具有高度模块化和可配置的架构,能够为银行、金融、保险、医疗保健、人力资源、供应链甚至数字音乐交付等广泛的行业用例提供创新、多功能性和优化。
Fabric平台是需要许可的,这意味着,与没有公共许可的网络不同,参与者彼此都是已知的,而不是匿名的、彼此完全不信任的。这意味着,虽然参与者可能无法完全信任彼此(例如,他们可能是同一行业的竞争对手),但网络可以在基于参与者之间存在信任的治理模式下运行,例如处理争议的法律协议或框架。
- 解决的问题:在部分信任的前提下,如何解决目前企业中的问题。
5.1 Hyerledger Fabric 1.X 逻辑架构
5.2 Hyperledger Fabric 网络组成
5.3 Fabric 交易过程
5.4 Fabric 多链与多通道
Fabric 中的链(chain)包含了链码(chaincode)、账本(ledger)、通道(channel)的逻辑结构,它将参与方(organization)、交易(transaction)进行隔离,满足了不同业务场景不同的人访问不同数据的基本要求。通常我们说的多链在运维层次上也就是多通道。一个 peer 节点可以接入多条通道,从而加入到多条链,参与到不同的业务中。
5.5 Fabric 中的链码
智能合约在 Fabric 中称为“链码”(Chaincode) •
- 链码会对 Fabric 应用程序发送的交易做出响应,执行代码逻辑,与账本进行交互 。
- 链码会创建/修改/删除一些状态(state)并记录入账本中
- 链码在 Fabric 节点上的隔离沙盒(目前为 Docker 容器)中执行,通过 gRPC 协议与节 点进行交互。必要的交互包括调用链码、读写账本、返回响应结果等。
- Fabric 支持多种计算机语言实现的链码,包括 Golang、JavaScript、Java 等
- 每个链码都需要实现的接口:
5.6 Fabric 安全之权限和隐私
六、Tendermint 与Fabric 对比
分类 | Fabric | Tendermint |
---|---|---|
定位 | 在部分信任下,解决企业难题。天生针对联盟链。 | 区块链引擎,可以进行各种场景下开发 |
身份验证 | 有专门的CA 节点进行身份验证 | 无身份验证功能,需自身实现。 |
网络组成 | CA、Peer(Endorser)、Peer(Comitter) 、Order、App/SDK | Tendermint Core、Tendermint ABCI、APP |
交易顺序 | APP -> CA -> Peer(Endorser) -> ORDER -> Peer(Comitter) | BeginBlock -> DeliverTx -> EndBlock -> Commit |
有疑问加站长微信联系(非本文作者)