Ve "lesním lese" Solany, když obdržíte signál aktualizace účtu z modulu Scout, je soutěž už ve svých posledních milisekundách. Pokud musíte odeslat transakci zpět do uzlu RPC pro "simulaci (Simulate)" a získat nabídku, je šance často už dávno vyhrána konkurencí, která dokončila výpočty místně.
Skuteční profesionálové Searcher nikdy nečekají na odpověď RPC. Udržují si v paměti místní zrcadlo stavu AMM a okamžitě po přijetí binárních dat přímo vypočítají optimální cenu pomocí matematického modelu.
Tento článek ukáže, jak efektivně vybudovat místní oceňovací motor pro Raydium (CPMM) a Orca (CLMM).
1. Klíčová myšlenka: místní výpočet vs. RPC simulace
1.1 Proč zvolit místní oceňování?
Extrémní zpoždění: RPC simulace obvykle trvá 50ms-200ms, zatímco čisté místní matematické výpočty vyžadují pouze mikrosekundy.
Současná schopnost: Místní výpočty nevyužívají výkon RPC uzlů, takže mohou okamžitě procházet tisíce arbitrážních cest pro oceňování.
Determinismus: Analyzováním původních účetních dat (Account Data) můžete získat nižší úroveň kontroly stavu než při simulaci.
2. Raydium (CPMM): Umění konstantního násobení
Standardní bazény Raydium dodržují klasický vzorec x×y=kx×y=k. I když je logika jednoduchá, v inženýrské realizaci je třeba řešit malé odchylky v přesnosti a poplatcích.
2.1 Klíčový cenový vzorec
V případě scénáře s poplatky je vzorec pro výpočet celého množství amount_out následující:
Vstup s poplatkem: AmountInwith_fee=AmountIn×(FeeDenominator−FeeNumerator)AmountInwith_fee=AmountIn×(FeeDenominator−FeeNumerator)
Výpočet výstupu: AmountOut=AmountInwith_fee×ReserveoutReservein×FeeDenominator+AmountInwith_feeAmountOut=Reservein×FeeDenominator+AmountInwith_feeAmountInwith_fee×Reserveout
2.2 Hra o přesnost: Nezbytnost U256
Na Solaně je počet tokenů obvykle u64. Ale při výpočtu výše uvedeného vzorce čitatele (Numerator) by dva velké u64 okamžitě vedly k přetečení.
Řešení: Zavést U256 do výpočtu střední vrstvy. I když oficiální knihovna Rust to přímo neposkytuje, pomocí makra uint nebo knihovny primitive-types můžeme zajistit, že i při extrémní volatilitě (velké vklady) zůstane výpočet absolutně přesný.
3. Orca Whirlpool (CLMM): Precizní analýza soustředěné likvidity
Na rozdíl od CPMM je model soustředěné likvidity (CLMM) Orca mnohem složitější. Zahrnuje nejen ceny, ale také Tick (cenové intervaly) a hloubku likvidity.
3.1 Zobrazení ceny: Q64.64 sqrtPrice
Orca používá čtvercovou cenu (sqrtPrice) a ukládá ji ve formátu Q64.64.
Vzorec: Price=(sqrtPriceX64264)2Price=(264sqrtPriceX64)2
Při analýze musíme zpracovat 128bitové supervelké celé číslo a pomocí posunovacích operací extrahovat skutečnou cenu.
3.2 Rychlá analýza: Metoda Offset
Účetní struktura Orca's Whirlpool je velmi rozsáhlá (obsahuje více sad odměn, parametry poplatků atd.), a pokud použijeme úplné deserializace (Borsh Deserialize), výkon bude výrazně ztracen.
Průmyslové optimalizační řešení:
Přímo lokalizovat binární data účtu pomocí Offset (posun). Vzhledem k tomu, že struktura bazénu je pevná, můžeme přímo číst klíčové bajty:
data[49..65] -> Likvidita (Liquidity)
data[65..81] -> Cena (sqrtPrice)
data[81..85] -> Aktuální Tick
Tento způsob je více než 10krát rychlejší než úplná analýza.
4. Architektonický návrh: Quote cenová vrstva
Aby se vrstva strategie (Strategy) nemusela starat o matematické rozdíly mezi různými DEX, musíme vybudovat jednotný motor Quote:
flowchart LR
RawData[Originální účetní data] -->|Analýza| AMMState[AMM paměťový obraz]
AMMState -->|Vstupní částka| LocalMath[Místní matematický model]
LocalMath -->|Výstup| AmountOut[Strukturované cenové nabídky]
subgraph "Místní výpočetní vrstva"
LocalMath
AMMState
end
Tento motor bude v reálném čase udržovat zůstatek pokladny v bazénu. Když Scout zachytí jakoukoli změnu v jednom z Vaultů, motor Quote okamžitě přepočítá celou cestu nabídky pro daný token.
5. Inženýrská optimalizace: Rychlost z detailů
Výpočet nulového přidělení: Během výpočtů se snažte vyhnout alokaci paměti (Heap Allocation), použijte primitivní typy na zásobníku.
Hromadné RPC požadavky: I když je oceňování místní, zůstatek pokladny musí být stále synchronizován. Použijte getMultipleAccounts k hromadnému získání všech relevantních stavů Vault, aby se snížila síťová latence.
Předpočítání: Pro pevné parametry jako poplatky dokončete analýzu v počáteční fázi, abyste se vyhnuli opakovanému výpočtu na každém milisekundovém Hot Path (horké cestě).
6. Technická prezentace: Logika oceňování CPMM (verze Python)
I když produkční prostředí usiluje o maximální výkon Rustu, jeho základní matematickou logiku lze jasně demonstrovat pomocí Pythonu:
# Simulace vysoce výkonného místního oceňování
def calculate_local_quote(amount_in, res_in, res_out, fee_pct=0.0025):
"""
Místní oceňování CPMM: x * y = k
"""
# Simulace výpočtu U256, aby se zabránilo přetečení
fee_numerator = int(fee_pct * 10000)
fee_denominator = 10000
# 1. Vypočítat účinný vstup po odečtení poplatků
amount_in_with_fee = amount_in * (fee_denominator - fee_numerator)
# 2. Vypočítat výstup podle vzorce
číšník = amount_in_with_fee * res_out
jmenovatel = (res_in * fee_denominator) + amount_in_with_fee
amount_out = číšník // jmenovatel
# 3. Vypočítat cenový dopad (Price Impact)
price_impact = (amount_out / res_out) pokud res_out > 0 jinak 1
vrátit amount_out, price_impact
# Simulace: 1 SOL na USDC, v bazénu je 1000 SOL / 100,000 USDC
out, impact = calculate_local_quote(1 10*9, 1000 10*9, 100000 10*6)
print(f"[*] Odhadovaný výstup: {out / 10**6} USDC")
print(f"[*] Cenový dopad: {impact:.4%}")
7. Shrnutí: Výpočetní síla je zisk
Ve světě Solana MEV určuje místní oceňovací schopnost vaši úroveň konkurence.
Začínající hráči spoléhat na RPC simulace, mohou si pouze vzít zbytek polévky.
Středně pokročilí hráči realizují lokalizaci CPMM.
Pokročilí hráči dokážou přesně analyzovat každou Tick CLMM a realizovat atomární arbitráž ve spojení s Jito.
Další krok předpovědi
Nyní, když máme „Senzor (Scout)“ a „Mozek (AMM Math)“, je čas přejít na nejvzrušující část: Jak navrhnout strategii arbitráže napříč DEX? Jak najít tu nejziskovější cestu v komplexním prostředí s mnoha cestami a protokoly?
Tento článek napsal Levi.eth. Na Solaně může optimalizace každého matematického vzorce přinést skutečné zisky na řetězci.

