Versions Compared

Key

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


Priority

Status
colourRed
titleMUST

Type of change request

Status
subtletrue
colourGreen
titleFEATURE

Epic linkhttps://jira.hyperledger.org/browse/IR-567
Status

Status
subtletrue
titleDRAFT

Target release



Vision

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.

What's next?

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

  • 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)
  • An ability to operate with multi-signature transactions (MST)
  • 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)

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.

Functional details: 

Environmental objectives: None

Changelog 

#Change descriptionAffected componentChange motivationDependency (optional)
1What is changedWhere it is changed

Why it is done


After #1

Before #1

etc.

Research strategy

#Research activityDetailsAcceptance criteriaResponsible (accepter) 
1



Documentation effort

#Target readerDocumentation description
1

QA activity


#Validation activityIntentionActionsExpected result 
1TestingTest component X and check if …

Given X,

When Y

AND

When Y1

Then Z

OR

Then Z1