Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 22
Next »
Goals
Background and strategic fit
History of changes
Version |
Date |
Comment |
Current Version
(v. 22)
|
Aug 26, 2020 02:52
|
v. 100
|
Sept 22, 2020 23:39
|
v. 99
|
Sept 22, 2020 23:37
|
v. 98
|
Sept 22, 2020 22:54
|
v. 97
|
Sept 22, 2020 22:51
|
v. 96
|
Sept 19, 2020 06:07
|
v. 95
|
Sept 19, 2020 05:55
|
v. 94
|
Sept 19, 2020 05:30
|
v. 93
|
Sept 19, 2020 05:28
|
v. 92
|
Sept 19, 2020 05:21
|
v. 91
|
Sept 19, 2020 05:20
|
v. 90
|
Sept 19, 2020 03:44
|
v. 89
|
Sept 19, 2020 03:43
|
v. 88
|
Sept 19, 2020 03:35
|
v. 87
|
Sept 19, 2020 03:25
|
v. 86
|
Sept 19, 2020 03:18
|
v. 85
|
Sept 19, 2020 02:45
|
v. 84
|
Sept 19, 2020 02:44
|
v. 83
|
Sept 19, 2020 02:30
|
v. 82
|
Sept 19, 2020 02:19
|
v. 81
|
Sept 19, 2020 02:09
|
v. 80
|
Sept 19, 2020 01:08
|
v. 79
|
Sept 19, 2020 00:50
|
v. 78
|
Sept 16, 2020 04:29
|
v. 77
|
Sept 16, 2020 04:08
|
v. 76
|
Sept 16, 2020 04:06
|
v. 75
|
Sept 16, 2020 03:52
|
v. 74
|
Sept 11, 2020 05:29
|
v. 73
|
Sept 11, 2020 05:22
|
v. 72
|
Sept 11, 2020 02:51
|
v. 71
|
Sept 11, 2020 02:46
|
v. 70
|
Sept 11, 2020 02:28
|
v. 69
|
Sept 11, 2020 01:17
|
v. 68
|
Sept 11, 2020 00:53
|
v. 67
|
Sept 10, 2020 23:50
|
v. 66
|
Sept 10, 2020 23:47
|
v. 65
|
Sept 10, 2020 05:52
|
v. 64
|
Sept 10, 2020 05:30
|
v. 63
|
Sept 10, 2020 05:05
|
v. 62
|
Sept 10, 2020 04:59
|
v. 61
|
Sept 10, 2020 04:57
|
v. 60
|
Sept 10, 2020 01:22
|
v. 59
|
Sept 10, 2020 01:02
|
v. 58
|
Sept 09, 2020 23:46
|
v. 57
|
Sept 08, 2020 23:36
|
v. 56
|
Sept 08, 2020 23:32
|
v. 55
|
Sept 08, 2020 22:36
|
v. 54
|
Sept 08, 2020 05:30
|
v. 53
|
Sept 03, 2020 23:49
|
v. 52
|
Sept 03, 2020 23:48
|
v. 51
|
Sept 03, 2020 23:47
|
v. 50
|
Sept 03, 2020 23:34
|
v. 49
|
Sept 03, 2020 05:26
|
v. 48
|
Sept 03, 2020 04:46
|
v. 47
|
Sept 03, 2020 04:26
|
v. 46
|
Sept 03, 2020 04:00
|
v. 45
|
Sept 03, 2020 03:23
|
v. 44
|
Sept 03, 2020 01:03
|
v. 43
|
Sept 02, 2020 23:32
|
v. 42
|
Sept 02, 2020 23:27
|
v. 41
|
Sept 02, 2020 23:19
|
v. 40
|
Sept 02, 2020 23:16
|
v. 39
|
Sept 02, 2020 23:14
|
v. 38
|
Sept 02, 2020 22:54
|
v. 37
|
Sept 02, 2020 02:03
|
v. 36
|
Sept 02, 2020 01:13
|
v. 35
|
Sept 01, 2020 23:53
|
v. 34
|
Sept 01, 2020 23:31
|
v. 33
|
Sept 01, 2020 23:24
|
v. 32
|
Sept 01, 2020 04:43
|
v. 31
|
Aug 30, 2020 04:41
|
v. 30
|
Aug 30, 2020 04:01
|
v. 29
|
Aug 30, 2020 02:49
|
v. 28
|
Aug 30, 2020 02:45
|
v. 27
|
Aug 30, 2020 02:43
|
v. 26
|
Aug 27, 2020 04:44
|
v. 25
|
Aug 27, 2020 04:25
|
v. 24
|
Aug 27, 2020 00:56
|
v. 23
|
Aug 26, 2020 23:52
|
v. 22
|
Aug 26, 2020 02:52
|
v. 21
|
Aug 26, 2020 02:19
|
v. 20
|
Aug 26, 2020 02:14
|
v. 19
|
Aug 26, 2020 02:02
|
v. 18
|
Aug 26, 2020 02:00
|
v. 17
|
Aug 25, 2020 03:57
|
v. 16
|
Aug 25, 2020 03:46
|
v. 15
|
Aug 25, 2020 03:45
|
v. 14
|
Aug 25, 2020 03:45
|
v. 13
|
Aug 25, 2020 03:41
|
v. 12
|
Aug 25, 2020 03:41
|
v. 11
|
Aug 25, 2020 01:01
|
v. 10
|
Aug 25, 2020 00:42
|
v. 9
|
Aug 24, 2020 23:53
|
v. 8
|
Aug 24, 2020 23:30
|
v. 7
|
Aug 24, 2020 23:06
|
v. 6
|
Aug 24, 2020 23:04
|
v. 5
|
Aug 24, 2020 05:26
|
v. 4
|
Aug 24, 2020 05:24
|
v. 3
|
Aug 24, 2020 05:22
|
v. 2
|
Aug 24, 2020 01:05
|
v. 1
|
Aug 24, 2020 00:00
|
Assumptions
Requirements
Functional requirements
For the functional requirements, we should follow the default use case template by example:
Use case title | [FR0000] Example use-case; ID should be unique |
---|
Status | |
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 | - The enumerated list of actions, which describes the interaction between actors step by step
- Each step should involve a single actor as an object of the action
- Each step can involve one or more actors as a subject of the action
- Each use case can involve other use cases as dependencies by include or extend relationships
|
Postconditions | - 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
|
Iroha network operations
Use case title | [FR0001] Starting the Iroha network |
---|
Status | |
Preconditions | - The administrator has configured environment for running Iroha executables
- 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 validates the genesis block configuration
- The Iroha peer starts the Iroha network according to the configuration in the genesis block
- The Iroha peer provides "successfully started" report to the administrator
|
Postconditions | - The Iroha network is running
- The administrator has access to the root account of the network
|
Alternative flow |
|
Exception flow | - 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 | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0003] Removing peer from the Iroha network |
---|
Status | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0004] Configuring initial state of the Iroha network |
---|
Status | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Making changes in Iroha network data by Iroha special instructions
Use case title | [FR0100] Sending the transaction to the Iroha network |
---|
Status | |
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 | - The user sends the transaction to the Iroha peer through the API
- The Iroha peer receives the transaction and validates its contents
- The Iroha peer checks that the user's account have enough permissions to run all instructions included in the transaction
- The Iroha peer executes the transaction by applying it to the current block
- The Iroha peer returns the result of the operation to the user
|
Postconditions | - 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 be applied to the block-store only when the number of signatures will reach the current quorum 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 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 user in the Iroha network |
---|
Status | |
Preconditions | - The user has permission to create other users
|
Use case flow | - The user prepares information about the account that should be created, which includes name, domain, the public key and permissions list
- The user prepares instruction to send to the Iroha network according to the prepared information
- The user sends the transaction with the instruction to the Iroha peer (<<include>> FR0100)
- Tha Iroha peer returns the result of the instruction execution to the user
|
Postconditions | - The new account in the Iroha network is created
|
Alternative flow | N/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 | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0102] Granting permissions for the account in the Iroha network |
---|
Status | |
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 | - The user prepares the instruction to grant one or more permissions to another account
- The user sends the transaction with the prepared instruction to the Iroha peer (<<includes>> FR0100)
- The Iroha peer returns the result of the instruction to the user
|
Postconditions | - The permission was granted to another account
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0104] Sending complex instruction using ISI DSL |
---|
Status | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0105] Sending instruction and subscribing to the status of finalization |
---|
Status | |
Preconditions | - The user has permissions to execute requested instruction
|
Use case flow | - The user prepares the instruction parameters according to his/her needs
- The user sends the transaction with the instruction into the Iroha peer (<<includes>> FR0100)
- The user uses the same connection for obtaining the status of the instruction finalization
- The Iroha peer sends updates about the instruction finalization status to the user
- The user receives the "successfully finalized" status about the instruction
|
Postconditions | - 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 |
|
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 | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0107] Changing quorum for the multi-signature account |
---|
Status | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0108] Changing list of signatories for the multi-signature account |
---|
Status | |
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 | - The user prepares the instruction of adding/deleting signatories for sending
- The user sends the transaction with the instruction to the Iroha peer (<<include>> FR0100)
- The user receives the response from the Iroha peer
|
Postconditions | - List of signatories for the selected account was changed correspondingly
|
Alternative flow | N/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 | |
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 | - The user obtains the current list of pending transactions (<<include>> FR0203)
- The user finds the required transaction that can be signed by his/her signatures
- The user signs required transaction using the available key pair by calling the corresponding method from CLI or client SDK
- The user sends signed transaction to the Iroha peer (<<include>> FR0100)
|
Postconditions | - 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 a separate requests
- On step 2 ideology of Iroha1 when creation of same transaction which already exists will result in addition of signature to this transation in pending state. This reduces need to perform queries and search for transactions needed to be signed. For bridge functionality that is a prefered flow, because all bridge instances will already know about how to form a transaction from the bridge consensus. And only malicious bridge peers will send wrongly formed transaction what is expected. Iurii 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 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. TBD (define, will it be available to do on the client-side?)
|
Use case title | [FR0110] Changing the conditions for the multi-signature account |
---|
Status | |
Preconditions | - The user has permissions to change the conditions for the target multi-signature account
|
Use case flow | - The user requests the list of currently configured conditions for the target multi-signature account
- The user prepared the instruction with the list of conditions to be added/removed
- The user sends the transaction with the instruction to the Iroha peer (<<include>> FR0100)
- The Iroha peer sends the response to the user
|
Postconditions | - The list of conditions for the target multi-signature account was changed correspondingly
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0111] Assigning weights to the signatories of the multi-signature account |
---|
Status | |
Preconditions | - The user has permissions to change the conditions (or some other, to discuss) for the target multi-signature account
|
Use case flow | - The user prepared the instruction with the map of public keys and weight correspondence (e.g. 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) - The user sends the transaction with the instruction to the Iroha peer (<<include>> FR0100)
- The Iroha peer sends the response to the user
|
Postconditions | - The list of signatories weights and target quorum for the target multi-signature account was changed correspondingly
|
Alternative flow | N/A |
Exception flow | N/A |
Acquiring data from the Iroha network by queries
Use case title | [FR0200] Acquiring data from the Iroha network by query |
---|
Status | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | |
---|
Status | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0202] Acquiring of the current permissions for the selected account |
---|
Status | |
Preconditions |
|
Use case flow |
|
Postconditions |
|
Alternative flow |
|
Exception flow |
|
Use case title | [FR0203] Acquiring a list of pending multi-signature instructions |
---|
Status | |
Preconditions | - The user has permissions to request the list of pending transactions
|
Use case flow | - The user prepares query for requesting the list of the pending transaction
- The user sends the query to the Iroha peer (<<include>> FR0200)
- The user receives the list of currently pending multi-signature transaction TBD (should the Iroha expose all pending transactions, or we need to add the account ID / public key to filter the request?)
|
Postconditions | - The user has the list of currently pending instructions
|
Alternative flow | N/A |
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 | |
Preconditions | - The user has permissions to request a list of conditions to the target multi-signature account
|
Use case flow | - The user prepares query for requesting a list of currently configured conditions of signing for the target multi-signature account
- The user sends the query to the Iroha peer (<<include>> FR0200)
- 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 flow | N/A |
Exception flow | - On step 3, if there are no currently 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 "not applicable" status
|
Use case title | [FR0205] Acquiring a block by its number |
---|
Status | |
Preconditions | - The user has permissions to request the block by its number
|
Use case flow | - The user prepares query for requesting the i-th block
- The user sends the query to the Iroha peer (<<include>> FR0200)
- The user receives the block description with all its' transactions etc
|
Postconditions | - The user has the i-th block
|
Alternative flow | N/A |
Exception flow | - On step 3, if there are no block specified, the Iroha peer will return "error/no such block" response
|
Use case title | [FR0206] Acquiring blocks subscription (can be extended with a start block number index) |
---|
Status | |
Preconditions | - The user has permissions to request blocks (subscription, can be separate permission or from <<include>> FR0205)
|
Use case flow | - The user prepares query for subscription for blocks
- The user sends the query to the Iroha peer (<<include>> FR0200)
- The user gets the connection to receive blocks within initialized
|
Postconditions | - The user has got stable blocks perception channel and newly arriving blocks
|
Alternative flow | N/A |
Exception flow | N/A |
Use case title | [FR0207] Acquiring pending transactions subscription |
---|
Status | |
Preconditions | - The user has permissions to request the list of pending transactions (subscription, can be separate permission or from <<include>> FR0203)
|
Use case flow | - The user prepares query for subscription for pending transactions
- The user sends the query to the Iroha peer (<<include>> FR0200)
- The user gets the connection to receive pending transactions within initialized
|
Postconditions | - The user has got stable pending transactions perception channel and newly arriving pending transactions
|
Alternative flow | N/A |
Exception flow | N/A |
Use case title | [FR0208] Subscribing on the query results |
---|
Status | |
Preconditions | - The user has permissions to get results of the target query
|
Use case flow | - The user prepares request data for the target query
- The user establishes permanent connection to the Iroha peer and provides the query request
- The Iroha peer confirms the connection and start sending updates on the query results until user closes the connection
- The user receives the results and performs continuous analysis of the payload
|
Postconditions | - The user has continuous results of query execution
|
Alternative flow |
|
Exception flow | - On step 3, if the Iroha peer experiences issues with the network connection to other peers, the flow of results may be unplugged TBD
- 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 3, if the user experiences issues with the network connection to the Iroha peer, the flow of results will be interrupted
|
Use case title | [FR0209] Validate result of the query |
---|
Status | |
Preconditions | - The user has permissions to get results of the target query
|
Use case flow | - The user prepares request data for the target query
- The user establishes permanent connection to the Iroha peer and provides the query request
- Iroha peer returns response containing result of the query as well as the merkle proof of its inclusion to the latest WSV
|
Postconditions | - The user has result of the query request with merkle proof of its validity
|
Alternative flow |
|
Exception flow | |
Use case title | [FR0210] Query old Iroha state (i.e. query balance month ago) |
---|
Status | |
Preconditions | - The user has permissions to get results of the target query
|
Use case flow | - The user prepares request data for the target query
- The user establishes permanent connection to the Iroha peer and provides the query request
- Besides query params user provides date or block number corresponding to the state being queried
- Iroha peer reconstructs state for provided date or block
- Iroha peer returns response containing result of the query
|
Postconditions | - The user has result of the query
|
Alternative flow |
|
Exception flow | |
Non-functional requirements
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Not Doing