這可能會引起爭議,但你的交易應該能夠抵抗惡意的夾擊驗證者。 我建立了一個簡單的程序來做到這一點。 你無法在運行時知道滑點是自然市場波動還是夾擊攻擊。但如果你的交換落在一個已知的惡意驗證者上,你幾乎可以保證會被夾擊到你的最大滑點。 這讓你能夠反擊。 ✅ 在可信的驗證者上?你的交易以你期望的滑點(x%)進行。 ❌ 在惡意驗證者上?你的交易滑點會被調整(0%,x%的某個分數,任何你想要的) 你的交易不僅僅是回退,當在更黑暗的環境中運行時,可以在更嚴格的約束下成功。 當你創建並簽署你的交易時,你並不知道它將落在什麼驗證者上,因此改變行為的邏輯必須在鏈上。 那麼它是如何工作的呢?一個Solana程序無法訪問當前的驗證者,但它可以訪問當前的槽。 該程序接受一個緊湊的表示(14字節,但可以進一步減少),以便讓程序檢查槽的領導者是否被標記為惡意。 幾種使用方式: (1) 你可以將其直接作為一個簡單的指令插入(<260 CU,大部分是訪問Clock sysvar)。當它落在惡意驗證者上時,會回退整個交易。 (2) 你可以用它來包裝Jupiter v6路由器。它將調用Jupiter程序並動態覆蓋`slippage`值,但僅在它運行在惡意驗證者上時。 (3) 通過CPI直接從你自己的程序調用它。 惡意驗證者及其即將到來的槽的列表可以從我們即將推出的Sandwiched[dot]me API或你自己的數據中獲取。 請記住,這個原型是實驗性的。它尚未部署在鏈上。希望能得到你的反饋,並歡迎PR。
2.78K