区块链 101:区块链之旅

本文概述了区块链领域中多种不同的设计思路,包括Cardano的扩展UTXO模型,Ripple的信任共识机制,Avalanche的雪崩协议,Monero的隐私保护技术以及Polygon的侧链方案。每种设计方案都在去中心化、安全性、效率和隐私等方面做出了不同的权衡。

这是关于区块链的一系列文章的一部分。如果你是第一次看到这篇文章,我强烈建议从本系列文章的开头开始阅读。

我们的旅程已经带我们了解了一些最大的区块链的内部运作——比特币以太坊Solana

是的,这需要吸收很多信息……但是 web3 的领域非常广阔,我们还有很多、很多内容要覆盖。

我相信,凭借我们现在已经学习的所有信息,我们将或多或少地熟悉区块链中的一般概念,并且我们将能够轻松地处理新的概念和想法。

所以今天,我想做一些稍微不同寻常的事情,不专注于单个区块链,而是专注于多个区块链,并探索它们在设计中追求的核心思想。可以把它看作是区块链领域的一个简短的观光之旅。

先生,请问你有时间谈谈区块链吗?

为了保持简洁,我将介绍我们今天将讨论的区块链的最重要的思想。这意味着我们不会真正深入到更精细的细节中,因此,如果它们中的任何一个引起了你的兴趣,我鼓励你继续自己进行研究。

请记住,本系列文章的目标不是完全深入研究这些区块链中的任何一个,而是学习它们背后的核心概念,以及改变(并且仍在改变)行业的创新。

准备好了吗?开始!

扩展 UTXO

回到本系列的最初章节,我们研究了比特币,以及它如何提出对货币建模的最初方法:未花费交易输出模型,或简称为 UTXO。

此后不久,我们讨论了以太坊和 Solana,而这个 UTXO 模型被降级到后台,而账户占据了主要舞台。为什么会这样呢?

答案非常简单:可编程性

基于账户的模型将区块链的状态浓缩为个人账户——无论是用户账户、合约账户还是程序账户等等。整个网络的状态被整齐地打包到这些较小的存储盒中,每个账户一个。

我们甚至可以将这些状态片段视为代表每个帐户的一个大的、独特的结构, holding its state. 我不想说“对象”,因为这可能会使下一篇文章感到困惑……但是,是的,有点像对象。

这种架构使得访问和修改状态变得非常容易,因为我们知道数据在哪里:在每个帐户中!我们说账户是有状态的——它们持有一个可变的状态。

将此与比特币的 UTXO 模型进行对比,该模型分散在各处。更重要的是,每个 UTXO 实际上并不持有任何可变状态——只是一个不可变的值。从这个意义上讲,比特币被称为无状态的

尝试在这种稀疏、僵化的区块链状态上实现逻辑确实看起来像是一项复杂的努力——这正是以太坊等其他平台选择账户来实现可编程性的原因。

当我们这样说时,听起来好像 UTXO 是“劣等”模型——但实际上,它在账户模型难以应对的领域中具有一些有趣的固有品质。特别是,它自然地允许更好的并行化,以及更清晰(且更简单)的交易验证。

哈!接受这个!

所以这里有一个问题:我们能否以某种方式在 UTXO 系统中支持逻辑,而又不失去这些好处?

关于比特币的说明

在我们进入本节的主角之前,我们需要回顾一下 UTXO 在比特币中是如何真正工作的。这将有助于我们更好地理解接下来发生的事情。

为了能够花费一个 UTXO,我们需要满足某些条件。这些条件以锁定脚本的形式建立,该脚本定义了每个特定 UTXO 可以被使用(花费)的条件。

这些脚本是用 Script 编写的,Script 是一种“迷你”编程语言(它不是 图灵完备的)。

虽然这意味着比特币在一定程度上支持逻辑,但 UTXO 通常使用一小组标准锁,这涉及来自消费者的某种形式的简单数字签名,用于解锁(和消费)UTXO。

真的,当我们问自己是否可以将逻辑添加到此模型中时,我们所要求的不仅仅是这些锁——我们希望完全支持逻辑运算!那么我们该怎么做呢?

Cardano

虽然有很多在基于 UTXO 的网络上添加可编程性的尝试(例如 Rootstack),但我认为 Cardano 提出的扩展核心模型的最优雅和巧妙的方法之一就是他们所谓的 扩展 UTXO 模型(EUTXO)。

我们今天不会真正关注 Cardano 的共识算法,因为那里没有太多惊喜:Cardano 是最早的 权益证明 网络之一,采用了它的 Ouroboros 协议。

如果它引起了你的兴趣,值得一看!

那么这种扩展是如何工作的呢?好吧,Cardano 没有采用锁,而是通过允许每个 UTXO 在其值之外携带一些新的奇异元素来增加一些复杂性:任意数据验证脚本

通过添加这些验证脚本,我们可以对解锁过程施加更复杂的条件。我们可以像在比特币中那样放置签名限制,但我们现在能够要求其他的逻辑条件,例如 时间锁

这些验证脚本是用一种叫做 Plutus 的语言编写的。

换句话说:验证脚本定义了 UTXO 可以被花费的条件。验证交易所需的所有逻辑和数据都作为交易本身的一部分提供——不需要外部状态检查。

这种设计的有趣之处在于,使用 UTXO 的所有好处都保留了下来,因为每笔交易都是自包含的。网络可以轻松地并行验证,这本身就比基于帐户的区块链简单得多。

但当然,这也有局限性。特别难以在单独的状态片段(UTXO)之间建立交互,因为没有易于访问的全局状态,并且没有整齐且可变地存储。

Cardano 的方法再次展示了区块链设计中的一个核心主题:没有完美的解决方案,只有不同的权衡。

Worth noting that when you spend money in Cardano, you’re not just moving value — you’re also programming the conditions for how that money can be spent next. Every transaction creator becomes a “programmer” of the new UTXOs they create, deciding what scripts and conditions will govern those outputs.

所以,是的,虽然 EUTXO 赋予了你无状态性和可并行性的好处,但它使得复杂的状态交互比基于帐户的系统更加困难。不同的问题,不同的解决方案——而这正是使这个领域如此有趣的原因。

好吧,完成一个!下一个是什么?

共识和信任

作为去中心化系统,所有区块链都依赖于某种形式的去中心化共识来保护它们的网络。

我们只介绍了工作量证明 (PoW) 和权益证明 (PoW)——但它们几乎无处不在!

这些共识算法是工程学的奇妙展示,但它们确实附带了一些复杂的问题。例如,PoW 的能源效率非常低,而 PoS 是一种非常复杂的多步骤舞蹈,需要精确的去中心化协调。

我们已经知道存在这样的原因:为了保持无需信任。由于任何人都可以作为矿工或验证者加入网络(只要他们满足所需条件),我们无法信任节点是诚实的,因此我们需要采取措施,以便整个系统完美无缺地运行。

但是,如果我们不需要所有这些呢?如果共识可以更快地发生,而无需所有这些复杂性呢?

Ripple

这就是 Ripple 试图通过其网络,XRP 账本 实现的目标。

为了从一开始就避免任何混淆,我想澄清一下,XRP 账本通常也被称为 Ripple。

Ripple 采取了一种完全不同的共识方法。它没有向所有人开放参与,而是拥有一组受信任的参与者,他们共同就网络状态达成一致。

这些参与者被称为验证者——但它们与 PoS 中的验证者从根本上不同。

While we’re at it, technically speaking, the XRP ledger isn’t a Blockchain, in the sense that it doesn’t use the same underlying data structure. Instead, it’s a Distributed Ledger Technology( DLT), where validators agree directly on the next state of the ledger without any mining or block production.

我们倾向于将这些类型的系统称为“区块链”。这是关于功能而不是实际实现。

这里的关键区别在于,共识是通过受信任节点之间的协议达成的,而不是通过竞争或随机选择。由于验证者无需执行繁重的计算或质押代币来提议区块,因此网络可以非常快速地处理交易——通常只需几秒钟即可结算付款。

但是……我们通常的座右铭不要信任,去验证呢?

可疑

嗯,当然,这也有一个重要的权衡:速度和效率,以半许可信任模型为代价。

验证者通常是 已知实体,这有助于让我们放心——但最终需要信任。

是的,这不像其他区块链那样去中心化。但是你知道吗?对于 Ripple 的主要用例来说,它是非常有效的:快速、低成本的支付和跨境转账。

如果有什么的话,这表明去中心化不是一个静态概念,而更像是一个范围。不同的应用程序可能需要在开放性、信任和效率之间取得不同的平衡。

而且,这又是 三难困境 在起作用!

更多共识替代方案

到目前为止,我们已知的共识机制阵容仅由 3 种通用策略组成:工作量证明、权益证明和 Ripple 协议。

对我来说,这个数字仍然感觉很小。也就是说,我想象还有其他的策略。

更糟糕的是,如果我们把 Ripple 当作一个异常值,那么我们只有两个选择!

这不可能是所有的共识解决方案,对吧?

其他的策略确实存在,但公平地说,共识不是一个容易解决的问题。非常重要的是,我们设计的任何机制都能够很好地抵御不良条件,不良条件通常意味着网络对于无意和有意故障的容忍度。

更重要的是,PoW 和 PoS 有不同的 变种 。它们的名字可能相同,但这只是对底层机制的过度简化。

考虑到这一点,让我们检查一下另一种共识算法,以及它与我们已经知道的算法相比如何。

Avalanche

Avalanche 网络 使用了一种完全不同的解决方案,我们没有让节点相互竞争,也没有让他们轮流——相反,它依赖于持续的通信和抽样。

他们的机制被称为 Snowman 协议

他们网站上的文档非常棒而且通俗易懂,所以我建议你看看。

它基于一个非常简单的想法:当验证者需要做出决定时,比如两个冲突交易的顺序(比如一次 双花 尝试),它会随机抽取一小群其他验证者,并询问“你对此有何看法?”。

根据回复,验证者可能会改变自己的偏好。然后,它询问另一组随机的验证者。然后再问另一组。这个过程会一直重复,直到验证者对某个特定的选择变得有足够的信心确认它。

这种方法如此有趣的原因在于它是无领导者的——没有一个验证者负责提议区块或做出决定。每个验证者都在同时做同样的抽样工作,并且在正确的条件下,他们最终都会达成一致。

这是一种 亚稳态 解决方案——系统自然而然地朝着共识状态移动,类似于球会移动到山底的方式。或者用物理术语来说,就好像它朝着 较低的势能 状态移动。

但这正是重点:什么是正确的条件

要回答这个问题,我们需要分析当节点变坏,停止遵守既定规则时会发生什么。我们称这些为恶意节点

传统的共识机制,比如工作量证明,最多可以容忍 49% 的恶意节点(或者说,实际上是 50% - 1)。其他的机制,比如 实用拜占庭容错 (我们还没有在本系列中讨论过),可以承受高达 33% 的恶意节点。然而,Avalanche 只能处理较小的一部分——理论上,最多可以处理 √n 个恶意参与者,其中 n 是节点的总数。

原则上,这听起来更糟。当然,我们可以问一下从这种牺牲中能得到什么好处——答案是速度。交易在 Avalanche 中非常快地完成:一笔交易只需要 1-2 秒就可以最终确认

真的非常快。

那么,我们如何让节点正确地运行呢?好吧,我们不能强迫他们,但是我们可以通过质押的形式来设置一些经济激励措施。

我知道你可能会想——但是 Frank,这不就是一个 权益证明 解决方案吗?嗯,从某种意义上说,是的。

但我想强调的是,总体机制与以太坊的机制截然不同。这正是我早些时候提出的观点:仅仅因为两者都使用了权益证明解决方案,并不意味着它们工作方式相同

好了,这就是 Avalanche 共识的简述!这是一种优雅的概率性解决方案,它以牺牲一些安全保障为代价实现了高速。

Avalanche 还有一些其他的技巧,比如它的多链架构。我们稍后会在本系列文章中回到这些想法,但不会侧重于 Avalanche——所以我鼓励你自己阅读关于这个区块链的更多信息!

隐私

到目前为止,我们已经看到的区块链的另一个共同因素是它们是公开的

我的意思是,每个人都可以看到每笔交易、每个余额、每个钱包——一切都是公开的。毕竟,这是其吸引力的一部分:该系统可以被任何人随时验证。

让我们先暂停一下,思考一下其中的含义。这总是一件好事吗?

由于一切都是公开透明的,任何人都可以看到你的余额。一个拥有大量资金的人可能会成为攻击的主要目标。那么,我们可以认为,在这种情况下,一定程度的隐私可能是一件好事。

那么,现在要问另一个问题:我们如何在公开区块链上实现隐私

Monero

虽然有多种解决方案可以解决这个问题(正如我们稍后将在本系列文章中看到的),但最早的解决方案之一是由 Monero 提出的。

这个区块链是目前为数不多的剩余的 PoW 网络之一。但核心创新不在于共识算法,而在于设计和架构是如何围绕默认隐私的想法构建的。

Monero 隐藏了三个关键信息:交易的发送者接收者发送金额

几乎所有!

让我们简单地看一下这些元素是如何隐藏的。首先,我们来谈谈发送者。在正常情况下,发送者只需要生成一个标准签名 (ECDSA) ——但这并不能隐藏他们的身份。因此,我们使用环签名。本质上,你抓住一堆用作诱饵的公钥,并使用一种结构来生成签名,使其无法将真正的签名者与诱饵区分开来。

如果你感兴趣,你可以在这里找到关于此算法的更多细节!

接下来,我们需要隐藏接收者。我们想要做的是阻止有人监视我们的地址,并了解我们的活动。而解决方案非常简单:隐身地址。隐身地址是从你的原始密钥对派生的地址。通过推导路径,你获得一个看起来与你的真实地址完全无关的地址,但它在密码学上与你的真实地址相关联。而最聪明的地方在于,你可以使用相同的推导路径和你的原始私钥轻松获得关联的私钥——因此你可以有效地拥有这个派生的隐身地址!

最后,RingCT (环机密交易) 隐藏了交易金额。这是通过一种叫做 佩德森承诺 技术来实现的,用以证明交易有效。这就像把交易的输入和输出都放在单独的信封里,并用数学方法证明它们包含的钱的数量相同——而无需打开信封!

这是是一个非常简单而优雅的技术,我鼓励你在这里阅读它!

总而言之,Monero 完美地结合了这些密码学原语,并创建了一个端到端的隐私框架:没有人可以看到谁发送了资金,谁收到了资金,或者转移了多少。

除了不允许逻辑(它不支持智能合约)之外,我们必须问自己这种程度的隐私会带来什么后果。例如,审计更加困难,这可能会引起监管方面的担忧。隐私的承诺可能会吸引那些寻求平台的非必要用户,在这样的平台他们能够将他们可疑的活动隐藏起来!

尽管如此,从纯粹的技术角度来看,Monero 代表了区块链中应用密码学的一种真正先进的实际应用。

隐私是一个难题——而 Monero 展示了当你把它放在你的设计的中心时,你可以实现什么。

侧链

为了结束今天的讨论,让我们来谈谈侧链

在之前的几篇文章中,我们讨论了 Rollup,或者说二层(L2)区块链。提出的想法很简单:我们在线下执行计算,但随后将信息提交到基础区块链——一层(L1)——作为最终的真理来源。

通常,这被表达为“L2 继承了 L1 的安全性”。我不喜欢这种表达方式——它过于简单化了,至少对我来说,它未能抓住问题的真正本质。

真正发生的是,L2 依赖于 L1 才能前进——它们没有自己的共识机制。

如果你有时间和想要做研究,尝试搜索诸如“Arbitrum 共识机制”或“Optimism 共识机制”之类的内容。你很快就会发现这些系统没有自己完整的共识机制,而是指定了如何以及何时将信息提交给以太坊!

通过“安全性”,我们真正想说的是这些 L2 依赖于 L1 的共识机制提供的安全性。

有了这个新的信息,就更容易定义什么是侧链了:它只是一个完全独立的区块链,拥有自己的共识机制,并且选择将其当前状态发布到另一个区块链作为一种状态检查点

那么,侧链有哪些例子呢?在撰写本文时,我碰巧与几位同事进行了关于此事的对话,我们遇到了有趣的事情:事实证明,L2 最常被引用的例子之一实际上是一个侧链——而且它是一个非常著名的区块链!

Polygon

是的,你没看错!

大多数人使用的 Polygon 网络——Polygon PoS——确实是一个侧链,而不是一个二层网络。

Polygon PoS 有自己的一组大约 100 个验证者,他们运行着自己的共识机制。这些验证者处理交易、创建区块,并完全独立于以太坊来保护网络。而且,Polygon 只是偶尔将这些快照发布到以太坊。

这会产生一些后果:

  • 一方面,如果以太坊明天离线,Polygon 仍然可以正常运行
  • 但另一方面,如果 Polygon 的验证者决定勾结(也就是一起工作)并窃取每个人的资金……好吧,他们可以,因为 Polygon 的安全性取决于它自己的验证者集合,而不是以太坊的。

所以再次(而且现在不足为奇的是),这是一个权衡的问题。

我们通过信任一个更小且独立的验证者集合来牺牲一些去中心化,但换来了更便宜和更快的交易

此时你可能会产生的一个问题是“好吧,但如果 Polygon 是完全独立的,为什么要将快照发布到以太坊呢?”。好吧,这样做可能很重要的几个原因。即:

  • 争议解决:如果 Polygon 的状态出现重大争议,那么以太坊检查点可以作为解决争议的最后手段。在这种情况下,我们确实依赖于以太坊的安全性!
  • 桥接器安全性:要在以太坊和 Polygon 之间转移资产,你需要桥接器,因为它们的状态是断开的。通过提供这些快照,我们为以太坊提供了关于 Polygon 状态的经过验证的信息,从而使桥接器更加安全。
  • 退出保证:理论上,如果 Polygon 的验证者变坏了,用户可以通过这些检查点来证明他们在 Polygon 中的余额,并有可能退回(找回他们的代币)到以太坊。但这会很复杂,但在理论上,这是可以做到的。

简而言之,这是一个信誉问题。

事实证明 Polygon 的方法非常成功。尽管如此,Polygon(这家公司)正在开发其他的解决方案,以及他们最初的侧链。特别是,Polygon zkEVM 是他们最新的开发成果——而这个是一个真正的 L2 解决方案,我们已经介绍过了

除了术语上的混淆之外,理解这些类型系统的设计差异及其可能产生的影响非常重要!

总结

这就是今天的全部内容了!

我们今天已经讨论了很多内容。部分想法是展示区块链世界的多样性。我相信重要的是要熟悉现有的核心思想和概念,以便更好地驾驭这个领域!

我只是希望它不会让人感到非常困惑!

显而易见的是,在区块链设计中没有一种万能的解决方案——或者至少还没有。每个选择都涉及权衡,不同的应用需要不同的方法。EUTXO 通过复杂的国家交互进行并行化。Ripple 通过去中心化来实现速度。Avalanche 通过安全性来实现速度。Polygon 通过一些安全性来实现性能。而 Monero 的情况略有不同,因为在它周围存在着更微妙的道德争论。

理解这些权衡是驾驭 web3 领域的关键。

至少对我来说,理解它们是我觉得这个主题如此令人着迷的原因之一!

即使在汇集了这些新想法之后,我们仍然有很多内容要介绍。

下次,我们将研究区块链中的并行化,并介绍两种现代解决方案:AptosSui

下次见!

  • 原文链接: medium.com/@francomangon...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Frank Mangone
Frank Mangone
Software developer based in Uruguay. Math and Cryptography enthusiast.