Goals
Hyperledger Iroha v2 aims to be an even more simple, highly performant distributed ledger platform than Iroha v1. V2 carries on the tradition of putting on emphasis on having a library of pre-defined smart contracts in the core, so that developers do not have to write their own code to perform many tasks related to digital identity and asset management.
Background and strategic fit
Assumptions
- Users will work with provided client libraries (iOS, Android, JS).
- 3f+1 nodes enough to tolerate f Byzantine nodes in the network.
- Iroha uses a simple data model made up of domains, peers, accounts, assets, signatories, and permissions, as shown in the figure below - all other entities are build on top of these set.
Requirements
Functional
Peer to Peer Network
Item | EPIC | Importance | Notes |
---|---|---|---|
Peer to Peer Network Library | HI2-6 | MUST | Plain TCP\IP based protocol with SCALE as de\serialization format. |
Blocks Storage
Item | EPIC | Importance | Notes |
---|---|---|---|
World State View | MUST | In-memory, read fast data representation of the current World's State. | |
Kura | MUST | Kura is a decorator on top of Disk Block Storage and provides validation and World State View synchronization functionality. | |
Blocks Synchronization | HI2-2 | MUST | //TODO Egor Ivkov please add small note about the gossip design and concerns. |
Smart Contracts
Item | EPIC | Importance | Notes |
---|---|---|---|
Iroha Special Instructions mechanism | MUST | ||
Out of the box set of Iroha Special Instructions | MUST | Several Tiers of Iroha Special Instructions provide:
|
Non Functional
Target Platforms
Iroha deployment should support GNU/Linux, MacOS and Windows machines with x86 and Arm64 CPUs.
Transactions Processing
Iroha Peer should be able to process 20,000 transactions per second.
Blocks Processing
Iroha should be able to commit a new block every 3 seconds.
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 | Storage | https://soramitsucoltd.aha.io/features/HI2-1 | MUST |
|
2 | Permissions | https://soramitsucoltd.aha.io/features/HI2-36 | MUST |
|
3 | Event Listeners | https://soramitsucoltd.aha.io/features/HI2-37 | COULD | |
4 | Maintenance Endpoint | MUST | Maintenance Endpoint | |
5 | Transactions TTL | MUST |
|
User interaction and design
Iroha application crate
. ├── Cargo.toml ├── config.json ├── docs │ └── references └── src ├── account.rs ├── asset.rs ├── block.rs ├── config.rs ├── crypto.rs ├── domain.rs ├── isi.rs ├── kura.rs ├── lib.rs ├── main.rs ├── merkle.rs ├── peer.rs ├── query.rs ├── queue.rs ├── sumeragi.rs ├── torii.rs ├── tx.rs └── wsv.rs
Network crate
. ├── Cargo.toml └── src └── lib.rs
Macroses
. ├── Cargo.toml ├── iroha_derive │ ├── Cargo.toml │ ├── src │ │ └── lib.rs │ └── tests │ ├── log.rs │ └── serialize.rs └── src └── lib.rs
Iroha clients
Iroha Rust Client
. ├── benches │ └── torii.rs ├── Cargo.toml ├── config.json ├── src │ ├── client.rs │ └── lib.rs ├── target │ └── criterion └── tests ├── add_asset.rs ├── high_load_transfer.rs └── transfer_asset.rs
Non functional requirements
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|