- 区块链教程
- 区块链 - 首页
- 区块链基础
- 区块链 - 简介
- 区块链的历史
- 区块链 - 技术
- 区块链与密码学
- 区块链超越加密货币
- 区块链 - 高级概念
- 区块链 - 分散化
- 区块链 - 去中心化应用 (DApp)
- 区块链 - 去中心化金融 (DeFi)
- 区块链 - 未来展望
- 区块链中的智能合约
- 区块链 - 里卡迪安合约
- 区块链 - 预言机
- 区块链 - 去中心化自治组织 (DAO)
- 比特币
- 比特币 - 无形的黄金
- 比特币是如何工作的?
- 比特币 - 网络
- 比特币 - 钱包
- 比特币 - 创新
- 以太坊
- 以太坊替代加密货币
- 以太坊生态系统
- 以太坊虚拟机 (EVM)
- 高级以太坊
- 以太坊钱包
- 以太坊矿工节点
- 其他
- 区块链 - 双重支付
- 公钥密码学
- 区块链 - 哈希算法
- 比特币 - 挖矿
- 区块链 - 区块链式连接
- 区块链 - 工作量证明 (PoW)
- 区块链 - 网络与挖矿
- 区块链 - 矿工激励机制
- 区块链 - 梅克尔树
- 区块链 - 支付验证
- 区块链 - 解决冲突
- 区块链 - 隐私
- 比特币 - 缓解攻击
- 区块链 - 结论
- 区块链资源
- 区块链 - 快速指南
- 区块链 - 资源
- 区块链 - 讨论
区块链 - 高级概念
高级区块链概念包含以下主题:CAP定理、区块链中的共识机制、密码学原语、区块链中的数据结构、区块和区块头。在学习完区块链技术和密码学的基础概念和术语后,再学习这些概念。
CAP定理:是什么以及如何运作?
CAP定理经常在区块链技术的背景下讨论。该定理强调,分布式系统只能实现三个理想特性中的两个:一致性、可用性和分区容错性。它断言,分布式系统不可能同时提供所有三个保证:一致性、可用性和分区容错性。CAP中的C、A和P分别代表:
- 一致性 - 所有用户必须同时看到相同的信息,无论他们使用的是哪台计算机。为实现这一点,添加到一台计算机的任何信息都必须立即发送到系统中的所有其他计算机进行存储。
- 可用性 - 用户应该在请求信息时收到响应,即使某些计算机无法运行。系统中的每台计算机都应该响应任何发出的请求。
- 分区容错性 - 如果两台计算机之间的连接中断,则认为这是一个分区。分区容错性确保即使计算机之间存在连接问题,系统也能继续运行。
在区块链系统的背景下,CAP定理非常重要,因为它有助于理解在区块链设计中需要权衡取舍的地方。例如,优先考虑一致性可能会导致可用性降低或对网络分区的处理能力较弱。相反,优先考虑可用性和分区容错性可能会影响一致性。
什么是拜占庭将军问题?
共识机制在任何区块链架构中都扮演着至关重要的角色,因为它保证了在分散的计算机网络中信任、一致性和安全性的维护。共识机制解决的主要挑战之一是拜占庭将军问题,它涉及在一些参与者可能出现故障或恶意行为的分布式系统中达成共识。在这种情况下,确保所有节点就特定问题(例如区块链中交易的值)达成一致变得复杂,特别是当某些节点可能提供误导性或矛盾的信息时。缺乏安全的通信渠道会带来单点故障的风险,即拜占庭故障,组件可能发生故障,并且无法确定组件是否确实发生了故障。
拜占庭将军问题源于一个涉及拜占庭军队的历史场景,这是一个计算机科学难题,它涉及在分散的环境中达成共识,在这种环境中,一些参与者可能会出现故障或恶意行为。在这种情况下,确保所有节点就特定问题达成一致(例如区块链中交易的值)变得复杂,特别是当某些节点可能提供误导性或矛盾的信息时。缺乏安全的通信渠道会带来单点故障的风险,即拜占庭故障,组件可能发生故障,并且无法确定组件是否确实发生了故障。
区块链试图通过建立一个不需要信任每个个人的信任层来解决这个问题。矿工和验证者在这个系统中扮演着至关重要的角色。他们的目标是通过遵循游戏规则向账本添加新条目。一种用于解决拜占庭将军问题的常见共识机制是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位。它们经常与哈希函数结合使用以确保长消息的安全。
- 流密码 - 这些一次加密一个位或一个字节的数据,这使得它们特别适用于保护实时信息,例如音频或视频流。
- 数字签名 - 这些提供了一种验证数字消息或信息真实性的方法,确认它来自声称的发件人。它们使用非对称密码来创建可以使用发送方的公钥验证的签名。
- 消息认证码 - 这些类似于数字签名,但使用对称密码来生成可以使用相同的密钥进行检查的代码。
区块链中使用的数据结构
区块链技术使用一些基本的数据结构,这些数据结构对于其安全性和操作效率至关重要。从本质上讲,区块链由两个主要数据结构组成:块和链表。各种类别的块包括:
- 大多数块的设计目的是扩展现有的主区块链,这被认为是网络中最长的链。这些被称为主分支块。
- 相反,有些块可能链接到不是最长区块链一部分的父块,这些被称为侧分支块。
- 此外,还有一些块连接到处理块的节点无法识别的父块;这些被称为孤块。
区块链中新区块的生成是通过使用称为哈希的唯一标识符将其链接到前一个区块来实现的。这个新区块包含前一个区块的哈希值、新的交易详情以及一个称为随机数的nonce。只有在所有网络计算机验证交易后,区块才会被整合到区块链中。这个验证过程至关重要,因为它确保交易的永久性和不可变性,这是区块链技术的根本特征。区块中的数据通过称为哈希的方法进行压缩以减小其大小。每个区块包含特定时间段内所有已确认的交易。随着更多区块的添加,它们共同形成一个称为区块链的链,这是区块链安全性的结构基础。
区块链的特征
区块链中的每个区块结构都独一无二,由各种关键组件组成:
- 区块头 (Header) − 区块的这一部分包含重要的元数据,例如区块的唯一标识符(区块哈希)、时间戳和链中前一个区块的哈希值。区块之间的这种连接形成一条连续的链。
- 交易 (Transactions) − 一个区块中可以包含多笔交易,代表数字资产从一个用户转移到另一个用户的过程。这些交易在添加到区块之前,会由网络参与者(节点)进行处理和验证。
- 默克尔树根 (Merkle Tree Root) − 为了简化区块内交易的验证过程,使用了默克尔树。这种二叉树数据结构能够高效且安全地验证大型数据集。
- 随机数 (Nonce) − 矿工使用随机数(nonce)来解决添加区块到区块链所需的密码难题。nonce与其他区块头数据组合后,会生成满足网络难度标准的哈希值。
- 难度目标 (Difficulty Target) − 此值设定将新区块添加到区块链的难度级别。难度会定期调整,以保持一致的区块创建速度并防止区块链中出现区块溢出。
区块头哈希和区块高度
区块链中的区块需要一种识别方式来区分它们。为此使用了两个关键参数:
区块头哈希充当唯一标识符,它是通过对区块链中的区块头进行哈希生成的。这个密码学哈希过程会执行两次,得到一个包含区块基本信息的数值。这些信息包括区块添加的时间戳、对前一个区块的引用、总结交易的默克尔树根、用于挖矿的随机数以及用于挖矿的难度目标。哈希值是使用密码学函数生成的,确保对区块头的任何修改都会产生不同的哈希值。此哈希值在传输过程中不会存储在区块数据中,在某些节点的区块链中也不会存储。
第二个区块识别参数是其高度,表示区块在区块链中的位置。从创世区块的零开始,每个后续区块的高度递增一。此指标对于维护区块链中的时间顺序和确定区块顺序至关重要。
创世区块
区块链的初始区块称为创世区块。这个第一个区块非常重要,因为它标志着区块链的开始,并作为所有后续区块的基础。比特币和其他加密货币的创世区块是其各自网络上挖掘的第一个区块。区块链中的每个区块都包含与网络上交易相关的信息,并具有独特的区块头。但是,创世区块与所有其他区块的不同之处在于它没有前一个区块。它通常包含特定数据,例如时间戳和消息,用于启动区块链。
创世区块的创建是区块链发展中的一个关键时刻,因为它确立了网络的基本规则和特性。一旦创世区块创建,这些规则(例如区块大小和挖矿奖励)就固定不变,无法更改。作为区块链的第一个区块,创世区块还在塑造网络起源的叙述中发挥着至关重要的作用。
比特币网络的去中心化特性是其关键特征之一,这意味着用户和网络之间没有中间商。为了确保网络上交易的有效性,使用了复杂的数学问题,这些问题由称为比特币矿工的计算机来解决。矿工必须完全解决数学难题后才能交易比特币。此外,比特币网络上的所有交易都会永久记录,因此无法隐瞒任何违法活动的证据。
区块链接
在区块链中链接区块的过程对于维护系统的安全性和完整性至关重要。每个区块包含与交易相关的数据,并通过称为前一个区块哈希的引用连接到其前驱。区块中包含的数据是不可变的,可以被验证。这些区块按顺序排列,形成一条链以确保其正确的排列。此引用类似于指纹,有助于保留区块的顺序。
为了生成此引用,区块头中的信息会经过密码学转换。此转换使用数学算法来创建一个唯一的标识符,称为哈希值。区块头的任何更改都会导致哈希值的变化,使其他网络参与者能够轻松检测到任何修改。链是通过密码学技术建立的,每个区块都包含一个唯一的代码或哈希值,将其连接到前一个区块。此外,哈希值记录了区块被添加到区块链的时间戳。如果区块中的任何信息被修改,哈希值将会不同,从而破坏链的连续性。
默克尔树
默克尔树,也称为哈希树,是一种数据结构,其中每个叶子节点代表单个数据块的密码学哈希值,而每个非叶子节点代表其子节点的哈希值的密码学哈希值。这种类型的树通常用于验证区块链网络中的交易,并且效率很高。大多数默克尔树遵循二叉树结构,每个节点只有两个子节点,尽管有些节点可能有多个子节点。在计算机科学领域,默克尔树是一种广泛采用的数据结构形式,它可以通过一系列哈希计算有效地总结区块中的所有交易。
在默克尔树中,交易被排列成叶子节点,每个叶子节点包含单个交易的哈希值。然后将叶子节点的哈希值配对并再次哈希以产生一组中间节点。这个过程会迭代,直到生成单个哈希值,称为默克尔根。
默克尔根作为一种简单的数学技术用于验证默克尔树中的信息。它包含在区块头中,并作为区块中所有交易的简要摘要。当新的区块添加到区块链时,其默克尔根会被添加到前一个区块的哈希值中,从而建立两个区块之间的连接。
为了理解默克尔树的功能,让我们来看一个简单的例子:假设在一个区块中存在四个交易,分别表示为 A、B、C 和 D。然后,每个交易都被转换为不同的字符字符串(哈希):哈希 A、哈希 B、哈希 C 和哈希 D。然后将这些哈希值配对以创建两个新的哈希值:哈希 AB 和哈希 CD。
最终,这两个哈希值合并以产生默克尔根,即哈希 ABCD。尽管此示例简化了默克尔树的概念,但实际结构要复杂得多,特别是当每个交易都有一个 64 个字符长的 ID 时。尽管如此,此示例传达了算法操作及其有效性的基本理解。默克尔树可用于有效地监督和验证参与者对独家销售或活动的资格。以下是详细解释:
生成唯一标识符
每个参与者或潜在买家都会分配一个唯一的标识符,例如他们的以太坊钱包地址或与他们的帐户关联的任何其他唯一标识符。
建立白名单
NFT 销售的组织者会制定一个白名单,其中包含有资格参加独家活动的参与者的唯一标识符。这个白名单实际上包含允许参与的地址列表。
对参与者标识符进行哈希处理
参与者的唯一标识符(地址)会分别进行哈希处理。这可以使用哈希函数(例如 SHA-256)来完成,为每个标识符生成一个哈希值。
构建默克尔树
已哈希的标识符被构建成默克尔树格式。通过配对和哈希单个哈希值来构建默克尔树,直到得出单个根哈希值。
公布默克尔根
组织者会公开默克尔树的根哈希值。此哈希值充当整个白名单的简洁而安全的表示。
参与者验证
有兴趣参加 NFT 销售的参与者可以通过对其标识符进行哈希处理并将其与已发布的默克尔根进行比较来检查其资格。如果哈希值匹配,则参与者在白名单中。
高效的验证过程
通过默克尔树验证资格在计算上是高效的。参与者不需要透露其标识符;他们只需要提供哈希值。这确保了隐私,同时允许高效的验证。
活动访问
在 NFT 销售或活动期间,只有标识符在白名单上(与默克尔根匹配)的参与者才能获得访问权限。这为白名单中的参与者创造了一个独享的环境。