在两个月前,Jito 推出了一个新特性,用于缓解三明治攻击,而无需使用投票账户方法。这一机制的推出标志着 Jito 在提高交易安全性方面迈出了重要一步。为此,我编写了一个 Demo 仓库,展示了如何使用这一机制,并提供了相关示例。
Jito 通过新增一个特殊格式的账户来实现三明治攻击的缓解。其基本规则如下:
jitodontfront
开头。例如:jitodontfront111111111111111111111111111111
或jitodontfront111111111111111111111111111123
任何包含 jitodontfront
账户的交易都将被区块引擎拒绝,除非该交易出现在 Bundle 中的第一位(索引 0)。
该账户不需要在链上存在,但必须是一个有效的公钥。
建议将该账户标记为只读,以优化处理速度。
可选:为您的应用程序使用 jitodontfront
的唯一变体(注意:使用您自己的公钥)。例如:
jitodontfront111111111114511111111111111123
jitodontfront111111111111234565432123456782
该解决方案支持 Jito 的 sendBundle
和 sendTransaction
接口,而不像投票账户方法那样不兼容。
支持 Address Lookup Tables(ALT)。
您可以查看以下使用该保护机制的示例 Bundle: Jito Bundle Explorer 示例
为了展示这个机制的实现,我写了一个 Demo 仓库,其中包含了一个基于 Jito Bundle 交易功能的演示,并实现了三明治攻击保护机制。您可以通过此仓库学习如何将这一新特性应用到 Solana 交易中。
尽管该特性可以帮助减少三明治攻击的发生,但并不能保证完全解决所有类型的交易排序问题,特别是第三方排序问题。此外,此功能仅适用于区块引擎,无法应用于其他软件。
此机制的推出为 Solana 生态系统中的交易提供了更高的安全性和防护,尤其是在去中心化金融(DeFi)交易中防止恶意攻击。