Indy-cli: opening wallet created by vcx is unavailable


#1

Hi,

I have a wallet that was created via the vcx provisioning process.
libindy v1.6.2
libvcx off the master branch of evernym.
Protocol-version 1
Using the Sovrin test Network with the genesis file for it
The correct key is being used.
vcx uses a default storage type

Wallet list: There are no wallets
Wallet create: Wallet already exists

The wallet opens fine when initializing vcx.
But when I use indy-cli:

Pool "Nodev1" has been connected
TRACE|indy_cli::commands::pool::connect_command|               src/commands/pool.rs:133 | execute << Ok(())
pool(Nodev1):indy> TRACE|indy::services::pool::pool    |          src/services/pool/pool.rs:537 | received pool event: Some(NodeReply("{\"merkleRoot\":\"4GMu1Hf17UpVzVTLDqr9VaPqFovEAaRpzzJCYnTdPkcQ\",\"viewNo\":0,\"op\":\"LEDGER_STATUS\",\"ppSeqNo\":801,\"ledgerId\":0,\"txnSeqNo\":45}", "brazil"))
TRACE|indy::services::pool::pool    |          src/services/pool/pool.rs:384 | received reply from node "brazil": "{\"merkleRoot\":\"4GMu1Hf17UpVzVTLDqr9VaPqFovEAaRpzzJCYnTdPkcQ\",\"viewNo\":0,\"op\":\"LEDGER_STATUS\",\"ppSeqNo\":801,\"ledgerId\":0,\"txnSeqNo\":45}"
TRACE|indy::services::pool::pool    |          src/services/pool/pool.rs:537 | received pool event: Some(NodeReply("{\"viewNo\":0,\"ppSeqNo\":801,\"op\":\"LEDGER_STATUS\",\"ledgerId\":0,\"txnSeqNo\":45,\"merkleRoot\":\"4GMu1Hf17UpVzVTLDqr9VaPqFovEAaRpzzJCYnTdPkcQ\"}", "singapore"))
TRACE|indy::services::pool::pool    |          src/services/pool/pool.rs:384 | received reply from node "singapore": "{\"viewNo\":0,\"ppSeqNo\":801,\"op\":\"LEDGER_STATUS\",\"ledgerId\":0,\"txnSeqNo\":45,\"merkleRoot\":\"4GMu1Hf17UpVzVTLDqr9VaPqFovEAaRpzzJCYnTdPkcQ\"}"
TRACE|indy::services::pool::pool    |          src/services/pool/pool.rs:537 | received pool event: Some(NodeReply("{\"merkleRoot\":\"4GMu1Hf17UpVzVTLDqr9VaPqFovEAaRpzzJCYnTdPkcQ\",\"viewNo\":0,\"op\":\"LEDGER_STATUS\",\"ledgerId\":0,\"ppSeqNo\":801,\"txnSeqNo\":45}", "australia"))
TRACE|indy::services::pool::pool    |          src/services/pool/pool.rs:384 | received reply from node "australia": "{\"merkleRoot\":\"4GMu1Hf17UpVzVTLDqr9VaPqFovEAaRpzzJCYnTdPkcQ\",\"viewNo\":0,\"op\":\"LEDGER_STATUS\",\"ledgerId\":0,\"ppSeqNo\":801,\"txnSeqNo\":45}"
TRACE|indy::services::pool::pool    |          src/services/pool/pool.rs:537 | received pool event: Some(Timeout("", ""))
TRACE|indy::services::pool::networker|     src/services/pool/networker.rs:248 | is_active >> time worked: Duration { secs: 5, nanos: 3945000 }
TRACE|indy::services::pool::networker|     src/services/pool/networker.rs:250 | is_active << false
TRACE|indy::services::pool::networker|     src/services/pool/networker.rs:144 | removing pool connection 31

pool(Nodev1):indy> wallet open acme key=*****
TRACE|indy_cli::commands::wallet::open_command|             src/commands/wallet.rs:85  | execute >> ctx CommandContext { main_prompt: RefCell { value: "indy" }, sub_prompts: RefCell { value: {1: "pool(Nodev1)"} }, is_exit: RefCell { value: false }, int_values: RefCell { value: {"CONNECTED_POOL_HANDLE": 30} }, string_values: RefCell { value: {"CONNECTED_POOL_NAME": "Nodev1"} }, plugins: RefCell { value: {} } } params "_"
Wallet "acme" not found or unavailable

#2

Couple things I have discovered:

  1. The Wallet created by vcx is not in the same structure that libindy is expecting.
  2. The sqlite3.db in the vcx wallet is encrypted - specifying the key makes not difference
  3. The sqlite3.db in the indy cli wallet I created is not encrypted - specifying the key makes not difference

#3

As long as compatible versions of libindy and libvcx are used, the wallets are compatible. In fact, libvcx interactions are handled by calls to libindy library calls.

There are some things to know before using both libraries on the same wallet. The first is that libvcx is higher-level, so it abstracts and simplifies, making assumptions about things that are configurable in libindy. For example, the pool name is always pool1 in libvcx, so if you want to access the same pool with its corresponding wallets using libindy, you use that name.

By the way, for faster and probably better responses as questions get more technical, please post them in the Hyperledger RocketChat. Many of the devs that work on this stuff contribute. This question would have been appropriate in the indy-sdk channel there.


#4

Thanks,

The problem I have is that I can provision a vcx agent with an older yet stable version but that is all I can do because I don’t have the necessary code and tools to continue from that point. So I thought that I could setup everything again with the later version of the code - which I could do but there were item not found errors in the creation of a connection.
That is why I hoped to use the older wallet.
Provisioning with the newer code to the vcx agency is not an option because of some or other fundamental messaging difference does not work with it’s endpoints.


#5

even with the compatable version of libindy (1.3.0) I still get the same problem, I have put the question up on rocketchat