Tendermint

区块链时代的拜占庭容错:Tendermint(五)

此生再无相见时 提交于 2020-03-02 12:39:14
原文题目: 《Tendermint: Byzantine Fault Tolerance in the Age of Blockchains》 原文作者: Ethan Buchman 翻译: 傅晓波 校对: 潘振东 本文为节选 目前为止的章节,论文阐述了Tendermint共识协议和应用环境相关的基础要素。现实世界中系统的关键要素,例如验证人集合(validator set)的变更管理、故障恢复机制等,还尚未讨论。 这个章节提出了一种解决这些问题的方法,正视共识系统的治理任务。当验证人集合包含更分散的代理人集合时,维护网络的有效治理将变得非常重要。 Governmint 治理(governance)的基本职能是筛选提议行为,通常是以一种投票的形式来完成的。治理的实现作为软件的最基础模块,它允许用户发起提议,对其进行投票,并对投票进行计数。提议可能是程序化的,在这种情况下,它们可能在成功的投票后进行自动执行;亦或并非程序化的,这种情况下它们的执行依赖于手工运行。 为了在Tendermint中启用特定的操作,比如验证人集合变更、升级软件,而实现了一个叫Governmint的治理模块。Governmint是一个最小的、可行的治理应用程序,它支持多组实体,每一个都是可以内部投票的提议,其中一些可能产生程序化执行的行为,就像验证人集合变更,或Governmint的自动升级等。

8支团队正在努力构建下一代区块链以太坊Ethereum 2.0

时间秒杀一切 提交于 2020-03-02 08:36:52
“我们不想在构建 Ethereum 2.0时重新造轮子。” 谈到开发人员为 Ethereum 区块链进行两个独立的升级(一个称为 Ethereum 2.0,另一个称为 Ethereum 1x)所作出的补充努力,劳尔·乔丹坚持认为,在较短的时间内将升级包括在 Ethereum 1x 中,将对正在进行的 Ethereum 2.0研究有好处。 Jordan是当前为ethereum 2.0构建软件客户端的八个不同开发团队之一的共同领导。 (作为背景,客户端通常是用不同的编程语言编写的软件实现,用户部署这些语言以连接到以太网并参与以太网。) Jordan对CoinDesk说,保持在以太坊1x内提出的“增量增强”不影响主链的长期路线图: “我认为这两个组相当正交,但我们至少必须了解每个组正在执行什么。” 目前,这两种升级的技术指导方针也称为规范,仍在进行中。 在以太开发人员中仅在最近几周认真讨论过ethereum 1x之后,它打算成为侧重于对当前以太网络的增强的中间升级。 另一方面,Ethereum 2.0具有一个更雄心勃勃的议程,该议程可追溯到2014年,包括对连锁平台的根本性改变。 在以太坊2.0的早期项目名称为 Serenity 这众所周知,目前的规范可以概括为三个主要组件的组合: 从当前被称为工作量证明(PoW)的能源密集型共识协议切换到PoS。

五分钟入门tendermint区块链开发

怎甘沉沦 提交于 2020-03-02 06:53:21
区块链应用已经从单纯电子现金发展到去中心化投票等更多的领域,但是区块链这样的分布式系统的开发还存在一些困难的问题:安全、可靠性、敏捷度、以及一致性保证等等。Tendermint的目的就是致力于解决分布式系统开发中像公示算法这样的技术难点,而让Tendermint区块链应用开发者可以将关注点集中在业务逻辑上。 如果希望快速掌握基于Tendermint的区块链开发,推荐汇智网的在线互动课程: Tendermint区块链开发详解 ,技术问题可咨询课程助教。 Tendermint简介 Tendermint萌芽于比特币、以太坊这样的加密货币,它的目标是提供一个比比特币的工作量证明(PoW)更加高效和安全的共识算法。简单地说,Tendermint是一个可供二次开发的软件包,可以在多台机器上安全、一致地实现应用状态的复制。 Tendermint可以在不超过1/3的机器失效时依然正常工作,无论失效的原因 是什么。Tendermint实现了拜占庭容错。 任何正常工作的机器都会收到相同的交易日志,并分别推导出相同的状态 Tendermint的特性如下图所示: Tendermint包含两个主要的组件: 区块链共识引擎,即:Tendermint内核 应用与区块链接口,即: A pplication B lock C hain I nterface Tendermint内核可以托管任意的应用状态

五分钟Tendermint区块链入门

亡梦爱人 提交于 2020-03-02 06:48:21
区块链应用已经从单纯电子现金发展到去中心化投票等更多的领域,但是区块链这样的分布式系统的开发还存在一些困难的问题:安全、可靠性、敏捷度、以及一致性保证等等。Tendermint的目的就是致力于解决分布式系统开发中像公示算法这样的技术难点,而让Tendermint区块链应用开发者可以将关注点集中在业务逻辑上。 如果希望快速掌握基于Tendermint的区块链开发,推荐汇智网的在线互动课程: Tendermint区块链开发详解 ,技术问题可以咨询课堂助教。 Tendermint简介 Tendermint萌芽于比特币、以太坊这样的加密货币,它的目标是提供一个比比特币的工作量证明(PoW)更加高效和安全的共识算法。简单地说,Tendermint是一个可供二次开发的软件包,可以在多台机器上安全、一致地实现应用状态的复制。 Tendermint可以在不超过1/3的机器失效时依然正常工作,无论失效的原因是什么。Tendermint实现了拜占庭容错。 任何正常工作的机器都会收到相同的交易日志,并分别推导出相同的状态。 Tendermint的特性如下图所示: Tendermint包含两个主要的组件: 区块链共识引擎,即:Tendermint内核。 应用与区块链接口,即: A pplication B lock C hain I nterface。 Tendermint内核可以托管任意的应用状态

手把手教你走进Hyperledger Fabric

血红的双手。 提交于 2020-02-28 13:34:34
现在,Blockchain是业内新的热门话题。但是,寻找良好的资源来学习这项引人入胜的技术并不是一件容易的事。为了让其他人更容易学习,我开始在区块链和分布式分类帐技术(DLT)平台领域开展一系列工作。我将尽力涵盖每一步都需要掌握这些技术。首先,我从Hyperledger Fabric开始。 Hyperledger Fabric是Hyperledger旗下的项目之一。 Hyperledger是一个分布式分类账解决方案的平台,以模块化架构为基础,提供高度的安全性,弹性,灵活性和可扩展性。 让我们从第一步开始一步一步实践: 首先,我们必须学习如何安装Hyperledger Fabric的先决条件: 安装cURL。 安装Go语言。 安装Docker和Docker Compose。 安装Git。 安装Pip 在Ubuntu LTS 16.0.4上安装Hyperledger Fabric 完成先决条件后,我们将继续执行以下操作: 1.在Hyperledger Fabric上构建和部署你的第一个网络 2.在Hyperledger Fabric上构建和部署演示示例Fabcar 我们正在使用Ubuntu LTS 16.04进行本手动教程: 第1步 按 Ctrl+Alt+T 快捷键打开一个终端。 $ sudo su 输入你的密码 $ cd 第2步: 安装 Google golang $ cd

tendermint开源区块链的开发详解

安稳与你 提交于 2020-02-28 12:40:06
简介 tendermint是一个开源的完整的区块链实现,可以用于公链或联盟链,其官方定位是面向开发者的区块链共识引擎: 与其他区块链平台例如以太坊或者EOS相比,tendermint最大的特点是其差异化的定位: 尽管包含了区块链的完整实现,但它却是以SDK的形式将这些核心功能提供出来,供开发者 方便地定制自己的专有区块链: tendermint的SDK中包含了构造一个区块链节点旳绝大部分组件,例如加密算法、共识算法、 区块链存储、RPC接口、P2P通信等等,开发人员只需要根据其应用开发接口 (Application Blockchain Communication Interface)的要求实现自己 的应用即可。 ABCI是开发语言无关的,开发人员可以使用自己喜欢的任何语言来开发基于tendermint的 专用区块链。不过由于tendermint本身是采用go语言开发的,因此用go开发ABCI应用的一个额外好处 就是,你可以把tendermint完整的嵌入自己的应用,干净利落地交付一个单一的可执行文件。 tendermint的共识算法 在技术方面,tendermint引以为傲的是其共识算法 —— 世界上第一个可以应用于公链的拜占庭 容错算法。tendermint曾于2016年国际区块链周获得最具创新奖,并在Hyperledger的雨燕(Burrow) 等诸多产品中被采纳为共识引擎

11个默克尔树开源项目

北慕城南 提交于 2020-02-27 09:40:22
Merkle树是一种可以有效验证部分数据存在于指定数据集并且未被篡改的高效的哈希树结构,作为一种底层技术广泛应用在各种区块链的实现当中,对于商品溯源、知识产权确认、区块链公证等区块链应用起着重要的作用。本文介绍11个主流的merkle树开源实现,你可以在自己的项目中应用。 区块链开发教程链接: 以太坊 | 比特币 | EOS | Tendermint | Hyperledger Fabric | Omni/USDT | Ripple 1、ethereumjs/merkle-patricia-tree - 以太坊官方merkle树实现 merkle-patricia-tree是以太坊黄皮书中的改进merkle patricia树的实现。目前仅支持leveldb作为存储后端。 开发语言:TypeScript/JavaScript 源码下载: https://github.com/ethereumjs/merkle-patricia-tree 2、google/Trillian - 大规模可验证数据存储 Trillian是google提供的一个透明的、高度可伸缩的密码学可验证数据存储库,它采用MySQL或MariaDB作为后端存储层,可以支持非常大规模的merkle树。Trillian通过gRPC提供服务接口。 开发语言:Golang 源码下载: https://github.com

Java开发区块链的三大sdk库

你说的曾经没有我的故事 提交于 2020-02-26 10:37:33
如果你想将区块链合并到一个Java项目中,现在我们来看看就是这个细分领域中三个最大的OSS玩家。 好的伙计们,我们都听说过比特币,以太坊或其他加密货币,其中有一些时髦的名字围绕着我们常见的新闻,但我们作为Java开发人员知道如何轻松地与这些区块链技术进行交互吗?以下是可用于利用区块链趋势的前三大Java项目。该列表基于GitHub存储库星级排序。非常感谢评论和意见。 BitcoinJ 这个名字很具描述性,你不觉得吗?如果你想知道如何创建比特币钱包并管理节点之间的交易,那么你应该尝试使用 BitcoinJ 。该项目拥有不断增长的社区和非常好的文档,这使得每个开发人员都非常有利可图。当然,作为大多数试图获得普及的开源项目,它在开始时都有局限性。有几个已知的安全问题与开放错误和可伸缩性问题相一致。如果你想了解比特币协议的运作方式,它仍然非常有用。单个人意见目前还不适合生产应用。 Web3j 一个词——以太坊。这是基于这种尖端技术的第二个最受关注的加密货币。 Web3j项目 允许你使用以太坊区块链,而无需为平台编写自己的集成代码。同样,核心功能是创建钱包,管理交易,这次是智能合约sdk包。是的,打包好的。以太坊项目的一部分是一种称为Solidity的特殊语言,它是创建智能合约的事实标准。如果你想避免使用智能合约的底层实现细节,则使用Web3j的智能合约开发包

黑客如何进行区块链51%攻击(双重攻击或双重花费)

荒凉一梦 提交于 2020-01-07 04:40:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 51%攻击或双重攻击是区块链中的矿工或矿工群体试图在该区块链上花费两次数字加密货币。他们试图“双重花费”,因此得名。这样做的目的并不总是加倍花费数字加密货币,但更常见的是通过影响其完整性来对某个加密数字货币或区块链进行攻击。 这是一个简单的例子:假设我在豪华车上花了10比特币。几天后汽车交付,我的比特币从我的账户转账到汽车公司。通过对比特币区块链进行51%的攻击,我现在可以尝试撤销这种比特币转账。如果我成功了,我将拥有豪华车和比特币,我还可以再次使用这些比特币。从自治的民主区块链的角度来看,51%攻击的概念似乎是显而易见的,但对其运作方式存在一种常见的误解。这篇简短的文章将尝试对51%的攻击如何更详细地进行清晰的解释。如果你不知道矿工们如何向区块链添加交易,我建议你先阅读 矿工如何通过七个步骤向区块链添加交易 ,因为只需要五分钟的就可以了。如果你不知道区块链是如何工作的,我建议你从 这里 开始。 区块链=治​​理 在详细了解51%的攻击之前,重要的是要了解区块链协议基本上是一种治理形式。区块链管理数据的分类帐,例如交易数据。由于区块链协议可以为我们管理,我们不再需要第三方来执行此操作,例如政府或银行。这就是(大多数)区块链去中心化的原因。比特币区块链的协议基于民主自治制度,这意味着网络上的大多数参与者(矿工

BFT等5种主流区块链共识的开源实现

懵懂的女人 提交于 2019-12-25 20:40:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 共识算法是实现自主产权区块链的必不可少的关键环节,本文列出社区中相对成熟的区块链共识算法开源实现,包括BFT共识、Raft共识、Paxos共识、PoW共识等,可供希望开发自主产权区块链的团队参考学习。 相关推荐: 区块链开发系列教程 1、BFT共识开发库 BFT共识算法可以应对分布式系统中的拜占庭故障(Byzantine failures),也就是可以在集群中部分节点存在恶意行为时依然保证整个系统的正常工作。 1.1 Tendermint Core Tendermint Core 是一个拜占庭容错的中间件,可以安全的将任何语言开发的状态机复制到集群中的其他机器上。Tendermint Core已经被用于Cosmos、币安链等多种公链环境中。 Tendermint Core的协议详情可以参考 这里 ,开发教程访问这里: tendermint开发详解 。 开发语言:Go 下载地址: https://github.com/tendermint/tendermint 1.2 BFT-SMaRt BFT-SMaRt是一个拜占庭容错的状态机复制实现,采用Java开发,目前由里斯本大学的LsSIGE研究组负责维护。BFT-SMaRt要求JRE 1.8+。 BFT-SMaRt是最知名的Java版BFT实现