我从链表的set方法调用交叉链码,它正确地记录我发送的信息。但是,当我从get方法调用交叉链码时,就不会记录数据。
为了验证它不是实现失败,我将get方法中的函数作为测试复制到set方法中,并进行了正确的响应,因此我怀疑这是从另一个方法调用相同的交叉链码的事实。
set方法代码的一部分,该代码包括从get方法复制的函数:
log.SetFlags(0)
uuid = uuidgen()
TxID = stub.GetTxID()
timestamp = timeNow()
log.Println("["+timestamp+"]["+uuid+"]["+CHANNEL_ENV+"]["+TxID+"][usecase_cc][Transaction] Transaction makes payment of X units from A to B")
re = captureOutput(func(){
log.Println("["+timestamp+"]["+uuid+"]["+CHANNEL_ENV+"]["+TxID+"][usecase_cc][Transaction] Transaction makes payment of X units from A to B")
})
invokeArgs = prepareToInvoke(uuid, re)
stub.InvokeChaincode("base_cc", invokeArgs, CHANNEL_ENV)
//IMPORTED FROM GET METHOD
Avalbytes, err = stub.GetState(A) // Get the state from the ledger
log.SetFlags(0)
uuid = uuidgen()
TxID = stub.GetTxID()
timestamp = timeNow()
jsonResp := "{\"Name\":\"" + A + "\",\"Amount\":\"" + string(Avalbytes) + "\"}"
log.Println("["+timestamp+"]["+uuid+"]["+CHANNEL_ENV+"]["+TxID+"][Get] Query Response: "+jsonResp)
re = captureOutput(func(){
log.Println("["+timestamp+"]["+uuid+"]["+CHANNEL_ENV+"]["+TxID+"][Get] Query Response: "+jsonResp)
})
invokeArgs = prepareToInvoke(uuid, re)
stub.InvokeChaincode("base_cc", invokeArgs, CHANNEL_ENV)
//IMPORTED FROM GET METHOD失败之处在于,当查询交叉链码时,它会返回没有插入资产的信息。前四个日志是从set方法中插入的,最后一个失败的日志是尝试从get方法插入的:
response 3zjRkx5KXL65KPn4XGc9SjgWBRVS07i07ecWTMmCRf8=
response A+Mq4UjLrvTRyVXEgBsgA5Pvk2WTUjKYa0NYKxMwtG0=
response vlstiHrCz2tw3t8Ba4C9GbHo/nYrVwstP8JnEPhRAJc=
response KYE+acbDesekYslXT87EEZ546eVSIUREJlHI+8f8ZNY=
Traceback (most recent call last):
File "query.py", line 91, in <module>
response = loop.run_until_complete(cli.chaincode_query(
File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "/usr/local/lib/python3.8/dist-packages/fabric_sdk_py-0.9.0-py3.8.egg/hfc/fabric/client.py",
line 1328, in chaincode_query
return await chaincode.query(requestor, channel_name, peers, args,
File "/usr/local/lib/python3.8/dist-packages/fabric_sdk_py-0.9.0-py3.8.egg/hfc/fabric/chaincode.py",
line 316, in query
raise Exception(res)
Exception: [response {
status: 500
message: "Asset not found: 3280ca60-0352-40c4-83ab-b9c8e25d0f1f"为了澄清错误,我创建了这个映像:交叉链码
1A)通过Python调用事务(使用酶链码),并设置在块链中添加对等方(A、Aval)的方法。
2A) )通过put状态API (usecase chaincode)添加对等方(A,Aval)。此操作生成一个日志。
3A)收集登录链,并通过交叉链调用将其发送到另一个链码(从usecase链代码到基链代码)。
4A)通过put状态API (Base64)添加对(logUUID、base64(sha256(SET(A)。
( 5A)通过get方法查询用例链码以从A.
6A)通过使用酶链码中的get状态API查询A的Aval。此操作将生成一个新记录。
( 7A)收集链码日志,并通过交叉链码调用将其发送到另一个链码。
8A)通过put状态API (链码基)添加对(logUUID,base64(sha256(GET(A)。
1B)查询基链码,通过get方法检索base64(日志(SET(A)。
( 2B)通过链码库中的get状态API从logUUID检索base64(sha256(log(SET(A)。
3B)通过get方法检索base64(sha256(GET(GET(A)查询基链码。
4B)通过链码库中的get状态API从logUUID检索base64(sha256(get(A))(在这里发生错误)。
https://stackoverflow.com/questions/67383772
复制相似问题