Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.



Type of change request


Epic link


Target release


What happened to existing iroha-cli?

The existing CLI tool for Iroha is built on C++ and uses legacy primitives. It was not updated for a long time and it is considered relatively hard to maintain. It was decided to discontinue support of the existing CLI and archive its source code.

Functional details: 

Environmental objectives: None



Why it is done


After #1

Before #1


Research strategy


Documentation effort


QA activity


Given X,

When Y


When Y1

Then Z



What's next?

The new CLI is going to be developed to substitute the outdated one.
The key features of the new CLI are:

  • An ability to operate with multi-signature transactions (MST)
  • An ability of fine-tuning of transactions/queries content (e.g. specifying of creation timestamp)
  • All the recently added commands, queries and permissions to Iroha have to be supported in CLI (in general, the CLI has to support everything that the latest Iroha can do)
  • Improved interactive mode experience
  • A way for genesis blocks composing
  • Everything that was broken has to work (smile) (saving and loading transactions or queries to a file / from a file, etc)
  • Command-line parameters support (it has to be possible to do actions not exclusively in an interactive mode but using sole command line parameters too) *

Besides the items listed above, the new CLI is going to be written in Python 3 and uploaded to PyPi repository. Such an approach gives us a benefit of ease of use and there will be no more need to compile and, in the worst case, the need to set up an environment to build a C++ app with potential dependency hell resolution pleasure.

* -  the last item is considered as the last priority feature due to quite developed state of Iroha client libraries (Java, Python, Swift, JS)?

Functional details

If possible, the new CLI has to use all the benefits of protobuf reflection opportunities. For example, whenever it possible CLI code should not be necessary updated when a new Iroha proto scheme is released (it should be enough just to specify the path to updated proto files).