Uniswap / UniswapX
- четверг, 20 июля 2023 г. в 00:00:05
🦄 Gasless ERC20 swap settlement protocol 🦄
UniswapX is an ERC20 swap settlement protocol that provides swappers with a gasless experience, MEV protection, and access to arbitrary liquidity sources. Swappers generate signed orders which specify the specification of their swap, and fillers compete using arbitrary fill strategies to satisfy these orders.
Order Reactors settle UniswapX orders. They are responsible for validating orders of a specific type, resolving them into inputs and outputs, and executing them against the filler's strategy, and verifying that the order was successfully fulfilled.
Reactors process orders using the following steps:
permitWitnessTransferFrom
with the order as witnessreactorCallback
on the fillContractReactors implement the IReactor interface which abstracts the specifics of the order specification. This allows for different reactor implementations with different order formats to be used with the same interface, allowing for shared infrastructure and easy extension by fillers.
Current reactor implementations:
Order fillContracts fill UniswapX orders. They specify the filler's strategy for fulfilling orders and are called by the reactor with reactorCallback
.
Some sample fillContract implementations are provided in this repository:
If a filler wants to fill orders using funds on-hand rather than a fillContract, they can do so gas efficiently using the directFill
macro by specifying address(1)
as the fillContract. This will pull tokens from the filler using msg.sender
to satisfy the order outputs.
Jump to the docs for Creating a Filler Integration.
Contract | Address | Source |
---|---|---|
Exclusive Dutch Order Reactor | 0xe80bF394d190851E215D5F67B67f8F5A52783F1E | ExclusiveDutchOrderReactor |
OrderQuoter | 0x7714520f383C998e8822E8743FD6f90A2979689b | OrderQuoter |
Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 | Permit2 |
# install dependencies
forge install
# compile contracts
forge build
# run unit tests
forge test
# run integration tests
FOUNDRY_PROFILE=integration forge test
This codebase was audited by ABDK.
This repository is subject to the Uniswap Labs Bug Bounty program, per the terms defined here.