知识库
返回
explainCKBot·
4 mins
区块链中的并行交易执行与顺序交易执行

交易处理的底层机制对区块链的性能和可扩展性起着关键作用。

cover

并行执行(parallel execution)和顺序执行(sequential execution)这两种主要模型决定了交易如何得到验证并加入区块链。本文以比特币和以太坊分别作为并行执行和顺序执行的例子,分析这两种模型,并探讨 Solana 创新的并行处理方式。

区块链数据模型:比较 UTXO 与账户

UTXO 模型:比特币的并行交易处理方式

比特币率先采用、后来也被许多其他区块链使用的未花费交易输出(Unspent Transaction Output,UTXO)模型,可以类比为使用现金:每枚硬币或每张纸币都代表一份可以花费的独立价值。

具体来说,在 UTXO 模型中,每笔交易都由输入和输出组成。输入引用当前交易要花费的先前交易输出,输出则是新创建的 UTXO,可供以后花费。UTXO 就是尚未花费、可用于新交易的比特币单位。

用现金来类比会更容易理解。假设你的钱包里有一张 50 美元的纸币,可以把它看作一个 UTXO。当你去商店购买价值 30 美元的商品时,你交出这张 50 美元纸币,店员找回 20 美元。在这个过程中,50 美元纸币作为交易输入被消耗,并产生两个输出:支付给商店的 30 美元,以及找回给你的 20 美元。

比特币交易也是如此。假设 Alice 有三个 UTXO,金额分别为 0.5 BTC、1 BTC 和 1.5 BTC。她想向 Bob 发送 2 BTC,交易可能按以下方式进行:

  • 选择输入:Alice 选择 1 BTC 和 1.5 BTC 的两个 UTXO 作为交易输入。
  • 交易输出:Alice 创建一笔交易:
    • 向 Bob 发送 2 BTC。
    • 将 0.5 BTC 作为找零退回自己(因为输入共花费了 2.5 BTC,而支付给 Bob 只需要 2 BTC)。

交易完成后,原来 1 BTC 和 1.5 BTC 的 UTXO 已被花费(销毁),并产生两个新的 UTXO:Bob 的 2 BTC 和 Alice 的 0.5 BTC。

UTXO 模型的优势

比特币的 UTXO 模型设计带来了多项显著优势,尤其体现在交易处理、验证和隐私方面。

首先,UTXO 的独立性有利于并行处理。在比特币中,每个 UTXO 都可以看作独立的价值单位,就像现金中的一枚硬币或一张纸币。由于这些单位自成一体、彼此没有依赖,涉及不同 UTXO 的多笔交易可以同时处理而不发生冲突。

这种能力使节点能够同时验证多笔交易并将其加入区块链,从而提高网络的整体容量和效率。即使网络负载较高,比特币也能高效处理大量交易,并行性是其中的关键因素。

在验证方面,UTXO 模型简化了节点的工作。节点验证交易时,只需检查要花费的 UTXO 是否已用于其他交易,从而确认它们仍处于未花费状态。

这一检查很直接,节点只需验证当前交易所涉及的 UTXO 是否有效,无须遍查全部交易历史。这样可以减轻网络的计算负担,加快交易验证。

此外,UTXO 模型在隐私和灵活性方面也为用户带来了显著优势。每个 UTXO 都是独立单位,因此用户可以通过不同的交易组织方式来管理资金。他们可以把较大的 UTXO 拆成较小的 UTXO,将较小的 UTXO 合并为更大的金额,甚至将不同来源的多个 UTXO 合并到一笔交易中。

这种灵活性让用户能够优化比特币的管理方式,无论是整合持有的资金、方便小额支付,还是增强隐私。相比其他模型,每笔交易都可以通过设计更有效地隐藏资金总量和流向,让用户更好地控制交易隐私。

账户模型:以太坊的执行方式

与比特币不同,以太坊采用基于账户的模型(account-based model),可以将其类比为大多数人熟悉的银行账户系统。

假设你在银行有一个支票账户,账户中有一定余额。每当你进行存款、取款或转账时,银行都会相应更新余额。

以太坊中的每个账户也类似。以太坊账户有以太币(ETH)余额,账户间的交易直接更新这些余额。例如,当 Alice 向 Bob 发送 1 ETH 时,以太坊区块链会从 Alice 的账户中减去 1 ETH,并向 Bob 的账户增加 1 ETH,以此记录交易,就像银行对两个账户分别借账和贷账一样。

这种模型直接调整账户余额,方式简单明了。处理 Alice 的交易时,以太坊系统确保她的余额减少 1 ETH,同时 Bob 的余额增加相同金额。这种直接更新机制便于跟踪余额,也支持复杂交互,例如需要直接操作账户状态的智能合约交互。

但这种模型也使大量交易难以并行处理。如果多笔交易同时修改同一个账户,就可能发生冲突,类似于两位银行职员在没有协调的情况下同时更新同一个账户。一笔交易可能没有正确计入另一笔交易造成的变化,导致双重支付(double-spending)或余额不准确等错误。

为避免这些问题,以太坊按顺序处理交易。每笔交易的影响都必须完全落实并纳入区块链状态,下一笔交易才能开始。

要防止双重支付或状态更新不一致,就需要这种顺序处理。例如,一组交易中,Alice 先向 Bob 发送 ETH,Bob 再将其中一部分发送给 Charlie。如果处理顺序错乱,在 Alice 的交易尚未处理时,Bob 可能没有足够的 ETH 发给 Charlie。因此,顺序执行保证了以太坊交易处理的正确性和有序性。

账户模型区块链中的顺序执行

顺序交易处理如何运作

要理解以太坊的顺序执行,可以把网络想象成一本全球会计账本,每笔交易都会修改账本的状态。对以太坊而言,维持准确、一致的全局状态至关重要。下面详细介绍这一过程:

顺序执行的具体步骤

  1. 交易排队:用户向以太坊网络提交交易,随后交易被放入所谓的“内存池(mempool)”,等待矿工或验证者确认。
  2. 处理顺序:内存池中的交易通常会根据发送者愿意支付的 gas 费用等因素确定优先级。矿工从池中挑选交易,往往优先选择费用较高的交易,并在正在挖掘的区块中将它们依次排序。
  3. 验证与执行:按交易在区块中出现的顺序逐笔取出并验证。验证要确保交易符合协议规则,例如检查发送者账户中是否有足够的以太币支付交易金额和费用。
  4. 状态转换:通过验证后,交易开始执行。执行包括更新账户余额和相关合约状态。例如,Alice 向 Bob 转账 2 ETH,Alice 的余额减少 2 ETH,Bob 的余额增加 2 ETH。如果交易涉及智能合约,合约状态也会相应更新。
  5. 更新全局状态:一笔交易执行完毕后,其影响会被纳入区块链当前的全局状态。这个新状态反映了区块中此前所有交易带来的累计变化。
  6. 完成区块:区块中的所有交易按顺序验证并执行完毕后,区块构建完成并被提议给网络。其他节点随后验证区块中的交易及其产生的状态。
  7. 共识与最终确定:如果网络通过共识机制(工作量证明(proof-of-work)或权益证明(proof-of-stake))接受该区块,就会将其加入区块链。这确保所有节点更新各自的记录,反映相同的全局状态。

顺序执行的优势

顺序执行的主要优势是简单,容易在整个区块链上维持一致、准确的状态。通过一次处理一笔交易,以太坊可以用直接的方式管理账户余额和合约状态,确保每笔交易有效且不存在冲突。

这种方式也很适合以太坊对智能合约的支持。合约可能包含复杂且相互依赖的操作,需要一致、有序地执行才能正确运作。顺序处理简化了这些合约的实现和验证,使复杂去中心化应用(dApp)的构建与部署更容易。

此外,顺序执行最大限度地降低了数据冲突和不一致的风险。由于每笔交易都在下一笔开始前完成处理,因此无须解决并发交易间的冲突或管理其依赖关系,减少了出错的可能性,提高了网络稳定性。

顺序执行的劣势

顺序执行也有明显不足,主要涉及可扩展性和性能。每笔交易都必须单独按顺序处理,这自然限制了网络吞吐量。随着交易数量增加,逐笔验证和记录所需的时间可能形成瓶颈,导致交易耗时更长、费用更高。

在网络活动频繁时,这一局限尤其明显。当需求超过网络的交易处理能力时,用户可能遭遇延迟和成本上升,影响用户体验和网络的整体实用性。

UTXO 模型区块链中的并行执行

并行交易处理如何运作

并行执行是比特币 UTXO 模型的一个鲜明特征。只要多笔交易不花费相同的 UTXO,该模型就允许同时处理这些交易。比特币的每笔交易都操作各自的一组输入和输出,因此交易在很大程度上彼此独立。

例如,Alice、Bob 和 Charlie 各自通过不同的交易发送比特币。如果这些交易不涉及相同的 UTXO,网络中的不同节点就可以并发处理它们。这种并行性使基于 UTXO 的链能够高效处理大量交易,实现高吞吐量。

打个比方,每个 UTXO 就像钱包里独立的一枚硬币或一张纸币。花费时,你将它交出去,它便成为另一个人钱包的输入。每个 UTXO 都是独立实体,因此,只要交易没有试图花费相同的 UTXO,就可以同时处理而不发生任何冲突。

并行执行的优势

并行执行最显著的优势是提高区块链的吞吐量和效率。这意味着,基于 UTXO 的链的吞吐量未必受执行时间限制,而是受区块大小(即每个区块能够容纳的交易数量)以及区块时间(即验证新区块并将其加入区块链所需的时间)限制。

并行执行还减少了验证交易所需的时间,提高网络的整体速度。对于金融服务、实时支付等需要快速处理交易的应用,这一点尤其有价值。

此外,UTXO 模型的并行处理能力简化了比特币验证流程的架构。由于交易彼此独立,节点可以在无须协调或解决依赖关系的情况下验证交易,从而增强网络的稳健性和可靠性。

并行执行的劣势

并行执行也面临挑战,尤其是维持数据一致性和解决冲突。如果两笔交易试图花费同一个 UTXO,网络必须检测并处理这一冲突,以确保区块链的完整性。冲突检测与解决增加了验证过程的复杂性,需要精密的算法来维持全网一致。

此外,在并行执行环境中,确保所有节点对区块链状态保持一致的认识可能更加复杂。同步和协调并行交易会带来额外开销,在大规模分布式网络中尤其如此。处理好这些复杂问题,对维持区块链性能和安全性至关重要。

案例研究:Solana 的并行执行方式

Solana 概述

Solana 是一个支持去中心化应用的高性能区块链平台,具有高吞吐量和低延迟。与比特币和以太坊不同,Solana 采用新颖的方式实现并行执行,成为当今运行速度最快的区块链网络之一。

Solana 的 Sealevel 执行环境专为智能合约交易的并行执行而设计。Sealevel 通过分析交易的依赖关系,识别可并发执行的交易。如果交易不与相同的账户或数据交互,就可以同时处理,从而显著提高网络吞吐量。

例如,一笔交易通过智能合约更新用户的代币余额,另一笔交易通过不同合约执行不相关的操作,Sealevel 就可以并行执行这两笔交易。这种并行处理能力是 Solana 能够高效处理大量交易的关键因素。

Sealevel 使用乐观并发控制(optimistic concurrency control)。这种技术假设大多数交易不会彼此冲突,并允许它们并行执行。如果执行过程中检测到冲突,Sealevel 就会回滚冲突的交易,并按顺序重试。这种方式将并行执行的优势与确保数据一致性、解决冲突的机制结合起来。

end