From d3984295b4ffcbd1c545fff61435537a33336e08 Mon Sep 17 00:00:00 2001
From: Austin Adams <36116882+aadams@users.noreply.github.com>
Date: Wed, 4 Sep 2024 16:26:19 -0400
Subject: [PATCH 1/4] feat: update whitepaper (#869)
* feat: update whitepaper
* fix: edit email
* fix: add edited wp
---
docs/latex/main.bib | 18 +++++++-
docs/latex/main.tex | 95 +++++++++++++++++++++++------------------
docs/whitepaper-v4.pdf | Bin 392578 -> 395851 bytes
3 files changed, 70 insertions(+), 43 deletions(-)
diff --git a/docs/latex/main.bib b/docs/latex/main.bib
index ce755fafd..59f5876d9 100644
--- a/docs/latex/main.bib
+++ b/docs/latex/main.bib
@@ -50,4 +50,20 @@ @online{Buterin2021
title = "EIP-3529: Reduction in refunds",
url = "https://eips.ethereum.org/EIPS/eip-3529",
lastaccessed = "Jun 12, 2023",
-}
\ No newline at end of file
+}
+
+@article{adams2024amm,
+ title={am-AMM: An Auction-Managed Automated Market Maker},
+ author={Adams, Austin and Moallemi, Ciamac and Reynolds, Sara and Robinson, Dan},
+ journal={arXiv preprint arXiv:2403.03367},
+ year={2024}
+}
+
+@online{riley2023,
+ author = "JT Riley and Dillon and Sara and Vectorized and Neodaoist",
+ year = "2023",
+ month = apr,
+ title = "ERC-6909: Minimal Multi-Token Interface",
+ url = "https://eips.ethereum.org/EIPS/eip-6909",
+ lastaccessed = "Aug 26, 2024",
+}
diff --git a/docs/latex/main.tex b/docs/latex/main.tex
index 7f4184ebd..8683640a9 100644
--- a/docs/latex/main.tex
+++ b/docs/latex/main.tex
@@ -49,9 +49,9 @@
\newcommand{\rpos}{\mathbb{R}_{>0}}
\begin{document}
-\title{Uniswap v4 Core [Draft]}
-\subtitle{June 2023}
-\date{June 2023}
+\title{Uniswap v4 Core}
+\subtitle{August 2024}
+\date{August 2024}
\author{Hayden Adams}
\affiliation{}
@@ -71,11 +71,11 @@
\author{Austin Adams}
\affiliation{}
-\email{austin@uniswap.org}
+\email{me@aada.ms}
\author{Will Pote}
\affiliation{}
-\email{pote@uniswap.org}
+\email{willpote@gmail.com}
\author{Mark Toda}
\affiliation{}
@@ -109,43 +109,42 @@
\maketitle
\section{Introduction} \label{sec:introduction}
-\textsc{Uniswap v4} is an automated market maker (AMM) facilitating efficient exchange of value on the Ethereum Virtual Machine (EVM). As with previous versions of the \textsc{Uniswap Protocol}, it is non-custodial, non-upgradable, and permissionless. The focus of \textsc{Uniswap v4} is on customization and architectural changes for gas efficiency upgrades, building on the AMM model built by \textsc{Uniswap v1} and \textsc{v2} and the concentrated liquidity model introduced in \textsc{Uniswap v3}.
+\textsc{Uniswap v4} is an automated market maker (AMM) facilitating efficient exchange of value on the Ethereum Virtual Machine (EVM). As with previous versions of the \textsc{Uniswap Protocol}, it is non-custodial, non-upgradable, and permissionless. The focus of \textsc{Uniswap v4} is on additional customization for developers and architectural changes for gas efficiency improvements, building on the AMM model built by \textsc{Uniswap v1} and \textsc{v2} and the concentrated liquidity model introduced in \textsc{Uniswap v3}.
-\textsc{Uniswap v1} \cite{Adams18} and \textsc{v2} \cite{Adams20} were the first two iterations of the \textsc{Uniswap Protocol}, facilitating ERC-20 <> ETH and ERC-20 <> ERC-20 transactions, respectively, both using a constant product market maker (CPMM) model. \textsc{Uniswap v3} \cite{Adams21} introduced concentrated liquidity, providing more capital efficient liquidity through the use of positions that provide liquidity within a limited price range, and introduced multiple fee tiers.
+\textsc{Uniswap v1} \cite{Adams18} and \textsc{v2} \cite{Adams20} were the first two iterations of the \textsc{Uniswap Protocol}, facilitating ERC-20 <> ETH and ERC-20 <> ERC-20 swaps, respectively, both using a constant product market maker (CPMM) model. \textsc{Uniswap v3} \cite{Adams21} introduced concentrated liquidity, enabling more capital efficient liquidity through positions that provide liquidity within a limited price range, and multiple fee tiers.
-While concentrated liquidity and fee tiers increased flexibility for liquidity providers and allowed for new strategies to be implemented, \textsc{Uniswap v3} was not flexible enough to support new functionalities invented as AMMs and markets have evolved.
+While concentrated liquidity and fee tiers increased flexibility for liquidity providers and allowed for new liquidity provision strategies, \textsc{Uniswap v3} lacks flexibility to support new functionalities invented as AMMs and DeFi have evolved.
-Some features, like the price oracle originally introduced in \textsc{Uniswap v2}, allowed integrators to utilize decentralized onchain pricing data, at the expense of increased gas costs for swappers and without customizeability for integrators. Other ideas for enhancements, including time-weighted average price orders (TWAP) through a time-weighted average market maker (TWAMM) \cite{White2021}, volatility oracles, limit orders, or dynamic fees, would have required reimplementations of the core protocol, and could not be added to \textsc{Uniswap v3} by third-party developers.
+Some features, like the price oracle originally introduced in \textsc{Uniswap v2} and included in \textsc{Uniswap v3}, allow integrators to utilize decentralized onchain pricing data, at the expense of increased gas costs for swappers and without customizability for integrators. Other possible enhancements, such as time-weighted average price orders (TWAP) through a time-weighted average market maker (TWAMM) \cite{White2021}, volatility oracles, limit orders, or dynamic fees, require reimplementations of the core protocol, and can not be added to \textsc{Uniswap v3} by third-party developers.
-Additionally, in previous versions of \textsc{Uniswap}, deployment of new pools involves deploying a new contract—where cost scales with the size of the bytecode—and trades with multiple \textsc{Uniswap} pools involve transfers and redundant state updates across multiple contracts. And since \textsc{Uniswap v2}, \textsc{Uniswap} has required ETH to be wrapped into an ERC-20, rather than supporting native ETH. These come with gas costs.
+Additionally, in previous versions of \textsc{Uniswap}, deployment of new pools involves deploying a new contract—where cost scales with the size of the bytecode—and trades with multiple \textsc{Uniswap} pools involve transfers and redundant state updates across multiple contracts. Additionally since \textsc{Uniswap v2}, \textsc{Uniswap} has required ETH to be wrapped into an ERC-20, rather than supporting native ETH. These design choices came with increased gas costs for end users.
-In \textsc{Uniswap v4}, we improve on this through a few notable features:
+In \textsc{Uniswap v4}, we improve on these inefficiencies through a few notable features:
\begin{itemize}
- \item \emph{Hooks}: \textsc{Uniswap v4} allows anyone to deploy new concentrated liquidity pools with custom functionality. For each pool, the creator can define a “hook contract” that implements logic executed at key points in a call’s lifecycle. These hooks can also manage the swap fee of the pool, as well as withdrawal fees charged to liquidity providers.
+ \item \emph{Hooks}: \textsc{Uniswap v4} allows anyone to deploy new concentrated liquidity pools with custom functionality. For each pool, the creator can define a “hook contract” that implements logic executed at specific points in a call’s lifecycle. These hooks can also manage the swap fee of the pool dynamically, implement custom curves, and adjust fees charged to liquidity providers and swappers though \emph{Custom Accounting}.
\item \emph{Singleton}: \textsc{Uniswap v4} moves away from the factory model used in previous versions, instead implementing a single contract that holds all pools. The singleton model reduces the cost of pool creation and multi-hop trades.
- \item \emph{Flash accounting}: The singleton uses “flash accounting,” which requires that no tokens are owed to the pool or to the caller by the end of the lock. During the call, tokens can be used for any number of operations inside and outside the singleton. This functionality is made efficient by the transient storage opcodes proposed in EIP-1153 \cite{Akhunov2018}. Flash accounting further reduces the gas cost of trades that cross multiple pools and supports more complex integrations with \textsc{Uniswap v4}.
+ \item \emph{Flash accounting}: The singleton uses “flash accounting,” which allows a caller to lock the pool and access any of its tokens, as long as no tokens are owed to or from the caller by the end of the lock. This functionality is made efficient by the transient storage opcodes described in EIP-1153 \cite{Akhunov2018}. Flash accounting further reduces the gas cost of trades that cross multiple pools and supports more complex integrations with \textsc{Uniswap v4}.
\item \emph{Native ETH}: \textsc{Uniswap v4} brings back support for native ETH, with support for pairs with native tokens inside \textsc{v4} pools. ETH swappers and liquidity providers benefit from gas cost reductions from cheaper transfers and removal of additional wrapping costs.
+ \item \emph{Custom Accounting}: The singleton supports both augmenting and bypassing the native concentrated liquidity pools through hook-returned deltas, utilizing the singleton as an immutable settlement layer for connected pools. This feature can support use-cases like hook withdrawal fees, wrapping assets, or constant product market maker curves like \textsc{Uniswap v2}.
\end{itemize}
-%% \ref{sec:liquidity-oracle}).
The following sections provide in-depth explanations of these changes and the architectural changes that help make them possible.
\section{Hooks}
\label{sec:Hooks}
-\emph{Hooks} are externally deployed contracts that execute some developer-defined logic at a specified point in a pool’s execution. These hooks allow integrators to create a concentrated liquidity pool with flexible and customizable execution.
+\emph{Hooks} are externally deployed contracts that execute some developer-defined logic at a specified point in a pool’s execution. These hooks allow integrators to create a concentrated liquidity pool with flexible and customizable execution. Optionally, hooks can also return custom deltas that allow the hook to change the behavior of the swap — described in detail in the \emph{Custom Accounting} section (\ref{customaccounting}).
Hooks can modify pool parameters, or add new features and functionality. Example functionalities that could be implemented with hooks include:
\begin{itemize}
-\item Executing large orders over time through TWAMM
+\item Executing large orders over time through TWAMM \cite{White2021}
\item Onchain limit orders that fill at tick prices
\item Volatility-shifting dynamic fees
-\item Mechanisms to internalize MEV for liquidity providers
+\item Mechanisms to internalize MEV for liquidity providers \cite{adams2024amm}
\item Median, truncated, or other custom oracle implementations
+\item Constant Product Market Makers (Uniswap v2 functionality)
\end{itemize}
-We envision that future independent whitepapers will be drafted for selected hook designs, as many will be as complex as protocols themselves.
-
\begin{figure*}[ht!]
\centering
\scalebox{.7225}{
@@ -222,14 +221,15 @@ \section{Hooks}
\label{fig:swapflow}
\end{figure*}
-\subsection{Action Hooks} \label{actionhooks}
+\subsection{Action Hooks}
+\label{actionhooks}
When someone creates a pool on \textsc{Uniswap v4}, they can specify a hook contract. This hook contract implements custom logic that the pool will call out to during its execution.
-\textsc{Uniswap v4} currently supports eight such hook callbacks:
+\textsc{Uniswap v4} currently supports ten such hook callbacks:
\begin{itemize}
\item beforeInitialize/afterInitialize
-\item beforeAddLiquidity/afterAddLiquidity
+\item beforeAddLiquidity/afterAddLiquidity\footnote{Having separate permissions for `beforeAddLiquidity` and `beforeRemoveLiquidity` reflects the difference in security assumptions between those two actions. Hooks that can affect minting but not burning of liquidity are safer for liquidity providers, since they are guaranteed to be able to withdraw their liquidity.}
\item beforeRemoveLiquidity/afterRemoveLiquidity
\item beforeSwap/afterSwap
\item beforeDonate/afterDonate
@@ -237,30 +237,26 @@ \subsection{Action Hooks} \label{actionhooks}
The address of the hook contract determines which of these hook callbacks are executed. This creates a gas efficient and expressive methodology for determining the desired callbacks to execute, and ensures that even upgradeable hooks obey certain invariants. There are minimal requirements for creating a working hook. In Figure \ref{fig:swapflow}, we describe how the beforeSwap and afterSwap hooks work as part of swap execution flow.
+
\subsection{Hook-managed fees} \label{hookfees}
-\textsc{Uniswap v4} allows fees to be taken on both swapping and withdrawing liquidity.
+\textsc{Uniswap v4} allows fees to be taken on swapping by the hook.
-Swap fees can be either static, or dynamically managed by a hook contract. The hook contract can also choose to allocate a percentage of the swap fees to itself. Withdrawal fees cannot be set natively in the pool. To set a withdrawal fee, pool creators must set a hook contract to manage that fee, and the collected withdrawal fees go to the hook contract. Fees that accrue to hook contracts can be allocated arbitrarily by the hook’s code, including to liquidity providers, swappers, hook creators, or any other party.
+Swap fees can be either static, or dynamically managed by a hook contract. The hook contract can also choose to allocate a percentage of the swap fees to itself. Fees that accrue to hook contracts can be allocated arbitrarily by the hook’s code, including to liquidity providers, swappers, hook creators, or any other party.
-The capabilities of the hook are limited by immutable flags chosen when the pool is created. The fee settings a pool creator can choose are:
-\begin{itemize}
- \item Whether a pool has a static fee (and what that fee is) or dynamic fees
- \item Permission for a hook to take a percentage of swap fees
- \item Permission for a hook to take withdrawal fees
-\end{itemize}
+The capabilities of the hook are limited by immutable flags chosen when the pool is created. For example, a pool creator can choose whether a pool has a static fee (and what that fee is) or dynamic fees.
-Governance also can take a capped percentage of swap or withdrawal fees, as discussed below in the Governance section.
+Governance also can take a capped percentage of swap fees, as discussed below in the Governance section (\ref{gov}).
\section{Singleton and Flash Accounting} \label{flashaccounting}
Previous versions of the \textsc{Uniswap Protocol} use the factory/pool pattern, where the factory creates separate contracts for new token pairs. \textsc{Uniswap v4} uses a \emph{singleton} design pattern where all pools are managed by a single contract, making pool deployment ~99\% cheaper.
-The singleton design complements another architectural change in \textsc{v4}: \emph{flash accounting}. In previous versions of the \textsc{Uniswap Protocol}, each operation (such as swapping or adding liquidity to a pool) ended by transferring tokens. In \textsc{v4}, each operation updates an internal net balance, known as a \verb|delta|, only making external transfers at the end of the lock. The new \verb|take()| and \verb|settle()| functions can be used to borrow or deposit funds to the pool, respectively. By requiring that no tokens are owed to the pool manager or to the caller by the end of the call, the pool's solvency is enforced.
+The singleton design complements another architectural change in \textsc{v4}: \emph{flash accounting}. In previous versions of the \textsc{Uniswap Protocol}, most operations (such as swapping or adding liquidity to a pool) ended by transferring tokens. In \textsc{v4}, each operation updates an internal net balance, known as a \verb|delta|, only making external transfers at the end of the lock. The new \verb|take()| and \verb|settle()| functions can be used to borrow or deposit funds to the pool, respectively. By requiring that no tokens are owed to the pool manager or to the caller by the end of the call, the pool's solvency is enforced.
-Flash accounting simplifies complex pool operations, such as atomic swapping and adding. When combined with the singleton model, it also simplifies multi-hop trades.
+Flash accounting simplifies complex pool operations, such as atomic swapping and adding. When combined with the singleton model, it also simplifies multi-hop trades or compound operations like swapping before adding liquidity.
-In the current execution environment, the flash accounting architecture is expensive because it requires storage updates at every balance change. Even though the contract guarantees that internal accounting data is never actually serialized to storage, users will still pay those same costs once the storage refund cap is exceeded \cite{Buterin2021}. But, because balances must be 0 by the end of the transaction, accounting for these balances can be implemented with transient storage, as specified by EIP-1153 \cite{Akhunov2018}.
+Before the Cancun hard fork, the flash accounting architecture was expensive because it required storage updates at every balance change. Even though the contract guaranteed that internal accounting data is never actually serialized to storage, users would still pay those same costs once the storage refund cap was exceeded \cite{Buterin2021}. But, because balances must be 0 by the end of the transaction, accounting for these balances can be implemented with transient storage, as specified by EIP-1153 \cite{Akhunov2018}.
Together, singleton and flash accounting enable more efficient routing across multiple \textsc{v4} pools, reducing the cost of liquidity fragmentation. This is especially useful given the introduction of hooks, which will greatly increase the number of pools.
@@ -269,26 +265,41 @@ \section{Native ETH}
\textsc{Uniswap v4} is bringing back native ETH in trading pairs. While \textsc{Uniswap v1} was strictly ETH paired against ERC-20 tokens, native ETH pairs were removed in \textsc{Uniswap v2} due to implementation complexity and concerns of liquidity fragmentation across WETH and ETH pairs. Singleton and flash accounting mitigate these problems, so \textsc{Uniswap v4} allows for both WETH and ETH pairs.
-Native ETH transfers are about half the gas cost of ERC-20 transfers (21k gas for ETH and around 40k gas for ERC-20s). Currently \textsc{Uniswap v2} and \textsc{v3} require the vast majority of users to wrap (unwrap) their ETH to (from) WETH before (after) trading on the Uniswap Protocol, requiring extra gas.
+Native ETH transfers are about half the gas cost of ERC-20 transfers (21k gas for ETH and around 40k gas for ERC-20s). Currently \textsc{Uniswap v2} and \textsc{v3} require the vast majority of users to wrap (unwrap) their ETH to (from) WETH before (after) trading on the Uniswap Protocol, requiring extra gas. According to transaction data, the majority of users start or end their transactions in ETH, adding this additional unneeded complexity.
+
+\section{Custom Accounting}
+\label{customaccounting}
+
+Newly introduced in \textsc{Uniswap v4} is custom accounting - which allows hook developers to alter end user actions utilizing hook-returned deltas, token amounts that are debited/credited to the user and credited/debited to the hook, respectively. This allows hook developers to potentially add withdrawal fees on LP positions, customized LP fee models, or match against some flow, all while ultimately utilizing the internal concentrated liquidity native to \textsc{Uniswap v4}.
+
+Importantly, hook developers can also forgo the concentrated liquidity model entirely, creating custom curves from the \textsc{v4} swap parameters. This creates interface composability for integrators - allowing the hook to map the swap parameters to their internal logic.
+
+In \textsc{Uniswap v3}, users were required to utilize the concentrated liquidity AMM introduced in the same version. Since their introduction, concentrated liquidity AMMs have become widely used as the base liquidity provision strategy in the decentralized finance markets. While concentrated liquidity is able to support most arbitrary liquidity provision strategies, it may require increased gas overhead to implement specific strategies.
+
+One possible example is a \textsc{Uniswap v2} on \textsc{Uniswap v4} hook, which bypasses the internal concentrated liquidity model entirely - utilizing a constant product market maker fully inside of the hook. Using custom accounting is cheaper than creating a similar strategy in the concentrated liquidity math.
+
+The benefit of custom accounting for developers - compared to rolling a custom AMM - is the \textsc{singleton}, \textsc{flash accounting}, and \textsc{ERC-6909}. These features support cheaper multi-hop swaps, security benefits, and easier integration for flow. Developers should also benefit from a well-audited code-base for the basis of their AMM.
+
+Custom accounting will also support experimentation in liquidity provision strategies, which historically requires the creation of an entirely new AMM. Creating a custom AMM requires significant technical resources and investment, which may not be economically viable for many.
\section{Other Notable Features}
\label{other}
-\subsection{ERC1155 Accounting}
-\textsc{Uniswap v4} will support the minting/burning of singleton-implemented ERC-1155 tokens for additional token accounting. Users can now keep tokens within the singleton and avoid ERC-20 transfers to and from the contract. This will be especially valuable for users and hooks who continually use the same tokens over multiple blocks or transactions, like frequent swappers or liquidity providers.
+\subsection{ERC-6909 Accounting}
+\textsc{Uniswap v4} supports the minting/burning of singleton-implemented ERC-6909 tokens for additional token accounting, described in the ERC-6909 specification \cite{riley2023}. Users can now keep tokens within the singleton and avoid ERC-20 transfers to and from the contract. This will be especially valuable for users and hooks who continually use the same tokens over multiple blocks or transactions, like frequent swappers, liquidity providers, or custom accounting hooks.
+
-\subsection{Governance updates}
-\textsc{Uniswap v4} has two separate governance fee mechanisms, swap fees and withdrawal fees, each with different mechanisms. First, similar to \textsc{Uniswap v3}, governance can elect to take up to a capped percentage of the swap fee on a particular pool. With \textsc{v4}, if hooks initially choose to turn on withdrawal fees for a pool, governance also has the ability to take up to a capped percentage of that withdrawal fee.
-Unlike in \textsc{Uniswap v3}, governance does not control the permissible fee tiers or tick spacings.
+\subsection{Governance updates} \label{gov}
+Similar to \textsc{Uniswap v3}, \textsc{Uniswap v4} allows governance the ability to take up to a capped percentage of the swap fee on a particular pool, which are additive to LP fees. Unlike in \textsc{Uniswap v3}, governance does not control the permissible fee tiers or tick spacings.
\subsection{Gas reductions}
-As discussed above, \textsc{Uniswap v4} introduces meaningful gas optimizations through flash accounting, the singleton model, and support for native ETH. Additionally, the introduction of hooks makes the protocol-enshrined price oracle that was included in \textsc{Uniswap v2} and \textsc{Uniswap v3} unnecessary, which also means some pools could forgo the oracle altogether and save around 15k gas on the first swap on a pool in each block.
+As discussed above, \textsc{Uniswap v4} introduces meaningful gas optimizations through flash accounting, the singleton model, and support for native ETH. Additionally, the introduction of hooks makes the protocol-enshrined price oracle that was included in \textsc{Uniswap v2} and \textsc{Uniswap v3} unnecessary, which also means base pools forgo the oracle altogether and save around 15k gas on the first swap on a pool in each block.
\subsection{donate()}
\verb|donate()| allows users, integrators, and hooks to directly pay in-range liquidity providers in either or both of the tokens of the pool. This functionality relies on the fee accounting system to facilitate efficient payments. The fee payment system can only support either of the tokens in the token pair for the pool. Potential use-cases could be tipping in-range liquidity providers on TWAMM orders or new types of fee systems.
\section{Summary}
-In summary, \textsc{Uniswap v4} is a non-custodial, non-upgradeable, and permissionless AMM protocol. It builds upon the concentrated liquidity model introduced in \textsc{Uniswap v3} with customizable pools through hooks. Complementary to hooks are other architectural changes like the singleton contract which holds all pool state in one contract, and flash accounting which enforces pool solvency across each pool efficiently. Some other improvements are native ETH support, ERC-1155 balance accounting, new fee mechanisms, and the ability to donate to in-range liquidity providers.
+In summary, \textsc{Uniswap v4} is a non-custodial, non-upgradeable, and permissionless AMM protocol. It builds upon the concentrated liquidity model introduced in \textsc{Uniswap v3} with customizable pools through hooks. Complementary to hooks are other architectural changes like the singleton contract which holds all pool state in one contract, and flash accounting which enforces pool solvency across each pool efficiently. Additionally, hook developers can elect to bypass the concentrated liquidity entirely, utilizing the \textsc{v4} singleton as an arbitrary delta resolver. Some other improvements are native ETH support, ERC-6909 balance accounting, new fee mechanisms, and the ability to donate to in-range liquidity providers.
\bibliographystyle{ACM-Reference-Format}
\bibliography{main}
diff --git a/docs/whitepaper-v4.pdf b/docs/whitepaper-v4.pdf
index 1ad16e322695996beedc196d609fea47615eb86b..f67b6316e1868907301638de7628b0567da20377 100644
GIT binary patch
delta 293085
zcmZ7cb8sL}-1ZB{Ha6zQwrwXHb7R}i#I|kQ*x2^Qww;af{_b->@2Psu{L|Ib(>--v
zebv
~Q40&xK!b%q$701T5@a?99ZBQp7sM%-pPO#4IfA
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 |