Iroha Weekly Updates 6 #irohaweekly

Nikolay Yushkevich <nikolai@...>

It is Thursday, our contributors ๐ŸŽ‰!

Week highlights ๐Ÿ”ฅ:

Block streaming API ๐Ÿ“ฆ. This would allow people to create services around Iroha that can listen to events happening on the chain โ€” like specific transactions. In the future, it would allow us to implement block explorer functionality as well.

Currently open PRs:
1) Get top block
The name says it all โ€” there is now a possibility to get a last block from the chain. Although this is an internal interface its implementation on a client-side can be easily done with our contributors #help-wanted
2) Fix of validation for block query
This bug was sending everyone stateful error if someone had queried a block incorrectly.
3) Block streaming interface in gRPC
Iroha accounts would be able to get blocks in an async approach over this interface.

1) BlocksQueryBuilder
Helps to query blocks on the client side.
2) Query processing for blocks
After a query is sent it should be processed in the pipeline. This code delivers logic related to propagation of query to validation and execution components.

The batch of transactions ๐Ÿ“‘. This is actually a nice extension for our financial use cases, especially DVP settlements or exchanges โ€” imagine an account A in Iroha that wants to exchange its assets with another account B. To do so, this account A is going to form a batch of transactions, which will contain:
1) Outgoing transaction with assets from this account A.
2) Another transaction of account B which transfers assets to account A (amount is specified by account A).

Only when both accounts A and B sign the batch and they have enough assets โ€” the transactions are going to be applied atomically.

Currently open PRs:
1) Transaction sequence interface

Check our progress of API improvements at feature sprint here:

Stateful validation responses โœ…. Many people were confused with lack of exact reason why their transaction has failed (in logs and on the client side). In order to help everyone, we are implementing Result class which tells what went wrong to the transaction creator and maintainers of Iroha peers: (in progress)

QA activity is depicted at a corresponding JIRA board here
As usual, we continue with acceptance tests, small issues, but there is something moreโ€ฆ

Binary Testing Framework ๐Ÿ”ฎ!

BTF allows performing stateful validation for transactions and queries built using client libraries.
For now, only Python is supported. Java support will be added later on. This code will help us build genesis block generation, client-side tests, and many more things!
Please check this out, BTF can give you more ideas on how to use our libraries for your projects.

Our effort related to optimizations of build time and transactions throughput has given its first results, as for now our test command with validation logic performed completely in storage layer has shown 2.5 times better performance than its previous implementation. Our general insight is that we need to minimize the number of queries to the database and transfer all the validation logic completely to storage.

Our common part of the weekly report is community effort โค๏ธ:
Unfortunately, there were no active contributors this week and we need your help with many things, namely:
- feature development
- QA and documentation
- optimizations

Please join our squads so that you can get more experience in C++ stack development, be the part of a global community of specialists in blockchain and distributed systems, improve the project and have your name written in the hall of fame of our contributors ๐Ÿ™Œ!.

Donโ€™t forget to ask all your questions here. Also, you can always create issues at

Thanks to everyone for your continuous support! Stay tuned! #IrohaWeekly