Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

General info

Page Properties


Target releaseIroha 2.0 MVP
Document status
Status
titleDRAFT
Document owner
Tech lead

Status
colourYellow
titleTBD

Developers
Blockchain advisors

Kamil Salakhiev,   Andrei Lebedev, Bulat Nasrullin, 

Stakeholders
QAStephan Lavrentev


Goals

  • Status
    colourYellow
    titleTBD

Background and strategic fit

Status
colourYellow
titleTBD

Sources

Assumptions

  • Status
    colourYellow
    titleTBD

Table of contents

Table of Contents

Changes history

Expand
titleHistory of changes
Change History


Requirements

Actors

Actor nameRole definition
The Iroha peerOne of active peers of the Iroha network, accessible by network for the current user.
The administratorThe user of the Iroha network with the extended rights towards manipulating the peers and network configuration
The userGeneric 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

Status
colourYellow
titlediscuss

Status
colourBlue
titleReviewed

Status
colourGreen
titledecided

Status
colourRed
titlepostpone

SourceSource (or list of sources) of the function: project name / stakeholder name / document title (e.g., whitepaper) / etc.
Preconditions
  • List of preconditions which must be satisfied before the use case can be applied
  • Each precondition should be defined as the point in the list

Use case flow

  1. The enumerated list of actions, which describes the interaction between actors step by step
  2. Each step should involve a single actor as an object of the action
  3. Each step can involve one or more actors as a subject of the action
  4. Each use case can involve other use cases as dependencies by include or extend relationships
PostconditionsOne Post-conditions
  • List of post-conditions, one or more results of successfully finished use case
Alternative flow
  • List of alternative flows that can happen with the use case.
  • Each entry should have the link to the step of the main use case flow when the alternative can occur
    • If needed, each entry can contain sub-entries
  • Each entry should describe the consequences of the alternative flow
Exception flow
  • List of exceptions that can happen during the use case flow, which can prevent it to be successfully finished
  • Each entry should have the link to the step of the main use case flow when the exception can occur
    • If needed, each entry can contain sub-entries
  • Each entry should describe the consequences of the exception


Info
titleUse 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

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

Status
colourYellow
titlediscuss

Source
Preconditions
  • The administrator has configured environment for running Iroha executablesexecutable
  • The administrator has prepared the genesis block

Use case flow

  • The administrator launches the command to run Iroha peer and providing the path to the genesis block description
  • The Iroha peer read and
    • information for the network configuration (peer addresses and ports, consensus parameters, etc.)
    • The administrator generated key pairs for all accounts, which should be created at the start of the network, including root administrator account if it is required by business requirements
    • The administrator has prepared the genesis block configuration according to the network configuration and business requirements

    Use case flow

    1. The administrator launches the command to run Iroha peer and providing the path to the genesis block description
    2. The Iroha peer read and validates the genesis block configuration
    3. The Iroha peer starts the Iroha network according to the configuration in the genesis block
    4. The Iroha peer provides "successfully started" report to the administrator
    PostconditionsPost-conditions
    • The Iroha network is running
    • The administrator has access to the root account of the network
    Alternative flow

    N/A

    Exception flow
    • At At step 2, in case of the invalid genesis block, the Iroha peer shows corresponding error messages to the administrator and halts the network creation process


    Use case title
    [FR0002] Adding peer to the Iroha network
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The Iroha network is running
    • The administrator has access to the account with permissions of adding peers to the network

    Use case flow

    1. The administrator configures and starts the new peer
    2. The administrator prepares the transaction with instruction to add the new peer
    3. The administrator sends the prepared transaction to the existing Iroha peer (<<include>> FR0100)
    4. The existing Iroha peer initiates connection with the new Iroha peer
    5. The new Iroha peer synchronizes the block-storage with existing Iroha peers
    6. The new Iroha peer start functioning as fully functional peer in the current Iroha network
    PostconditionsPost-conditions
    • The new peer is added into the network
    Alternative flowN/A
    Exception flow
    • On step 5, if the synchronization cannot be finished for some reason, the new Iroha peer cannot join the network; use case stops


    Use case title
    [FR0003] Removing peer from the Iroha network
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The administrator has access to the account with permission of removing peers form the network

    Use case flow

    1. The administrator prepares the instruction to remove the peer from the Iroha network
    2. The administrator sends the transaction with the prepared instruction to the Iroha peer
    3. The Iroha peer confirms the execution of the instruction
    PostconditionsPost-conditions
    • The target peer is removed from the current Iroha network and all processes in consensus continues without it
    Alternative flowN/A
    Exception flowN/A


    Use case
    Use case title
    [FR0004] Configuring initial state of the Iroha network
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The Iroha network is just started

    Use case flow

    Postconditions

    Status

    Alternative flow

    colour

    Exception flow

    Yellow

    Status

    title

    [FR0005] Changing configuration of working Iroha network

    TBD
    - questionable functionality

    Post-conditions
    • The Iroha network is configured according to the requirements
    Alternative flowN/A
    Exception flowN/A


    Use case title
    [FR0005] Changing configuration of working Iroha network
    Status

    Status
    colourYellow
    titlediscuss

    Source
    • Sora 2 project
    Preconditions
    • The administrator has access to account with permissions to change the network configuration by sending the corresponding instruction

    Use case flow

    1. The administrator prepares the data for the instruction for changing the overall Iroha network configuration. Configuration may include
      1. Default time to life (TTL) for pending multi-signature transaction
      2. Maximum transactions in the single block
      3. Maximum time of block filling by transactions (in milliseconds)
      4. Status
        colourYellow
        titleTBD
    2. The administrator sends the transaction with prepared instruction to the Iroha peer (<<include>> FR0100)
    3. The Iroha peer return the results of instruction execution to the administrator.
    PostconditionsPost-conditions
    • The network configuration is changed correspondingly
    Alternative flowN/A
    Exception flow

    N/A


    Use case title
    [FR0006] Changing configuration of the particular peer
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The administrator has access to the maintenance endpoint of the target Iroha peer

    Use case flow

    1. The administrator connects to the maintenance endpoint of the target Iroha peer
    2. The administrator performs requests to change required parameters of the target Iroha peer
    3. The Iroha peer returns result of change operation to the administrator
    PostconditionsPost-conditions
    • The configuration of the target Iroha peer was changed
    Alternative flowN/A
    Exception flow
    • On step 3, if the value of changed configuration parameter is out of the limit, the Iroha peer will return "wrong parameter value" error status to the administrator; use case flow stops.

    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

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has an account in the Iroha network
    • The user has prepared the transaction for sending; transactions can consist of several instructions
    • The user has permissions to execute all instruction included in the transaction
    • The Iroha network is working in normal condition

    Use case flow

    1. The user sends the transaction to the Iroha peer through the API
    2. The Iroha peer receives the transaction and validates its contents
    3. The Iroha peer checks that the user's account have enough permissions to run all instructions included in the transaction
    4. The Iroha peer executes the transaction by applying it to the current block
    5. The Iroha peer returns the result of the operation to the user
    PostconditionsPost-conditions
    • The transaction is successfully executed and applied to the network state
    Alternative flow
    • On step 4, if the current user's account is multi-signature, the result of the transaction will transaction will be applied to the block-store only when the number of signatures will reach the current quorum value value. In other cases, the Iroha peer will return "pending" status as a response on step 5.
    Exception flow
    • On step 2, one of the instructions has invalid structure, the Iroha peer returns an error message with description to the user and stops the flow
    • On step 3, if the user's account does not have required permissions to execute one of the instructions, the Iroha peer returns information about that error and stops the flow
    • On step 3, in case of a multi-signature transaction, if the instruction signed using signed using the key pair, which was already used for signing that instruction, the Iroha peer will return "already signed" error status and stop the flow


    Use case title
    [FR0101] Creation of the account in the Iroha network
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has permission to create accounts

    Use case flow

    1. The user prepares information about the account that should be created, which includes name, domain, the public key and permissions list
    2. The user prepares instruction to send to the Iroha network according to the prepared information
    3. The user sends the transaction with the instruction to the Iroha peer (<<include>> FR0100)
    4. The Iroha peer returns the result of the instruction execution to the user
    PostconditionsPost-conditions
    • The new account in the Iroha network is created
    Alternative flowN/A
    Exception flow
    • On step 3, if the account with the provided name or public key already exists in the network, the Iroha peer will return "already exists" error status; user case flow will stop.


    Use case title
    [FR0102] Configuring permissions for the account in the Iroha network
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has access to the Iroha account with permissions to change permissions of the target account

    Use case flow

    1. The user prepares information about set of permissions, which should be enabled or disabled for the target account
    2. The user prepares instruction to send to the Iroha network according to the prepared information
    3. The user sends the transaction with the instruction to the Iroha peer (<<include>> FR0100)
    4. The Iroha peer returns the result of the instruction execution to the user
    PostconditionsPost-conditions
    • The permissions of the target account was changed correspondingly
    Alternative flowN/A
    Exception flow
    • On step 4, if the user disables the permission which is not enables on the target account, the Iroha peer return "Permission is not enabled" error status; use case flow stops
    • On step 4, if the user enables the permission which is already enabled on the target account, the Iroha peer return "Permission already enabled" error status; use case flow stops


    Use case title
    [FR0102] Granting permissions for the account in the Iroha network
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has access to his/her account in the Iroha network
    • The user's account has permissions to provide grantable permissions

    Use case flow

    1. The user prepares the instruction to grant one or more permissions to another account
    2. The user sends the transaction with the prepared instruction to the Iroha peer (<<includes>> FR0100)
    3. The Iroha peer returns the result of the instruction to the user
    PostconditionsPost-conditions
    • The permission was granted to another account
    Alternative flowN/A
    Exception flow
    • On step 3, if the user does not have permission to grant permissions to other accounts, the Iroha peer will return "Not permitted" error status; use case flow stops


    Use case title
    [FR0104] Sending complex instruction using ISI DSL
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has permissions to send complex instructions with DSL sequence inside
    • The user has permissions to execute each instruction inside the list of DSL sequence

    Use case flow

    1. The user builds the DSL sequence for the complex instruction
    2. The user prepares the complex instruction to send to the Iroha peer
    3. The user sends the complex instruction to the Iroha peer (<<include>> FR0100)
    4. The Iroha peer returns the results of complex instruction execution to the user
    PostconditionsPost-conditions
    • The complex instruction was executed and applied to the Iroha network
    Alternative flowN/A
    Exception flow
    • On step 4, of there is not enough permissions to execute whole DSL sequence, the Iroha peer will return "not enough permissions" error status; use case flow stops.


    Use case title
    [FR0105] Sending instruction and subscribing to the status of finalization
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has permissions to execute requested instruction

    Use case flow

    1. The user prepares the instruction parameters according to his/her needs
    2. The user sends the transaction with the instruction into instruction into the Iroha peer (<<includes>> FR0100)
    3. The user uses the same connection for obtaining the status of the instruction finalization
    4. The Iroha peer sends updates about the instruction finalization status to the user
    5. The user eventually receives the "successfully finalized" status about the instruction
    PostconditionsPost-conditions
    • The instruction is accepted and finalized in the block-storage
    • The user did not spend additional resources for redundant network connections and requests
    Alternative flow
    • At step 5, if there is some problem with instruction or Iroha network the "successfully finalized" may never be obtained; in that case, the behavior of client depends on the project business rules and particular requirements.
    Exception flow
    • At step 4 if the instruction cannot pass the validation, the user would not get the "successfully finalized" status; instead, he/she will get the "invalid instruction" status.
    • At step 4 if the network is in "bad" condition, the user would get the "successfully finalized" status eventually, when the network will return in a "good" state.


    Use case title
    [FR0106] Creation of the multi-signature account in the Iroha network
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user have permission to create new MST accounts

    Use case flow

    1. The user prepares information about new account, including list of signatories and quorum of signatures
    2. The user creates new account in the Iroha network (<<include>> FR0101)
    3. The user receives result of new account creation from the Iroha peer
    PostconditionsPost-conditions
    • The new MST account with defined list of signatories and quorum is created
    Alternative flowN/A
    Exception flow
    • On step 3, if amount of signatories in the list is lower, than quorum, the Iroha peer returns "Not enough signatories" error; use case flow stops


    Use case title
    [FR0107] Changing quorum for the multi-signature account
    Status

    Status
    colourYellow
    titlediscuss

    Source
    • Sora 2 project
    Preconditions
    • The user have access to the account with permissions to control the target MST account

    Use case flow

    1. The user prepares the instruction with needed parameters for changing the quorum value
    2. The user sends the transaction to the Iroha peer (<<include>> FR0100)
    3. The Iroha peer returns the results of instruction execution
    PostconditionsPost-conditions
    • The quorum for the target MST account was changed
    Alternative flowN/A
    Exception flow
    • If the new quorum is higher than amount of signatories, the Iroha peer will return "Not enough signatories" error message; use case flow stops.


    Use case title
    [FR0108] Changing list of signatories for the multi-signature account
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has permissions to change the list of signatories to the required account
    • The user has key pair for adding/deleting a signatory to/from the selected account

    Use case flow

    1. The user prepares the instruction of adding/deleting signatories for sending
    2. The user sends the transaction with the instruction to instruction to the Iroha peer (<<include>> FR0100)
    3. The user receives the response from the Iroha peer
    PostconditionsPost-conditions
    • List of signatories for the selected account was changed correspondingly
    Alternative flowN/A
    Exception flow
    • On step 2, if the signatory with the current key pair exists in the list of signatories in the target account, the Iroha peer will return "already added" error status; use case flow stops.


    Use case title
    [FR0109] Signing multi-signature transaction
    Status

    Status
    colourYellow
    titlediscuss

    Source
    1. Iroha 2 whitepaper
    2. Internal project by by Iurii Vinogradov
    Preconditions
    • There is a multi-signature account in the Iroha network
    • The user has access to the one or many key pairs for the multi-signature account
    • The current amount of signatures to the multi-signature transaction is lower than a current quorum value

    Use case flow

    1. The user obtains the current list of pending transactions (<<include>> FR0203<<include>> FR0203)
    2. The user finds the required transaction that can be signed by his/her signatures
    3. The user signs required transaction using the available key pair by calling the corresponding method from CLI or client SDK
    4. The user sends signed transaction to the Iroha peer (<<include>> FR0100)
    PostconditionsPost-conditions
    • Amount of signatures in the signed instruction increased by 1 signature
    • Signed instruction disappears from the list of pending instructions for the current user's account
    Alternative flow
    • On step 2 the user can select more than one transactions, all of them can be sent on step 4 as as a separate requests
    • The user can skip steps 1 and 2 if he/she already has information about the pending transaction, which was provided by any external integration. Hence, the user need to have possibility to start the use case directly from the step 3 by sending signed transaction without prior queries. (by by Yuriy Vinogradov)
    • On step 3 the user can sign the transaction by more than one signature, and all of them can be sent as a single request per single transaction on step 4. In bridge implementation scenario is: 1. Selected bridge get all bridge instances signatures from the block and calls an Iroha2 ISI with the transfer information, attaching all bridge nodes signatures. It can be implemented as in Iroha1 by sending multple multiple ISI calls in one transaction or batch, or it can be implemented as One ISI call with multiple signatures.   Iurii Vinogradov
    Exception flow
    • On step 1, in case of the empty list of pending transactions, the Iroha peer will return corresponding status and the use case flow stops
    • On step 3, if the user uses key pair, which was already used for signing the transaction, the CLI/SDK will return corresponding error status; use case flow stops if there are no more available key pairs.  
      Status
      colourYellow
      titleTBD
        (define, will it be available to do on the client-side?)


    Use case title
    [FR0110] Changing the conditions for the multi-signature account
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has permissions to change the conditions for the target multi-signature account

    Use case flow

    1. The user requests the list of currently configured conditions for the target multi-signature account
    2. The user prepared the instruction with the list of conditions to be added/removed
    3. The user sends the transaction with the instruction to instruction to the Iroha peer (<<include>> FR0100)
    4. The Iroha peer sends the response to the user
    PostconditionsPost-conditions
    • The list of conditions for the target multi-signature account was changed correspondingly
    Alternative flowN/A
    Exception flowN/A


    Use case title
    [FR0111] Assigning weights to the signatories of the multi-signature account
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has permissions to change the conditions (or some other, to discuss) for the target multi-signature account

    Use case flow

    1. The user prepared the instruction with the map of public keys and weight correspondence weight correspondence (e.g. key1 → key1 → 50, i.e. key2 → 25, key3 → 25)
      and the target quorum (e.g. 50 so that it is needed either to sign upcoming transactions of the user with either key1 or both key2 and key3)
    2. The user sends the transaction with the instruction to instruction to the Iroha peer (<<include>> FR0100)
    3. The Iroha peer sends the response to the user
    PostconditionsPost-conditions
    • The list of signatories weights and target quorum for the target multi-signature account was changed correspondingly
    Alternative flowN/A
    Exception flowN/A


    Use case title
    [FR0112] Associating and changing arbitrary data payload with the account
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has access to account with permissions to change data payload related to the target account

    Use case flow

    1. The user prepares the key and value of the data payload for forming the corresponding instruction
    2. The user sends the transaction with prepared instruction to the Iroha peer (<<include>> FR0100)
    3. The Iroha peer returns results of instruction to the user
    PostconditionsPost-conditions
    • The data payload associated with the target account was changed correspondingly
    Alternative flow
    • On step 2, if there was no such key associated with the target account, the key will be created 
    • On step 2, if some value is already associated with the provided key, the value will be overwritten
    Exception flow
    • 1, the user can define the previous value of the selected key, so the Iroha peer will compare that value with the current value saved in the block storage on step 2. If values will be different, the Iroha peer will return error status on step 3.
    • On step 2, if there was no such key associated with the target account, the key will be created
    • On step 2, if some value is already associated with the provided key, the value will be overwritten
    Exception flow
    • On step 2, if the size of payload data exceeds limit, the Iroha peer will return the "Too large data" error message; use case flow stops.


    Use case title
    [FR0113] Sending instruction with the payload
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has access to account with permissions to perform required instruction

    Use case flow

    1. The user prepares the instruction for the required operation and attached the payload to the instruction
    2. The user sends the transaction with prepared instruction to the Iroha peer (<<include>> FR0100)
    3. The Iroha peer returns results of instruction execution to the user
    PostconditionsPost-conditions
    • The instruction with attached payload successfully executed and payload saved in the block storage
    Alternative flow

    N/A

    Exception flow
    • On step 2, if the size of payload data exceeds limit, the Iroha peer will return the "Too large data" there should be an option to verify the payload before applying the instruction ("compare and set" operation); in case if the comparison fails, the instruction should not be applied.
    Exception flow
    • On step 2, if the size of payload data exceeds limit, the Iroha peer will return the "Too large data" error message; use case flow stops.

    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


    [FR0201] Acquiring the information about the selected account
    Use case title
    [
    FR0200] Acquiring data from the Iroha network by query
    FR0114] Sending non-fungible assets
    Status

    Status
    colourYellow
    titlediscuss
    - may be postponed

    Source
    • Iroha 2 whitepaper
    • Generic functionality of Iroha
    • Bakong project
    Preconditions
    • User The sender has access to the account with permissions, which allows to get results of target queryin the Iroha network
    • There is at least one non-fungible asset type in the Iroha network
    • There are at least one token of non-fungible token type on the sender account

    Use case flow

    Use case title
    1. The
    user sends the
    1. sender requests list of currently available non-fungible assets on the personal account by sending query to the Iroha
    peer through the API
  • The Iroha peer receives the query and validates its contents
  • The Iroha peer checks that the user's account have enough permissions to get all data requested in query
  • The Iroha peer collects information requested in query from the current WSV
  • The Iroha peer creates Merkle tree for the obtained data 
    Status
    colourYellow
    titleTBD
  • The Iroha peer returns the result of the operation to the user
  • Postconditions
    • User receives the response with the requested data
    Alternative flowN/A
    Exception flow
    • On step 2, if the query was formed not correctly (for example, because of problems with the client library) the Iroha peer returns error with result of validation, use case execution stops.
    • On step 3, if the user's account does not have enough permissions, the Iroha peer returns error with corresponding status, use case execution stops.
    1. network (<<include>> FR02016)
    2. The sender prepares the information about non-fungible assets which should be sent
      1. Information must include IDs of assets which need to be sent
    3. The sender sends the transaction with "send" instruction to the Iroha network (<<include>> FR0100)
    4. The Iroha network returns results of the transaction to the sender
    Post-conditions
    • The sender sent non-fungible token(s) to the recipient
    Alternative flow
    • On step 1, the user can configure filtering, so the Iroha peer will return the list of all assets which are correspond to the filters.
    Exception flowN/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


    [FR0202] Acquiring of the current permissions for
    Use case title
    [FR0200] Acquiring data from the Iroha network by query
    Status

    Status
    colourYellow
    titlediscuss

    Source
    • Iroha 2 white paperwhitepaper
    • Generic functionality of Iroha
    Preconditions
    • The user User has access to the account with permissions of getting information about the target account, which allows to get results of target query

    Use case flow

    Use case title
    1. The user
    prepares query for requesting information about the target account
  • The user sends the query to the Iroha peer (<<include>> FR0200)
  • The user receives the request with the list of parameters of the target account
    1. It should include: account name, domain, permissions, quorum, list of signatories, associated key-value dictionary with payload
  • Postconditions
    • The user received the information about the selected account
    Alternative flowN/A
    Exception flowN/A
    1. sends the query to the Iroha peer through the API
    2. The Iroha peer receives the query and validates its contents
    3. The Iroha peer checks that the user's account have enough permissions to get all data requested in query
    4. The Iroha peer collects information requested in query from the current WSV
    5. The Iroha peer creates Merkle tree for the obtained data
      Status
      colourYellow
      titleTBD
    6. The Iroha peer returns the result of the operation to the user
    Post-conditions
    • User receives the response with the requested data
    Alternative flowN/A
    Exception flow
    • On step 2, if the query was formed not correctly (for example, because of problems with the client library) the Iroha peer returns error with result of validation, use case execution stops.
    • On step 3, if the user's account does not have enough permissions, the Iroha peer returns error with corresponding status, use case execution stops.


    Use case title
    [FR0201] Acquiring the information about the selected account
    Status

    Status
    colourYellow
    titlediscuss

    Source
    Preconditions
    • The user has access to the account with permissions of checking list of permissions of getting information about the target account

    Use case flow

    1. The user prepares query for requesting a list of permissions for information about the target account
    2. The user sends the query to the Iroha peer (<<include>> FR0200)
    3. The user receives the request the request with the list of parameters of permissions for the target account
        Postconditions
          1. It should include: account name, domain, permissions, quorum, list of signatories, associated key-value dictionary with payload
      Post-conditions
      • The user received the list of permissions for the target information about the selected account
      Alternative flowN/A
      Exception flowN/A


      Use case title
      [
      FR0203
      FR0202] Acquiring
      a list of pending multi-signature transactions
      of the current permissions for the selected account
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The user has permissions access to request the account with permissions of checking list of pending transactionsof permissions of the target account

      Use case flow

      1. The user prepares query for requesting
      the
      1. a list of permissions for the
      pending transaction
      1. target account
      2. The user
      can request the list of all pending transaction in the system (if there are according permissions enabled for the account).
    4. The user can request the list of pending transactions created by the current account.
    5. The user can request the list of pending transactions from other accounts which requires the user's key pair to be signed.
    6. The user sends the query to the Iroha peer (<<include>> FR0200)
    7. The user receives the list of currently pending multi-signature transaction  
      1. sends the query to the Iroha peer (<<include>> FR0200)
      2. The user receives the request with the list of permissions for the target account
      Post-conditions
      • The user received the list of permissions for the target account
      Alternative flowN/A
      Exception flowN/A


       (should the Iroha expose all pending transactions, or we need to add the account ID / public key to filter the request?)
      Use case title
      [FR0203] Acquiring a list of pending multi-signature transactions
      Status

      Status
      colourYellow
      title

      TBD
      Postconditions
      • The user has the list of currently pending instructions according to provided parameters
      Alternative flow
      • On step 1, the user can request all pending transactions
      • On step 1, the user can request pending transactions, which waits his/her signature only (by account ID or by providing public key from the target key pair)
      Exception flow
      • On step 3, if there are no currently pending transactions, the Iroha peer will return "empty response" status
      Use case title
      [FR0204] Acquiring a list of current conditions for a multi-signature account
      Status

      discuss

      Source
      • Sora 2 project
      Preconditions
      • The user has permissions to request the list of pending transactions

      Use case flow

      Preconditions
      1. The user prepares query for requesting the list of the pending transaction
        1. The user can request the list of all pending transaction in the system (if there are according permissions enabled for the account).
        2. The user can request the list of pending transactions created by the current account.
        3. The user can request the list of pending transactions from other accounts which requires the user's key pair to be signed.
      2. The user sends the query to the Iroha peer (<<include>> FR0200)
      3. The user receives the list of currently pending multi-signature transaction
        Status
        colourYellow
        title
      discussSource
      1. TBD
        (should the Iroha expose all pending transactions, or we need to add the account ID / public key to filter the request?)
      Post-conditions
      • The user has permissions to request a the list of conditions to the target multi-signature account

      Use case flow

      1. The user prepares query for requesting a list of currently configured conditions of signing for the target multi-signature account
      2. The user sends the query to the Iroha peer (<<include>> FR0200)
      3. The user receives the list of currently configured conditions of signing for the target multi-signature account
      Postconditions
      • The user received the list of conditions for the target account
      Alternative flowN/A
      • currently pending instructions according to provided parameters
      Alternative flow
      • On step 1, the user can request all pending transactions
      • On step 1, the user can request pending transactions, which waits his/her signature only (by account ID or by providing public key from the target key pair)
      Exception flow
      • On step 3, if there are no currently configured conditionspending transactions, the Iroha peer will return "empty response" status
      • On step 3, if the account is not multi-signature, the Iroha peer will return "not applicable" status


      Use case title
      [FR0205] Acquiring a block by its number
      Use case title
      [FR0204] Acquiring a list of current conditions for a multi-signature account
      Status

      Status
      colourYellow
      titlediscuss

      Source
    8. Bogdan Mingela
    9. Internal project (Iurii Vinogradov)
      • Bakong project
      • Sora 2 project
      Preconditions
      • The user has permissions to request the block by its numbera list of conditions to the target multi-signature account

      Use case flow

      1. The user prepares query for requesting
      the i-th block
      1. a list of currently configured conditions of signing for the target multi-signature account
      2. The user sends the query to the Iroha peer (
      <<include>>
      1. <<include>> FR0200)
      2. The user receives
      the block description with all its' transactions etcPostconditions
      1. the list of currently configured conditions of signing for the target multi-signature account
      Post-conditions
      • The user receives the requested block from the blockstorereceived the list of conditions for the target account
      Alternative flowN/A
      Exception flow
      • On step 3, if there are no block specifiedcurrently configured conditions, the Iroha peer will return "empty response" status
      • On step 3, if the account is not multi-signature, the Iroha peer will return "error/no such block" responsenot applicable" status


      Use case title
      [
      FR0206
      FR0205] Acquiring
      blocks subscription 
      a block by its number
      Status

      Status
      colourYellow
      titlediscuss
       (can be extended with a start block number index)

      Source
      Preconditions
      • The user has permissions to request blocks (subscription, can be separate permission or from <<include>> FR0205)the block by its number

      Use case flow

      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
      1. The user prepares query for subscription of blocksrequesting the block with defined number
      2. The user establishes sends the subscription query to the query results with the  Iroha peer (<<include>> FR0208 FR0200)
      3. The user analyses the results of continuously received payload
      Postconditions
      1. receives the block description with all its' transactions, etc.
      Post-conditions
      • The user receives the requested block from the block-store
      Alternative flowN/A
      Exception flowN/A
      • On step 3, if there are no block specified, the Iroha peer will return "error/no such block" response


      Use case title
      [
      FR0207
      FR0206] Acquiring
      pending transactions
      blocks subscription
      Status

      Status
      colourYellow
      titlediscuss
      (can be extended with a start block number index)

      Source
      Sora project (by 

      Bogdan Mingela

      )

      Preconditions
      • The user has permissions to request the list of pending transactions blocks (subscription, can be separate permission or from <<include>> FR0203FR0205)

      Use case flow

      1. The user prepares query for subscription for pending transactionsof blocks
      2. The user established establishes the subscription to the query results with the the Iroha peer (<<include>> FR0208)
      3. The user gets the connection to receive pending transactions within initialized 
      Postconditions
      1. analyses the results of continuously received payload
      Post-conditions
      • The user has got stable pending transactions perception channel and newly arriving pending transactionschannel for continuous block obtaining, which can be used for getting all new blocks on the current peer until the connection will be interrupted
      Alternative flowN/A
      Exception flow

      N/A


      Use case title
      [
      FR0208] Subscribing on the query results
      FR0207] Acquiring pending transactions subscription
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The user has permissions to get results of the target queryrequest the list of pending transactions (subscription, can be separate permission or from <<include>> FR0203)

      Use case flow

      1. The user prepares
      request data for the target query
      1. query for subscription for pending transactions
      2. The user
      establishes permanent connection to
      1. established the subscription with the Iroha peer
      and sends the query
      1. (<<include>> FR0208)
      2. The
      Iroha peer confirms the connection and start sending updates on the query results until the user closes the connection
    10. The user receives the results and performs continuous analysis of the payload
    11. PostconditionsThe user has continuous results of query execution
      1. user gets the connection to receive pending transactions within initialized
      Post-conditions
      • The user has got stable pending transactions perception channel and newly arriving pending transactions
      Alternative flowN/A
      Exception flowOn step 3, if the Iroha peer experiences issues with the network connection to other peers, the flow of results may be unplugged N/A


    12. On step 3, if the user experiences issues with the network connection to the Iroha peer, the flow of results will be interrupted
    13. On step 4, if permissions of current account, which the user uses for establishing subscription, changes and not longer allows to get the data requested by query, the Iroha peer interrupts the subscription; use case flow stops.
    14. Kamil Salakhiev

      Sora project (by Ruslan Rezin , Anton Khvorov, Zilya Yagafarova , Pavel Golovkin
      Use case title
      [FR0208] Subscribing on the query results
      Status

      Status
      colourYellow
      title

      TBD
      Use case title
      [FR0209] Validate result of the query
      Status

      Status
      colourYellow
      titlediscuss

      Source

      discuss

      Source
      Preconditions
      • The user has permissions to get results of the target query

      Use case flow

      1. The user prepares request data for the target query
      2. The user sends the query establishes permanent connection to the Iroha peer (<<include>> FR0200)and sends the query
      3. The Iroha peer returns response containing result of the query as well as the Merkle proof of its validity and relation to the current block-store. confirms the connection and start sending updates on the query results until the user closes the connection
      4. The user receives the response and validates the correctness of the data by comparing hashes in Merkle proof and hashes of obtained data.
      Postconditions
      1. results and performs continuous analysis of the payload
      Post-conditions
      • The user has result continuous results of the query request with merkle proof of its validityquery execution
      Alternative flowN/A
      Exception flow
      • On step 43, 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 the Iroha peer experiences issues with the network connection to other peers, the flow of results may be unplugged
        Status
        colourYellow
        titleTBD
      • On step 3, if the user experiences issues with the network connection to the Iroha peer, the flow of results will be interrupted
      • On step 4, if permissions of current account, which the user uses for establishing subscription, changes and not longer allows to get the data requested by query, the Iroha peer interrupts the subscription; use case flow stops.


      Use case title
      [
      FR0210] Query old Iroha state (e.g., query balance month ago)
      FR0209] Validate result of the query
      Status

      Status
      colourYellow
      titlediscuss

      Source
      PreconditionsPostconditions
      • The user has
      access to account with
      • permissions to get
      requested data at the current moment 
      Status
      colourYellow
      titleTBD
    15. The user has access to account which had permissions to get requested data at the moment in the past, requested by the user
    16. Use case flow

      <<extends>> FR0200, substitutes step 4:

      1. The Iroha peer collects data from the block storage at the moment, requested in the query
      • The user received the requested information about the information in block store on the provided dateresults of the target query

      Use case flow

      1. The user prepares request data for the target query
      2. The user sends the query to the Iroha peer (<<include>> FR0200)
      3. The Iroha peer returns response containing result of the query as well as the Merkle proof of its validity and relation to the current block-store.
      4. The user receives the response and validates the correctness of the data by comparing hashes in Merkle proof and hashes of obtained data.
      Post-conditions
      • The user has result of the query request with Merkle proof of its validity
      Alternative flowN/A
      Exception flow
      • On step 14, if there is no data for the requested query on the required date, the Iroha peer will return error response with corresponding statethe 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.


      Internal project by Yuriy Vinogradov
      Use case title
      [
      FR0211] Querying list of accounts with the predefined filter
      FR0210] Query old Iroha state (e.g., query balance month ago)
      Status

      Status
      colourYellow
      titlediscuss
       - probably optional for MVP, if there will be another way for gathering data for the award calculation for liquidity providers in DEX solution

      Source

      Source
      Preconditions
      • The user has access to account with permissions to
      perform the query
      • get requested data at the current moment
        Status
        colourYellow
        titleTBD
      • The user has
      list of conditions which need to be used for filtering accounts

      Use case flow

      1. The user prepares the query and adds the filtering setup to the query body
      2. The user sends query to the Iroha peer (<<include>> FR0200)
      3. The Iroha peer returns result of the query execution to the user
      Postconditions
      • The user has the list of accounts which satisfies entered filter
      Alternative flowOn step 1, the user can include the query to the DSL sequence as a part of the complex instruction
      • access to account which had permissions to get requested data at the moment in the past, requested by the user

      Use case flow

      <<extends>> FR0200, substitutes step 4:

      1. The Iroha peer collects data from the block storage at the moment, requested in the query
      Post-conditions
      • The user received the requested information about the information in block store on the provided date
      Alternative flowN/A
      Exception flow
      • On step
      3
      • 1, if
      the user does not have enough permissions
      • there is no data for the requested query on the required date, the Iroha peer
      returns "not enough permission" error status; the use case flow stops.
      • will return error response with corresponding state


      Sora 2 project (from Zilya Yagafarova by Vadim Reutskiy)
      Use case title
      [
      FR0212
      FR0211]
      Retrieving the
      Querying list of
      keys of data payload, associated
      accounts with the
      target account
      predefined filter
      Status

      Status
      colourYellow
      titlediscuss

      Source

      - 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
      • The user has access to account with permissions to retrieve data payload related to the target accountpermissions to perform the query
      • The user has list of conditions which need to be used for filtering accounts

      Use case flow

      1. The user prepares the target account identifier for forming the corresponding queryquery and adds the filtering setup to the query body
      2. The user sends the transaction with prepared query to the Iroha peer (<<include>> FR0200)
      3. The Iroha peer returns results result of the query execution to the user, which contains the list of keys, associated with the target account
      Postconditions
      Post-conditions
      • The user acquired list of keys of data payload associated with the target account 
      Alternative flowN/A
      • has the list of accounts which satisfies entered filter
      Alternative flow
      • On step 1, the user can include the query to the DSL sequence as a part of the complex instruction
      Exception flow
      • On step 23, if there is no keys associated with the target accountthe user does not have enough permissions, the Iroha peer will return "No data" status message; returns "not enough permission" error status; the use case flow stops.


      Use case title
      [
      FR0213
      FR0212] Retrieving the
      value
      list of keys of data payload
      by the key
      , associated with the target account
      Status

      Status
      colourYellow
      titlediscuss

      Source
      by 
      Preconditions
      • The user has access to account with permissions to retrieve data payload related to the target account

      Use case flow

      1. The user prepares the target account identifier
      and required key for
      1. for forming the corresponding query
      2. The user sends the transaction with prepared query to the Iroha peer (<<include>> FR0200)
      3. The Iroha peer returns results of query to the user, which contains
      value
      1. the list of
      data payload
      1. keys, associated with the target
      key on target
      1. account
      Postconditions
      Post-conditions
      • The user
      acquired value
      • acquired list of keys of data payload
      ,
      • associated with the target
      key on target
      • account
      Alternative flow

      N/A

      Exception flow
      • On step 2, if there is no
      such
      • keys associated with the target account, the Iroha peer will return "
      Wrong key
      • No data"
      error
      • status message; use case flow stops.


      Use case title
      [
      FR0214] Querying list of transactions with predefined filter
      FR0213] Retrieving the value of data payload by the key, associated with the target account
      Status

      Status
      colourYellow
      titlediscuss

       - probably optional for MVP, if there will be another way for gathering data for the getting list of all transactions
      Source
      and Pavel Golovkin by 
      Preconditions
      • The user has access to account with permissions to retrieve data payload related to
      perform
      • the target
      query
    17. The user has list of conditions which need to be used for filtering transactions (optionally)
      • account

      Use case flow

      1. The user prepares the
      query for getting list of transactions and adds the filtering data to the query body
      1. target account identifier and required key for forming the corresponding query
      2. The user sends the transaction with prepared query to the Iroha peer (<<include>> FR0200)
      3. The Iroha peer returns
      result
      1. results of
      the
      1. query
      execution
      1. to the user
      Postconditions
      1. , which contains value of data payload, associated with target key on target account
      Post-conditions
      • The user
      has the list of transactions which satisfies the predefined filter with pagination
      • acquired value of data payload, associated with target key on target account
      Alternative flow

      N/A

      Exception flow
      • On step
      1, the filtering data can be optional; in that case
      • 2, if there is no such keys associated with the target account, the Iroha peer will return "Wrong key" error message; use case flow stops.


      all transactions without any filtering
    18. On step 1, the user can also include paging-related request into the query, in that case the Iroha peer will return the data correspondingly
    19. The user prepares the query for getting list of incoming transactions and adds the filtering data to get only incoming transactions
      Use case title
      [FR0214] Querying list of
      Exception flow
      • On step 3, if the user does not have enough permissions, the Iroha peer returns "not enough permission" error status; the use case flow stops.
      • On step 3, if the user provided setup of filtering, which results in empty response, the Iroha peer will return "Empty response" status message; use case stops,
      • On step 3, if the user provided incorrect pagination-related request part, the Iroha peer will return "Incorrect pagination request" error message; use case stops.
      Use case title
      [FR0215] Subscription on incoming transactions
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The user has permissions to perform the target query of getting list of incoming transactions
      • The user has list of conditions which need to be used for filtering transactions

      Use case flow

      transactions with predefined filter
      Status

      Status
      colourYellow
      titlediscuss
      - probably optional for MVP, if there will be another way for gathering data for the getting list of all transactions

      Source
      Preconditions
      • The user has permissions to perform the target query
      • The user has list of conditions which need to be used for filtering transactions (optionally)

      Use case flow

      1. The user prepares the query for getting list of transactions and adds the filtering data to the query body
        1. Filtering may filter out incoming or outgoing transactions
        2. Filtering may filter out transactions by receiver and/or sender account ID
        3. Filtering may filter out transactions by time frame
      2. The user sends query to the Iroha peerand subscribes on the results  (<<include>> FR0208 FR0200)
      3. The Iroha peer  continuously returns result of the query execution to the user
      4. The user processes the incoming results of the query
      5. Eventually, the user interrupts the subscription with the Iroha peer, which stops the flow of data about incoming transactions
      Postconditions
      • The user has all incoming transactions during the period when the subscription was active
      Alternative flowPost-conditions
      • The user has the list of transactions which satisfies the predefined filter with pagination
      Alternative flow
      • On step 1, the filtering data can be optional; in that case the Iroha peer will return list of all transactions without any filtering
      • On step 1, the user can configure list of accounts, which should be used as filter for the query
      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
      • also include paging-related request into the query, in that case the Iroha peer will return the data correspondingly
      Exception flow
      • On step 3, if the user does not have enough permissions, the Iroha peer returns "not enough permission" error status; the use case flow stops.
      • On step 3, if the user provided setup of filtering, which results in empty response, the Iroha peer will return "Empty response" status message; use case stops,
      • On step 3, if the user provided incorrect pagination-related request part, the Iroha peer will return "Incorrect pagination request" error message; use case stops.


      Use case title
      [
      FR0300] Setting up a trigger in the Iroha network
      FR0215] Subscription on incoming transactions
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The user has permissions to setting up triggers in the Iroha networkperform the target query of getting list of incoming transactions
      • The user has permissions to execute all instructions and queries which are included into the trigger bodylist of conditions which need to be used for filtering transactions

      Use case flow

      1. The user prepares the
      list of instructions in form of DSL sequenceThe user prepares the instruction for sending trigger body
      1. query for getting list of incoming transactions and adds the filtering data to get only incoming transactions
      2. The user sends query to the Iroha peer
      1. The user can configure trigger to fire in manual mode only, by sending specific instruction to the Iroha peer;
      2. The user can configure trigger to fire when the temporal condition becomes true; condition can be based on the block number or block timestamp;
      3. The user can configure trigger to fire when the data condition becomes true; condition can be based on the data available by permissions to the author user; 
        Status
        colourYellow
        titleTBD
         (potential problem with the performance)
      The user sends the instruction
      1. and subscribes on the results (<<include>> FR0208)
      2. The Iroha peer continuously returns result of the query execution to the user
      3. The user processes the incoming results of the query
      4. Eventually, the user interrupts the subscription with the Iroha peer, which stops the flow of data about incoming transactions
      Post-conditions
      • The user has all incoming transactions during the period when the subscription was active
      Alternative flow
      • On step 1, the user can configure list of accounts, which should be used as filter for the query
      Exception flow

      N/A


      Use case title
      [FR0216] Requesting list of non-fungible assets in account
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The user has permissions to perform the target query of getting list of incoming transactions

      Use case flow

      1. The user prepares the query for getting list of non-fungible assets
      2. The user sends query to the Iroha peer (<<include>>
      FR0100
      1. FR0200)
      2. The Iroha peer
      returns
      1. responses with result of
      trigger setup
      1. the query execution to the user, which
      includes ID of the trigger which can be used to manually fire the trigger in future
    20. The Iroha peer checks the conditions of the triggers periodically; if the condition becomes true, the Iroha peer checks permissions of the author user and executes the trigger body
    21. Postconditions
      • The trigger was configured and ready to fire
      Alternative flowN/A
      Exception flow
    22. 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.
    23. 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. 
      1. contains list of all non-fungible assets with IDs and parameters
      Post-conditions
      • The user has a list with IDs and parameters of all non-fungible assets attached to the account
      Alternative flow
      • On step 1, the user can configure filtering for the request, so the resulting output on step 3 will contain only those assets, which are corresponds to the invariant
      Exception flow

      N/A


      TBD
      Use case title
      [FR0217] Requesting data from the block storage by using special request language
      Status

      Status
      colourYellow
      title

      discuss

      Use case title
      [FR0301] Manually firing the trigger
      Status

      Status
      colourYellow
      titlediscuss

      SourceInternal project by Yuriy VinogradovSource
      Preconditions
      • The trigger was created and configured as "manual" by the FR0300The user has permissions to fire the triggerperform query using special language
      • The user has ID of the target triggerpermissions to all data inside block storage, which he/she wants to request by the query

      Use case flow

      1. The user prepares the instruction to fire the target triggercomplex query by building request on the provided query language
      2. The user sends the instruction prepared query to the Iroha peer (<<include>> FR0100 FR0200)
      3. The Iroha peer returns responses with result of the target trigger execution
      Postconditions
      • All instructions from the trigger body was executed and applied to the block storage
      1. query execution to the user
      Post-conditions
      • The user requests all data according to the query language, which is available to his account according to permissions
      Alternative flowN/A
      Exception flowOn 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.

      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
      [
      FR0302] Removing the trigger
      FR0300] Setting up a trigger in the Iroha network
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The trigger was created by the FR0300user has permissions to setting up triggers in the Iroha network
      • The user has permissions to remove execute all instructions and queries which are included into the trigger
      • The user has ID of the target trigger
      • body

      Use case flow

      Use case title
      [FR0900] Configuration of fees for transfers inside the current Iroha network
      Status
      1. The user prepares the
      instruction to remove the trigger
      1. list of instructions in form of DSL sequence
      2. The user
      sends
      1. prepares the instruction for sending trigger body to the Iroha peer
      (<<include>> FR0100)
    24. The Iroha peer returns results of the instruction to the user
    25. Postconditions
      • The target trigger was removed from the list of active triggers
      Alternative flowN/A
      Exception flow
      • On step 3, if the user does not have enough permissions, the Iroha peer will return "not enough permissions" error status; use case flow stops

      09. High-level use cases

      Info

      ❇️❇️❇️

      In this section all high-level use cases will be described

      Use case flow

    26. The network administrator prepares the business-level description of the fee configuration
    27. The network administrator sets up the fee configuration using the format (or DSL) used in Iroha
    28. The network administrator prepares the instruction to change fee in the Iroha network
    29. The network administrator sends the prepared
        1. The user can configure trigger to fire in manual mode only, by sending specific instruction to the Iroha peer;
        2. The user can configure trigger to fire when the temporal condition becomes true; condition can be based on the block number or block timestamp;
        3. The user can configure trigger to fire when the data condition becomes true; condition can be based on the data available by permissions to the author user;
          Status
          colourYellow
          title
      discuss
      Source
      Preconditions
      • The network administrator have access to the account with permissions to configure fees in the current Iroha network
        1. TBD
          (potential problem with the performance)
        2. The user can configure the trigger to use the state of already existing trigger (if there are enough permissions on the user's account)
      1. The user sends the instruction to the Iroha peer (<<include>> FR0100)
      2. The Iroha peer returns
      results
      1. result of
      the instruction to the user
      PostconditionsThe fee configuration was changes according to the provided data
      1. trigger setup to the user, which includes ID of the trigger which can be used to manually fire the trigger in future
      2. The Iroha peer checks the conditions of the triggers periodically; if the condition becomes true, the Iroha peer checks permissions of the author user and executes the trigger body
      Post-conditions
      • The trigger was configured and ready to fire
      • The user has ID o the created trigger to use it in future manipulations with it
      Alternative flowN/A
      Exception flow
      • On step 2, the user can also explicitly state permissions of the trigger's account, in the aim to control the possibilities of the code which will be executed by firing the trigger.
      • On step
      3
      • 4, if the user does not have
      enough permissions,
      • permissions to set up triggers and/or if there is not enough permissions to each command in the trigger body, the Iroha peer
      will
      • return "not enough permissions" error
      status
      • 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
        colourYellow
        titleTBD


      Use case title
      [
      FR0901] Sending transaction with fees
      FR0301] Manually firing the trigger
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The user has access to the account with permissions to transfer assets to other account

      Use case flow

    30. The user prepares the information about needed transfer of assets
    31. 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)
      1. The response also contains the time frame until the provided information will be relevant.
    32. The user creates the transaction with all required instructions included within the provided time frame
    33. The user sends the prepared
      Preconditions
      • The trigger was created and configured as "manual" by the FR0300
      • The user has permissions to fire the trigger
      • The user has ID of the target trigger

      Use case flow

      1. The user prepares the instruction to fire the target trigger
      2. The user sends the instruction to the Iroha peer (<<include>> FR0100)
      3. The Iroha peer returns results result of the instruction to the user
      Postconditions
      • The transfer instruction was successfully applied, together with all needed instructions for fees deduction.
      Alternative flowOn 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
      1. target trigger execution
      Post-conditions
      • All instructions from the trigger body was executed and applied to the block storage
      Alternative flowN/A
      Exception flow
      • On step 3, if user sends the transaction within the time frame, there is a chance that fees will be changed and the transaction will be rejecteddoes not have permissions to run all instructions in the Trigger, the Iroha peer returns "not enough permissions" status; use case flow stops.


      [FR0903] Inheritance of the account after period of inactivity
      Use case title
      [
      FR0902] Delegation of account control with time limit
      FR0302] Removing the trigger
      Status

      Status
      colourYellow
      titlediscuss
       - could be after MVP

      Source
      Preconditions
      • The trigger was created by the FR0300
      • The user has need to delegate full or partial control over the account to another account(optionally) The user wants to limit the delegation period by timepermissions to remove the trigger
      • The user has ID of the target trigger

      Use case flow

      PostconditionsThe control over the user's account was delegated to the target account
      1. The user prepares the instruction to remove the trigger
      2. The user sends the instruction to the Iroha peer (<<include>> FR0100)
      3. The Iroha peer returns results of the instruction to the user
      Post-conditions
      • The target trigger was removed from the list of active triggers
      Alternative flowN/A
      Exception flowUse case title
      • On step 3, if the user does not have enough permissions, the Iroha peer will return "not enough permissions" error status; use case flow stops

      09. High-level use cases

      Info

      ❇️❇️❇️

      In this section all high-level use cases will be described


      [FR0904] Distribution of fees according to business rules of the project
      Use case title
      [FR0900] Configuration of fees for transfers inside the current Iroha network
      Status

      Status
      colourYellow
      titlediscuss
       - could be after MVP

      Source
      Preconditions
      • The initial user has network administrator have access to the target account in the Iroha network with permissions to configure inheritanceThe descendant user has access to another account fees in the current Iroha network with permissions to accept the inheritance

      Use case flow

      1. The initial user prepares the instruction to configure inheritance rulesThe initial user sends the transaction with the network administrator prepares the business-level description of the fee configuration
      2. The network administrator sets up the fee configuration using the format (or DSL) used in Iroha
      3. The network administrator prepares the instruction to change fee in the Iroha network
      4. The network administrator sends the prepared instruction to the Iroha peer (<<include>> FR0100)
      5. The Iroha peer responds with the result returns results of the instruction to the initial userEventually
      Post-conditions
      • The fee configuration was changes according to the provided data
      Alternative flowN/A
      Exception flowUse case title
      • On step 3, if the
      account of the initial user has no activity during the configured time period, the Iroha peer adds the key pair of the account of the descendant user to the list of signatories of the target account.
    34. The descendant user receives rights to control the target account with its own key pair
    35. Postconditions
      • The descendant user receives the control over the target account
      Alternative flow
      • On step 4, if the initial user perform any operation (instruction or query) the iroha peers resets the inactivity timer.
      • On step 4, if the inheritance rules was configured to make several user as descendants, the Iroha peer will add all of these key pairs to the list of signatories for the target account.
      • Status
        colourYellow
        titleTBD
         (what we should do if the account has more than one key pair attached?)
      Exception flow

      N/A

      • user does not have enough permissions, the Iroha peer will return "not enough permissions" error status; use case flow stops


      Use case title
      [FR0901] Sending transaction with fees
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The user has access to the account with permissions to transfer assets to other account

      Use case flow

      1. The user prepares the information about needed transfer of assets
      2. 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)
        1. The response also contains the time frame until the provided information will be relevant.
      3. The user creates the transaction with all required instructions included within the provided time frame
      4. The user sends the prepared instruction to the Iroha peer (<<include>> FR0100)
      5. The Iroha peer returns results of the instruction to the user
      Post-conditions
      • The transfer instruction was successfully applied, together with all needed instructions for fees deduction.
      Alternative flow
      • 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
      Exception flow
      • On step 3, if user sends the transaction within the time frame, there is a chance that fees will be changed and the transaction will be rejected; use case flow stops.


      Use case title
      [FR0902] Delegation of account control with time limit
      Status

      Status
      colourYellow
      titlediscuss
        - could be after MVP

      Source
      Preconditions
      • The external system user has access to need to delegate full or partial control over the account with permissions to configure feesThe fee distribution business rules are defined by the external systemsanother account
      • (optionally) The user wants to limit the delegation period by time

      Use case flow

      All fees are collected and distributed according to the business rules
      1. The external system configures the fee for the system (<<include>> FR0900)
      2. Different users of the system performs operations, covered by the fee (<<include>> FR0901)
      3. The Iroha network aggregates assets distribution according to the configured business rules by executing the code, added to block storage on step 1.
      4. After predefined interval of time (attached to the block number) the Iroha network applies aggregated transactions to distribute fees
      5. The external system eventually requests information about assets distribution by fee processing during selected period
      Postconditions
      1. target user (which will get delegated rights on the account control) provides the account ID to the initial user
      2. The initial user prepares the data for instruction for delegating control over the account
      3. The initial user sends the transaction with instruction to the Iroha peer (<<include>> FR0100)
      4. The Iroha peer executes the instruction and applies it to the block-store
      5. The Iroha peer returns the response with the result of the instruction execution
      Post-conditions
      • The control over the initial user's account was delegated to the target account
      Alternative flow
      • On step 41, the distribution mechanism can be triggered manually by the external systemOn step 5, the request can be done in keep-alive mode, using FR0208initial user also can configure the time period for which the delegation will be actual. After the end of the period, the Iroha network removes the rights of sending transaction as behalf of initial user's account from the target user's account.
      Exception flowN/A


      Use case title
      [
      FR0905
      FR0903]
      Managing the list of signatories
      Inheritance of the account after period of inactivity
      Status

      Status
      colourYellow
      titlediscuss
        - could be after MVP

      Source
      Preconditions
      • The initial user A has access to the target account A in the Iroha network with permissions to change its own list of signatoriesconfigure inheritance
      • The descendant user B has access to the another account B in the Iroha network with permissions to be added as a signatoryaccept the inheritance

      Use case flow

      The user B has possibility to sign transactions on behalf of the account of user A
      1. The initial user prepares the instruction to configure inheritance rules
      2. The initial user A sends the transaction with the prepared instruction to add account of the user B to the list of signatories of the account A the Iroha peer (<<include>> FR0100)
      3. This step is required to avoid flooding of list of pending transactions for account B in case in many users will add this account as a signatory without confirmation.
      4. The user B requests the list of pending requests to be added as a signatory (<<include>> FR0200)
      5. The user B sends the transaction with confirmation instruction for assigning account B The Iroha peer responds with the result of the instruction to the initial user
      6. Eventually, if the account of the initial user has no activity during the configured time period, the Iroha peer adds the key pair of the account of the descendant user to the list of signatories of account A (<<include>> FR0100)
      7. The Iroha network adds key pair of account B to the list of signatories of account A
      8. The user B receives possibility to sign the transaction on behalf of account A
      Postconditions
      1. the target account.
      2. The descendant user receives rights to control the target account with its own key pair
      Post-conditions
      • The descendant user receives the control over the target account
      Alternative flow
      • On step
      2
      • 4, if the
      user B granted permission to user A to add account B as a signatory, the Iroha network will perform the operation without requesting confirmation from the user B.
      Exception flowOn step 3, if the user B did not confirmed the operation within the timeout (defined in the network configuration), the initial request created on step 1 will be dismissed. Use case flow stops.
      • initial user perform any operation (instruction or query) the Iroha peers resets the inactivity timer.
      • On step 4, if the inheritance rules was configured to make several user as descendants, the Iroha peer will add all of these key pairs to the list of signatories for the target account.
      • Status
        colourYellow
        titleTBD
        (what we should do if the account has more than one key pair attached?)
      Exception flow

      N/A


      [NFR0000] Example quality attribute; ID should be unique
      Use case title
      [
      FR0906] Making decisions by parliament voting
      FR0904] Distribution of fees according to business rules of the project
      Status

      Status
      colourYellow
      titlediscuss
       

      SourceSource
      • Internal project (by Iurii Vinogradov)
      • Sora 2 project – not required in the first version
      Preconditions
    36. There are N user in the system, which accounts are selected to be a member of parliament
    37. All of these accounts are added as a signatory to the system central parliament account
    38. The system central parliament account has quorum which is required for making decisions by majority of parliament members
    39. The initiator of the decision has permissions to make the initial transaction with the proposal
      • project
      Preconditions
      • The external system has access to the account with permissions to configure fees
      • The fee distribution business rules are defined by the external systems

      Use case flow

      Quality attribute name
      1. The initiator of decision creates a transaction with the proposal body
        1. If the decision influences internal mechanics of the Iroha network, it should be represented in form of sequence of instructions, written using DSL
        2. If the decision influences external entities, it should be added as a document to the transaction payload
      2. The initiator of the decision sends the transaction to the network (<<include>> FR0100)
      3. All parliament members can get the list of pending transactions using their key pairs as a filter to get all pending decisions (<<include>> FR0203)
      4. All parliament members makes their decision and sends corresponding transaction to the network
      5. In case if majority of decisions reached, the Iroha network applies decision to the block store
        1. For sequence of instructions, they becomes executed and applied to the block store
        2. For the document, it becomes available as a immutable payload of the network
      Postconditions
      • The decision approved and saved forever in the block storage
      Alternative flow
      • On step 5, if the majority of votes cannot be reached because of too much "contra" votes, the decision becomes rejected.
      • On step 5, if the majority of votes cannot be reached because of timeout of voting, the decision becomes rejected.
      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):

      1. external system configures the business rules of fee and distribution mechanism for the system (<<include>> FR0900)
      2. Different users of the system performs operations, covered by the fee (<<include>> FR0901)
      3. The Iroha network aggregates data about fee distribution by executing the DSL code, added to block storage on step 1.
      4. Regularly, each predefined interval of time the Iroha network applies distribution of fees by executing code, added to block storage on step 1 .
      5. The external system eventually requests information about collected fees and corresponding assets distribution during defined period (<<include>> FR0200)
      Post-conditions
      • All fees are collected and distributed according to the business rules
      • The external system has access to the information about distribution of assets from collected fees
      Alternative flow
      • On step 4, the distribution mechanism can be triggered manually by the external system
      • On step 5, the request can be done in keep-alive mode, using FR0208
      Exception flow

      N/A


      Use case title
      [FR0905] Managing the list of signatories
      Status

      Status
      colourYellow
      titlediscuss

      Source
      • Sora 2 project
      Preconditions
      • The user A has access to the account A in Iroha network with permissions to change its own list of signatories
      • The user B has access to the account B in the Iroha network with permissions to be added as a signatory

      Use case flow

      1. The user A sends the transaction with instruction to add account of the user B to the list of signatories of the account A (<<include>> FR0100)
        1. This step is required to avoid flooding of list of pending transactions for account B in case in many users will add this account as a signatory without confirmation.
      2. The user B requests the list of pending requests to be added as a signatory (<<include>> FR0200)
      3. The user B sends the transaction with confirmation instruction for assigning account B to the list of signatories of account A (<<include>> FR0100)
      4. The Iroha network adds key pair of account B to the list of signatories of account A
      5. The user B receives possibility to sign the transaction on behalf of account A
      Post-conditions
      • The user B has possibility to sign transactions on behalf of the account of user A
      Alternative flow
      • On step 2, if the user B granted permission to user A to add account B as a signatory, the Iroha network will perform the operation without requesting confirmation from the user B.
      Exception flow
      • On step 3, if the user B did not confirmed the operation within the timeout (defined in the network configuration), the initial request created on step 1 will be dismissed. Use case flow stops.


      Use case title
      [FR0906] Making decisions by parliament voting
      Status

      Status
      colourYellow
      titlediscuss

      Source
      • Sora 2 project – not required in the first version
      Preconditions
      • There are N user in the system, which accounts are selected to be a member of parliament
      • All of these accounts are added as a signatory to the system central parliament account
      • The system central parliament account has quorum which is required for making decisions by majority of parliament members
      • The initiator of the decision has permissions to make the initial transaction with the proposal

      Use case flow

      1. The initiator of decision creates a transaction with the proposal body
        1. If the decision influences internal mechanics of the Iroha network, it should be represented in form of sequence of instructions, written using DSL
        2. If the decision influences external entities, it should be added as a document to the transaction payload
      2. The initiator of the decision sends the transaction to the network (<<include>> FR0100)
      3. All parliament members can get the list of pending transactions using their key pairs as a filter to get all pending decisions (<<include>> FR0203)
      4. All parliament members makes their decision and sends corresponding transaction to the network
      5. In case if majority of decisions reached, the Iroha network applies decision to the block store
        1. For sequence of instructions, they becomes executed and applied to the block store
        2. For the document, it becomes available as a immutable payload of the network
      Post-conditions
      • The decision approved and saved forever in the block storage
      Alternative flow
      • On step 5, if the majority of votes cannot be reached because of too much "contra" votes, the decision becomes rejected.
      • On step 5, if the majority of votes cannot be reached because of timeout of voting, the decision becomes rejected.
      Exception flow

      N/A


      Use case title
      [FR0907] Management of non-fungible assets
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Preconditions
      • The user need to manage assets, which has unique characteristics for each entity

      Use case flow

      1. The user receives request to store and manipulate virtual assets with uniques characteristics at each entity
        1. It can be virtual representations of unique real objects, like cars, houses, arts, etc.
        2. It can be pure virtual representation of unique entities which can be summed up into the single class
      2. The user creates the asset type by sending corresponding ISI in the transaction (<<include>> FR 0100) to the Iroha peer
      3. The user configures types of characteristics for the created asset type by sending corresponding ISI in the transaction to the Iroha peer
      4. The user configures permissions for all related entities in the Iroha network so they can manage created type of assets; the user sends corresponding ISI in the transaction to the Iroha peer
      5. The user performs operations with assets of created asset type
        1. Creates new assets
        2. Changes characteristics of each asset
      Post-conditions
      • There is a new type of non-fungible assets in the Iroha with predefined list of unique characteristics
      Alternative flow
      • On step 3, characteristics can be mutable and immutable. Hence, on step 5, if all characteristics are immutable, there is no way to change them after minting new assets.
      Exception flow

      N/A


      Use case title
      [FR0908] Nominating validator by staking assets
      Status

      Status
      colourYellow
      titlediscuss
      - could be after MVP

      Source
      • Sora 2 project
      Preconditions
      • There is a user of the network, which wants to take a validator role by staking needed amount of tokens as a guarantee of the honesty and responsibility. Let's call that user "the validator candidate"
      • The validator candidate has running machine with Iroha node prepared for joining the Iroha network and become validating node.

      Status
      colourYellow
      titleTBD
      , need requirements details from the Sora project Pavel Golovkin

      Use case flow

      1. The validator candidate sends predefined amount of assets to the special account for staking them in wish to become a nominated validator

      TBD, need requirements details from the Sora project Pavel Golovkin

      Post-conditions
      • The validator was nominated and selected successfully; the machine of validator joined as a validation node to the Iroha.
      Alternative flowTBD
      Exception flowTBD


      Use case title
      [FR0909] Slashing of stakes for inappropriate behaviour of validator
      Status

      Status
      colourYellow
      titlediscuss
      - could be after MVP

      Source
      • Sora 2 project
      Preconditions
      • There is a validator in the system which performed staking of assets and was nominated by the voting to take a validator role (see FR0908)
      • Validator's node is connected to the Iroha network and works with not stable results

      Use case flow

      1. The government members in the project get information about the "bad behaviour" of the validator
      2. The government member creates the proposal for slashing of validator's stake in terms of complex instruction written on DSL and sends it to the Iroha network (<<include>> FR0104)
      3. The government members votes for the proposal (<<include FR0906)
      4. In case if proposal gets majority of votes, the Iroha network executes slashing operation applies results to the storage
      Post-conditions
      • The validator's stake was "slashed" in the favour of the overall budget of the "governance" structure
      Alternative flow
      • On step 2, the decision about bad behavior can be made automatically if there is a possibility to operate with meta-parameters of the Iroha network from the DSL. Hence on step 3, the slashing proposal may be generated also automatically.
      Exception flowN/A


      Use case title
      [FR0910] Obtaining a list of trusted peers
      Status

      Status
      colourYellow
      titlediscuss
      - could be after MVP

      Source
      Preconditions
      • There are more than one peer in the current Iroha network
      • The user has access to the account with permission for receiving information about trusted peers

      Use case flow

      1. The user sends the query with request for list of trusted peers to the Iroha peer (<<include>> FR0100)
      2. The Iroha peer returns result of the query to the user
      3. The user can check the validity of the query by the Merkle proof attached to the result
      Post-conditions
      • The user has the list of the peers attached to the network which can be used for further requests.
      Alternative flowN/A
      Exception flowN/A


      Use case title
      [FR0911] Configuring a minimum limit of assets needed to create an account
      Status

      Status
      colourYellow
      titlediscuss

      Source
      • Sora 2 project
      Preconditions
      • There is a working Iroha network in normal conditions
      • There is an administrator who has access to the root account with all required permissions

      Use case flow

      1. The administrator prepares a rule description which will disallow the creation of new account without transferring configurable amount of assets on it at the same time
      2. The administrator sends the rule to the Iroha network via transaction to the Iroha peer (<<include>> FR0100)(
        Status
        colourYellow
        titleTBD
        - we need to define how it will be implemented - by internal configuration or by the free-configurable trigger with conditions)
      3. The Iroha peer returns result of the transaction execution
      Post-conditions
      • For creation of new accounts the Iroha network will require configured amount of tokens transferred to that account simultaneously
      Alternative flow
      • On step 1, the rules for account creation may be different (depending on the implementation approach): list of assets may include more than single asset, other operations may be required for the account to be created.
        Status
        colourYellow
        titleTBD
      Exception flowN/A


      Use case title
      [FR0912] Creation of account with configured minimum amount of tokens
      Status

      Status
      colourYellow
      titlediscuss

      Source
      • Sora 2 project
      Preconditions
      • There is a working Iroha network in normal conditions
      • There is a configured rule for the account creation prerequisites (<<include>> FR0911)
      • There is a user manager which has access to the corresponding account which has permissions to create new users and transfer tokens
      • There is a new user who has a intent to create a new account in the network and has a confirmation of paying

      Use case flow

      1. The users sends the request to the user manager together with the confirmation of making payment for getting minimum amount of tokens which are required by the rule for account creation
        1. For Sora 2, it will be a transfer from one of connected blockchains via the bridge. (Pavel Golovkin  – needs clarification from your side)
      2. The user manager initiates the account creation by preparing the transaction (which will include at least two instructions: account creation and transfer of requested amount of tokens to that account) and sending the transaction to the Iroha peer (<<include>> FR0100)
      3. The Iroha peer get the transaction, validates the amount of tokens required to create the account and returns result of the operation to the user manager.
      4. The user manager returns the status of operation to the user.
      Post-conditions
      • The account for the new user is created, the balance corresponds to the amount of assets in the confirmation provided on step 1.
      Alternative flow
      • On step 1, the way of confirmation may differ from project to project (
        Status
        colourYellow
        titleTBD
        )
      • On step 2, the account creation procedure may run automatically by fired trigger if the amount of required tokens can be minted automatically, too.
      Exception flowN/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

      Status
      colourYellow
      titlediscuss

      Status
      colourGreen
      titledecided

      Status
      colourRed
      titlepostpone

      SourceSource (or list of sources) of the quality characteristic: project name / stakeholder name / document title (e.g., whitepaper) / etc.
      Source of stimulusEntity, which initiates the stimulus, may be one of system users, another software system, etc.
      StimulusCondition, which requires the response from the system
      EnvironmentDefinition 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.
      ArtifactParticular subject of stimulus, may be the whole system, some subset of parts or single part of the system.
      ResponseResult 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
      titleQuality attributes system standard

      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

      Status
      colourYellow
      titlediscuss

      Source
      Source of stimulusClient applications of the Iroha network
      StimulusClient application sends transactions to the Iroha network
      EnvironmentNormal operation of the system
      ArtifactWhole Iroha network
      ResponseThe 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:

      • normal load: 6 transactions per second (TPS)
      • heavy load: 50 TPS
      • peak load: 1000 TPS

      By 武宮誠

      • target throughput: 20.000 TPS (in the aim to beat competitors)


      Quality attribute name
      [NFR0001] Delay of block creation
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Source of stimulusClient applications of the Iroha network
      StimulusClient application sends transactions to the Iroha network
      EnvironmentNormal operation of the system
      ArtifactWhole Iroha network
      ResponseThe Iroha peer accepts the transactions and to the block
      Response measureThe Iroha network should create new block each 2-3 seconds


      Quality attribute name
      [NFR0002] Delay of restarting the peer
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Source of stimulusAdministrator of the host with running Iroha peer
      StimulusAdministrator restarts the Iroha peer (manually or automatically by external script)
      EnvironmentNormal operation of the system; the block storage is not corrupted.
      ArtifactCurrent Iroha peer
      Response

      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
      Response measure

      The Iroha peer successfully restarted, with following metrics:

      • for fastInit mode:
        • restart should take not more than 50 (??) ms per block
          Status
          colourYellow
          titleTBD
      • for strictInit mode:
        • restart should take not more than 200 (??) ms per block
          Status
          colourYellow
          titleTBD


      Quality attribute name
      [NFR0003] Performing as expected on predefined hardware
      Status

      Status
      colourYellow
      titlediscuss

      Source
      • Sora 2 project
      Source of stimulusThe Validator
      StimulusAttempt to run Iroha peer on the validators' machines
      EnvironmentNormal operation of the system; the host machine is satisfying minimal requirements from the Iroha documentation
      ArtifactThe Iroha peer
      ResponseThe Iroha peer start the execution
      Response measureThe 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

      Status
      colourYellow
      titlediscuss

      Status
      colourGreen
      titledecided

      Status
      colourRed
      titlepostpone

      SourceSource (or list of sources) of the quality characteristic: project name / stakeholder name / document title (e.g., whitepaper) / etc.

      SourceSource of stimulusEntity, which initiates the stimulus, may be one of system users, another software system, etc.StimulusCondition, which requires the response from the systemEnvironmentDefinition 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.ArtifactParticular subject of stimulus, may be the whole system, some subset of parts or single part of the system.ResponseResult of reaction of the system to the stimulusResponse measure

      Measurable characteristic of the response, which can be checked for understanding how the system satisfies the requirements

      Info
      titleQuality attributes system standard

      The systematization of quality attributes should follow the approach in standard ISO/IEC 25010:2011

      00. Performance
      Users of the network
      StimulusCreation of personal accounts in the network
      EnvironmentNormal operation of the system
      ArtifactThe Iroha network and block storage
      ResponseThe Iroha network allows to register as much users as needed in the target system; block storage can successfully keep all the relevant data
      Response measureThe Iroha network can successfully handle at least 20 million of users' accounts

      01. Portability

      The Iroha network should process at least 20.000 transactions per second

      For Sora 2 project:

    40. normal load: 6 tps
    41. heavy load: 50 tps
    42. peak load: 1000 tps
      Quality attribute name
      [
      NFR0001] Transaction processing speed
      NFR0100] Easy integration from client side applications
      Status

      Status
      colourYellow
      titlediscuss

      Source
      Source of stimulusClient applications of the Iroha network
      StimulusClient application sends transactions to needs interaction with the Iroha network
      EnvironmentNormal operation Development of the systemclient-side applications
      ArtifactWhole Iroha network
      ResponseThe Iroha peer accepts the transactions and adds them to the blockchain
      Response measureClient-side applications
      ResponseThere are client libraries with efficient SDK available.
      Response measure

      Client libraries available for following programming languages and platforms:

      1. iOS (Swift)
      2. Android (JVM compatible: Java or Kotlin)
      3. Electron desktop (JavaScript or TypeScript)


      Quality attribute name
      [
      NFR0001
      NFR0101]
      Delay of block creation
      Horizontal scalability of the network size
      Status

      Status
      colourYellow
      titlediscuss

      SourceIroha 2 white-paper
      • Sora 2 project
      Source of stimulusClient applications User of the Iroha network with permissions to change list of validating peers
      StimulusClient application sends transactions to the Iroha Sending operation of adding more validating peers to perform horizontal scalability of the network
      EnvironmentNormal operation of the system functioning
      ArtifactWhole Iroha network
      ResponseThe Iroha peer accepts the transactions and to the blocksize of Iroha network was increased by new validating peers, provided in the request
      Response measure

      The size of Iroha network should

      create new block each 2-3 seconds

      be increased at least up to 22 validating peers

      Status
      colourYellow
      titleTBD


      The Iroha peer successfully restarted, with following metrics:

      for fastInit  mode:restart should take not more than 50 (??) ms per block 
      Quality attribute name
      [
      NFR0002] Delay of restarting the peer
      NFR0102] Adaptability for different environments and projects
      Status

      Status
      colourYellow
      titlediscuss

      Source
    43. Iroha 2 white-paper
    44. Bakong project (Zilya Yagafarova)
      • Sora 2 project
      (Pavel Golovkin)
      Source of stimulusAdministrator of the host with running Iroha peer
      StimulusAdministrator restarts the Iroha peer (manually or automatically by external script)
      EnvironmentNormal operation of the system; the block storage is not corrupted.
      ArtifactCurrent Iroha peer
      Response

      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
      Response measureThe operations engineer with permissions to configure the network
      StimulusChanging system configuration parameters
      EnvironmentOn system start
      ArtifactWhole 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:

      • block generation time limit;
      • block transaction count limit;
      • expiration time for pending MST transactions;
      • consensus mechanism parameters;
      • etc.

      Status
      colourYellow
      titleTBD
      - we need to define metrics there


      for strictInit  mode:restart should take not more than 200 (??) ms per block TBD
      Quality attribute name
      [NFR0102] Flexibility of integrated DSL for complex operations and triggers
      Status

      Status
      colourYellow
      title

      TBD
      Status
      colourYellow
      title

      discuss

      Source
      Source of stimulusThe system engineer of the external project
      StimulusNeed to describe the logic of core operations within the Iroha network
      EnvironmentOn design and implementation of the project over Iroha
      ArtifactDSL of the Iroha
      Response

      The DSL allows to describe all required manipulations with the internal entities in the Iroha network

      Response measure

      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
      [
      NFR0003] Performing as expected on predefined hardware
      NFR0103] Reusability of the Iroha interface during integration with external systems
      Status

      Status
      colourYellow
      titlediscuss

      SourceSora 2 project
      Source of stimulusThe Validatorexternal software system
      StimulusAttempt to run Iroha peer on the validator's machine
      EnvironmentNormal operation of the system; the host machine is satisfying minimal requirements from the Iroha documentation
      ArtifactThe Iroha peerPerforming operations with the Iroha network using standardized interfaces
      EnvironmentNormally functioning Iroha network
      ArtifactAPI of the Iroha network
      Response

      The Iroha

      peer start the execution

      network should provide the convenient interface for interaction from the other systems.

      Response measure

      The

      Iroha peer should start working properly, without functional issue and satisfying all non-functional requirements to performance
      01. Portability

      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.


      Client applications Client application needs interaction with
      Quality attribute name
      [
      NFR0100] Easy integration from client side applications
      NFR0103] Configurability of permission
      Status

      Status
      colourYellow
      titlediscuss

      Source
    45. Iroha 2 white-paper
    46. Sora 2 project

      Source
      Source of stimulusThe external client of the Iroha network
      Stimulus

      Changing permissions for some entities in the Iroha network:

      EnvironmentDevelopment of the client-side applications
      ArtifactClient-side applications
      ResponseThere are client libraries with efficient SDK available.
      Response measure

      Client libraries available for following programming languages and platforms:

    47. iOS (Swift)
    48. Android (JVM compatible: Java or Kotlin)
    49. Electron desktop (JavaScript or TypeScript)
      • accounts
      • triggers
      • groups of accounts
      • global permissions
      EnvironmentNormally running Iroha network
      ArtifactPermission of entities in the Iroha network
      Response

      The Iroha provides flexibility in the permissions configuration, so the user may configure it for each mentioned entity

      Response measure

      Status
      colourYellow
      titleTBD
      – define the measure in concrete details

      02. Security

      Quality attribute name
      [
      NFR0101] Horizontal scalability of the network size
      NFR0200] Non-repudiation of data between peer and client
      Status

      Status
      colourYellow
      titlediscuss

      Source
      • Sora 2 project
      Source of stimulusUser Client-side applications of the Iroha network with permissions to change list of validating peers
      StimulusSending operation of adding more validating peers to perform horizontal scalability of the networkClient-side application sends the request to the Iroha peer and gets the response
      EnvironmentNormal functioning system functioning
      ArtifactWhole Iroha networkConnection between client-side application and Iroha peer.
      ResponseThe 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 

      Status
      colourYellow
      titleTBD

      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

      The system configuration should provide possibility to tune up following parameters:

    50. block generation time limit;
    51. block transaction count limit;
    52. expiration time for pending MST transactions;
    53. consensus mechanism parameters;
    54. etc.
      Quality attribute name
      [
      NFR0102
      NFR0300]
      Adaptability
      Convenient documentation for different
      environments and projects
      user types
      Status

      Status
      colourYellow
      titlediscuss

      SourceSora 2 project
      • 武宮誠
      • Generic approach to widely used software solutions
      Source of stimulusThe operations engineer with permissions to configure the network
      StimulusChanging system configuration parameters
      EnvironmentOn system start
      ArtifactWhole Iroha network
      Response

      The system configuration changes according to the request from the user

      Response measure

      Different types of users of the Iroha

      • Executives of commercial projects
      • Software engineers, who works on the commercial software on the top of Iroha
      • Software engineers, who wants to contribute to Iroha development
      • Students and researchers of blockchain solutions
      StimulusNeed to get all related information about the Iroha
      EnvironmentIn process of research and development of digital solutions
      ArtifactDocumentation of the Iroha
      ResponseDocumentation 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] Flexibility of integrated DSL for complex operations and triggers
      NFR0400] Available proofs of efficiency of technical decisions and implementation
      Status

      Status
      colourYellow
      titlediscuss

      SourceSora 2 project
      Source of stimulusThe system engineer of the external projectAnalysts of blockchain solutions
      StimulusNeed to describe the logic of core operations within the Iroha networkEnvironmentOn design and implementation of the project over Request to get excessive information about proofs for efficiency of technical decisions and implementation design
      EnvironmentIn process of analyzing effectiveness and soundness of the Iroha
      ArtifactDSL Documentation of the Iroha
      Response

      The DSL allows to describe all required manipulations with the internal entities in the Iroha network

      Response measure

      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.

      02. Security

      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


      Client-side application can be sure that data received from the Iroha peer is not changed by the man-in-the-middle attack 
      Quality attribute name
      [
      NFR0200
      NFR0401]
      Non-repudiation of data between peer and client
      Safety of the integrated DSL language for triggers
      Status

      Status
      colourYellow
      titlediscuss

      SourceSora 2 project
      Source of stimulusClient-side applications of the Iroha network
      StimulusClient-side application sends the request to the Iroha peer and gets the response
      EnvironmentNormal functioning system
      ArtifactConnection between client-side application and Iroha peer.
      ResponseClient-side application checks the authenticity of the response
      Response measureCode in triggers or smart contracts, defined on the integrated DSL language
      StimulusExecution of the smart contract or firing of the trigger
      EnvironmentRunning Iroha network in normal mode
      ArtifactStability of all peers in the network
      ResponseThe 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:

      • buffer overflow
      • infinite loop
      • uncaught exceptions raising
      • etc.
        Status
        colourYellow
        titleTBD

      Questions

      Below is a list of questions to be addressed as a result of this requirements document:

      QuestionOutcome

      Not Doing