Iroha 2 requirements
General info
Target release | Iroha 2.0 MVP |
|---|---|
Document status | DRAFT |
Document owner | @Vadim Reutskiy |
Tech lead | TBD |
Developers | @Nikita Puzankov @Egor Ivkov @Михаил Болдырев |
Blockchain advisors | @Kamil Salakhiev, @Andrei Lebedev, Bulat Nasrullin, |
Stakeholders | @Yuriy Vinogradov , @武宮誠 , @Zilya Yagafarova , @Pavel Golovkin , Anton Khvorov |
QA | Stephan Lavrentev |
Goals
TBD
Background and strategic fit
TBD
Sources
Iroha 2 white-paper: https://github.com/hyperledger/iroha/blob/iroha2-wp/iroha_2_whitepaper.md
Sora 2 project requirements
Anton Khvorov
@Zilya Yagafarova
@Pavel Golovkin
@Bogdan Mingela
@Ruslan Rezin
Bakong project requirements
@Zilya Yagafarova
Andrey Marin
KYC project requirements
Other internal project requirements
@Yuriy Vinogradov
Assumptions
TBD
Table of contents
- 1 General info
- 2 Goals
- 3 Background and strategic fit
- 4 Sources
- 5 Assumptions
- 6 Table of contents
- 7 Changes history
- 8 Requirements
- 8.1 Actors
- 8.2 Functional requirements
- 8.2.2 00. Iroha network operations
- 8.2.2.1 [FR0001] Starting the Iroha network
- 8.2.2.2 [FR0002] Adding peer to the Iroha network
- 8.2.2.3 [FR0003] Removing peer from the Iroha network
- 8.2.2.4 [FR0004] Configuring initial state of the Iroha network
- 8.2.2.5 [FR0005] Changing configuration of working Iroha network
- 8.2.2.6 [FR0006] Changing configuration of the particular peer
- 8.2.3 01. Making changes in Iroha network data by Iroha special instructions
- 8.2.3.1 [FR0100] Sending the transaction to the Iroha network
- 8.2.3.2 [FR0101] Creation of the account in the Iroha network
- 8.2.3.3 [FR0102] Configuring permissions for the account in the Iroha network
- 8.2.3.4 [FR0102] Granting permissions for the account in the Iroha network
- 8.2.3.5 [FR0104] Sending complex instruction using ISI DSL
- 8.2.3.6 [FR0105] Sending instruction and subscribing to the status of finalization
- 8.2.3.7 [FR0106] Creation of the multi-signature account in the Iroha network
- 8.2.3.8 [FR0107] Changing quorum for the multi-signature account
- 8.2.3.9 [FR0108] Changing list of signatories for the multi-signature account
- 8.2.3.10 [FR0109] Signing multi-signature transaction
- 8.2.3.11 [FR0110] Changing the conditions for the multi-signature account
- 8.2.3.12 [FR0111] Assigning weights to the signatories of the multi-signature account
- 8.2.3.13 [FR0112] Associating and changing arbitrary data payload with the account
- 8.2.3.14 [FR0113] Sending instruction with the payload
- 8.2.3.15 [FR0114] Sending non-fungible assets
- 8.2.4 02. Acquiring data from the Iroha network by queries
- 8.2.4.1 [FR0200] Acquiring data from the Iroha network by query
- 8.2.4.2 [FR0201] Acquiring the information about the selected account
- 8.2.4.3 [FR0202] Acquiring of the current permissions for the selected account
- 8.2.4.4 [FR0203] Acquiring a list of pending multi-signature transactions
- 8.2.4.5 [FR0204] Acquiring a list of current conditions for a multi-signature account
- 8.2.4.6 [FR0205] Acquiring a block by its number
- 8.2.4.7 [FR0206] Acquiring blocks subscription
- 8.2.4.8 [FR0207] Acquiring pending transactions subscription
- 8.2.4.9 [FR0208] Subscribing on the query results
- 8.2.4.10 [FR0209] Validate result of the query
- 8.2.4.11 [FR0210] Query old Iroha state (e.g., query balance month ago)
- 8.2.4.12 [FR0211] Querying list of accounts with the predefined filter
- 8.2.4.13 [FR0212] Retrieving the list of keys of data payload, associated with the target account
- 8.2.4.14 [FR0213] Retrieving the value of data payload by the key, associated with the target account
- 8.2.4.15 [FR0214] Querying list of transactions with predefined filter
- 8.2.4.16 [FR0215] Subscription on incoming transactions
- 8.2.4.17 [FR0216] Requesting list of non-fungible assets in account
- 8.2.4.18 [FR0217] Requesting data from the block storage by using special request language
- 8.2.5 03. Setting up and executing triggers
- 8.2.6 09. High-level use cases
- 8.2.6.1 [FR0900] Configuration of fees for transfers inside the current Iroha network
- 8.2.6.2 [FR0901] Sending transaction with fees
- 8.2.6.3 [FR0902] Delegation of account control with time limit
- 8.2.6.4 [FR0903] Inheritance of the account after period of inactivity
- 8.2.6.5 [FR0904] Distribution of fees according to business rules of the project
- 8.2.6.6 [FR0905] Managing the list of signatories
- 8.2.6.7 [FR0906] Making decisions by parliament voting
- 8.2.6.8 [FR0907] Management of non-fungible assets
- 8.2.6.9 [FR0908] Nominating validator by staking assets
- 8.2.6.10 [FR0909] Slashing of stakes for inappropriate behaviour of validator
- 8.2.6.11 [FR0910] Obtaining a list of trusted peers
- 8.2.6.12 [FR0911] Configuring a minimum limit of assets needed to create an account
- 8.2.6.13 [FR0912] Creation of account with configured minimum amount of tokens
- 8.3 Non-functional requirements
- 8.3.2 00. Performance
- 8.3.3 01. Portability
- 8.3.3.1 [NFR0100] Easy integration from client side applications
- 8.3.3.2 [NFR0101] Horizontal scalability of the network size
- 8.3.3.3 [NFR0102] Adaptability for different environments and projects
- 8.3.3.4 [NFR0102] Flexibility of integrated DSL for complex operations and triggers
- 8.3.3.5 [NFR0103] Reusability of the Iroha interface during integration with external systems
- 8.3.3.6 [NFR0103] Configurability of permission
- 8.3.4 02. Security
- 8.3.5 03. Usability
- 8.3.6 04. Reliability
- 9 Questions
- 10 Not Doing
Changes history
Requirements
Actors
Actor name | Role definition |
|---|---|
The Iroha peer | One of active peers of the Iroha network, accessible by network for the current user. |
The administrator | The user of the Iroha network with the extended rights towards manipulating the peers and network configuration |
The user | Generic user of the Iroha network with common list of permissions (required permissions are always mentioned in the use case Preconditions) |
Functional requirements
For describing functional requirements, we should follow the default use case template by example:
Use case title | [FR0000] Example use-case; ID should be unique |
|---|---|
Status | discuss Reviewed decided postpone |
Source | Source (or list of sources) of the function: project name / stakeholder name / document title (e.g., whitepaper) / etc. |
Preconditions |
|
Use case flow |
|
Post-conditions |
|
Alternative flow |
|
Exception flow |
|
Use case ID formula
Assuming, that each section would not have more than 100 use cases, the use case ID should be formed using that template:
FR<section_number> <use_case_number_in_section_starting_from_zero>
For example, for second use case in section 02 it should be:
FR02 01
00. Iroha network operations
❇️❇️❇️
In this section all use cases related to generic operations with Iroha network and peers will be described
Use case title | [FR0001] Starting the Iroha network |
|---|---|
Status | discuss |
Source |
|
Preconditions |
|
Use case flow |
|
Post-conditions |
|
Alternative flow | N/A |
Exception flow |
|
Use case title | [FR0002] Adding peer to the Iroha network |
|---|---|
Status | discuss |
Source |
|
Preconditions |
|
Use case flow |
|
Post-conditions |
|
Alternative flow | N/A |
Exception flow |
|
Use case title | [FR0003] Removing peer from the Iroha network |
|---|---|
Status | discuss |
Source |
|
Preconditions |
|
Use case flow |
|
Post-conditions |
|
Alternative flow | N/A |
Exception flow | N/A |
Use case title | [FR0004] Configuring initial state of the Iroha network |
|---|---|
Status | discuss |
Source | |
Preconditions |
|
Use case flow | TBD - questionable functionality |
Post-conditions |
|
Alternative flow | N/A |
Exception flow | N/A |
Use case title | [FR0005] Changing configuration of working Iroha network |
|---|---|
Status | discuss |
Source |
|
Preconditions |
|
Use case flow |
|
Post-conditions |
|
Alternative flow | N/A |
Exception flow | N/A |
Use case title | [FR0006] Changing configuration of the particular peer |
|---|---|
Status | discuss |
Source |
|
Preconditions |
|
Use case flow |
|
Post-conditions |
|
Alternative flow | N/A |
Exception flow |
|
01. Making changes in Iroha network data by Iroha special instructions
❇️❇️❇️
In this section all use cases related to changing data in the Iroha network will be described
Use case title | [FR0100] Sending the transaction to the Iroha network |
|---|---|
Status | discuss |
Source |
|
Preconditions |
|
Use case flow |
|
Post-conditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0101] Creation of the account in the Iroha network |
|---|---|
Status |