区块链手册
区块链是一种令人兴奋的新技术,支撑着比特币和其他加密货币。
但在加密货币世界之外,区块链还有许多其他应用。这就是您将在这里学到的内容。
本文将分为三个部分:
- 区块链简介
- 拥抱区块链
- 区块链如何运作?
区块链简介
在第一部分中,我将向您介绍区块链:它是什么、不是什么,以及为什么它会吸引商业兴趣。
在本部分结束时,您应该能够理解:
- 区块链的目的,以及为什么它会引起人们的兴趣
- 在基本层面上,区块链是如何工作的
为什么区块链技术有用
如今,许多交易都需要可信赖的第三方作为“中间人”。例如,用户在相互转账时经常使用银行或组织,例如 PayPal 或西联汇款。
信任往往需要这样的第三方:双方都想确信自己不会被骗,一切都是光明正大的。有时,由于文化、边界或合规性问题,也需要它。
但是,这些第三方通常需要为其服务付费,使用这些第三方会减慢交易速度。许多人会对不需要此类受信任第三方的解决方案感兴趣。
今天,许多金融交易都经过某种中央控制或监督。例如,政府控制他们的货币:生产或流通多少。同样,政府通常控制金融交易,例如购买黄金或证券。
许多人可能会对不受单一权威机构或政府控制的货币或解决方案感兴趣。
有许多应用程序可以从现有数据永远无法更新或删除(只能添加)的数据库中受益。
例如,一个解决方案可以跟踪飞机部件从制造、测试到最后安装到飞机上的整个过程。如果现有数据永远无法更新,那么使用此解决方案的任何人都会确信他们拥有正确的数据,并且这些数据没有被更改、损坏或删除。
区块链是一种有潜力解决这些问题和机遇的技术。但在了解具体方法之前,您需要先了解一下什么是区块链,什么不是。
什么是区块链?
本质上,区块链是一种存储数据的方式:它就像一个数据库。但数据库通常是集中式的:数据由一个进程或计算机管理。
区块链是一种分布式数据库,存储在对等网络中的许多不同计算机上。没有单一的控制计算机或“老板”。这似乎不合逻辑。但区块链最令人兴奋的特性之一是它如何实现这一点。你很快就会看到。
使用区块链,所有数据——整个区块链——通常都存储在所有计算机上。每台计算机或节点都与其他计算机通信,广播数据库更改和其他信息。
这种结构提供了弹性和可靠性优势:如果一个甚至多个节点出现故障,也不会中断。
在常规数据库中,可以更改、更新或删除任何数据。区块链不同:只能添加新信息。根据其设计,现有信息永远无法更新或删除。
这可能看起来很奇怪,但您很快就会发现这实际上是区块链的关键安全功能之一。
那么无法更改或删除的数据库如何工作?区块链通常被称为基于账本的系统。有人称之为分布式账本技术。更改记录为新信息。
**分布式账本技术:**一种在许多同步的、地理上独立的计算机上存储数据的技术,没有中央控制过程。通常与区块链相关使用。
让我们看一个例子。
假设您有一个跟踪仓库中小部件数量的应用程序。
当收到第一个小部件订单时,普通数据库会创建一个新记录来保存小部件的数量。
在区块链中,还创建了一条新记录,记录已收到 5 个小部件。所以,你知道你有 5 个小部件。
假设删除了 1 个小部件。在普通数据库中,可以使用新的小部件数量更新记录:4。
在区块链中,将添加一条新记录,记录 1 个小部件已被删除。因此,您可以发现还剩下 4 个小部件。
在常规数据库中,如果删除所有小部件,则可以删除记录。
在区块链中,将小部件数量设置为 0 的新条目执行类似的功能。
无信任意味着什么?
到目前为止,我们介绍的区块链功能允许区块链作为数据管理系统工作,而无需信任任何存储区块链的计算机。
这些计算机甚至可以存在于没有集中安全管理的公共网络上。例如,任何人都可以创建一个比特币节点并参与运行比特币。
恶意用户无法更改或破坏区块链的内容,除非他们可以控制对区块链的更新。我们将在本教程的后面更深入地讨论这个问题。
消除对可信节点的需求使我们能够在没有控制组织的情况下通过 Internet 实现令人兴奋的应用程序。这些有时被称为无许可。比特币是无许可区块链实施的一个例子。
尽管区块链应用程序可以在无需许可的网络中工作,但许多应用程序并不希望如此。他们将希望保留对其区块链的一些控制权:谁可以加入,他们可以做什么,以及能够验证他们的身份。
这些解决方案将在受信任的网络中运行,安全管理系统由某种集中授权机构维护。这些有时被称为“许可的”。许多区块链框架,如以太坊和 Hyperledger,都是经过许可的。
许可/信任是什么意思?
- 访问受限
- 集中安全
- 一般用于内网
- 不能匿名
无许可/无信任是什么意思?
- 任何人都可以加入
- 没有集中的安全性
- 可以上网
- 也许匿名
为什么区块链会成为如此热门的话题?
过去,商业交易一直由受信任的中央机构控制。例如,银行、交易所和政府。
区块链提供了一种替代方案,不再需要受信任的中央机构来管理或监控交易,即使是商业交易或货币。此外,边界和边界不再是问题,因为区块链应用程序可以在互联网上使用。
第一个区块链是由一位名叫中本聪的不知名计算机科学家在一篇提出加密货币的论文中提出的,这种加密货币现在被称为比特币。
从那时起,基于这项技术创建了许多不同的应用程序,包括各种加密货币。
总而言之,到目前为止:
- 区块链是一种去中心化的分布式数据管理系统。数据只能添加到区块链中。它无法更改或删除。
- 区块链提供出色的可靠性和弹性。
- 区块链可以在公共不受信任的网络上运行,并保持完整性。
- 区块链应用程序可以在不需要受信任的第三方或“老板”的情况下执行商业交易等功能。这是区块链的主要好处之一。
- 区块链创建于 2008 年,最初是为加密货币比特币实施的。
区块链如何运作?
区块链是一项非常新的技术。因此,在使用区块链时几乎没有什么规则、标准或最佳实践可以遵循。这是令人兴奋的,因为开发了新的应用程序以不同方式使用区块链技术。
因此,了解区块链如何工作的最佳方式是查看当前示例。最著名的区块链实施是加密货币比特币。
客户端和节点:
比特币用户通过互联网连接,分为两组,客户端和节点。客户是比特币的用户。节点是比特币区块链所在的计算机,它们参与比特币的执行。
**注意:**节点也可以是客户端。
钱包软件:
假设用户 Jane 想要将一个比特币转移给另一个用户 Brian。
简将在她的计算机上执行一个比特币客户端程序。这称为钱包,有多种可供选择,包括 Bither、Electrum 和 Mycelium。
简之前会使用这个钱包开设比特币账户并获得比特币。钱包软件记录了简拥有的比特币。
请注意,区块链网络不使用钱包来存储数据。区块链中的记录用于确定 Jane 可以花费多少比特币。
为了转移比特币,简将使用钱包软件,指定金额——一个比特币,以及收款人的地址——布赖恩。
每个比特币用户都有一个唯一的地址,该地址是在他们创建比特币账户时创建的。所以,布赖恩也会有一个钱包,并且会开设一个比特币账户。
Jane 将发送转账请求。钱包软件会将这一请求发送到一个或多个比特币节点。钱包还将使用只有 Jane 的钱包知道的私钥签署此交易。
交易将被传输到所有其他节点。每个节点将验证交易。此验证将包括使用 Jane 的钱包传输给每个人的公钥检查交易签名。任何人都可以验证签名,但只有 Jane 可以签署交易。
每个节点都会将此交易与其他交易组合成一个块。周期性地,大约每 10 分钟左右,每个节点都会尝试将这个交易块添加到区块链中。
区块链处理将选择一个节点将新阻止的交易添加到区块链。如何选择此节点可能因不同的区块链技术而异。但是,这通常每次都是不同的节点。
这个获胜节点将通知区块链中的所有其他节点它正在向区块链添加一个新交易块。
每个节点都会将这个新块添加到其本地区块链副本中。
当 Jane 的交易被添加到区块链时,它被确认。Brian 的钱包收到通知,他收到了一个比特币,Jane 的钱包收到了她发送了一个比特币的通知。
现在我们来看看区块链的安全性。所有交易都使用只有 Jane 知道的私钥签名。因此,就像车钥匙一样,只要简将这个私钥保密,其他人就无法以她的名义进行交易。没有人可以从她的账户中转移比特币。
许多节点验证每笔交易。单个节点不能伪造交易,也不能传递无效的交易。
不能更改现有的交易块。节点不能更改或破坏现有的交易数据。
简的交易已安全完成,无需信任所有执行比特币处理的节点。没有中央计算机或控制进程——所有处理都分布在执行比特币处理的节点中。
比特币中的任何人都可以创建一个节点并通过互联网开始比特币处理。
脚步:
- 向区块链节点发送转账请求
- 交易由节点验证
- 一旦通过验证,交易将与其他交易合并形成一个区块
- 一段时间后,每个节点尝试将块添加到区块链
- 一旦成功,每个节点都会将新块添加到其区块链副本中
- 接收方收到转账成功的通知
我们已经看到了一个例子,那就是比特币。还有更多这样的例子需要探索。
在下一部分中,我们将探讨区块链对世界的影响以及如何实施区块链。
拥抱区块链
正如我们迄今为止所了解的那样,区块链是一种令人兴奋的新技术,它支撑着比特币数字货币生态系统和其他加密货币。
许多组织现在才刚刚开始认识到区块链的潜力,并开始确定他们如何从这项技术中受益。
在上一节中,我们以比特币为例学习了区块链的基础知识。现在,我们将探讨区块链对世界的影响以及如何实施区块链。
我们刚刚讨论了区块链如何为过去使用受信任的第三方(银行、政府或经纪人)进行商业交易提供替代方案。
您还看到区块链技术可以在互联网上工作,绕过边界和边界问题。它还可用于受益于无法删除或更新的数据的应用程序。
许多早期的区块链应用都是加密货币:不受任何国家、银行或类似实体控制的在线货币。比特币是第一种加密货币,但其他加密货币包括瑞波币 (XRP)、点点币、莱特币和以太坊使用的以太币。
加密货币为人们和组织提供了另一种支付商品和服务的方式:一种不受任何中央政府、银行或组织控制的方式。
加密货币还表明,在互联网上使用无信任计算机的区块链应用程序可以在现实世界中提供安全的商业框架。
什么是智能合约?
区块链应用的另一个令人感兴趣的领域是智能合约。智能合约不是通常意义上的合约,它是一组在计算机系统上存储和执行的业务规则。它们允许交易在不需要第三方(例如律师或银行)的情况下自动执行。
**智能合约:**一组存储在计算机系统中的业务规则,由该计算机系统根据一组逻辑或条款自动执行。可以允许在没有中间人(例如律师)的情况下商定和执行合同。
让我们用一个例子来探讨:
假设一个人夏洛特准备从另一个人杰克逊那里租一套公寓两周。假设他们使用已创建的区块链应用程序来管理公寓租金作为智能合约。
租赁协议的条款在智能合约中编码:租金、开始日期和其他细节。
夏洛特用比特币等加密货币支付租金。杰克逊在智能合约中提供了访问公寓的代码。
在定义的日期和时间,智能合约会自动验证是否已满足合同的所有条款:已收到租金,并提供了公寓入口代码。
一旦满足所有条款,智能合约会自动将租金支付给杰克逊,并将进入密码转发给夏洛特。
如果不满足合同的任何条款——例如,没有收到租金——合同就不会生效。没有入口代码被转发给夏洛特,没有租金被转发给杰克逊。
合同保存在多台电脑上,无法删除或更改。只能添加新信息。Jackson 和 Charlotte 对合同中信息的完整性充满信心,可以将其视为有效文件。
这一切都是在没有受信任的中央机构(例如租赁机构)管理合同的情况下完成的。
区块链的应用
区块链仍然是一项相对较新的技术,但有一些有趣的应用程序已经在许多行业实施。
Bitspark: Bitspark 是一个汇款平台。它允许人们相互转账。有几个类似的应用程序,包括 Abra 和 Veem。
IBM Food Trust: IBM Food Trust 是一种基于区块链的解决方案,用于跟踪和管理从源头到客户的食品。这使零售商、批发商和供应商能够提高效率,追踪可能不符合要求的产品来源,并减少食物损失和浪费。
**波音公司:**波音公司已将区块链技术与物联网 (IoT) 结合使用,用于跟踪和维护飞机部件。这使他们能够预测维护事件、优化生产操作并延长组件的生命周期。
Arcade City: Arcade City 是一个使用区块链的点对点拼车应用程序。
Storj: Storj 是一种云存储解决方案。用户可以租用本地磁盘上未使用的空间,或使用这些本地磁盘租用基于云的存储。
区块链的两大特点——分布式和数据不可更新——为企业提供了很多有趣的机会。在许多方面,区块链技术可用于分散和记录几乎所有交易或移动。
几个更有趣的例子包括,
发行音乐: 2015 年,初创公司 uj0 Music 使用基于概念验证的区块链分发系统发行了创作歌手 Imogen Heap 的歌曲 Tiny Human。使用这个系统,用户可以立即下载歌曲并付费。使用区块链立即将版税发送给词曲作者和合作者。这展示了如何在没有当前音乐行业标签和发行商的情况下发布音乐。
**人口贩卖:**世界上五分之一的人口没有官方文件来证明他们的身份。如果没有合法身份证明,这些人就有被贩卖的风险。
联合国正在探索区块链解决方案解决这一问题的方法。区块链解决方案也正在开发用于在线身份管理和验证。
毫无疑问,区块链技术产生的不仅仅是兴趣。包括 IBM 在内的大多数大型 IT 组织都将区块链定位为一项战略技术。许多大型组织都在积极寻求区块链解决方案,并且有许多初创公司都在使用区块链。
区块链引起了许多组织的兴趣,从小型初创公司到大型金融机构。
许多人声称区块链技术即将彻底改变业务开展方式,而其他人则持怀疑态度。但大多数技术评论员都认为,区块链是一种有效且有价值的技术,将继续存在。
以下是一些大玩家的评论:
与任何新兴技术一样,区块链的潜在影响似乎既巨大又难以完全理解。大众媒体中的许多人猜测区块链驱动的概念多种多样,例如无国界全球货币的发展,以及创建防欺诈投票工具以帮助消除选举腐败和欺诈。我们甚至可能还没有完全理解区块链的“杀手级应用”。然而,对于企业财务专业人士来说,区块链的潜在影响更为明显。— 摩根大通
尽管最初围绕区块链的炒作,以及随之而来的漫长的区块链“寒冬”,已经开始平息,但现在还不是固步自封的时候。IT 领导者必须为即将到来的不可避免的区块链“春天”做好准备,为数字业务带来核心支持技术和重大机遇。— 高德纳
大型组织项目:
福布斯最近创建了福布斯区块链 50 强:美国 50 家最低收入或估值为 10 亿美元的积极探索区块链的公司名单。
- **三星:**三星正在使用基于区块链的解决方案来彻底改革其电池制造子公司管理合同的方式。
- **雀巢:**总部位于瑞士的雀巢已开始与 IBM Food Trust 合作,以管理和跟踪食品的生命周期。
总结到目前为止,
- 许多早期的区块链应用都是加密货币,例如比特币。
- 智能合约是正在研究的区块链的另一个有趣特性。
- 尽管对于区块链将如何实施及其对计算行业的长期影响存在分歧,但大多数人都认为区块链是一项重要且有价值的技术,将继续存在。
- 现有的区块链应用程序包括共享存储、加密货币和支付处理系统。
- 未来潜在区块链应用的一些示例包括土地登记、身份管理和跟踪实物物品(例如钻石)。
- 大型组织正在积极研究和投资区块链。
如何开始使用区块链
有许多区块链框架和工具旨在让组织无需从头开始创建自己的区块链解决方案。
以太坊: 2014 年创建的首批区块链框架之一。它是一个开源框架,包括加密货币以太币。它是目前最流行的框架之一。
**Hyperledger:**开源区块链的总括项目。它于 2015 年 12 月由 Linux 基金会发起,并得到了 IBM 和英特尔等公司的投入。
**Quorum:**摩根大通公司发布的开源私有区块链框架。
在本文中,我们将更详细地了解 Hyperledger。
Hyperledger Fabric 是私有区块链的框架。它并非设计为像比特币那样作为开放的、无需许可的区块链运行。
为实现这一点,所有 Hyperledger Fabric 参与者——包括客户端应用程序、管理员、区块链中的进程等等——都必须具有有效的数字身份:X.509 数字证书。一个或多个外部会员服务提供商 (MSP) 将创建、管理和验证这些证书。Hyperledger Fabric 提供了有关 MSP 要求的说明。
每个参与者都定义了一组权限:他们可以做什么和不能做什么。数字身份和权限一起称为委托人。Hyperledger Fabric 包括使用和管理委托人的功能。
除了身份和权限之外,Hyperledger Fabric 还提供有关如何创建区块链的规则。这些规则由代码、API 和文档支持。
- 如何识别用户
- 如何设置权限
- 如何设置网络
- 如何创建智能合约
- 如何创建和提交交易
- 如何响应交易
- 客户端如何连接到区块链
- 如何处理错误
例如,Hyperledger Fabric 的一个关键功能是智能合约的创建和运行。Hyperledger Fabric 提供了一套创建智能合约的规则。
智能合约是用受支持的链代码编写的程序。
Hyperledger Fabric 提供了可以调用以定义智能合约的库和 API。
|
|
Hyperledger Fabric 专为处理大量必须快速处理的交易的企业级区块链而设计。
与以太坊等其他框架不同,Hyperledger Fabric 不提供自己的加密货币。
Hyperledger Fabric 由什么组成?
Hyperledger Fabric 提供可用于实施区块链解决方案的库、API 和文档。这些资源提供的服务包括命令、RESTful 接口和性能指标。
- Hyperledger Fabric 提供安装在每台计算机上的库:客户端和节点。这些可以在 UNIX、MacOS 或 Windows 机器上。
- Hyperledger Fabric 提供了一套 API 来帮助创建和运行私有区块链。这些 API 包含在用于编程语言(包括 GO、Node.js、Java 和 Python)的软件开发工具包 (SDK) 中。
- Hyperledger Fabric 提供示例,让用户了解 Hyperledger Fabric,并开始实施它。
- Hyperledger Fabric 为管理员、操作员和应用程序开发人员提供文档和教程。这些解释了 Hyperledger Fabric 实施区块链解决方案的规则。
- Hyperledger Fabric 提供了可用于管理区块链节点和 Hyperledger Fabric 资源的行命令。
- Hyperledger Fabric 可执行文件提供了一个 HTTP RESTful 操作 API。这旨在用于操作:而不是管理员或用户。
- Hyperledger Fabric 提供可以使用 Prometheus 监控软件处理的性能数据。
区块链框架通常包括传统区块链解决方案中不常见的附加功能。
Hyperledger Fabric 提供的服务允许使用私有通道对某些节点隐藏由区块链处理的私有机密交易。
Hyperledger 是 Linux 基金会的一个总括项目。它包括几个与区块链相关的项目,包括五个区块链框架。
每个区块链框架的特性各不相同:有些可能具有其他框架所没有的特性。
有可用的工具,包括 Hyperledger 中的一些工具,可以与这些区块链框架一起使用。
基准测试: Hyperledger Caliper 等工具允许对区块链进行比较。这些工具使用预定义的测试用例来衡量区块链实施的性能。
运营和管理: Hyperledger Cello 和 Truffe 等工具提供了管理区块链生命周期的功能:创建、启动、停止、删除。这些通常包括监视、日志记录、运行状况和分析功能。
**查看和查询:**有时管理员必须查看区块链中的单个块,以及它们的关联交易、网络信息等。Hyperledger Explorer 等工具提供图形界面来执行此操作。
**性能:**随着网络变大,区块链解决方案变慢。一些工具提供了提高区块链框架或解决方案性能的功能。例如,雷电网络试图通过避免共识来提高以太坊区块链解决方案的性能。这是通过在区块链之外执行一些交易来完成的。
云中的区块链
有一些基于云的区块链框架可用。其中一些是大型云产品的一部分,而另一些则是独立的区块链框架。
一些区块链即服务 (BaaS) 提供商是:
- 微软天青
- 甲骨文区块链平台
- 阿里云
- IBM 区块链平台
- 亚马逊网络服务
到目前为止的总结:
- 目前没有针对区块链的官方标准或最佳实践。但有些是由 ISO 和 W3C 等标准组织开发的。
- 尽管可以从头开始构建区块链解决方案,但许多人会选择使用现有框架,例如 Hyperledger Fabric 或 Ethereum。
- 还有其他与区块链相关的工具可以执行诸如管理区块链解决方案、提高其性能、查看单个块和相关资源或对其性能进行基准测试等操作。
- 有基于云的区块链框架:区块链即服务 (BaaS)。
- 有很多区块链书籍和课程可供选择。开源区块链框架也提供文档,可以查看其源代码。
在下一部分也是最后一部分中,我们将了解什么是哈希和块,以及它们在区块链中的工作方式。此外,我们还将讨论多台计算机如何协同工作来存储和管理区块链。
区块链如何运作?
到目前为止,我已经向您介绍了区块链并描述了它是什么、它做什么、谁在使用它,以及为什么它迅速成为当今商业世界的一个重要组成部分。
这是手册的第三部分也是最后一部分,我们将在其中更深入地探讨区块链如何工作的技术细节。
区块链是一项令人兴奋的技术,有可能彻底改变银行业、电子交易、电子合同等。它依靠技术来确保消息不能被篡改、正确无误并由授权人员发送。
在这部分中,您将更详细地探索实际技术。
到最后,您应该能够理解:
- 什么是哈希和块,以及它们在区块链中的工作方式
- 多台计算机如何协同工作以存储和管理区块链
什么是哈希?
区块链使用的一个重要工具是哈希。散列是一串数字和字母,可以唯一标识某些文本或数据。所以,在很多方面,它就像指纹。
散列有时称为散列值、散列码、摘要或简称为散列。有几种散列算法或创建散列的方法。
**哈希:**用于将可变大小的数据映射到一组固定大小的数据的算法。通常用于查找表的计算机应用程序和密码学。SHA-256 是其中一种算法。
区块链使用的哈希值不仅仅是从其他数据生成的数据。它们具有一些对区块链非常有用的独特属性。
哈希属性:
- **相同长度:**散列的长度相同——与原始文本的长度无关。即使对整个国会图书馆进行散列,散列的长度也是相同的。
- **不同:**原始数据的任何变化,无论多小,都必须产生完全不同的散列。
- **唯一性:**像指纹一样,散列应该是唯一的。这在实践中是不可能的,但是散列算法几乎不可能发生冲突——在这种情况下,程序会遇到不同数据的相同散列。SHA-256 碰撞的概率是 4.3 * 10–60:几乎不可能。
- **无法获取原始数据:**原始数据应该不可能从哈希值中复制出来。
什么是块?
在区块链中,信息存储在块中。每个块都包含块数据或内容的哈希值。
因此,接收者可以通过从块内容中重新创建哈希并将其与块中包含的哈希进行比较来确认块的内容是有效的。
这是区块链安全的第一步。
区块链就是:一连串的区块,每个区块都包含区块内容的哈希值。
该链提供了第二层安全性。
- 区块是区块链中的基本实体。
- 区块链中的区块数量可能非常大。
- 链中的每个块都包含前一个块的哈希值。
- 前一个块的哈希包含在为块创建哈希时使用的数据中。
- 如果一个块中的数据被未经授权的人修改,该块的哈希将不再匹配它。
- 未经授权的人可以在原始块中重新创建哈希,但是,这与下一个块中的哈希不匹配。
- 未经授权的人可以尝试更新下一个块中的哈希值,但下一个块的哈希值将不匹配。
- 即使未经授权的人更新了第二个区块的哈希值,它也不会与第三个区块中的哈希值匹配。
- 因此,如果未经授权的人更新了一个区块,他们也必须更新区块链中的每个后续区块。
因为没有块从区块链中更新或删除,所以区块链通常被称为账本。该分类帐系统可以用作数据库系统。
例如,银行解决方案可以使用区块链来记录银行账户的存款和取款。
当提及区块时,区块链解决方案通常使用区块的哈希值。另一种方法是使用区块高度,有时称为区块编号。
区块链中的块可以存储区块链解决方案所需的任何内容。例如,加密货币比特币将多笔交易存储在一个区块中。
对于未经授权的人更改块中的数据,他们需要重新创建保存数据的块,以及区块链中的每个后续块。
区块链解决方案通过将区块链同时存储在许多不同的计算机上来防止这种情况发生。所以现在未经授权的人必须更改存储区块链的每台计算机上的块。区块链是一种分布式解决方案,而不是集中式解决方案。
许多区块链解决方案使用数百甚至数千台不同的计算机(称为节点)来存储完整的区块链。每台计算机存储整个区块链。因为每个节点都存储整个区块链,所以每次添加新块时每个节点都必须更新自己的区块链副本。
节点必须一起工作,遵循相同的规则。例如,当一个块被添加到区块链时,所有节点必须在区块链的相同高度添加相同的块。
区块链实现都将有一个系统或方法来确定哪个节点将下一个块添加到区块链。这可以防止多个节点同时添加一个块。
这样做的一种方法是减慢块添加到区块链的速度。例如,目前每 10 分钟向比特币添加一个新块,每 15 秒向以太坊添加一个新块。
要了解有多少台计算机在区块链中协同工作,让我们看一个例子:比特币。
- 当比特币节点想要提交交易时,它会将该交易传输到网络中的所有节点。
- 完整的比特币节点是持有区块链副本并准备在必要时更新它的节点。
- 每个完整节点都会验证交易。如果交易有效,则每个全节点将交易添加到交易池或内存池中。这是一组尚未添加到区块链的现成交易。
- 然后每个全节点将交易池中的交易添加到候选块中,并尝试将此块添加到区块链中。
- 所有全节点都在尝试将下一个区块添加到区块链中,但只有一个可以成功。所以,所有的全节点都在竞争添加下一个区块——这是一场创建下一个区块的竞赛。
- 赢得比赛的节点将块添加到其本地区块链副本的末尾。这个新区块中的交易将从交易池中删除。
- 通知所有其他完整节点有赢家。每个人都将这个新块添加到他们的区块链本地副本中。这个新区块中的所有交易都从所有本地交易池中删除。
比特币节点之间的这种竞争阻止了两个节点同时将一个块添加到区块链的末端。区块链如何确定谁将添加下一个区块称为共识。共识还可以防止同一笔交易出现在区块链的两个不同区块中。
比特币节点使用称为工作量证明的共识系统进行竞争。
通过工作量证明,每个块都包含一个值,该值仅用于工作量证明验证以外的任何用途。这称为随机数,并在创建块时设置为零。
在提交块之前,块的哈希值必须满足网络设置的限制。通常,这是哈希必须低于的目标值。
如果哈希值不低于目标值,计算机必须重试。它通过将 nonce 增加 1、重新计算哈希并再次尝试来实现。重复此操作,直到找到小于目标的散列。这个过程称为挖矿。
计算机已经提供了它完成了一些工作的证据。现在该块将被添加到网络中所有计算机的区块链中。
区块链网络故意让计算机很难找到符合目标的哈希值。因此,计算机可能需要几分钟,甚至几小时或几天的时间才能找到合适的哈希值。
因为它需要很长时间,两台计算机几乎不可能同时尝试向区块链添加一个块。区块链网络中的计算机只是按照收到的顺序接受块。
使用随机数并不是使用工作量证明的唯一方式。区块链网络可以设置任何谜题由计算机来解决,目的是减缓计算机添加区块的速度。
对工作量证明的一个主要批评是它浪费了计算机的处理能力——迫使计算机无缘无故地进行数百万次计算,只是为了减慢添加块的速度。
有替代的共识算法。一种是股权证明。Peercoin 加密货币使用此方法,并正在为以太坊开发。
每个节点在网络中都有份额或权益。有些人会有更多,有些人会更少。例如,加密货币可以基于一段时间内未花费的硬币:未花费的硬币越多,赌注就越大。
计算机向网络提交一个块。在这个区块中,计算机提供了一个密钥来识别自己,以及它在网络中的权益。网络将有一种机制,下一台可以添加区块的计算机由网络中的所有计算机决定。
该机制将决定添加区块的频率。该机制还将确定下一个可以添加块的节点。赌注越大,计算机添加区块的可能性就越大。
计算机将尝试添加一个块。如果不成功,它可以重试。如果轮到这台计算机,则添加该块。
工作量证明和权益证明是无需信任的区块链网络的共识解决方案:没有中央控制且任何人都可以加入的网络。比特币和以太坊是去信任网络的两个例子。
使用无信任计算机网络实现安全是区块链的主要优势之一。
解决内部或可信区块链网络的共识要容易得多。例如,一个简单的解决方案可能是让每台计算机依次轮流——就像循环赛一样。
在实践中,这种循环共识是不切实际的。但是,其他示例(例如 Raft)在许可的区块链中是可能的。
Raft 共识是如何工作的?
- 每个节点开始时都是候选人:有资格成为领导者。
- 每个节点投票选出一个节点成为领导者。
- 一个节点获胜并成为领导者。所有其他节点成为追随者。
- 领导者添加所有块。
- 如果领导者关闭或失败,将进行新的投票以选择新的领导者。
结论
我们终于来到了这本手册的结尾。我希望这能帮助您了解并开始使用区块链。
原文:https://gursimar.hashnode.dev/the-blockchain-handbook
如果你觉得这篇文章对你有所帮助,欢迎赞赏~
赞赏