Een diepe duik in de Binance DEX Match Engine
StartpaginaArtikelen

Een diepe duik in de Binance DEX Match Engine

Gemiddeld
4w ago
8m

Hoe Binance DEX verschilt van Binance.com


Wat is het doel van Binance Chain/DEX?

Het doel van de Binance Chain en DEX is het creëren van een gedecentraliseerde markt direct op de blockchain. Activa worden niet naar een beurs of wallet gestuurd die door één platform of entiteit wordt gecontroleerd. In plaats daarvan staan de transacties en het orderboek op de blockchain. Er zijn geen kosten voor tussenpersonen, enkel netwerkkosten, en gebruikers behouden de volledige controle over hun activa.


Belangrijkste eigenschappen van Binance Chain

Binance Chain is gebaseerd op het consensusmechanisme van Byzantijnse fouttolerantie (BFT). Dit betekent dat de blockchain veilig is zolang tweederde van de nodes eerlijk zijn. Als een transactie eenmaal in een block is vastgelegd, wordt die definitief. Er zijn geen risico's van aanpassing van de chain of een scenario waarin de chain wordt geforked.

Ook is de block-tijd op de Binance Chain ongeveer één seconde, met een hoge doorvoer van transacties. Dit is op het moment van schrijven een van de snelste blockchains die commercieel wordt ingezet.

Binance DEX houdt het orderboek bij op de blockchain. Dit betekent dat iedereen die een volledige node heeft heeft, ook een volledige kopie van de blockchain heeft.

Hier zijn enkele manieren waarop Binance DEX verschilt van binance.com:

  • Ordertype: Binance DEX accepteert alleen limit orders
  • Matching-logica: vanwege de aard van blockchains worden blocks geproduceerd in discrete tijdsintervallen, vandaar dat Binance DEX niet continu orders uitvoert zoals de meeste gecentraliseerde uitwisselingen doen. In plaats daarvan vindt het matchen van orders plaats met behulp van een periodieke veiling, waarin alle open orders die tot het laatste block waren ontvangen, worden uitgevoerd.


Hoe worden orders uitgevoerd op Binance DEX?

Als je haast hebt, kun je deze sectie overslaan en direct naar de “Match Engine voorbeelden” gaan.

Er zijn twee soorten Matching Engines:

  • Continuous - waarbij orders onmiddellijk worden uitgevoerd

  • Discrete - waarbij orders op specifieke tijdsintervallen worden uitgevoerd in de vorm van een veiling

Binance DEX gebruikt een discrete Matching Engine. Orders worden elk block verzameld en alle open orders tot aan het laatste block worden aan het einde van dat block uitgevoerd.


Belangrijkste principes van de Matching Engine:

  • Orders worden één keer per block uitgevoerd

  • Orders worden uitgevoerd als de hoogste biedprijs hoger is dan de laagste laatprijs

  • Slechts één prijs wordt geselecteerd per block, de zogenaamde uitvoerprijs voor alle uit te voeren orders

  • Orders worden eerst uitgevoerd op basis van prijsagressiviteit, daarna op basis van de tijd (block-hoogte) waarop ze zijn geaccepteerd

Elke poging tot het uitvoeren van orders vindt plaats nadat een block is geregistreerd in de chain (“gemined”). Dit gaat in onderstaande stappen:

  • De uitvoerprijs wordt bepaald op basis van de volgende factoren:

    • Maximaal uitvoerbaar volume

    • Minimaal overschot

    • Marktdruk

    • Referentieprijs

  • Orders worden ingevuld op basis van de volgende regels:

  • Orders met de hoogste biedprijs worden gekoppeld aan orders met de laagste vraagprijs;
  • Als niet alle aan- of verkooporders kunnen worden afgewikkeld tegen de uitvoerprijs van het block, worden de orders uit de eerste blocks geselecteerd en als eerste uitgevoerd

  • Als niet alle aan- of verkooporders kunnen worden afgewikkeld en in hetzelfde block staan, zal de toegewezen uitvoering in verhouding staan tot hun hoeveelheid (getrapt als het decimale orders bevat). Als de toewijzing niet gelijk kan worden verdeeld, zal een deterministisch algoritme een eerlijke selectie garanderen op basis van een willekeurig order-ID.


Matching Engine voorbeelden

Let vooral op scenario's 3, 4 en 5 als je een “gretige” handelaar bent of handelt in zeer volatiele of illiquide markten.


Scenario 1: geen match

In dit voorbeeld zijn de bied- en laatprijzen niet 'gekruist' (hoogste biedprijs lager dan laagste vraagprijs). Hoewel wordt geprobeerd om de orders uit te voeren, lukt dit niet. Zie de afbeelding:

Aan het begin van dit block hebben we de volgende open orders.

Er wordt een aankooporder geplaatst voor 10 Testnet-tokens tegen een prijs van 5 per eenheid.

Er zijn geen orders uitgevoerd. Het orderboek bevat nu de volgende open orders:

Scenario 2: het maximaal uitvoerbaar volume bereiken

Aan het begin van dit block hebben we de volgende open orders.


Je plaatst daarna de volgende orders:

  • Aankooporder voor 30 Testnet-tokens tegen een prijs van 12 per eenheid

  • Aankooporder voor 10 Testnet-tokens tegen een prijs van 10 per eenheid

  • Aankooporder voor 20 Testnet-tokens tegen een prijs van 9 per eenheid

  • Aankooporder voor 30 Testnet-tokens tegen een prijs van 8 per eenheid


De prijs voor deze ronde is 6 om het maximaal uitvoerbare volume te bereiken. Tegen de prijs van 6 worden er in totaal 90 transacties uitgevoerd.

Nadat de orders zijn uitgevoerd, kun je de transactiegeschiedenis zien:

Verkooporder:

Aankooporder:

Scenario 3: orders met de beste biedprijs matchen met orders met de beste laatprijs

Aan het begin van dit block hebben we de volgende open orders.

Daarna plaats je de volgende orders:

  • 25 orders tegen prijs een prijs van 10

De prijs voor deze ronde is 7 om het maximaal uitvoerbare volume te bereiken en alle transacties worden tegen een prijs van 7 uitgevoerd. De verkooporders zijn gedeeltelijk gevuld. Aangezien orders met de beste biedprijs worden gekoppeld aan orders met de beste laatprijs, worden verkooporders van 6 als eerste gevuld. Daarna wordt de verkooporder van 7 gevuld. De verkooporders van 7 worden op deze manier dus gedeeltelijk gevuld.

Open orders na het matchen:


Scenario 4: een grote aankooptransactie

Aan het begin van dit block hebben we de volgende open orders.

Zoals je kunt zien, zijn er verschillende verkooporders op verschillende prijsniveaus. Als je een grote aankooporder van 150 stuks tegen een prijs van 25 plaatst, zal het volgende gebeuren:

De prijs wordt afgewikkeld op 10 en alle verkooporders worden gevuld.

Orderboek na het matchen:

Analyse:

deze handelsprijs kan nadelig lijken voor de koper. In het voorbeeld betaal je in totaal 800. Je kunt een eerlijkere prijs krijgen als je kleinere bestellingen plaatst voor een lager bedrag. Je betaalt minder als je de bestelling als volgt opbreekt:

  • Koop 15 orders tegen 6.

  • Koop 25 orders tegen 7.

  • Koop 25 orders tegen 8.

  • Koop 5 orders tegen 9.

  • Koop 10 orders tegen 10.

Als je ervoor kiest om je bestellingen op deze manier te plaatsen betaal je in totaal 610 in plaats van 800.


Scenario 5: een grote verkooptransactie

Aan het begin van dit block hebben we de volgende open orders.

We hebben de volgende orders:

Je plaatst een grote verkooporder van 80 tegen een prijs van 6.

De transacties worden afgewikkeld tegen een prijs van 6.

Het bedrag van 450 is niet ideaal. Je kunt meer verdienen als je de volgende stappen volgt:

  • Verkoop 5 orders tegen 10.

  • Verkoop 40 orders tegen 8.

  • Verkoop 10 orders tegen 7.

  • Verkoop 20 orders tegen 6.

Op deze manier levert de verkoop in totaal 560 op.


Scenario 6: wie het eerst komt, het eerst matcht

Aan het begin van dit block hebben we de volgende open orders.

Dan bereiken de volgende orders de Match Engine:

  • 20 aankooporders tegen 6

  • 10 verkooporders tegen 6

Aangezien er al verkooptransacties van 6 in de order zitten, worden deze transacties als eerste gematcht.

De aankooporder is helemaal gevuld.

De vorige 15 verkooporders tegen 6 zijn helemaal gevuld.

De 10 verkooporders tegen 6 zijn voor de helft gevuld.

Orderboek na het matchen: