Sosyal Medya

De-Fi Dersleri VI – Uniswap V2

7 Haziran 2022

De-Fi Dersleri VI- Uniswap V2

1- Order Book nedir ?

Türkçe karşılığı emir defteri yada emir tahtasıdır. Alım satıma konu olan finansal varlıkların fiyat oluşumu bu emir defterleri üzerinden gerçekleştirilir. Bu defterin bir tarafından satıcılar satmak istedikleri fiyattan diğer tarafında ise alıcılar almak istedikleri fiyat üzerinden sıralanır. Aşağıdaki örnekte görüldüğü üzere alıcı ve satıcının buluştuğu noktada (örnekte 11224.9 dolar) ilgili varlık için fiyat oluşur. Aşağıdaki örnekte kırmızı renk SATICILAR ‘ı yeşil renk ise ALICILAR’ı temsil etmektedir.

2- Neden emir defterini (order book) kullanmıyoruz?

Bu defter merkezi sistem üzerinden çalışmaktadır. Alıcılar ve satıcılar, merkezi bir hizmet sağlayıcının verdiği alana giriş yapıp işlemlerini gerçekleştirmektedir. Merkezi token/coin borsalarını düşünün yada direkt borsaları düşünün. Bu işlemlerin ne kadar gerçek olduğunu bilemezsiniz. Belki bu sistemi sağlayan kurum, işlemleri manipüle etmek adına kötü yazılımlar kullanmaktadır.

3- AMM nedir ?

Automated Market Maker (Otomatik Piyasa Yapıcı), merkezi olmayan borsaların(DEX) çalışma prensibine verilen genel addır. Bu piyasalarda her token/coin çiftlerinin oluşturduğu havuzlarda işlem yapılmaktadır.

Her token(coin) çiftinin bir havuzu vardır.

Mesela, BTC-ETHER havuzu, AVAX-ETH havuzu

Çiftler arasındaki parite(değişim oranı) burada AMM mantığı ile hesaplanır.

Aşağıda uniswap v3 havuzları görülmektedir.

4- Basit AMM mantığı nasıl işler ?

Havuzdaki tokenların miktarsal çarpımları sabit bir katsayıya eşittir. Sabit fonksiyonu düşünün.

x* y = k

x ile y nin çarpımı hep k ya eşittir.

Basit bir örnek

x:10

y:20

x*y=200

Diyelim x=5 oldu y de sabit fonksiyonu sağlamak için  40 olur.

5*40=200

UNISWAP

5- Uniswap v2  nasıl işler ?

Uniswap  v2 havuzlarında AMM sistemi fee ile uygulanmaktadır. İlgili havuzlara token/coin koyanlara bir gelir sağlanması gerektiğinden, uniswap bu teşvik mekanizmasını havızdan yapılan swaplarda fee alarak sağlamaktadır. Bu fee, uniswap  v2 de binde 3‘dür.

Kaynak:https://github.com/runtimeverification/verified-smart-contracts/blob/master/uniswap/x-y-k.pdf

Bu dokuman üzerinde ilk olarak havuzlarda yapılan swaplarda token miktarlarının nasıl değiştiği gösterilmektedir.

Gözünüz korkmasın, alın size bir uygulama.

ETH/TOKEN havuzunda

1000 ETH ve 10000 Token var

x*y=10.000.000

Havuza 4 ether veriliyor karşığında kaç token alalım ki sabit katsayı olan 10.000.000 değişmesin

(x+Δx)(yΔy)=xy

(1000 + 4 ) (10000-Δy )=10.000.000

Δy =39.84 bulunur

Sağlama yapalım

(1004) * (9960.16)=10.000.000

 

Şimdi bu işlemleri fee ile görelim.

(x+rΔx)(yΔy)=xy

Uniswap v2’de fee %0.3 dür.

Buradaki r değeri ise (1-%0.3)=0.997

ETH/TOKEN havuzunda

1000 ETH ve 10000 Token var

x*y=10.000.000

Havuza 4 ether veriliyor karşığında kaç token alalım ki sabit katsayı olan 10.000.000 değişmesin

(x+rΔx)(yΔy)=xy

(1000 + 0.997*4) (10000-Δy )=10.000.000

Görüldüğü üzre fee, olayın çerçevesini değiştiriyor. Sistem sizden 4.01 adet ETH vermenizi istiyor bunun karşılığında 39.722 diğer tokendan alıyorsunuz.

Δy =39.72 bulunur

Sağlama yapalım

(1003.988) * (9960.278)=10.000.000

6- Uniswap V2’de fiyat nasıl oluşur ?

Uniswap V2 de fiyatlar her havuzda yapılan değişimlerin birbirine oranlanması üzerinden yapılır.

ETH/TOKEN havuzunda

1000 ETH ve 10000 Token vardı.

Bu durumda 1 ETH = 10 TOKEN

Havuza 4 ETH verilip 39.72 TOKEN alındı.

Bu durumda 1 ETH = 9.93 TOKEN

Bu matematiği sabit katsayı ile ilişkilendirmek istersek aşağıdaki matematik ortaya çıkacaktır.

P= y/x ise

y yerine P*x yazabiliriz;

x*y=L² iken

P= y/x ise

x yerine y/P yazabiliriz;

x*y=L² iken

7- Bir Uniswap v2 Havuz Örneği

Havuzumuz DAI/ETH havuzu olsun.

Aşağıdaki işlemde havuza 607.21 DAI verilip 0.3209 ETH alınmış inceleyelim.

İncelemek için etherscan e gidelim.

İşlem öncesinde havuzda Reserve0=8.773.553 adet DAI ve Reserve1=4.650 adet ETH varmış.

Havuza 607.21 DAI verilip 0.3209 ETH alınmış .

Şu kodu anlamamız zorunlu. Özür dilerim.

balance0= reserve0 + amount0In

balance0= 8.773.553 + 607.21=8.774.143

amount0In=607.21 dönecek

amount1In=0 dönecektir.

 

İşlem sonrası düzeltilmiş değerleri hesaplıyoruz.

balanceOAdjusted ise= 8.774.143 *1000 -(607.21 *3)

balance1Adjusted ise= 4.649,95 *1000 – (0*3)

geliyoruz

balanceOAdjusted* balance1Adjusted >= reserve0* reserve1*(1000^2)

Uniswap v2 nedir

Uniswap v2 nedir

Uniswap Scdevstr Doc.Dr Engin Yilmaz 09062022

 

Kaynaklar:

https://jeiwan.net

https://medium.com/@jarekcoding/math-behind-uniswap-swap-part1-88dcc18a9612

https://github.com/Uniswap/v2-core/blob/master/contracts/UniswapV2Pair.sol

https://mirror.xyz/roherrera.eth/BMg6IoBHO8fNuyvmAuSDqjWf3ur-YZEAsNyG-aA1f9Y

https://docs.uniswap.org/protocol/V2/concepts/core-concepts/oracles

https://v2.info.uniswap.org/pair/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11

https://github.com/runtimeverification/verified-smart-contracts/blob/master/uniswap/x-y-k.pdf

 

Tüm Yazarlar

Yazarın Diğer Yazıları