首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两种不同链码方法的不同交叉码行为

两种不同链码方法的不同交叉码行为
EN

Stack Overflow用户
提问于 2021-05-04 11:19:54
回答 1查看 113关注 0票数 0

我从链表的set方法调用交叉链码,它正确地记录我发送的信息。但是,当我从get方法调用交叉链码时,就不会记录数据。

为了验证它不是实现失败,我将get方法中的函数作为测试复制到set方法中,并进行了正确的响应,因此我怀疑这是从另一个方法调用相同的交叉链码的事实。

set方法代码的一部分,该代码包括从get方法复制的函数:

代码语言:javascript
运行
复制
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方法插入的:

代码语言:javascript
运行
复制
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))(在这里发生错误)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-07 14:01:06

这个错误是由Python函数chaincode_query产生的。

我在Hyperledger中看到了一个问题。但是,为了解决这个问题,我使用的是chaincode_invoke而不是chaincode_query。

调用

现在,我可以从get方法生成和检索日志。

日志

..。并核实:

日志的base64

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67383772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档