Aca-py 0.6.0: экземпляр INFO Ledger не предоставил ошибку / ошибку?

Я новичок в Hyperledger Aries и не могу понять, что делаю не так.

Среда:

  • Ubuntu16LTS
  • Докер 18.09.7 сборка 2d0083d
  • версия hyperledger-aries-python: 0.6.0 (исходный код)

Из репозитория aca-py (https://github.com/hyperledger/aries-cloudagent-python я запускаю:

./scripts/run_docker start -e http://host.docker.internal:8000 -it http 0.0.0.0 8000 -ot http --admin 0.0.0.0 11000 --admin-insecure-mode --log-level DEBUG --genesis-url https://raw.githubusercontent.com/CHempel-esatus/SSI4DE_Genesis/master/pool_transactions_genesis --trace

ПРИМЕЧАНИЕ. Я пробовал разные файлы pool_genesis_transaction и пытался передать их разными способами (через URL-адрес, через файл, расположенный в контейнере докеров). Всегда выпадает одна и та же или похожая информация:

      2021-03-12 09:48:32,311 aries_cloudagent.config.ledger INFO Ledger instance not provided
2021-03-12 09:48:32,312 aries_cloudagent.core.conductor WARNING No ledger configured

Вот полный вывод:

      2021-03-12 09:48:31,035 asyncio DEBUG Using selector: EpollSelector
2021-03-12 09:48:31,036 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.out_of_band
2021-03-12 09:48:31,037 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.actionmenu
2021-03-12 09:48:31,038 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.routing
2021-03-12 09:48:31,039 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.discovery
2021-03-12 09:48:31,041 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.introduction
2021-03-12 09:48:31,041 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.problem_report
2021-03-12 09:48:31,042 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.coordinate_mediation
2021-03-12 09:48:31,043 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.present_proof
2021-03-12 09:48:31,044 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.trustping
2021-03-12 09:48:31,045 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.didexchange
2021-03-12 09:48:31,047 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.issue_credential
2021-03-12 09:48:31,048 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.basicmessage
2021-03-12 09:48:31,050 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.protocols.connections
2021-03-12 09:48:31,051 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.holder
2021-03-12 09:48:31,057 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.ledger
2021-03-12 09:48:31,072 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.messaging.credential_definitions
2021-03-12 09:48:31,085 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.messaging.schemas
2021-03-12 09:48:31,091 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.revocation
2021-03-12 09:48:31,105 aries_cloudagent.core.plugin_registry DEBUG Loaded module: aries_cloudagent.wallet
2021-03-12 09:48:31,119 aries_cloudagent.config.ledger INFO Fetching genesis transactions from: https://raw.githubusercontent.com/CHempel-esatus/SSI4DE_Genesis/master/pool_transactions_genesis
2021-03-12 09:48:32,302 aries_cloudagent.core.profile INFO Create profile manager: in_memory
2021-03-12 09:48:32,311 aries_cloudagent.config.ledger INFO Ledger instance not provided
2021-03-12 09:48:32,312 aries_cloudagent.core.conductor WARNING No ledger configured

::::::::::::::::::::::::::::::::::::::::::::::
:: Aries Cloud Agent ::
:: ::
:: ::
:: Inbound Transports: ::
:: ::
:: - http://0.0.0.0:8000 ::
:: ::
:: Outbound Transports: ::
:: ::
:: - http ::
:: - https ::
:: ::
:: Administration API: ::
:: ::
:: - http://0.0.0.0:11000 ::
:: ::
:: ver: 0.6.0 ::
::::::::::::::::::::::::::::::::::::::::::::::

Listening...

Глядя на демонстрации, я просто не знаю, почему мой Овен не может подключиться к инди-леджеру. Использование indy-cli с теми же файлами genesis работало нормально. Интерфейс командной строки смог подключиться, поэтому я предполагаю, что все файлы pool_genesis_files правильные.

Я что-то делаю не так или чего-то не хватает?

1 ответ

Я наконец нашел решение. История, как я это нашел:

Короткий рассказ:

Предварительные требования: установите на свой компьютер indy-sdk, aries-cloudagent, python3_indy и python 3.6.9+. Посмотрите длинную историю, если вы не знаете, как это сделать. Python 3.6.9 выходит из коробки с Ubuntu18LTS

  1. установите aries-cloudagent-python (aca-py) локально.
  2. сначала запустите aca-py с помощью команды provision, чтобы настроить экземпляр aca-py. Используйте для этого аргумент типа кошелька indy
  3. запустите aca-py нормально с командой start и вашими config-params. Обязательно используйте флаг indy типа --wallet, чтобы иметь возможность подключиться к инди-леджеру.

Длинная история:

Внутри кода aries-cloudagent-python (aca-py) кажется, что конфигурация, какой реестр использовать (например, инди-реестр), исходит из указанного типа кошелька.

1-й: предоставление аргументов: --wallet-type indy-> это вернуло ошибку, что необходимы параметры --wallet-name и --wallet-key. Итак, я предоставил им:

      ./scripts/run_docker start 
-e http://127.0.0.1:8000 
-it http 127.0.0.1 8000 
-ot http
--admin 127.0.0.1 11000
--admin-insecure-mode
--log-level DEBUG
--genesis-url https://raw.githubusercontent.com/CHempel-esatus/SSI4DE_Genesis/master/pool_transactions_genesis 
--trace 
--recreate-wallet 
--wallet-type indy 
--wallet-name test 
--wallet-key 12345

2-й: это приводит к следующей ошибке, говорящей о том, что база данных для кошелька не предоставлена.

      2021-03-16 09:19:45,447 indy.libindy DEBUG _indy_loop_callback: >>> command_handle: 0, err , args: (0,)
2021-03-16 09:19:45,447 indy.libindy WARNING _indy_loop_callback: Function returned error 
2021-03-16 09:19:45,449 indy.libindy DEBUG _indy_loop_callback <<<
2021-03-16 09:19:45,449 aries_cloudagent.commands.start ERROR Exception during startup:
Traceback (most recent call last):
  File "/home/indy/aries_cloudagent/indy/sdk/wallet_setup.py", line 169, in open_wallet
    credentials=json.dumps(self.wallet_access),
  File "/home/indy/.pyenv/versions/3.6.13/lib/python3.6/site-packages/indy/wallet.py", line 127, in open_wallet
    open_wallet.cb)
indy.error.WalletNotFoundError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/indy/aries_cloudagent/commands/start.py", line 72, in init
    await startup
  File "/home/indy/aries_cloudagent/commands/start.py", line 28, in start_app
    await conductor.setup()
  File "/home/indy/aries_cloudagent/core/conductor.py", line 91, in setup
    self.root_profile, self.setup_public_did = await wallet_config(context)
  File "/home/indy/aries_cloudagent/config/wallet.py", line 40, in wallet_config
    profile = await mgr.open(context, profile_cfg)
  File "/home/indy/aries_cloudagent/indy/sdk/profile.py", line 161, in open
    opened = await indy_config.open_wallet()
  File "/home/indy/aries_cloudagent/indy/sdk/wallet_setup.py", line 182, in open_wallet
    ) from x_indy
  File "/home/indy/aries_cloudagent/indy/sdk/wallet_setup.py", line 169, in open_wallet
    credentials=json.dumps(self.wallet_access),
  File "/home/indy/.pyenv/versions/3.6.13/lib/python3.6/site-packages/indy/wallet.py", line 127, in open_wallet
    open_wallet.cb)
aries_cloudagent.core.error.ProfileNotFoundError: Wallet 'test' not found: Error: Wallet not found
  Caused by: No wallet database exists

3-й: В документации aca-py на https://github.com/hyperledger/aries-cloudagent-python/blob/main/DevReadMe.md прямо говорится:

Запуск локально: для локальной разработки мы рекомендуем использовать предоставленные сценарии Docker для запуска программного обеспечения ACA-Py.

4-е: aca-py может использовать sqlite, который установлен в контейнере докера. Чтобы убедиться, что aca-py совместим с sqlite, запустите

./scripts/run_docker start --help

который возвращает список доступных аргументов. Один из них следующий:

      --wallet-storage-type <storage-type>
                        Specifies the type of Indy wallet backend to use.
                        Supported internal storage types are 'basic' (memory),
                        'default' (sqlite), and 'postgres_storage'. The
                        default, if not specified, is 'default'. [env var:
                        ACAPY_WALLET_STORAGE_TYPE] 

5-е место: Бег

      ./scripts/run_docker provision 
-e http 
--genesis-url 
https://raw.githubusercontent.com/CHempel-esatus/SSI4DE_Genesis/master/pool_transactions_genesis 
--recreate-wallet 
--wallet-type indy 
--wallet-name test 
--wallet-key 12345

возвращается

      Successfully tagged aries-cloudagent-run:latest
Created new profile
Profile backend: indy
Profile name: test
No public DID
Ledger configured

Это странно, потому что теперь он может найти sqlite. Кажется, это правильно настроит базу данных, чтобы ее можно было использовать. Но поскольку он находится внутри контейнера докеров, и контейнер отбрасывает все изменения, эта внутренняя конфигурация никогда не будет доступна.

6-е. Чтобы решить эту проблему, я установил на Ubuntu18LTS пакет облачного агента aries локально с https://pypi.org/project/aries-cloudagent/

      pip3 install aries-cloudagent
pip3 install python3_indy

и следовал инструкциям по установке для indy-sdk https://github.com/hyperledger/indy-sdk

Я также установил sqlite на локальный компьютер с помощью:

      sudo apt install sqlite

7-е .: После перезагрузки системы я выполнил:

      aca-py provision -e http://127.0.0.1:8000 --genesis-url https://raw.githubusercontent.com/CHempel-esatus/SSI4DE_Genesis/master/pool_transactions_genesis --recreate-wallet --wallet-type indy --wallet-name test --wallet-key test

возвращение

      Created new profile
Profile backend: indy
Profile name: test
No public DID
Ledger configured

8-е .: После этого я запускаю aca-py в облаке и подключаюсь к своей бухгалтерской книге с помощью admin-REST-api.

Другие вопросы по тегам