Page properties | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Goals
Background and strategic fit
Table of Contents |
---|
Expand | ||
---|---|---|
| ||
|
Assumptions
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 |
Functional requirements
For the 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 |
| ||||||||||||||||||
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: FR0201 |
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 |
| ||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
|
Use case title | [FR0002] Adding peer to the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
|
Use case title | [FR0003] Removing peer from the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow | Postconditions | Alternative flow | Exception flow |
| |||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
Use case title | Use case title | [FR0004] Configuring initial state of the Iroha network | |||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions | |||||||
Use case flow | |||||||
Postconditions | |||||||
Alternative flow | |||||||
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 | [ |
---|
FR0005] Changing configuration of working Iroha network | |||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
Preconditions |
|
| |
Use case flow | |
Postconditions |
|
Alternative flow | |
Exception flow |
Use case title | [FR0006] Changing configuration of the particular peer | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow | |||||||
Postconditions |
| ||||||
Alternative flow | |||||||
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 |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0101] Creation of | ||||||
---|---|---|---|---|---|---|---|
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
| ||||||
Use case title | [FR0101] Creation of the account in the Iroha network | ||||||
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
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 |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0102] Configuring permissions for the account | Use case title | [FR0102] Granting permissions for the account in the Iroha network | ||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0102] Granting permissions for the account in the Iroha network | Use case title | [FR0104] Sending complex instruction using ISI DSL | ||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0105FR0104] Sending complex instructionandcribing to the status of finalizationusing ISI DSL | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| Postconditions |
| ||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0105] Sending instruction andcribing to the status of finalization | Use case title | [FR0106] Creation of the multi-signature account in the Iroha network | ||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
|
Use case title | [FR0106] Creation of the multi-signature account in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
| ||||||
Use case title | [FR0107] Changing quorum for the multi-signature account | ||||||
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0108FR0107] Changinglist of signatoriesquorum for the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0109] SigningFR0108] Changing list of signatories for the multi-signaturetransactionaccount | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
| |||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception Alternative flow |
| ||||||
Exception flow |
| ||||||
Use case title | [FR0110] Changing the conditions for the multi-signature account | ||||||
Status |
| ||||||
Source |
| ||||||
|
Use case title | [FR0109] Signing multi-signature transaction | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [FR0110] Changing the conditions for the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | |||||||
Exception flow |
Use case title | [FR0111] Assigning weights to the signatories of the multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Bogdan Mingela | ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
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 |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
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 case title | [FR0200] Acquiring data from the Iroha network by query | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0201] Acquiring the information about the selected | ||||||
---|---|---|---|---|---|---|---|
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | Exception flow | Use case title | [FR0111] Assigning weights to the signatories of the multi-signature account | ||||
Status |
| ||||||
Source | Bogdan Mingela | ||||||
Preconditions |
| ||||||
Use case flow | |||||||
Postconditions | |||||||
Alternative flow | |||||||
Exception flow |
Use case title | [FR0202] Acquiring of the current permissions for the selected account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions | |||||||
Use case flow | |||||||
Postconditions | |||||||
Alternative flow | |||||||
Exception flow | |||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A |
Use case title | [FR0112] Associating and changing arbitrary data payload with the accountFR0203] Acquiring a list of pending multi-signature instructions | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
| |||||||
Postconditions |
| ||||||
Alternative flow | N/A | Alternative flow | |||||
Exception flow |
|
02. Acquiring data from the Iroha network by queries
❇️❇️❇️
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 queryFR0204] Acquiring a list of current conditions for a multi-signature account | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| Postconditions |
| ||||
Alternative flow | N/A | ||||||
Exception flow |
| ||||||
Use case title | [FR0201] Acquiring the information about the selected account | ||||||
Status |
| ||||||
Source | Preconditions | Use case flow | Postconditions | Alternative flow | Exception flow
|
Use case title | [FR0202FR0205] Acquiringof the current permissions for the selected accounta block by its number | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | Preconditions | ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case flow | Postconditions | Alternative flow | Exception flow | Use case title | [FR0203FR0206] Acquiringa list of pending multi-signature instructionsblocks subscription | ||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flowOn | step 3, if there are no currently pending transactions, the Iroha peer will return "empty response" status N/A |
Use case title | [FR0204FR0207] Acquiringa list of current conditions for a multi-signature accountpending transactions subscription | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
| |||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow | N/A | Exception flow |
Use case title | [FR0205] Acquiring a block by its numberFR0208] Subscribing on the query results | |||||||
---|---|---|---|---|---|---|---|---|
Status |
| |||||||
Source | Bogdan Mingela
| |||||||
Preconditions |
| |||||||
Use case flow |
| |||||||
Postconditions |
| Postconditions |
| |||||
Alternative flow | N/A | |||||||
Exception flow |
| |||||||
Use case title | [FR0206] Acquiring blocks subscription | |||||||
Status |
|
| discuss | (can be extended with a start block number index)|||||
Source | ||||||||
Preconditions |
| |||||||
Use case flow |
| |||||||
Postconditions |
| |||||||
Alternative flow | N/A | |||||||
| Exception flow | N/A |
Use case title | [FR0207] Acquiring pending transactions subscriptionFR0209] Validate result of the query | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flowN/Aflow |
|
Use case title | [FR0208] Subscribing on the query resultsFR0210] Query old Iroha state (e.g., query balance month ago) | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
| |||||||
Preconditions |
| ||||||
Use case flow | <<extends>> FR0200, substitutes step 4:
| ||||||
Postconditions |
| Postconditions |
| ||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0209FR0211]Validate resultQuerying list of accounts with thequerypredefined filter | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| Source | |||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flowN/A |
| ||||||
Exception flow |
|
Use case title | [FR0210] Query old Iroha state (e.g., query balance month ago)FR0212] Retrieving the list of keys of data payload, associated with the target account | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source | Source |
| |||||||
Preconditions |
| ||||||||
Use case flow | <<extends>> FR0200, substitutes step 4:
| ||||||||
| |||||||||
Use case flow |
| ||||||||
Postconditions |
| Postconditions |
| ||||||
Alternative flow | N/A | ||||||||
Exception 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 |
|
|
|
|
| |
Postconditions |
|
| |
Alternative flow | N/A |
Exception flow |
|
|
|
|
|
|
Use case title | [FR0212FR0214]Retrieving theQuerying list ofkeys of data payload, associated with the target accounttransactions with predefined filter | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | Exception flow |
|
[FR0213] Retrieving the value of data payload by the key, associated with the target account
Status | ||||
---|---|---|---|---|
|
- Sora 2 project (from Zilya by Vadim Reutskiy)
- The user has access to account with permissions to retrieve data payload related to the target account
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
- The user acquired value of data payload, associated with target key on target account
N/A
| |
Exception flow |
|
|
|
|
Use case title | [FR0214] Querying list of transactions with predefined filterFR0215] Subscription on incoming transactions | ||||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
| ||||||||
Postconditions |
| ||||||||
Alternative flow |
| Exception flow | |||||||
| |||||||||
Postconditions |
| ||||||||
Alternative flow |
| ||||||||
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 | [FR0215] Subscription on incoming transactionsFR0300] Setting up a trigger in the Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
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 |
| |||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
Use case title | [FR0301] Manually firing the trigger | Use case title | [FR0300] Setting up a trigger in the Iroha network | ||||||
---|---|---|---|---|---|---|---|---|---|
Status |
| ||||||||
Source |
| ||||||||
Preconditions |
| ||||||||
Use case flow |
| Use case flow |
| ||||||
Postconditions |
| Postconditions |
| ||||||
Alternative flow | N/A | ||||||||
Exception flow |
|
Use case title | [FR0301FR0302]Manually firingRemoving the trigger | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
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 | [FR0302] Removing the triggerFR0900] Configuration of fees for transfers inside the current Iroha network | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| Use case flow |
| ||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
Exception flow |
|
09. High-level use cases
In this section all high-level use cases will be described
Use case title | [FR0900] Configuration of fees for transfers inside the current Iroha networkFR0901] Sending transaction with fees | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions |
| ||||||
Use case flow |
| ||||||
Postconditions |
| ||||||
Alternative flow | N/A | ||||||
| |||||||
Postconditions |
| ||||||
Alternative flow |
| ||||||
Exception flow |
|
Use case title | [ |
---|
FR0902] Delegation of account control with time limit | |||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
|
Preconditions |
|
|
Use case flow
- The user prepares the information about needed transfer of assets
- The user sends the query to the Iroha peer in the aim to get the needed structure of transaction, including all required fees (<<include>> FR0200)
- The response also contains the time frame until the provided information will be relevant.
- The user creates the transaction with all required instructions included within the provided time frame
- The user sends the prepared instruction to the Iroha peer (<<include>> FR0100)
- The Iroha peer returns results of the instruction to the user
- The transfer instruction was successfully applied, together with all needed instructions for fees deduction.
- On step 3, if the time frame has passed, the user needs to request the information about fees again in the aim to create correct transaction
| |
Use case flow | |
Postconditions |
|
Alternative flow | |
Exception flow |
Use case title | [FR0903] Inheritance of the account after period of inactivity | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source |
| ||||||
Preconditions | |||||||
Use case flow | |||||||
Postconditions | |||||||
Alternative flow | |||||||
Exception flow |
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 |
Performance
Quality attribute name | [NFR0001] Transaction processing speed | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
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 |
Quality attribute name | [NFR0001] Delay of block creation | ||||||
---|---|---|---|---|---|---|---|
Status |
| ||||||
Source | |||||||
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 |
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|