hyperledger / indy-sdk Goto Github PK
View Code? Open in Web Editor NEWindy-sdk
Home Page: https://wiki.hyperledger.org/display/indy
License: Apache License 2.0
indy-sdk
Home Page: https://wiki.hyperledger.org/display/indy
License: Apache License 2.0
sovrin_store_their_did call has excess pk attribute in identity json, but keys for encryption/decription are always can be computed from signkey/verkey.
Looks like it can confuse library user. I suggest removing of this param.
sovrin_encrypt and sovrin_decrypt method also looks excess as we plan to use encryption/decryption on transport protocol layer (CurveCP). It is hard to use these methods directly as NaCL encryption requires nonce and corresponded handshake procedure for safe nonce generation on both sides.
I suggest removing these methods from API.
sovrin_create_and_store_my_did always return verkey in full form, but abbreviated form can be used.
I suggest returning of verkey in abbreviated form if DID is generated as first 16 bytes of verkey.
Right now, sovrin_sign
and sovrin_verify_signature
can create/verify signatures for the JSON messages that are sent to the ledger. In these methods, a JSON message is serialized to a byte array using a custom algorithm that is not used outside of Indy/Sovrin ledger communication. Also, the signature is automatically inserted into the JSON message.
I think it would be very useful if those methods could be used more generically, to create/verify signatures on any arbitrary byte array supplied by the library user.
Hi all,
I recently started digging into indy, and was trying to compile the code and ran into this issue.
In the recent commit of libindy/include/indy_types.h
4cafeda#diff-6ab3e784eca5e2160eaad8ae4d050b30
These two lines were added
typedef long long indy_i64_t;
typedef unsigned long long indy_u64_t;
And their names collide with the existing member variables
typedef int64_t indy_i64_t;
typedef uint64_t indy_u64_t;
A little background, I was compiling the code with the nodeJS wrapper
https://github.com/Picolab/indy-sdk/tree/master/wrappers/nodejs
Build Log (sorry that it's long)
root@ubuntudev-vm:~/git/src/github.com/pico2/wrappers/nodejs# npm run rebuild
> [email protected] rebuild /home/ubuntudev/git/src/github.com/pico2/wrappers/nodejs
> node codegen && node-gyp rebuild
make: Entering directory '/home/ubuntudev/git/src/github.com/pico2/wrappers/nodejs/build'
CXX(target) Release/obj.target/indynodejs/src/indy.o
In file included from ../src/indy_core.h:5:0,
from ../src/indy.cc:4:
/home/ubuntudev/git/src/github.com/pico2/wrappers/nodejs/include/indy_types.h:13:23: error: conflicting declaration ‘typedef long long int indy_i64_t’
typedef long long indy_i64_t;
^
/home/ubuntudev/git/src/github.com/pico2/wrappers/nodejs/include/indy_types.h:10:23: note: previous declaration as ‘typedef int64_t indy_i64_t’
typedef int64_t indy_i64_t;
^
/home/ubuntudev/git/src/github.com/pico2/wrappers/nodejs/include/indy_types.h:14:32: error: conflicting declaration ‘typedef long long unsigned int indy_u64_t’
typedef unsigned long long indy_u64_t;
^
/home/ubuntudev/git/src/github.com/pico2/wrappers/nodejs/include/indy_types.h:8:23: note: previous declaration as ‘typedef uint64_t indy_u64_t’
typedef uint64_t indy_u64_t;
^
indynodejs.target.mk:97: recipe for target 'Release/obj.target/indynodejs/src/indy.o' failed
I wonder how you guys manage to build it, given the name collision?
Thanks
Stanley
I have been creating Docker containers of the indy-pool with the provided indy-pool.dockerfile for over 2 months now. This morning it simply stopped working with the following error message:
Step 21/23 : RUN generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 2 3 4 --ips="$pool_ip,$pool_ip,$pool_ip,$pool_ip"
---> Running in 77a61ead17ea
Traceback (most recent call last):
File "/usr/local/bin/generate_indy_pool_transactions", line 19, in <module>
getTxnOrderedFields(), ConfigHelper, NodeConfigHelper)
File "/usr/local/lib/python3.5/dist-packages/plenum/common/test_network_setup.py", line 207, in bootstrapTestNodes
steward_defs, node_defs = cls.gen_defs(args.ips, args.nodes, startingPort)
File "/usr/local/lib/python3.5/dist-packages/plenum/common/test_network_setup.py", line 291, in gen_defs
d.verkey = s_signer.verkey
File "/usr/local/lib/python3.5/dist-packages/plenum/common/signer_did.py", line 54, in verkey
return self.abbr_prfx + self._verkey
TypeError: Can't convert 'bytes' object to str implicitly
ERROR: Service 'pool' failed to build: The command '/bin/sh -c generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 2 3 4 --ips="$pool_ip,$pool_ip,$pool_ip,$pool_ip"' returned a non-zero code: 1
This seems rather unusual to me since all indy-package versions are specified within the dockerfile (e.g. ARG indy_plenum_ver=1.2.237
). Any thoughts on why the provided dockerfile is failing on me out of a sudden?
The dependencies installed in ci/indy-pool.dockerfile
don't work on raspberry pi. Is there a version of this file that pulls and compiles directly from the repositories rather than using apt-get
to install them?
Currently, libsovrin uses popular https://github.com/rust-lang-nursery/log facade. It allows linking with logger implementation in runtime.
We use env_logger that allows logging configuration by environment variables for our tests, but there is no logger initialization provided on C API level. I suggest the following:
Point 2 can be postponed.
indy_sdk: 1.5.0
npm indy_sdk 2.5.0
Platform: OSX
Running a docker container detailed
docker build -f ci/indy-pool.dockerfile -t indy_pool .
docker run -itd -p 9701-9708:9701-9708 indy_pool
using the genesis file found in:
indy-sdk/cli/docker_pool_transactions_genesis
result:
docker_pool_transactions_genesis:1
(function (exports, require, module, __filename, __dirname) { {"reqSignature":{},"txn":{"data":{"data":{"alias":"Node1","blskey":"4N8aUNHSgjQVgkpm8nhNEfDf6txHznoYREg9kirmJrkivgL4oSEimFF6nsQ6M41QvhM2Z33nves5vfSn9n1UwNFJBYtWVnHYMATn76vLuL3zU88KyeAYcHfsih3He6UHcXDxcaecHVz6jhCYz1P2UZn2bDVruL5wXpehgBfBaLKm3Ba","client_ip":"10.0.0.2","client_port":9702,"node_ip":"10.0.0.2","node_port":9701,"services":["VALIDATOR"]},"dest":"Gw6pDLhcBcoQesN72qfotTgFa7cbuqZpkX3Xo6pLhPhv"},"metadata":{"from":"Th7MpTaRZVRYnPiabds81Y"},"type":"0"},"txnMetadata":{"seqNo":1,"txnId":"fea82e10e894419fe2bea7d96296a6d46f50f93f9eeda954ec461b2ed2950b62"},"ver":"1"}
^
SyntaxError: Unexpected token :
at new Script (vm.js:74:7)
at createScript (vm.js:246:10)
at Object.runInThisContext (vm.js:298:10)
at Module._compile (internal/modules/cjs/loader.js:646:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:689:10)
at Module.load (internal/modules/cjs/loader.js:589:32)
at tryModuleLoad (internal/modules/cjs/loader.js:528:12)
at Function.Module._load (internal/modules/cjs/loader.js:520:3)
at Module.require (internal/modules/cjs/loader.js:626:17)
at require (internal/modules/cjs/helpers.js:20:18)
I am getting the errors below when executing this command:
RUST_TEST_THREADS=1 cargo test
from these instructions with this environment:
uname -msra
Linux proliant 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Everything up to that point worked successfully.
error: associated constants are experimental (see issue #29646)
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/indy-crypto-0.2.0/src/pair/amcl.rs:49:5
|
49 | const BYTES_REPR_SIZE: usize = MODBYTES * 4;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: associated constants are experimental (see issue #29646)
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/indy-crypto-0.2.0/src/pair/amcl.rs:198:5
|
198 | const BYTES_REPR_SIZE: usize = MODBYTES * 4;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: associated constants are experimental (see issue #29646)
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/indy-crypto-0.2.0/src/pair/amcl.rs:326:5
|
326 | const BYTES_REPR_SIZE: usize = MODBYTES;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: associated constants are experimental (see issue #29646)
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/indy-crypto-0.2.0/src/pair/amcl.rs:490:5
|
490 | const BYTES_REPR_SIZE: usize = MODBYTES * 16;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 4 previous errors
error: Could not compile `indy-crypto`.
Build failed, waiting for other jobs to finish...
error: build failed
Any suggestions? I am stuck at this point.
Thanks
The revpc_reg should be revoc_reg.
Cargo build is failing on Mac OS X (El Capitan). Looks like this isn't new, see evernym/sovrin-client-rust#84
Instructions followed https://github.com/hyperledger/indy-sdk/blob/master/doc/mac-build.md
Stack trace
$ cargo build
Compiling libsodium-sys v0.0.14
Compiling openssl-sys v0.9.16
Compiling zmq-pw-sys v0.9.8
Compiling rusqlite v0.10.1
error: failed to run custom build command for `libsodium-sys v0.0.14`
process didn't exit successfully: `/Volumes/d/java/labs/indy-sdk/libindy/target/debug/build/libsodium-sys-c34349471c02cc69/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "Failed to run `\"pkg-config\" \"--libs\" \"--cflags\" \"libsodium\"`: No such file or directory (os error 2)"', src/libcore/result.rs:860:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
warning: build failed, waiting for other jobs to finish...
error: build failed**
OS: MAC OS X
Running getting started node.js sample:
TypeError: indy.setProtocolVersion is not a function
If I do not set the protocol function:
Pool worker thread finished with error PoolIncompatibleProtocolVersion("Libindy PROTOCOL_VERSION is 1 but Pool Genesis Transactions are of version 1.4.Call indy_set_protocol_version(2) to set correct PROTOCOL_VERSION")
the callback function signatures for the arguments to indy_register_wallet_type
are not consistent with the rest of libindy.
was this intentional? if so, what is the reasoning behind this decision?
i was expecting to see callback functions with signatures like:
void (*some_callback)(indy_handle_t handle, indy_error_t error, char* another_param);
which would allow for the passing of the error value to a caller.
From the documentation in api/anoncreds.rs
:
/// config_json: type-specific configuration of credential definition as json:
/// - 'CL':
/// - support_revocation: whether to request non-revocation credential (optional, default false)
But if config_json is left empty, as the documentation suggests, the following error pops up:
Invalid structure: Cannot deserialize CredentialDefinitionConfig: InvalidStructure("missing field `support_revocation` at line 1 column 2")
This is due to the fact that in domain/anoncreds/credential_definition.rs
CredentialDefinitionConfig::support_revocation
has type bool
instead of Option<bool>
.
The limitation of libsodium <= 1.0.14 does not hold any longer now that sodiumoxide dependency has been updated from 0.0.14 to 0.0.16. It should be removed or at least upgraded to libsodium <= 1.0.16.
When errors are raised in the code, they include a description, e.g. in build_nym_request
in src/services/ledger/mod.rs
:
let data = match data {
Some(d) => Some(NymOperationData::from_json(d)
.map_err(|err| CommonError::InvalidStructure(format!("Invalid data json: {}", err.to_string())))?),
_ => None
};
But the callbacks on the API level only return the ErrorCode
without description, e.g. in src/api/ledger.rs
:
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
Hi,
Just running through the Windows install of the Indy environment, and all going well as far as the Cargo install.
Running the cargo command as specified, I receive the following error:
Unknown flag: --release
And when I remove this flag, it reports that --target is an unknown flag also.
The cargo --list command returns possible switches yet the --release and --target flags are not listed.
any suggestions?
thanks
n
Current Java SDK wrapper only returning general information when exception occurs, for example "org.hyperledger.indy.sdk.InvalidStructureException: A value being processed is not valid." when passing a JSON to Indy node which is not helpful to dig into it. Hope it can provide more information when such errors happened.
While running the "cargo build" in windows the build fails saying---
error: failed to run custom build command for
indy-crypto v0.1.6-dev-30process didn't exit successfully:
F:\Hyperledger Indy\git-code\indy-sdk\indy-sdk\libindy\target\debug\build\indy-crypto-7f8e44fb5ad897ae\build-script-build` (exit code: 101)
--- stdout
target=x86_64-pc-windows-msvc
--- stderr
thread 'main' panicked at 'called Result::unwrap()
on an Err
value: NotPresent', libcore\result.rs:945:5
note: Run with RUST_BACKTRACE=1
for a backtrace.
warning: build failed, waiting for other jobs to finish...
error: build failed`
When, I was trying to run the docker-compose in indy-sdk/doc/getting-started I wasn't able to get a key from ubuntu's key server.
Step 5/22 : RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88
---> Running in 5bb694c6f621
Executing: /tmp/tmp.sAbcDRiKqb/gpg.1.sh --keyserver
keyserver.ubuntu.com
--recv-keys
68DB5E88
gpg: requesting key 68DB5E88 from hkp server keyserver.ubuntu.com
gpg: keyserver timed out
gpg: keyserver receive failed: keyserver error
I was able to fix it by:
keyserver.ubuntu.com
with hkp://keyserver.ubuntu.com:80
in /indy-sdk/doc/getting-started/getting_started.dockerfile and indy-sdk/ci/indy-pool.dockerfiledocker-compose build --no-cache
docker-compose up
I think the keyserver addresses should be updated, or at the least, the documentation updated to address this.
Thanks.
According to the indy-node readme, the indy-sdk cli should replace the indy-node cli.
But, looking at the source of the former, the source of the latter and the design document of the latter, it appears that the indy-sdk cli is still missing many functions.
I found a jira issue about the overall switch between the two clis, but I didn't manage to understand whether the missing commands will be implemented and, if so, whether they will be available soon or require some more time.
Current how-tos seem based on 1.3.0 which are not working with 1.4.0, hope can provide more examples with 1.4.0. Or at least give some example JSONs in Libindy migration Guide.
Setting up the Vagrant VM environment (or Docker) and running the Python Test programs from the Libindy01 VM produces the following error.
Note: Both the 'Stable' branch and the 'Master' branch of Indy-Node have been tested and both return this error.
INFO|indy::commands | src/commands/mod.rs:108 | PoolCommand command received INFO|indy::services::pool | src/services/pool/mod.rs:549 | RemoteNode::send_str Node1 pi INFO|indy::services::pool | src/services/pool/mod.rs:549 | RemoteNode::send_str Node3 pi INFO|indy::services::pool | src/services/pool/mod.rs:549 | RemoteNode::send_str Node2 pi INFO|indy::services::pool | src/services/pool/mod.rs:549 | RemoteNode::send_str Node4 pi INFO|indy::services::pool | src/services/pool/mod.rs:543 | RemoteNode::recv_msg Node2 po INFO|indy::services::pool | src/services/pool/mod.rs:549 | RemoteNode::send_str Node2 {"op":"LEDGER_STATUS","txnSeqNo":4,"merkleRoot":"HPjXYNQy1UMjoD3XkBnZZaoL8B8a4N4foZdKCpyQDBC6","ledgerId":0,"ppSeqNo":null,"viewNo":null} INFO|indy::services::pool | src/services/pool/mod.rs:543 | RemoteNode::recv_msg Node1 po INFO|indy::services::pool | src/services/pool/mod.rs:549 | RemoteNode::send_str Node1 {"op":"LEDGER_STATUS","txnSeqNo":4,"merkleRoot":"HPjXYNQy1UMjoD3XkBnZZaoL8B8a4N4foZdKCpyQDBC6","ledgerId":0,"ppSeqNo":null,"viewNo":null} INFO|indy::services::pool | src/services/pool/mod.rs:543 | RemoteNode::recv_msg Node4 po INFO|indy::services::pool | src/services/pool/mod.rs:549 | RemoteNode::send_str Node4 {"op":"LEDGER_STATUS","txnSeqNo":4,"merkleRoot":"HPjXYNQy1UMjoD3XkBnZZaoL8B8a4N4foZdKCpyQDBC6","ledgerId":0,"ppSeqNo":null,"viewNo":null} INFO|indy::services::pool | src/services/pool/mod.rs:543 | RemoteNode::recv_msg Node3 po INFO|indy::services::pool | src/services/pool/mod.rs:549 | RemoteNode::send_str Node3 {"op":"LEDGER_STATUS","txnSeqNo":4,"merkleRoot":"HPjXYNQy1UMjoD3XkBnZZaoL8B8a4N4foZdKCpyQDBC6","ledgerId":0,"ppSeqNo":null,"viewNo":null} INFO|indy::services::pool | src/services/pool/mod.rs:543 | RemoteNode::recv_msg Node4 {"ledgerId":0,"viewNo":null,"txnSeqNo":4,"ppSeqNo":null,"op":"LEDGER_STATUS","merkleRoot":"DKTaqoxsaDxNwVBhGyqH5W6HRMmQ8viSSeypSKekfuQw"} INFO|indy::services::pool | src/services/pool/mod.rs:543 | RemoteNode::recv_msg Node2 {"ledgerId":0,"viewNo":null,"txnSeqNo":4,"op":"LEDGER_STATUS","merkleRoot":"DKTaqoxsaDxNwVBhGyqH5W6HRMmQ8viSSeypSKekfuQw","ppSeqNo":null} INFO|indy::services::pool | src/services/pool/mod.rs:543 | RemoteNode::recv_msg Node3 {"viewNo":null,"ppSeqNo":null,"ledgerId":0,"txnSeqNo":4,"op":"LEDGER_STATUS","merkleRoot":"DKTaqoxsaDxNwVBhGyqH5W6HRMmQ8viSSeypSKekfuQw"} INFO|indy::commands | src/commands/mod.rs:108 | PoolCommand command received INFO|indy::commands::pool | src/commands/pool.rs:67 | OpenAck handle 1, pool_id 2, result Err(CommonError(InvalidState("Ledger merkle tree doesn\'t acceptable for current tree."))) ERROR|indy::errors::indy | src/errors/indy.rs:68 | Casting error to ErrorCode: Invalid library state: Ledger merkle tree doesn't acceptable for current tree. DEBUG:indy.libindy:_indy_callback: >>> command_handle: 1, err 112, args: (0,) DEBUG:indy.libindy:_indy_callback: <<< DEBUG:indy.libindy:_indy_loop_callback: >>> command_handle: 1, err 112, args: (0,) WARNING:indy.libindy:_indy_loop_callback: Function returned error 112 DEBUG:indy.libindy:_indy_loop_callback <<< ERROR|indy::services::pool | src/services/pool/mod.rs:428 | Pool worker thread finished with error CommonError(InvalidState("Ledger merkle tree doesn\'t acceptable for current tree.")) Traceback (most recent call last): File "ServiceOntario.py", line 168, in <module> loop.run_until_complete(main()) File "/usr/lib/python3.5/asyncio/base_events.py", line 387, in run_until_complete return future.result() File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result raise self._exception File "/usr/lib/python3.5/asyncio/tasks.py", line 241, in _step result = coro.throw(exc) File "ServiceOntario.py", line 122, in main pool_handle = await open_pool() File "ServiceOntario.py", line 97, in open_pool pool_handle = await pool.open_pool_ledger(pool_name, None) File "/usr/local/lib/python3.5/dist-packages/indy/pool.py", line 82, in open_pool_ledger open_pool_ledger.cb) File "/usr/lib/python3.5/asyncio/futures.py", line 361, in __iter__ yield self # This tells Task to wait for completion. File "/usr/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup future.result() File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result raise self._exception indy.error.IndyError: ErrorCode.CommonInvalidState
Hi,
I tried the getting started code with the docker-compose provided and I encounter an error when trying to create the Steward wallet:
`IndyError Traceback (most recent call last)
in run()
25 await wallet.create_wallet(pool_name, steward_wallet_name, None, None,
---> 26 None)
27 except IndyError as ex:
/usr/local/lib/python3.5/dist-packages/indy/wallet.py in create_wallet(pool_name, name, xtype, config, credentials)
51 c_credentials,
---> 52 create_wallet.cb)
53
/usr/lib/python3.5/asyncio/futures.py in iter(self)
362 assert self.done(), "yield from wasn't used with future"
--> 363 return self.result() # May raise too.
364
/usr/lib/python3.5/asyncio/futures.py in result(self)
273 if self._exception is not None:
--> 274 raise self._exception
275 return self._result
IndyError: ErrorCode.CommonInvalidParam6`
Do you have any idea of what is causing this ?
When I run cargo test: I got this error.
Any clue?
services::wallet::tests::wallet_service_get_pool_name_works stdout ----
thread 'services::wallet::tests::wallet_service_get_pool_name_works' panicked at 'called Result::unwrap()
on an Err
value: CommonError(IOError(Error { repr: Os { code: 2, message: "No such file or directory" } }))', /checkout/src/libcore/result.rs:916:5
services::wallet::tests::wallet_service_set_get_not_expired_works_for_expired stdout ----
thread 'services::wallet::tests::wallet_service_set_get_not_expired_works_for_expired' panicked at 'called Result::unwrap()
on an Err
value: CommonError(InvalidState("Unexpected SQLite error: unable to open database file"))', /checkout/src/libcore/result.rs:916:5
Super excited to see Sovrin joining Hyperledger project. However, I'm completely lost (1) how to deploy an Indy blockchain locally ? (2) where are the smart contract details - will chaincode run on Indy? (3) where are the source codes for the plenum blockchain? (4) Is there a doc anywhere with these details?
Following the instructions here, experiencing issues executing the following command:
pip3 install -U --no-cache-dir sovrin-client
which yields
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DBENCHMARK_ENABLED=1 -Icharm/core/utilities/ -Icharm/core/benchmark/ -I/usr/include/python3.5m -c charm/core/math/pairing/pairingmodule.c -o build/temp.linux-x86_64-3.5/charm/core/math/pairing/pairingmodule.o
In file included from charm/core/math/pairing/pairingmodule.c:30:0:
charm/core/math/pairing/pairingmodule.h:37:17: fatal error: gmp.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-build-t8l864o5/Charm-Crypto/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-5oj3fh_2-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-t8l864o5/Charm-Crypto/
root@619ca0be244e:/#
This issue is discussed here BUT I have tried the Xcode approach with the latest version of Mac OS including repairing the crypto.h file for openssl and was unable to fix the issue reported above. My mac os ver is 10.12.6.
I then decided to do a simple docker container for Ubuntu with a docker attach so that I can hit my local sovrin cluster of 4 validator nodes. Unfortunately, I get the same error.
In both cases the issue is with the gmp.h file.
Is there a better crypto package that works and is more dev-ops friendly across platforms?
Any suggestions?
Am I following the wrong getting started instructions?
Test pool started from indy-sdk Dockerfile, master branch (yesterday).
Client using custom Android build of indy-sdk, master branch (three days ago).
Code follows step by step the ledger tutorial, but in Typescript.
From code:
const get_nym_req = await indy.build_get_nym_request(trustee_did, did);
const get_nym_res = await indy.submit_request(pool, get_nym_req) as any;
From Android log:
indy::api::ledger: indy_submit_request:
>>> pool_handle: 2, request_json: 0x660219f0
indy::api::ledger: indy_submit_request: entities
>>> pool_handle: 2, request_json: "\"{\\\"reqId\\\":1527667759626699721,\\\"identifier\\\":\\\"V4SGRU86Z58d6TV7PBUe6f\\\",\\\"operation\\\":{\\\"type\\\":\\\"105\\\",\\\"dest\\\":\\\"J4qUvZPtsMQMv4KJ6FBes6\\\"},\\\"protocolVersion\\\":1}\""
indy::commands: LedgerCommand command received
indy::commands::ledger: SubmitRequest command received
indy::commands::ledger: submit_request
>>> handle: 2, request_json: "\"{\\\"reqId\\\":1527667759626699721,\\\"identifier\\\":\\\"V4SGRU86Z58d6TV7PBUe6f\\\",\\\"operation\\\":{\\\"type\\\":\\\"105\\\",\\\"dest\\\":\\\"J4qUvZPtsMQMv4KJ6FBes6\\\"},\\\"protocolVersion\\\":1}\""
indy::services::pool: zmq poll 1
indy::services::pool: cmd [[34, 123, 92, 34, 114, 101, 113, 73, 100, 92, 34, 58, 49, 53, 50, 55, 54, 54, 55, 55, 53, 57, 54, 50, 54, 54, 57, 57, 55, 50, 49, 44, 92, 34, 105, 100, 101, 110, 116, 105, 102, 105, 101, 114, 92, 34, 58, 92, 34, 86, 52, 83, 71, 82, 85, 56, 54, 90, 53, 56, 100, 54, 84, 86, 55, 80, 66, 85, 101, 54, 102, 92, 34, 44, 92, 34, 111, 112, 101, 114, 97, 116, 105, 111, 110, 92, 34, 58, 123, 92, 34, 116, 121, 112, 101, 92, 34, 58, 92, 34, 49, 48, 53, 92, 34, 44, 92, 34, 100, 101, 115, 116, 92, 34, 58, 92, 34, 74, 52, 113, 85, 118, 90, 80, 116, 115, 77, 81, 77, 118, 52, 75, 74, 54, 70, 66, 101, 115, 54, 92, 34, 125, 44, 92, 34, 112, 114, 111, 116, 111, 99, 111, 108, 86, 101, 114, 115, 105, 111, 110, 92, 34, 58, 49, 125, 34], [5, 0, 0, 0]]
indy::services::pool:..: cmd "\"{\\\"reqId\\\":1527667759626699721,\\\"identifier\\\":\\\"V4SGRU86Z58d6TV7PBUe6f\\\",\\\"operation\\\":{\\\"type\\\":\\\"105\\\",\\\"dest\\\":\\\"J4qUvZPtsMQMv4KJ6FBes6\\\"},\\\"protocolVersion\\\":1}\""
indy::api::ledger: indy_submit_request:
<<< res: Success
indy::services::pool: zmq poll loop <<
indy::commands: LedgerCommand command received
indy::commands::ledger: SubmitAck command received
indy::errors::indy: Casting error to ErrorCode: Invalid structure: No reqId in request
indy::services::pool: zmq poll loop >>
indy::api::ledger: indy_submit_request: request_result_json: ""
when walking through the getting started guide using docker, the setup is somewhat difficult. I've had to make changes to the docker-compose.yaml (IP-pools) as well as I can't identify why there's about 20 docker images, and what each one does. Is there a way that we could build a docker image and commit it to the docker repository, helping to streamline the getting started process. Additional steps should be added to the instruction guides to indicate that cargo build should be run in indy-sdk and indy-crypto to get tests passing.
sovrin_store_their_did call doesn't support verkeys in and abbreviated form. I suggest adding support of providing verkey in abbreviated form.
The nodes are set up with the docket compose .. And I am using the master branch
The line anoncreds.prover_store_credential(alice_wallet, None, transcript_cred_request_json,
transcript_cred_request_metadata_json, authdecrypted_transcript_cred_json,
faber_transcript_cred_def, None)
fails with the following exception
Traceback (most recent call last):
File "/home/srinivasan/ide/pycharm-community-2018.1.1/helpers/pydev/pydevd.py", line 1664, in
main()
File "/home/srinivasan/ide/pycharm-community-2018.1.1/helpers/pydev/pydevd.py", line 1658, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "/home/srinivasan/ide/pycharm-community-2018.1.1/helpers/pydev/pydevd.py", line 1068, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/home/srinivasan/ide/pycharm-community-2018.1.1/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/home/srinivasan/code/indy-sdk/samples/python/src/main.py", line 16, in
run_coroutine(main)
File "/home/srinivasan/code/indy-sdk/samples/python/src/utils.py", line 45, in run_coroutine
loop.run_until_complete(coroutine())
File "/usr/lib/python3.5/asyncio/base_events.py", line 387, in run_until_complete
return future.result()
File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(None)
File "/home/srinivasan/code/indy-sdk/samples/python/src/main.py", line 8, in main
await getting_started.run()
File "/home/srinivasan/code/indy-sdk/samples/python/src/getting_started.py", line 243, in run
faber_transcript_cred_def, None)
File "/home/srinivasan/code/indy-sdk/samples/python/venv/lib/python3.5/site-packages/indy/anoncreds.py", line 618, in prover_store_credential
prover_store_credential.cb)
File "/usr/lib/python3.5/asyncio/futures.py", line 363, in iter
return self.result() # May raise too.
File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
indy.error.IndyError: ErrorCode.CommonInvalidParam8
Hi - similar scenario to issue 447 but different problem.
Running the Setup Indy SDK build environment instructions,
All OK (including cargo build
) until step 'Run tests' RUST_TEST_THREADS=1 cargo test
.
Then error: error: linking with 'cc' failed: exit code: 1
I thought this might be similar to issue 295 as my libsodium
version was 1.0.8-5. Upgraded libsodium8
and libsodium-dev
to 1.0.13.1 but this made no difference.
Environment detail:
uname -a
: Linux hidalgo 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
rustc --version
: rustc 1.22.1 (05e2e1c41 2017-11-22)
What further info would help diagnose the issue?
Thanks!
Cargo build is failing for MacOS
error: linking with cc
failed: exit code: 1
note: Undefined symbols for architecture x86_64:
"_je_malloc_usable_size", referenced from:
heapsize::heap_size_of_impl::hd63dce4a1e7de8ce in libheapsize-81e9311798c7d6fb.rlib(heapsize-81e9311798c7d6fb.0.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Following the instructions here:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88
sudo add-apt-repository "deb https://repo.sovrin.org/sdk/deb xenial stable"
sudo apt-get update
sudo apt-get install -y indy-cli
yeilds:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package indy-cli
Can somone please advise?
Dear indy team, even though this not an issue, I want to ask if you have investigated your mechanisms according to GDPR. It wood be very helpful for any application with users in the EU considering to integrate indy.
Thanks!
I followed the build instructions in mac-build.md. I get the following error:
Compiling sodiumoxide v0.0.16
error: failed to run custom build command for `zmq-sys v0.8.2`
process didn't exit successfully: `/Users/harold/Documents/workspace/indy-sdk/libindy/target/debug/build/zmq-sys-874f4247528cfe3b/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'Unable to locate libzmq:
`"pkg-config" "--libs" "--cflags" "libzmq >= 3.2"` did not exit successfully: exit code: 1
--- stderr
Package libzmq was not found in the pkg-config search path.
Perhaps you should add the directory containing `libzmq.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libzmq' found
', /Users/harold/.cargo/registry/src/github.com-1ecc6299db9ec823/zmq-sys-0.8.2/build.rs:31:17
note: Run with `RUST_BACKTRACE=1` for a backtrace.
warning: build failed, waiting for other jobs to finish...
error: build failed
My environment variables are:
export PKG_CONFIG_ALLOW_CROSS=1
export CARGO_INCREMENTAL=1
export RUST_LOG=indy=trace
export RUST_TEST_THREADS=1
export OPENSSL_DIR=/usr/local/Cellar/openssl/1.0.2o_2
I'm following instructions here: https://github.com/hyperledger/indy-node/blob/stable/environment/vagrant/training/vb-multi-vm/TestIndyClusterSetup.md
I'm on MacBook Pro (15-inch, 2017)running OSX High Sierra 10.13.4 (17E202)
Everything has worked so far, but when I try to follow the instructions for starting up the agents, I get a syntax error.
I ran:
cd indy-node/environment/vagrant/training/vb-multi-vm
vagrant ssh agent01
python /usr/local/lib/python3.5/dist-packages/indy_client/test/agent/faber.py --port 5555
That last python command gives me this error:
File "/usr/local/lib/python3.5/dist-packages/indy_client/test/agent/faber.py", line 99 async def bootstrap_faber(agent): ^ SyntaxError: invalid syntax
I'm not hugely up with Python so I haven't tried debugging it myself yet, just wasn't sure what I might be missing - have I somehow gotten the wrong version of python or something for these not to work as described?
I've followed all the instructions on the above page, no errors so far except for this.
I've successfully ran pip3 install indy-node-dev on Mac but am running into an error when trying to start nodes
which -a generate_indy_pool_transactions
/usr/local/bin/generate_indy_pool_transactions
bc-computer:~ momi$ /usr/local/bin/generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 2 3 4
Traceback (most recent call last):
File "/usr/local/bin/generate_indy_pool_transactions", line 16, in <module>
getTxnOrderedFields(), ConfigHelper, NodeConfigHelper)
File "/usr/local/lib/python3.6/site-packages/plenum/common/test_network_setup.py", line 207, in bootstrapTestNodes
for line in fileinput.input(['/etc/indy/indy_config.py'], inplace=True):
File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/fileinput.py", line 250, in __next__
line = self._readline()
File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/fileinput.py", line 337, in _readline
os.rename(self._filename, self._backupfilename)
PermissionError: [Errno 13] Permission denied: '/etc/indy/indy_config.py' -> '/etc/indy/indy_config.py.bak'
The original error I got was that the file wasn't found:
FileNotFoundError: [Errno 2] No such file or directory: '/etc/indy/indy_config.py' -> '/etc/indy/indy_config.py.bak'
So I touched the file which resulted in the permission denied error.
touch /etc/indy/indy_config.py
touch: /etc/indy/indy_config.py: Permission denied
bc-computer:~ momi$ sudo touch /etc/indy/indy_config.py
I also tried to run the generate_indy_pool_transactions command as sudo
bc-computer:~ momi$ sudo touch /etc/indy/indy_config.py
but got this error, probably because I didn't have the indy_config.py file to begin with:
sudo generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 2 3 4
Traceback (most recent call last):
File "/usr/local/bin/generate_indy_pool_transactions", line 16, in <module>
getTxnOrderedFields(), ConfigHelper, NodeConfigHelper)
File "/usr/local/lib/python3.6/site-packages/plenum/common/test_network_setup.py", line 216, in bootstrapTestNodes
config_helper_class, node_config_helper_class)
File "/usr/local/lib/python3.6/site-packages/plenum/common/test_network_setup.py", line 84, in bootstrapTestNodesCore
os.makedirs(config_helper.genesis_dir, exist_ok=True)
File "/usr/local/lib/python3.6/site-packages/indy_common/config_helper.py", line 16, in genesis_dir
os.path.join(self.config.GENESIS_DIR, self.config.NETWORK_NAME))
AttributeError: module 'indy_config.py' has no attribute 'GENESIS_DIR'
I think this is an attempt to resolve the problem of missing files.
Should I run any of the scripts from that commit? Will they run on MacOS (High Sierra)?
My environment is:
uname -msra
Darwin bc-computer.local 17.2.0 Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2017; root:xnu-4570.20.62~3/RELEASE_X86_64 x86_64
Please advise on any next steps I should take to get problem resolved and to start nodes.
Thanks
Currently the paths where configurations and wallets are searched for and saved to are fixed in EnvironmentUtils::indy_home_path
and similar functions.
It would be better to have the following system to set the indy home path:
indy_set_home_path(const char*)
); if this API has not been called yet when the path is needed, thenINDY_HOME_PATH
); if this variable is not set thenIt would be even better to have the above system available at finer granularity, so that EnvironmentUtils::<whatever>_home_path
(where <whatever>
is currently either wallet
or pool
) can be controlled in the following ways:
indy_set_<whatever>_path(const char*)
); if this API has not been called yet when the path is needed, thenINDY_<WHATEVER>_PATH
); if this variable is not set then<EnvironmentUtils::indy_home_path>/<whatever>
, where EnvironmentUtils::indy_home_path
can be controlled as explained above.If this is to be implemented, the ability to set the temporary directory in the same way as explained above for the home directory would make the feature more complete, but is arguably less useful in practical scenarios.
If DID isn't provided sovrin_create_and_store_my_did always use first 16 bytes of generated verkey as DID, but identities in pool ledger generated by init scripts use full verkey as DID.
I now that CID is deprecated, but in the current state, it is hard to use libsovrin with private pool. Current integration tests use verkey instead of did as rough workaround and it can confuse potential library users.
I suggest adding support of optional "cid" attribute to did_json param. If it is true full generated verkey will be used as DID if there is no explicit DID.
libindy is checking parameters when called through the API.
Additionally there are check at other places like e.g.
https://github.com/hyperledger/indy-sdk/blob/master/libindy/src/commands/non_secrets.rs#L241
The 'from_json' call just checks whether the options string is deserializable but does not use the resulting object. Using the RecordOptions object does not really make sense because in the end the options end up in the wallet_storage API which requires a string anyway.
'fail-fast' is good but this looks like wasted CPU cycles. Not sure what to do about this.
One line above the RecordOptions wasted json deserialization is a call to _check_type which makes it clearer what the purpose is: check_type is checking the type and RecordOptions::from_json is checking the options string.
Should those checks be configured away when a release version of libindy is build?
Should those checks be left to the code that is actually consuming the parameters, so fail-late?
This line has a constant nonce
https://github.com/hyperledger/indy-sdk/blob/master/samples/nodejs/gettingStarted.js#L246
Two questions:
What are the requirements on nonce? Is there a minimum length or an exact length requirement? Some Rust code suggests that some nonces have an exact length.
https://github.com/hyperledger/indy-sdk/blob/master/libindy/src/utils/crypto/chacha20poly1305_ietf/sodium.rs#L10
In the Rust code there is a method gen_nonce. Would it make sense to expose that to the API and wrappers? If not, would you consider providing random nonce generation examples in all the getting_started guides to help developers generate them and not copying the static ones to production code.
var crypto = require('crypto'),
biguint = require('biguint-format');
biguint.format(crypto.randomBytes(16), 'dec');
There is zero information about what nonce is in https://www.npmjs.com/package/indy-sdk.
Hi,
I'm trying to use the Python wrapper against the master of hyperledger/indy-node and it fails consistently when running open_pool_ledger. Initially I though there's something wrong with my Python code, but then I tried running the code from samples and got the same error: Ledger merkle tree doesn't acceptable for current tree:
cd samples/python
python3 src/main.py
Error:
...
INFO|indy::services::pool | src/services/pool/mod.rs:544 | RemoteNode::send_str Node1 {"op":"LEDGER_STATUS","txnSeqNo":4,"merkleRoot":"EBEbqTXvTpgJ6z6W9YGme41TdcnWW6AQjqXt7duTnbRP","ledgerId":0,"ppSeqNo":null,"viewNo":null}
TRACE|indy::services::pool | src/services/pool/mod.rs:246 | zmq poll loop <<
TRACE|indy::services::pool | src/services/pool/mod.rs:240 | zmq poll loop >>
TRACE|indy::services::pool | src/services/pool/mod.rs:348 | get_zmq_poll_timeout first_event Tm { tm_sec: 21, tm_min: 59, tm_hour: 16, tm_mday: 15, tm_mon: 1, tm_year: 118, tm_wday: 4, tm_yday: 45, tm_isdst: 0, tm_utcoff: 0, tm_nsec: 454409000 }
TRACE|indy::services::pool | src/services/pool/mod.rs:349 | get_zmq_poll_timeout now_utc Tm { tm_sec: 31, tm_min: 58, tm_hour: 16, tm_mday: 15, tm_mon: 1, tm_year: 118, tm_wday: 4, tm_yday: 45, tm_isdst: 0, tm_utcoff: 0, tm_nsec: 534605000 }
TRACE|indy::services::pool | src/services/pool/mod.rs:351 | get_zmq_poll_timeout diff Duration Duration { secs: 49, nanos: 919804000 }
TRACE|indy::services::pool | src/services/pool/mod.rs:353 | get_zmq_poll_timeout diff ms 49919
TRACE|indy::services::pool | src/services/pool/mod.rs:293 | zmq poll 2
INFO|indy::services::pool | src/services/pool/mod.rs:538 | RemoteNode::recv_msg Node4 {"viewNo":null,"op":"LEDGER_STATUS","ledgerId":0,"merkleRoot":"FTH83QNd84mnaXFD8vQdRHbRmmkZqz22pbHFjzy9mYt1","ppSeqNo":null,"txnSeqNo":4}
INFO|indy::services::pool | src/services/pool/mod.rs:538 | RemoteNode::recv_msg Node3 {"merkleRoot":"FTH83QNd84mnaXFD8vQdRHbRmmkZqz22pbHFjzy9mYt1","ledgerId":0,"viewNo":null,"ppSeqNo":null,"op":"LEDGER_STATUS","txnSeqNo":4}
TRACE|indy::services::pool | src/services/pool/mod.rs:244 | process_actions - Invalid library state: Ledger merkle tree doesn't acceptable for current tree.
ERROR|indy::services::pool | src/services/pool/mod.rs:426 | Pool worker thread finished with error CommonError(InvalidState("Ledger merkle tree doesn\'t acceptable for current tree."))
INFO|indy::commands | src/commands/mod.rs:99 | PoolCommand command received
INFO|indy::commands::pool | src/commands/pool.rs:68 | OpenAck handle 4, pool_id 5, result Err(CommonError(InvalidState("Ledger merkle tree doesn\'t acceptable for current tree.")))
ERROR|indy::errors::indy | src/errors/indy.rs:68 | Casting error to ErrorCode: Invalid library state: Ledger merkle tree doesn't acceptable for current tree.
WARNING:indy.libindy:_indy_loop_callback: Function returned error 112
Traceback (most recent call last):
File "src/main.py", line 15, in <module>
loop.run_until_complete(main())
File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 467, in run_until_complete
return future.result()
File "src/main.py", line 10, in main
await ledger.demo()
File "/Users/me/Projects/hyperledger/indy-sdk/samples/python/src/ledger.py", line 24, in demo
pool_handle = await pool.open_pool_ledger(pool_name, None)
File "/Users/me/Projects/hyperledger/indy-sdk/wrappers/python/indy/pool.py", line 82, in open_pool_ledger
open_pool_ledger.cb)
indy.error.IndyError: ErrorCode.CommonInvalidState
I tried many different ways of connecting to Indy using the Python wrapper but it always fails with CommonInvalidState.
I found this issue report: https://jira.hyperledger.org/browse/IS-355?page=com.atlassian.streams.streams-jira-plugin%3Aactivity-stream-issue-tab
My suspicion is that the version of indy-crypto may be inconsistent between indy-sdk and indy-node, but I can't see the way to roll it back for indy-sdk without losing the whole lot of recent changes.
Any guidance how to fix it would be highly appreciated.
Stan
Developers have to go through some repetitive code when using libindy.
The pattern is build request, send request, sometimes parse response.
Like here: https://github.com/hyperledger/indy-sdk/blob/master/samples/nodejs/gettingStarted.js#L715
These are only small snippets but why repeat them in all applications using libindy?
I heard this several time from different developers adn suggest to move these methods up and expose them in the API (maybe even deprecating the low-level methods?)
I do this tutorial. I run "mvn clean install" It show "Build Success" on terminal. I already have libindy.so file in ./lib/
But, When I click button "Run App" on Eclipse IDE, It show this error.
And this is my pom.xml file:
<modelVersion>4.0.0</modelVersion>
<groupId>org.hyperledger.indy-sdk-java</groupId>
<artifactId>indy-sdk-java-sample</artifactId>
<packaging>jar</packaging>
<version>0.0.1</version>
<name>indy-sdk-java</name>
<description>This is the sample of usage java wrapper for Hyperledger Indy SDK.
</description>
<licenses>
<license>
<name>MIT/Apache-2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<url>https://github.com/hyperledger/indy-sdk</url>
<connection>scm:git:git://github.com/hyperledger/indy-sdk.git</connection>
<developerConnection>scm:git:[email protected]:hyperledger/indy-sdk.git</developerConnection>
</scm>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<github.global.server>github</github.global.server>
</properties>
<repositories>
<repository>
<id>evernym</id>
<url>https://repo.evernym.com/artifactory/libindy-maven-local</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>execution</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
<configuration>
<includeScope>runtime</includeScope>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
<dependency>
<groupId>org.hyperledger</groupId>
<artifactId>indy</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
Help me, I run on Ubuntu 16.04, this is the first time I work with maven.
Thank you.
Console log is showing this
error: failed to run custom build command for `zmq-sys v0.8.2`
When I tried to issue: cargo test. I got this error:
"Unexpected SQLite error: disk I/O error"
I have installed libsqlite-dev.
Is there any package I missed? Or something else?
I've started to learn indy project by looking through getting started guide thoroughly, and while I did get a lot of understanding of working processes there were some rough edges. I tried to fix some in #556, but there are some more.
One thing is that wallet API is async, and create_wallet takes pool_name as a parameter. While after reading more documentation (and asking people) it became clear that this is done for consistency with other SDK APIs and for ability to handle remote wallets, at first I had impression that wallet had to connect to pool somehow, which was distracting. I think it would be great to have a paragraph somewhere in this guide elaborating on this.
Another one is onboarding function in jupyter notebook. I understand that it was written to reduce amount of code to perform onboarding different trust anchors, but in it's current state it's still quite hard to read and especially correlate with documentation. Maybe it would be better to split it to different functions (according to concerned parties, instead of mixing all of them in big one), possible async ones communicating with each other using asyncio.Queue
.
Also, some things (like securely sending initial connection request during onboading) are seemingly out of scope for indy project, and it might be better for getting started guide to state these things explicitly where appropriate.
Overall, from my point of view the main problems in understanding this guide are numerous differences between documentation and notebook code and many intermingled entities in code.
UPD. This issue was moved: https://jira.hyperledger.org/browse/IS-579
from src.utils import get_pool_genesis_txn_path, run_coroutine
should be from utils
According to the documentation I can use the Indy CLI in batch mode with:
indy-cli <path-to-text-file>
I'm running it like:
indy /usr/myapp/setup.indy
And I get:
Loading module /usr/local/lib/python3.5/dist-packages/config/config-crypto-example1.py
Module loaded.
Indy-CLI (c) 2017 Evernym, Inc.
Type 'help' for more information.
Running Indy 1.2.270
Running command: '/usr/myapp/setup.indy'...
Invalid command: '/usr/myapp/setup.indy'
A note about my setup - I'm essentially following the docker build instructions here
which uses the following dependencies:
# Config apt
RUN add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu xenial main universe"
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68DB5E88
RUN add-apt-repository "deb https://repo.sovrin.org/deb xenial master"
RUN add-apt-repository "deb https://repo.sovrin.org/sdk/deb xenial stable"
# Update apt
RUN apt-get update
# Install packages
RUN apt-get install -y libsodium18
RUN apt-get install -y python3-charm-crypto
RUN apt-get install -y libindy
RUN apt-get install -y libindy-crypto
####################
## Indy
####################
# Config apt
# Update apt
RUN apt-get update
# Install packages
RUN apt-get install -y indy-node
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.