gpt4 book ai didi

node.js - 在亚马逊管理的区 block 链 hyperledger fabric 1.2 上部署和公开链码作为 REST api

转载 作者:数据小太阳 更新时间:2023-10-29 03:20:49 24 4
gpt4 key购买 nike

我已经使用 Hyperledger 1.2 配置了亚马逊管理的区 block 链设置。该网络由单个成员和单个对等 Node 准备。Hyperledger Fabric 客户端设置是使用 Golang 1.10.3。我已经安装、实例化、查询和调用 AWS 教程中给出的 mycc 链代码示例。哪个完美。在 this 之后完成了完整的练习链接。

我想将链代码部署并公开为 REST api。有一个示例项目 Amazon Managed Blockchain Workshop .他们使用 RESTful API,作为 Node.js Express 应用程序运行,使用 Hyperledger Fabric Client SDK 来查询和调用链代码。我想在为 AWS 管理的区 block 链 Hyper Ledger 1.2 准备的 Hyperledger Fabric Client 上运行非营利链代码示例

我执行了以下步骤:

以下是我如何运行和测试 REST API 的步骤。

cd ~/non-profit-blockchain/ngo-rest-api
nvm use lts/carbon
node app.js &

如果我执行注册/注册用户请求

curl -s -X POST http://localhost:3000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=john&orgName=Org1'

而不是显示:响应:

{"success":true,"secret":"","message":"michael enrolled Successfully"}

它显示下面的错误信息。

{"success":false,"message":"failed Error: Missing mspid parameter"}

我也尝试在请求中添加 mspid,但错误消息仍然相同。我错过了什么?

这里是 ngo-connection-profile.yaml 的内容

channels:
mychannel:
orderers:
- orderer.com
peers:
peer1:
endorsingPeer: true
chaincodeQuery: true
ledgerQuery: true
eventSource: true
<pre><code>
organizations:
Org1:
mspid:
peers:
- peer1
certificateAuthorities:
- ca-org1
orderers:
orderer.com:
url: grpcs://orderer.n-XDXDXDXDXDSXDSXDXSDXSDXDSXDSXDS.managedblockchain.us-east-1.amazonaws.com:30001
grpcOptions:
ssl-target-name-override: orderer.n-XDXDXDXDXDSXDSXDXSDXSDXDSXDSXDS.managedblockchain.us-east-1.amazonaws.com
tlsCACerts:
path: /opt/home/managedblockchain-tls-chain.pem
</pre></code>
peers:
peer1:
url: grpcs://nd-NDNDNDNDNDNDNDNDNDNDND.m-AAAAAAAAAAAAAAAAAAAAAAAAA.n-XDXDXDXDXDSXDSXDXSDXSDXDSXDSXDS....
eventUrl: grpcs://nd-NDNDNDNDNDNDNDNDNDNDND.m-AAAAAAAAAAAAAAAAAAAAAAAAA.n-XDXDXDXDXDSXDSXDXSDXSDXDSXDSXDS.....
grpcOptions:
ssl-target-name-override: nd-NDNDNDNDNDNDNDNDNDNDND.m-AAAAAAAAAAAAAAAAAAAAAAAAA.n-XDXDXDXDXDSXDSXDXSDXSDXDSXDSXDS.xxx
tlsCACerts:
path: /opt/home/managedblockchain-tls-chain.pem

certificateAuthorities:
ca-org1:
url: https://ca.m-AAAAAAAAAAAAAAAAAAAAAAAAA.n-XDXDXDXDXDSXDSXDXSDXSDXDSXDSXDS....
httpOptions:
verify: false
tlsCACerts:
path: /opt/home/managedblockchain-tls-chain.pem
registrar:
- enrollId: aaaaaaaa
enrollSecret: XXXXXXXXXXX
caName: m-AAAAAAAAAAAAAAAAAAAAAAAAA

最佳答案

我也在探索 Amazon Managed Blockchain,尽管它处于预览阶段。希望我能够帮助您解决您的问题。 mspid 不是要在请求中发送的参数。看起来您在配置文件中遗漏了一些东西。你能把下面的配置文件的内容发给我吗?

cat ~/non-profit-blockchain/tmp/connection-profile/ngo-connection-profile.yaml

查看配置文件内容,很明显配置文件中缺少mspid值。成员(member)服务提供商 (MSP) ID 是必须在配置中设置的值。您也可以使用以下命令确认它。

cat ~/non-profit-blockchain/tmp/connection-profile/ngo-connection-profile.yaml | grep mspid:
如果显示空值,则需要在配置文件中设置 mspid。确保
~/non-profit-blockchain/ngo-fabric/fabric-exports.sh
中提到的环境变量设置正确。如果缺少此文件,请使用
~/non-profit-blockchain/ngo-fabric/templates/exports-template.sh
您需要在ngo-connection-profile.yaml 中的mspid 中设置环境变量${MEMBERID} 的值,同时查看配置文件中是否缺少其他必填字段值。您还可以从下面的脚本中查看配置文件中需要替换的值的详细信息。
~/non-profit-blockchain/ngo-rest-api/connection-profile/gen-connection-profile.sh
.让我也列出这些。

sed -i "s|%PEERNODEID%|$PEERNODEID|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%MEMBERID%|$MEMBERID|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%CAFILE%|$LOCALCA|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%ORDERINGSERVICEENDPOINT%|$ORDERINGSERVICEENDPOINT|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%ORDERINGSERVICEENDPOINTNOPORT%|$ORDERINGSERVICEENDPOINTNOPORT|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%PEERSERVICEENDPOINT%|$PEERSERVICEENDPOINT|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%PEERSERVICEENDPOINTNOPORT%|$PEERSERVICEENDPOINTNOPORT|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%PEEREVENTENDPOINT%|$PEEREVENTENDPOINT|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%CASERVICEENDPOINT%|$CASERVICEENDPOINT|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%ADMINUSER%|$ADMINUSER|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml
sed -i "s|%ADMINPWD%|$ADMINPWD|g" $REPODIR/tmp/connection-profile/ngo-connection-profile.yaml

设置值并验证后,停止 Node 或终止在端口 3000 上运行的进程,然后再次运行 Node 。cd ~/non-profit-blockchain/ngo-rest-api

nvm use lts/carbon
node app.js &

关于node.js - 在亚马逊管理的区 block 链 hyperledger fabric 1.2 上部署和公开链码作为 REST api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54274351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com