Tendermint 是分布式一致性软件。即使有1/3的机器叛变了, 也能保证其余机器上的数据一致。容忍机器以任意方式失败的能力, 包括变得恶意, 被称为拜占庭容错(BFT)。该理论被提出来数十年了,由于bitcoin和ethereum”区块链技术”的成功,才变得流行起来。区块链用点对点和加密认证技术组成了一个现代化BFT实例。Tendermint包含了两个主要的组件:区块链共识引擎和通用应用层接口。共识引擎叫Tendermint Core,确保每一台机器上的交易列表相同。应用层接口名字是ABCI,提供能为任何语言处理交易的接口。与其他区块链的解决方案(内置的状态机预先打包块)不同,如ethereum的基于世界状态树的键值对存储、bitcoin的脚本语言处理。开发人员可以在任何开发环境下用任何语言通过实现ABCI应用层来复制Tendermint状态机。

共识算法

Tendermint 是一个易于理解的,大部分模块采用异步通信的,拜占庭容错共识协议。该协议可用一个简单的状态机表示,如下图:

协议参加者称为验证节点;他们轮流打包出块并集体对该块打包。在每一个高度上只允许一个块commit。在一个块无法在该轮被提交的情况下,协议会移动到下一轮,并且新的验证节点会propose一个该高度的块。需要两轮投票才能commit一个块;这两轮投票我们称为“pre-vote“ 和 “pre-commit“。在每一轮投票中需要超过2/3的验证节点对同一个块pre-commit才能最后的块commit。

转:Tendermint 简介相关推荐

  1. tendermint+java_tendermint简介

    1.1 tendermint简介 tendermint是一个开源的完整的区块链实现,可以用于公链或联盟链,其官方定位 是面向开发者的区块链共识引擎: 与其他区块链平台例如以太坊或者EOS相比,tend ...

  2. USDT PHP开发包OmniTool简介

    2019独角兽企业重金招聘Python工程师标准>>> OmniTool开发包适用于为PHP应用快速增加对Omni Layer/USDT数字资产的支持能力,即支持使用自有Omni L ...

  3. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  4. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  5. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  6. TensorRT简介

    TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...

  7. 谷粒商城学习笔记——第一期:项目简介

    一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...

  8. 通俗易懂的Go协程的引入及GMP模型简介

    本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...

  9. Linux 交叉编译简介

    Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...

  10. TVM Operator Inventory (TOPI)简介

    TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...

最新文章

  1. python 双边滤波与高斯滤波
  2. 数据挖掘十大经典算法之——PageRank 算法
  3. P2324 骑士精神
  4. hdu 1086 A - You can Solve a Geometry Problem too (线段的规范相交非规范相交)
  5. php拼接多个insert,php – 将多个INSERTS分成一个表和多个表
  6. java 访问路径_java获取项目访问路径的相关方法
  7. commons-lang3-RandomUtils
  8. Nginx+FastCGI支持HTTPS部署过程详述
  9. hive之分区表详解
  10. 以下不是python内置函数的是_为什么说python内置函数并不是万能的?
  11. 使用Maven前夕(Maven项目架构管理工具、配置环境变量、阿里云镜像、本地仓库)
  12. 20160319中艺收盘总结
  13. apache POI技术的使用
  14. Cisco路由器上传和下载IOS
  15. .9图片处理报错Error: java.lang.RuntimeException: Crunching Cruncher ic_coupon2.9.png failed, see logs
  16. 计算机找不到WPS云盘,wps网盘在哪里打开及如何应用?
  17. 嵌入式开发<网络调试工具>
  18. IOS目标检测(翻译)
  19. Mysql多表查询,获取部门最高工资的sql语句方案
  20. 内存对齐规则及为什么内存对齐

热门文章

  1. VAssistX的VA Snippet Editor
  2. 阿里云上服务器eth0网卡关掉怎么打开?
  3. 【JAVA】java web详解
  4. 华为机考108题(c++)(1-16)
  5. Unity2018.4.36f1+vs2017社区版开发HoloLens1环境配置+入门实例教程
  6. mysql ibdata1
  7. ipcs(1) command
  8. bayer 图像插值算法
  9. java oracle 时间,JAVA时间格式和ORACLE时间格式
  10. Arduino面向对象编程基础