Swivel

Annotated source of the Swivel.sol smart contract

constructor

  function constructor(
    address m
  ) public

Parameters:

Name
Type
Description

m

address

deployed MarketPlace contract address

initiate

  function initiate(
    struct Hash.Order[] o,
    uint256[] a,
    struct Sig.Components[] c
  ) external returns (bool)

Allows a user to initiate a position

Parameters:

Name
Type
Description

o

struct Hash.Order[]

Array of offline Swivel.Orders

a

uint256[]

Array of order volume (principal) amounts relative to passed orders

c

struct Sig.Components[]

Array of Components from valid ECDSA signatures

initiateVaultFillingZcTokenInitiate

  function initiateVaultFillingZcTokenInitiate(
    struct Hash.Order o,
    uint256 a,
    struct Sig.Components c
  ) internal

Allows a user to initiate a Vault by filling an offline zcToken initiate order

This method should pass (underlying, maturity, maker, sender, principalFilled) to MarketPlace.custodialInitiate

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being filled

a

uint256

Amount of volume (premium) being filled by the taker's initiate

c

struct Sig.Components

Components of a valid ECDSA signature

initiateZcTokenFillingVaultInitiate

  function initiateZcTokenFillingVaultInitiate(
    struct Hash.Order o,
    uint256 a,
    struct Sig.Components c
  ) internal

Allows a user to initiate a zcToken by filling an offline vault initiate order

This method should pass (underlying, maturity, sender, maker, a) to MarketPlace.custodialInitiate

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being filled

a

uint256

Amount of volume (principal) being filled by the taker's initiate

c

struct Sig.Components

Components of a valid ECDSA signature

initiateZcTokenFillingZcTokenExit

  function initiateZcTokenFillingZcTokenExit(
    struct Hash.Order o,
    uint256 a,
    struct Sig.Components c
  ) internal

Allows a user to initiate zcToken? by filling an offline zcToken exit order

This method should pass (underlying, maturity, maker, sender, a) to MarketPlace.p2pZcTokenExchange

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being filled

a

uint256

Amount of volume (principal) being filled by the taker's initiate

c

struct Sig.Components

Components of a valid ECDSA signature

initiateVaultFillingVaultExit

  function initiateVaultFillingVaultExit(
    struct Hash.Order o,
    uint256 a,
    struct Sig.Components c
  ) internal

Allows a user to initiate a Vault by filling an offline vault exit order

This method should pass (underlying, maturity, maker, sender, principalFilled) to MarketPlace.p2pVaultExchange

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being filled

a

uint256

Amount of volume (interest) being filled by the taker's exit

c

struct Sig.Components

Components of a valid ECDSA signature

exit

  function exit(
    struct Hash.Order[] o,
    uint256[] a,
    struct Sig.Components[] c
  ) external returns (bool)

Allows a user to exit (sell) a currently held position to the marketplace.

Parameters:

Name
Type
Description

o

struct Hash.Order[]

Array of offline Swivel.Orders

a

uint256[]

Array of order volume (principal) amounts relative to passed orders

c

struct Sig.Components[]

Components of a valid ECDSA signature

exitZcTokenFillingZcTokenInitiate

  function exitZcTokenFillingZcTokenInitiate(
    struct Hash.Order o,
    uint256 a,
    struct Sig.Components c
  ) internal

Allows a user to exit their zcTokens by filling an offline zcToken initiate order

This method should pass (underlying, maturity, sender, maker, principalFilled) to MarketPlace.p2pZcTokenExchange

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being filled

a

uint256

Amount of volume (interest) being filled by the taker's exit

c

struct Sig.Components

Components of a valid ECDSA signature

exitVaultFillingVaultInitiate

  function exitVaultFillingVaultInitiate(
    struct Hash.Order o,
    uint256 a,
    struct Sig.Components c
  ) internal

Allows a user to exit their Vault by filling an offline vault initiate order

This method should pass (underlying, maturity, sender, maker, a) to MarketPlace.p2pVaultExchange

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being filled

a

uint256

Amount of volume (principal) being filled by the taker's exit

c

struct Sig.Components

Components of a valid ECDSA signature

exitVaultFillingZcTokenExit

  function exitVaultFillingZcTokenExit(
    struct Hash.Order o,
    uint256 a,
    struct Sig.Components c
  ) internal

Allows a user to exit their Vault filling an offline zcToken exit order

This method should pass (underlying, maturity, maker, sender, a) to MarketPlace.exitFillingExit

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being filled

a

uint256

Amount of volume (principal) being filled by the taker's exit

c

struct Sig.Components

Components of a valid ECDSA signature

exitZcTokenFillingVaultExit

  function exitZcTokenFillingVaultExit(
    struct Hash.Order o,
    uint256 a,
    struct Sig.Components c
  ) internal

Allows a user to exit their zcTokens by filling an offline vault exit order

This method should pass (underlying, maturity, sender, maker, principalFilled) to MarketPlace.exitFillingExit

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being filled

a

uint256

Amount of volume (interest) being filled by the taker's exit

c

struct Sig.Components

Components of a valid ECDSA signature

cancel

  function cancel(
    struct Hash.Order o,
    struct Sig.Components c
  ) external returns (bool)

Allows a user to cancel an order, preventing it from being filled in the future

Parameters:

Name
Type
Description

o

struct Hash.Order

Order being cancelled

c

struct Sig.Components

Components of a valid ECDSA signature

transferAdmin

  function transferAdmin(
    address a
  ) external returns (bool)

Parameters:

Name
Type
Description

a

address

Address of a new admin

scheduleWithdrawal

  function scheduleWithdrawal(
    address e
  ) external returns (bool)

Allows the admin to schedule the withdrawal of tokens

Parameters:

Name
Type
Description

e

address

Address of (erc20) token to withdraw

blockWithdrawal

  function blockWithdrawal(
    address e
  ) external returns (bool)

Emergency function to block unplanned withdrawals

Parameters:

Name
Type
Description

e

address

Address of token withdrawal to block

withdraw

  function withdraw(
    address e
  ) external returns (bool)

Allows the admin to withdraw the given token, provided the holding period has been observed

Parameters:

Name
Type
Description

e

address

Address of token to withdraw

setFee

  function setFee(
    uint16 i,
    uint16 d
  ) external returns (bool)

Allows the admin to set a new fee denominator

Parameters:

Name
Type
Description

i

uint16

The index of the new fee denominator

d

uint16

The new fee denominator

approveUnderlying

  function approveUnderlying(
    address[] u,
    address[] c
  ) external returns (bool)

Allows the admin to bulk approve given compound addresses at the underlying token, saving marginal approvals

Parameters:

Name
Type
Description

u

address[]

array of underlying token addresses

c

address[]

array of compound token addresses

splitUnderlying

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

Allows users to deposit underlying and in the process split it into/mint zcTokens and vault notional. Calls mPlace.mintZcTokenAddingNotional

Parameters:

Name
Type
Description

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

a

uint256

Amount of underlying being deposited

combineTokens

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

Allows users deposit/burn 1-1 amounts of both zcTokens and vault notional, in the process "combining" the two, and redeeming underlying. Calls mPlace.burnZcTokenRemovingNotional.

Parameters:

Name
Type
Description

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

a

uint256

Amount of zcTokens being redeemed

redeemZcToken

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

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

Parameters:

Name
Type
Description

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

a

uint256

Amount of zcTokens being redeemed

redeemVaultInterest

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

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

Parameters:

Name
Type
Description

u

address

Underlying token address associated with the market

m

uint256

Maturity timestamp of the market

validOrderHash

  function validOrderHash(
    struct Hash.Order o,
    struct Sig.Components c
  ) internal returns (bytes32)

Varifies the validity of an order and it's signature.

Parameters:

Name
Type
Description

o

struct Hash.Order

An offline Swivel.Order

c

struct Sig.Components

Components of a valid ECDSA signature

Return Values:

Name
Type
Description

the

struct Hash.Order

hashed order.

## Events

### Cancel

```solidity

event Cancel(

)

```

Emitted on order cancellation

Initiate

  event Initiate(
  )

Emitted on any initiate*

filled is 'principalFilled' when (vault:false, exit:false) && (vault:true, exit:true) filled is 'premiumFilled' when (vault:true, exit:false) && (vault:false, exit:true)

Exit

  event Exit(
  )

Emitted on any exit*

filled is 'principalFilled' when (vault:false, exit:false) && (vault:true, exit:true) filled is 'premiumFilled' when (vault:true, exit:false) && (vault:false, exit:true)

ScheduleWithdrawal

  event ScheduleWithdrawal(
  )

Emitted on token withdrawal scheduling

BlockWithdrawal

  event BlockWithdrawal(
  )

Emitted on token withdrawal blocking

SetFee

  event SetFee(
  )

Emitted on a change to the feenominators array

Last updated