Skip to content
This repository has been archived by the owner on Apr 17, 2019. It is now read-only.

Releases: hyperledger-iroha/iroha-dco

Hyperledger Iroha v1.0 beta-1 version

06 Apr 06:08
9e0e190
Compare
Choose a tag to compare

Hotfix

  • Fix build errors related to unused lambda captures with clang 7.0
  • Fix independent build of shared model subproject

Hyperledger Iroha v1.0 beta version

30 Mar 17:37
ed665de
Compare
Choose a tag to compare

After beta release, we are moving to the schema of time-based releases, and it is expected to release approximately every month.

In this release following changes were made:

Client libraries & shared model

Our long road, taking its start from a decision made back in October 2017 about using in Iroha daemon a set of shared model classes with invariants, validators, protobuf as a backbone, clear and intuitive validation output, used both on client side and on server side is coming to its end with a release of libraries for several platforms:

  • Obviously, C++
  • Java & Android in particular
  • Python

Shared model name means that exactly the same Transaction, Query, etc. objects are used on client and peer side for the purpose of improved reliability and user-friendliness. We are approaching the end of complete migration to these classes (it appears that we will ship it in next release).

A shared model name is going to change to irohalib for a better consistency with UNIX naming style (as Iroha binary is named as irohad).

All libraries except C++ are generated using SWIG — which means that their maintenance is guaranteed by an effective CI pipeline that we are going to build in the future. So far, libraries are available in several external repositories (Maven, PIP, etc.) and their update is going to be automated in following releases as well.

Swift & Objective-C library is available is a preview state, since there are issues with tests, documentation, and Objective-C code.

NodeJS library is also available in a preview state, though it has tests and documentation for it.

Please, use our documentation related to client libraries on ReadTheDocs service, which is explained below:

Documentation

Previously, documentation for the project was discrete and was placed in several places, moreover, it was targeted only at developers.

We are changing the focus by telling more people in different languages about key features of Iroha, and the level of technical expertise required to read the docs is varied from integrators or explorers to blockchain developers.

Check out our new docs at iroha.readthedocs.io (being still translated and changed).
Please, contribute to the translation of docs here on POEditor.

Project distribution

One of SnapCraft maintainers, @ElOpio, has recently contributed with a setup of snap package or Iroha. Please stay tuned as we will publish information on how to use snap right after release.

As usual, anyone can download docker image and deploy Iroha in a container — check Getting Started section.

In the future, all builds are going to be stored at https://artifact.soramitsu.co.jp/ page.

Stateless validation

We have changed rules for our transaction, query, etc. schemas to be valid by unifying stateless validation rules. Please check Core Concepts page of ReadTheDocs, where it is explained what is exactly stateless validation, and how certain fields are validated.

Integration Test Framework

Acceptance tests are written using Integration Test framework, allowing to set up a context for a transaction pipeline in an easy way. This framework is capable of performing checks all along the pipeline and is reducing code duplication greatly. Readme file explaining ITF is going to be written soon, but for now, please explore the code — it is well documented and there are already tests written, and some of the tests are already reported (acceptance testing is now in progress).

Ansible deployment

Now, Ansible playbook improvements allow you to deploy Iroha easily on many physical machines or in many docker containers on a fixed amount of machines to simulate different network configurations. More information is available in README.md file of deploy/ansible folder.

Torii

Optimizations are now all along the code of our frontend gRPC component (named Torii). Moreover, clients now are not forced to pull the status of a transaction, but instead, they can use pull-based notification mechanism (gRPC Streaming). Check client libraries section for more examples and information.

Optimisations

Reduced amount of project dependencies

  • Redis component was removed completely, and PostgreSQL indices are used instead
  • Using platform-independent file operations for better portability (still no Windows, sorry)
  • Removed legacy code (old tests, crypto files, old schema files)

Performance

  • Added a queue at Ordering Gate — which means that proposals are now waiting in line to be sent to Ordering Service
  • Improved performance of Ordering Service component 500 times after removing Proposal copying
  • Initial performance testing for 4, 16, 28, 64 nodes

Other

  • Improved line coverage (command executor, Yet Another Consensus)
  • Removed nonstd::optional (we are using boost::optional now)
  • Clang formatting as a CMake function
  • Improved logging
  • Tests (more negative test cases, a whole new system test)
  • Fixed memory leaks in Torii component
  • Secured private keys with a passphrase for a safe storage on HDD

Bugfixes

  • Allow querying all account data
  • Ninja build
  • CLI improvements (still, it is better to write a new one, but we are supporting what we have at the moment)
  • YAC peer order was fixed
  • Startup of Ordering Service
  • Fixed back pressure on fast proposal emitting

1.0 alpha

28 Dec 06:12
78f152a
Compare
Choose a tag to compare

The release brings following features:

Client libraries

If you want to communicate with Iroha now via the programming language of your choice — you can generate the library using SWIG, or you can use ready-to-go examples and extend them:

Java

Using SWIG, the team of maintainers made it possible to generate a transaction, a query, and check the status of the transaction on running peer. In order to check it (and extend the code for your needs) please go to example/java folder.

Python

A similar example was made for python as well. In order to check it (and extend the code for your needs) please go to example/python folder.

Other (supported with SWIG)

Check CMakeFile and SWIG documentation. In future, we can extend this on-demand or would be happy to see such contribution from the community.

ed25519 library with SHA3 hashing

The ed25519 digital signature algorithm is described in RFC8032. The implementation provides a modularized implementation of this algorithm.

Originally Ed25519 consists of three modules:

  • the digital signature algorithm itself
  • SHA512 hash function
  • random number generator, to generate keypairs

This repository offers at least two different C implementations for every module. Every implementation is tested and can be replaced with other at link-time. New implementations can be added as well. Test cases match RFC8032.

Other improvements and features

  • a know-your-customer solution for account information. Check API page for more detail
  • documentation updates, new contribution guidelines
  • bug fixes and improvements

v0.95 preview-2

23 Nov 12:52
1965193
Compare
Choose a tag to compare

This release brings following features:

Hot join of peer to the network

Now, to join the peer to the network, a member of peer network should execute AddPeer command, passing the resolvable address of the peer in the network, and its public key. This peer should already have the same genesis block in the chain.

Iroha is compatible with macOS

We want to provide an ability for developers to test and build their code in an environment, which is convenient for them. That is why each pull request to develop is checked for the compatibility with darwin.

Transaction responses

To understand the status of the transaction in Iroha, a client should retrieve it from the node, which was used to send it. Check Status endpoint and use the hash of the transaction. There are 7 states in total, related to stateless, stateful validation, consensus and external transport.

Ordering gate

Now, the responsibility of the ordering gate is to decide on how to relay the transaction to ordering service. It used to be tightly coupled, but now the ordering service is another pluggable component in the system.

Static analysis tool

Technical debt of the project codebase is checked with sonarqube, available at sonar.soramitsu.co.jp.

Improved initialization pipeline

Peer variable is removed from main class since peer can be missing from the ledger when a node is started. API of main class is improved with virtual functions for every component, allowing testing the peer with ease.

Cryptographic checks

Now, Iroha does validation of payload signatures and signatures of the block made by peer. Temporarily we are using the ed25519 library with SHA2-512 hashing, but we are working on the SHA3 implementation for improved reliability.

Improved representation of asset amount

It is now greater, as the size of it is uint256. Is also supports custom operations — check iroha/libs/amount.

RBAC permission model, supporting grant command

Iroha is using now role-based access control model, which helps to create custom roles in the system, limited to the operations, which are available to them. Some of the permissions can be granted to other users, check API description for more details.

Integration test for transaction pipeline

This test is used to check the whole pipeline of a transaction, starting with an external endpoint (Iroha API). This test is going to be reused soon for extensive API testing when we will finish with the shared library for creation of transactions and queries.

Implementation of block index storage, based on Redis

Redis storage is used for indexing data, related to retrieval of a collection of transactions. Check the irohad/ametsuchi/impl/mutable_storage_impl.cpp.

Improved implementation of Yet Another Consensus

Consensus module does not require peer IP address now which was used for identification in network messages. Peer public key is now used for identification when vote message is received.

Provisioning of the system via Ansible Playbook

Now, the system can be easily provisioned with Ansible. This feature will help to write scripts for effective system and performance tests.

Other improvements

Fixed build for ARMv7, macOS platform

Several improvements in iroha-cli (C++ command-line interface)

Documentation for release

Available at http://hyperledger.github.io/iroha-api

v0.95 preview

06 Aug 19:13
Compare
Choose a tag to compare
v0.95 preview Pre-release
Pre-release

Overview

Version 0.95 preview brings following highlights:

  • YAC Consensus
  • Observable-based interaction
  • Transport agnostic architecture design
  • Permission system for transactions and queries
  • Separate validation stages: stateless, stateful, chain

New commands

  • add asset
  • add peer
  • add signatory
  • assign master key
  • create asset
  • create account
  • create domain
  • remove signatory
  • set account permissions
  • set account quorum
  • transfer asset

New queries

  • get account
  • get signatories
  • get account transactions
  • get account asset transactions
  • get account assets

Known issues

  • No valid cryptography
  • No recovery after critical errors
  • Consensus guarantee only CFT
  • No block loader

How to run

Preconditions

Docker and Docker Compose are installed

Running the system

https://github.com/hyperledger/iroha/wiki/How-to-start-Iroha https://github.com/hyperledger/iroha/wiki/How-to-use-Iroha-client

v0.75

22 Mar 00:36
Compare
Choose a tag to compare

Feature

  • Data format is protocol buffer
  • Local datastorage is level DB
  • No support smart contract

Application

  • Simple Currency
  • Currency with tax
  • Multi asset transfer