交易费用和网络架构作为垃圾邮件防护

Transaction Fees and Network Architecture As Spam Protection | Cardano Explorer (cexplorer.io)


与在传统费用市场上运行的比特币或以太坊不同,卡尔达诺采用固定且可预测的费用系统。这些费用虽然不高,但设定在有效阻止垃圾邮件攻击的水平。另一方面,Solana 极低的交易费用是一把双刃剑。虽然它们使交易变得便宜,但也导致了很高的失败率——目前,大约 75% 的用户交易没有成功。网络中充斥着机器人生成的交易。

除了交易费用之外,网络层在防止垃圾邮件交易方面也发挥着至关重要的作用。 Cardano 节点采用内存池,其协议以需求驱动的方式构建。这种设计允许每个节点以及与其链接的每个对等点调节数据到达率和未完成数据量。另一方面,Solana 不使用内存池,相反,所有交易都直接发送到下一个验证器。本文将阐明为什么向 Solana 发送垃圾邮件相对容易,而向 Cardano 发送垃圾邮件则具有挑战性。

如何平衡包容性和安全性?
确定正确的网络使用费是每个区块链团队面临的挑战。这些费用应反映在分布式网络中利用计算资源的实际成本。团队必须考虑运行区块生成节点的网络运营商和用户的需求。虽然运营商的目标是获得最大的回报,但用户更喜欢最低的费用。平衡这些利益至关重要。

传统的费用市场,如比特币或以太坊中使用的费用市场,有一个缺点。当网络使用量增加时,费用也会增加,使得网络只有那些能够负担得起高成本的人才能使用。相比之下,卡尔达诺采用固定且可预测的费用。用户对相同规模的交易支付相同的费用。费用包括固定部分和基于交易大小(以字节为单位)的可变部分。

对于卡尔达诺上的 200 字节交易,费用始终为 0.164271 ADA - 不多也不少。该费用大约相当于 0.1 美元。随着 ADA 价格的上涨,费用的美元价值也会上涨。

与使用传统费用市场(费用随网络需求而增加)的比特币或以太坊相比,该费用较低。在以太坊上,即使交易失败,费用也可能从 1 美元到 100 美元(甚至更多)不等。

Solana 的费用结构由两部分组成:基本费用和优先费用。基本费用是每笔交易的固定费用。目前,基本费用设置为每个签名 0.000005 SOL。优先费是一项可选的附加费用,用户可以支付该费用以增加其交易被包含在区块中的可能性。这对于时间敏感的交易特别有用。

费用波动很大,可能会随着时间的推移而变化。与使用费用市场的网络类似,如果网络使用得越多,费用就会增加。

目前,Solana 上的交易成本为 0.00001 至 0.00003 SOL,约合 0.001 至 0.005 美元。与 Cardano 相比,Solana 的费用明显较低,相差约 20 至 100 倍。

虽然低费用对用户有吸引力,使 Solana 成为一个包容性网络,但它们并不能保护垃圾邮件交易。机器人每天只需几美元即可发送数千笔交易。这就是目前 Solana 上 75% 的用户交易失败的原因。

网络使用费中需要考虑的另一个重要方面是任何去中心化区块链的长期经济可持续性。这意味着费用应足以支付运营成本。低手续费收益率可以通过无限的代币通货膨胀来抵消,但这可能会由于无休止的通货膨胀而随着时间的推移而使代币贬值。

Solana 的运作方式是无限的代币膨胀,而卡尔达诺则有预定数量的代币进行流通。目前,确定哪种策略更有利是一项挑战。

回到垃圾邮件交易防护的话题,比特币和以太坊采用的传统费用市场可以有效遏制垃圾邮件交易。同样,卡尔达诺的费用相对较高,使得网络垃圾邮件尝试成本高昂。然而,Solana 的费用如此之低,以至于垃圾邮件成为一种廉价的行为。

区块链网络应该是普遍可访问的,并且对其用户不存在歧视。它不需要任何了解你的客户 (KYC) 程序。本质上,网络无法审查交易。

任何为交易付款的用户都应该有合理的保证,他们的交易将被包含在即将到来的区块中。因此,引入任何形式的过滤器都是不可行的。使用网络的唯一限制是交易费用。

为什么 Solana 上 75% 的用户交易失败?
为了将交易包含在区块中并永久记录在账本中,它必须遍历两个底层:网络层和共识层。

最初,交易由处理节点的网络层。如果成功满足该层的验证标准,则进入共识层。共识层的任务是确定新区块的内容并在网络中的所有节点上就该区块达成一致。

这些原则对于所有区块链网络都是通用的,尽管它们在细节上可能有所不同。

在某些交易表现出非确定性行为的区块链中,交易可以传递到共识层,但之后仍然会失败。造成这种情况的原因可能有所不同。例如,根据用户的期望执行智能合约交易的条件可能无法满足。因此,即使用户已支付费用,交易仍会执行但失败。

Solana 目前的问题不是共识层正在丢弃交易。相反,交易甚至没有从网络层到达共识层。网络层非常拥塞,以至于节点选择丢弃一部分交易。节点可以保护自己免于过载和潜在的崩溃(这种情况可能由于资源耗尽而发生)。

尝试使用 Solana 的用户经常发现他们的交易失败。然后,他们需要重新提交交易,这可能需要多次尝试。这主要是因为它们正在与机器人生成的交易竞争。机器人速度更快,能够产生比用户更多的交易量,因此在网络中占据主导地位。机器人产生的大量交易与套利有关。据估计,只有 10% 的交易是用户生成的。

在图中,您可以看到机器人和用户如何竞争谁的交易通过网络和共识层进入区块。

考虑这样一个场景:100 笔交易中,10 笔来自用户,90 笔来自机器人。如果节点决定丢弃 30% 的交易,则可能会在给定时间丢弃所有用户交易。如果节点过载,它可能会决定丢弃更多交易。通常,占交易量的 50%。

Solana 网络正在运行,并且节点的计算资源不会因交易丢失而耗尽。因此,无需重新启动网络,节点崩溃的风险也很低。重启也无法解决机器人问题。主要问题在于用户在尝试提交交易时面临的困难。尽管网络正在运行,但它基本上无法使用。进入区块的大部分交易都是由机器人生成的,只有少数是用户交易。

在图中,您可以看到来自节点丢弃的机器人和用户的红色交易,以及仅来自达到共识层并有机会成功处理(并存储在分类账中)的机器人的几笔黑色交易。

值得注意的是,虽然每个用户通常只有一个连接来提交交易,但机器人可以同时维护多个连接。这给机器人带来了显着的优势。

此外,单个机器人向多个节点发送垃圾邮件交易是很常见的。这是因为机器人的目标是尽快处理其交易,而将交易发送到多个节点会增加发生这种情况的可能性。

决定节点应该删除哪些连接以避免被事务淹没是一个复杂的问题。在网络层,由于解析消息内容需要计算资源,分析交易内容具有挑战性。此外,区分用户交易和机器人生成的交易几乎是不可能的。机器人会产生垃圾交易,但从网络和共识层的角度来看,它可以是包含费用的有效交易。这是一个有效的垃圾邮件交易。最直接的策略可能是随机删除交易,但这并不能有效解决问题。

当 Solana 节点删除交易时,不支付交易费用。这是因为只有当交易成功处理并包含在区块中时才会产生交易费用。如果交易在到达共识层之前被丢弃,就好像该交易从未提交过,因此不收取任何费用。

Solana 团队面临的挑战是,即使机器人生成的交易包含在一个区块中,与潜在的套利利润相比,相关费用也可以忽略不计。即使大多数交易在共识层失败并且支付了费用,这一点仍然成立。

计算
Solana 每天处理约 2500 万笔用户交易。从这些交易中,收取的用户费用从 25,000 美元到 100,000 美元不等。

据估计,用户交易约占总交易的10%,其中机器人交易占比高达90%。这意味着垃圾邮件发送者需要花费每天 50,000 美元 (250 SOL) 的交易费用。

另一方面,以太坊每日收取约 400 ETH 的费用,相当于约 150 万美元。因此,向以太坊发送垃圾邮件的成本大约是向 Solana 发送垃圾邮件的 30 倍。

Cardano 协议每天收取约 12,000 美元的费用。这比 Solana 少了近五倍。因此,人们可能想知道为什么卡尔达诺没有被垃圾邮件交易淹没。我们将在本文的下一部分深入研究网络层来回答这个问题。

有必要认识到,如果 Cardano 能够处理与 Solana 相同数量的交易,并且这种容量可以通过输入背书者来实现,那么网络每天将收取大约 250 万美元的费用。垃圾邮件防护就足够了。

卡尔达诺区块链中的单个区块可容纳大约 250-300 笔基本交易。如果我们考虑每个区块的交易费用为 0.1 美元,那么卡尔达诺每个区块将获得 25-30 美元的收入。鉴于卡尔达诺大约每 20 秒生成一个新区块,这相当于每天生产 4,320 个区块。如果所有这些区块都充满了有效的垃圾邮件交易,发起攻击的个人每天将产生超过 100,000 美元的交易费用。

Solana 网络架构
在文章的前一部分中,我们仅从验证者节点的角度讨论了网络层。这有点简化了。

用户和机器人都通过 RPC 服务器连接到验证器。用户并不直接知道领导者验证者是谁,因此他们将交易发送到 RPC 服务器,该服务器根据领导者的时间表将交易转发给当前和下一个验证者。这个时间表是提前知道的。

让我们跟踪 Solana 事务的生命周期。 Solana 交易不会像其他网络那样进入内存池。相反,它们必须作为 UDP 数据包直接发送给共识协议的领导者。因此,知道领导者调度的 RPC 服务器将事务直接发送到将在下一轮中生成块的验证器。

Solana 尝试尽快处理所有提交的交易。交易不是将交易扩散到所有节点(这需要时间),而是被定向到下一个验证器,并假设它们都将包含在下一个块中。

简单来说,验证器很容易受到通过有限数量的 RPC 服务器进行的机器人攻击。这是因为所有交易都会通过这些服务器传递给后续验证器。当垃圾邮件攻击的数量超过少数 Solana 块的容量时,就会导致网络拥塞。因此,验证器开始丢弃交易。

这意味着机器人不必针对整个网络中的许多 Solana 验证器,或者更确切地说是 RPC 服务器,因为按照设计,所有新交易都会定向到下一个验证器,这些验证器可能会很快被交易淹没。

在图中,您可以看到 RPC 服务器如何将所有交易转发到验证器节点 1。它很容易被交易淹没并开始丢弃它们。一旦节点 1 生成一个块,RPC 服务器就会类似地将所有交易推送到下一个验证器,例如节点 2。为了更容易理解,我对其进行了简化。

交易提交的位置和使用的特定 RPC 服务器是无关的,因为所有 RPC 服务器的目的都是将交易转发给后续验证器。当网络不拥堵时,系统无缝运行,为用户提供近乎即时的交易确认。然而,不幸的是,该网络的架构加上低廉的费用,使其容易受到垃圾邮件的影响。

需要补充的是,除了用户交易之外,投票交易是Solana网络共识机制的重要组成部分。 Solana 网络中的验证者互相发送选票以确认交易。这些投票是 Solana 确认交易的共识机制的关键部分。

卡尔达诺如何防范垃圾邮件交易?
除了适当的交易费用之外,去中心化是抵御垃圾邮件攻击的最有效的方法。卡尔达诺拥有大约 3,000 个矿池,就是这一点的例证。每个池是一个出块节点,通常链接到 2-3 个中继节点,并在它们后面受到保护。这种安排阻止了与出块节点的直接网络通信。

中继节点充当核心网络节点和互联网之间的代理,在核心出块节点周围创建安全屏障。

新交易一旦提交,就会从中继节点传输到出块节点。然后,该交易被扩散到所有其他块生成节点,这个过程也通过中继节点发生。

与 Solana 不同的是,交易不会立即处理。相反,它们保存在跨多个网络节点的内存池中。下一个时隙领导者是节点被授予铸造新区块的权利,从内存池中检索交易并将其插入到新区块中。

在图中,您可以看到一笔交易(红色框)通过交易通过中继节点的逐渐扩散(红色箭头)逐渐到达所有内存池(黄色框)。为了更容易理解,我简化了图像。

在任何给定时间,所有节点上内存池的内容都会有所不同。这是因为交易是从不同位置同时提交的,并且它们的传播需要时间。因此,每个内存池都拥有一组独特但非常相似的交易。

在 3000 个区块生产者节点中,每个节点都有可能生成一个包含一组可比交易的新区块。被选为下一个时隙领导者的节点将负责生成这个新块。

您可能会想到,机器人可以通过一个节点轻松填充网络中所有其他节点的内存池,类似于下图所示。通过节点 1,所有事务到达节点 2,然后到达节点 3。

在像卡尔达诺这样的需求驱动型协议中,每个节点控制数据到达率、最大并发度(同时任务的数量)和未完成数据量(已发送但尚未确认的数据)。这意味着每个节点仅在准备就绪时才请求更多工作,而不是向其推送工作。

节点到节点(NtN)协议在全节点之间传输事务。 NtN 包括三个迷你协议(链同步、块获取和 tx 提交),它们在单个 TCP 通道上复用。

NtN 遵循基于拉动的策略,其中发起者节点查询新事务,响应者节点回复事务(如果存在)。该协议非常适合无需信任的设置,在这种设置中,双方都需要受到保护,免受另一方的资源消耗攻击。

观察卡尔达诺和索拉纳之间的对比。就 Solana 而言,RPC 服务器将任务委托给验证器。然而,在卡尔达诺的场景中,每个节点都会主动保护其资源。

每个节点的任务是在转发交易之前验证交易。如果一个节点发送无效或未经请求的交易,它将被其他节点断开连接。为了保持相同数量的连接,它可以选择与不同的节点建立连接。

如果机器人将有效交易分派到单个节点,它可能会使该节点的内存池饱和。一旦节点的内存池已满,它将停止接受新交易(不会将它们添加到内存池中)。其他节点只有在其内存池中有可用空间时才会开始提取交易。他们获得的交易可能是机器人生成的交易和用户生成的交易的混合。

节点可以从其中继节点接收用户交易。如果一个节点有足够的交易来填充内存池,则不需要从其他节点提取交易。这是网络中所有节点的标准操作。如果机器人针对单个节点,它将无法阻止大多数用户交易包含在后续区块中。

成功攻击的可能性随着机器人攻击的节点数量的增加而增加,因为它们会用有效的垃圾邮件交易填充更多的内存池。然而,这大大增加了攻击的复杂性和成本。

每个选择拒绝交易的节点,认为它们是机器人生成的,本质上是保护网络中的其他节点。

在图中,您可以看到机器人向节点 1 发送有效的垃圾邮件交易。节点 1 的内存池可能充满了有效的垃圾邮件交易。 Alice 和 Bob 将有效的用户交易发送到节点 3。节点 3 的内存池中有一个空房间,并且只从节点 2 中提取了一个有效的垃圾邮件交易。如果节点 3 在下一轮中成为时隙领导者,则大多数交易将被删除。该块将来自用户。

当机器人提交交易时,它会被添加到内存池中,从而有效地保留用作交易费用的 ADA。卡尔达诺内存池的容量是区块的两倍,可容纳大约 500 到 600 笔交易。如果一个机器人的目标是用不同的交易填充 100 个内存池,那么总共会产生 60,000 笔交易,费用约为 6,000 美元。该网络可以在一小时内处理如此数量的交易。尽管如此,网络可能会继续通过攻击者未直接瞄准的节点处理大量用户交易,这些节点在其内存池中包含用户交易。然而,某些交易可能是从其他节点拉取的,因此它们可能是有效的垃圾邮件交易。

结论
从本质上讲,费用和网络架构是防范垃圾邮件交易的主要防御措施。仲裁机器人需要提交有效的交易(包括费用)。这不是传统的 DDOS 攻击,其目标是淹没网络层上有交易的节点。如果机器人向网络提交大量交易,节点可能会开始在网络级别丢弃用户交易。这对所有网络都构成风险,因为这些是包含付费费用的合法交易。如果攻击者可以从套利中获利更多,那么费用可能无法提供针对垃圾邮件交易的充分保护。只要套利仍然有利可图,攻击者就不会耗尽资金,并且可以维持攻击。因此,下一个关键的保护层是网络架构。

在讨论去中心化和区块生产时,人们可能会认为 Solana 比 Cardano 更加中心化(因此更容易受到交易泛滥的影响),因为领导者时间表是预先确定的,并且所有交易都路由到他们。请注意,验证器的数量根本不重要。 Solana 团队面临着处理这个问题的艰巨任务,就像 Cardano 团队一样,必须提高可扩展性。这些挑战都不是微不足道的。