Condenser Modules
Condenser modules act as a translator between a pair of specific auction and derivative modules. This is required as the output of an auction module (from the purchase()
or settle()
functions) may not be compatible with the input that a derivative module is expecting. A condenser module can be written to support translating the auction module outputs into a format understood by the derivative module.
Axis currently doesn't have any AuctionModules that return extra output to be used in a Derivative. Therefore, no Condensers are currently deployed. However, some use cases are being explored.
Lifecycle
Condenser modules are called at key points during the lifecycle of an auction lot:
- Atomic
- Create auction:
auction()
- To verify if a condenser is specified and valid for the auction and derivative module combination
- Purchase:
purchase()
- If a condenser is required for the lot:
AtomicAuctionModule.purchase()
returnsauctionOutput
as one of the values, which is then routed through a condenser. The output of the condenser is then passed to the derivative module.
- If a condenser is required for the lot:
- Create auction:
- Batch
- Create auction:
auction()
- To verify if a condenser is specified and valid for the auction and derivative module combination
- Settle:
settle()
- If a condenser is required for the lot:
BatchAuctionModule.settle()
returnsauctionOutput
as one of the values, which is then routed through a condenser. The output of the condenser is then passed to the derivative module.
- If a condenser is required for the lot:
- Claim bid:
claimBids()
- If a condenser is required for the lot:
BatchAuctionModule.claimBids()
returnsauctionOutput
as one of the values, which is then routed through a condenser. The output of the condenser is then passed to the derivative module.
- If a condenser is required for the lot:
- Create auction:
Creating a Condenser Module
The ICondenser interface outlines the functions that must be implemented.