Skip to content

Conversation

@greenhat
Copy link
Member

@greenhat greenhat commented Apr 30, 2020

Require in the contracts that price difference was returned to the order's author.
For example, let's say we have a sell order with token price 5 ergs and buy order with token price 6 ergs. The contract must enforce 1 erg difference to be returned to the buyer(seller) depending on who's order was first.

This PR is only for single counter order. #14 is branched from it to add multiple counter order support.

Challenge 1.
Figure out how "select" proper counter orders without a 'sort' op. Example:
For older buy order (price 5 ergs, total 15 ergs) which is matched with 2 newer sell orders (price 5, 2 tokens), (price 4, 2 tokens) how to start "selecting" tokens from the second sell order and finish with the first order?
Without the solution, we'd have to limit to 1-1 (single counter order) order matching per swap tx.

Todo:

  • draft contracts for single counter order;
  • use updated contracts in scenarios, catch AOT-related bugs;
  • implement creation height in playgrounds (now it's 0);

Continued in #14

@greenhat
Copy link
Member Author

greenhat commented May 7, 2020

ergoplatform/ergo#1097 got me thinking if I can find a way to avoid minting the token on buy order cancellation (workaround for ergoplatform/sigmastate-interpreter#628) . It turned out that switching to getOrElse for accessing tokens by index is enough (see token id check). For some cases even prepending with if is enough (see token amount extraction).
Here is the changes that allow to ditch the token minting - 845bda8

@greenhat greenhat changed the title Adhere DEX orders to "limit order" behavior Adhere DEX orders to "limit order" behavior (single counter order) May 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants