MarketPlace
Annotated source code of the MarketPlace.sol smart contract
MarketPlace
Contents
Globals
Note this list contains both internal and external attributes
Var | Type |
---|---|
markets | mapping(uint8 => mapping(address => mapping(uint256 => struct MarketPlace.Market))) |
paused | mapping(uint8 => bool) |
admin | address |
swivel | address |
creator | address |
Modifiers
authorized
Restricts msg.sender
as the only viable caller of a method
Declaration
unpaused
Returns whether a given market is paused or not
Declaration
Functions
constructor
Declaration
Modifiers:
No modifiers
Args:
Arg | Type | Description |
---|---|---|
| address | Address of the deployed creator contract |
setSwivel
We only allow this to be set once
there is no emit here as it's only done once post deploy by the deploying admin
Declaration
Modifiers:
Modifier |
---|
authorized |
Args:
Arg | Type | Description |
---|---|---|
| address | Address of the deployed swivel contract |
setAdmin
No description
Declaration
Modifiers:
Modifier |
---|
authorized |
Args:
Arg | Type | Description |
---|---|---|
| address | Address of a new admin |
createMarket
Allows the owner to create new markets
the memory allocation of
s
is for alleviating STD err, there's no clearly superior scoping or abstracting alternative.
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol associated with the new market |
| uint256 | Maturity timestamp of the new market |
| address | Compounding Token address associated with the new market |
| string | Name of the new market zcToken |
| string | Symbol of the new market zcToken |
matureMarket
Can be called after maturity, allowing all of the zcTokens to earn floating interest on Compound until they release their funds
Declaration
Modifiers:
Modifier |
---|
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with the market being matured |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
mintZcTokenAddingNotional
Allows Swivel caller to deposit their underlying, in the process splitting it - minting both zcTokens and vault notional.
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Address of the depositing user |
| uint256 | Amount of notional being added |
burnZcTokenRemovingNotional
Allows Swivel caller to deposit/burn both zcTokens + vault notional. This process is "combining" the two and redeeming underlying.
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Address of the combining/redeeming user |
| uint256 | Amount of zcTokens being burned |
authRedeem
Implementation of authRedeem to fulfill the IRedeemer interface for ERC5095
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Address of the user having their zcTokens burned |
| address | Address of the user receiving underlying |
| uint256 | Amount of zcTokens being redeemed |
Returns:
Type | Description |
---|---|
| of underlying being withdrawn (needed for 5095 return) |
redeemZcToken
Allows (via swivel) zcToken holders to redeem their tokens for underlying tokens after maturity has been reached.
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Address of the redeeming user |
| uint256 | Amount of zcTokens being redeemed |
redeemVaultInterest
Allows Vault owners (via Swivel) to redeem any currently accrued interest
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Address of the redeeming user |
calculateReturn
Calculates the total amount of underlying returned including interest generated since the matureMarket
function has been called
Declaration
Modifiers:
No modifiers
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| uint256 | Amount of zcTokens being redeemed |
cTokenAddress
Return the compounding token address for a given market
Declaration
Modifiers:
No modifiers
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
exchangeRate
Return the exchange rate for a given protocol's compounding token
Declaration
Modifiers:
No modifiers
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value |
| address | Compounding token address |
rates
Return current rates (maturity, exchange) for a given vault. See VaultTracker.rates for details
While it's true that Compounding exchange rate is not strictly affiliated with a vault, the 2 data points are usually needed together.
Declaration
Modifiers:
No modifiers
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
custodialInitiate
Called by swivel IVFZI && IZFVI
Call with protocol, underlying, maturity, mint-target, add-notional-target and an amount
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Recipient of the minted zcToken |
| address | Recipient of the added notional |
| uint256 | Amount of zcToken minted and notional added |
custodialExit
Called by swivel EVFZE FF EZFVE
Call with protocol, underlying, maturity, burn-target, remove-notional-target and an amount
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Owner of the zcToken to be burned |
| address | Target to remove notional from |
| uint256 | Amount of zcToken burned and notional removed |
p2pZcTokenExchange
Called by swivel IZFZE, EZFZI
Call with underlying, maturity, transfer-from, transfer-to, amount
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Owner of the zcToken to be burned |
| address | Target to be minted to |
| uint256 | Amount of zcToken transfer |
p2pVaultExchange
Called by swivel IVFVE, EVFVI
Call with protocol, underlying, maturity, remove-from, add-to, amount
Declaration
Modifiers:
Modifier |
---|
authorized |
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Owner of the notional to be transferred |
| address | Target to be transferred to |
| uint256 | Amount of notional transfer |
transferVaultNotional
External method giving access to this functionality within a given vault
Note that this method calculates yield and interest as well
Declaration
Modifiers:
Modifier |
---|
unpaused |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Target to be transferred to |
| uint256 | Amount of notional to be transferred |
transferVaultNotionalFee
Transfers notional fee to the Swivel contract without recalculating marginal interest for from
Declaration
Modifiers:
Modifier |
---|
authorized |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value associated with this market |
| address | Underlying token address associated with the market |
| uint256 | Maturity timestamp of the market |
| address | Owner of the amount |
| uint256 | Amount to transfer |
pause
Called by admin at any point to pause / unpause market transactions in a specified protocol
Declaration
Modifiers:
Modifier |
---|
authorized |
Args:
Arg | Type | Description |
---|---|---|
| uint8 | Protocol Enum value of the protocol to be paused |
| bool | Boolean which indicates the (protocol) markets paused status |
Events
Create
Emitted upon the creation of a market
Mature
Emitted upon the maturation of a market
RedeemZcToken
Emitted upon the redemption of a ZC token
RedeemVaultInterest
Emitted upon the redemption of vault interest
CustodialInitiate
Emitted upon a custodial initiate
CustodialExit
Emitted upon a custodial exit
P2pZcTokenExchange
Emitted upon a P2P ZC token swap
P2pVaultExchange
Emitted upon a vault swap
TransferVaultNotional
Emitted upon a transfer of notional from a vault
SetAdmin
Emitted on a change of the admin