ethereum.dex.uniswap_x_trades table includes all trades including failed execute calls from Uniswap X’s ExclusiveDutchOrderReactor .

⚠️ This model includes failed orders that failed to execute.

To filter them out, set status = 1 (see example below) .These trades amount to ~1.6% of total volume, and ~3% of all trades.

UniswapX is a new permissionless, open source (GPL), auction-based routing protocol for trading across AMMs and other liquidity sources.

Sample Query

-- Daily Swap Volume 

select 

    date(block_timestamp) as date, 

    sum(usd_amount) as usd_volume,

    count(distinct transaction_hash) as txn_count

from ethereum.dex.uniswap_x_trades

where status = 1 

group by all 

Methodology

  • Identify the following trace call from UniswapX ExclusiveDutchOrderReactor contract

    • executeBatchWithCallback executeWithCallback executeBatch execute
  • From the trace calls, we fetch the serialised order and ABI decode.

  • From event logs, we join the corresponding Fill event emitted by the ExclusiveDutchOrderReactor contract

Using this transaction as an example: https://etherscan.io/tx/0xc3cb3b518f455144d153e6d086b8688d6678b7318ab928b82983ab03e315e333

{

  "msg.sender": "0x6f1cdbbb4d53d226cf4b917bf768b94acbab6168",

  "func": "execute",

  "args": {

    "order": [

      {

        "order": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000065c529c20000000000000000000000000000000000000000000000000000000065c529fe000000000000000000000000d198fbe60c49d4789525fc54567447518c7d2a110000000000000000000000000000000000000000000000000000000000000064000000000000000000000000111111111117dc0aa78b770fa6a738034120c302000000000000000000000000000000000000000000000083f4b3a5432fac844d000000000000000000000000000000000000000000000083f4b3a5432fac844d00000000000000000000000000000000000000000000000000000000000002000000000000000000000000006000da47483062a0d734ba3dc7576ce6a0b645c400000000000000000000000045fabb434124afaa123eeee19cea29b5e0e3dd0b04683207312f3edb79be915765c1d5b7529ef4a9500dbe0e667c9878fe7bce010000000000000000000000000000000000000000000000000000000065c52a0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057a57e7d2199140000000000000000000000000000000000000000000000000052ff507e7c84afc00000000000000000000000045fabb434124afaa123eeee19cea29b5e0e3dd0b",

        "sig": "0x4f210fdb1808d4ca777960ff781ceecc37f4362605fa241216ec85f201f3d244179158351a0a2d2e5ba9a2d42c4bf647ac6bcf46216d10863644cb31ea42eef31c"

      }

    ]

  },

  "return": []

}

Table Columns

Note that the decoded orders can be found in the extra_fields column.

Column NameDescriptionExample
projectProject name.uniswap_x
protocolProtocol name.uniswap_x
trace_callTrace call method.execute
order_typeOrder type. Can be either single or batch orders. execute and executeWithCallback maps to single orders.single
order_indexOrder index within the call. For batch orders, they are flatten with each order executed represented as a line.0
statusTrace status of the call. This will 1 for successful traces and 0 for failed traces.1
errorError message emitted by the trace call.
fillerAddress of the filler. These agents pickup signed orders from swappers and compete to execute them using any source of liquidity they have access to.0x7321ac264b89254ea749a0657d41a9a2ebf8e3da
reactorAddress or the reactor. 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.0x6000da47483062a0d734ba3dc7576ce6a0b645c4
swapperAddress of the swapper.0x27b6318dd9861cf26ba8c32dde26bbf8b5e0c956
exclusive_fillerAddress of the exclusive filler.0x7321ac264b89254ea749a0657d41a9a2ebf8e3da
exclusivity_override_bpsThe amount in bps that a non-exclusive filler needs to improve the outputs by to be able to fill the order.100
token_sold_addressInput token address. Input tokens will map to token sold. Native ETH will be represented as zero address 0x0000000000000000000000000000000000000000.0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
token_sold_nameInput token name.Wrapped Ether
token_sold_symbolInput token symbol.WETH
token_sold_decimalsInput token decimals.18
token_sold_amount_rawInput token amount, unnormalized, in string.40000000000000000
token_sold_amountInput token amount, normalized.0.04
usd_sold_amountUSD value of the input token.132.4968
outputsArray of outputs. Note that there can be > 1 outputs for a single trade. Most of the case the bulk of the output values goes to the first output.[ { "endAmount": 92415831, "recipient": "0x27b6318dd9861cf26ba8c32dde26bbf8b5e0c956", "startAmount": 119475368, "token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" }, { "endAmount": 138831, "recipient": "0x27213e28d7fda5c57fe9e5dd923818dbccf71c47", "startAmount": 179482, "token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" } ]
token_bought_addressFirst output token address. Output tokens will map to tokens bought. Native ETH will be represented as zero address 0x0000000000000000000000000000000000000000.0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
token_bought_nameFirst output token name.USD Coin
token_bought_symbolFirst output token address.USDC
token_bought_decimalsFirst output token decimals.6
token_bought_amount_rawAmount of token bought, unnormalized and in string.119475368
token_bought_amountAmount of token bought, normalized.119.475368
usd_bought_amountUSD amount of token bought, normalized.119.43952539
usd_amountUSD value of the swap. We preferentially select the input (token sold) usd value. If this is not available, we will select the output.132.4968
additional_validation_contractCustom validation contract.0x0000000000000000000000000000000000000000
additional_validation_dataEncoded validation params for additionalValidationContract.
deadlineDeadline timestamp.1712191068
decay_start_timeThe time at which the DutchOutputs start decaying.2024-04-04 00:36:36.000
decay_end_timeThe time at which price becomes static.2024-04-04 00:37:36.000
order_hashUnique hash of the order.0xe2bdd76383aab99fb591ca99fac72b6b99dc0e5822df200f7e97e481a99426b7
nonceNonce of the order.1993352865421623303439960934785910165619400008222801057126382995622032590081
sigSignature of the order.
extra_fieldsThe decoded serialized order.{ "decayEndTime": 1712191056, "decayStartTime": 1712190996, "exclusiveFiller": "0x7321ac264b89254ea749a0657d41a9a2ebf8e3da", "exclusivityOverrideBps": 100, "input": { "endAmount": 40000000000000000, "startAmount": 40000000000000000, "token": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" }, "orders": { "additionalValidationContract": "0x0000000000000000000000000000000000000000", "additionalValidationData": "", "deadline": 1712191068, "nonce": 1.993352865421623e+75, "reactor": "0x6000da47483062a0d734ba3dc7576ce6a0b645c4", "swapper": "0x27b6318dd9861cf26ba8c32dde26bbf8b5e0c956" }, "outputs": [ { "endAmount": 92415831, "recipient": "0x27b6318dd9861cf26ba8c32dde26bbf8b5e0c956", "startAmount": 119475368, "token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" }, { "endAmount": 138831, "recipient": "0x27213e28d7fda5c57fe9e5dd923818dbccf71c47", "startAmount": 179482, "token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" } ] }
transaction_from_addressThe address of the sending party of this transaction.0xd9f4faa80fa2ace09ccf56b15b9d2eec423dd4bd
transaction_to_addressThe address of the receiving party of this transaction (could be a contract address).0x7321ac264b89254ea749a0657d41a9a2ebf8e3da
transaction_hashTransaction hash of this trade.0xb072c5aa5c36dc3a31140d8adf02af47c5290238fd4294076701dbbf99256e6a
transaction_indexTransaction index of this trade in the block.57
calldata_selectorThe call data selector of the transaction.0x01349c00
transaction_feesFees paid at the transaction level.0.00365229813185184
transaction_fees_usdFees paid in USD.12.097945378
fee_detailsAdditional fee details of the transaction, including max priority fee, gas price and gas used for the transaction.{ "gas": 247915, "gas_price": 0, "max_fee_per_gas": null, "max_priority_fee_per_gas": null, "receipt_effective_gas_price": 21038098960, "receipt_gas_used": 173604 }
log_indexLog index of this trade.133
trace_idBlock timestamp of this trade.call_0xb072c5aa5c36dc3a31140d8adf02af47c5290238fd4294076701dbbf99256e6a_0
trace_typeBlock number of this trade.call
call_typeBlock hash of this trade.call
block_timestampBlock timestamp of this trade.2024-04-04 00:36:23.000
block_numberBlock number of this trade.19578864
block_hashBlock hash of this trade.0xef0c1104a96c2a515121058f045b945f54f679f27665a5a64d55fba070f0aa8e
unique_idUnique ID of each trade.trace_id-call_0xb072c5aa5c36dc3a31140d8adf02af47c5290238fd4294076701dbbf99256e6a_0_order_index-0
_created_atTimestamp of the entry creation.2024-04-04 04:29:21.057
_updated_atTimestamp of the entry update.2024-04-04 04:29:21.057