Aggregator contract is a part of Atlas order execution flow. It's on-chain address is
0x00000000000048c0517C7B53FE47192FED043E49. It enables the users to bundle orders from multiple venues in a single transaction to allow atomic execution and conditional orders.
Aggregator contract is designed to be venue agnostic. The limitation of introducing support for new venue mainly lies within payload generation SDK which is an off-chain library maintained by Atlas to craft bundle transactions in the front-end app.
Currently supported and tested venues are Seaport, X2Y2, LooksRare, SudoSwap.
Each order in a bundle can be either optional or required (default). When order bundle is executed as transaction if an optional order(s) fails to be fulfilled typically because item has been already purchased, expired or order has been cancelled the execution continues and excess of funds for the failed optional order(s) is returned to the user at the end of the transaction. If required order fails to fulfill the whole bundle is cancelled.
Purchase transaction payload generation is done in the front-end app. The transaction generation code verifies the necessity of using Aggregator contract for particular transaction and order bundle. When user wants to purchase just a single asset such order would be routed directly to the venue contract skipping Aggregator contract altogether to save on gas overhead introduced by it. For some venues like i.e. Seaport or SudoSwap the venue contract itself offers a facade to support filling multiple orders in a single transaction. If user does not commit to any optional order covenants in his bundle and is purchasing multiple orders on one of the aforementioned venues his bundle might be routed directly to the venue contract if payload generation library finds that it would be the most gas efficient way to make the purchase.
All Aggregator contracts for NFT venues add additional gas overhead to conduct order bundle execution. However in most cases this overhead is neglected by the lack of need to execute each order in a bundle in its own separate transaction. Every transaction in Ethereum has a base fee of 21000 gas. This amount of gas needs to be paid just to execute the transactions and does not take into account transaction payloads, whether transaction calls a contract or is targeted at EOA. This means that if a user wants to execute 5 orders and
Competitive analysis is an essential part of our contract development flow. We have collected and analyze the most common use-cases for other aggregator contracts like Gem, Genie, Blur, Element to come up with
Aggregator contract is stateless and do not introduce any covenants which means that its own security surface is quite limited.
Updated about 1 year ago