Een Uniswap-v4-handelsbot moet een bepaalde pool identificeren en begrijpen voordat hij een transactie kan automatiseren. Het tokenpaar alleen is onvoldoende. Kostenconfiguratie, tickafstand en het hookadres horen ook bij de poolidentiteit, terwijl de omliggende blockchain en geïmplementeerde beheerder bepalen waar die identiteit betekenis heeft.

Dit is belangrijk omdat bekende aannames van eerdere geautomatiseerde marktmakers niet ongewijzigd overgaan. Een v4-pool hoeft geen afzonderlijk paarcontract te zijn met eigen eenvoudig te interpreteren tokensaldi. Hooks kunnen gedrag toevoegen en een weergegeven kostenveld beschrijft niet altijd de huidige kosten van de volgende swap. Deze gids legt uit hoe die verschillen worden beoordeeld zonder aan te nemen dat elke pool of hook wordt ondersteund. Alle numerieke voorbeelden zijn fictief.

Poolidentiteit voor een Uniswap-v4-handelsbot

Poolidentiteit voor een Uniswap-v4-handelsbot begint met de juiste blockchain en PoolManager-implementatie. Binnen die context bevat de poolsleutel de geordende valuta’s, het kostenveld, de tickafstand en het hookadres. Een wijziging in één veld kan een andere pool identificeren, ook als de twee bekende tokensymbolen identiek blijven.

Bewaar de volledige identiteit in de handelsbeslissing in plaats van die later uit een zoekresultaat te reconstrueren. Een grafiek voor één pool mag geen transactie tegen een andere toestaan die toevallig dezelfde activa ruilt.

Twee hypothetische markten ruilen bijvoorbeeld tokens A en B. De ene gebruikt vaste kosten en geen aanvullend hookgedrag. De andere gebruikt dynamische kosten en een hook met eigen configuratie. Ze als uitwisselbaar behandelen kan onderzoek van de eerste markt aan uitvoering van de tweede koppelen.

De Uniswap-marktgids legt het bredere ontdekkingsproces uit. V4 vereist dat de ontdekkingsregistratie meer dan een paarnaam bewaart voordat ze een uitvoerbare instructie wordt.

Begrijp het singletonboekhoudmodel

De PoolManager bewaart de status van meerdere v4-pools binnen een gedeelde contractarchitectuur. Het tokensaldo van de beheerder bekijken isoleert daarom niet de reserves voor één specifieke pool. Een ouder proces dat saldi van een afzonderlijk paarcontract leest vereist een andere interpretatie.

Een bruikbare vergelijking is een magazijn voor meerdere onafhankelijke accounts. De totale voorraad in het gebouw toont niet hoeveel aan één klant is toegewezen. De vergelijking is beperkt, maar legt vast waarom gedeeld beheer en poolboekhouding afzonderlijk moeten worden onderzocht.

De bot moet poolspecifieke status en een ondersteunde prijsopgavemethode gebruiken. Hij moet ook de gebruikte interpretatie vastleggen, vooral als hooks boekhouding buiten een eenvoudige kernliquiditeitsweergave kunnen beïnvloeden.

Een ongewoon groot beheerderssaldo bewijst niet dat de beoogde transactie diepe liquiditeit heeft. Als een dashboard dat totaal als beschikbare diepte van één nieuwe tokenmarkt promoot kan de schijnbare precisie een fundamentele boekhoudfout verbergen.

Scheid initialisatie van bruikbare liquiditeit

Een pool kan worden geïnitialiseerd voordat hij nuttige liquiditeit heeft. Initialisatie stelt een beginstatus vast; ze bewijst niet dat een order van de beoogde omvang tegen een aanvaardbare prijs kan worden uitgevoerd. Dit verschil is belangrijk voor systemen die op nieuw waargenomen pools reageren.

Geconcentreerde liquiditeit voegt een ander verschil toe. Kapitaal dat bij een pool hoort is niet noodzakelijk op de huidige prijs actief. Een positie buiten het relevante bereik kan niet als direct beschikbare diepte rond de voorgestelde ruil worden behandeld.

Stel dat een fictieve markt veel totaal gestorte waarde toont, maar een aankoop van 200 noteringseenheden een veel slechtere gemiddelde prijs geeft dan een aankoop van 20. De kleinere prijsopgave valideert de grotere transactie niet. De bot vereist de beoogde hoeveelheid, actuele bereikomstandigheden en verwachte eindontvangst.

De gids voor vroege Uniswap-uitvoering bespreekt waarom ontdekkingssnelheid geen verhandelbaarheid vaststelt. Een v4-implementatie moet expliciet onderscheid maken tussen een poolaanmaakwaarneming, waarneming van gefinancierde status en een actuele uitvoerbare prijsopgave.

Hookcontroles voor een Uniswap-v4-handelsbot

Hookcontroles voor een Uniswap-v4-handelsbot betreffen zowel toegestane callbacks als werkelijk gedrag. Een hook kan op vastgelegde momenten in poolbewerkingen deelnemen. Weten welke callbacks zijn ingeschakeld vertelt de beoordelaar waar extra logica kan draaien; het stelt niet vast dat die logica onschadelijk of economisch gunstig is.

Lees de geverifieerde implementatie en relevante configuratie van de specifieke hook. Een herkenbaar projectlabel of gekopieerd adres uit een oude handleiding stelt niet vast dat de huidige route de beoordeelde implementatie gebruikt.

Onderscheid ook het hookadres van het gedrag dat erdoor bereikbaar is. Het hookadres van een pool hoort bij de identiteit, maar een vast adres bewijst op zichzelf niet dat elke implementatie, beheerinstelling of afhankelijkheid erachter onveranderlijk is.

Een verstandige compatibiliteitsregistratie vermeldt welk hookgedrag de bot begrijpt en welk gedrag tot weigering van uitvoering leidt. Een eenvoudige pool ondersteunen betekent niet automatisch willekeurige hooklogica ondersteunen. Een niet-ondersteunde voorwaarde moet zichtbaar blijven in plaats van achter een algemeen prijsopgave-geslaagd-label te verdwijnen.

Behandel dynamische kosten als actuele status

V4 onderscheidt pools met vaste kosten van pools met dynamische kosten. Bij een dynamische pool kunnen de relevante kosten van updates of hookgedrag afhangen. Het identificerende kostenveld mag niet worden gelezen alsof het altijd het letterlijke tarief van de volgende transactie is.

Dit verandert caching. Een poolsleutel kan gelijk blijven terwijl economisch relevante kostenstatus verandert. Een cache met alleen de twee tokenadressen als sleutel kan zowel de juiste pool als actuele uitvoeringsvoorwaarden missen.

Neem een fictieve vergelijking met verder gelijke financiële uitwerking vóór kosten. Route A rekent twee eenheden swapkosten en vijf eenheden netwerkkosten. Route B rekent vier eenheden swapkosten en één eenheid netwerkkosten. Hun totale kosten zijn respectievelijk zeven en vijf. De lager getoonde swapvergoeding levert niet de goedkoopste volledige route.

Het voorbeeld sluit prijsimpact en aanvullend gedrag uit om de berekening te isoleren. Een werkelijke vergelijking moet alle begrepen kosten en de verwachte uiteindelijke accountontvangst omvatten, niet alleen één opvallend kostenveld.

Bepaal wat een prijsopgave werkelijk bevat

Een prijsopgave moet invoerhoeveelheid, opbrengstschatting, route, statusreferentie en behandeling van relevante kosten identificeren. Als een hook extra tokenbewegingen of beperkingen kan introduceren, bepaal dan of de prijsopgavemethode die modelleert. Een getal uit een algemene interface is niet automatisch een volledige economische voorspelling.

Scheid gequote opbrengst van besteedbare ontvangst. Die kunnen verschillen wanneer tokengedrag of routespecifieke kosten het ontvangende account beïnvloeden. De bot moet weten welke waarde de bescherming via minimale opbrengst begrenst.

Neem een prijsopgave van 10.000 eenheden die na een gemodelleerde inhouding 9.700 besteedbare eenheden wordt. Die route vergelijken met een andere die 9.850 besteedbare eenheden levert vereist consistente definities. De eerste op het eerdere getal van 10.000 rangschikken zou verschillende uitvoeringsfasen vergelijken.

Meld bij onzekerheid over wat is inbegrepen de onzekerheid en houd de route buiten automatische uitvoering. Dezelfde niet-ondersteunde prijsopgave vaker herhalen verbetert bereik noch betrouwbaarheid.

Lees een samenhangende verzameling statusgegevens

Een handelsbeslissing combineert poolstatus, hookconfiguratie, tokenmetadata, walletcapaciteit en routebevoegdheden. Die op sterk verschillende momenten lezen kan feiten opleveren die nooit samen bestonden. Sneller pollen vervangt begrip van hun onderlinge verband niet.

Een gecachete kostenwaarneming kan bijvoorbeeld vóór een beheerupdate zijn gedaan terwijl de liquiditeitsprijsopgave erna volgt. De resulterende uitleg kan een opbrengst aan het verkeerde kostenregime toeschrijven, ook als de swap zelf slaagt.

Bewaar statusreferenties en waarnemingstijden bij de beslissing. Als de ondersteunde infrastructuur geen voldoende samenhangend beeld voor een bepaalde hook kan bieden, kan de bot het ondersteunde universum beperken of een nieuwe verificatiestap vereisen.

De Ethereum-API-gids legt uit waarom een antwoord gedateerd bewijs is en geen blijvende waarheid. Bij v4 geldt dat principe voor de extra status die een hook introduceert, naast gewone saldi en de poolprijs.

Uitvoeringslimieten voor een Uniswap-v4-handelsbot

Uitvoeringslimieten voor een Uniswap-v4-handelsbot moeten de werkelijke route aan de toegestane intentie binden. Relevante velden zijn activa, exacte poolcontext, bestedingsbedrag, ontvanger en aanvaardbare ontvangst. Een vervalvoorwaarde is nuttig waar de gekozen router die ondersteunt; ze mag niet als universele eigenschap van elke kernbewerking worden verzonnen.

Onderscheid intenties met exacte invoer van die met exacte opbrengst. Precies 100 eenheden besteden met minstens 9.000 tokens als vereiste is anders dan precies 9.000 tokens krijgen met maximaal 104 eenheden besteding. Een gebruikersinterface mag de ene instructie niet stilzwijgend in de andere veranderen.

Stel dat een prijsopgave met exacte invoer 12.000 tokens schat en het gekozen minimum 11.640 is. Dat staat 360 tokens minder toe, oftewel 3% onder de schatting. Het belooft geen uitvoering op de schatting en begrenst niet elk mogelijk toekomstig verlies op de gekochte positie.

Houd positielimieten ook buiten de prijsopgave. Een technisch geldige route kan nog steeds het blootstellingsbeleid van het account schenden wanneer bestaande voorraad en onopgeloste verplichtingen worden meegenomen.

Identificeer native valuta en verpakte tokens nauwkeurig

V4 ondersteunt weergave van native valuta, dus een bot moet native ETH onderscheiden van een verpakt token, ook als beide op hetzelfde onderliggende activum betrekking hebben. Route en boekhouding moeten identificeren welke vorm wordt besteed, ontvangen of omgezet.

Dat verschil beïnvloedt beschikbare middelen. Een account met genoeg verpakte tokens voor een transactie kan nog onvoldoende native valuta voor netwerkkosten hebben. Omgekeerd kan alle native valuta als transactie-invoer reserveren te weinig capaciteit voor het beoogde uitvoeringspad laten.

Gebruik afzonderlijke grootboekcategorieën voor de hoofdsom van handel, bewegingen voor verpakken of uitpakken en netwerkkosten. Waarde tussen native en verpakte vormen verplaatsen mag niet automatisch als handelswinst verschijnen.

In een fictief voorbeeld begint een account met 0,30 native eenheden en reserveert 0,02 voor verwachte operationele behoeften. Het beschikbare native handelsbudget is volgens dat beleid maximaal 0,28 vóór andere verplichtingen. Een voorstel van 0,29 overschrijdt het beleid, ook als een loutere saldocontrole voldoende middelen aangeeft.

Koppel bevoegdheden aan de werkelijke besteder

Pool, hook, router en ontvanger van bestedingstoestemming zijn geen uitwisselbare rollen. Een bot moet uitleggen welk onderdeel de gebruikerstokens kan verplaatsen en waarom die bevoegdheid voor het gekozen pad nodig is. De pool herkennen valideert geen ongerelateerd goedkeuringsverzoek.

Beoordeel bevoegdheidsbereik afzonderlijk van transactieomvang. Een beoogde aankoop van 100 eenheden rechtvaardigt niet de aanname dat een veel grotere bestedingstoestemming dezelfde praktische blootstelling geeft. Ook de behouden accountsleutels nemen de al aan een ander contract verleende bevoegdheid niet weg.

De gids voor ERC-20-bevoegdheden geeft het onderliggende verschil van bestedingstoestemming. Pas dat toe op de werkelijke besteder van de ondersteunde v4-route in plaats van elk adres in een handig interfaceverzoek goed te keuren.

Bevoegdheidswijzigingen vereisen ook een eigen status. Een bevestigde goedkeuring is geen voltooide aankoop. Als de latere swap wordt opgegeven of mislukt moeten grootboek en interface het verschil tussen toegestane en werkelijke tokenbeweging bewaren.

Interpreteer flashboekhouding zonder gratis kapitaal te verzinnen

V4’s flashboekhouding volgt saldoverschillen tijdens bewerkingen en vereist dat de relevante verplichtingen aan het einde van de interactie worden vereffend. Dit kan onnodige tussentijdse overdrachten binnen de ondersteunde uitvoeringsstroom verminderen. Het creëert geen gegarandeerde handelswinst.

Een bot moet nog steeds de volledige reeks handelingen en eindverplichtingen begrijpen. Een reeks afzonderlijk aantrekkelijke stappen kan na kosten, afronding en routegedrag een ongunstig eindbedrag overlaten.

Het maakt ook ongerelateerde transacties niet atomair. Twee afzonderlijk ingediende bewerkingen of handelingen op verschillende blockchains krijgen geen alles-of-nietsgedrag alleen omdat één onderdeel v4-boekhouding gebruikt.

Beoordeel atomiciteit op de werkelijke transactiegrens. Als een strategie van een tweede onafhankelijke transactie afhangt, beschrijf dan wat gebeurt als de eerste slaagt en de tweede mislukt. Die blootstelling hoort in het positieplan en mag niet door een technische term voor de eerste bewerking worden verborgen.

Interpreteer flashboekhouding zonder gratis kapitaal te verzinnenShared ManagerPool AccountingHook BehaviorRouter AuthorityAccount BalancesTRADING FIELD NOTESEDUCATIONAL RESOURCE
Gedeeld contractbeheer, poolfinanciën, hooklogica en gebruikersbevoegdheden zijn afzonderlijke feiten die niet tot één saldolezing mogen worden teruggebracht.

Stem het account af in plaats van de weergegeven prijs

De uiteindelijke boekhoudvraag is wat het account besteedde, ontving en nog bezit. Een grafiekprijs of bericht dat een transactie is ingediend beantwoordt die vraag niet alleen. Bewaar de uiteindelijke transactiestatus en relevante accountwijzigingen.

Bij een fictieve aankoop geven 100 noteringseenheden plus twee eenheden afzonderlijk gemeten kosten totale aankoopkosten van 102. De hele ontvangen positie later voor netto 110 verkopen levert acht eenheden winst op. Een weergegeven prijswinst van 10% verandert dat resultaat van acht eenheden niet.

Als slechts de helft wordt verkocht, verdeel de aankoopkosten dan consistent en bewaar de resterende voorraad. Noem niet de hele positie winstgevend alleen omdat de gerealiseerde helft gunstig uitviel terwijl de onverkochte helft verslechterde.

Scheid waar native valuta ook gas betaalt de hoofdsombeweging van de netwerkafschrijving. Anders kan een saldoverschilmethode operationele kosten voor extra aankoopomvang aanzien of het werkelijke uitstapbedrag verbergen.

Houd blootstelling gedeeld over vergelijkbare pools

Hetzelfde token via twee verschillende v4-poolsleutels verhandelen creëert geen twee ongerelateerde economische blootstellingen. Poolidentiteit telt voor uitvoering, maar portefeuille-identiteit telt ook voor risico. De bot heeft beide weergaven nodig.

Stel dat een account al 240 eenheden tokenblootstelling heeft en een onopgeloste aankoop van 60. Een nieuw voorstel van 80 via een andere pool met hooks brengt de vastgelegde blootstelling op 380. Bij een limiet van 350 overschrijdt het voorstel de beschikbare capaciteit met 30.

Een route annuleren geeft de reservering niet vrij totdat de bot de resulterende status vaststelt. Een onzekere transactie mag niet als zeker afwezig worden geteld alleen omdat een nieuwere pool nu een betere prijsopgave biedt.

Houd een gedeeld budget per activum en behoud routegebonden registraties. Zo kan een beoordelaar begrijpen waarom een bepaalde pool werd gekozen en waarom een verder aantrekkelijke transactie vanwege bestaande verplichtingen elders werd afgewezen.

Onderzoek een teruggedraaide transactie voordat je de handel wijzigt

Een teruggedraaide transactie betekent niet noodzakelijk dat de minimale opbrengst te streng was. De oorzaak kan een hookvoorwaarde, incompatibel tokengedrag, onvoldoende bevoegdheid of routeaanname zijn die niet meer bij de huidige status past. Tolerantie verhogen zonder de fout in te delen kan een slechtere prijs toestaan en het werkelijke probleem onaangeraakt laten.

Bewaar de oorspronkelijke beslissing en het foutbewijs. Vergelijk het verwachte pad met status en antwoord tijdens uitvoering. Als de oorzaak onbekend blijft mag een nieuwe poging geen onbeperkt herhaalbudget erven alleen omdat de vorige geen tokens kocht.

Mislukte pogingen kunnen nog netwerkmiddelen verbruiken. In een hypothetische sessie verbruiken zes mislukte transacties van elk 0,40 eenheden samen 2,40 voordat een geslaagde aankoop iets verdient of verliest. Een latere handelswinst van drie eenheden laat na die gemeten pogingen slechts 0,60 over, aangenomen dat er geen andere kosten zijn.

Het foutengrootboek hoort daarom naast het positiegrootboek. Het helpt een strategie met aanvaardbare uitgevoerde transacties onderscheiden van een implementatie die te veel besteedt om die te bereiken. Een operationele pauze kan door herhaalde fouten met incompatibele status gerechtvaardigd zijn, ook als de marktverwachting van het activum niet veranderde.

Beoordeel veranderingen zonder het verleden te herschrijven

Hookconfiguratiewijzigingen verdienen gedateerde registraties. Wanneer een beoordelaar uitkomsten vóór en na een wijziging vergelijkt mag de strategie niet doen alsof elke transactie de huidige instellingen gebruikte. Anders kan een schijnbare verbetering eenvoudig andere uitvoeringsvoorwaarden weerspiegelen die nooit zijn vastgelegd.

Bewaar poolidentiteit, beoordeelde implementatiecontext en relevante configuratiereferentie bij elke voltooide beslissing. Als een nieuwe beoordeling verandert wat de bot ondersteunt, pas die bevoegdheid dan op latere handelingen toe in plaats van eerder bewijs te herlabelen alsof het al aan de nieuwe norm voldeed.

Een praktisch voorbeeld is een account dat slechts een beperkte verzameling begrepen hooks mag verhandelen. Een hook toevoegen moet een expliciete compatibiliteitsbeslissing met reden vereisen. Een token dat al via een oudere route wordt aangehouden geeft niet automatisch toestemming voor de nieuwe route.

Die geschiedenis ondersteunt ook het intrekken van bevoegdheid. Wanneer bewijs onvolledig of tegenstrijdig wordt kan het systeem nieuwe blootstelling stoppen en de registraties bewaren die voor bestaand bezit nodig zijn. Stoppen met extra risico en beslissen over een bestaande positie zijn gerelateerd maar afzonderlijk.

Test bewust de niet-ondersteunde gevallen

Een betekenisvolle simulatie moet meer omvatten dan een geslaagde swap tegen een bekende pool. Neem ontbrekende liquiditeit, een verouderde kostenwaarneming, gewijzigde hookconfiguratie, onvoldoende operationele valuta en een route onder het ingestelde minimum mee.

Test ook identiteitsfouten. Een geldig tokenpaar met het verkeerde hookadres of de verkeerde tickafstand mag niet slagen omdat de symbolen kloppen. Het verwachte resultaat is afwijzing van de niet-overeenkomende intentie met nuttige uitleg.

Leg het bereik van elke test vast. Een geslaagde simulatie op één status levert bewijs over die status en route. Ze bewijst geen blijvende compatibiliteit met alle toekomstige configuraties of een andere hook met vergelijkbare callbacks.

De praktische norm is een verklaarbare uitvoeringsgrens. Een goed gespecificeerde bot kan aangeven welke pools hij begrijpt, welke feiten een transactie toestaan, welke limieten haar begrenzen en welk eindbewijs het grootboek sluit. Pools buiten die grens blijven onderzoekskandidaten totdat de ontbrekende interpretatie is opgelost.

Verder leren

Alle bronnen bekijken