Skip to main content

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() returns auctionOutput as one of the values, which is then routed through a condenser. The output of the condenser is then passed to the derivative module.
  • 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() returns auctionOutput as one of the values, which is then routed through a condenser. The output of the condenser is then passed to the derivative module.
    • Claim bid: claimBids()
      • If a condenser is required for the lot: BatchAuctionModule.claimBids() returns auctionOutput as one of the values, which is then routed through a condenser. The output of the condenser is then passed to the derivative module.

Creating a Condenser Module

The ICondenser interface outlines the functions that must be implemented.