Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: fixed whitepaper link

...

Background and strategic fit

...

Assumptions

...

Peer to peer communication

IDItemEPICImportanceStatusADR/RFC
Brief description
Notes
IF2-100Peer to Peer Network Library

HI2-6

HI2-30

Status
colourGreen
titleMUST

Status
colourGreen
titleDONE

Networking stack

Plain TCP\IP based protocol with SCALE as de\serialization format.

Iroha must have a specific peer-to-peer protocol for effective communication and provided it as a detachable library

.Plain TCP\IP based protocol with SCALE as de\serialization format

.

IF2-101Transactions Time to LiveHI2-38

Status
colourGreen
titleMUST


Prevent replay of rejected transactionsIroha must provide the possibility to explicitly state time-to-live (TTL) for each transaction, so the clients
will have control over the
can set time interval in which transactions should be confirmed and put into the block store or removed from the queue by timeout.
IF2-102Multisignature TransactionsHI2-13

Status
colourGreen
titleMUST



Iroha must provide the possibility to configure each account to have a list of signatories, which needs to provide their signatures to confirm the transaction.

Also, Iroha should provide the possibility to perform conditional multi-signature transactions, so the conditions will automate transaction creation or signing them

IF2-103Transaction dependencies

Status
titlenot defined


Transaction tags(Proposed by Kamil') Iroha may provide a possibility to perform tag-based dependencies between transactions for making their sequence configurable by the client

Blocks storage

IDItemEPICImportanceStatusADR/RFC
Brief description
Notes
IF2-200World State View

Status
colourGreen
titleMUST

Iroha must have an in-memory representation of the World State View for optimization of access and change time.

Status
colourGreen
titleDONE


In-memory, read fast data representation of the current World's State.
IF2-201Kura

HI2-1

HI2-17

HI2-18

HI2-5

Status
colourGreen
titleMUST

Iroha must have abstraction over the disk-based block storage, which will cover all validation- and world-state-view-related functionality.

Iroha should have the Kura as a detachable library, so other Hyperledger solutions can easily reuse it.//TODO Egor Ivkov please add a small note about the gossip design and concerns

Status
colourGreen
titleDONE


Kura is a decorator on top of Disk Block Storage and provides validation and World State View synchronization functionality. 
IF2-202Blocks Synchronization

HI2-2

HI2-43

Status
colourGreen
titleMUST

Status
colourGreen
titleDONE

Block Synchronization
Iroha must perform seamless synchronization of block storage between peers, so new peers or lagging ones will quickly synchronize their state with the network and join the decision-making process in consensus.
Peers periodically gossip with each other, sharing the latest block hash. If the hashes differ, then the peers discover they are out of sync and request synchronization.
IF2-203Merkle Tree

Status
colourGreen
titleMUST

Status
colourGreen
titleDONE

Merkle Tree
//TODO: Egor Ivkov , may I ask you to fill that?
Iroha provides a general purpose implementation of a Merkle Tree, which is used to verify the state of committed blocks and their transactions.

Consensus

IDItemEPICImportanceStatusADR/RFC
Brief description
Notes
I2-300SumeragiHI2-3

Status
colourGreen
titleMUST

Status
colourGreen
titleDONE


Iroha must have a reliable BFT consensus of blocks between all peers, which should keep effectively prevent attacks and malfunctioning in case of n of 2n+1 nodes are malicious/failing.

(details of Sumeragi are described in the white paper)

Sumeragi should be implemented as a detachable component and be available as a library, so other Hyperledger solutions can reuse it.

Queries

IDItemEPICImportanceStatusADR/RFC
Brief description
Notes
I2-400Iroha QueriesHI2-31

Status
colourGreen
titleMUST

Iroha must provide a set of queries, which will cover the acquisition of all client-related data about all existing entities.

Status
colourGreen
titleDONE


Iroha Queries provide information about World State View based on client permissions.

Smart Contracts

IDItemEPICImportanceStatusADR/RFC
Brief description
Notes
IF2-500Iroha Special Instructions mechanism

Status
colourGreen
titleMUST

Iroha must provide a possibility to create various instructions to cover 

Status
colourGreen
titleDONE



IF2-501Out of the box set of Iroha Special Instructions

HI2-28

HI2-29

HI2-35

Status
colourGreen
titleMUST

Status
colourGreen
titleDONE


Several Tiers of Iroha Special Instructions provide:

  • Basic building blocks that can be used to build Custom Iroha Special Instructions
  • Maintenance-related Iroha Special Instructions (Add Peer, Change Build Block Time, etc.)
  • "Iroha Modules"-related Iroha Special Instructions (Bridge, DEX, etc.)
IF2-502PermissionsHI2-36

Status
colourGreen
titleMUST

Permissions and Event Listeners

Status
colourBlue
titleIN-PROGRESS

PermissionsPermissions in Iroha implemented based on Assets and Iroha Special Instructions.
IF2-503TriggersHI2-37

Status
colourGreen
titleMUST

Status
colour

Yellow

Blue
title

Could

IN-PROGRESS

Triggers
Permissions and Event Listeners
Triggers in Iroha implemented based on Assets and Iroha Special Instructions.
IF2-504Domain-Specific Language

Status
colourYellow
titleCould


Iroha Special Instructions DSL
Structure
Custom Iroha Special Instructions and usage of the full set of Iroha Special Instructions should be easy for developers.
IF2-505Advanced Permissions Model

Status
colourYellow
titleCould

Status
colourBlue
titleIN-PROGRESS

Expand Iroha Permission modelFull-fledged rights model in Iroha will greatly reduce the amount of server development for Iroha-based applications.

Modules

Brief description
IDItemEPICImportanceStatusADR/RFCNotes
IF2-600Bridge

Status
colourGreen
titleMUST

Bridges

Status
colourBlue
titleIN-PROGRESS

BridgesIroha must provide the possibility to TBD The mechanism for communication between third-party blockchains.

DEX

Status
colourGreen
titleMUST

Status
colourBlue
titleIN-PROGRESS

DEX Generic ScenariosThe ability to exchange assets between accounts.

Maintenance

IDItemEPICImportanceStatusADR/RFCBrief descriptionNotes
IF2-700Maintenance Endpoint

HI2-26

HI2-27

HI2-46

Status
colourGreen
titleMUST

Status
colourBlue
titleIN-PROGRESS

Maintenance Endpoint Iroha must provide a maintenance endpoint, which can be used for performing operations (control over node status), requesting statistics and health information and subscribing on the updates (new blocks, transaction status changes, etc.).

Clients

IDItemEPICImportanceStatusADR/RFC
Brief description
Notes

HTTP API

Status
colourGreen
titleMUST

Status
colourYellow
titleIN-REVIEW

Iroha API for ClientsBecause of clients restrictions decision about HTTP API was pushed forward.
Notes
IF2-800Rust Client LibraryHI2-32

Status
colourGreen
titleMUST

Status
colourGreen
titleDONE


Iroha Client encapsulates network-related functionality and provides "local" Rust Interface for:

  • Submitting of Iroha Special Instructions to Iroha Peer
  • Querying Data from Iroha Peer
  • Maintenance Endpoint API
IF2-801`no-std` client

Status
colour

Yellow
titleCould

Status
colourRed

Green

title

MUST

CANCELLED

Migration from Strings
IF2-802Mobile SDK

HI2-33

HI2-9

HI2-8

Status
colourYellow
titleCould

Status
colour

Green

Red
title

MUST

CANCELLED



IF2-803Web SDK

HI2-34

HI2-10

Status
colourYellow
titleCould

Status
colour

Green

Red
title

MUST

CANCELLED

Web API

Non-Functional

Security

Maintenance

Target Platforms

Iroha deployment should support GNU/Linux, macOS and Windows machines with x86 and Arm64 CPUs.

...

Maintenance

  • Logging - 
    Jira
    serverHyperledger JIRA
    serverId6326cb0b-65b2-38fd-a82c-67a89277103b
    keyIR-832
  • Service Discovery

...

User interaction and design

Image RemovedImage Added

Questions

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

...