为什么大多数加密机器人会被夹击(以及如何防止)
I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Please paste the content (excluding the source line you already provided), and I’ll convert it into Simplified Chinese while preserving the original formatting, markdown, and any code blocks or URLs.
介绍
如果你曾经构建或使用过加密交易机器人,你很可能遇到过令人沮丧的现象:你的机器人下单后,价格在执行前瞬间对你不利,这被称为 sandwiched。这通常是最大可提取价值(MEV)夹层攻击。下面我们将解释夹层攻击的原理,以及如何使用 Jito 捆绑、Flashbots 等工具和其他最佳实践来保护你的机器人。
三明治攻击的工作原理
三明治攻击是一种 MEV(矿工可提取价值)利用方式,恶意行为者会在你的交易前后各插入一笔交易:
- 抢先交易 – 攻击者在公共 mempool 中检测到你的待处理交易(例如买单),并先提交自己的买单。
- 你的交易执行 – 你的买单推高了价格。
- 后置交易 – 攻击者在更高的价格卖出代币,赚取差价。
结果是,你为代币支付了更高的费用,而攻击者获得了利润。依赖公共 mempool 的机器人尤其脆弱,因为攻击者可以监控这些池子并在毫秒级别执行三明治攻击。
量化影响
示例:您的机器人尝试在类似 Uniswap 的去中心化交易所以每 ETH 1500 美元的价格购买 10 ETH。
- 攻击者抢先交易,先买入 10 ETH 并将价格推高至 1,510 美元。
- 然后您的机器人以 1,510 美元的价格购买 10 ETH,支付 15,100 美元 而不是 15,000 美元。
- 攻击者以 1,510 美元的价格卖出这 10 ETH,获得 100 美元 的利润。
当这种情况在数百或数千笔交易中累计时,损失将非常可观。MEV 提取(包括三明治攻击)在 2022 年 alone 就为攻击者带来了 超过 10 亿美元 的利润。
防止三明治攻击
Jito Bundles(Solana)
Jito Bundles 允许你将一组交易直接提交给区块生产者,绕过公共内存池,使你的交易在被包含进区块之前对攻击者不可见。
use jito_bundles::Bundle;
use solana_sdk::transaction::Transaction;
let mut bundle = Bundle::new();
let tx = Transaction::new_with_payer(&[instruction], Some(&payer.pubkey()));
bundle.add_transaction(tx);
let bundle_hash = bundle.hash();
jito_client.submit_bundle(bundle).await?;
Flashbots Protect(以太坊)
Flashbots Protect(以及类似的 Taichi Network 等服务)允许将私有交易直接提交给矿工,避免在公共内存池中暴露。
from web3 import Web3
from flashbots import FlashbotsProvider
web3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID"))
flashbots_provider = FlashbotsProvider(web3, "YOUR_FLASHBOTS_KEY")
tx = {
"to": "0xRecipientAddress",
"value": web3.toWei(1, "ether"),
"gas": 21000,
"gasPrice": web3.toWei(20, "gwei"),
}
flashbots_provider.send_transaction(tx)
竞争性 Gas 费用
攻击者常常针对低费用交易进行攻击,因为这些交易更容易被抢先执行。通过设置更高、具有竞争力的 Gas 费用,你可以提升交易被快速包含的概率,从而缩小三明治攻击的时间窗口。
关键要点
- 避免公开内存池:尽可能使用私有交易服务(例如 Jito Bundles、Flashbots)。
- 监控 gas 价格:调整费用以保持竞争力并减少暴露时间。
- 批量交易:将多个交易合并为单个交易,以限制可见条目数量。
了解三明治攻击并采取这些防护措施可以显著降低机器人漏洞,提高交易效率,保护利润。
结论
三明治攻击仍然是公共内存池中加密交易机器人面临的普遍风险。虽然无法消除所有威胁,但利用私有交易通道、保持竞争性的 gas 费用以及批量交易将大幅降低暴露风险。保持警惕,确保交易私密,并持续优化速度和效率。
推广说明
如果你想测试一个现成的解决方案,考虑使用 @ApolloSniper_Bot——最快的非托管 Solana 抢单机器人。当机器人交易量达到 $10 M 时,将铸造全新 $APOLLOSNIPER 代币,并将 20 % 的代币供应空投给通过机器人交易的钱包,空投比例与其交易量成正比。立即加入这场革命吧!