随着比特币的兴起,企业对底层区块链技术的兴趣急剧上升。然而,混乱出现了,因为大部分讨论都集中在加密货币上,这只是使用区块链的一种方法。为了确定一种对物联网有意义的方法,开发人员必须首先将区块链剥离到其基础并从那里构建。
本质上,区块链技术为节点网络提供了一种机制,可以安全地交换信息(称为交易)并相互创建一个共享账本,将这些交易记录在一个防止更改的记录中。基本流程很简单,如下图1所示。一个节点安全地通知所有其他交易,他们验证并添加到他们的待处理交易列表中。在某些时候,“发布节点”会创建一个数据块,其中不包含、部分或所有待处理的交易,并将其呈现给网络。当节点就提议的块是有效的达成共识时,他们会将其添加到共享账本的副本中,并从待处理列表中删除相应的交易。
每个新块都包含与添加到分类帐中的前一个块的加密链接,后者又具有与其前任块的链接,并在一条完整的链中继续返回第一个(创世)块。加密链接确保链中的任何块都可以在不被发现的情况下被更改,并且分类帐的许多副本确保没有可以破坏分类帐的单点故障。区块链技术中的其他机制确保所有交易都被记录下来,并且与不正确的账本副本相关联的区块会被拒绝,因此账本的所有功能副本都是相同的。
图 1区块链的基本操作很简单,但在每个阶段都有许多可用选项。
虽然区块链实施的整体操作看起来很简单,但仍有许多操作问题必须解决。节点如何加入网络?交易的内容是什么?它是如何验证的?哪些节点可以发布区块?多常?它的内容是什么?节点如何就区块的有效性达成共识?如果有几个不同的块同时等待验证会发生什么?区块链开发人员对这些问题的回答将决定其实施在其预期应用中的运营有效性。有许多选项可用于回答这些问题;比特币只是为加密货币应用程序开发的一种选项配置,甚至不是唯一的加密货币区块链。
为特定应用程序定义区块链实现的一个起点是回答节点如何加入网络的问题。基本上有两种类型的区块链网络:无许可和许可。无许可区块链,也称为公共区块链,对哪些节点可以加入网络没有任何限制,所有节点都可以参与验证和共识工作。这导致高度分散和冗余的配置。比特币是一个无需许可的区块链网络。
许可网络,也称为私有区块链,控制哪些节点可以加入,以及哪些节点被授权参与验证和共识。与公共区块链相比,它的冗余更少且更集中,但可以提供更高的性能。区块链的大多数企业和物联网应用都可能使用许可的网络结构。
无论区块链网络的配置如何,它们的块都具有相似的结构。在节点宣布交易之前,它会使用其私钥对该交易进行加密,以对消息进行数字“签名”。它可以将其公钥与交易一起分发,以便其他节点可以验证交易记录的准确接收,或者节点可能已经拥有密钥的副本,以便它们可以验证授权消息以及拒绝未经授权的消息。事务本身可以包含几乎任何类型的数据,但通常还指定数据传输的源和目标。
一个或多个发布者节点会将一组经过验证的交易组合成一个块,该块将被添加到链中并将候选块分发到网络。除了交易数据之外,该块还包括一个标头,该标头包含来自链中前一个块的标头的加密散列、时间戳和候选块数据的加密散列。标头还可以包括称为随机数的唯一标识符以及系统可能需要的其他类型的信息。
图 2每个块的头部都包含前一个块头部的加密哈希,因此创建了一个无法在没有检测到的情况下更改的链。(来源:NIST)
在候选块被添加到链中之前,网络中的其他节点必须同意它是有效的,即达成共识。根据网络配置,节点可能并非全部参与此共识工作。例如,在为物联网设计的区块链中,可能有仅交易节点不维护链的副本,甚至不维护其他节点的交易;他们只是将他们的数据发布到网络上。可能存在仅保留标头副本的轻量级节点。只有完整节点,即验证和保留交易的节点,才会保留区块链的完整副本。然而,全节点可能是也可能不是发布节点,并且可能参与也可能不参与共识工作。网络的配置,尤其是私有区块链网络的配置,决定了哪些节点承担哪些角色。
节点验证候选块的方法——共识机制——是区块链设计者拥有相当大的自由度的领域之一,但它也可能涉及相当大的复杂性。分布式账本的一个基本问题是,在实践中,网络中的一些节点将是不可信的,并且会故意或意外地生成可能污染账本的不良信息。这在比特币等无许可网络中是一个特殊的风险;坏人进入网络没有任何障碍,并且有足够的动力去“煮书”。但即使在许可网络中,也存在一个或多个节点不可信的风险。
幸运的是,当一些参与者试图插入错误信息时,试图就区块的有效性达成共识是信息论中一个经过充分研究的情况,称为拜占庭将军问题。这项研究产生了许多共识机制,但在大多数区块链实现中使用了四种主要类型:工作证明 (PoW)、权益证明 (PoS)、委托权益证明 (DPoS) 和实用拜占庭容错 (PoW)。 PBFT) 算法。每种方法在抵抗恶意行为的能力、发布者和全节点的计算效率、通信带宽要求等方面都有其优点和缺点,但第一个和第四个特别值得注意。
PoW 是比特币中使用的共识机制。本质上,它需要一个发布节点在创建候选块之前解决一个密码难题。难题是确定要包含在块头中的随机数,以便该头的哈希满足特定条件,例如至少有这么多前导零。解决这个难题是一项计算密集型工作(工作),涉及使用随机生成的 nonce 值进行多次试验,直到获得满意的结果。一旦一个正在处理拼图的节点找到了它的“黄金随机数”,它就可以发布它的候选块。然后,其他节点可以通过对块数据进行自己的哈希来验证标头的元素,从而轻松验证结果,然后使用候选随机数对重建的块头进行哈希处理,以验证是否满足条件。由大多数完整节点验证的第一个候选块获胜,节点将该块添加到区块链中。
PoW 作为一种安全的共识机制发挥作用,因为不良行为者首先以一种与有效块数据生成相同数据散列(散列“冲突”)的方式更改块数据然后生成黄金的可能性非常小在任何其他节点可以生成有效块之前,为其损坏的块提供随机数。然而,生成黄金随机数的计算量非常大,以至于比特币为潜在的发布节点提供了激励,以确保他们做出尝试。这样的发布节点(称为比特币“矿工”)将在创建一个赢得网络同意添加到链中的区块时收到付款(以新铸造的比特币)。
然而,PoW 共识机制浪费了大量的处理能力来防止不良行为者污染区块链。虽然在公共区块链中有数百万美元需要保护时,这可能是可以接受的费用,但对于物联网可能使用的私有区块链类型来说,它很少具有成本效益。一种适用于私有区块链更受控环境的计算效率更高的方法是PBFT 算法,其变体用于通过 Linux 基金会作为开源代码提供的Hyperledger Fabric 。
在 PBFT 算法中,网络的发布节点形成一个有序的序列,其中一个节点暂时充当主导节点,这一时期称为“视图”。在其看来,领先节点发布其候选块以及包含其标识和区块链状态的“预准备”消息。然后,其余节点必须通过将块的标头和数据哈希以及区块链状态与其内部生成的副本进行比较来验证该块。然后节点在“准备”消息中向所有其他节点广播他们对该块的接受或拒绝投票。
当超过三分之二的节点报告接受时,每个节点都会发布一条“提交”消息,确认投票成功以及节点将区块添加到其区块链的意图。当超过三分之二的其他节点同意提交时,所有节点都可以继续并将候选块附加到他们的区块链中。一旦成功附加了一个块,视图就会发生变化,并且前导节点的角色将移动到序列中的下一个节点。或者,如果在设定的时间范围内没有达成共识,节点会丢弃候选块,视图会发生变化,并且序列中的下一个节点将成为领先节点,再次尝试就区块达成共识。
图3PBFT共识算法的消息序列和流量
使用 PBFT 算法,网络可以快速识别和隔离行为不端的节点,即使领导节点是不良行为者。如果一个节点过于频繁地拒绝有效块或在它是领先节点时未能达成共识,其他节点可以学会将其视为错误或恶意而忽略它。在许可网络中,系统甚至可以包括一个监督算法,可以从网络中永久删除行为不端的节点。
该算法涉及的计算量要少得多,并且比 PoW 方法执行得快得多,因为没有要解决的难题,只需验证哈希即可。此外,一次只有一个节点被授权发布候选块,因此当不同节点采用不同(但有效)的候选块时,不会出现意外的“分叉”链。由于挖矿竞争,如果两个成功的候选者同时出现,比特币中可能会出现这种分叉,因此比特币必须使用额外的算法来修剪分叉。
PBFT 的主要缺点是与共识相关的消息流量。因为每个完整节点都必须将其预提交和提交消息发送到所有其他节点,所以消息数量呈指数增长。然而,对于物联网实施,这可能不是一个重大限制。
考虑一个系统,其中几个组织(一个财团)相互建立一个许可的区块链网络,用于跟踪需要冷藏储存和运输的易腐货物的处理,从源头通过仓库到最终客户。每个处理程序(来源、运输提供商、仓库、分销商、零售商等)都为区块链维护一个发布节点。最终客户也可能有一个链接到网络的非发布节点,用于跟踪他们特定购买的区块链。
物联网传感器监控货物,定期将其位置和温度信息发送到每个利益相关者的节点,以创建和维护跟踪货物的区块链。发布节点参与 PBFT 共识机制,形成区块链,记录商品从源头到客户的移动和温度历史。结果是一个区块链,如果出现问题或需要证明,它可以为所有各方提供一致且不可变的记录。
这样的网络将不需要大量的发布节点——只有那些相互有合同承诺的利益相关者才需要共识投票来维护交易的相互分类账。可能还有其他利益相关者希望维护一个副本,从而连接到网络,但他们的流量仅随着添加节点的数量线性扩展。因此,使用 PBFT 共识的经过仔细考虑且结构良好的私有区块链可以避免带宽问题。
当然,诀窍是选择网络结构、共识机制、通信方案、块和标头定义以及其他此类细节,以使区块链的操作适合应用程序的需求。有许多可能的实现方式,其中一些可从区块链即服务 (BaaS) 提供商处获得,例如亚马逊、IBM、微软等。还有一些开源软件,例如 Hyperledger 项目,可供那些寻求开发自定义区块链实施的人使用。
在最抽象的情况下,区块链技术允许创建和维护分布式、防篡改的数字交易记录。该记录可供相关方检查,但不可更改。尽管交易是可见的,但根据区块链的配置,参与交易的各方可能是匿名的或可识别的。正确配置和应用的区块链可以帮助提高物联网交互的信任度和效率。
审核编辑:汤梓红
-
物联网
+关注
关注
2903文章
44253浏览量
371067 -
区块链
+关注
关注
110文章
15560浏览量
105753
发布评论请先 登录
相关推荐
评论