General info
Page Properties | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Goals
Status colour Yellow title TBD
Background and strategic fit
Status | ||||
---|---|---|---|---|
|
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
Assumptions
Status colour Yellow title TBD
Table of contents
Table of Contents |
---|
Changes history
Expand | ||
---|---|---|
| ||
|
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 preconditionsPreconditions) |
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 |
| ||||||||||||||||||||||||
Source | Source (or list of sources) of the function: project name / stakeholder name / document title (e.g., whitepaper) / etc. | ||||||||||||||||||||||||
Preconditions |
| ||||||||||||||||||||||||
Use case flow |
| ||||||||||||||||||||||||
Postconditions | One Post-conditions |
| |||||||||||||||||||||||
Alternative flow |
| ||||||||||||||||||||||||
Exception flow |
|
Info | ||
---|---|---|
| ||
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
Info |
---|
❇️❇️❇️ 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 |
| ||||||
Source |
| ||||||
Preconditions |
| Use case flow | The administrator launches the command to run Iroha peer and providing the
| ||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0002] Adding peer to the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0003] Removing peer from the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0004] Configuring initial state of the Iroha network | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||||
Source | |||||||||||
Preconditions |
| ||||||||||
Use case flow | Postconditions | Alternative flow | Exception flow | ||||||||
Use case title | [FR0005] Changing configuration of working Iroha network | ||||||||||
Status |
| discuss
| Source | - questionable functionality | |||||||
Post-conditions |
| ||||||||||
Alternative flow | N/A | ||||||||||
Exception flow | N/A |
Use case title | [FR0005] Changing configuration of working Iroha network | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
| ||||||||
PostconditionsPost-conditions |
| ||||||||
Alternative flow | N/A | ||||||||
Exception flow | N/A |
Use case title | [FR0006] Changing configuration of the particular peer | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Preconditions |
| |||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
01. Making changes in Iroha network data by Iroha special instructions
Info |
---|
❇️❇️❇️ 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 |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0101] Creation of the account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0102] Configuring permissions for the account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0102] Granting permissions for the account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0104] Sending complex instruction using ISI DSL | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0105] Sending instruction and subscribing to the status of finalization | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0106] Creation of the multi-signature account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| Preconditions |
| ||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0107] Changing quorum for the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0108] Changing list of signatories for the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0109] Signing multi-signature transaction | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0110] Changing the conditions for the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0111] Assigning weights to the signatories of the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0112] Associating and changing arbitrary data payload with the account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0113] Sending instruction with the payload | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flowN/A |
| ||||||
Exception flow |
|
02. Acquiring data from the Iroha network by queries
Info |
---|
❇️❇️❇️ In this section all use cases related to retrieving data from the Iroha network will be described |
Use Use case title | [FR0200] Acquiring data from the Iroha network by queryFR0114] Sending non-fungible assets | |||||||
---|---|---|---|---|---|---|---|---|
Status |
| |||||||
Source |
|
| ||||||
Preconditions |
| |||||||
Use case flow | Use case title | [FR0201] Acquiring the information about the selected account
| ||||||
Postconditions |
| |||||||
Alternative flow | N/A | |||||||
Exception flow |
| |||||||
| ||||||||
Post-conditions |
| |||||||
Alternative flow |
| |||||||
Exception flow | N/A |
02. Acquiring data from the Iroha network by queries
Info |
---|
❇️❇️❇️ In this section all use cases related to retrieving data from the Iroha network will be described |
Use case title | [FR0200] Acquiring data from the Iroha network by query | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||||||||||
Source | Preconditions | Use case flow | Postconditions | Alternative flow | Exception flow | ||||||||||||
Use case title | [FR0202] Acquiring of the current permissions for the selected account | ||||||||||||||||
Status |
| ||||||||||||||||
Preconditions |
| ||||||||||||||||
Use case flow |
| discuss | Source | Preconditions | Use case flow | Postconditions | Alternative flow | Exception flow | Use case title | [FR0203] Acquiring a list of pending multi-signature transactions
| |||||||
Post-conditions |
| ||||||||||||||||
Alternative flow | N/A | ||||||||||||||||
Exception flow |
|
Use case title | [FR0201] Acquiring the information about the selected account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0202] Acquiring of the current permissions for the selected account | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Status |
| TBD | (should the Iroha expose all pending transactions, or we need to add the account ID / public key to filter the request?)Postconditions
| |||||||
Source | ||||||||||
Preconditions |
| |||||||||
Alternative flow |
| |||||||||
Exception flow |
| |||||||||
Use case flow |
| |||||||||
Post-conditions |
| |||||||||
Alternative flow | N/A | |||||||||
Exception flow | N/A |
Use case title | [FR0204FR0203] Acquiring a list ofcurrent conditions for apending multi-signatureaccounttransactions | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow | Status |
| |||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
| ||||||
Use case title | [FR0205] Acquiring a block by its number | ||||||
Exception flow | On step 3, if there are no block specified
| discuss | |||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
| |||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0206FR0204] Acquiringblocks subscriptiona list of current conditions for a multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Bogdan MingelaSource |
| |||||
Preconditions |
| ||||||
Use case flow |
| Postconditions | The user has got stable channel for continuous block obtaining, which can be used for getting all new blocks on the current peer until the connection will be interrupted
| ||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A | Use case title | [FR0207] Acquiring pending transactions subscription
|
Use case title | [FR0205] Acquiring a block by its number | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow | The user has got stable pending transactions perception channel and newly arriving pending transactions
| Postconditions |
| ||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flowN | /A
|
Use case title | [FR0208] Subscribing on the query resultsFR0206] Acquiring blocks subscription | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Status |
| Source(can be extended with a start block number index) | |||||||||
Source | |||||||||||
Preconditions |
| ||||||||||
Use case flow |
| ||||||||||
PostconditionsPost-conditions |
| ||||||||||
Alternative flow | N/A | ||||||||||
Exception flow |
| ||||||||||
Use case title | [FR0209] Validate result of the query | ||||||||||
N/A |
Use case title | [FR0207] Acquiring pending transactions subscription | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
SourceKamil Salakhiev | |||||||
Preconditions |
| ||||||
Use case flow | Exception flow |
| |||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
On step 4, if the response was corrupted or changed, the user can find it by comparing results of data hashing with the Merkle proof. In that case, validation can be considered as failed.
| |||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0210] Query old Iroha state (e.g., query balance month ago)FR0208] Subscribing on the query results | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow | <<extends>> FR0200, substitutes step 4:
| ||||||
Postconditions |
| ||||||
Alternative flow | N/
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | Status
| ||||||
Use case title | [FR0211] Querying list of accounts with the predefined filter | ||||||
| |||||||
Use case title | [FR0212] Retrieving the list of keys of data payload, associated with the target account | ||||||
Status |
| ||||||
Source |
| discuss | - probably optional for MVP, if there will be another way for gathering data for the award calculation for liquidity providers in DEX solution|||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
| ||||||
|
Use case title | [FR0209] Validate result of the query | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| Postconditions | The user acquired list of keys of data payload associated with the target account
| ||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [ |
---|
FR0210] Query old Iroha state (e.g., query balance month ago) | |||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
|
|
| |
Preconditions |
|
Use case flow
- The user prepares the target account identifier and required key for forming the corresponding query
- The user sends the transaction with prepared query to the Iroha peer (<<include>> FR0200)
- The Iroha peer returns results of query to the user, which contains value of data payload, associated with target key on target account
| ||||||
Use case flow | <<extends>> FR0200, substitutes step 4:
| |||||
Post-conditions |
| |||||
Alternative flow | N/A | |||||
Exception flow |
|
|
|
|
Use case title | [FR0214FR0211] Querying list oftransactionsaccounts with the predefined filter | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
PostconditionsPost-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0215] Subscription on incoming transactionsFR0212] Retrieving the list of keys of data payload, associated with the target account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions | Preconditions |
| |||||
Use case flow | Exception
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
| |||||||
Post-conditions |
| ||||||
Alternative flow | N/A |
03. Setting up and executing triggers
❇️❇️❇️
In this section all use cases related to triggers in the Iroha network will be describedException flow |
|
Use case title | [ |
---|
FR0213] Retrieving the value of data payload by the key, associated with the target account | |||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| |
Preconditions |
|
| |
Use case flow |
|
|
|
Status | ||||
---|---|---|---|---|
|
- The trigger was configured and ready to fire
- On step 4, if the user does not have permissions to set up triggers and/or if there is not enough permissions to each command in the trigger body, the Iroha peer return "not enough permissions" error response; use case flow stops.
- On step 5, if permissions of the author user would not allow for all instructions to execute (for example, if permissions of the author user was changed after creating the trigger), the whole trigger execution will be cancelled.
Status colour Yellow title TBD
| |
Post-conditions |
|
Alternative flow | N/A |
Exception flow |
|
Use case title | [FR0214] Querying list of transactions with predefined filter | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0215] Subscription on incoming transactions | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | On step 3, if user does not have permissions to run all instructions in the Trigger, the Iroha peer returns "not enough permissions" status; use case flow stops.
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Use case title | [FR0302] Removing the triggerFR0216] Requesting list of non-fungible assets in account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| Postconditions | The target trigger was removed from the list of active triggers
| ||||
Post-conditions |
| ||||||
Alternative flow | N/A | Exception flow |
|
09. High-level use cases
Info |
---|
❇️❇️❇️ In this section all high-level use cases will be described |
Use case title | [FR0900] Configuration of fees for transfers inside the current Iroha network
|
---|---|
Exception flow | N/A |
Use case title | [FR0217] Requesting data from the block storage by using special request language | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow | Use case title | [FR0901] Sending transaction with fees
| |||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
| ||||||
| |||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
03. Setting up and executing triggers
Info |
---|
❇️❇️❇️ In this section all use cases related to triggers in the Iroha network will be described |
Use case title | [FR0300] Setting up a trigger in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0301] Manually firing the trigger | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0302] Removing the trigger | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
09. High-level use cases
Info |
---|
❇️❇️❇️ In this section all high-level use cases will be described |
Use case title | [FR0900] Configuration of fees for transfers inside the current Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0901] Sending transaction with fees | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0902] Delegation of account control with time limit | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Use case title | [FR0903] Inheritance of the account after period of inactivity | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Use case title | [FR0904] Distribution of fees according to business rules of the project | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Use case title | [FR0905] Managing the list of signatories | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0906] Making decisions by parliament voting | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Use case title | [FR0907] Management of non-fungible assets | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Use case title | [FR0908] Nominating validator by staking assets | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
TBD, need requirements details from the Sora project Pavel Golovkin | ||||||||
Post-conditions |
| ||||||||
Alternative flow | TBD | ||||||||
Exception flow | TBD |
Use case title | [FR0909] Slashing of stakes for inappropriate behaviour of validator | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Use case title | [FR0910] Obtaining a list of trusted peers | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0911] Configuring a minimum limit of assets needed to create an account | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
| ||||||||
Post-conditions |
| ||||||||
Alternative flow |
| ||||||||
Exception flow | N/A |
Use case title | [FR0912] Creation of account with configured minimum amount of tokens | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Post-conditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Non-functional requirements
Non-functional requirements (also named as "Quality attributes") describes the behavior of the system not directly related to the functions of the system, but answers the question "How system works?". The template for all quality attributes should follow the example (link to source):
Quality attribute name | [NFR0000] Example quality attribute; ID should be unique | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||||||||||||
Source | Source (or list of sources) of the quality characteristic: project name / stakeholder name / document title (e.g., whitepaper) / etc. | ||||||||||||||||||
Source of stimulus | Entity, which initiates the stimulus, may be one of system users, another software system, etc. | ||||||||||||||||||
Stimulus | Condition, which requires the response from the system | ||||||||||||||||||
Environment | Definition of specific conditions when stimulus occurs, and which is important for the result of response. Typical environment values are: normal operation, overload of requests, starting up the system, etc. | ||||||||||||||||||
Artifact | Particular subject of stimulus, may be the whole system, some subset of parts or single part of the system. | ||||||||||||||||||
Response | Result of reaction of the system to the stimulus | ||||||||||||||||||
Response measure | Measurable characteristic of the response, which can be checked for understanding how the system satisfies the requirements |
Info | ||
---|---|---|
| ||
The systematization of quality attributes should follow the approach in standard ISO/IEC 25010:2011 |
00. Performance
Quality attribute name | [NFR0001] Transaction processing speed | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Use case title | [FR0902] Delegation of account control with time limit
| |||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
| ||||||
Source of stimulus | Client applications of the Iroha network | ||||||
Stimulus | Client application sends transactions to the Iroha network | ||||||
Environment | Normal operation of the system | ||||||
Artifact | Whole Iroha network | ||||||
Response | The Iroha peer accepts the transactions and adds them to the blockchain | ||||||
Response measure | The Iroha network should process at least 20.000 transactions per second For Sora 2 project:
By 武宮誠
|
Quality attribute name | [NFR0001] Delay of block creation | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | - could be after MVP|||||||
Source |
| ||||||
Preconditions |
| Use case flow | |||||
Postconditions |
| ||||||
Alternative flow | Exception flow | Use case title | [FR0903] Inheritance of the account after period of inactivity
| ||||
Source of stimulus | Client applications of the Iroha network | ||||||
Stimulus | Client application sends transactions to the Iroha network | ||||||
Environment | Normal operation of the system | ||||||
Artifact | Whole Iroha network | ||||||
Response | The Iroha peer accepts the transactions and to the block | ||||||
Response measure | The Iroha network should create new block each 2-3 seconds |
Quality attribute name | [NFR0002] Delay of restarting the peer | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
| ||||||||
Postconditions |
| ||||||||
Alternative flow |
| ||||||||
Source of stimulus | Administrator of the host with running Iroha peer | ||||||||
Stimulus | Administrator restarts the Iroha peer (manually or automatically by external script) | ||||||||
Environment | Normal operation of the system; the block storage is not corrupted. | ||||||||
Artifact | Current Iroha peer | ||||||||
Response | The Iroha peer restarts and restores the WSV in the storage using one of two modes:
| ||||||||
Response measure | Use case title | [FR0904] Distribution of fees according to business rules of the projectThe Iroha peer successfully restarted, with following metrics:
| |||||||
Exception flow | N/A | ||||||||
|
Quality attribute name | [NFR0003] Performing as expected on predefined hardware | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow | N/A |
Source of stimulus | The Validator |
Stimulus | Attempt to run Iroha peer on the validators' machines |
Environment | Normal operation of the system; the host machine is satisfying minimal requirements from the Iroha documentation |
Artifact | The Iroha peer |
Response | The Iroha peer start the execution |
Response measure | The Iroha peer should start working properly, without functional issue and satisfying all non-functional requirements to performance |
Quality attribute name | [NFR0004] Providing enough capacity for user's accounts | ||||||
---|---|---|---|---|---|---|---|
Status |
|
Source |
- Sora 2 project
Use case flow
N/A
Non-functional requirements
Non-functional requirements (also named as "Quality attributes") describes the behavior of the system not directly related to the functions of the system, but answers the question "How system works?". The template for all quality attributes should follow the example (link to source):Source of stimulus | Users of the network |
Stimulus | Creation of personal accounts in the network |
Environment | Normal operation of the system |
Artifact | The Iroha network and block storage |
Response | The Iroha network allows to register as much users as needed in the target system; block storage can successfully keep all the relevant data |
Response measure | The Iroha network can successfully handle at least 20 million of users' accounts |
01. Portability
Quality attribute name | [NFR0000] Example quality attribute; ID should be uniqueNFR0100] Easy integration from client side applications | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||||||
Source |
| ||||||||||||
Source of stimulus | Client applications of the Iroha network | ||||||||||||
Stimulus | Client application needs interaction with the Iroha network | ||||||||||||
Environment | Development of the client-side applications | ||||||||||||
Artifact | Client-side applications | ||||||||||||
Response | There are client libraries with efficient SDK available. | ||||||||||||
Response measure | Client libraries available for following programming languages and platforms:
|
Quality attribute name | [NFR0101] Horizontal scalability of the network size | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
SourceSource (or list of sources) of the quality characteristic: project name / stakeholder name / document title (e.g., whitepaper) / etc | .
| ||||||
Source of stimulus | Entity, which initiates the stimulus, may be one of system users, another software system, etc. | ||||||
Stimulus | Condition, which requires the response from the system | ||||||
Environment | Definition of specific conditions when stimulus occurs, and which is important for the result of response. Typical environment values are: normal operation, overload of requests, starting up the system, etc. | ||||||
Artifact | Particular subject of stimulus, may be the whole system, some subset of parts or single part of the system. | ||||||
Response | Result of reaction of the system to the stimulus | ||||||
Response measure | Measurable characteristic of the response, which can be checked for understanding how the system satisfies the requirements |
User of the Iroha network with permissions to change list of validating peers | |||||||
Stimulus | Sending operation of adding more validating peers to perform horizontal scalability of the network | ||||||
Environment | Normal system functioning | ||||||
Artifact | Whole Iroha network | ||||||
Response | The size of Iroha network was increased by new validating peers, provided in the request | ||||||
Response measure | The size of Iroha network should be increased at least up to 22 validating peers
|
Quality attribute name | [NFR0001] Transaction processing speedNFR0102] Adaptability for different environments and projects | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
SourceIroha 2 white-paper |
| ||||||
Source of stimulusClient | applications of the Iroha The operations engineer with permissions to configure the network | ||||||
StimulusClient application sends transactions to the Iroha network | Changing system configuration parameters | ||||||
Environment | Normal operation of the On system start | ||||||
Artifact | Whole Iroha network | ||||||
Response | The Iroha peer accepts the transactions and adds them to the blockchainsystem configuration changes according to the request from the user | ||||||
Response measure | The For Sora 2 project: system configuration should provide possibility to tune up following parameters:
|
Quality attribute name | [NFR0001NFR0102]Delay of block creationFlexibility of integrated DSL for complex operations and triggers | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Iroha
| ||||||
Source of stimulus | Client applications The system engineer of the Iroha networkexternal project | ||||||
Stimulus | Client application sends transactions to Need to describe the logic of core operations within the Iroha network | ||||||
Environment | Normal operation On design and implementation of the systemproject over Iroha | ||||||
ArtifactWhole | DSL of the Iroha | ||||||
Response | The DSL allows to describe all required manipulations with the internal entities in the Iroha network | ||||||
Response | The Iroha peer accepts the transactions and to the block | Response measure | The Iroha network should create new block each 2-3 secondsmeasure | The DSL provides system of data-manipulation rules, so it can be used to manipulate all entities in the Iroha network (available by permissions) and to manage control flow by using functions, conditions, loops, etc. |
Quality attribute name | [NFR0002NFR0103]DelayReusability ofrestarting the peerthe Iroha interface during integration with external systems | |||||||
---|---|---|---|---|---|---|---|---|
Status | Response measure |
Status | ||||
---|---|---|---|---|
|
strictInit
mode:restart should take not more than 200 (??) ms per block Status | ||||
---|---|---|---|---|
|
- Iroha 2 white-paper
- Bakong project (Zilya Yagafarova)
- Sora 2 project (Pavel Golovkin)
The Iroha peer restarts and restores the WSV in the storage using one of two modes:
- the
fastInit
mode, when all transactions are applied without the verification of the block storage consistency - the
strictInit
mode, when all transactions and blocks are verified to have correct signature and follow the business rules
|
- Internal project (Iurii Vinogradov )
The Iroha network should provide the convenient interface for interaction from the other systems.
The interface should be widely used and correspond to the industrial standard. Good candidate for such interface is HTTP(S) for single requests and WebSockets for continuous communication.
Quality attribute name | [NFR0003] Performing as expected on predefined hardwareNFR0103] Configurability of permission | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Sora 2 project
| ||||||
Source of stimulus | The | Validatorexternal client of the Iroha network | |||||
Stimulus | Attempt to run Iroha peer on the validator's machine | ||||||
Environment | Normal operation of the system; the host machine is satisfying minimal requirements from the Iroha documentation | ||||||
Artifact | The Iroha peerChanging permissions for some entities in the Iroha network:
| ||||||
Environment | Normally running Iroha network | ||||||
Artifact | Permission of entities in the Iroha network | ||||||
Response | The Iroha peer start the executionprovides flexibility in the permissions configuration, so the user may configure it for each mentioned entity | ||||||
Response measure | The Iroha peer should start working properly, without functional issue and satisfying all non-functional requirements to performance |
|
02. Security
Quality attribute name | [NFR0100] Easy integration from client side applicationsNFR0200] Non-repudiation of data between peer and client | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
SourceIroha 2 white-paper |
| ||||||
Source of stimulus | Client-side applications of the Iroha network | ||||||
Stimulus | Client application needs interaction with the Iroha network | ||||||
Environment | Development of the client-side applications | ||||||
Artifact | Client-side applications | ||||||
Response | There are client libraries with efficient SDK available. | ||||||
Response measure | -side application sends the request to the Iroha peer and gets the response | ||||||
Environment | Normal functioning system | ||||||
Artifact | Connection between client-side application and Iroha peer. | ||||||
Response | Client-side application checks the authenticity of the response | ||||||
Response measure | Client-side application can be sure that data received from the Iroha peer is not changed by the man-in-the-middle attack |
03. Usability
Quality attribute name | [NFR0101] Horizontal scalability of the network sizeNFR0300] Convenient documentation for different user types | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
SourceSora 2 project |
| ||||||
Source of stimulusUser | Response measure | The size of Iroha network should be increased at least up to 22 validating peers||||||
Status | |||||||
colour | Yellow | title | TBDDifferent types of users of the Iroha network with permissions to change list of validating peers | ||||
Stimulus | Sending operation of adding more validating peers to perform horizontal scalability of the network | ||||||
Environment | Normal system functioning | ||||||
Artifact | Whole Iroha network | ||||||
Response | The size of Iroha network was increased by new validating peers, provided in the request | ||||||
| |||||||
Stimulus | Need to get all related information about the Iroha | ||||||
Environment | In process of research and development of digital solutions | ||||||
Artifact | Documentation of the Iroha | ||||||
Response | Documentation can provide excessive information about all entities and fundamentals of Iroha | ||||||
Response measure | Each user of all different types can explore the documentation and get answer on required question within acceptable amount of time. |
04. Reliability
Quality attribute name | [NFR0102] Adaptability for different environments and projectsNFR0400] Available proofs of efficiency of technical decisions and implementation | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Sora 2 project | ||||||
Source of stimulus | The operations engineer with permissions to configure the network | ||||||
Stimulus | Changing system configuration parameters | ||||||
Environment | On system start | ||||||
Artifact | Whole Iroha network | ||||||
Response | The system configuration changes according to the request from the user | ||||||
Response measure | The system configuration should provide possibility to tune up following parameters:
|
02. Security
Quality attribute name | [NFR0200] Non-repudiation of data between peer and clientAnalysts of blockchain solutions |
---|---|
Stimulus | Request to get excessive information about proofs for efficiency of technical decisions and implementation design |
Environment | In process of analyzing effectiveness and soundness of the Iroha |
Artifact | Documentation of the Iroha |
Response | Documentation provides information about experiments, benchmarks and researches made for making all major decisions and designing structure of the software solution for the Iroha |
Response measure | All provided data is clear for understanding of specialists and can be easily verified by repeating the same experiments or benchmarks mentioned as proofs |
Quality attribute name | [NFR0401] Safety of the integrated DSL language for triggers | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
SourceSora 2 project |
| ||||||
Source of stimulus | Client-side applications of the Iroha network | ||||||
Stimulus | Client-side application sends the request to the Iroha peer and gets the response | ||||||
Environment | Normal functioning system | ||||||
Artifact | Connection between client-side application and Iroha peer. | ||||||
Response | Client-side application checks the authenticity of the response | ||||||
Response measure | Client-side application can be sure that data received from the Iroha peer is not changed by the man-in-the-middle attackCode in triggers or smart contracts, defined on the integrated DSL language | ||||||
Stimulus | Execution of the smart contract or firing of the trigger | ||||||
Environment | Running Iroha network in normal mode | ||||||
Artifact | Stability of all peers in the network | ||||||
Response | The DSL should be designed to prevent the possibility of crashing whole network or it's parts by executing the code | ||||||
Response measure | The DSL should prevent any kind of attacks, including:
|
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|