Pooled Loans

This system is a second order dapp to liquidity bonds, being a self-contained application that interfaces with it. The purpose of it is to pool funds such that they may execute against a bond, which normally requires 1M+ ADA. Specifically, the design is a little awkward when dealing with continual-funding fundraising initiatives. It works best when a borrower wants to take one loan and one loan only.

The pool creator must ensure that the correct amount of pool tokens are deposited to the pooling validator (and the correct number of bonds made). This is easily checked frontend-wise, and even on-chain-wise as the number N = pool tokens in utxo + (ada in utxo / 100) is known in advance and whether or not this invariant is broken.

Pool Token

Minting policy for the primary tokens of the product. Minted upon entering Open state and burned when the last bond token gets claimed.

Open Pool Validator

Pool validator allowing a loan to be filled by multiple lenders. The datum specifies the compatibility requirements for the Bond Writing Validator to be matched. Once all pool tokens have been bought, this position can be paired with a borrower's BWV UTxO to mint the bond tokens and send them to a corresponding Closed Pool state.

Closed Pool Validator

Pool validator receiving initial bond tokens. Holders of pool tokens can redeem them for bond tokens once the bond has been written, and redeem those in turn once the position enters the Closed state.

Transaction Flow

  1. Creating Pool: Lender creates a Pool by buying one or more pool tokens.

  2. Pool tokens sold: Pool tokens are sold until the Borrow offer has been fully funded.

  3. Matching against a BWV: The pool is matched against an outstanding Bond Writer Validator as if the pool was a single entity.

  4. Exchange PT -> BT: Lenders will exchange Pool Tokens for a corresponding amount of Bond Tokens.

  5. Pool Closed: Once all Bond Tokens have been claimed, the pool is terminated.

Last updated