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í:

  1. Vstup s poplatkem: AmountInwith_fee=AmountIn×(FeeDenominator−FeeNumerator)AmountInwith_fee​=AmountIn×(FeeDenominator−FeeNumerator)

  2. Výpočet výstupu: AmountOut=AmountInwith_fee×ReserveoutReservein×FeeDenominator+AmountInwith_feeAmountOut=Reservein​×FeeDenominator+AmountInwith_fee​AmountInwith_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ů

  1. 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.

  2. 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.

  3. 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.

JTO
JTOUSDT
0.3959
-4.16%
SOL
SOLUSDT
142.7
-0.75%