@neewy neewy released this Jun 22, 2018 · 101 commits to master since this release

Assets 12

In this release following changes were made:

Experimental multi-signature transactions support

This is one of the most important features so far, since it allows integrators of Iroha to customise validation logic and may help people who want to have smart-contracts support. Let me tell you more:

As per definition of multi signature account on wikipedia, it is a type of account, which has a special condition, associated with the account: it is related to a number of cryptographic signatures required to issue valid transactions from the account, or "quorum". Quorum is a requirement to have M of N signatures, attached to transaction, where N is a total number of public keys associated with the account.

It helps to build following logic:

  • in order to form a valid transaction a user of Iroha has to apply several keys distributed across several people or devices to her transactions
  • in order to form a valid transaction a user of a service with Iroha may send her transactions to a service, which validates some custom logic (amount of transferred assets, special fields, whatever) and this service can add a signature to transaction if it passed custom validation

What is different in Iroha, compared to other services, is that a user is able to send transactions to peer network which don't have all required signatures, "half-baked". Iroha puts them in a temporary storage and distributes across the network. In the end, when Iroha peer network has received enough "half-baked" transactions (quorum condition is valid) such transaction is sent to Iroha validation and is written in the ledger in case of successful validation.

If you are curious — check code in #1260. Docs are going to be available gradually in our documentation website.

Block streaming

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.

Python and Java Bindings for Windows platform

Check it in #1335 and at artifact.soramitsu.co.jp website

Other features

  • All assets now are returned instead of a single asset in GetAccountAssets (#1402)
  • Permissions are now implemented as enums instead of strings (#1444, #1434, #1407, #1408, #1384)
  • Ability to specify postgres database name on irohad startup
  • Improved stateless validation for precision (#1370)
  • Reduced CPU usage caused by compilation of regexes (#1345)
  • Protobuf schema changes causes automatic generation of cpp files on build (#1441)
  • Hash can now be created from hex string (#1475)
  • Overwriting existing genesis block requires approval on Irohad start (thanks to @ZeekHuge) (#1300)
  • CLI now supports GetAccountAssetTransactions command (#1323)
  • Significant compilation time improvements for irohad (#1424, #1414)


  • Fixed block query race condition which prevented making queries in a quick succession (#1396)
  • Fixed a bug which prevented synchronization between a newly added peer and the network (#1390)
  • Transfer asset now correctly handles mismatch between command's and asset's precision(#1470)
  • SetAccountDetail command can be executed on itself without any permissions (#1452)
  • If account name is not specified CLI will not issue a message about keypair generation (#1455)
  • fromPrivateKey now throws exception which can be caught (no more runtime errors!) (#1429)
  • Simulator now retrieves block height from storage, rather than current proposal (#1360)
  • When transaction is finalized before subscription, correct status is returned (dc6b0a4)
  • Java bindings are generated in correct packages (#1382)


CI Improvements

  • MacOS pipeline has --output-on-failure flag turned on by default (#1425)
  • Added MSVC build pipeline for shared model (#1358)