Chr*_*cke 4 docker hyperledger hyperledger-fabric
我一直在研究fabcar的例子,并且在没有发生任何改变的情况下让它完美运行.我正在尝试更新fabcar.go代码以添加更多字段并简单地玩w /示例,但我的docker图像没有更新w /正确的代码.
要安装链代码,此命令在cli容器上运行:
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n fabcar -v 1.0 -p github.com/fabcar
Run Code Online (Sandbox Code Playgroud)
cli容器已设置此卷:
./../chaincode/:/opt/gopath/src/github.com/
Run Code Online (Sandbox Code Playgroud)
然而,在代码/去更新之后(我实际上已将它从Car更改为具有全新字段的Ticket对象并更新所有相关的链命令以反映),拆解,然后再次启动我仍然看到所有旧字段.
我在这里错过了什么?
这是在"调用"功能中更改为票证的代码片段
func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {
// Retrieve the requested Smart Contract function and arguments
function, args := APIstub.GetFunctionAndParameters()
// Route to the appropriate handler function to interact with the ledger appropriately
if function == "queryTicket" {
return s.queryTicket(APIstub, args)
} else if function == "initLedger" {
return s.initLedger(APIstub)
} else if function == "createTicket" {
return s.createTicket(APIstub, args)
} else if function == "queryAllTickets" {
return s.queryAllTickets(APIstub)
} else if function == "sellTicket" {
return s.sellTicket(APIstub, args)
}
return shim.Error("Invalid Smart Contract function name.")
}
Run Code Online (Sandbox Code Playgroud)
但这样做我只收到消息"无效的智能合约功能名称".用以下方式打电话时:
const request = {
chaincodeId: options.chaincode_id,
txId: transaction_id,
fcn: 'queryAllTickets',
args: ['']
};
Run Code Online (Sandbox Code Playgroud)
我建议两种可能的方法:
同名,但更新版本:
peer chaincode install -n fabcar -v 2.0 -p github.com/fabcar
Run Code Online (Sandbox Code Playgroud)
或相同版本,但新名称:
peer chaincode install -n tickets -v 1.0 -p github.com/fabcar
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令删除旧的chaincode容器映像:
docker images | grep fabcar | awk '{print $2}' | docker rmi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1850 次 |
| 最近记录: |