Iroha Additional Requirements
- Nikita Puzankov
Abstract
Based on Yuriy Vinogradovrequirements:
1. We want ability to have turing complete functions with own protected storage.
2. We want that we can control interfaces to access to this functions. Now looks like it is possible to call internal functions of the complex ISI/
3. There are not enough abilities for ISI to work with storage(parse, verify data...)
5. JS client library.
6. We want an easy understandable framework to send arguments from one ISI to another.
Now there is a proposal about sharing arguments through Assets, but it has many questions. how ISI will know from which asset to get data? How ISI will know how to parse it? How to validate?.... So, dedicated solution might be more clear that try to use assets for everything.
7. We need math in ISI for DEX logic if we want to implement it thorough complex ISI>
8. We want Cycles in ISI.
Requirement | Target Release | Already addressed in |
---|---|---|
Turing complete functions | ||
Protected Storage | ||
Data related ISI (parse, verify, etc.) | ||
JavaScript client library | Web API | |
ISI Arguments Passing framework | 2.0.0 | Query results as isi argument in complex ISI |
Math ISI | 2.0.0 | |
Cycles ISI |
Discussion
Turing Complete Functions
As described in the whitepaper Iroha Special Instructions in combination with "listeners" will provide Turing Completeness for Iroha.
If there are additional details or user stories - they should be provided.
Protected Storage
Iroha has `Kura` as a wrapper on top of `BlockStorage` with an ability to store encrypted data.
If there are additional details or user stories - they should be provided.
Data Related Iroha Special Instructions
As we understand the requirement, Iroha should be able to make verification of asset's based on some form of schema and following questions should be answered:
- what data and schema formats should we support?
- do we need to have native support of these formats?
- what "etc." part consist of?
Javascript Client Library
As planned we will port `iroha-client` to the `no-std` environment having an ability to compile it into `WebAssembly` module and use directly from Javascript.
Iroha Special Instruction Arguments Passing Framework
In more details described in a separate PR, TL;DR - we may store results of previous Iroha Special Instructions as Assets and retrieve them from later Iroha Special Instructions via execution of Iroha Queries.
Mathematical Iroha Special Instructions
The full list of operations we need to support Out-of-the-Box should be defined.
Cycles Iroha Special Instructions
We may provide Iroha Special Instructions for finite cycles Our-of-the-Box.
For example `For(n_times, instruction_to_execute)` and it will be just a "sugar" on top of `Sequence` instruction.