垃圾交易悖论,为什么你的 Solana 交易总会失败?

要想自己的交易被打包,就必须比其他人发送更多垃圾交易,从而加剧恶性循环。

撰文:nishil
编译:Frank,Foresight News

相信不少用户还不清楚,为什么最近他们在 Solana 上的交易总是失败?

让我们从最基础的内容开始分析——从用户的角度来看,当我们进行交易时,基本上会发生三件事:

  1. 交易成功执行,没有任何错误;

  2. 执行失败,譬如支付了 Gas 费,但执行过程中返回错误,这通常发生在未满足执行条件的情况下,例如尝试 Mint 的代币已经铸造完毕,或者由于价格波动导致滑点超过设置值等;

  3. 未送达交易,此类交易不会出现在任何地方,说明交易尚未到达「区块领导者」(Block Leader,Foresight News 注,某个时间段里负责处理交易的验证者)那里,这正是许多用户当前遇到的情况,这属于网络层问题,而非共识 / 执行层面的问题;

你可能会疑惑,网络层是什么?

放心,稍后我们就会讨论这些未送达的交易,以及它们为何是当前 Solana 拥堵的主要原因。在此之前,让我们来聚焦那些失败的交易,因为理解为什么失败的交易不是主要问题这一点,很重要。

如果仔细观察,你可能会惊讶地发现,这些失败交易中只有大约 8% 来自真实用户,其余的都是链上机器人执行套利交易失败的案例:套利者会向 Solana 大量发送垃圾交易,因为与成功套利带来的回报相比,发送垃圾交易的成本微不足道。

例如,他们可以每天多次向 Solana 发送垃圾交易,这将花费他们几百美元(因为 Solana 的费用很低),而他们只需要完成一笔交易就可以赚取高达 10 万美元的利润。

因此,重要的一点是,这些失败的交易并不意味着 Solana 的活跃度出现问题——Solana 网络正在按预期运行,所以这些失败的交易只是由于 Bot 们的交易条件不满足而最终导致的,并不是目前 Solana 用户体验不佳的主要原因。

事实上,自去年 11 月以来,Solana 的交易失败率一直保持在 50% 左右,如果你回顾一下我上面列出的失败与成功图表,你会发现之前的情况也差不多。

那现在就让我们讨论一下过去几天 Solana 拥堵的主要原因——「未送达的交易」,正如前面提到的,这些交易未能到达「区块领导者」,并且由于网络层的问题而被丢弃。

网络层是互联网的通信层,用于在不同的连接之间发送数据包,例如:TCP(传输控制协议)、UDP(用户数据报协议)、QUIC(由谷歌设计)等。

而 Solana 最近刚刚升级 QUIC 作为其网络层,它有助于在用户和「区块领导者」之间建立连接,而且由于 Solana 具有持续的区块生产能力并且没有内存池,因此丢失连接将意味着交易不会写入区块。

QUIC 使「区块领导者」能够根据特定标准切断某些用户的连接或限制其速率,因此,「区块领导者」现在可以在链上需求高企时放弃某些连接,也就是说,这种新架构可防止 Solana 在网络活动增加时停止运行——虽然网络这时可能会非常拥挤,但至少不会停下来。

所以你可能会问,如果 QUIC 的一切都设计得如此好,为什么 Solana 现在这么糟糕?

因此问题是,即使「区块领导者」现在可以限制某些连接,但具体「要限制哪些连接」的逻辑却执行得很差,而且存在缺陷。

为了更好地理解,让我们想象一下,如果正常情况下每个「区块领导者」都有 X 个可以对话的连接,那在活动高峰期,「区块领导者」就会开始接收 10-100 倍数量的连接请求……

Subscribe to Foresight News
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.