繁体   English   中英

无法在 Hyperledger Fabric 上调用 nodejs 链代码 - Amazon Managed Blockchain

[英]Can't invoke nodejs chaincode on Hyperledger Fabric - Amazon Managed Blockchain

在 AWS 关于如何设置区块链网络的第一步之后,我陷入了步骤 7[ 1 ] 打包/安装/批准/提交链代码的位置。 作为个人挑战,我尝试使用asset-transfer-basic/chaincode-typescript项目[ 2 ]。

这是项目文件夹结构(其中libnode_modules文件夹,但已重命名,因此包含在最终包中):

chaincode-typescript/  
  ├─ dist/  
  ├─ lib/  
  ├─ src/  
  ├─ tslint.json  
  ├─ tsconfig.json  
  ├─ package.json  
  ├─ package-lock.json

这是项目package.json (注意start脚本):

{
    "name": "asset-transfer-basic",
    "version": "1.0.0",
    "description": "Asset Transfer Basic contract implemented in TypeScript",
    "main": "dist/index.js",
    "typings": "dist/index.d.ts",
    "engines": {
        "node": ">=12",
        "npm": ">=5"
    },
    "scripts": {
        "lint": "tslint -c tslint.json 'src/**/*.ts'",
        "pretest": "npm run lint",
        "test": "nyc mocha -r ts-node/register src/**/*.spec.ts",
        "start": "NODE_PATH=lib node dist/index.js",
        "build": "tsc",
        "build:watch": "tsc -w",
        "prepublishOnly": "npm run build"
    },
    "engineStrict": true,
    "author": "Hyperledger",
    "license": "Apache-2.0",
    "dependencies": {
        "fabric-contract-api": "^2.0.0",
        "fabric-shim": "^2.0.0"
    },
    "devDependencies": {
        "@types/chai": "^4.1.7",
        "@types/mocha": "^5.2.5",
        "@types/node": "^10.12.10",
        "@types/sinon": "^5.0.7",
        "@types/sinon-chai": "^3.2.1",
        "chai": "^4.2.0",
        "mocha": "^5.2.0",
        "nyc": "^14.1.1",
        "sinon": "^7.1.1",
        "sinon-chai": "^3.3.0",
        "ts-node": "^7.0.1",
        "tslint": "^5.11.0",
        "typescript": "^3.1.6"
    }
}

这些是我运行的命令及其输出:

docker exec cli peer lifecycle chaincode package package.tar.gz --lang node --label package_3 --path ./fabric-samples/asset-transfer-basic/chaincode-typescript/
docker exec cli peer lifecycle chaincode install package.tar.gz

2022-07-30 23:09:05.476 UTC [cli.lifecycle.chaincode] submitInstallProposal -> INFO 001 Installed remotely: response:<status:200 payload:"\nJpackage_3:5a51d2bc0ef40de3c4ad1f2080456004c39e26670f2a9048796496eaef7b88b4\022\tpackage_3" > 
2022-07-30 23:09:05.488 UTC [cli.lifecycle.chaincode] submitInstallProposal -> INFO 002 Chaincode code package identifier: package_3:5a51d2bc0ef40de3c4ad1f2080456004c39e26670f2a9048796496eaef7b88b4
export CC_PACKAGE_ID=package_3:5a51d2bc0ef40de3c4ad1f2080456004c39e26670f2a9048796496eaef7b88b4
docker exec cli peer lifecycle chaincode queryinstalled

Installed chaincodes on peer:
Package ID: package_2:1fbb720f16271e9ae647736e012ca6ff8d5f6c6bf80ca7696668bd1c6a89b8e2, Label: package_2
Package ID: package_3:5a51d2bc0ef40de3c4ad1f2080456004c39e26670f2a9048796496eaef7b88b4, Label: package_3
Package ID: package_1:e73c64b62ebe74c1997117b037df2dd51d7aaacb26c877f726f03f7c568c4af9, Label: package_1
docker exec cli peer lifecycle chaincode approveformyorg --orderer $ORDERER --tls --cafile /opt/home/managedblockchain-tls-chain.pem --channelID supply-chain --name package3 --version v0 --sequence 1 --package-id $CC_PACKAGE_ID

2022-07-30 23:10:36.764 UTC [chaincodeCmd] ClientWait -> INFO 001 txid [a2634acda7acbc220ca0b78b6f46a5c7f202ac498541139f2209d412c49ed20b] committed with status (VALID) at nd-<node_id>.m-<member_id>.n-<network_id>.managedblockchain.us-east-1.amazonaws.com:30003
docker exec cli peer lifecycle chaincode checkcommitreadiness --orderer $ORDERER --tls --cafile /opt/home/managedblockchain-tls-chain.pem --channelID supply-chain --name package3 --version v0 --sequence 1

Chaincode definition for chaincode 'package3', version 'v0', sequence '1' on channel 'supply-chain' approval status by org:
m-<member_id>: true
docker exec cli peer lifecycle chaincode commit --orderer $ORDERER --tls --cafile /opt/home/managedblockchain-tls-chain.pem --channelID supply-chain --name package3 --version v0 --sequence 1

2022-07-30 23:12:17.742 UTC [chaincodeCmd] ClientWait -> INFO 001 txid [e8745d021b24567caeebac0fbbf0a969b66e77f817e78ebba735af6b7c32b43f] committed with status (VALID) at nd-<node_id>.m-<member_id>.n-<network_id>.managedblockchain.us-east-1.amazonaws.com:30003
docker exec cli peer lifecycle chaincode querycommitted -C supply-chain

Committed chaincode definitions on channel 'supply-chain':
Name: package2, Version: v0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc
Name: package3, Version: v0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc
Name: package, Version: v0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc
docker exec cli peer chaincode invoke --tls --cafile /opt/home/managedblockchain-tls-chain.pem --channelID supply-chain --name package3 -c '{"function":"InitLedger","Args":[]}'

2022-07-30 23:13:30.906 UTC [chaincodeCmd] InitCmdFactory -> INFO 001 Retrieved channel (supply-chain) orderer endpoint: nd-<node_id>.m-<member_id>.n-<network_id>.managedblockchain.us-east-1.amazonaws.com:30001
Error: endorsement failure during invoke. response: status:500 message:"error in simulation: failed to execute transaction 2034113c1b27abebdee846465ba3609f2dd8d2a58984eb6684c2895989ea4443: could not launch chaincode package_3:5a51d2bc0ef40de3c4ad1f2080456004c39e26670f2a9048796496eaef7b88b4: chaincode registration failed: container exited with 0"

最后的日志说链码 package 没有注册。 但是当我 go 到 CloudWatch 中的日志以查看调用InitLedger function 时出了什么问题,我得到了这个:

在此处输入图像描述

我得出的结论是 AMB 服务不支持fabric-contract-apifabric-chaincode-node但支持fabric-shim

我试图让它发挥作用的尝试:
1 - 安装最新版本的fabric-contract-apifabric-shim (此时为v2.2.3); 调用函数时,我没有注意到任何不同的错误消息或成功。

2 - 由于node_modules文件夹未打包并安装到对等体中,因此我将其名称更改为lib 然后,在package.json中,我将start脚本更改为: NODE_PATH=lib node contract.js 这样项目依赖项就包含在最终的 package 中; 它不起作用,因为fabric-contract-api需要在start脚本中fabric-chaincode-node start ,并且由于我重命名了node_modules文件夹,因此Node.js 运行时在任何地方都找不到该脚本。

3 - 按照与上述相同的策略(更改node_modules文件夹名称),我尝试将lib/.bin文件夹包含在$PATH中,如下所示: export PATH=$PATH:./lib/.bin/ fabric-chaincode-node start - export PATH=$PATH:./lib/.bin/ fabric-chaincode-node start 尝试调用 function 时出现sh: fabric-chaincode-node: Permission denied错误。

另一方面, fabric-shim似乎工作得很好(v2.2.3)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM