Giter VIP home page Giter VIP logo

indy-cli-rs's Introduction

CLI for Indy Ledger

This is command line interface for Indy, which provides a distributed-ledger-based foundation for self-sovereign identity.

It provides the commands to:

  • Manage wallets
  • Manage pool configurations
  • Manage DIDs
  • Sending transactions to distributed ledger

Table of contents

Installation

  1. Go to the Github Releases page.
  2. Download archive with the last version of CLI depending on your system platform.
  3. Unzip archive to the directory where you want to save CLI.
  4. After unzip you will be able to execute binary file.

Execution modes

CLI supports 2 execution modes:

  • Interactive:
    • In this mode CLI reads commands from terminal interactively.
    • To start this mode just run indy-cli-rs without params.
  • Batch:
    • In this mode all commands will be read from a text file or pipe and executed in series.
    • To start this mode run indy-cli-rs <path-to-text-file>.
    • Batch mode supports the same commands as interactive mode.
    • Note that by default if some command finishes with an error batch execution will be interrupted.
      • To prevent this start command with -.
      • For example, -wallet create test. In this case the result of this command will be ignored.
    • To make a comment in the batch script start the line with the # symbol.

Getting help

  • The most simple way is just start cli by indy-cli-rs command and put help command.
  • Also, you can refer to CLI design document containing the list of commands and architecture overview.

Options

  • -h and --help - Print usage.
  • --logger-config - Init logger according to a config file (default no logger initialized).
  • --config - Define config file for CLI initialization. A config file can contain the following fields:
    • loggerConfig - path to a logger config file (is equal to usage of "--logger-config" option).
    • taaAcceptanceMechanism - transaction author agreement acceptance mechanism to be used when sending write transactions to the Ledger.
  • --plugins - DEPRECATED Load plugins in Libindy (usage: :,...,:).

Compatibility with old Indy-CLI.

  • The names and parameters for all commands are preserved compared to the old Indy-CLI.
  • Payment related commands and functionality are not included into this CLI.
  • Pool Ledger created by the old Indy-CLI can be also opened using this CLI.
  • Wallet created by the old Indy-CLI cannot be opened using this CLI due to different storage format.
  • Wallet backup created by the old Indy-CLI can be imported using this CLI.

Migration of a wallet created by old Indy-CLI

  1. Run old CLI and create wallet backup
indy-cli> wallet open wallet_to_export key
indy-cli> wallet export export_path=/Users/home/backup export_key
indy-cli> wallet close
  1. Run new CLI and import wallet
indy-cli-rs> wallet import wallet_imported key export_path=/Users/home/backup export_key

Troubleshooting

CLI depends on term rust library that has a system dependency on terminfo database. That is why CLI Debian package additionally installs libncursesw5-dev library. More about it read here at Packaging and Distributing section.

indy-cli-rs's People

Contributors

artemkaaas avatar jovfer avatar axelnennker avatar wadebarnes avatar ianco avatar dkulic avatar sergeypalamarchuk avatar ashcherbakov avatar adenishchenko avatar mikelodder7 avatar andkononykhin avatar dependabot[bot] avatar mattraffel avatar kithat avatar alexandershenshin avatar ryjones avatar swcurran avatar michaeldboyd avatar dhh1128 avatar zhigunenko-dsr avatar lovesh avatar patrik-stas avatar pschlarb avatar brentzundel avatar ckochenower avatar hadleym avatar mirgee avatar faisal00813 avatar rajpalc7 avatar bioharz avatar

Watchers

Kim Ebert avatar Sam Curren avatar James Cloos avatar  avatar Sean Bohan avatar  avatar Richard Esplin avatar askb avatar Fabio Palumbo avatar  avatar  avatar toktar avatar Jessica G avatar  avatar vvalderrv avatar  avatar

indy-cli-rs's Issues

Fix Import/Export

Due to a limitation in the aries-askar implementation import/export is incomplete. Once this limitation has been rectified in Askar (expected to be in v0.3) the indy-cli implementation needs to be updated to be able to perform a complete import/export of a wallet.

Additional details regarding this issue can be found starting here.

Running cargo test shows failure status for most of the test cases

Fork repository using main branch and clone it on my system. Then execute following:-

cargo build => successful
cargo test => many test cases reported failed

image

Build system : Fedora 38
rustc version: rustc 1.72.0 (5680fa18f 2023-08-23)
cargo version: cargo 1.72.0 (103a7ff2e 2023-08-15)

Calls to get-nym for IDUnion Test Ledger are often extremely slow

I am running this:

pool create idunion_test gen_txn_file=./idunion_test.txn"
pool connect idunion_test
ledger get-nym did=PZvmob8HMGofX5xJPryZvh

The DID is a random DID I found in the TX Explorer. I have tried several and the behaviour is the same.
The genesis file I used is from here

I then repeat the call to ledger get-nym (the pool create and pool connect is only performed once).
What I am seeing is that the call to ledger get-nym takes from a few hundred milliseconds to 1 minute or longer to return, where the later is not rare. I would say around 70% of requests take 20 seconds or longer and maybe 10% result in a message Transaction response has not been received.
I wanted to make sure that this is not an issue with my computer, so I tried it with another machine and got the same result.
I also tried to resolve the same DIDs using the same Genesis File with the Universal Resolver, and that works fine with 90% of responses after less than 200 ms and max. response time of around 800 ms.

I assume that that is not how indy-cli-rs is supposed to behave. Am I doing something wrong or is this an issue with indy-cli-rs?

Enable crate publishing during releases

The Publish crate job in the release workflow is currently disabled with a note to enable when all dependencies are published. Publishing includes uploading the package to the release and publishing it to crates.io. To publish to crates.io the CARGO_REGISTRY_TOKEN will need to be added to the secrets.

Many errors in rocksdb/_rocksdb.pyx cause build failure

The first error is:

/tmp/pip-build-clvy4twe/python-rocksdb/.eggs/Cython-3.0.8-py3.5.egg/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /tmp/pip-build-clvy4twe/python-rocksdb/rocksdb/_rocksdb.pyx

After that, there are hundreds of errors in the module — many referencing a missing “gil”.

Upgrade indy-vdr dependency

The current version being used suffers from known pool caching issues, which I believe have been fixed in more recent versions.

See #11 for details regarding the issues that surface, and a workaround for the issue.

Unable to connect to pool "test"

I configured local indy network on AWS(not using docker) following the latest guide in indy-node.

I successfully cloned and built indy-cli-rs.

git clone https://github.com/hyperledger/indy-cli-rs
sudo apt-get install -y cmake cargo
cargo build (in indy-cli-rs directory)
cargo run (in indy-cli-rs directory)

I created "test" pool on my local network then

indy-cli-rs> pool create test gen_txn_file=/var/lib/indy/sandbox/pool_transactions_genesis)

Then I tried to connect pool, "Unable to connect pool test" error occurs.

indy-cli-rs> pool connect test

I couldn't find any error log or message except for "Unable to connect pool test"

How can I resolve it? Are there any references or error messages that I am able to find out?

Here's my pool_transactions_genesis file

{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node1","blskey":"4N8aUNHSgjQVgkpm8nhNEfDf6txHznoYREg9kirmJrkivgL4oSEimFF6nsQ6M41QvhM2Z33nves5vfSn9n1UwNFJBYtWVnHYMATn76vLuL3zU88KyeAYcHfsih3He6UHcXDxcaecHVz6jhCYz1P2UZn2bDVruL5wXpehgBfBaLKm3Ba","blskey_pop":"RahHYiCvoNCtPTrVtP7nMC5eTYrsUA8WjXbdhNc8debh1agE9bGiJxWBXYNFbnJXoXhWFMvyqhqhRoq737YQemH5ik9oL7R4NTTCz2LEZhkgLJzB3QRQqJyBNyv7acbdHrAT8nQ9UkLbaVL9NBpnWXBTw4LEMePaSHEw66RzPNdAX1","client_ip":"15.165.101.195","client_port":9702,"node_ip":"43.203.35.120","node_port":9701,"services":["VALIDATOR"]},"dest":"Gw6pDLhcBcoQesN72qfotTgFa7cbuqZpkX3Xo6pLhPhv"},"metadata":{"from":"Th7MpTaRZVRYnPiabds81Y"},"type":"0"},"txnMetadata":{"seqNo":1,"txnId":"fea82e10e894419fe2bea7d96296a6d46f50f93f9eeda954ec461b2ed2950b62"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node2","blskey":"37rAPpXVoxzKhz7d9gkUe52XuXryuLXoM6P6LbWDB7LSbG62Lsb33sfG7zqS8TK1MXwuCHj1FKNzVpsnafmqLG1vXN88rt38mNFs9TENzm4QHdBzsvCuoBnPH7rpYYDo9DZNJePaDvRvqJKByCabubJz3XXKbEeshzpz4Ma5QYpJqjk","blskey_pop":"Qr658mWZ2YC8JXGXwMDQTzuZCWF7NK9EwxphGmcBvCh6ybUuLxbG65nsX4JvD4SPNtkJ2w9ug1yLTj6fgmuDg41TgECXjLCij3RMsV8CwewBVgVN67wsA45DFWvqvLtu4rjNnE9JbdFTc1Z4WCPA3Xan44K1HoHAq9EVeaRYs8zoF5","client_ip":"15.164.141.55","client_port":9704,"node_ip":"15.164.158.139","node_port":9703,"services":["VALIDATOR"]},"dest":"8ECVSk179mjsjKRLWiQtssMLgp6EPhWXtaYyStWPSGAb"},"metadata":{"from":"EbP4aYNeTHL6q385GuVpRV"},"type":"0"},"txnMetadata":{"seqNo":2,"txnId":"1ac8aece2a18ced660fef8694b61aac3af08ba875ce3026a160acbc3a3af35fc"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node3","blskey":"3WFpdbg7C5cnLYZwFZevJqhubkFALBfCBBok15GdrKMUhUjGsk3jV6QKj6MZgEubF7oqCafxNdkm7eswgA4sdKTRc82tLGzZBd6vNqU8dupzup6uYUf32KTHTPQbuUM8Yk4QFXjEf2Usu2TJcNkdgpyeUSX42u5LqdDDpNSWUK5deC5","blskey_pop":"QwDeb2CkNSx6r8QC8vGQK3GRv7Yndn84TGNijX8YXHPiagXajyfTjoR87rXUu4G4QLk2cF8NNyqWiYMus1623dELWwx57rLCFqGh7N4ZRbGDRP4fnVcaKg1BcUxQ866Ven4gw8y4N56S5HzxXNBZtLYmhGHvDtk6PFkFwCvxYrNYjh","client_ip":"52.79.57.108","client_port":9706,"node_ip":"3.37.2.242","node_port":9705,"services":["VALIDATOR"]},"dest":"DKVxG2fXXTU8yT5N7hGEbXB3dfdAnYv1JczDUHpmDxya"},"metadata":{"from":"4cU41vWW82ArfxJxHkzXPG"},"type":"0"},"txnMetadata":{"seqNo":3,"txnId":"7e9f355dffa78ed24668f0e0e369fd8c224076571c51e2ea8be5f26479edebe4"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node4","blskey":"2zN3bHM1m4rLz54MJHYSwvqzPchYp8jkHswveCLAEJVcX6Mm1wHQD1SkPYMzUDTZvWvhuE6VNAkK3KxVeEmsanSmvjVkReDeBEMxeDaayjcZjFGPydyey1qxBHmTvAnBKoPydvuTAqx5f7YNNRAdeLmUi99gERUU7TD8KfAa6MpQ9bw","blskey_pop":"RPLagxaR5xdimFzwmzYnz4ZhWtYQEj8iR5ZU53T2gitPCyCHQneUn2Huc4oeLd2B2HzkGnjAff4hWTJT6C7qHYB1Mv2wU5iHHGFWkhnTX9WsEAbunJCV2qcaXScKj4tTfvdDKfLiVuU2av6hbsMztirRze7LvYBkRHV3tGwyCptsrP","client_ip":"15.164.80.147","client_port":9708,"node_ip":"3.36.37.73","node_port":9707,"services":["VALIDATOR"]},"dest":"4PS3EDQ3dW1tci1Bp6543CfuuebjFrg36kLAUcskGfaA"},"metadata":{"from":"TWwCRQRZ2ZHMJFn9TzLp7W"},"type":"0"},"txnMetadata":{"seqNo":4,"txnId":"aa5e817d7cc626170eca175822029339a444eb0ee8f0bd20d3b0b76e566fb008"},"ver":"1"}
~

Version
Ubuntu = 20.04
Indy-node = 1.13.2
Indy-plenum = 1.131
Indy-cli-rs = 0.1.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.