On-chain arbitrage: atomaire cycli, flash loans, en de veiling die je moet winnen
Er bestaat een comfortabele mythe dat on-chain arbitrage moeilijk is omdat het vinden moeilijk is – dat ergens in de prijsgrafiek een verborgen cyclus zit die alleen het slimste algoritme kan zien, en wie het snelst rekent, krijgt betaald. De waarheid is bijna het tegenovergestelde. Op een openbare blockchain is de winstgevende cyclus voor iedereen op hetzelfde moment zichtbaar, berekend door tientallen bots die bijna identieke code uitvoeren tegen dezelfde reserves. Detectie is een opgelost, gecommoditiseerd probleem. Wat moeilijk is – wat eigenlijk beslist wie het geld krijgt – is het winnen van de volgorde: je transactie in de juiste plek van het juiste blok krijgen, vóór elke andere zoeker die precies hetzelfde heeft gevonden. On-chain arbitrage is gemakkelijk te detecteren en moeilijk te winnen, en de kloof tussen die twee werkwoorden is waar de hele economie van de business leeft.
Dit artikel neemt de kant van de zoeker. In MEV anatomy hebben we het donkere woud vanuit het perspectief van het slachtoffer in kaart gebracht en een vervolg beloofd over de goedaardige extractie – de arbitrage en backrunning die on-chain prijzen eerlijk houden. In on-chain liquidations hebben we een flash-loan uitvoeringscontract en een oracle-backrun bundel gebouwd en hiernaar verwezen voor de algemene behandeling van de primitieve. Dit stuk betaalt beide schulden. Het gaat ervan uit dat je al weet wat een mempool, een bundel en een prioriteitsvergoeding zijn; zo niet, lees dan eerst het MEV-stuk. Hier bouwen we de machine van de arbitrageur: de atomaire transactie die niet kan verliezen, het geleende kapitaal dat de kapitaalbeperking opheft, de grafiekzoektocht die de gemakkelijke helft is, en de veiling die bijna de hele marge opslokt.
Atomiciteit: de transactie die terugdraait bij verlies
De bepalende eigenschap van on-chain arbitrage – hetgeen het categorisch veiliger maakt dan elke cross-venue transactie die een CEX-handelaar kan uitvoeren – is atomiciteit. Een multi-hop arbitrage is geen reeks transacties die je afvuurt en waarvan je hoopt dat ze samen landen. Het is een enkele transactie die elke stap van de cyclus uitvoert, en als het uiteindelijke saldo niet strikt groter is dan het startsaldo, wordt de hele transactie teruggedraaid: elke statuswijziging wordt teruggedraaid alsof het nooit is gebeurd, en je bent alleen de gas kwijt voor een mislukte transactie.
Dit verandert het risicoprofiel volledig. Een CEX-handelaar die BTC op de ene beurs koopt om het op een andere te verkopen, houdt tussendoor voorraad aan – seconden, minuten, hoe lang de overdracht en de tweede vulling ook duren – en slikt wat de prijs in dat venster doet. De on-chain arbitrageur houdt voorraad aan voor nul tijd in enige economisch zinvolle betekenis: de koop en de verkoop zijn dezelfde ondeelbare operatie. Er is geen prijsrisico halverwege de cyclus omdat er geen halverwege de cyclus is. Of de hele lus sluit winstgevend in één atomaire stap, of het gebeurt helemaal niet.
De bewaker die dit afdwingt, is een enkele vergelijking aan het einde van het uitvoeringspad. Conceptueel doet een atomair arb-contract niets meer dan:
// The whole cycle runs inside one transaction. If the closing balance
// does not clear the opening balance (plus costs), the require() throws,
// and the EVM reverts every trade that came before it.
function executeCycle(bytes calldata path, uint256 minProfit) external {
uint256 start = IERC20(baseToken).balanceOf(address(this));
_hopA(path); // e.g. USDC -> WETH on Uniswap
_hopB(path); // e.g. WETH -> DAI on Sushiswap
_hopC(path); // e.g. DAI -> USDC on Curve
uint256 end = IERC20(baseToken).balanceOf(address(this));
require(end >= start + minProfit, "unprofitable"); // atomic safety net
}
De require is het gehele veiligheidsmodel. Een verouderde koers, een concurrerende transactie die de pool één slot vóór de jouwe verplaatste, een onverwachte vergoeding – alles wat de cyclus onrendabel maakt, activeert simpelweg de bewaker en draait de transactie terug. Je verkoopt nooit de laatste stap tegen een slechtere prijs dan je had gemodelleerd en slikt het verlies; de transactie die geld zou hebben verloren wordt niet uitgevoerd. Dit is waarom arbitrage het goedaardige einde is van de MEV-taxonomie uit het MEV-stuk: er is geen slachtoffer wiens vulling wordt verslechterd, en de arbitrageur draagt geen directioneel voorraadrisico. De enige reële kosten van een mislukte poging zijn gas – wat, zoals we zullen zien, precies de kosten zijn die de competitieve veiling is ontworpen om op te blazen.
Flash loans elimineren de kapitaalbeperking
Atomiciteit maakt iets sterkers mogelijk: arbitrage met geen eigen kapitaal. Een flash loan stelt je in staat om een willekeurig bedrag te lenen van een leenpool met precies één voorwaarde – je betaalt het terug, plus een vergoeding, voordat de transactie eindigt. Omdat de lening, de arbitrage en de terugbetaling allemaal binnen één atomaire transactie plaatsvinden, loopt de pool geen wanbetalingsrisico: als je niet kunt terugbetalen, wordt de hele transactie teruggedraaid en wordt de lening ongedaan gemaakt. De geldschieter wordt beschermd door dezelfde terugdraaiing die jou beschermt.
Het patroon is een callback. Je roept de flash-loan functie van de pool aan; de pool stuurt je de tokens en roept jou dan terug; binnen die callback voer je de cyclus uit en moet je genoeg overhouden om terug te betalen:
// Called by the lending pool in the middle of the flash loan.
function receiveFlashLoan(address token, uint256 amount, uint256 fee, bytes calldata data)
external
{
// 1. buy the asset cheap on venue A with the borrowed `amount`
uint256 bought = _swap(VENUE_A, token, ASSET, amount, data);
// 2. sell it dear on venue B, back into the borrowed token
uint256 repaidIn = _swap(VENUE_B, ASSET, token, bought, data);
// 3. must be able to return principal + fee, or the whole tx reverts
require(repaidIn >= amount + fee, "arb cannot cover loan");
IERC20(token).transfer(msg.sender, amount + fee); // repay in-tx
// whatever remains — repaidIn - amount - fee — is profit, kept here
}
De vergoeding is klein en afhankelijk van de locatie: Aave v3 rekent 5 bps (0,05%) voor een flash loan, Balancer rekende historisch 0 bps, en Uniswap v3 biedt dezelfde mogelijkheid via flash swaps waarbij de vergoeding slechts de normale swapvergoeding van de pool is. Vijf basispunten is een reële kostenpost die binnen de marge van de cyclus moet worden verrekend, maar het is triviaal vergeleken met het alternatief om zes of zeven cijfers van je eigen voorraad vast te zetten om een verstoring vast te leggen die één blok duurt.
Het gevolg voor de marktstructuur moet duidelijk worden gesteld: flash loans ontkoppelen arbitragewinst van kapitaal. De winnaar van een bepaalde kans is niet de zoeker met de diepste balans – een bot met een paar dollar aan gasgeld kan tien miljoen dollar lenen voor de duur van één transactie. Kapitaal is niet de gracht. Iedereen kan dezelfde omvang lenen tegen dezelfde kans, en dat is precies waarom de concurrentie zich richt op het enige dat niet gecommoditiseerd is: als eerste worden gerangschikt.
Een uitgewerkte cross-DEX cyclus
Cijfers maken de mechanica concreet. Neem twee constant-product WETH/USDC pools met de 0,30% vergoeding (), en stel dat een grote koop pool B net boven pool A heeft geduwd – het soort verstoring dat in de volgende sectie wordt getoond, is waar cycli vandaan komen. Gebruik ronde, duidelijk illustratieve reserves:
- Pool A (goedkoop): WETH, USDC prijs USDC/WETH.
- Pool B (duur): WETH, USDC prijs USDC/WETH.
De cyclus is: flash-leen USDC, koop WETH goedkoop op A, verkoop het duur op B, betaal terug. Leen USDC. Stap 1 verkoopt USDC in pool A voor WETH:
Stap 2 verkoopt die WETH in pool B voor USDC:
Je leende 100.000, ontving 100.723, en bent een flash fee van 5 bps van 50 USDC verschuldigd. Netto: ongeveer $673 bruto winst op een kapitaaluitgave van nul, vóór gas en vóór het prioriteitsbod. Twee dingen om op te merken. Ten eerste bewegen de twee stappen de pools naar elkaar toe – kopen op A verhoogt de prijs, verkopen op B verlaagt de prijs – dus de winst is niet lineair in omvang: te veel pushen en prijsimpact eet het verschil op, precies zoals in de sandwich-optimalisatie uit het MEV-stuk. De zoeker voert een eendimensionale zoektocht uit over om de leenomvang te vinden die de nettowinst maximaliseert. Ten tweede is die $673 een deterministisch getal dat elke concurrerende bot tot dezelfde waarde berekent uit dezelfde reserves – wat het hele probleem is, en het onderwerp van de veilingsectie hieronder.

Detectie is de gemakkelijke helft
Gegeven de markt als een graaf – activa als knooppunten, handelsparen als gewogen randen – is een arbitragecyclus een lus waarvan het product van wisselkoersen groter is dan één. Neem de logaritme van elke koers, negateer deze, en een winstgevende cyclus wordt een negatieve-gewichtscyclus; het klassieke hulpmiddel om er een te vinden is Bellman-Ford, met SPFA en het recentere RICH-algoritme als snellere varianten afgestemd op de kleine, snel veranderende grafieken die echte markten produceren. Die hele toolkit – de log-transformatie, de negatieve-cyclusconditie, de Rust-implementaties, de op vergoedingen aangepaste randgewichten die de meeste theoretische cycli doden – is het onderwerp van graafalgoritmen voor arbitragedetectie, en het is niet nodig om het hier te herhalen.
Wat voor dit artikel van belang is, is één enkel boekhoudkundig punt: de vergoeding moet in het randgewicht worden opgenomen, anders is de cyclus een fata morgana. Een driebenige lus betaalt drie poolkosten plus, als je geleend hebt, de flash-loan kosten, en de negatieve-cyclus test moet ze allemaal zien:
from math import log
def cycle_log_gain(rates, pool_fee=0.003, loan_fee=0.0005):
"""Log-gain around a cycle. > 0 means gross profit before gas and priority bid.
`rates[i]` = units of the next asset per unit of the current one on hop i."""
gross = 1.0
for r in rates:
gross *= r * (1 - pool_fee) # each hop pays the venue's swap fee
gross *= (1 - loan_fee) # one flash-loan fee for the whole cycle
return log(gross) # still ignores gas and the auction bid
Hier is de dragende observatie. Die functie is deterministisch. Voer de huidige on-chain reserves in – die elk knooppunt identiek vasthoudt, omdat de keten een gedeelde, gerepliceerde toestandsmachine is – en elke zoeker berekent dezelfde cycle_log_gain tot dezelfde waarde op dezelfde blokhoogte. Er is geen privaat signaal, geen eigen dataset, geen informatievoorsprong. Wanneer een grote swap of een nieuw blok reserves herschikt, lichten tientallen bots die structureel identieke detectiecode uitvoeren allemaal op dezelfde cyclus binnen milliseconden van elkaar. De zoekopdracht retourneert hetzelfde antwoord aan iedereen.
Een opmerking over topologie, want die bepaalt hoe moeilijk de zoektocht werkelijk is. De goedkoopste cycli zijn driehoekig en intra-DEX – WETH → USDC → DAI → WETH volledig binnen één Uniswap-implementatie: drie hops, drie poolkosten, geen cross-venue coördinatie. Cross-DEX cycli (koop op Uniswap, verkoop op Sushiswap) voegen locaties toe, maar laten de atomaire bewaker identiek. Langere, exotische cycli ketenen nog meer hops – maar elke extra hop vermenigvuldigt een andere factor in het product, dus de op vergoedingen aangepaste negatieve-cyclusconditie doodt lange cycli snel. Dit is precies waarom echte zoekers de cycluslengte beperken tot drie tot vijf hops en agressief snoeien; het is de gelaagde, lengte-begrensde zoektocht die het RICH-algoritme uit het graafalgoritmen-stuk is gebouwd om uit te voeren.
Detectie wint je dus de transactie niet; het kwalificeert je alleen om ervoor te strijden. De log(gross) > 0-test vertelt je dat er een kans bestaat – het zegt niets over of jij het adres zult zijn dat deze benut. Dat wordt één laag lager beslist, in de volgorde, en de volgorde is niet iets wat je algoritme berekent. Het is iets waar je op biedt. Alles wat moeilijk is aan on-chain arbitrage gebeurt nadat de cyclus is gevonden.

Backrunning: de goedaardige vorm van MEV
Waar komen deze cycli überhaupt vandaan? Overwegend van transacties van anderen. Een grote swap op een Uniswap-pool beweegt de prijs van die pool weg van de bredere markt; de pool is nu verkeerd geprijsd ten opzichte van Binance, ten opzichte van een Curve-pool, ten opzichte van Sushiswap; en de handeling van het opnieuw uitlijnen ervan is een winstgevende arbitrage. De zoeker die dit doet, plaatst zijn transactie onmiddellijk na de swap die de verstoring veroorzaakte. Dit is backrunning, en het is de dominante, goedaardige vorm van on-chain MEV.
Denk aan de constant-product mechanica uit het MEV-stuk. Een pool houdt reserves met en spotprijs . Iemand verkoopt een grote hoeveelheid van het basisactief erin; door de invariant betaalt de pool uit
en de nieuwe spotprijs is lager – de verkoper heeft deze omlaag geduwd. Als de externe marktprijs nog steeds is, noteert de pool nu onder , en de winstmaximaliserende backrun koopt van de pool precies totdat de marginale prijs weer stijgt naar – dat wil zeggen, totdat de reserves weer voldoen aan . De arbitrageur vangt het gebied tussen de uitvoeringscurve van de pool en de vlakke externe prijs – de waarde die de grote swap op tafel liet liggen door de pool te verplaatsen.
Het kritieke structurele feit – hetgeen backrunning aan de goedaardige kant van de balans plaatst – is dat een pure backrun de uitvoering van het doelwit niet verslechtert. Het draait strikt na de swap van het slachtoffer. Tegen de tijd dat de backrun wordt uitgevoerd, is de prijs van de swapper al vastgelegd; niets wat de backrunner doet, kan teruggaan en deze verslechteren. Vergelijk dit met de giftige sandwich uit het MEV-stuk, waarbij een frontrun vóór het slachtoffer wordt ingevoegd om hun vulling te verslechteren, zodat de backrun de vergrote verstoring kan oogsten. Dezelfde backrun-mechanica, tegenovergestelde moraliteit: de sandwich creëert de misprijzing ten koste van het slachtoffer; de goedaardige backrun ruimt slechts een misprijzing op die het slachtoffer toch al zou hebben gecreëerd. De arbitrageur is het mechanisme waarmee on-chain prijzen de buitenwereld volgen – dezelfde rol die cross-venue arbitrage een stabiliserende kracht maakt overal in de financiële wereld.
Dit is ook waarom de moderne MEV-beschermingsstack probeert backruns te behouden en te herverdelen terwijl sandwiches worden onderdrukt. Flashbots' MEV-Share en orderstroomveilingen laten een gebruiker gedeeltelijke hints over hun transactie blootgeven, nodigen zoekers uit om te bieden voor het recht om deze te backrunnen, en betalen het grootste deel van de resulterende winst terug aan de gebruiker die de kans creëerde. De backrun gebeurt nog steeds – de prijs wordt nog steeds opnieuw uitgelijnd – maar de waarde vloeit terug naar de transactie die deze genereerde in plaats van te worden gestolen door wie het snelst was.
Waar de cycli vandaan komen
Bijna elke winstgevende cyclus is het gevolg van een andere on-chain gebeurtenis die een prijs heeft bewogen. Het kennen van de bronnen is het verschil tussen blindelings de hele grafiek bevragen en het observeren van de handvol triggers die daadwerkelijk randen creëren:
- Grote swaps. De canonieke bron, hierboven uitgewerkt: elke transactie die groot genoeg is om een pool van de bredere markt te bewegen, opent een backrun om deze opnieuw uit te lijnen. Hoe groter de swap en hoe dunner de pool, hoe groter de cyclus.
- Oracle-updates. Elke locatie die prijzen baseert op een oracle – geldmarkten, perp DEX's – wordt arbitrageerbaar zodra de feed beweegt. De oracle-update backrun die liquidaties aanstuurt, ontleed in het liquidaties-stuk, is dezelfde beweging toegepast op een prijsfeed in plaats van een swap: de update is het startschot, en de zoeker landt er onmiddellijk achter.
- Nieuwe of verwijderde liquiditeit. Een grote LP-mint of -burn verschuift de diepte van een pool en kan deze tijdelijk van de prijs afwijken; just-in-time (JIT) liquiditeit is de vijandige versie, waarbij diepte wordt toegevoegd rond een enkele lopende swap en deze onmiddellijk daarna wordt teruggetrokken.
- Cross-pool routing residu. Een router die een swap over pools verdeelt, laat ze zelden allemaal op precies dezelfde prijs achter, en de kleine onevenwichtigheden die het achterlaat, zijn backrun-bare cycli.
De praktische conclusie: een arbitragebot is voornamelijk een gebeurtenisluisteraar, geen graafoplosser. Het observeert deze triggers, herrekent alleen de subgraaf die elk aanraakt, en vuurt een bundel af – daarom is het incrementele update-ontwerp uit het graafalgoritmen-stuk veel belangrijker dan de ruwe zoeksnelheid over de volledige graaf.

De veiling eet de marge op
Nu het ongemakkelijke deel. Je hebt de cyclus gevonden. Net als iedereen. De kans is deterministisch, atomair en kapitaalvrij – wat betekent dat de enige variabele die overblijft, is wie in de winnende plek terechtkomt, en dat wordt beslecht door een prioriteitsveiling.
Sinds de migratie naar proposer-builder separation en MEV-Boost (de details van de infrastructuur worden beschreven in de aanstaande MEV supply chain: PBS and MEV-Boost), vechten zoekers niet langer openbare gasoorlogen in de mempool. Ze dienen bundels privé in bij block builders, met een bod – ofwel als een hoge prioriteitsvergoeding of als een directe betaling aan de builder. De builder stelt het meest waardevolle blok samen dat het kan en stuurt het door naar de proposer. Vanuit het oogpunt van de zoeker is dit een gesloten-bodveiling voor het recht om het adres te zijn dat een bekende, deterministische prijs uitvoert.
Modelleer het. Laat de bruto arbitragewinst zijn – de $673 uit de uitgewerkte cyclus hierboven, bijvoorbeeld – en laat de kosten van elke zoeker (gas, flash-loan fee) zijn. Om de plek te winnen, bied je tegen elke andere zoeker die dezelfde heeft berekend. Je netto als je wint is
Je wilt zo laag mogelijk; je wilt ook winnen. Maar je concurrenten staan voor dezelfde rekenkunde tegen dezelfde . In een gesloten-bodveiling over een gemeenschappelijke-waarde prijs die iedereen exact kan berekenen, klimt het evenwichtsbod totdat het bijna het hele overschot opslokt: , en de winnaar behoudt slechts , de flinterdunne marge waarmee ze de runner-up overbieden. Die $673 blijft niet bij degene die de cyclus heeft gevonden; bijna alles wordt rechtstreeks naar de builder en, uiteindelijk, de proposer die de volgorde heeft verkocht, geboden. Dit is geen marktfalen; het is wat een competitieve veiling hoort te doen.
De terugdraaiing is niet gratis – economie van het faalpercentage
Er is een tweede kostenpost die het naïeve model weglaat, en het is degene die operators daadwerkelijk scheidt. Wanneer je de veiling verliest, landt je bundel simpelweg niet – je betaalt niets, wat het hele punt is van het indienen van bundels boven de oude openbare gasoorlogen. Maar wanneer je de veiling wint met een bundel waarvan de simulatie verouderd was – de reserves bewogen tussen je uitlezing en opname – dan slaat je require(end >= start + minProfit)-beveiliging aan en draait de transactie on-chain terug, en je betaalt gas voor de terugdraaiing. Atomiciteit beschermt je hoofdsom, niet je gas.
De werkelijke verwachte waarde per kans voor de zoeker is dus
waarbij het gas is dat wordt verbruikt bij een gelande maar terugdraaiende bundel. Je bod hoger plaatsen wint meer slots, maar wint ook meer verouderde slots, waardoor de terugdraaitermijn toeneemt. De operators die overleven zijn niet degenen die meer cycli vinden – iedereen vindt dezelfde cycli – maar degenen met een lagere (goedkopere, strakkere uitvoeringspaden), een lagere terugdraaikans (fresher simulatie, betere inclusievoorspelling), en de discipline om niet te bieden op marginale kansen waarbij de verwachte terugdraaikosten het dunne overschot overspoelen. Het voordeel, voor zover dat bestaat, zit volledig in deze tweedegraads kosten.
De empirische vorm komt overeen met het model. Wanneer veel bots dezelfde on-chain kans simuleren tot hetzelfde winstcijfer, draagt de winnende bundel routinematig het grootste deel van de brutowinst over aan de builder en validator – dezelfde lekkage van meer dan 90% die we maten voor liquidaties, om dezelfde reden: perfecte informatie over een gemeenschappelijke prijs plus een gesloten-bodveiling leidt tot marges die worden weggedrukt tot de kosten van de marginale verliezer. Het voordeel van de zoeker is niet de omvang van , die iedereen ziet. Het is elk privévoordeel in (goedkopere uitvoering, betere routering, lager faalpercentage) of in zien voordat de massa dat doet.
Wat je precies vertelt waar winst nog overleeft:
- Long-tail chains en onvolwassen builder-markten. Op chains waar weinig geavanceerde zoekers actief zijn en de builder-veiling dun of afwezig is, blijft het bod laag omdat er niemand is om je op te bieden. Dezelfde cyclus die oplevert op Ethereum mainnet kan het grootste deel van opleveren op een rustige L2 of een alt-L1. Het voordeel is concurrentie, niet slimheid.
- Low-competition pools en exotische activa. Kansen waarvan de winstgevende exit het opeten van dunne, pad-afhankelijke DEX-liquiditeit vereist, zijn moeilijk correct te simuleren. Een zoeker die de volledige round-trip modelleert – inclusief exit-slippage op een illiquide token – vangt cycli op die naïeve bots ofwel missen ofwel verkeerd prijzen in een revert. Hier is het voordeel echt uitvoeringskwaliteit, niet latentie.
- CEX-DEX arbitrage. De grootste categorie – en degene die atomiciteit doorbreekt. Het krijgt een eigen sectie, hierna.
De eerlijke samenvatting van het atomaire, on-chain spel: het is een uitstekende manier om EVM-internals, builder-infrastructuur en veilingtheorie op de harde manier te leren. Het is een brute manier om de kost te verdienen, want hetgeen je verkoopt – het vermogen om een deterministische cyclus te vinden en uit te voeren – is precies hetgeen je concurrenten ook verkopen, en de veiling prijst het tegen kostprijs.

CEX-DEX arbitrage: de grootste categorie, en het is niet atomair
De grootste enkele bron van winbare waarde on-chain is niet de nette atomaire cyclus. Het is CEX-DEX arbitrage: de prijs van een asset op een gecentraliseerde beurs wijkt af van de prijs op een DEX, en een zoeker handelt aan beide kanten om het verschil te dichten. Studies naar niet-atomaire arbitrage – het meest direct Heimbach, Pahari en Schertenleib's Non-Atomic Arbitrage in Decentralized Finance (2024) – schrijven honderden miljoenen dollars aan gewonnen waarde toe aan cross-exchange arbitrageurs over een periode van meerdere jaren, wat de atomaire, puur on-chain categorieën overtreft. Als je wilt begrijpen waar het geld in MEV werkelijk zit, dan is dit het.
En het schendt de eigenschap die alles hierboven veilig maakte. Eén deel van de transactie bevindt zich op een gecentraliseerde beurs; het andere deel bevindt zich on-chain. Het on-chain deel is atomair – het landt in een blok of draait terug – maar het CEX-deel is een afzonderlijke order op een afzonderlijke matching engine, die volgens zijn eigen tijdschema afwikkelt. De twee delen kunnen niet in één enkele terugdraaiing worden gewikkeld. Er is geen require(end >= start) die beide locaties omvat. De zoeker backrunt een swap op Uniswap om WETH goedkoop on-chain te kopen, en verkoopt afzonderlijk WETH op Binance om de spread te realiseren – en tussen die twee gebeurtenissen kan de prijs bewegen. CEX-DEX arbitrage draagt het voorraadrisico dat atomaire arbitrage elimineert.
Dat risico verandert de hele vorm van de business:
- Je moet vooraf inventaris op beide locaties plaatsen. Je kunt de CEX-poot niet flitsleningen. Om WETH op Binance te verkopen zodra je on-chain aankoop bevestigd is, moet je al WETH op Binance houden (en de quote-valuta on-chain, en vice versa voor de andere richting). Kapitaal, dat de flash loan uit atomaire arbitrage had verbannen, komt direct terug als een harde eis – inventaris die op meerdere beurzen staat, blootgesteld.
- Je moet de openstaande poot afdekken. Tussen de on-chain vulling en de CEX-vulling ben je directioneel long of short op het actief. Serieuze CEX-DEX-operators runnen dit als een continu delta-beheerd boek: ze dekken de blootstelling af op een perpetual future, behandelen de financieringskosten van die hedge als een bedrijfskosten, en beheren de basis tussen spot en perp. Dit is geen nieuw probleem – het is precies de machinerie van cross-exchange funding-rate arbitrage, waarbij het hele spel draait om het aanhouden van compenserende posities over locaties en het financieren van de hedge via funding. CEX-DEX-arbitrage is die discipline met één poot vastgepind aan een blok.
- Het voordeel is deels informatief en structureel. Omdat de CEX-prijs de DEX-prijs leidt (gecentraliseerde orderboeken worden continu bijgewerkt; AMM-koersen bewegen alleen wanneer iemand handelt), weet een zoeker die het CEX-orderboek leest welke richting de volgende backrun moet gaan voordat de on-chain prijs inhaalt. En steeds vaker internaliseren de bouwers zelf deze stroom: een bouwer die ook een CEX-DEX-desk runt, kan het blok rond zijn eigen transacties ordenen. Dit vervaagt de grens tussen zoeker en bouwer en is een van de centraliserende krachten in de MEV supply chain – de entiteiten die de meeste orderstroom zien en de meeste ordening controleren, vangen ook de meeste niet-atomaire arbitrage op.
De afweging is dus precies omgekeerd aan het atomaire geval. Atomaire arbitrage is veilig (terugdraaien bij verlies, geen voorraad, geen kapitaal) maar meedogenloos beconcurreerd (deterministische prijs, veiling eet de marge op). CEX-DEX arbitrage is gevaarlijk (reëel voorraadrisico, reëel kapitaal, een hedge om te financieren en te beheren) maar veel groter en minder perfect betwist, precies omdat het gevaar en de kapitaalvereiste de bots weghouden die alleen de risicovrije atomaire lus kunnen uitvoeren. Het extra rendement is compensatie voor het extra risico – wat het meest gewone feit in de financiële wereld is, dat zich uiteindelijk opnieuw manifesteert op een keten die een hele sectie deed alsof risicovrij geld op tafel lag.
Wat mee te nemen
Vat het argument samen tot de dragende punten:
- Atomiciteit is het hele veiligheidsmodel. Een multi-hop arbitrage is één transactie met een
require(end >= start + minProfit)-beveiliging; alles wat het onrendabel maakt, draait terug, zodat de arbitrageur nooit voorraadrisico halverwege de cyclus loopt en nooit de laatste poot met verlies verkoopt. - Flash loans ontkoppelen winst van kapitaal. Leen, arb, en betaal terug binnen één atomaire transactie; de geldschieter wordt beschermd door dezelfde terugdraaiing als jij. De winnaar is niet de zoeker met het meeste kapitaal – kapitaal is niet de gracht.
- Detectie is de gemakkelijke, gecommoditiseerde helft. De negatieve-cyclus zoektocht van graafalgoritmen voor arbitrage is deterministisch en identiek voor iedereen; het vinden van de cyclus kwalificeert je alleen om ervoor te strijden.
- Backrunning is de goedaardige, dominante vorm. Onmiddellijk landen na een grote swap of een oracle-update lijnt een verkeerd geprijsde pool opnieuw uit zonder iemands vulling te verslechteren – het tegenovergestelde van de giftige sandwich, en hetgeen MEV-Share probeert te herverdelen in plaats van te onderdrukken.
- De veiling eet bijna de hele marge op. In een gesloten-bod builder-veiling over een gemeenschappelijke, berekenbare prijs, convergeren biedingen naar en lekt meer dan 90% naar de builder en proposer. Winst overleeft alleen waar de concurrentie dun is: long-tail chains, illiquide pools, en de moeilijker te simuleren exits.
- CEX-DEX is de grootste categorie en het is niet atomair. Eén poot op een CEX betekent reëel voorraadrisico, reëel kapitaal, en een hedge om te financieren – het cross-exchange funding playbook toegepast met één poot vastgepind aan een blok, en een van de krachten die de MEV supply chain naar de builders trekken die de meeste stroom zien.
On-chain arbitrage lijkt van buitenaf op een puzzel over het vinden van verborgen cycli. Van binnenuit is het een veiling – en de puzzel was voor iedereen op hetzelfde moment opgelost. Weten waar de cyclus is, is nooit het voordeel geweest. Het winnen van de plek, of handelen waar niemand anders biedt, was het altijd.
Referenties
- Daian, Goldfeder, Kell, Li, Zhao, Bentov, Breidenbach, Juels (2019), Flash Boys 2.0: Frontrunning, Transaction Reordering, and Consensus Instability in Decentralized Exchanges. arXiv:1904.05234.
- Heimbach, Pahari, Schertenleib (2024), Non-Atomic Arbitrage in Decentralized Finance. arXiv:2401.01622 (IEEE S&P 2024).
- Robinson & Konstantopoulos (2020), Ethereum is a Dark Forest.
- Aave v3 flash loans en Balancer / Uniswap v3 flash-swap documentatie (tariefschema's).
- Flashbots documentatie: MEV-Boost, MEV-Share, order-flow auctions (docs.flashbots.net).
Auteurs
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.