酷玩网

为什么最近Solana上的交易常常会失败而且还很雍塞?

linx
欧意最新版本

欧意最新版本

欧意最新版本app是一款安全、稳定、可靠的数字货币交易平台。

APP下载  官网地址

近期,众多用户在Solana网络中遭遇了交易频繁失败和拥堵的困境。对此,研究员@nishil进行了深入剖析,揭示了这一问题的根源——网络层QUIC协议的设计缺陷,并透露众多开发者正致力于解决这一问题。

背景信息:Solana网络现状——用户交易失败率高达五成以上

在Solana网络上提交的交易,大致分为三种结果:交易成功执行、交易执行但失败、交易丢失。

自去年11月起,Solana的交易失败率始终维持在50%左右,意味着一半的交易未能顺利执行。

关于Solana网络用户交易失败率的问题

然而,这两种失败情况有着本质的区别。

交易执行却失败:执行条件变更、机器人套利

交易执行失败的原因通常是执行条件发生变化,不再符合交易执行的必要条件。例如,试图铸造一个已被他人抢先铸造的NFT,或者交易价格滑落超过了设定的最大值等。这种失败原因在其他区块链网络中也较为常见。

由于Solana网络的交易成本低廉,吸引了大量套利机器人和垃圾交易信息。为了套利,机器人会释放出大量交易内容,由于执行条件的变化,这些交易很容易失败,也就是所谓的“抢输”其他机器人。据数据显示,这类套利机器人发起的交易失败率高达98%。

Solana网络中套利交易失败率高达98%

然而,这些机器人的交易失败并非是导致Solana用户使用体验不佳的主要原因,因此也不是本文关注的焦点。用户交易失败的根本原因在于第三种情况——交易丢失。

交易丢失:源于网络层设计问题

交易丢失正是导致Solana网络上用户交易频繁失败的关键因素。交易丢失意味着交易未能成功传递给区块领导者(block leader),在Solana生态中,区块领导者负责在每个slot接收并执行交易内容。

@nishil指出,导致Solana网络上交易丢失的原因在于网络层,而非共识层或执行层,与区块链技术关系不大。

网络层是网络的通讯层,负责数据包的传输,例如TCP、UDP、QUIC等协议。为了防止区块领导者在短时间内接收过多交易导致当机,Solana网络近期将网络层通讯协议改为QUIC。

HTTP与QUIC传输协议对比图

QUIC允许区块领导者根据特定需求停止某些用户的连接,或对其传输速率进行限制,从而降低高峰使用期间的网络当机风险(虽然这会降低网络运行效率,但总比当机要好)。

然而,由于“选择限制哪个客户端连接的逻辑”目前设定不当且存在错误,Solana当前的做法是随机丢弃交易,而非根据特定标准丢弃,例如丢弃所有费用低于一定数额的交易。

这导致用户不得不发送更多垃圾交易。为了确保交易能够被成功执行,用户被鼓励发起大量交易,但这同时又会提高失败率,并加剧网络的拥堵,形成恶性循环。

为了提高交易被选中的概率,机器人在Solana网络上批量发送大量交易,使得用户交易成功执行的概率进一步降低。

最后,由于Solana网络设计上没有mempool,因此被丢弃的交易就会丢失,进而导致交易失败。

展望未来

目前,Firedancer、Anza和Solana官方等主要客户端团队都在努力解决这一问题,预计将在未来几周内找到解决方案。但最终效果仍需根据更新后的执行情况进行评估,并且还需要解决因调整传输机制而导致的拥堵问题。

另一方面,Solana网络中因交易成本低廉而存在的垃圾交易问题也需要得到解决。

或许,当这些问题得到解决后,我们才能看到真正稳健的Solana网络。然而,还有许多工作需要我们共同努力。

标签: 比特币挖矿