This section describes the object model of the design.
Layers
According to Dan Boneh Blockchain applications may be divided into four layers:
3
User Interface
2
Applications
1.5
Compute Layer
1
Consensus Layer
We will use this classifications to group Iroha components and 3rd party components that can be integrated with Iroha components.
Components
Layer
Components
Description
User Interface
Iroha Clients + 3rd Party Clients
Web/Mobile/CLI
User Facing Services
Applications
Iroha Modules + Custom Iroha Special Instructions
Run on blockchain computer
Compute Layer
Iroha + Iroha Modules + Iroha Special Instructions
Application logic is encoded in a program that runs on blockchain • Rules are enforced by a public program (public source code) ➔ transparency: no single trusted 3rd party • The APP program is executed by parties who create new blocks ➔ public verifiability: anyone can verify state transitions
Consensus Layer
Iroha
Sumeragi
A public data structure (ledger) that provides:
Persistence: once added, data can never be removed
Consensus: all honest participants have the same data
Liveness: honest participants can add new transactions
Open(?): anyone can be a participant (no authentication)
Application Programming Interface
Functionality
Provider
Description
Submission of Iroha Special Instructions
Clients
Clients receive declaration of desired actions from users in form of Iroha Special Instructions.
They build a Transaction from them, use User's cryptographics keys to Sign it (optionally?) and send them to Iroha.
Sending of Iroha Queries
Clients
Clients receive declaration of desired search results from users in form of Iroha Queries.
They build a Request from them, use User's cryptographics keys to Sign it (optionally) and send them to Iroha.
Execution of Iroha Special Instructions
Iroha
Iroha receives Transactions from Clients and process them in cooperation with Applications and Consensus.