๐ network ETH blocknumber 14905987 ๐
Errors
โ cancel only from maker (45ms)
โ prune only invalid orders (139ms)
โ bid params (14ms)
order
โ invalid id (7ms)
โ insufficient maker allowance (17ms)
โ insufficient maker balance (27ms)
invalid params
โ srcToken zero (7ms)
โ same tokens (6ms)
โ srcAmount zero (9ms)
โ srcBidAmount zero (11ms)
โ srcBidAmount>srcAmount (6ms)
โ dstMinAmount zero (7ms)
โ expired (7ms)
โ bid delay lower than minimum (7ms)
โ weth to native (6ms)
โ same tokens native (6ms)
verify bid
โ expired (65ms)
โ invalid exchange (67ms)
โ low bid (89ms)
โ recently filled (112ms)
โ recently filled custom fill delay (119ms)
โ insufficient amount out (35ms)
โ insufficient amount out with excess fee (33ms)
โ fee underflow protection (35ms)
โ insufficient amount out when last partial fill (120ms)
โ insufficient user allowance (42ms)
โ insufficient user balance (49ms)
perform fill
โ expired (46ms)
โ invalid taker when no existing bid (25ms)
โ invalid taker when not the winning taker (46ms)
โ pending bid when still in bidding window of bid delay (48ms)
โ pending bid with custom delay (98ms)
โ insufficient out (90ms)
โ insufficient out with excess fee (81ms)
โ fee subtracted from dstAmountOut underflow protection (82ms)
IExchange implementations
UniswapV2Exchange
โ prevent invalid paths (5ms)
โ swap (39ms)
ParaswapExchange
โ getAmountOut using pure encoded data from offchain (4ms)
โ swap with data from paraswap (17568ms)
FeeOnTransfer tokens
โ TWAP supports FOT tokens (73ms)
UniswapV2Exchange supports FOT tokens
โ throws on normal swap (27ms)
โ sell tokens with FOT (37ms)
Lens
taker biddable orders
โ filters valid bid orders for taker, by status, paginated (81ms)
โ filled orders (106ms)
โ canceled orderes (31ms)
โ recently filled, after asked delay (120ms)
โ different taker, or stale bid (66ms)
โ insufficient maker allowance and balance (74ms)
taker fillable orders
โ filter valid fillable orders for taker, paginated, not expired (138ms)
โ taker won the bid after pending bid window (61ms)
โ filled (94ms)
โ expired (46ms)
โ canceled (52ms)
โ maker allowance and balance (95ms)
maker orders
โ returns all maker orders (13ms)
TWAPLib with production config
SpiritSwap on 250
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
SpookySwap on 250
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
Pangolin on 43114
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
QuickSwap on 137
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
maxgas: special test: large order history, paginated reads
โ ๏ธ gasUsed 13658457
โ taker biddable orders (35741ms)
Paraswap
SpiritSwap on 250
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
SpookySwap on 250
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
Pangolin on 43114
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
QuickSwap on 137
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
Sanity
โ version (3ms)
โ maker creates ask order, emits event (26ms)
โ bid sets Bid fields, emits event (44ms)
โ fill sets Fill fields and clears the Bid, emits event (90ms)
โ cancel order, emits event (40ms)
โ order fully filled, emits event (162ms)
History
โ find orders for maker (423ms)
โ makerOrders has mapping of order ids by maker address, to avoid relying on events (2ms)
Taker
โ sanity (6ms)
โ onlyOwners (36ms)
โ bid & fill, gas rebate as dstToken without swapping (94ms)
โ gas rebate when dstToken == nativeToken, unwrap with or without swapping to native (83ms)
rescue
โ sends native token balance to caller (12ms)
โ sends ERC20 token balance to owner (481ms)
TWAP
โ single chunk (91ms)
โ mutiple chunks (320ms)
โ last chunk may be partial amount (225ms)
โ outbid current bid within pending period (107ms)
โ outbid current bid within pending period same path and amount but lower fee (67ms)
โ enforce bids 1% better than previous (90ms)
โ clears stale unfilled bid after max bidding window = bidDelay * STALE_BID_DELAY_MUL (87ms)
โ supports market orders, english auction incentivizes best competitive price (145ms)
โ prevent winning the bid by manipulating exchange price (98ms)
โ slippage percent allows price slippage (155ms)
โ slippage percent at bid time is part of the bidding war (156ms)
โ native token output support (87ms)
prune stale invalid order
โ when no approval (39ms)
โ when no balance (41ms)
ยท--------------------------------------------|---------------------------|-------------|-----------------------------ยท
| Solc version: 0.8.16 ยท Optimizer enabled: true ยท Runs: 200 ยท Block limit: 15000000 gas โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Methods ยท 12 gwei/gas ยท 1290.98 usd/eth โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Contract ยท Method ยท Min ยท Max ยท Avg ยท # calls ยท usd (avg) โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ERC20 ยท approve ยท 38027 ยท 60311 ยท 55949 ยท 89 ยท 0.87 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ERC20 ยท transfer ยท 51618 ยท 65625 ยท 63912 ยท 104 ยท 0.99 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockDeflationaryToken ยท approve ยท 46260 ยท 46572 ยท 46370 ยท 6 ยท 0.72 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockExchange ยท setMockAmounts ยท 32144 ยท 69156 ยท 51531 ยท 21 ยท 0.80 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ParaswapExchange ยท swap ยท - ยท - ยท 476316 ยท 1 ยท 7.38 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท bid ยท - ยท - ยท 306721 ยท 3 ยท 4.75 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท fill ยท 379115 ยท 380241 ยท 379678 ยท 2 ยท 5.88 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท rescue ยท 39446 ยท 79269 ยท 59358 ยท 2 ยท 0.92 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท ask ยท 270218 ยท 355878 ยท 297216 ยท 5079 ยท 4.60 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท bid ยท 118205 ยท 300574 ยท 268854 ยท 59 ยท 4.17 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท cancel ยท 75989 ยท 87970 ยท 77718 ยท 7 ยท 1.20 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท fill ยท 276714 ยท 356811 ยท 333353 ยท 24 ยท 5.16 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท prune ยท 89241 ยท 93197 ยท 91219 ยท 2 ยท 1.41 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| UniswapV2Exchange ยท swap ยท 165841 ยท 185775 ยท 175808 ยท 2 ยท 2.72 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Deployments ยท ยท % of limit ยท โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Lens ยท - ยท - ยท 1299068 ยท 8.7 % ยท 20.12 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockDeflationaryToken ยท - ยท - ยท 711309 ยท 4.7 % ยท 11.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockExchange ยท - ยท - ยท 508251 ยท 3.4 % ยท 7.87 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ParaswapExchange ยท - ยท - ยท 624766 ยท 4.2 % ยท 9.68 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท - ยท - ยท 1275489 ยท 8.5 % ยท 19.76 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท - ยท - ยท 3034281 ยท 20.2 % ยท 47.01 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| UniswapV2Exchange ยท - ยท - ยท 757237 ยท 5 % ยท 11.73 โ
ยท--------------------------------------------|-------------|-------------|-------------|---------------|-------------ยท
84 passing (4m)
144 pending
๐ network FTM blocknumber 39800909 ๐
Errors
โ cancel only from maker (228ms)
โ prune only invalid orders (5962ms)
โ bid params (16ms)
order
โ invalid id (9ms)
โ insufficient maker allowance (19ms)
โ insufficient maker balance (173ms)
invalid params
โ srcToken zero (7ms)
โ same tokens (6ms)
โ srcAmount zero (6ms)
โ srcBidAmount zero (7ms)
โ srcBidAmount>srcAmount (7ms)
โ dstMinAmount zero (6ms)
โ expired (8ms)
โ bid delay lower than minimum (8ms)
โ weth to native (6ms)
โ same tokens native (5ms)
verify bid
โ expired (71ms)
โ invalid exchange (902ms)
โ low bid (109ms)
โ recently filled (134ms)
โ recently filled custom fill delay (137ms)
โ insufficient amount out (37ms)
โ insufficient amount out with excess fee (38ms)
โ fee underflow protection (37ms)
โ insufficient amount out when last partial fill (147ms)
โ insufficient user allowance (46ms)
โ insufficient user balance (48ms)
perform fill
โ expired (51ms)
โ invalid taker when no existing bid (25ms)
โ invalid taker when not the winning taker (48ms)
โ pending bid when still in bidding window of bid delay (47ms)
โ pending bid with custom delay (107ms)
โ insufficient out (434ms)
โ insufficient out with excess fee (85ms)
โ fee subtracted from dstAmountOut underflow protection (84ms)
IExchange implementations
UniswapV2Exchange
โ prevent invalid paths (5ms)
โ swap (204ms)
ParaswapExchange
โ getAmountOut using pure encoded data from offchain (4ms)
โ swap with data from paraswap (30026ms)
FeeOnTransfer tokens
โ TWAP supports FOT tokens (543ms)
UniswapV2Exchange supports FOT tokens
โ throws on normal swap (30ms)
โ sell tokens with FOT (41ms)
Lens
taker biddable orders
โ filters valid bid orders for taker, by status, paginated (81ms)
โ filled orders (115ms)
โ canceled orderes (32ms)
โ recently filled, after asked delay (131ms)
โ different taker, or stale bid (66ms)
โ insufficient maker allowance and balance (214ms)
taker fillable orders
โ filter valid fillable orders for taker, paginated, not expired (145ms)
โ taker won the bid after pending bid window (66ms)
โ filled (103ms)
โ expired (44ms)
โ canceled (66ms)
โ maker allowance and balance (102ms)
maker orders
โ returns all maker orders (16ms)
TWAPLib with production config
SpiritSwap on 250
โ constructed with config (1ms)
โ allowance and approval (481ms)
โ native token allowance (1ms)
โ validate tokens (454ms)
โ submitOrder validations (295ms)
โ parseOrder (3ms)
โ orderProgress (2ms)
โ isMarketOrder (5ms)
โ market price dstAmount = srcAmount * (srcUsd/dstUsd) (279ms)
โ limit price dstAmount = srcAmount * limitPrice (281ms)
โ dst price with limit or market (328ms)
โ percent above/below market (2ms)
โ max possible chunk count (216ms)
โ srcChunkAmount (1ms)
โ totalChunks (1ms)
โ fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer (3ms)
โ dstMinAmountOut (323ms)
with order
โ submit order, getOrder (6ms)
โ cancel order (64ms)
โ status opened, canceled (63ms)
โ status expired (4ms)
โ status completed (26568ms)
โ getAllOrders (295ms)
helper functions
โ getToken (213ms)
โ isNativeToken (137ms)
โ isWrappedToken (139ms)
โ isValidNetwork (0ms)
โ maker balance (563ms)
โ wrap native (556ms)
โ unwrap to native (631ms)
SpookySwap on 250
โ constructed with config (0ms)
โ allowance and approval (336ms)
โ native token allowance (1ms)
โ validate tokens (330ms)
โ submitOrder validations (293ms)
โ parseOrder (2ms)
โ orderProgress (3ms)
โ isMarketOrder (1ms)
โ market price dstAmount = srcAmount * (srcUsd/dstUsd) (286ms)
โ limit price dstAmount = srcAmount * limitPrice (284ms)
โ dst price with limit or market (295ms)
โ percent above/below market (0ms)
โ max possible chunk count (221ms)
โ srcChunkAmount (1ms)
โ totalChunks (1ms)
โ fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer (1ms)
โ dstMinAmountOut (307ms)
with order
โ submit order, getOrder (6ms)
โ cancel order (66ms)
โ status opened, canceled (66ms)
โ status expired (3ms)
โ status completed (5850ms)
โ getAllOrders (147ms)
helper functions
โ getToken (138ms)
โ isNativeToken (144ms)
โ isWrappedToken (135ms)
โ isValidNetwork (0ms)
โ maker balance (663ms)
โ wrap native (553ms)
โ unwrap to native (611ms)
Pangolin on 43114
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
QuickSwap on 137
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
maxgas: special test: large order history, paginated reads
โ ๏ธ gasUsed 13658457
โ taker biddable orders (36912ms)
Paraswap
SpiritSwap on 250
โ priceUsd (1501ms)
โ priceUsd for native token uses wToken (440ms)
โ gas prices (243ms)
โ find route with other exchanges (1460ms)
โ direct path for univ2 exchanges (234ms)
โ direct path might be invalid (533ms)
SpookySwap on 250
โ priceUsd (864ms)
โ priceUsd for native token uses wToken (702ms)
โ gas prices (425ms)
โ find route with other exchanges (1810ms)
โ direct path for univ2 exchanges (1770ms)
โ direct path might be invalid (716ms)
Pangolin on 43114
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
QuickSwap on 137
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
Sanity
โ version (2ms)
โ maker creates ask order, emits event (36ms)
โ bid sets Bid fields, emits event (45ms)
โ fill sets Fill fields and clears the Bid, emits event (101ms)
โ cancel order, emits event (41ms)
โ order fully filled, emits event (179ms)
History
โ find orders for maker (163ms)
โ makerOrders has mapping of order ids by maker address, to avoid relying on events (2ms)
Taker
โ sanity (5ms)
โ onlyOwners (37ms)
โ bid & fill, gas rebate as dstToken without swapping (94ms)
โ gas rebate when dstToken == nativeToken, unwrap with or without swapping to native (636ms)
rescue
โ sends native token balance to caller (10ms)
โ sends ERC20 token balance to owner (172ms)
TWAP
โ single chunk (96ms)
โ mutiple chunks (325ms)
โ last chunk may be partial amount (242ms)
โ outbid current bid within pending period (101ms)
โ outbid current bid within pending period same path and amount but lower fee (76ms)
โ enforce bids 1% better than previous (114ms)
โ clears stale unfilled bid after max bidding window = bidDelay * STALE_BID_DELAY_MUL (125ms)
โ supports market orders, english auction incentivizes best competitive price (156ms)
โ prevent winning the bid by manipulating exchange price (86ms)
โ slippage percent allows price slippage (138ms)
โ slippage percent at bid time is part of the bidding war (108ms)
โ native token output support (79ms)
prune stale invalid order
โ when no approval (40ms)
โ when no balance (37ms)
ยท--------------------------------------------|---------------------------|-------------|-----------------------------ยท
| Solc version: 0.8.16 ยท Optimizer enabled: true ยท Runs: 200 ยท Block limit: 15000000 gas โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Methods โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Contract ยท Method ยท Min ยท Max ยท Avg ยท # calls ยท usd (avg) โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ERC20 ยท approve ยท 24299 ยท 46583 ยท 42767 ยท 103 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ERC20 ยท transfer ยท 46731 ยท 52345 ยท 51439 ยท 164 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockDeflationaryToken ยท approve ยท 46260 ยท 46572 ยท 46370 ยท 6 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockExchange ยท setMockAmounts ยท 32144 ยท 69156 ยท 51531 ยท 21 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ParaswapExchange ยท swap ยท - ยท - ยท 1273980 ยท 1 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท bid ยท - ยท - ยท 331333 ยท 3 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท fill ยท 430860 ยท 547765 ยท 489313 ยท 2 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท rescue ยท 39400 ยท 63693 ยท 51547 ยท 2 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท ask ยท 262410 ยท 348070 ยท 289514 ยท 5091 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท bid ยท 113439 ยท 1946012 ยท 340717 ยท 63 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท cancel ยท 75989 ยท 90308 ยท 77306 ยท 11 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท fill ยท 269304 ยท 1111991 ยท 417766 ยท 28 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท prune ยท 82151 ยท 85389 ยท 83770 ยท 2 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| UniswapV2Exchange ยท swap ยท 193117 ยท 207346 ยท 200232 ยท 2 ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Deployments ยท ยท % of limit ยท โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Lens ยท - ยท - ยท 1299068 ยท 8.7 % ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockDeflationaryToken ยท - ยท - ยท 711309 ยท 4.7 % ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockExchange ยท - ยท - ยท 508251 ยท 3.4 % ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ParaswapExchange ยท - ยท - ยท 624766 ยท 4.2 % ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท - ยท - ยท 1275489 ยท 8.5 % ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท - ยท - ยท 3034281 ยท 20.2 % ยท - โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| UniswapV2Exchange ยท - ยท - ยท 757237 ยท 5 % ยท - โ
ยท--------------------------------------------|-------------|-------------|-------------|---------------|-------------ยท
156 passing (9m)
72 pending
๐ network AVAX blocknumber 15609313 ๐
Errors
โ cancel only from maker (51ms)
โ prune only invalid orders (203ms)
โ bid params (14ms)
order
โ invalid id (8ms)
โ insufficient maker allowance (22ms)
โ insufficient maker balance (30ms)
invalid params
โ srcToken zero (7ms)
โ same tokens (8ms)
โ srcAmount zero (7ms)
โ srcBidAmount zero (7ms)
โ srcBidAmount>srcAmount (7ms)
โ dstMinAmount zero (7ms)
โ expired (6ms)
โ bid delay lower than minimum (7ms)
โ weth to native (8ms)
โ same tokens native (8ms)
verify bid
โ expired (78ms)
โ invalid exchange (73ms)
โ low bid (110ms)
โ recently filled (148ms)
โ recently filled custom fill delay (153ms)
โ insufficient amount out (39ms)
โ insufficient amount out with excess fee (42ms)
โ fee underflow protection (41ms)
โ insufficient amount out when last partial fill (144ms)
โ insufficient user allowance (47ms)
โ insufficient user balance (50ms)
perform fill
โ expired (54ms)
โ invalid taker when no existing bid (27ms)
โ invalid taker when not the winning taker (52ms)
โ pending bid when still in bidding window of bid delay (51ms)
โ pending bid with custom delay (110ms)
โ insufficient out (88ms)
โ insufficient out with excess fee (85ms)
โ fee subtracted from dstAmountOut underflow protection (85ms)
IExchange implementations
UniswapV2Exchange
โ swap (59ms)
ParaswapExchange
โ getAmountOut using pure encoded data from offchain (3ms)
โ swap with data from paraswap (24523ms)
FeeOnTransfer tokens
โ TWAP supports FOT tokens (85ms)
UniswapV2Exchange supports FOT tokens
โ throws on normal swap (31ms)
โ sell tokens with FOT (41ms)
Lens
taker biddable orders
โ filters valid bid orders for taker, by status, paginated (91ms)
โ filled orders (131ms)
โ canceled orderes (37ms)
โ recently filled, after asked delay (151ms)
โ different taker, or stale bid (76ms)
โ insufficient maker allowance and balance (84ms)
taker fillable orders
โ filter valid fillable orders for taker, paginated, not expired (151ms)
โ taker won the bid after pending bid window (69ms)
โ filled (116ms)
โ expired (50ms)
โ canceled (62ms)
โ maker allowance and balance (107ms)
maker orders
โ returns all maker orders (15ms)
TWAPLib with production config
SpiritSwap on 250
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
SpookySwap on 250
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
Pangolin on 43114
โ constructed with config (0ms)
โ allowance and approval (358ms)
โ native token allowance (2ms)
โ validate tokens (190ms)
โ submitOrder validations (153ms)
โ parseOrder (3ms)
โ orderProgress (1ms)
โ isMarketOrder (1ms)
โ market price dstAmount = srcAmount * (srcUsd/dstUsd) (153ms)
โ limit price dstAmount = srcAmount * limitPrice (149ms)
โ dst price with limit or market (195ms)
โ percent above/below market (2ms)
โ max possible chunk count (102ms)
โ srcChunkAmount (0ms)
โ totalChunks (2ms)
โ fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer (1ms)
โ dstMinAmountOut (192ms)
with order
โ submit order, getOrder (7ms)
โ cancel order (67ms)
โ status opened, canceled (71ms)
โ status expired (3ms)
โ status completed (3557ms)
โ getAllOrders (71ms)
helper functions
โ getToken (81ms)
โ isNativeToken (72ms)
โ isWrappedToken (77ms)
โ isValidNetwork (0ms)
โ maker balance (310ms)
โ wrap native (176ms)
โ unwrap to native (204ms)
QuickSwap on 137
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
maxgas: special test: large order history, paginated reads
โ ๏ธ gasUsed 13658457
โ taker biddable orders (115735ms)
Paraswap
SpiritSwap on 250
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
SpookySwap on 250
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
Pangolin on 43114
โ priceUsd (578ms)
โ priceUsd for native token uses wToken (1027ms)
โ gas prices (184ms)
โ find route with other exchanges (519ms)
โ direct path for univ2 exchanges (926ms)
โ direct path might be invalid (659ms)
QuickSwap on 137
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
Sanity
โ version (2ms)
โ maker creates ask order, emits event (27ms)
โ bid sets Bid fields, emits event (56ms)
โ fill sets Fill fields and clears the Bid, emits event (108ms)
โ cancel order, emits event (45ms)
โ order fully filled, emits event (306ms)
History
โ find orders for maker (15ms)
โ makerOrders has mapping of order ids by maker address, to avoid relying on events (2ms)
Taker
โ sanity (6ms)
โ onlyOwners (63ms)
โ bid & fill, gas rebate as dstToken without swapping (135ms)
โ gas rebate when dstToken == nativeToken, unwrap with or without swapping to native (122ms)
rescue
โ sends native token balance to caller (12ms)
โ sends ERC20 token balance to owner (52ms)
TWAP
โ single chunk (139ms)
โ mutiple chunks (384ms)
โ last chunk may be partial amount (257ms)
โ outbid current bid within pending period (113ms)
โ outbid current bid within pending period same path and amount but lower fee (71ms)
โ enforce bids 1% better than previous (87ms)
โ clears stale unfilled bid after max bidding window = bidDelay * STALE_BID_DELAY_MUL (86ms)
โ supports market orders, english auction incentivizes best competitive price (167ms)
โ prevent winning the bid by manipulating exchange price (91ms)
โ slippage percent allows price slippage (150ms)
โ slippage percent at bid time is part of the bidding war (117ms)
โ native token output support (89ms)
prune stale invalid order
โ when no approval (39ms)
โ when no balance (78ms)
ยท--------------------------------------------|---------------------------|-------------|-----------------------------ยท
| Solc version: 0.8.16 ยท Optimizer enabled: true ยท Runs: 200 ยท Block limit: 15000000 gas โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Methods ยท 25 gwei/gas ยท 13.04 usd/avax โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Contract ยท Method ยท Min ยท Max ยท Avg ยท # calls ยท usd (avg) โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ERC20 ยท approve ยท 37906 ยท 60190 ยท 56121 ยท 96 ยท 0.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ERC20 ยท transfer ยท 52503 ยท 65536 ยท 64277 ยท 133 ยท 0.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockDeflationaryToken ยท approve ยท 46260 ยท 46572 ยท 46370 ยท 6 ยท 0.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockExchange ยท setMockAmounts ยท 32144 ยท 69156 ยท 51531 ยท 21 ยท 0.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ParaswapExchange ยท swap ยท - ยท - ยท 1633467 ยท 1 ยท 0.53 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท bid ยท - ยท - ยท 337959 ยท 3 ยท 0.11 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท fill ยท 445854 ยท 558807 ยท 502331 ยท 2 ยท 0.16 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท rescue ยท 39403 ยท 78947 ยท 59175 ยท 2 ยท 0.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท ask ยท 270028 ยท 355688 ยท 297095 ยท 5085 ยท 0.10 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท bid ยท 121057 ยท 331811 ยท 294894 ยท 61 ยท 0.10 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท cancel ยท 75989 ยท 90308 ยท 77594 ยท 9 ยท 0.03 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท fill ยท 282822 ยท 413704 ยท 381403 ยท 26 ยท 0.12 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท prune ยท 89152 ยท 93019 ยท 91086 ยท 2 ยท 0.03 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| UniswapV2Exchange ยท swap ยท 187869 ยท 226491 ยท 207180 ยท 2 ยท 0.07 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Deployments ยท ยท % of limit ยท โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Lens ยท - ยท - ยท 1299068 ยท 8.7 % ยท 0.42 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockDeflationaryToken ยท - ยท - ยท 711309 ยท 4.7 % ยท 0.23 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockExchange ยท - ยท - ยท 508251 ยท 3.4 % ยท 0.17 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ParaswapExchange ยท - ยท - ยท 624766 ยท 4.2 % ยท 0.20 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท - ยท - ยท 1275489 ยท 8.5 % ยท 0.42 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท - ยท - ยท 3034281 ยท 20.2 % ยท 0.99 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| UniswapV2Exchange ยท - ยท - ยท 722009 ยท 4.8 % ยท 0.24 โ
ยท--------------------------------------------|-------------|-------------|-------------|---------------|-------------ยท
119 passing (6m)
108 pending
๐ network POLY blocknumber 29174252 ๐
Errors
โ cancel only from maker (496ms)
โ prune only invalid orders (4303ms)
โ bid params (13ms)
order
โ invalid id (8ms)
โ insufficient maker allowance (20ms)
โ insufficient maker balance (422ms)
invalid params
โ srcToken zero (8ms)
โ same tokens (6ms)
โ srcAmount zero (7ms)
โ srcBidAmount zero (6ms)
โ srcBidAmount>srcAmount (7ms)
โ dstMinAmount zero (6ms)
โ expired (7ms)
โ bid delay lower than minimum (9ms)
โ weth to native (7ms)
โ same tokens native (6ms)
verify bid
โ expired (69ms)
โ invalid exchange (1214ms)
โ low bid (105ms)
โ recently filled (122ms)
โ recently filled custom fill delay (130ms)
โ insufficient amount out (42ms)
โ insufficient amount out with excess fee (41ms)
โ fee underflow protection (37ms)
โ insufficient amount out when last partial fill (132ms)
โ insufficient user allowance (43ms)
โ insufficient user balance (50ms)
perform fill
โ expired (51ms)
โ invalid taker when no existing bid (28ms)
โ invalid taker when not the winning taker (53ms)
โ pending bid when still in bidding window of bid delay (49ms)
โ pending bid with custom delay (96ms)
โ insufficient out (705ms)
โ insufficient out with excess fee (91ms)
โ fee subtracted from dstAmountOut underflow protection (90ms)
IExchange implementations
UniswapV2Exchange
โ swap (246ms)
ParaswapExchange
โ getAmountOut using pure encoded data from offchain (6ms)
โ swap with data from paraswap (24694ms)
FeeOnTransfer tokens
โ TWAP supports FOT tokens (694ms)
UniswapV2Exchange supports FOT tokens
โ throws on normal swap (26ms)
โ sell tokens with FOT (43ms)
Lens
taker biddable orders
โ filters valid bid orders for taker, by status, paginated (88ms)
โ filled orders (112ms)
โ canceled orderes (36ms)
โ recently filled, after asked delay (126ms)
โ different taker, or stale bid (65ms)
โ insufficient maker allowance and balance (519ms)
taker fillable orders
โ filter valid fillable orders for taker, paginated, not expired (139ms)
โ taker won the bid after pending bid window (65ms)
โ filled (96ms)
โ expired (47ms)
โ canceled (57ms)
โ maker allowance and balance (103ms)
maker orders
โ returns all maker orders (16ms)
TWAPLib with production config
SpiritSwap on 250
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
SpookySwap on 250
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
Pangolin on 43114
- constructed with config
- allowance and approval
- native token allowance
- validate tokens
- submitOrder validations
- parseOrder
- orderProgress
- isMarketOrder
- market price dstAmount = srcAmount * (srcUsd/dstUsd)
- limit price dstAmount = srcAmount * limitPrice
- dst price with limit or market
- percent above/below market
- max possible chunk count
- srcChunkAmount
- totalChunks
- fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer
- dstMinAmountOut
with order
- submit order, getOrder
- cancel order
- status opened, canceled
- status expired
- status completed
- getAllOrders
helper functions
- getToken
- isNativeToken
- isWrappedToken
- isValidNetwork
- maker balance
- wrap native
- unwrap to native
QuickSwap on 137
โ constructed with config (0ms)
โ allowance and approval (612ms)
โ native token allowance (0ms)
โ validate tokens (426ms)
โ submitOrder validations (360ms)
โ parseOrder (3ms)
โ orderProgress (2ms)
โ isMarketOrder (1ms)
โ market price dstAmount = srcAmount * (srcUsd/dstUsd) (374ms)
โ limit price dstAmount = srcAmount * limitPrice (359ms)
โ dst price with limit or market (368ms)
โ percent above/below market (2ms)
โ max possible chunk count (225ms)
โ srcChunkAmount (2ms)
โ totalChunks (1ms)
โ fillDelayMillis for evenly distributed trades over maxDuration, with buffer of bid and extra buffer (1ms)
โ dstMinAmountOut (401ms)
with order
โ submit order, getOrder (8ms)
โ cancel order (67ms)
โ status opened, canceled (72ms)
โ status expired (4ms)
โ status completed (5297ms)
โ getAllOrders (195ms)
helper functions
โ getToken (184ms)
โ isNativeToken (184ms)
โ isWrappedToken (193ms)
โ isValidNetwork (0ms)
โ maker balance (740ms)
โ wrap native (388ms)
โ unwrap to native (430ms)
maxgas: special test: large order history, paginated reads
โ ๏ธ gasUsed 13658457
โ taker biddable orders (39539ms)
Paraswap
SpiritSwap on 250
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
SpookySwap on 250
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
Pangolin on 43114
- priceUsd
- priceUsd for native token uses wToken
- gas prices
- find route with other exchanges
- direct path for univ2 exchanges
- direct path might be invalid
QuickSwap on 137
โ priceUsd (3965ms)
โ priceUsd for native token uses wToken (903ms)
โ gas prices (464ms)
โ find route with other exchanges (1242ms)
โ direct path for univ2 exchanges (435ms)
โ direct path might be invalid (2009ms)
Sanity
โ version (4ms)
โ maker creates ask order, emits event (51ms)
โ bid sets Bid fields, emits event (49ms)
โ fill sets Fill fields and clears the Bid, emits event (95ms)
โ cancel order, emits event (44ms)
โ order fully filled, emits event (166ms)
History
โ find orders for maker (242ms)
โ makerOrders has mapping of order ids by maker address, to avoid relying on events (2ms)
Taker
โ sanity (6ms)
โ onlyOwners (35ms)
โ bid & fill, gas rebate as dstToken without swapping (87ms)
โ gas rebate when dstToken == nativeToken, unwrap with or without swapping to native (2709ms)
rescue
โ sends native token balance to caller (11ms)
โ sends ERC20 token balance to owner (459ms)
TWAP
โ single chunk (93ms)
โ mutiple chunks (314ms)
โ last chunk may be partial amount (218ms)
โ outbid current bid within pending period (117ms)
โ outbid current bid within pending period same path and amount but lower fee (100ms)
โ enforce bids 1% better than previous (84ms)
โ clears stale unfilled bid after max bidding window = bidDelay * STALE_BID_DELAY_MUL (84ms)
โ supports market orders, english auction incentivizes best competitive price (177ms)
โ prevent winning the bid by manipulating exchange price (137ms)
โ slippage percent allows price slippage (182ms)
โ slippage percent at bid time is part of the bidding war (112ms)
โ native token output support (2087ms)
prune stale invalid order
โ when no approval (38ms)
โ when no balance (41ms)
ยท--------------------------------------------|---------------------------|-------------|-----------------------------ยท
| Solc version: 0.8.16 ยท Optimizer enabled: true ยท Runs: 200 ยท Block limit: 15000000 gas โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Methods ยท 30 gwei/gas ยท 0.92 usd/matic โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Contract ยท Method ยท Min ยท Max ยท Avg ยท # calls ยท usd (avg) โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ERC20 ยท approve ยท 36162 ยท 58446 ยท 54377 ยท 96 ยท 0.00 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ERC20 ยท transfer ยท 51994 ยท 63552 ยท 62415 ยท 133 ยท 0.00 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockDeflationaryToken ยท approve ยท 46260 ยท 46572 ยท 46370 ยท 6 ยท 0.00 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockExchange ยท setMockAmounts ยท 32144 ยท 69156 ยท 51531 ยท 21 ยท 0.00 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ParaswapExchange ยท swap ยท - ยท - ยท 803462 ยท 1 ยท 0.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท bid ยท - ยท - ยท 304188 ยท 3 ยท 0.01 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท fill ยท 393720 ยท 528198 ยท 460959 ยท 2 ยท 0.01 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท rescue ยท 39476 ยท 77040 ยท 58258 ยท 2 ยท 0.00 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท ask ยท 267987 ยท 353647 ยท 295055 ยท 5085 ยท 0.01 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท bid ยท 115974 ยท 298071 ยท 267467 ยท 61 ยท 0.01 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท cancel ยท 75989 ยท 87970 ยท 77334 ยท 9 ยท 0.00 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท fill ยท 278906 ยท 360364 ยท 335952 ยท 26 ยท 0.01 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท prune ยท 87103 ยท 90966 ยท 89035 ยท 2 ยท 0.00 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| UniswapV2Exchange ยท swap ยท 167357 ยท 185913 ยท 176635 ยท 2 ยท 0.00 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Deployments ยท ยท % of limit ยท โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Lens ยท - ยท - ยท 1299068 ยท 8.7 % ยท 0.04 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockDeflationaryToken ยท - ยท - ยท 711309 ยท 4.7 % ยท 0.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| MockExchange ยท - ยท - ยท 508251 ยท 3.4 % ยท 0.01 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| ParaswapExchange ยท - ยท - ยท 624766 ยท 4.2 % ยท 0.02 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| Taker ยท - ยท - ยท 1275489 ยท 8.5 % ยท 0.04 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| TWAP ยท - ยท - ยท 3034281 ยท 20.2 % ยท 0.08 โ
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท|ยทยทยทยทยทยทยทยทยทยทยทยทยทยท
| UniswapV2Exchange ยท - ยท - ยท 722009 ยท 4.8 % ยท 0.02 โ
ยท--------------------------------------------|-------------|-------------|-------------|---------------|-------------ยท
119 passing (6m)
108 pending