在本文中,我将在更具架构性的层面上解释什么是区块链技术。当你问10个人他们认为区块链这个术语的含义时,你可能不会惊讶于得到10个不同且相互矛盾的答案,因为使用术语区块链可能会有点混乱。很多人将它连接到比特币或其他虚拟(加密)货币。有些人谈论以太坊应用平台,有些人谈论智能合约(可执行代码),但大多数时候区块链被解释为分布式共享分类账。

本质上,区块链是一种维护数字分布式分类账的系统,允许彼此不完全信任的个人就共享分类账的更新达成一致。区块链使用对等协议而不是中央机构或第三方来分发和验证实体之间的事务。没有单点故障,因此实体可以在不影响组的情况下出现,消失或发生故障。

什么是区块链技术

在谈到区块链技术时,我们总是将其称为分布式账本技术(DLT),它形成了比特币背后的基础开源技术。区块链是一种数字系统,用于记录列表中资产的交易,该列表在网络中的可用节点之间复制,而不是像传统数据库那样存储在中央数据存储中。

在诸如区块链的分布式分类账中,数据以近乎实时的方式使用对等协议以无信任的方式(意味着没有像VISA,MasterCard或您的银行这样的可信第三方)分发到所有节点。每个节点分别独立地处理和验证每个事务,将验证的事务捆绑到一个块中,并将它们广播到网络中的所有其他节点。通过共识机制,交易块由其他节点验证,其中大多数必须在块成为最终块之前批准块并将其添加到区块链中。

区块链使用数字签名和加密技术的组合来证明您的身份和真实性,并强制执行读/写和执行权限(访问权限)。这使得可以允许某些参与者的写访问权以及对其他参与者甚至更广泛的受众的读访问权。就是每个人。如果您将区块链与传统数据库进行松散比较,则区块链是一个包含普通数据库和一些额外软件的系统,该软件在将新记录添加到数据库之前验证提交的记录是否符合先前商定的规则。这个额外的软件监听并向参与网络的所有节点或对等体广播新记录,确保每个对等体在其数据库中具有相同的数据。

下图概述了构成区块链技术的功能:

区块链使用的主要技术分为五组,每组代表架构中的不同层。

从技术上讲,区块链是一种新的数据存储方法。它实际上只是一个具有预定义数据结构的文件(即,数据如何逻辑地放在一起)。它可以与其他数据结构进行比较,例如关系数据库(表,列和行),XML文件,逗号分隔值(csv),Excel数据库文件和二进制文件(图像和视频)。我经常使用的类比是链中的块与书中的页面相同。在一本书就像下列操作之一每一页都有一堆文本在结构化的段落,以及信息有关的上下文(也称为元数据),如文章编号,文章标题,和页码。

类似地,在区块链中,每个块包括内容集合,例如事务列表,以及包含关于块的技术信息,对前一块的引用以及数字签名(哈希)的头部。块中包含的数据。区块链,其中块彼此链接以形成链,类似于书中的页面。页面使用顺序编号,以便于了解订单。如果将书页从书中拉出并扔进一堆,就很容易将它们整理回来。不过,区块链更聪明。

下图显示每个块通过块的指纹链接回前一个块。指纹由各个块的内容和前一个块的指纹决定:

链中的每个块都链接回其前一个块,就像书中的页码一样。

在一本书中,页面的排序隐含地建立在一个数量少一个的页面上;也就是说,第13页在第12页(13-1)之后,而块由彼此构建的指纹或散列表示。例如,具有散列8ec6cc0的块3通过将其数据与前一块的散列9a59c5f一起散列来确定。通过使用基于前一个指纹确定的指纹,它可以用于验证数据的内部一致性。此方案显示在以下屏幕截图中:

两个块通过散列的指纹链接在一起。块#2的指纹基于其数据和块#1的指纹。

您可以通过自己生成指纹并将其与作为块标题一部分的指纹进行比较来检查块内数据是否一致。如果有人想要更改存储在其中一个早期块中的信息,则需要从该点重新生成所有指纹,直到链的末尾。但是,区块链似乎会被改变,其他人立刻就会注意到。

根据所使用的一致方法,这些指纹的创建可能是一个非常困难和缓慢的过程,这使得重写区块链非常成问题。此外,区块链中已经存在的块的数量可能很大,例如比特币(06.03.2018:512253块,大小为156 GB)。以下屏幕截图显示,更改数据时,哈希值也会更改,并且块变为无效:

块#2中的数据被更改,并且它生成与以前不同的指纹。

区块链技术如何运作

区块链背后的技术(即架构,机制,安全性等)既可以作为未来会计的支柱,也可以作为现代消息传输系统的引擎。那么区块链在运行时如何实际工作呢

下图显示了区块链系统必须如何遵循特定的操作流程,以便始终如一地维护事实的分布式分类帐(具有当前资产状态的键值数据库)以及单独的更新历史记录(分布式事务日志)。您提交的交易将在没有使用高级数学和计算机科学的管理中心机构(即加密哈希函数)的参与下进行存储和验证。区块链不仅可以保护这些交易,还可以保护其完整性(和匿名性)。

事务从提交到大多数网络验证的流程。

现在让我们仔细看看描述区块链中交易流程的上图。当您想要与区块链上的其他人交换数据时,您可以通过提交建议更改的交易来执行此操作。交易通常包含应在其中执行的上下文(操作)以及可以数字形式描述的任何资产,例如货币,合同,事件和医疗记录。建议的资产变更的数据结构既可以是结构化的,也可以是非结构化的,但它通常表示为JSON(JavaScript Object Notation),它是数据对象的人类可读文本格式。

典型的区块链提供客户端API以与事务交互,但通常您将使用调用API的Web应用程序,您将使用该API将事务提交到网络中的某个活动节点(对等方)。根据网络的功能,事务可以在本地验证,也可以使用peer-to-peer直接广播到网络中的所有活动节点(P2P)网络。在本地验证后,您的交易仅在基于一组网络规则进行验证后广播。接收您的交易的每个节点将根据网络规则立即验证或将其转录为安全记录并将其置于待处理事务的队列中。在这种情况下,节点;也就是说,网络中的参与计算机或服务器根据网络已同意的一组规则验证您的交易是否有效。例如,您的事务可以触发参与节点执行业务逻辑(例如智能合约)并遵循共识协议来验证结果。

一些共识协议要求您支付交易费用以验证您的交易。您支付的金额是您交易的一部分,它决定了验证所需的时间。创建块的某些节点仅验证具有更高奖励的事务。根据网络协议定义的规则,验证节点将事务组合成块并对结果进行数字指纹,以便网络中的其他节点可以验证它们。就像事务一样,使用对等网络将块广播到所有活动节点。

达成共识时,根据网络的规则,参与节点要么批量处理事务并将结果存储为加密安全的不可变数据块,要么将它们作为已批准的块并将其附加到其分类帐。共识协议可能包括创建块的节点的奖励系统,或者要求您支付交易费以将货币分配给合法的收件人。

遵循共识机制和网络规则,可能需要几个块,直到您可以确定您的交易已经过验证而不是孤立链的一部分。多个对等体可以同时创建块或彼此间隔几秒。这可以在链中产生一个叉子。两个块最初都被大多数网络接受,创建了两个链。但是,对于任何事务块,只有一种方法可以生成块(即,首先在链中创建),并且最终拒绝作为较小链的一部分的块。

在下图中,您可以看到最长的链存活并且较小的链被拒绝:

起源块以绿色显示。主链显示为黑色,孤立/拒绝链显示为红色。

作为被拒绝块的一部分的那些事务被添加回排队事务池,并最终将包含在另一个块中。对于使用激励模型的区块链,某人为解决孤立区块而获得的奖励实际上已经丢失。