• validateInput(Derivative memory _derivative) public view returns(bool);
It should allow to implement custom validation requirements for a derivative recipe
  • getMargin(Derivative memory _derivative) public view returns(uint256 buyerMargin, uint256 sellerMargin)
  • getExecutionPayout(Derivative memory _derivative, uint256 _result) public view returns(uint256 buyerPayout, uint256 sellerPayout)
The heart of customization of a derivative recipe. It is the function called by the Core contract to retrieve the payouts of a buyer and a seller. Any kind of payout logic - from traditional call/put options to more exotic products- should be implemented here.
  • getAuthorAddress() public view returns(address authorAddress);
It should return the derivative author’s address
  • getAuthorCommission() public view returns(uint256 commission);
It should return the derivative author’s commission
  • allowThirdPartyExecution(bool _allow) public
It should implement the logic to enable third party execution of the derivative’s positions
  • thirdPartyExecutionAllowed(address _derivativeOwner) public view returns(bool)
It should allow to retrieve whether third-party positions’ execution has been enabled for a given _derivativeOwner address
  • isPool() public view returns(bool)
  • fetchData(address oracleId, uint256 timestamp) public
  • recursivelyFetchData(address oracleId, uint256 timestamp, uint256 period, uint256 times) public
  • calculateFetchPrice(address oracleId) public returns(uint256 fetchPrice)
Derivative recipes implementing the IDerivativeLogic interface can make use of the HasCommission and ExecutableByThirdParty helper contracts. The HasCommission contract exposes the view functions to query information about the derivative’s author and sets the commission for the creation of the derivative at 0.25% of the profit. The ExecutableByThirdParty implements the set of functions necessary to allow third-party execution and query whether it has already been granted.
Last modified 1mo ago
Copy link