✨Salut, tuturor, sunt Momo. Recent am învățat despre Ethereum și am organizat câteva note din procesul de învățare într-un articol, pe care doresc să-l împărtășesc cu voi. Această serie 0x1 este pentru cunoștințe de bază pentru începători, sper să avem prieteni cu aceleași interese pentru a învăța și a discuta împreună, de asemenea, vă rog pe cei cu experiență să mă sfătuiască.

#Uniswp

# 0x00 Introducere

În trecut, am discutat despre principiile și logica de bază a Uniswap V2; cei interesați pot consulta articolele anterioare.

Uniswap V2 este împărțit în două părți principale:

  • Core: include Factory, Pair, Pair ERC20

  • Periphery: include Routers

Adresa de implementare a contractului pe rețeaua principală

  • Adresa contractului Factory: 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f

  • Adresa contractului V2Router02: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

În cadrul acestuia, Core este responsabil în principal pentru logica de bază și pentru gestionarea unui singur swap; Periphery oferă servicii externe, construind servicii pe baza tuturor swap-urilor.

# 0x01 Analiza Uniswap V2 Core

## UniswapV2Factory: Crearea și gestionarea perechilor de tranzacționare

Contractul `UniswapV2Factory` este unul dintre componentele de bază ale protocolului Uniswap V2, responsabil pentru crearea și gestionarea tuturor perechilor de tranzacționare (Pair). Acesta oferă mai multe funcții esențiale, inclusiv `createPair`, `allPairs` și `getPair`.

Notă: Consultați adresa contractului UniswapV2Factory în browserul blockchain pentru a vedea informațiile funcțiilor contractului.

🦄### allPairs și allPairsLength

`allPairs` este un array care stochează toate adresele contractelor de perechi de tranzacționare create. Prin intermediul array-ului `allPairs`, utilizatorii pot accesa informațiile despre adresele tuturor perechilor de tranzacționare.

• Funcția `allPairsLength`

Această funcție returnează lungimea array-ului `allPairs`, adică numărul total de perechi de tranzacționare create până în prezent.

Această funcție oferă utilizatorilor o metodă rapidă de a obține numărul de perechi de tranzacționare, facilitând dezvoltatorilor și utilizatorilor să înțeleagă numărul total de perechi disponibile în protocolul curent.

• Utilizarea `allPairs`

Accesând array-ul `allPairs` prin index, se pot obține adresele perechilor de tranzacționare pentru o anumită poziție de index.

Această funcționalitate permite utilizatorilor să interogheze adresa specifică a perechii de tranzacționare prin index, facilitând astfel parcurgerea sau interogarea pe blockchain.

🦄### getPair

`getPair` este o mapare (mapping) care permite interogarea rapidă a adresei perechii de tranzacționare între două tokenuri. Aceasta utilizează adresele `tokenA` și `tokenB` ca chei și returnează adresa contractului perechii corespunzătoare.

• Funcția `getPair`

Implementarea acestei funcții se bazează pe o mapare bidimensională, care interoghează adresa perechii de tranzacționare prin combinația adreselor `tokenA` și `tokenB`. Dacă perechea de tranzacționare nu există, se returnează `0x0000000000000000000000000000000000000000`.

• Logica de creare a `getPair`

În funcția `createPair`, `getPair` este utilizat pentru a înregistra adresa perechii de tranzacționare nou create.

Beneficiul acestui design este că, indiferent de ordinea lui `tokenA` și `tokenB`, se poate interoga rapid adresa perechii corespunzătoare prin `getPair`.

🦄### createPair

Funcția `createPair` este una dintre funcțiile de bază ale `UniswapV2Factory`, destinată creării de noi perechi de tranzacționare. Aceasta primește două adrese de tokenuri `tokenA` și `tokenB` ca intrare și returnează adresa contractului pentru perechea creată.

  • Logica de creare

  • În primul rând, funcția verifică dacă `tokenA` și `tokenB` sunt identice și le sortează, asigurându-se că adresa `token0` este mai mică decât `token1`.

  • Apoi, prin codul de operațiune `create2`, se creează un nou contract de pereche de tranzacționare, iar adresa contractului este înregistrată în mapa `getPair` și în array-ul `allPairs`.

  • În cele din urmă, se declanșează evenimentul `PairCreated`, notificând observatorii externi că o nouă pereche de tranzacționare a fost creată.

# 0x02 Analiza Uniswap V2 Periphery

## UniswapV2Router02: Podul de interacțiune pentru utilizatori

`UniswapV2Router02` este principala interfață de interacțiune între utilizator și contractul Core, învăluind funcționalitățile contractului Core și oferind utilizatorilor un mod mai convenabil de a gestiona tranzacțiile și lichiditatea. Funcțiile sale principale includ:

🦄### Gestionarea lichidității

  • `addLiquidity` și `addLiquidityETH` permit utilizatorilor să adauge lichiditate.

  • `removeLiquidity` și `removeLiquidityETH` sunt utilizate pentru a elimina lichiditatea.

🦄### Funcționalități de tranzacționare

  • `swapExactTokensForTokens` și `swapTokensForExactTokens` permit utilizatorilor să efectueze schimburi de tokenuri.

  • `swapExactETHForTokens` și `swapTokensForExactETH` permit schimbul între ETH și tokenuri ERC20.

🦄### Suport pentru Flash Swaps

`UniswapV2Router02` suportă Flash Swaps (împrumuturi rapide), permițând utilizatorilor să împrumute tokenuri într-o singură tranzacție și să finalizeze o serie de operațiuni, pentru a returna tokenurile la final.

## Biblioteci: Extinderea funcționalității bibliotecilor de instrumente

Partea Periphery include, de asemenea, mai multe biblioteci de instrumente pentru a oferi suport suplimentar pentru funcționalitate:

🦄### UniswapV2Library

  • Oferă funcția de calcul a adresei perechii `pairFor`.

  • Oferă funcțiile de calcul al prețului `getAmountOut` și `getAmountIn`, utilizate pentru a calcula cantitățile de tokenuri de intrare și ieșire pentru tranzacții.

🦄### UniswapV2OracleLibrary

  • Oferă funcționalități de calcul TWAP, permițând utilizatorilor să obțină datele de preț pe baza prețului mediu ponderat în timp.

# 0x03 Rezumat

Uniswap V2 realizează funcționalitatea esențială a tranzacțiilor descentralizate prin cele două părți Core și Periphery.

Contractul `UniswapV2Factory` gestionează eficient crearea și interogarea perechilor de tranzacționare prin funcțiile `createPair`, `allPairs` și `getPair`.

`UniswapV2Router02` oferă utilizatorilor o interfață de interacțiune convenabilă, care învăluie logica de bază a tranzacțiilor și gestionării lichidității. Acest design stratificat nu doar că îmbunătățește flexibilitatea protocolului, ci și îi sporește scalabilitatea.

-- Indiferent de cod sau de designul general, este cu adevărat impresionant! Cu siguranță este creatorul sufletului din Defi!

$UNI

$BNB