Cardano对抗垃圾交易

https://cexplorer.io/article/understanding-resilient-of-cardano-against-spam-transactions

原生形式的区块链网络面临着可扩展性的挑战。网络的吞吐量(通常以每秒交易量(TPS)衡量)受到区块大小和区块生产率的限制。在交易量突然激增的情况下,网络可能会变得拥堵,从而给试图提交交易的用户带来潜在的困难。在这篇文章中,我们将深入探讨 Cardano 网络的交易处理机制及其在处理垃圾交易方面的稳健性。

区块链网络经常堵塞
首先,我们必须明白,对垃圾交易没有万无一失的防御措施。每一笔包含网络使用费的交易都会被区块链网络一视同仁地处理。

区块链不会区分来自单个用户的交易和来自垃圾机器人的大量交易,垃圾机器人的目的是造成网络拥堵。从区块链的角度来看,所有交易都是有效的。用户(或机器人)提交的交易数量不受限制。至少在理想世界中是这样。

交易费是防止垃圾邮件的措施之一。例如,对价值 1000 美元的交易收取 0.1 美元的交易费是合理的。如果要让网络同时充斥 100 万笔交易,则需要花费 10 万美元。

区块链网络可能会因需求突然激增而变得拥堵,例如在新的 NFT 系列铸币期间。NFT 系列的作者可能会指示用户在特定时间间隔发送交易。这可能导致 100 万笔交易涌入网络,造成类似垃圾邮件攻击的拥堵。关键区别在于,交易费由 100 万用户支付,每个用户支付 0.1 美元。

对于其他用户来说,两种情况的结果可能相似。他们在提交交易时可能会遇到困难。

在 NFT 系列铸币的情况下,网络最终会处理所有交易,并恢复接受新交易。然而,在垃圾邮件攻击的情况下,只要攻击者愿意为攻击提供资金,他们就可以继续攻击。

值得注意的是,攻击者可能会通过套利等经济收益收回部分攻击成本。不过,这取决于各种因素,并不能保证。

Cardano 采用固定的交易费用结构,费用根据以字节为单位的交易大小确定。例如,一笔 200 字节的交易每次产生 0.164 ADA 的费用。

采用收费市场的网络具有优势,因为当网络拥堵时,用户可能会选择支付更高的使用费。这就意味着,任何试图破坏网络的行为都会增加经济负担。攻击者不得不提高费用,因为一旦达到网络容量(例如内存池),节点就会开始丢弃交易。这些被丢弃的交易可能是费用最低的旧交易。因此,垃圾邮件攻击的成本是不可预测的。

垃圾邮件攻击的成本因高 TPS 以及一定程度上的去中心化而进一步放大。

网络处理交易的速度越快,攻击者必须提交和支付的交易就越多。TPS 低的网络更容易成为垃圾邮件攻击的目标。

卡达诺具有平均 TPS 和可预测的费用(卡达诺没有费用市场,因此交易费用永远不会上涨),理论上可以成为垃圾邮件攻击的主要目标。不过,得益于区块链的分布式特性,Cardano 对垃圾邮件攻击表现出很强的抵御能力。

Cardano 由大约 3100 个节点组成,每个节点拥有的内存池是区块大小的两倍。在网络停止接受所有新交易之前,理论上垃圾交易必须首先填满所有节点的所有内存池。

可扩展性为何是区块链面临的挑战?
在传统的基于服务器的系统中,当一台服务器无法满足需求时,通常通过增加服务器来实现可扩展性。这就是所谓的水平扩展。但是,区块链网络的运行方式不同,无法以同样的方式进行扩展。

在区块链网络中,每个节点都维护着整个区块链的副本,并参与共识过程。共识过程包括就下一个区块中包含的交易达成一致,并确保所有节点拥有相同的数据。这对于维护区块链的完整性和安全性至关重要。

向区块链网络添加更多节点并不能提高其在交易处理能力方面的可扩展性。它可能会降低网络的速度。这是因为每增加一个节点,就会增加达成共识所需的通信量,从而会减慢区块创建过程。

因此,简单地为区块链网络增加节点(或 “服务器”)并不能提高其可扩展性。相反,区块链网络的可扩展性是一个复杂的问题,目前正在通过分片(并行处理交易)、第二层解决方案(链外交易)和优化共识算法等各种策略来解决这个问题。这些解决方案旨在增加网络每秒可处理的交易数量,同时不影响其分散性和安全性。

在客户端-服务器模式中,服务器是单点故障。如果服务器宕机,整个系统都可能无法访问。然而,在区块链网络中,没有中央机构或服务器。网络由多个节点维护,每个节点都拥有整个区块链的副本。这意味着,即使一个节点出现故障,网络也能继续运行,确保服务不中断。

区块链的三难问题对所有团队来说都是一个挑战,因为很难同时实现去中心化和高可扩展性。对于服务器-客户端解决方案来说,可扩展性和垃圾邮件防御相对简单。

在服务器-客户端架构中,当网络出现拥塞时,可以采用几种策略来管理负载:

节流: 这包括限制服务器处理请求的速度。这有助于防止服务器过载,确保服务器在特定时间内不会收到超过其处理能力的请求。
负载平衡: 这种技术将网络流量分配给多个服务器,以确保不会因请求过多而使单个服务器不堪重负。
流量优先: 有些系统可能会优先处理某些类型的流量。例如,视频流服务可能会优先处理视频数据,而不是其他类型的数据,以确保流畅播放。
丢弃交易: 在极端情况下,服务器在收到过多请求时可能会开始丢弃传入请求。这通常是防止服务器崩溃的最后手段。

然而,由于区块链网络的去中心化、无权限和开放性,这些机制并不直接适用于区块链网络:

去中心化: 与集中式服务器不同,区块链网络由多个节点组成,每个节点都维护着整个区块链的副本。这意味着无法集中管理节流或负载平衡。
无权限和开放性: 任何人都可以加入和参与区块链网络,每个参与者都有提交交易的平等权利。可以根据费用确定交易的优先级。但是,网络也可能成为排他性的,只有富人才能使用。
公平性: 区块链协议确保所有交易都得到平等对待,无论其来源和金额如何。
在中心化系统中,一台服务器或一组服务器可以通过控制服务请求的速率(节流)或在多台服务器之间分配负载(负载平衡)来管理负载。但是,在去中心化的区块链网络中,这些任务无法集中管理。这是因为网络中的每个节点都会处理自己的请求,没有中央机构来协调这些任务。

不过,一些项目倾向于在这方面达成中心化共识,因为团队试图实现高 TPS。

区块链通过去中心化确保公平。这意味着任何一个参与者都不能为了自己的利益操纵系统。网络中的所有节点在维护区块链方面拥有同等的权力和责任。集中达成共识的努力可能会限制节点的自主权,即在系统中造成某种形式的不公平。

如果发生严重的垃圾邮件攻击,节点可能会开始丢弃交易或停止接受新到达的交易。这并不是一个理想的解决方案,因为它违背了公平原则。但这是保护网络并确保其生存的必要措施。

每个与网络连接的设备,也就是区块链节点,都必须保护自己的资源不被耗尽,否则设备就会崩溃。多个节点同时崩溃可能会危及整个系统的运行。重启网络不是区块链的选项。

但是,特定节点是自主保护其资源,还是由中央机构进行保护,这两者是不同的。

当一个团队希望构建一个具有高交易处理速度(TPS)的区块链,并采用类似于服务器-客户端架构的反垃圾邮件机制时,他们往往需要在去中心化方面做出妥协。共识机制可能会表现出中心化的元素。更大程度的集中化有利于开发针对网络垃圾邮件的保护措施。

卡达诺抵御垃圾邮件的能力有多强?
除了合适的交易费用外,区块链网络的去中心化结构在一定程度上也能有效抵御垃圾邮件攻击。Cardano 的目标是处理所有已接受的交易。

如果 Cardano 无法接受新提交的交易,会及时通知用户,用户可以尝试重新提交。

卡达诺网络由 3100 个池组成。每个池作为一个区块生产节点,通常与 2-3 个中继节点相连,并被屏蔽在这些节点之后。这种设置抑制了与区块生产节点的直接网络通信。中继节点充当核心网络节点和互联网之间的中介,在核心区块生产节点周围建立一个安全边界。
b4e63996eb64d8a34c06b12b5f7dfe7e

在 Cardano 中,每个区块生产节点或池都有自己的内存池。这是交易在被纳入区块之前的存放地。内存池的大小设定为当前区块大小的两倍,可容纳约 600 个标准交易或少量较大、较高费用的交易。

内存池是一个网络缓冲区,在将交易纳入区块时可能会造成轻微延迟。mem-pool以 “先到先得 ”的方式运行,假定mem-pool中的交易已经扩散到所有节点,那么它应该在接下来的两个区块内被纳入新区块。不过,在网络拥堵时,一笔交易可能只存在于少数几个内存池中,导致其在被纳入新区块之前需要等待更长的时间。

新交易提交后,会从中继节点传递到区块生成节点。然后,该事务会扩散到所有其他区块产生节点,中继节点为这一过程提供了便利。我们将进一步讨论节点到节点(NtN)迷你协议如何用于交易扩散。

交易不是即时处理的。相反,它们被存储在不同网络节点的内存池中。下一个时隙领导者,也就是被赋予铸币新区块权限的节点,会从内存池中检索交易,并将其纳入新区块。这样,Cardano 网络中的所有内存池都随时准备铸币新区块,从而消除了单点故障,增强了网络的稳健性。

在附图中,你可以看到一笔交易(用红色方框表示)通过中继节点的逐步扩散(用红色箭头表示),逐渐到达所有内存池(用黄色方框表示)。

在任何特定时刻,所有节点的内存池内容都可能不同。这是因为交易同时从不同地点提交,而交易的传播需要时间。因此,每个内存池都包含一组独特但非常相似的事务。

在 3100 个区块生成节点中,每个节点都有可能生成一个包含相似交易集的新区块。被选为下一个插槽领导者的节点将负责生成这个新区块。

Cardano 以需求驱动协议的形式运行。每个节点都可以控制接收数据的速度、最大并发量(同时执行任务的数量)和未完成数据量(已发送但尚未确认的数据)。这意味着每个节点只有在准备就绪时才会请求额外的工作,而不是被强加工作。

节点到节点(NtN)协议通过中继节点促进全节点之间的事务传输。NtN 包含三个小型协议(链同步、区块获取和 tx-提交),它们在一个 TCP 通道上进行多路复用。

NtN 采用基于拉的策略,即发起方节点请求新事务,响应方节点提供可用事务。这种协议非常适合无信任环境,在这种环境下,双方都需要防止来自对方的资源消耗攻击。

在下图中,你可以观察到区块是如何通过迷你协议在池之间扩散的。Alice 向节点 1(用红色箭头表示)提交事务。节点 2 的内存池中有空闲空间,它开始向附近的节点请求事务。节点 2 向节点 1 发出请求,从而获得了 Alice 的事务(蓝色箭头 1 至 6 表示)。过了一会儿,节点 3 也向节点 2 发出同样的请求(蓝色箭头 7 至 12)。现在,所有内存池中都有 Alice 的事务。

每个节点都有责任在转发事务之前对其进行验证。如果节点发送无效或未经请求的事务,就有可能被其他节点断开连接。为了保持网络连接,节点可以选择与其他节点连接。

要知道,mem-pools 是由网络中的不同点同时填充的。众多用户通过不同的中继节点同时提交交易。然后,这些交易通过迷你协议逐步传播。

在附图中,你可以看到三个内存池的逐步填充过程。爱丽丝、鲍勃和博特分别从不同地点提交交易。时间-1 时,每个内存池中只有一个事务。到时间-2 时,节点已从其对等节点中提取了事务。现在,所有内存池都包含一个机器人事务和两个用户事务。无论哪个节点成为时隙领导者,后续区块中的事务集都是相同的。

让我们深入了解一下垃圾邮件攻击的过程。

僵尸可以用有效的垃圾交易淹没单个节点,从而填满该节点的内存池。一旦内存池达到饱和,该节点就会停止接受新的交易,即不会将交易添加到内存池中。

其他节点只有在其内存池有空间时才会开始提取事务。它们提取的交易可能是机器人生成的交易和用户交易的组合。

节点可以从中继节点接收用户交易。如果一个节点有足够的交易来填满它的内存池,它就不需要从其他节点获取交易。这是网络中所有节点的标准做法。如果僵尸以单个节点为目标,它将无法阻止大部分用户交易被纳入后续区块。

攻击成功的概率会随着僵尸目标节点数量的增加而增加,因为它们会用有效的垃圾交易填满更多的内存池。然而,这大大增加了攻击的复杂性和成本。

每个选择拒绝交易(认为它们是僵尸生成的)的节点基本上都能保护网络中的其他节点。

在附图中,你可以看到僵尸向节点 1 发送了有效的垃圾交易。节点 1 的内存池中可能充满了有效的垃圾交易。与此同时,Alice 和 Bob 向节点 3 发送有效的用户交易。节点 3 的内存池中有空位,只能从节点 2 提取一个有效的垃圾邮件事务。如果节点 3 在下一轮中成为时隙领导者,区块中的大部分交易将来自用户。

如果节点 1 或节点 2 被选为时隙领导者,则产生的区块中将充满垃圾交易。不过,如果用户能成功地将交易提交给内存池,所有交易最终都会进入区块。

可以看到,Cardano 在任何特定时刻接受的交易量都达到了不同节点上单个内存池的容量。它不区分垃圾交易和用户交易。

节点收到新区块后,会检查区块内的交易,并从其内存池中删除这些交易。这一操作释放了内存池的空间,使节点可以接受新的交易。

如果所有内存池中都存在相同的垃圾交易,那么所有内存池都会在两个区块内再次清空。

如果所有内存池中都存在唯一的垃圾交易,那么每两个新生成的区块之后,只有一个内存池会被清空。

如果攻击者想要在较长时间内阻止新用户交易的提交,就必须不断尝试用独一无二的垃圾交易填满所有内存池。一旦内存池被清空,用户就有机会在攻击者之前提交交易。

如果攻击者在网络中的一个位置提交垃圾交易,这些交易很可能会使特定节点的内存池达到饱和。同时,这些垃圾交易很可能会在短暂延迟后被邻近节点拉走一部分。然而,一旦这些交易被纳入一个新区块,多个内存池将同时被清空。距离较远的节点更有可能在其内存池中拥有较高比例的用户交易。

垃圾邮件攻击的大致成本
让我们来分析一下数字。

一个内存池可容纳 600 个标准交易。假设 ADA 的当前市场价值为 50 美元,则填满一个内存池的交易费用为 50 美元。

如果 3,100 个节点都有一个内存池,那么攻击者同时用唯一交易填满所有内存池的成本约为 155,000 美元。这需要提交 180 万笔交易。

Cardano 每秒可处理 15 笔标准交易,相当于每天处理 130 万笔交易。这意味着,在一天零几小时内,卡达诺就能处理完内存池中所有的独特交易。

然而,一旦内存池中出现可用空间,用户就会立即提交新的交易。这些新提交的交易中,有一些会先于内存池中的旧交易得到处理。因此,实际上从内存池中清除所有垃圾事务需要更长的时间。

攻击者可以选择延长攻击时间。

ADA 币市值的增长会增加执行垃圾邮件攻击的成本。此外,如果 Cardano 的交易处理速度(TPS)得到提升,例如通过实施输入背书器(Input Endorsers),攻击成本将进一步增加。加快交易处理速度会迫使攻击者以更快的速度提交有效交易(包括费用)。分级定价的实施会对抵制垃圾邮件交易产生积极影响,因为交易层级越高,价格越高。

结论
重要的是要明白,对垃圾交易的抵御能力依赖于网络中各节点对交易的公平接受。即使在网络拥堵的情况下,用户也应该能够及时提交交易,并确信自己的交易会被包含在即将到来的区块中。当然,有些用户可能无法提交交易。均衡的交易费用是防止垃圾交易的最佳保护措施。

不应该有一个有权决定拒绝哪些交易或以任何方式限制交易流的中央机构。从区块链三难的角度来看,挑战在于实现高 TPS 的同时不牺牲去中心化。对于目前具有高 TPS 和低交易费用的网络,你通常会发现一些中心化元素。