Background
DEX is planned to be implemented as Iroha 2.0 module.
Action items
- Nikita Puzankovwrite down scenarios
- Yuriy Vinogradov validate scenarios
- Egor Ivkov Vladislav Markushin provide implementation options
- 武宮誠 review solution
Problem
Decentralized exchange provides an ability to transfer assets between accounts in exchange for other assets. Let's use a simple case as an example:
Peer to Peer Scenario
So Iroha should secure peer to peer exchanges across the ledger from malicious actions. In this case Iroha does a good job, the only thing it should check is an ability to transfer assets from and to accounts.
But there are more corner cases when we deal with exchanges via bridge:
Peer to Peer across Bridge Scenario
- Cross blockchain rates should be taken into consideration
- Iroha should prevent double spent of assets
- Additionally to transferring assets, Iroha should mint and de-mint them
Simple scenario:
Liquidity Pool Scenario
Liquidity Pools is another dimension in this set of scenarios for Decentralized Exchanges. Basically it can be used in pair with or without bridges, so let's take a more clean example without them.
Resulting Behavior
Let's write all three scenarios as one feature description according to BDD:
Feature: Decentralized Exchange Scenario: Buyer exchanges 20xor for 100usd Given: When: Then: Scenario: Buyer exchanges 20xor for 100usd Given: When: Then: Scenario: Buyer exchanges 20xor for 100usd Given: When: Then:
Solution
Introduce a new module "DEX" with a dependency on "Bridge" module with additional set of Iroha Special Instructions and Queries and new Abstractions like Order (Combination of a Trigger and Asset with a predefined Asset Definition). Implement Triggers.