Rolla Order Protocol
Overview
The following repo contains the smart contracts and tests for the Rolla Order Protocol.
Rolla order protocol is a smart contract that allows a user to sell options for a premium. It is responsible for co-ordinating a trade between a maker and a taker but uses the rolla quant protocol for minting options and managing collateral pre and post settlement. Code for the quant-protocol can be found here: https://github.com/RollaProject/quant-protocol
The contract allows some maker to create some order in the specified format using their ethereum private key. The order the user is for is known as the taker and so long as all the conditional checks of the order are ok, the transaction will take place. The order allows the maker to buy a specified option from the taker which will be minted on demand from the taker's underlying balance.
The following features are supported:
- Cancellation of a single order and multiple orders by the maker. They can do this either by the order or the creation timestamp of the order respectively.
- Support cancellation by order id
- Orders are provided for one taker only (can't be taken by others), and can be fulfilled once only. Partial fills are allowed to happen but will render the order filled so it can't be taken again (at all).
The protocol supports trading of qTokens
only through the quant-protocol
. i.e. some premium can be paid in an ERC20 token for an option which is also an ERC20 token. The option seller will receive the collateral token (ERC1155) which is required to claim back their collateral post-expiry.