跳转至

第一章。区块链 101

阅读本书的人很可能已经听说过区块链,并对其巨大的潜力有一些基本的了解。

随着 2008 年比特币的发明,世界被引入了一个新概念,这个新概念现在可能会彻底改变整个社会。这是一种有望影响每个行业的东西,包括但不限于金融、政府和媒体。一些人把它描述为一场革命,而另一个学派认为这将是一场进化,区块链带来的任何实际利益都需要很多年才能开花结果。这在某种程度上是正确的,但在我看来,革命已经开始;世界各地的许多大型组织已经在使用区块链技术编写概念证明,因为它的颠覆性潜力现在已经得到了充分的认可。然而,一些组织仍处于初步探索阶段,但随着技术的日益成熟,预计进展会更快。这是一种对现有技术也有影响的技术,并且有能力从根本上改变它们。

根据 Gartner 的技术炒作周期图,如下所示,区块链技术目前正处于预期膨胀的峰值(截至 2016 年 7 月),预计将在 5 到 10 年内为主流采用做好准备:

Blockchain 101

Gartner 的新兴技术炒作周期

在过去的几年中,人们对区块链技术的兴趣飙升,从加密货币的角度来看,它曾经被一些人视为极客的钱,或者被认为是不值得的东西,但现在世界上最大的公司和组织正在研究它,花费数百万美元来采用和试验这项技术。在谷歌上进行简单的趋势搜索,就能揭示出过去几年人们对区块链技术的兴趣程度:

Blockchain 101

区块链的谷歌趋势

人们设想了这种技术的各种好处,例如分散信任、节约成本、透明度和效率。然而,也有各种挑战是积极研究的领域,如可扩展性和隐私。第 12 章可扩展性和其他挑战专门讨论区块链技术的局限性和挑战。

本章介绍了区块链技术、其技术基础、背后的理论,以及为构建今天的区块链而组合在一起的各种技术。

2008 年,一篇开创性的论文比特币:点对点电子现金系统以笔名中本聪撰写了点对点电子现金的主题,并引入了术语区块链。这个术语多年来已经演变成了区块链这个词。

在这一章中,首先描述了分布式系统的理论基础,然后介绍了比特币的前身(区块链技术就是通过比特币引入的),如电子现金和 hashcash,最后介绍了区块链技术。这是理解区块链技术的一种合乎逻辑的方式,因为区块链的根源在于分布式系统。

分布式系统

为了理解区块链,理解分布式系统是必不可少的,因为基本上区块链的核心是一个分布式系统。更准确地说,它是一个分散的分布式系统。

分布式系统是一种计算模式,通过这种模式,两个或多个节点以协调的方式相互协作,以实现共同的结果,并且它的建模方式使最终用户将其视为单个逻辑平台。

节点可以被定义为分布式系统中的一个单独的玩家。所有节点都能够相互发送和接收消息。节点可以是诚实的、有缺陷的或恶意的,并且有自己的内存和处理器。可以表现出任意行为的节点也称为拜占庭节点。这种任意行为可能是故意恶意的,对网络的运行有害。通常,网络上节点的任何意外行为都可以归类为拜占庭行为。该术语任意包含任何意外或恶意的行为:

Distributed systems

分布式系统的设计:N4 是一个拜占庭节点,L2 坏了或网络链接慢

分布式系统设计的主要挑战是节点间的协调和容错。即使一些节点出现故障或网络链路中断,分布式系统也应该容忍这种情况,并应该继续完美地工作,以达到预期的结果。多年来,这一直是一个活跃的研究领域,并且已经提出了几种算法和机制来克服这些问题。

分布式系统的设计是如此的具有挑战性,以至于一个被称为 CAP 定理的定理已经被证明,并且指出一个分布式系统不可能同时拥有所有期望的属性。在下一节中,将提供 CAP 定理的基本介绍。

上限定理

这也被称为布鲁尔定理,最初由埃里克·布鲁尔于 1998 年作为一个猜想提出;2002 年,它被塞斯·吉伯特南希·林奇证明为一个定理。

该定理指出,任何分布式系统都不能同时具有一致性、可用性和分区容差:

  • 一致性是确保分布式系统中的所有节点都有一个最新的数据副本的属性
  • 可用性意味着系统已经启动,可以使用,并且在需要时接受传入的请求并以数据进行响应,没有任何故障
  • 分区容差确保如果一组节点出现故障,分布式系统仍能继续正常运行

已经证明,分布式系统不可能同时具备上述三个特性。这很奇怪,因为区块链设法实现了所有这些特性,或者真的是这样吗?这将在后面讨论区块链上下文中的 CAP 定理的章节中解释。

为了实现容错,使用了复制。这是实现容错的一种常见且广泛使用的方法。一致性是使用一致算法来实现的,以确保所有节点都有相同的数据副本。这也叫做状态机复制。区块链基本上是一种实现状态机复制的方法。

一般来说,一个节点可能经历两种类型的故障:一种是故障节点简单地崩溃,另一种是故障节点可能任意表现出恶意或不一致的行为。这是一种很难处理的类型,因为它会因误导信息而引起混乱。

拜占庭将军问题

在讨论分布式系统中的共识之前,先介绍历史上的事件,这些事件是成功和实用的共识机制发展的先导。

1962 年 9 月,保罗·巴兰在他关于分布式通信网络的论文中引入了加密签名的概念。在这篇论文中,还首次引入了分散式网络的概念。然后在 1982 年,兰波特等人提出了一个思想实验,一群领导拜占庭军队不同部分的将军们计划进攻或从一个城市撤退。他们之间唯一的交流方式是一个信使,他们需要同意同时攻击才能获胜。问题是,一个或多个将军可能是叛徒,可能传达一个误导性的信息。因此,需要找到一种可行的机制,即使在有背信弃义的将军在场的情况下,也允许将军之间达成一致,以便攻击仍然可以同时发生。作为分布式系统的类比,将军可以被认为是节点,叛徒可以被认为是拜占庭(恶意)节点,而信使可以被认为是将军之间的通信通道。

这个问题在 1999 年由卡斯特罗利斯科夫解决,他们提出了实用拜占庭容错 ( PBFT )算法。后来在 2009 年,随着比特币的发明,第一次实际实现了,其中工作证明 ( PoW )算法被开发为一种实现共识的机制。

共识

共识是不信任节点之间就数据的最终状态达成一致的过程。为了达成共识,可以使用不同的算法。在两个节点之间很容易达成一致(例如在客户机-服务器系统中),但是当多个节点参与分布式系统并且它们需要就单个值达成一致时,达成一致变得非常困难。这种在多个节点之间达成共识的概念被称为分布式共识。

共识机制

共识机制是所有或大多数节点为了就提议的状态或值达成一致而采取的一组步骤。三十多年来,工业界和学术界的计算机科学家一直在研究这个概念。随着比特币和区块链的出现,共识机制最近成为人们关注的焦点,并越来越受欢迎。

为了在协商一致机制中提供理想的结果,必须满足各种要求。以下是他们的要求和简要说明:

  • 约定:所有诚实节点决定相同的值。
  • 终止:所有诚实节点终止共识过程的执行,并最终达成决策。
  • 有效性:所有诚实节点同意的值必须与至少一个诚实节点提出的初始值相同。
  • 容错:共识算法应该能够在存在故障或恶意节点(拜占庭节点)的情况下运行。
  • 完整性(Integrity):这是一个要求,其中任何节点都不能做出多于一次的决定。节点在单个共识周期中仅做出一次决策。

共识机制的类型

有各种类型的共识机制;一些常见的类型描述如下:

  • 基于拜占庭容错的:这种方法没有部分哈希求逆等计算密集型操作,依赖于发布签名消息的简单节点方案。最终,当接收到一定数量的消息时,就达成了协议。
  • 基于领导者的共识机制:这种机制要求节点竞争领导者选举彩票,获胜的节点提出一个最终值。

已经提出了许多实际的实现,例如 PaxosT3les lie Lamport在 1989 年提出的最著名的协议。在 Paxos 中,节点被分配了各种角色,如提议者、接受者和学习者。节点或进程被命名为副本,并且在存在故障节点的情况下,通过大多数节点之间的协议来达成共识。

Paxos 的另一种替代方案是 RAFT,它通过向节点分配三种状态中的任意一种来工作,即追随者、候选人或领导者。在候选节点获得足够的投票后,选举出一个领导者,现在所有的更改都必须经过领导者,一旦大多数追随者节点上的复制完成,领导者就提交提议的更改。

从分布式系统的角度来看,关于共识机制理论的更多细节超出了本章的范围。在本章的后面,将有一整节专门介绍共识协议。具体算法将在本书后面专门讨论比特币和其他区块链的章节中讨论。

区块链的历史

区块链是随着 2008 年比特币的发明而引入的,然后是 2009 年的实际实施。对于这一章,简单介绍一下比特币就足够了,因为后面还有一整章是关于比特币的,但提到比特币也很重要,因为没有比特币,区块链的历史就不完整。

电子现金或数字货币的概念并不新鲜。自 20 世纪 80 年代以来,基于 David Chaum 提出的模型的电子现金协议已经存在。

电子现金

正如理解分布式系统的概念对于理解区块链技术是必要的一样,电子现金的概念对于理解区块链的第一个惊人成功的应用也是必不可少的:比特币,或广义的加密货币。分布式系统中的理论概念,如共识算法,为比特币工作证明算法的实际实现提供了基础;此外,来自不同电子现金方案的想法也为加密货币的发明铺平了道路,特别是比特币。

在本节中,将向读者介绍电子现金的概念,然后介绍导致比特币发展的加密货币之前存在的各种其他概念。

电子现金的概念

电子现金系统中需要解决的基本问题是责任性和匿名性。David Chaum 在他 1984 年的开创性论文中提出了两个问题,即盲签名和秘密共享。这些术语和相关概念将在第 3 章密码学和技术基础中详细讨论。目前,只要说盲签名允许在没有实际看到文档的情况下签署该文档就足够了,并且秘密共享是允许检测两次使用相同的电子现金令牌(双重花费)的概念。

在此之后,出现了其他协议,如 Chaum、Fiat 和 Naor ( CFN ),引入匿名和重复消费检测的电子现金方案。布兰德的电子现金是另一个在 CFN 基础上改进的系统,使其更有效,并引入了安全缩减的概念来证明关于电子现金方案的陈述。安全归约是密码学中使用的一种技术,通过使用另一个问题作为比较来证明某个算法是安全的。换句话说,加密安全算法和其他难题一样难以破解;因此,通过比较可以推断出密码安全算法也是安全的。

1997 年,亚当·贝克引入了一个不同但相关的概念,叫做 hashcash ,作为控制垃圾邮件的 PoW 系统。这个想法很简单:如果合法用户想要发送电子邮件,那么他们需要计算一个散列,以证明他们在发送电子邮件之前已经花费了合理数量的计算资源。生成 hashcash 是一个计算密集型过程,但不会阻止合法用户发送电子邮件,因为合法用户通常需要发送的电子邮件数量可能非常少。另一方面,如果垃圾邮件发送者想要发送电子邮件,通常有数千封,那么为所有的电子邮件计算 hashcash 就变得不可行,从而使垃圾邮件发送工作变得昂贵;因此,这种机制可以用来阻止电子邮件垃圾邮件。Hashcash 需要大量的计算资源来进行计算,但是很容易快速地进行验证。验证由接收电子邮件的用户执行。Hashcash 因其在比特币挖矿过程中的使用而普及。使用计算谜题或定价函数来防止垃圾邮件的想法最初是由辛西娅·德沃克莫尼·诺尔在 1992 年提出的。定价函数是在授予资源访问权之前需要计算的硬函数的名称。后来 Adam Back 在 1997 年独立发明了 hashcash,引入了计算哈希函数的用法作为 PoW。

1998 年 b-money戴伟推出,提出了通过解决 hashcash 等计算难题来创造货币的想法。它基于对等网络,其中每个节点维护自己的事务列表。

Nick Szabo 在 2005 年提出了另一个类似的想法,名为 BitGold,也提出了解决计算难题来铸造数字货币。2005 年 Hal Finney 通过结合 b-money 和 hashcash 谜题的想法引入了加密货币的概念,但它仍然依赖于一个集中的可信机构。

前面不可行的段落中描述的方案存在多个问题。这些问题从没有明确的节点间不一致的解决方案到依赖中央可信第三方和可信时间戳。

2009 年,第一个名为比特币的加密货币的实际应用被引入;它首次解决了不可信网络中的分布式共识问题。它使用 hashcash 作为 PoW 的公钥加密技术来提供一种安全、可控和分散的铸造数字货币的方法。关键的创新是由事务组成的有序块列表的思想,并通过 PoW 机制进行加密保护。这个会在第四章比特币中更详细的解释。

纵观上述所有技术及其历史,很容易看出电子现金计划和分布式系统的思想和概念是如何结合在一起,从而发明了比特币以及现在所谓的区块链。

这也可以在下图的帮助下可视化:

The concept of electronic cash

有助于比特币和区块链发明的各种想法

区块链简介

区块链有各种各样的定义;看你怎么看了。如果你从商业的角度来看,它可以在那种背景下定义;如果你从技术的角度来看,你可以在那种背景下定义它。

区块链的核心是一个点对点的分布式账本,它是加密安全的、仅附加的、不可变的(极难更改),并且只能通过对等体之间的共识或协议来更新。

区块链可以被认为是运行在互联网之上的分布式对等网络的一层,如下图所示。它类似于运行在 TCP/IP 之上的 SMTP、HTTP 或 FTP。如下图所示:

Introduction to blockchain

区块链的网络视图

从商业的角度来看,区块链可以被定义为一个平台,通过该平台,对等体可以使用交易来交换值,而不需要中央可信仲裁器。这是一个强大的概念,一旦读者理解了它,他们就会意识到区块链技术的海啸潜力。这使得区块链成为一个分散的共识机制,其中没有单一的权力机构负责数据库。

一个块仅仅是为了逻辑地组织它们而捆绑在一起的事务的选择。它由事务组成,其大小取决于所使用的区块链的类型和设计。对前一个块的引用也包含在该块中,除非它是一个起源块。创世纪区块是区块链第一个硬编码的区块,在区块链开始的时候。块的结构也依赖于区块链的类型和设计,但是通常有一些属性对于块的功能是必不可少的,例如块头、指向先前块的指针、时间戳、随机数、事务计数器、事务和其他属性。

这显示在如下的简单框图中。这是一个区块的一般描述;与区块链技术相关的特定块结构将在本书后面更深入的技术细节中讨论:

Introduction to blockchain

街区的结构

区块链的各种技术定义

  • 区块链是一种去中心化的共识机制。在区块链中,所有对等方最终会就事务的状态达成一致。
  • 区块链是分布式共享账本。区块链可以被认为是交易的共享账本。事务被排序并分组为块。目前,现实世界的模型基于每个组织维护的私有数据库,而分布式分类账可以作为使用区块链的所有成员组织的单一真实来源。
  • 区块链是一种数据结构;它基本上是一个使用散列指针而不是普通指针的链表。哈希指针用于指向前一个块。

一般区块链的结构可以借助下图进行可视化:

Various technical definitions of blockchains

区块链的一般结构

区块链的通用元素

本节介绍区块链的一般要素。更精确的元素将在后面的章节中讨论它们各自的区块链,例如以太坊区块链。

地址

地址是在区块链的交易中用来表示发送方和接收方的唯一标识符。一个地址通常是一个公钥或者从一个公钥派生出来。虽然地址可以由同一用户重复使用,但地址本身是唯一的。然而,在实践中,单个用户可能不会再次使用相同的地址并为每次交易生成新的地址。这个新生成的地址将是唯一的。比特币实际上是一个假名系统。终端用户通常无法直接识别,但一些对比特币用户去匿名化的研究表明,用户可以被成功识别。作为一种良好的做法,建议用户为每笔交易生成一个新的地址,以避免将交易与共同所有人联系起来,从而避免识别。

交易

交易是区块链的基本单位。交易代表从一个地址到另一个地址的价值转移。

一个块由多个事务和一些其他元素组成,如前一个块的散列(散列指针)、时间戳和 nonce。

对等网络

顾名思义,这是一种网络拓扑,所有对等体可以通过它相互通信并发送和接收消息。

脚本或编程语言

该元素对事务执行各种操作。事务脚本是节点将令牌从一个地址传输到另一个地址并执行各种其他功能的预定义命令集。图灵完全编程语言是区块链的一个可取的特征;然而,这种语言的安全性是一个关键问题,也是一个重要且正在进行研究的领域。

虚拟机

这是一个事务脚本的扩展。虚拟机允许图灵完整代码在区块链上运行(作为智能合约),而事务脚本可以在其操作中受到限制。虚拟机并非在所有区块链上都可用;但是各种区块链都是用虚拟机来运行程序,比如以太坊虚拟机 ( EVM )和连锁虚拟机 ( CVM )。

状态机

区块链可以被视为一种状态转换机制,通过该机制,作为节点的事务执行和验证过程的结果,状态从其初始形式被修改为下一种形式,并最终被修改为最终形式。

节点

区块链网络中的节点根据其所扮演的角色执行各种功能。节点可以提议和验证事务,并执行挖掘以促进共识并保护区块链。这是通过遵循共识协议来完成的。(最常见是功率。)节点还可以执行其他功能,例如简单的支付验证(轻量级节点)、验证器和许多其他功能,这取决于所使用的区块链的类型和分配给节点的角色。

智能合约

这些程序运行在区块链之上,封装了在满足某些条件时要执行的业务逻辑。智能合同功能并非在所有区块链都可用,但由于它为区块链应用程序提供了灵活性和强大功能,现在正成为一个非常受欢迎的功能。

区块链的特点

区块链执行各种功能。这些将在下面详细描述。

分布式共识

分布式共识是区块链的主要基础。这使得区块链能够呈现所有各方都同意的单一版本的真相,而不需要中央权威。

交易验证

基于一组预定的规则来验证从区块链上的节点发布的任何事务,并且仅选择有效的事务来包括在块中。

智能合约平台

区块链是一个平台,程序可以在这个平台上运行,代表用户执行业务逻辑。如前所述,并非所有区块链都有执行智能合同的机制;然而,现在这是一个非常可取的功能。

在同行之间传递价值

区块链通过令牌实现了用户之间的价值转移。代币可以被认为是价值的载体。

生成加密货币

这是一个可选功能,具体取决于所用区块链的类型。区块链可以生成加密货币,作为对其矿工的激励,这些矿工验证交易并花费资源来确保区块链的安全。

智能物业

第一次有可能以不可撤销的方式将数字或实物资产与区块链联系起来,这样任何其他人都不能对其主张权利;你完全控制你的资产,它不能被双重花费或双重拥有。拿它和一个数字音乐文件做比较,比如一个数字音乐文件,可以拷贝很多次,没有任何控制;然而,在区块链上,如果你拥有它,没有人可以要求它,除非你决定把它转让给别人。该功能具有深远的影响,尤其是在数字版权管理(T1)和电子现金系统中,重复消费检测是一项关键要求。双重花费问题首先在比特币中得到解决。

担保的提供者

区块链基于成熟的加密技术,可确保数据的完整性和可用性。通常,由于透明度的要求,不提供保密性。这已经成为金融机构和其他需要交易隐私和保密性的行业对其适应性的主要障碍。正因为如此,这方面的研究非常活跃,并且已经取得了一些良好的进展。可以说,在许多情况下,并不真正需要保密,而更喜欢透明。例如,在比特币中,保密性并不是真正必需的;但是,在某些情况下这是可取的。这方面的研究已经非常成熟,并且在提供区块链的保密性和隐私性方面已经取得了重大进展。最近的一个例子是 Zcash,它将在后面的章节中详细讨论。区块链还提供其他安全服务,如认可和认证,因为所有操作都使用私钥和数字签名进行保护。

不变性

这是区块链的另一个关键特征:记录一旦被添加到区块链就不可改变。存在回滚改变的可能性,但是这被认为是几乎不可能做到的,因为这将需要无法负担的计算资源量。例如,在比特币的非常理想的情况下,如果恶意用户想要改变先前的块,则需要再次计算已经添加到区块链的所有那些块的功率。这个困难使得区块链上的记录几乎是不可改变的。

独特性

区块链的这一特性确保了每一笔交易都是独一无二的,并且还没有被花掉。这与加密货币尤其相关,在加密货币中,检测和避免重复消费是一项关键要求。

智能合约

区块链提供了一个运行智能合约的平台。这些是驻留在区块链上的自动化自主程序,封装了业务逻辑和代码,以便在满足某些条件时执行所需的功能。这确实是区块链的一个革命性的特性,因为它提供了灵活性、可编程性,以及对区块链用户根据其特定业务需求需要执行的操作的更好的控制。

区块链技术的应用

区块链技术在各个领域都有广泛的应用,包括但不限于金融、政府、媒体、法律和艺术。在第 9 章、总账中,我们将对这些方面进行更详细的阐述,其中将详细讨论各行业的实际使用案例。现在可以说,几乎所有行业都已经认识到区块链的潜力和前景,并且已经开始或即将开始从区块链技术中受益。

在下一节中,将讨论创建块的一般方案。这是为了让读者大致了解块是如何生成的,以及事务和块之间的关系。

区块链如何积累街区

  1. 节点通过用自己的私钥签名来启动事务。
  2. 通过使用非常理想的 Gossip 协议将事务传播(扩散)到对等体,对等体基于预设标准验证事务。通常,需要多个节点来验证事务。
  3. 一旦事务被验证,它就被包含在一个块中,然后被传播到网络上。此时,交易被视为已确认。
  4. 新创建的块现在成为分类帐的一部分,下一个块以加密方式将其自身链接回该块。这个链接是一个散列指针。在这个阶段,事务得到第二次确认,块得到第一次确认。
  5. 然后,每次创建新块时,都会重新确认交易。通常,比特币网络中需要六次确认才能认为交易是最终的。

步骤 4 和 5 可以被认为是非强制性的,因为交易本身在步骤 3 中完成;然而,如果需要的话,在步骤 4 和 5 中执行块确认和进一步的交易再确认。

区块链技术的层次

本节将讨论区块链技术的各个层次。据设想,由于区块链技术的迅速发展和进步,许多应用将随着时间的推移而发展。一些已经实现,而一些可以基于区块链技术的当前发展速度在未来预见。

首先,下面讨论的三个层次最初是由 Melanie Swan 在她的书 Blockchain,Blueprint for a New Economy 中描述为区块链的等级,根据每个类别中的应用进行分类。除此之外,第 X 层或第 X 代将在后面讨论。作者认为,当区块链技术足够先进时,这将成为现实。

区块链 1.0

这是随着比特币的发明而引入的,基本上用于加密货币。此外,由于比特币是加密货币的第一个实现,因此将第 1 代区块链技术归类为仅包括加密货币是有意义的。所有的另类币和比特币都属于这一类。这包括支付和应用程序等核心应用程序。

区块链 2.0

金融服务使用第 2.0 代区块链,合同是在这一代引入的。这包括各种金融资产,例如衍生品、期权、互换和债券。货币、金融和市场之外的应用程序包括在这一层。

区块链 3.0

第三代区块链用于实施金融服务行业之外的应用,并用于更通用的行业,如政府、卫生、媒体、艺术和司法。

X 世代(区块链 X)

这是区块链奇点的一个愿景,有一天我们将拥有一个公共的区块链服务,任何人都可以像谷歌搜索引擎一样使用。它将在社会的各个领域提供服务。这是一个公共开放的分布式账本,通用理性代理(玛奇纳经济学家)运行在区块链上,代表人类做出决策并与其他智能自主代理进行交互,受代码而不是法律或纸质合同的监管。这将在第 13 章当前形势和下一步中详细阐述。

区块链的种类

根据区块链在过去几年中的演变方式,它可以分为多种类型,这些类型具有不同但有时部分重叠的属性。

公用分块链

顾名思义,这些区块链对公众开放,任何人都可以作为一个节点参与决策过程。用户可能会因为他们的参与而获得奖励,也可能不会。这些分类账不归任何人所有,公开开放给任何人参与。无许可分类帐的所有用户在他们的本地节点上维护分类帐的副本,并使用分布式共识机制,以便对分类帐的最终状态做出决定。这些区块链也被称为无许可分类账。

列兵区块链

顾名思义,私有区块链是私有的,并且只对决定在他们之间共享账本的个人或组织的财团或团体开放。

半私立的区块链

这里区块链的一部分是私人的,一部分是公共的。私有部分由一群个人控制,而公共部分对任何人开放。

边链

更准确地说,这是一个概念,硬币可以从一个区块链移动到另一个,然后再移动回来。常见的用途包括创造新的替代硬币(替代加密货币),硬币被烧掉作为足够赌注的证明。侧链有两种类型。上面提供的燃烧硬币的例子适用于单向钉住的侧链。第二种类型称为双向挂钩侧链,允许硬币从主链移动到侧链,并在需要时返回主链。

许可分类账

许可分类帐是一个区块链,由此网络的参与者是已知的并且已经被信任。许可分类帐不需要使用分布式共识机制,而是可以使用协议协议来维护关于区块链上的记录状态的共享版本的真相。也不要求许可的区块链是私有的,因为它可以是公共的区块链,但是具有受管制的访问控制。

分布式分类账

顾名思义,该分类帐分布在其参与者中,并分布在多个地点或组织中。这种类型可以是私有的,也可以是公共的。关键思想是,与许多其他区块链不同,记录是连续存储的,而不是按块排序。这个概念用在 Ripple 上。

共享总账

这是一个通用术语,用于描述由公众或财团共享的任何应用程序或数据库。

完全私有和专有的区块链

这些区块链可能没有主流应用,因为它们偏离了区块链技术中的去中心化的核心思想。然而,在组织内部的特定私有环境中,可能需要共享数据并提供某种级别的数据真实性保证。在这种情况下,这些区块链可能会有用。例如,用于政府各部门之间的协作和共享数据。

符号化的区块链

这些区块链是标准的区块链,其通过挖掘或通过初始分发作为共识过程的结果来生成加密货币。

无标记块链

这些可能不是真正的区块链,因为它们缺少价值传递的基本单元,但是在不需要在节点之间传递价值并且只需要在各种已经信任的团体之间共享一些数据的情况下仍然是有价值的。

在下一节中,将从区块链的角度讨论共识的概念。共识是区块链的支柱,并通过一个被称为采矿的可选过程提供控制的分散化。共识算法的选择也受所用区块链类型的控制。并非所有的共识机制都适用于所有类型的区块链。例如,在没有公共许可区块链中,使用 PoW 而不是一些可能基于权威证明的基本协议机制是有意义的。因此,为区块链项目选择合适的共识算法至关重要。

区块链的共识

共识基本上是一种分布式计算概念,已在区块链使用,目的是提供一种方式,让区块链网络上的所有对等方同意单一版本的真理。这个概念在本章前面的分布式系统一节中已经讨论过了。

大致而言,存在以下两类共识机制:

  1. 基于证据的、基于领导者的或中本聪共识一个领导者被选举出来并提出一个最终的价值
  2. 基于拜占庭容错,这是一种基于轮次投票的更传统的方法

今天可用的或在区块链背景下正在研究的共识算法将在后面介绍。这不是一个详尽的列表,但是已经尝试给出所有重要的算法。

工作证明

这种类型的共识机制依赖于在提出网络接受的值之前已经花费了足够的计算资源的证明。这被用于比特币和其他加密货币。目前,这是唯一一个被证明对 Sybil 攻击惊人成功的算法。

股权证明

这种算法的工作原理是节点或用户在系统中有足够的股份;例如,用户已经在系统中投入了足够的资金,因此任何恶意尝试都将超过对系统进行攻击的好处。这个想法最早是由 Peercoin 提出的,并将在区块链以太坊使用。赌注证明 ( PoS )中的另一个重要概念是币龄,这是一个从时间量和未花掉的币数推导出来的。在这个模型中,提出和签署下一个区块的机会随着币龄的增长而增加。

委托股权证明

委托股权证明 ( DPOS )是对标准 POS 的创新,在系统中拥有股权的每个节点都可以通过投票将交易的验证委托给其他节点。这是在 bitshares 区块链使用的。

经过时间的证明

由英特尔推出,它使用可信执行环境 ( TEE )通过有保证的等待时间在领导者选举过程中提供随机性和安全性。它需要英特尔 SGX ( 软件保护扩展)处理器来提供安全保证,确保其安全性。在英特尔锯齿湖区块链项目的背景下,这一概念在第 9 章Hyperledger 中有更详细的讨论。

基于存款的共识

希望加入网络的节点必须先交付保证金,然后才能提出阻塞请求。

重要性的证明

这个想法很重要,不同于利害关系的证明。重要性证明不仅依赖于用户在系统中拥有多少股份,而且还监视用户对令牌的使用和移动,以建立信任和重要性级别。这是内姆币里用的。

联邦共识或联邦拜占庭共识

在 stellar consensus 协议中使用,该协议中的节点保持一组公开可信的对等体,并且只传播那些已经被大多数可信节点验证的事务。

基于声誉的机制

顾名思义,领导者是根据其在网络上随着时间的推移而建立的声誉来选举的。这可以基于其他成员的投票。

实用的拜占庭容错

实用拜占庭容错 ( PBFT )实现状态机复制,提供对拜占庭节点的容错。各种其他协议,包括但不限于 PBFT、PAXOS、RAFT 和联邦拜占庭协议 ( FBA ),也正在或已经被提议用于分布式系统和区块链的许多不同实现中。

CAP 定理和区块链

奇怪的是,在区块链似乎违反了上限定理,尤其是在最成功的实施中:比特币,但事实并非如此。在区块链,为了可用性和分区容差,牺牲了一致性。在这个场景中,区块链上的一致性 ( C )不会与分区容差 ( P )和可用性 ( A )同时实现,但是它会随着时间的推移而实现。这被称为最终一致性,一致性是随着时间的推移从多个节点验证的结果。为此,比特币中引入了挖矿的概念;这是一个通过使用称为 PoW 的共识算法来促进达成共识的过程。在更高的层面上,采矿可以被定义为一个用于向区块链添加更多区块的过程。

区块链的好处和局限性

区块链技术的众多优势正在区块链空间的行业内讨论,并由世界各地的思想领袖提出。下面列出并讨论了 10 大好处。

权力下放

这是区块链的核心理念和利益。不需要可信的第三方或中介来验证交易;相反,共识机制用于就交易的有效性达成一致。

透明和信任

由于区块链是共享的,每个人都可以看到区块链上的内容,这使得系统透明,从而建立了信任。这在诸如资金或福利支出等个人自由裁量权应该受到限制的情况下更为重要。

不变性

数据一旦写入区块链,就很难再改回来。它不是真正不可变的,但是,由于改变数据极其困难并且几乎不可能,这被看作是维护不可变的交易分类帐的一个好处。

高可用性

由于该系统基于对等网络中的数千个节点,并且数据在每个节点上被复制和更新,因此该系统变得高度可用。即使节点离开网络或变得不可访问,网络作为一个整体继续工作,从而使其高度可用。

高度安全

区块链上的所有交易都受到密码保护,并提供完整性。

当前范例的简化

许多行业(如金融或卫生)中的当前模型相当混乱,其中多个实体维护他们自己的数据库,并且由于系统的不同性质,数据共享可能变得非常困难。但是,由于区块链可以作为利益相关方之间的单一共享分类账,这可以通过降低管理每个实体维护的独立系统的复杂性来简化该模型。

更快的交易

在金融行业,特别是在交易后结算功能中,区块链可以通过允许更快的交易结算来发挥重要作用,因为它不需要漫长的验证、对账和结算过程,因为在金融组织之间的共享分类帐中已经可以获得单一版本的一致同意的数据。

节约成本

由于在区块链模式中不需要第三方或清算所,这可以极大地消除支付给清算所或受信任的第三方的费用形式的间接成本。

区块链技术的挑战和局限性

与任何技术一样,为了使系统更加健壮、有用和可访问,需要解决一些挑战。区块链技术也不例外;事实上,学术界和工业界正在努力克服区块链技术所带来的挑战。一些最敏感的挑战如下:

  • 可量测性
  • 适应性
  • 规章制度
  • 相对不成熟的技术
  • 隐私

所有这些以及更多将在第 13 章当前形势和下一步中详细讨论可能的解决方案。

这一章被有意地保持为一般性的和较少技术性的。一旦在第 3 章密码术和技术基础、中详细解释了密码术,将会以适当的技术深度和细节讨论特定的区块链解决方案。

总结

本章从较高的层面向读者介绍了区块链技术。首先讨论了分布式系统的一些基本概念,然后介绍了区块链的历史。讨论了电子现金和 hashcash 等概念。此外,从不同的角度提出了区块链的各种定义。还简要讨论了区块链技术的一些应用。本章接下来介绍了不同类型的区块链。最后,介绍了这项新技术的优点和局限性。有些主题只是被有意地轻轻带过,因为它们将在后面的章节中被深入讨论。例如,挑战和限制只在本章中提到,但没有提供细节,因为在本书的后面有一整章专门讨论这一点。在下一章中,读者将被介绍到非集中化的概念,这是区块链及其大量应用的核心概念。


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组