# Uniswap Router 簡單講解 source code :https://github.com/Uniswap/universal-router 所有的調用主要是`UniversalRouter.sol`當中的`execute()`做執行,`execute()`可以一次執行多個 command,由`execute()`來決定 command 是何種用途,如何調用,調用什麼等等 例如:若要用 ERC20 Token 買 Opensea 的 NFT,流程如下 1. ERC20 先 swap (V2 or V3)為 WETH 2. WETH 轉為 ETH 3. 調用 seaport ,用第二步得到 ETH 來購買 NFT 以上例子就需要三個 command 每一個 command 都需要 type 跟 input 每一個 type 都是 1bytes,用以表示你這個指令的用途,底下的表就是一個 type 跟用途的對照表,用以上例子做舉例的話,我們需要做三步 command,所以需要三個 type,也就是 3bytes,所以讀入的 command type 就是 0x010c10 input 就是執行這些 command 需要的相對應參數 ``` ┌──────┬───────────────────────────────┐ │ 0x00 │ V3_SWAP_EXACT_IN │ ├──────┼───────────────────────────────┤ │ 0x01 │ V3_SWAP_EXACT_OUT │ ├──────┼───────────────────────────────┤ │ 0x02 │ PERMIT2_TRANSFER_FROM │ ├──────┼───────────────────────────────┤ │ 0x03 │ PERMIT2_PERMIT_BATCH │ ├──────┼───────────────────────────────┤ │ 0x04 │ SWEEP │ ├──────┼───────────────────────────────┤ │ 0x05 │ TRANSFER │ ├──────┼───────────────────────────────┤ │ 0x06 │ PAY_PORTION │ ├──────┼───────────────────────────────┤ │ 0x07 │ ------- │ ├──────┼───────────────────────────────┤ │ 0x08 │ V2_SWAP_EXACT_IN │ ├──────┼───────────────────────────────┤ │ 0x09 │ V2_SWAP_EXACT_OUT │ ├──────┼───────────────────────────────┤ │ 0x0a │ PERMIT2_PERMIT │ ├──────┼───────────────────────────────┤ │ 0x0b │ WRAP_ETH │ ├──────┼───────────────────────────────┤ │ 0x0c │ UNWRAP_WETH │ ├──────┼───────────────────────────────┤ │ 0x0d │ PERMIT2_TRANSFER_FROM_BATCH │ ├──────┼───────────────────────────────┤ │ 0x0e │ ------- │ ├──────┼───────────────────────────────┤ │ 0x0f │ ------- │ ├──────┼───────────────────────────────┤ │ 0x10 │ SEAPORT │ ├──────┼───────────────────────────────┤ │ 0x11 │ LOOKS_RARE_721 │ ├──────┼───────────────────────────────┤ │ 0x12 │ NFTX │ ├──────┼───────────────────────────────┤ │ 0x13 │ CRYPTOPUNKS │ ├──────┼───────────────────────────────┤ │ 0x14 │ LOOKS_RARE_1155 │ ├──────┼───────────────────────────────┤ │ 0x15 │ OWNER_CHECK_721 │ ├──────┼───────────────────────────────┤ │ 0x16 │ OWNER_CHECK_1155 │ ├──────┼───────────────────────────────┤ │ 0x17 │ SWEEP_ERC721 │ ├──────┼───────────────────────────────┤ │ 0x18 │ X2Y2_721 │ ├──────┼───────────────────────────────┤ │ 0x19 │ SUDOSWAP │ ├──────┼───────────────────────────────┤ │ 0x1a │ NFT20 │ ├──────┼───────────────────────────────┤ │ 0x1b │ X2Y2_1155 │ ├──────┼───────────────────────────────┤ │ 0x1c │ FOUNDATION │ ├──────┼───────────────────────────────┤ │ 0x1d │ SWEEP_ERC1155 │ ├──────┼───────────────────────────────┤ │ 0x1e-│ ------- │ │ 0x3f │ │ └──────┴───────────────────────────────┘ ```