区块链的关键元素 一,加密哈希
散列是加密函数能够将任何输入数据转换成数字的固定长度的字符串。哈希函数的每个输入都会产生不同的输出,并且结果是确定的:如果使用相同的输入,则输出值将始终相同。哈希函数最重要的功能之一是转换是单向的:您无法反转该函数以生成原始输入。
有很多算法可以创建不同的哈希变量。您可以在此处检查SHA256哈希算法的工作方式。对于每个输入,该算法都会生成完全不同的输出,并且无法预测输入的变化将如何影响输出。区块链节点使用哈希函数创建任何交易块的唯一标识符。每个块都包含前一个块的哈希值。 二,不可篡改账本%
此功能与上一个功能紧密相关。由于链中的每个区块都包含前一个哈希,因此如果不更改整个链就不可能修改任何区块。因此,该链条充当不变的数字分类帐。让我们来看一个例子。我们具有以下链,其中每个块都已进行哈希处理,并且哈希包含在以下内容中:
如果匿名攻击者在第一块中删除,添加或修改了任何交易,则HASH#1将更改:HASH#1作为块2内容的一部分包括在内。因此,HASH#2也将更改,并且错误将传播到受攻击的块之后的链的每个块。然后,用户将声明链无效。 三,点对点(P2P)网络
区块链不需要任何外部或内部信任权限。这是可能的,因为区块链数据分布在所有用户中。每个用户都有自己的交易副本和哈希块,并且他们将任何新交易的信息传播到整个网络。这样,任何人都不可能更改链中的信息,因为它不是由单个实体存储,而是由整个节点用户网络存储。
验证交易块后,会将其添加到链中,并且每个用户都会更新其本地信息。即使攻击者要修改您的本地链,网络也不会接受来自更改后的区块链的任何阻止。 四,共识协议
但是真正的区块链是什么?用户需要在添加更多块之前就链的有效性达成协议。每次节点添加新块时,所有用户都必须使用通用协议来验证该块。通常,节点通过工作量证明或权益证明 方法就新块的正确性达成共识。
节点检查新块是否满足其Proof方法的要求,包括对块内所有事务的验证。如果该区块有效,他们将其视为区块链的一部分,并继续添加新区块。如果不同的用户具有不同的看似有效的链,则他们将丢弃较短的链,并选择最长的链作为主区块链。像在任何拜占庭式的Torelance(BFT)系统中一样,它们将满足有关正确链的协议,而总节点中至少有2/3不是恶意的。
五,区块验证或“共识”
术语``挖矿''是指满足工作量证明要求的行为,用于将具有待处理交易的新区块添加到区块链。有许多不同的挖掘方法,因为它们是为链定制定义的。PoW方法通常要求用户创建对其哈希码有限制的块。由于哈希码是不可预测的,因此“矿工”必须在符合要求之前测试任何可能的组合。这些限制定义了网络的难度。 |