1

When you install a Hyperledger Indy Node by using pip or pip3 you get this error while running various node scripts such as init_indy_keys and start_indy_node.

You get outputs like

Traceback (most recent call last): File "/usr/local/bin/start_indy_node", line 19, in client_ip=sys.argv[4], client_port=int(sys.argv[5]))

File "/usr/local/lib/python3.6/dist-packages/indy_node/utils/node_runner.py", line 51, in run_node ha=node_ha, cliha=client_ha)

File "/usr/local/lib/python3.6/dist-packages/indy_node/server/node.py", line 101, in __init__    config=config)

File "/usr/local/lib/python3.6/dist-packages/plenum/server/node.py", line 216, in __init__    self.bls_bft = self._create_bls_bft()

File "/usr/local/lib/python3.6/dist-packages/plenum/server/node.py", line 1131, in _create_bls_bft    bls_bft = bls_factory.create_bls_bft()

File "/usr/local/lib/python3.6/dist-packages/crypto/bls/bls_factory.py", line 72, in create_bls_bft    bls_crypto_verifier = self._bls_factory_crypto.create_bls_crypto_verifier()

File "/usr/local/lib/python3.6/dist-packages/crypto/bls/bls_factory.py", line 36, in create_bls_crypto_verifier
return self._create_bls_crypto_verifier(group_params)

File "/usr/local/lib/python3.6/dist-packages/plenum/bls/bls_crypto_factory.py", line 24, in _create_bls_crypto_verifier
return BlsCryptoVerifierIndyCrypto(group_params)

File "/usr/local/lib/python3.6/dist-packages/crypto/bls/indy_crypto/bls_crypto_indy_crypto.py", line 67, in __init__
IndyCryptoBlsUtils.bls_from_str(params.g, Generator)  # type: Generator

File "/usr/local/lib/python3.6/dist-packages/crypto/bls/indy_crypto/bls_crypto_indy_crypto.py", line 42, in bls_from_str
return cls.from_bytes(bts)

File "/usr/local/lib/python3.6/dist-packages/indy_crypto/bls.py", line 34, in from_bytes
do_call(cls.from_bytes_handler, xbytes, len(xbytes), byref(c_instance))

File "/usr/local/lib/python3.6/dist-packages/indy_crypto/lib.py", line 12, in do_call    err = getattr(_cdll(), name)(*args)

File "/usr/local/lib/python3.6/dist-packages/indy_crypto/lib.py", line 22, in _cdll    _cdll.cdll = _load_cdll()

File "/usr/local/lib/python3.6/dist-packages/indy_crypto/lib.py", line 51, in _load_cdll    getattr(res, "indy_crypto_init_logger")()

File "/usr/lib/python3.6/ctypes/__init__.py", line 361, in __getattr__
func = self.__getitem__(name)

File "/usr/lib/python3.6/ctypes/__init__.py", line 366, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))

AttributeError: /usr/lib/libindy_crypto.so: undefined symbol: indy_crypto_init_logger

This causes the commands you run not to complete successfully

Remy Lebeau
  • 555,201
  • 31
  • 458
  • 770
Taner
  • 31
  • 4

1 Answers1

0

This is because of configuration unconformity between node's python libraries and libindy-crypto library. After a pip3 installation you will have indy-node 1.8.1, for example. However, your libindy-crypto version may be 1.9.0 and The function name was changed in 1.9.0 as indy_crypto_set_logger.

When you choose using pip installation you have to specify a version for libindy-crypto library which is compatible with your rest of your installation.

So instead of issuing

sudo apt-get install libindy-crypto run this command sudo apt-get install libindy-crypto=0.4.5

You can find a complete sample guide to install an Indy Node at this URL: http://193.140.88.19/index.php/bag-hyperledger-indy-agina-katilim/

Taner
  • 31
  • 4