Tendermint 是一个易于理解,大部分操作为异步的 BFT 共识协议。下图是一个简单的状态机,它展示了协议遵循的规则: ? Tendermint 协议中的参与者叫着 “验证人”(validator)。他们轮流对交易区块进行提议,并对这些区块进行投票。区块会被提交到链上,每一个块占据一个“高度”(height)。 Tendermint 允许他们证实一个验证人应该被跳过。在进行下一轮的投票前,验证人会等待一小段时间从提议者那里接收一个完整的提议块。 Tendermint 能够简化的一个原因就是它使用了同样的机制来提交一个块和跳过直接进入下一轮。 基于不到 1/3 的验证人是拜占庭节点的前提,Tendermint 保证了永远都不会违背其安全性 -- 也就是说,验证人永远不会在同一高度提交冲突块。
下面都继承p2p/base_reactor interface Reactor, 调用自己的OnStart方法
所谓安全,指的是即使有多达 1/3 的机器出现任意故障的情况下, Tendermint 仍然能够正常工作。所谓一致,指的是每一个正常工作的机器都会有着同样的交易日志,计算相同的状态。 Tendermint 包含了两个主要的技术组件:一个区块链共识引擎和一个通用的应用程序接口。共识引擎,叫做 Tendermint Core,保证了每一台机器以相同的顺序记录同一笔交易。 与其他预先打包内置状态机(比如键值存储或者一个奇怪的脚本语言)的区块链和共识方案不同,开发者可以使用 Tendermint 实现应用的 BFT 状态机复制,而这些应用可以用任何语言编写,而且开发环境对开发者也十分适合 Tendermint 的设计原则是易使用,易理解,高性能,对于各种分布式应用都十分有用。 本文译自:What is Tendermint?
Tendermint共识算法技术实现1. Tendermint共识算法tendermint共识算法是拜占庭容错算法,也是最多容忍不超过1/3的恶意节点。 共识流程tendermint共识流程可以通过下面这张经典的图片来描述:图片下面我们根据这张图片来分析tendermint的共识流程:NewHeight阶段NewHeight阶段属于特殊阶段,是共识的开始阶段 tendermint根据Round-robin轮询规则选取主节点。 3. tendermint的安全性和活性安全性:tendermint由于采取了lock机制,假定有最多小于总结点 1/3 的拜占庭节点。 不同点:Tendermint和PBFT最大的不同点就是Tendermint没有PBFT的View Change阶段。
Peer Exchange Reactor (PEX)确保与好的peers进行连接和通信
在比特币和以太坊这样的传统加密货币下出现了 Tendermint,它的目的在于提供一个比比特币的工作量证明更加有效和安全的共识算法。 在早期,Tendermint 内置了简单的货币来参与共识,用户必须向一个安全账户中“绑定”一定数量的货币,如果他们表现不端,这些钱就会被收回 -- 这一点使得 Tendermint 成为一个 POS 算法 另一个基于 Tendermint 构建的加密货币应用是 Cosmos。 通过扩展 Tendermint 来处理未来工作存在的不确定性,在 Tendermint 中以一个 ABCI 应用实现这个基于 docker 的行为是完全有可能的。 它使用 Tendermint 作为它的共识引擎,提供了一个特殊的应用状态。 本文译自:Tendermint vs. Other Software
Tendermint 组件 Tendermint 是 Cosmos 的核心组件,是一个高性能的区块链底层共识引擎,从架构上来说,其主要分为对等网络通讯层、共识协议层与上层应用层三大部分,其中共识协议层是其关键部分 Tendermint 在共识时并不关心具体交易细节,而只是将交易当作字节打包成区块,然后通过各节点之间的的机制达成共识。 关于 Tendermint 共识算法具体机制可以阅读以下论文进行了解: The latest gossip on BFT consensus - Tendermint 其特有的一些机制带来了区块链共识过程中的显著优势 Tendermint 算法实现细节与机制将在之后的系列文章中具体讲解。 总结 本文为 Cosmos 及 Tendermint 共识系列第一篇,主要介绍了区块链的技术发展、Cosmos 区块链框架中的 Tendermint 和 Cosmos SDK 等核心组件,并对 Tendermint
所以,我们就有了一个接口,应用区块链接口(ABCI),和它的主要实现,Tendermint Socket Protocol (TSP, 或 Teaspoon)。 Intro to ABCI Tendermint Core (“共识引擎”)通过一个满足 ABCI 标准的 socket 协议与应用进行交流。 举个大家比较熟悉的例子,比特币。 Tendermint Core 的内存池首先通过 CheckTx 检验一笔交易的有效性,并且只将有效交易中继到其他节点。 Tendermint Core 给应用创建了三个 ABCI 连接:一个用于内存池广播时的交易验证,一个用于运行提交区块时的共识引擎,还有一个用于查询应用状态。 如果应用逻辑不确定,就无法在 Tendermint Core 复制节点间达成共识。
Tendermint RPC API文档中文版由汇智网翻译整理,访问地址:http://cw.hubwiz.com/card/c/tendermint-rpc-api/。 Tendermint节点的websocket访问端结点是/websocket,例如:localhost:26657/websocket。 如果希望快速掌握区块链应用的开发,推荐汇智网的 区块链应用开发系列教程, 内容涵盖比特币、以太坊、eos、超级账本fabric和tendermint等多种区块链, 以及 java、c#、go、nodejs 导出共识状态 Genesis - 获取创世文件 Health - 查询节点健康状态 NetInfo - 查询节点网络状况 NumUnconfirmedTxs - 查询未确认交易 Status - 查询Tendermint
1、预置模块 要快速掌握Tendermint区块链开发,推荐汇智网的Tendermint区块链开发详解.。 :区块链共识引擎 如果你还没接触过Tendermint,建议参考汇智网的Tendermint开发教程。 tendermint和blog都有一个目录来保存配置信息和内部数据库状态。默认目录为:~/.tendermint 和 ~/.blog。不过为了简化考虑,我们将所有配置信息放到同一个目录。 ,使用命令tail -f ~/.blog/tendermint.log,就可以看到我们的blog区块链节点的输出了: ? ---- 原文链接:IOV Weave SDK快速教程 - 基于Tendermint的区块链开发框架 - 汇智网
本文主要介绍以下内容: (1)Tendermint的网络层级框架图 (2)Tendermint模块组成及共识算法原理 (3)Tendermint工作流程 2. 2.1 Tendermint的概念 Tendermint的概念总结下有以下几点: (1)Tendermint是一个能够在不同机器上,安全一致复制应用的软件,其中安全性和一致性也是分布式账本的关键概念。 ABCI是Tendermint中定义的一套Application与Tendermint Core之间交互的协议。 /tendermint/tendermint (4)深度解析Tendermint,快速融入Cosmos生态[质量高] https://zhuanlan.zhihu.com/p/38252058 ( 5)区块链框架 Tendermint 入门教程 https://hbliu.coding.me/2018/04/02/tendermint-introduction-1/ (6)详解Tendermint
Tendermint的目的就是致力于解决分布式系统开发中像公示算法这样的技术难点,而让Tendermint区块链应用开发者可以将关注点集中在业务逻辑上。 Tendermint包含两个主要的组件: 区块链共识引擎,即:Tendermint内核 应用与区块链接口,即:Application BlockChain Interface Tendermint内核可以托管任意的应用状态 Tendermint开发环境搭建与测试 STEP 1:下载Tendermint内核 tendermint内核采用Go开发,有官方预编译程序,下载地址:Tendermint Core。 STEP 2:初始化Tendermint 执行如下命令初始化Tendermint: ~$ tendermint init 应当可以在终端看到tendermint的输出信息: I[10–18|20:14: /genesis.json STEP 3:启动Tendermint节点 使用node子命令启动Tendermint节点: ~$ tendermint node -proxy_app=kvstore -proxy_app
关于更多tendermint的介绍这里不再赘述。 这里,我们通过tendermint的abci来实现fabric的orderer服务。 ? 下面我们借助tendermint的abci接口,实现代码不侵入,完成orderer的tendermint pbft排序。 只启动一个tendermint服务。 byte数组,调用tendermint节点的Mempool.checkTx方法,将交易打包到tendermint的内存池中即可。 该账本主要用于fabric追块,当某个orderer节点的tendermint块高度比其他节点小时,会触发tendermint的追块功能,从tendermint中读取交易后写入自己的tendermint
Tendermint Tendermint开源项目诞生于2014年,旨在解决比特币的工作证明共识算法的速度,可扩展性和环境问题。 Ethermint等平台建立在Tendermint ABCI平台之上。 另一个建立在Tendermint ABCI之上的项目是Cosmos Network,它被设计为“区块链互联网”。 Tendermint的保税交易 Tendermint通过使用称为“bond deposits债券存款”的基于证券存款的抵押品解决了无关紧要的问题。 Tendermint Tendermint中的Fork责任通过识别在链中引起恶意分叉的人来确认其验证者的责任。那些被判有罪的人被他们的债券存款被摧毁而被罚款。 /tendermint-0-10-2。
前两周上线了我们为 Cybermiles 提供的 supernode,因为 Cybermiles 主网使用了 Tendermint,于是上周便研究了一下 Tendermint,边学边写了个 slides 介绍 Tendermint。 周日,闲来无事,想用 tendermint 做点东西。 这样的 app 当 hello world 还可以,用来验证 Tendermint 是否靠谱,本身并不靠谱。 Tendermint block: ? 转账结束后的状态: ?
Tendermint共识算法和PBFT最大的不同点就是Tendermint没有PBFT的View Change阶段。 因此相比PBFT,tendermint共识算法更加高效和灵活。 tendermint。 ABCI是开发语言无关的,开发人员可以使用自己喜欢的任何语言来开发基于tendermint的 专用区块链。虽然tendermint已经非常优秀,但是它仍然有很多局限性以及不足之处。 tendermint的抽象性不足够,用户需要做非常多的操作才能适配到自己的环境,很多开发者想自己定义的模块,由于tendermint没有抽象出来,开发者不能够自定义,比如说通信网络、区块链存储、加密算法等等
Blockchain 而Tendermint使用特有的共识协议,又进一步简化了轻客户端所需要存储的数据量。 Tendermint共识协议要求每个区块必须被2/3以上的验证者签名,来提供逐块最终化的特性;而实际在Tendermint网络中,验证者的变动一般不会经常发生,因此通过追踪验证者集合,可以验证任意区块的有效性 并且tendermint与ethereum类似,在区块头中存储了AppHash来提供状态证明;唯一不同是,提供可证明的数据结构不同:tendermint使用了iavl+, ethereum使用了Patricia Tree; 因为Tendermint使用了即时最终性拜占庭共识算法,只要区块被已知的大于2/3的验证者签名,light client 就可以认为该区块是有效的。 同时tendermint引入了解绑周期的概念(3周),来避免Pos中的长程攻击的问题;只要light client每次短线的时长小与这个解绑周期,就可以保证所同步状态的有效性。
DolphinChain 基于 tendermint v0.31.2 (WARNING: ALPHA SOFTWARE) 开发,是当时的 tendermint 最新版本。 can't be greater than max height %d", min, max) } return min, max, nil } 相关代码 参考漏洞代码:https://github.com/tendermint /tendermint/blob/v0.22.5/rpc/core/blocks.go 本漏洞相关 Issue 见 : https://github.com/tendermint/tendermint/ issues/2049 fix:https://github.com/tendermint/tendermint/commit/8dc655dad25b0b04f271cb66ba73fd504db3195d
Tendermint 是一个共识引擎和BFT共识算法。 在Tendermint之上可以使用任何编程语言构建一个状态机,Tendermint 将负责信息的(按照共识要求的一致性和安全性)复制。 Tendermint BFT 将区块链网络和共识层打包成通用引擎的解决方案,允许开发人员专注于应用程序开发,而不是复杂的底层协议。 因此,Tendermint可节省大量的开发时间。 Tendermint BFT引擎中使用的拜占庭容错(bft)[6]共识算法这个名称是Tendermint命名的,想了解更多的共识协议和BFT的历史,可以关Tendermint联合创始人伊桑-布克曼注的播客 这还不是全部,下面这些属性使Tendermint BFT成为先进的区块链引擎: • 公有链或私有链均可: Tendermint BFT只处理区块链网络和共识,它帮助节点传播交易和验证追加交易到区块链。 如何桥接非 Tendermint 链 到目前为止,我们展示的 Cosmos 架构展示了基于Tendermint的链如何进行交互操作。 但Cosmos并不限于Tendermint链。
本文介绍以下内容: (1)Cosmos架构 (2)Cosmos Hub (3)Cosmos SDK (4)IBC协议 (5)PegZone ---- 2.Cosmos架构 Cosmos是Tendermint 基于Tendermint开发,采用的Tendermint共识算法,是一个类似实用拜占庭容错共识引擎,具有高性能、一致性、具备拜占庭容错等特点。 Tendermint共识算法参考《【深度知识】Tendermint共识算法原理和框架流程》。 主要有: baseapp:定义了一个基本ABCI应用的模版,与Tendermint通信。开发者也可以根据自己的需求重写。 应用程序:包括gaia、basecoin、democoin。 PegZone:PegZone是基于Tendermint的区块链,负责维护用户的账户信息,允许用户之间资产的转移,并提供交易查询。