Bond

Controller for a ButtonTranche bond

Invariants:

  • totalDebt should always equal the sum of all tranche tokens' totalSupply()

API Documentation

init(address _trancheFactory, address _collateralToken, address _admin, uint256[] trancheRatios, uint256 _maturityDate) (external)

Constructor for Tranche ERC20 token

deposit(uint256 amount) (external)

Deposit amount tokens from msg.sender, get tranche tokens in return Requirements:

  • msg.sender must have approved amount collateral tokens to this contract

mature() (external)

Matures the bond. Disables deposits, fixes the redemption ratio, and distributes collateral to redemption pools Requirements:

  • The bond is not already mature

  • One of:

    • msg.sender is owner

    • maturityDate has passed

redeemMature(address tranche, uint256 amount) (external)

Redeems some tranche tokens Requirements:

  • The bond is mature

  • msg.sender owns at least amount tranche tokens from address tranche

  • tranche must be a valid tranche token on this bond

redeem(uint256[] amounts) (external)

Redeems a slice of tranche tokens from all tranches. Returns collateral to the user proportionally to the amount of debt they are removing Requirements

  • The bond is not mature

  • The number of amounts is the same as the number of tranches

  • The amounts are in equivalent ratio to the tranche order

getTrancheName(string collateralSymbol, uint256 index, uint256 _trancheCount) → string (internal)

Get the string name for a tranche

getTrancheSymbol(string collateralSymbol, uint256 index, uint256 _trancheCount) → string (internal)

Get the string symbol for a tranche

getTrancheLetter(uint256 index, uint256 _trancheCount) → string (internal)

Get the string letter for a tranche index

Last updated