Example: barber

Uniswap v2 Core

Uniswap v2 CoreHayden 2020 AbstractThis technical whitepaper explains some of the design decisions behind the Uniswapv2 core contracts. It covers the contracts new features including arbitrary pairsbetween ERC20s, a hardened price oracle that allows other contracts to estimate thetime-weighted average price over a given interval, flash swaps that allow traders toreceive assets and use them elsewhere before paying for them later in the transaction,and a protocol fee that can be turned on in the future. It also re-architects the contractsto reduce their attack surface.

Uniswap v1 is an on-chain system of smart contracts on the Ethereum blockchain, imple-menting an automated liquidity protocol based on a \constant product formula" [1]. Each Uniswap v1 pair stores pooled reserves of two assets, and provides liquidity for those two assets, maintaining the invariant that the product of the reserves cannot decrease.

Tags:

  Uniswap

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Advertisement

Transcription of Uniswap v2 Core

1 Uniswap v2 CoreHayden 2020 AbstractThis technical whitepaper explains some of the design decisions behind the Uniswapv2 core contracts. It covers the contracts new features including arbitrary pairsbetween ERC20s, a hardened price oracle that allows other contracts to estimate thetime-weighted average price over a given interval, flash swaps that allow traders toreceive assets and use them elsewhere before paying for them later in the transaction,and a protocol fee that can be turned on in the future. It also re-architects the contractsto reduce their attack surface.

2 This whitepaper describes the mechanics of Uniswap v2 s core contracts including the pair contract that stores liquidity providers funds andthe factory contract used to instantiate pair IntroductionUniswap v1 is an on-chain system of smart contracts on the Ethereum blockchain, imple-menting an automated liquidity protocol based on a constant product formula [1]. EachUniswap v1 pair stores pooled reserves of two assets, and provides liquidity for those twoassets, maintaining the invariant that the product of the reserves cannot decrease. Traderspay a 30-basis-point fee on trades, which goes to liquidity providers.

3 The contracts v2 is a new implementation based on the same formula, with several new highly-desirable features. Most significantly, it enables the creation of arbitrary ERC20/ERC20pairs, rather than supporting only pairs between ERC20 and ETH. It also provides a hard-ened price oracle that accumulates the relative price of the two assets at the beginning ofeach block. This allows other contracts on Ethereum to estimate the time-weighted averageprice for the two assets over arbitrary intervals. Finally, it enables flash swaps where userscan receive assets freely and use them elsewhere on the chain, only paying for (or returning)those assets at the end of the the contract is not generally upgradeable, there is a private key that has theability to update a variable on the factory contract to turn on an on-chain 5-basis-point feeon trades.

4 This fee will initially be turned off, but could be turned on in the future, afterwhich liquidity providers would earn 25 basis points on every trade, rather than 30 discussed in section 3, Uniswap v2 also fixes some minor issues with Uniswap v1, aswell as rearchitecting the implementation, reducing Uniswap s attack surface and makingthe system more easily upgradeable by minimizing the logic in the core contract thatholds liquidity providers paper describes the mechanics of that core contract, as well as the factory contractused to instantiate those contracts.

5 Actually using Uniswap v2 will require calling thepair contract through a router contract that computes the trade or deposit amount andtransfers funds to the pair New ERC-20 pairsUniswap v1 used ETH as a bridge currency. Every pair included ETH as one of itsassets. This makes routing simpler every trade between ABC and XYZ goes through theETH/ABC pair and the ETH/XYZ pair and reduces fragmentation of , this rule imposes significant costs on liquidity providers. All liquidity providershave exposure to ETH, and suffer impermanent loss based on changes in the prices of otherassets relative to ETH.

6 When two assets ABC and XYZ are correlated for example, ifthey are both USD stablecoins liquidity providers on a Uniswap pair ABC/XYZ wouldgenerally be subject to less impermanent loss than the ABC/ETH or XYZ/ETH ETH as a mandatory bridge currency also imposes costs on traders. Traders haveto pay twice as much in fees as they would on a direct ABC/XYZ pair, and they sufferslippage v2 allows liquidity providers to create pair contracts for any two proliferation of pairs between arbitrary ERC-20s could make it somewhat more difficultto find the best path to trade a particular pair, but routing can be handled at a higher layer(either off-chain or through an on-chain router or aggregator).

7 Price oracleThe marginal price offered by Uniswap (not including fees) at timetcan be computedby dividing the reserves of assetaby the reserves of (1)Since arbitrageurs will trade with Uniswap if this price is incorrect (by a sufficient amountto make up for the fee), the price offered by Uniswap tends to track the relative market priceof the assets, as shown by Angeris et al [2]. This means it can be used as an approximateprice , Uniswap v1 is not safe to use as an on-chain price oracle, because it is veryeasy to manipulate. Suppose some other contract uses the current ETH-DAI price to settlea derivative.

8 An attacker who wishes to manipulate the measured price can buy ETH fromthe ETH-DAI pair, trigger settlement on the derivative contract (causing it to settle basedon the inflated price), and then sell ETH back to the pair to trade it back to the true might even be done as an atomic transaction, or by a miner who controls the orderingof transactions within a v2 improves this oracle functionality by measuring and recording the pricebeforethe first trade of each block (or equivalently,afterthe last trade of the previous1 For a real-world example of how using Uniswap v1 as an oracle can make a contract vulnerable to suchan attack, see [3].)

9 2block). This price is more difficult to manipulate than prices during a block. If the attackersubmits a transaction that attempts to manipulate the price at the end of a block, someother arbitrageur may be able to submit another transaction to trade back immediatelyafterward in the same block. A miner (or an attacker who uses enough gas to fill an entireblock) could manipulate the price at the end of a block, but unless they mine the next blockas well, they may not have a particular advantage in arbitraging the trade , Uniswap v2accumulatesthis price, by keeping track of the cumulative sumof prices at the beginning of each block in which someone interacts with the contract.

10 Eachprice is weighted by the amount of time that has passed since the last block in which it wasupdated, according to the block means that the accumulator value at anygiven time (after being updated) should be the sum of the spot price at each second in thehistory of the i=1pi(2)To estimate thetime-weighted average pricefrom timet1tot2, an external caller cancheckpoint the accumulator s value att1and then again att2, subtract the first value fromthe second, and divide by the number of seconds elapsed. (Note that the contract itself doesnot store historical values for this accumulator the caller has to call the contract at thebeginning of the period to read and store this value.)


Related search queries