Hyperledger Indy 池连接 android 错误 -> InvalidStateException:SDK 库遇到意外的内部错误
Hyperledger Indy pool connecting android error -> InvalidStateException: The SDK library experienced an unexpected internal error
我有一个问题。
我正在尝试将 Android 应用程序连接到 indy 池,但我看到错误(分类帐操作超时)来源(https://github.com/jSh4rk/SampleIndyWallet)
我在 AWS(ubuntu 16.04 lts) 和 运行 节点之后安装了 indy docker
当运行docker我输入了命令
docker build --build-arg pool_ip=172.31.37.144 -f ci/indy-pool.dockerfile -t indy_pool
因为我希望 172.31.37.144
成为我的 docker 容器的私有 IP 地址:
docker run -itd -p 172.31.37.144:9701-9708:9701-9708 -t indy_pool
在 SampleIndyWallet 的文件 MainActivity.java 中,我将字符串 ip 更改为 public 我容器的 IP。
但是,我在打开到池的连接过程中遇到错误 org.hyperledger.indy.sdk.InvalidStateException: The SDK library experienced an unexpected internal error
。
您可能已经知道,为了从任何地方连接到 Hyperledger Indy,您需要创世文件。创世文件指定网络节点的 IP 地址及其相关的加密数据(签名、public 密钥...)。
使用您发布的命令构建 Indy 池时 docker
docker build --build-arg pool_ip=172.31.37.144 -f ci/indy-pool.dockerfile -t indy_pool
指定正确的 pool_ip
很重要。 pool_ip
将成为创世文件的一部分。当你向 indySDK 提供 genesis 文件时,它会获取这些 IP 并尝试与它们建立连接。如果您收到诸如 PoolTimeout
之类的错误,可能是因为无法从您 运行 IndySDK 所在的环境访问这些 IP。
因此,通过如上所述构建图像,您是在说:“连接到由该图像构成的容器的客户端必须能够通过地址 172.31.37.144
到达容器”。如果您尝试从同一网络中的其他 docker 容器连接到池,这可能会起作用。但是,如果应用程序在您的本地主机上 运行ning,172.31.37.144
将不会连接到任何地方,因为那只是 docker 网络中的内部 IP 地址。
据我了解,您想 运行 Indy 网络连接到池中,并从主机上的应用程序 运行ning 连接到池。最简单的方法是通过公开端口使网络在本地主机/127.0.0.1
上可访问。让我们首先构建 indy 网络容器,它将在其创世交易中包含 127.0.0.1
。
docker build --build-arg pool_ip=127.0.0.1 -f ci/indy-pool.dockerfile -t indy_pool
现在让我们读取图像的创世文件并将其存储在本地。
docker exec indy_pool cat '/var/lib/indy/sandbox/pool_transactions_genesis' > ~/my_genesis.txn
接下来,您将像之前那样启动池,但无需指定容器的内部 IP 地址 - 这无关紧要。
docker run -itd -p 9701-9708:9701-9708 -t indy_pool
现在,当您启动应用程序并尝试连接到池时,您必须指定我们在您的本地主机上创建的创世文件的路径。
我有一个问题。
我正在尝试将 Android 应用程序连接到 indy 池,但我看到错误(分类帐操作超时)来源(https://github.com/jSh4rk/SampleIndyWallet)
我在 AWS(ubuntu 16.04 lts) 和 运行 节点之后安装了 indy docker
当运行docker我输入了命令
docker build --build-arg pool_ip=172.31.37.144 -f ci/indy-pool.dockerfile -t indy_pool
因为我希望 172.31.37.144
成为我的 docker 容器的私有 IP 地址:
docker run -itd -p 172.31.37.144:9701-9708:9701-9708 -t indy_pool
在 SampleIndyWallet 的文件 MainActivity.java 中,我将字符串 ip 更改为 public 我容器的 IP。
但是,我在打开到池的连接过程中遇到错误 org.hyperledger.indy.sdk.InvalidStateException: The SDK library experienced an unexpected internal error
。
您可能已经知道,为了从任何地方连接到 Hyperledger Indy,您需要创世文件。创世文件指定网络节点的 IP 地址及其相关的加密数据(签名、public 密钥...)。
使用您发布的命令构建 Indy 池时 docker
docker build --build-arg pool_ip=172.31.37.144 -f ci/indy-pool.dockerfile -t indy_pool
指定正确的 pool_ip
很重要。 pool_ip
将成为创世文件的一部分。当你向 indySDK 提供 genesis 文件时,它会获取这些 IP 并尝试与它们建立连接。如果您收到诸如 PoolTimeout
之类的错误,可能是因为无法从您 运行 IndySDK 所在的环境访问这些 IP。
因此,通过如上所述构建图像,您是在说:“连接到由该图像构成的容器的客户端必须能够通过地址 172.31.37.144
到达容器”。如果您尝试从同一网络中的其他 docker 容器连接到池,这可能会起作用。但是,如果应用程序在您的本地主机上 运行ning,172.31.37.144
将不会连接到任何地方,因为那只是 docker 网络中的内部 IP 地址。
据我了解,您想 运行 Indy 网络连接到池中,并从主机上的应用程序 运行ning 连接到池。最简单的方法是通过公开端口使网络在本地主机/127.0.0.1
上可访问。让我们首先构建 indy 网络容器,它将在其创世交易中包含 127.0.0.1
。
docker build --build-arg pool_ip=127.0.0.1 -f ci/indy-pool.dockerfile -t indy_pool
现在让我们读取图像的创世文件并将其存储在本地。
docker exec indy_pool cat '/var/lib/indy/sandbox/pool_transactions_genesis' > ~/my_genesis.txn
接下来,您将像之前那样启动池,但无需指定容器的内部 IP 地址 - 这无关紧要。
docker run -itd -p 9701-9708:9701-9708 -t indy_pool
现在,当您启动应用程序并尝试连接到池时,您必须指定我们在您的本地主机上创建的创世文件的路径。