Technical Language
These term definitions are understood in the context of Swivel's technical stack. UI terms above apply when seen in technical usage, unless re-defined within this Technical context.
Order
An Entity, stored off chain. UI analogs: Order, Market Order, Limit Order
Order Struct:
Key -
bytes32Keccack hash of (wallet address,nonce,time). May also be referred to as orderKey.Maker -
addressAddress of this Order's creatorUnderlying -
addressEthereum address of a deployed Erc20 tokenVault -
boolBoolean, true if an order interacts with a vaultExit -
boolBoolean, true if the order is an exit operationPrincipal -
uint256The amount of nTokens traded.Premium -
uint256The amount of underlying paid.Maturity -
uint256The maturity date of the market in seconds since epoch.Expiry -
uint256Timestamp marking this order's expiration
Valid
An Order is only valid if
non-cancelled,
non-expired,
not-fully-filled
passes signature validation
not temporarily insolvent
not insolvent
Invalid Order
An order that is
cancelled
filled
expired
temporarily insolvent
insolvent
Cancelled
Only an Order may be cancelled. If it is, an entry into the on-chain cancelled mapping is stored. No Fills will then be accepted for this order.
Full
The order has been filled in its entirety.
Temporarily Insolvent
If a wallet's available balance is equal to an Orders amount, Swivel enforces a solvency check. During this intermediary period, the order will be marked as temporarily insolvent.
Insolvent
If an order is placed and the underlying assets are subsequently not available, the order is marked as insolvent.
Expired
An Order which has aged past its Duration. Like a cancelled Order, it may no longer be filled.
Event
An observable occurance that is recorded either on-chain or off-chain in Swivel's event store.
Message
A visible message about an Event that is sent from Swivel and can be listened for by a user or service.
Signature
As ECDSA cryptographic signature following the EIP-712 standard which we use to verify the authenticity of an Order. You will see the Components of a Signature (V, R, and S) used throughout the protocol. The Hash and Sig solidity libraries exist to service this functionality. It should be noted and enforced that Components are derived from a Signature and that the two are not equivalent. a Signature is a 64-bytes and its derived Components are a tuple of length 3 consisting of two 32-bytes, the canonical R and S, and a single uint V.
An Order's signature is considered valid if the extracted public key matches that of the maker.
EIP-712 Domain
Mentioned here as the term Domain has very specific Domain Driven Design implications. You may see or hear the term domain intermingled with other verbage for the EIP-712 standard such as:
TypeHash
Separator
Message
Any use of these terms, specifically domain should be prefixed with EIP-712 to prevent language degradation and the confusion that follows it.
Implementation of Signature and Components are each tightly coupled to the EIP-712 standard.
Approve
Terms such as approve and approval(s) when referencing specific functionality of the Underlying token. Use specifiers to avoid confusion with the compound token if needed. underlying approval for example.
Transfer
Terms such as transfer, transfers and transfer from when referencing specific functionality of the Underlying token. As with approve, specify which token if necessary, uToken transfer etc...
Side
Indicates whether the bond is fixed and is lending principal, or is floating and is paying interest.
Event Store
An Ordered, Persisted, Immutable record of event data.
Event Sourcing
The data strategy for storing and retrieving events from the event store.
Messages
Messages are published with predefined meanings that are used to observe the occurance of events.
Deployments
The Swivel development team has a number of deploys for Production, Staging, and Development.
Production
The product deployment. This is used for all live user-facing deployments on any given chain or L2. e.g. production.swivel.exchange (updated from previous lang mainnet.swivel.exchange)
Staging
The staging deployment is a our advertised test net. Reflects promises about being a mirror of production, but without real money risk. It should be stable and function exactly like production. E.g. staging.swivel.exchange (updated from previous lang rinkeby.swivel.exchange)
Development
The Development deployment is a private, non-public facing Testnet version of the product. It has no promises about functionlity and will frequently break. E.g. development.swivel.exchange.
Last updated