MarketPlace

Annotated source code of the MarketPlace.sol smart contract

Functions

setSwivelAddress

  function setSwivelAddress(
    address s
  ) external returns (bool)

We only allow this to be set once

Parameters:

NameTypeDescription

s

address

Address of the deployed swivel contract

transferAdmin

  function transferAdmin(
    address a
  ) external returns (bool)

Parameters:

NameTypeDescription

a

address

Address of a new admin

createMarket

  function createMarket(
    uint256 m,
    address c,
    string n,
    string s
  ) external returns (bool)

Allows the owner to create new markets

Parameters:

NameTypeDescription

m

uint256

Maturity timestamp of the new market

c

address

cToken address associated with underlying for the new market

n

string

Name of the new zcToken market

s

string

Symbol of the new zcToken market

matureMarket

  function matureMarket(
    address u,
    uint256 m
  ) public returns (bool)

Can be called after maturity, allowing all of the zcTokens to earn floating interest on Compound until they release their funds

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

mintZcTokenAddingNotional

  function mintZcTokenAddingNotional(
    address u,
    uint256 m,
    address t,
    uint256 a
  ) external returns (bool)

Allows Swivel caller to deposit their underlying, in the process splitting it - minting both zcTokens and vault notional.

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

t

address

Address of the depositing user

a

uint256

Amount of notional being added

burnZcTokenRemovingNotional

  function burnZcTokenRemovingNotional(
    address u,
    uint256 m,
    address t,
    uint256 a
  ) external returns (bool)

Allows Swivel caller to deposit/burn both zcTokens + vault notional. This process is "combining" the two and redeeming underlying.

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

t

address

Address of the combining/redeeming user

a

uint256

Amount of zcTokens being burned

redeemZcToken

  function redeemZcToken(
    address u,
    uint256 m,
    address t,
    uint256 a
  ) external returns (uint256)

Allows (via swivel) zcToken holders to redeem their tokens for underlying tokens after maturity has been reached.

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

t

address

Address of the redeeming user

a

uint256

Amount of zcTokens being redeemed

redeemVaultInterest

  function redeemVaultInterest(
    address u,
    uint256 m,
    address t
  ) external returns (uint256)

Allows Vault owners (via Swivel) to redeem any currently accrued interest

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

t

address

Address of the redeeming user

calculateReturn

  function calculateReturn(
    address u,
    uint256 m,
    uint256 a
  ) internal returns (uint256)

Calculates the total amount of underlying returned including interest generated since the matureMarket function has been called

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

a

uint256

Amount of zcTokens being redeemed

cTokenAddress

  function cTokenAddress(
    address u,
    uint256 m
  ) external returns (address)

Return the ctoken address for a given market

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

custodialInitiate

  function custodialInitiate(
    address u,
    uint256 m,
    address z,
    address n,
    uint256 a
  ) external returns (bool)

Called by swivel IVFZI && IZFVI

Call with underlying, maturity, mint-target, add-notional-target and an amount

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

z

address

Recipient of the minted zcToken

n

address

Recipient of the added notional

a

uint256

Amount of zcToken minted and notional added

custodialExit

  function custodialExit(
    address u,
    uint256 m,
    address z,
    address n,
    uint256 a
  ) external returns (bool)

Called by swivel EVFZE FF EZFVE

Call with underlying, maturity, burn-target, remove-notional-target and an amount

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

z

address

Owner of the zcToken to be burned

n

address

Target to remove notional from

a

uint256

Amount of zcToken burned and notional removed

p2pZcTokenExchange

  function p2pZcTokenExchange(
    address u,
    uint256 m,
    address f,
    address t,
    uint256 a
  ) external returns (bool)

Called by swivel IZFZE, EZFZI

Call with underlying, maturity, transfer-from, transfer-to, amount

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

f

address

Owner of the zcToken to be burned

t

address

Target to be minted to

a

uint256

Amount of zcToken transfer

p2pVaultExchange

  function p2pVaultExchange(
    address u,
    uint256 m,
    address f,
    address t,
    uint256 a
  ) external returns (bool)

Called by swivel IVFVE, EVFVI

Call with underlying, maturity, remove-from, add-to, amount

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

f

address

Owner of the notional to be transferred

t

address

Target to be transferred to

a

uint256

Amount of notional transfer

transferVaultNotional

  function transferVaultNotional(
    address u,
    uint256 m,
    address t,
    uint256 a
  ) external returns (bool)

External method giving access to this functionality within a given vault

Note that this method calculates yield and interest as well

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

t

address

Target to be transferred to

a

uint256

Amount of notional to be transferred

transferVaultNotionalFee

  function transferVaultNotionalFee(
    address u,
    uint256 m,
    address f,
    uint256 a
  ) external returns (bool)

Transfers notional fee to the Swivel contract without recalculating marginal interest for from

Parameters:

NameTypeDescription

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

f

address

Owner of the amount

a

uint256

Amount to transfer

pause

  function pause(
    bool b
  ) external returns (bool)

Called by admin at any point to pause / unpause market transactions

Parameters:

NameTypeDescription

b

bool

Boolean which indicates the markets paused status

Events

Create

  event Create(
  )

Mature

  event Mature(
  )

RedeemZcToken

  event RedeemZcToken(
  )

RedeemVaultInterest

  event RedeemVaultInterest(
  )

CustodialInitiate

  event CustodialInitiate(
  )

CustodialExit

  event CustodialExit(
  )

P2pZcTokenExchange

  event P2pZcTokenExchange(
  )

P2pVaultExchange

  event P2pVaultExchange(
  )

TransferVaultNotional

  event TransferVaultNotional(
  )

Last updated