区块链 - 高级概念

高级区块链概念包含CAP 定理、区块链中的共识加密原语、区块链中的数据结构区块区块头等主题。在完成区块链技术和密码学的基本概念和术语后,需要理解这些概念。

CAP 定理:是什么以及如何实现?

CAP 定理经常在区块链技术的背景下被讨论。该定理强调分布式系统只能实现三个期望特性中的两个:一致性、可用性和分区容错性。它断言分布式系统不可能同时提供所有三个保证:一致性、可用性和分区容错性。 CAP 中的 C、A 和 P 代表 −

  • 一致性 − 所有用户必须同时看到相同的信息,无论他们使用哪台计算机。为实现这一点,任何添加到一台计算机的信息都必须立即发送到系统中的所有其他计算机进行存储。
  • 可用性 − 用户在请求信息时应该收到响应,即使某些计算机无法运行。系统中的每台计算机都应对任何请求做出响应。
  • 分区容错性 − 如果两台计算机之间的连接丢失,则被视为分区。分区容差确保系统即使计算机之间的连接出现问题也能继续运行。
CAP 定理

在区块链系统的背景下,CAP 定理非常重要,因为它有助于理解区块链设计期间需要做出的妥协。例如,优先考虑一致性可能会导致可用性降低或网络分区处理能力减弱。相反,优先考虑可用性和分区容差可能会影响一致性。

什么是拜占庭将军问题?

共识机制在任何区块链架构中都发挥着至关重要的作用,因为它保证了去中心化计算机网络中信任、协议和安全的保存。共识机制解决的主要挑战之一是拜占庭将军问题,它涉及在分布式系统中达成共识。有各种共识机制可供选择,每种机制都有各自的优缺点。常用的机制包括工作量证明 (PoW)、权益证明 (PoS)、委托权益证明 (DPoS) 和实用的拜占庭容错 (PBFT)。共识机制的选择受到区块链网络的特定需求以及安全性、可扩展性和能源效率之间的必要权衡的影响。

拜占庭将军问题源自拜占庭军队的历史场景,是一个计算机科学难题,涉及在去中心化环境中达成共识,其中某些参与者可能会表现出错误或恶意行为。在这种情况下,确保所有节点就特定事项(例如区块链内交易的价值)达成一致变得很复杂,尤其是当某些节点可能提供误导性或矛盾的信息时。缺乏安全的通信渠道会带来单点故障的风险,即所谓的拜占庭故障,其中组件可能会发生故障,并且不确定组件是否确实发生故障。

区块链试图通过建立一个不需要信任每个人的信任层来解决此问题。矿工和验证者在这个系统中扮演着至关重要的角色。他们的目标是按照游戏规则向账本添加新条目。解决拜占庭将军问题的一种常见共识机制是 PoW。在 PoW 中,网络节点竞争解决加密难题,第一个成功的节点将下一个区块添加到链中。随后,其他节点验证该区块,并在就其有效性达成共识后,将其添加到他们的账本中。此过程确保了一种分散且安全的达成系统状态共识的方法。

另一种流行的共识机制是PoS。在 PoS 中,根据节点持有的加密货币以及愿意作为抵押品的加密货币来选择节点来验证交易。这种设置激励节点诚实行事,因为任何恶意行为都可能导致其质押资金损失。

PBFT 是一种共识机制,利用共识协议来确定下一个要附加到区块链的区块。通过节点之间的通信,达成一致,并且节点只有在收到来自网络内其他节点的足够投票后才被允许将区块添加到区块链。

共识机制

区块链共识是网络中的对等方就数据当前状态达成一致的过程。它是去中心化系统中的关键机制,为安全和机密交易提供信任和安全。没有共识,冲突交易就无法避免,这对于加密货币区块链的运行至关重要。存在各种类型的共识机制,每种机制的能源使用、安全性和可扩展性都不同,但所有机制都具有确保记录完整性的共同目标。

以下是分布式系统为达成共识而使用的一些最著名的共识机制的概述 −

  • PoW 是最初的共识机制,被比特币和以太坊等加密货币所采用。矿工们竞相解决复杂的数学难题,第一个解决难题的人被允许创建新的区块并验证交易。成功的矿工还会获得称为区块奖励的加密货币。PoW 被认为是一种安全可靠的机制,但需要大量的计算资源和能源,导致高昂的运营成本和环境影响。
  • PoS 是一种比 PoW 更环保的替代方案。在 PoS 中,矿工质押一定数量的加密货币,并被随机选中来验证交易。矿工持有的加密货币越多,被选中的机会就越大。该系统偏向拥有更多代币的实体,从而导致中心化问题。
  • DPoS 是 PoS 的一种变体,网络用户投票选择证人代表他们保护网络。只有获得最多选票的顶级证人才能验证区块链交易。证人面临被那些被认为更值得信赖的人取代的风险,因此受到激励以保持诚实。
  • 活动证明 (PoA) 是 PoW 和 PoS 的混合体,由 Decred 和 Espers 区块链项目使用。挖矿过程以 PoW 开始,矿工竞相解决数学问题,然后切换到 PoS,选择验证者签署区块头。区块奖励由矿工和验证者共享。PoA 因其能源密集型挖矿阶段和偏向持有更多代币的验证者的偏袒而受到批评。
  • 权威证明 (PoA) 与 PoS 不同,它根据声誉而不是质押加密货币来选择验证者。这种方法需要的计算能力最少,资源效率更高,但它因可能将权力集中在少数权威节点上而受到批评。

加密原语

各种加密原语类别包括以下 −

  • 单向哈希函数 − 这些是数学算法,它们接受消息并生成固定长度的数字字符串,称为哈希或摘要。它们通过防止更改来确保数字数据的完整性。重要的是要注意,即使输入中的微小修改也会导致完全不同的哈希输出,这种现象称为雪崩效应。广泛使用的哈希函数是 SHA-256。
  • 对称密码 − 当使用密钥加密消息时,它会转换为密文,看似可读但缺乏意义。使用相同的密钥将密文恢复为其原始消息。密钥用作加密和解密的变量,充当保护或释放数据的机制。基于密钥的加密算法的著名示例包括 AES、DES 和 Blowfish。虽然对称加密通常比公钥加密提供更快的处理速度,但挑战在于密钥的安全共享。
  • 非对称密码 − 这些使用一对密钥,一个用于加密信息(公钥),另一个用于解密信息(私钥)。示例包括 RSA、DSA 和椭圆曲线加密。
  • 分组密码 − 这些以固定大小的块(例如 64 位或 128 位)加密数据。它们经常与哈希函数结合使用,以确保长消息的安全性。
  • 流密码 −它们一次加密一个比特或一个字节的数据,这使得它们对于保护实时信息(例如音频或视频流)特别有效。
  • 数字签名 − 它们提供了一种验证数字消息或信息真实性的方法,确认它来自声称的发送者。它们使用非对称密码来创建可以使用发送者的公钥进行验证的签名。
  • 消息认证码 − 它们类似于数字签名,但使用对称密码来制作代码,可以使用制作代码的相同密钥进行检查。

区块链中使用的数据结构

区块链技术利用了几种对其安全性和运行效率至关重要的基本数据结构。区块链的核心由两个主要数据结构组成:区块和链接列表。各种区块类别包括 −

  • 大多数区块旨在扩展现有的主区块链,主区块链被认为是网络中最长的链。这些被称为主分支区块。
  • 相反,一些区块可能链接到不属于最长区块链的父区块,这些区块被称为侧分支区块。
  • 此外,还有一些区块连接到处理区块的节点无法识别的父区块;这些区块被归类为孤立区块。

区块链中新区块的生成方式是通过一个称为哈希的唯一标识符将其链接到前一个区块。这个新区块包含前一个区块的哈希、新的交易详细信息和一个称为随机数的随机数。只有在所有网络计算机都验证了交易后,区块才会被纳入区块链。这个验证过程至关重要,因为它确保交易是永久的和不可变的,这是区块链技术的基本特征。区块内的数据通过一种称为哈希的方法进行压缩,以最小化其大小。每个区块都包含特定时间范围内的所有已确认交易。随着更多区块的添加,它们共同形成一条称为区块链的链,这是区块链安全性的结构基础。

区块链的特征

区块链中的每个区块都具有独特的结构,由各种关键组件组成 −

  • 标头 − 区块的这一部分包含基本元数据,例如区块的唯一标识符(区块哈希)、时间戳以及链中前一个区块的哈希。区块之间的这种连接形成了一个连续的链条。
  • 交易 − 一个区块内可以找到多个交易,代表数字资产从一个用户转移到另一个用户。这些交易在附加到区块之前要经过网络参与者(节点)的处理和验证。
  • Merkle 树根 − 为了简化区块内交易的验证过程,我们使用了 Merkle 树。这种二叉树数据结构可以高效、安全地验证大型数据集。
  • Nonce − 矿工使用 nonce(一个随机数)来解决将区块添加到区块链所需的加密难题。当 nonce 与其他区块头数据结合时,会生成满足网络难度标准的哈希值。
  • 难度目标 − 此值设置向区块链添加新区块的难度级别。难度会定期调整,以保持一致的区块创建率并防止区块链内的区块溢出。

区块头哈希和区块高度

区块链内的区块需要一种标识形式来区分彼此。为此目的使用了两个关键参数 −

区块头哈希用作唯一标识符,通过对区块链内的区块头进行哈希处理生成。此加密哈希处理过程执行两次,从而生成一个封装有关区块的基本详细信息的值。这些详细信息包括区块添加的时间戳、对前一个区块的引用、总结交易的 Merkle 树根、用于挖掘的随机数以及用于挖掘的难度目标。哈希值是使用加密函数生成的,确保对区块头的任何修改都会产生不同的哈希值。此哈希值在传输过程中不会存储在区块的数据中,也不会存储在某些节点的区块链中。

区块识别的第二个参数是其高度,表示区块在区块链中的位置。区块高度从创世区块的零开始,每个后续区块都会增加一。此指标对于保持区块链内的时间顺序和确定区块的顺序至关重要。

创世区块

区块链的初始区块称为创世区块。这个第一个区块意义重大,因为它标志着区块链的开始,并作为所有后续区块的基础。比特币和其他加密货币的创世区块是在各自网络上开采的第一个区块。区块链中的每个区块都包含与网络上的交易相关的信息,并通过唯一的标头进行区分。但是,创世区块与所有其他区块不同,它没有前一个区块。它通常包含特定数据,例如时间戳和消息,用于启动区块链。

创世区块的创建是区块链开发的关键时刻,因为它确立了网络的基本规则和特征。这些规则,例如区块大小和挖矿奖励,在创世区块创建后就一成不变,无法更改。作为区块链的第一个区块,创世区块在塑造网络起源的叙述方面也发挥着至关重要的作用。

比特币网络的去中心化性质是其主要特征之一,这意味着用户和网络之间没有中介。为了确保网络上交易的有效性,需要使用复杂的数学问题,这些问题由称为比特币矿工的计算机解决。矿工在完全解决数学难题之前无法交易比特币。此外,比特币网络上的所有交易都会被永久记录,因此不可能掩盖任何非法活动的证据。

区块链接

在区块链中链接区块的过程对于维护系统的安全性和完整性至关重要。每个区块都包含与交易相关的数据,并通过称为前一个区块哈希的引用与其前身相连。区块中包含的数据是不可变的,可以进行验证。这些区块按顺序排列,形成一个链条,以确保其正确排列。此引用的功能类似于指纹,有助于保存区块的顺序。

为了生成此引用,区块头中的信息会经历加密转换。此转换采用数学算法来创建唯一标识符,称为哈希。区块头中的任何更改都会导致哈希发生变化,从而使其他网络参与者可以轻松检测到任何修改。链条是通过加密技术建立的,每个区块都包含一个唯一的代码或哈希,将其连接到前一个区块。此外,哈希还记录了区块被纳入区块链的时间戳。如果区块内的任何信息被修改,哈希值将有所不同,从而破坏链的连续性。

Merkel 树

Merkle 树,也称为哈希树,是一种数据结构,其中每个叶节点代表单个数据块的加密哈希,而每个非叶节点代表其子节点哈希的加密哈希。这种类型的树通常用于验证区块链网络中的交易,并且效率很高。大多数 Merkle 树遵循二进制结构,每个节点只有两个子节点,但有些可能有多个子节点。在计算机科学领域,Merkle 树是一种广泛采用的数据结构形式,可以通过一系列哈希计算有效地汇总区块中的所有交易。

在 Merkle 树中,交易被排列到叶节点中,每个叶节点包含单个交易的哈希值。然后将叶节点的哈希值配对并再次进行哈希处理,以生成一组中间节点。这个过程不断重复,直到生成一个称为 Merkle 根的哈希值。

Merkle 根是一种简单的数学技术,用于验证 Merkle 树中的信息。它包含在区块头中,是区块内所有交易的简明摘要。当一个新区块被附加到区块链时,它的 Merkle 根被合并到前一个区块的哈希值中,从而建立两个区块之间的连接。

Merkel Tree

为了理解 Merkle 树的功能,让我们看一个简单的例子:假设一个区块中有四笔交易,分别表示为 A、B、C 和 D。然后,每笔交易都会转换为不同的字符串(哈希):哈希 A、哈希 B、哈希 C 和哈希 D。然后,这些哈希会配对以创建两个新哈希:哈希 AB 和哈希 CD。

最终,这两个哈希会合并以生成 Merkle 根,即哈希 ABCD。虽然此示例简化了 Merkle 树的概念,但实际结构要复杂得多,尤其是当每笔交易都具有 64 个字符长的 ID 时。尽管如此,此示例还是让您对算法的操作及其功效有了基本的了解。Merkle 树可用于有效监督和验证参与者参加独家销售或活动的资格。以下是详细解释 −

生成唯一标识符

每个参与者或潜在买家都会分配一个唯一标识符,例如他们的以太坊钱包地址或链接到其帐户的任何其他独特标识符。

建立白名单

NFT 销售的组织者制定一个白名单,其中包含有资格参加独家活动的参与者的唯一标识符。此白名单本质上包含允许参与的地址名册。

对参与者标识符进行哈希处理

对参与者的唯一标识符(地址)进行单独哈希处理。这可以使用哈希函数(例如 SHA-256)来实现,从而为每个标识符生成一个哈希值。

构建 Merkle 树

哈希标识符被构造成 Merkle 树格式。Merkle 树是通过对各个哈希进行配对和哈希处理直到得出单个根哈希来构建的。

宣布 Merkle 根

组织者披露 Merkle 树的根哈希。此哈希可作为整个白名单的简洁且安全的表示。

参与者验证

对 NFT 销售感兴趣的参与者可以通过对其标识符进行哈希处理并将其与已发布的 Merkle 根进行比较来检查其资格。如果哈希匹配,则参与者在白名单上。

高效的验证过程

通过 Merkle 树验证资格在计算上是高效的。参与者无需透露其标识符;他们只需提供哈希值。这确保了隐私,同时允许高效验证。

活动访问

在 NFT 销售或活动期间,只有白名单上的标识符(与 Merkle 根匹配)的参与者才被授予访问权限。这为白名单参与者创建了一个专属环境