autorenew
改善 Solana 的 Agave 流水线中的负载卸载:Max Resnick 关于区块链机制设计的见解

改善 Solana 的 Agave 流水线中的负载卸载:Max Resnick 关于区块链机制设计的见解

在区块链快速发展的世界里,尤其是在像 Solana 这样 meme 代币以极快速度上线和交易的网络上,管理网络拥堵至关重要。负载卸载(loadshedding)——选择性丢弃交易或数据包以应对超载的过程——在保持系统顺畅运行方面扮演着关键角色。但正如 Anza 的首席经济学家 Max Resnick 在他最近的 X 帖子 中指出的那样,这是区块链机制设计中最困难的问题之一。

Resnick 在他的系列文章开篇中解析了 Agave 交易流水线(Solana 的验证节点客户端)中的负载卸载是如何工作的。对于不熟悉这一术语的读者,Agave 是驱动 Solana 验证者的开源软件,负责从交易验证到执行的所有流程。流水线将交易引导通过诸如 QUIC/UDP 接收、签名验证(sig_verify)、banking/scheduler(记账/调度)以及最终执行等阶段。

为什么这与 meme 代币爱好者有关?在高流量事件(比如某个 meme 币病毒式拉盘)期间,Solana 曾面临交易堆积的问题。搜索者和交易者不断重试并向网络发送大量请求,进一步加剧了拥堵——这正是 Resnick 描述的场景。

当前设置及其缺陷

Resnick 解释道,负载卸载之所以棘手,是因为决策必须极快地做出,往往在纳秒级别内完成,而无法深入判断每笔交易的价值。你无法检查每一笔交易,否则会拖慢整个系统。

作为回顾,以下是 Agave 的交易流向:

Agave 交易漏斗示意图:QUIC/UDP -> sig_verify -> banking/scheduler -> execution

聚焦在紧接着通过 2 秒滚动布隆过滤器(用于以高速检查重复项而无需存储所有内容)进行去重之前的 sig_verify 阶段,Resnick 强调了一个有问题的函数:discard_batches_randomly()。

显示 Agave 中 discard_batches_randomly 逻辑的代码片段

当批次超过 MAX_DEDUP_BATCH(165,000 个数据包)时,它会基于本地线程的随机数生成器随机丢弃一些数据包。虽然这种情况并不经常触发,但从根本上说这是有缺陷的。想象打电话给一个繁忙的客服热线,而对方会随机挂断——你只会不断重拨,甚至用多个号码反复尝试。在 Solana 拥堵期间发生的正是这种情况:搜索者向网络发送大量重复请求,制造了更多负载。

这种激励去刷新的现象是个重大警告信号,尤其是在对时间极为敏感、机器人激烈竞争的 meme 代币发行期间。

更聪明的替代:工作量证明(PoW)谜题

Resnick 提出了一种更好的方法:在交易中集成一个轻量级的工作量证明(proof-of-work, PoW)谜题。PoW 在比特币挖矿中很常见,要求通过计算工作来解决谜题,从而证明已投入资源。

他的思路是:对数据包进行哈希,并检查哈希是否低于一个根据网络负载动态调整的难度阈值。这个检查比布隆过滤器便宜 5-6 倍,并能抑制垃圾流量——因为每次重试都意味着必须重新解一道谜题。

在交易数据包中集成工作量证明谜题的示意图

这是一个简单且优雅的修复方案,能够在不产生巨大开销的情况下提高网络的弹性。Resnick 还指出流水线中大约有五个类似的负载卸载点,并暗示如果关注度高,他会继续发更多帖子。

这对 Meme 代币及更广范围的重要性

对于区块链从业者和 meme 代币交易者而言,这类改进可能意味着在热潮周期中更少的失败交换、更公平的访问机会以及更少的挫败感。Solana 的生态系统中承载了无数 meme 币,通过改进机制设计可以获得巨大收益。正如 Resnick 的帖子所展示的那样,对超载处理方式进行小幅调整,就能避免级联问题。

如果你正在在 Solana 上构建项目或只是参与 meme 交易,关注 Anza 的进展是值得的——在 X 上关注 Max Resnick 可获取更多深度解析。你怎么看——PoW 能否成为更顺畅交易的关键?在下方评论区分享你的想法!

你可能感兴趣