我遵循了 2 个不同的教程
https://github.com/swetharepakula/Fabric101Workshop和
https://hyperledger-fabric.readthedocs.io/en/release-2.0/deploy_chaincode.html。
两次我查询安装它都显示fabcar 已安装并且它成功提交,但是当我尝试调用时,我收到以下信息:
错误:调用期间背书失败。响应:状态:500 消息:“确保链码 fabcar 已在通道 mychannel 上成功定义并重试:存在‘fabcar’的链码定义,但未安装链码”。
我尝试更改CORE_PEER_GOSSIP_USELEADERELECTION=true,但这阻止了我的一个对等节点启动。
我在 Mac 上工作,节点在 docker 中运行,任何帮助将不胜感激。
似乎我误解了Hyperledger Fabric如何处理查询。我目前正在使用fabric-go-sdk从分类帐中查询资产,例如
asset, err := client.Query(channel.Request{ChaincodeID: someCCname, Fcn: "query", Args: [][]byte{[]byte(someID)}})
Run Code Online (Sandbox Code Playgroud)
当我的系统处于负载状态(许多与查询无关的新事务)时,有时会出现以下错误消息:
背书验证失败:背书者客户端状态代码:(3)ENDORSEMENT_MISMATCH。说明:ProposalResponsePayloads不匹配。
如果仅查询数据,为什么要背书?对我来说,错误消息似乎表明多个对等方对查询的回答不同。这是否意味着某些对等方已经将资产抵押到分类帐中,而其他同等方却没有将其分类?值得注意的是,查询是在资产创建后很短的时间内运行的,并且不一致。
查询链码非常简单明了:
func (c *TestChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response {
data, err := stub.GetState(args[0])
if err != nil {
return shim.Error(err)
}
if data== nil {
return shim.Error(err)
}
return shim.Success(data)
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试按照最新版本(v2.2.1)使用 Fabric 测试网络教程进行操作,一切正常,直到我尝试使用./network.sh deployCC.
我得到以下输出:
deploying chaincode on channel 'mychannel'
executing with the following
- CHANNEL_NAME: mychannel
- CC_NAME: basic
- CC_SRC_PATH: NA
- CC_SRC_LANGUAGE: go
- CC_VERSION: 1.0
- CC_SEQUENCE: 1
- CC_END_POLICY: NA
- CC_COLL_CONFIG: NA
- CC_INIT_FCN: NA
- DELAY: 3
- MAX_RETRY: 5
- VERBOSE: false
Determining the path to the chaincode
asset-transfer-basic
Vendoring Go dependencies at ../asset-transfer-basic/chaincode-go/
~/fabric-samples/asset-transfer-basic/chaincode-go ~/fabric-samples/test-network
~/fabric-samples/test-network
Finished vendoring Go dependencies
Using organization 1
+ peer lifecycle chaincode package …Run Code Online (Sandbox Code Playgroud) 实例化命令成功完成,但在分析对等日志时,您可能会注意到:
2019-04-17 17:25:52.581 UTC [gossip.state] commitBlock -> DEBU 48c [canal-contrato] 已提交区块 [1] 与 1 个交易
2019-04-17 17:25:52.581 UTC [common.deliver] deliveryBlocks -> DEBU 48d [channel: canal-contrato] 为 192.168.16.1:48230 提供 (0xc00023f9c0) 的区块
2019-04-17 17:25:52.581 UTC [fsblkstorage] waitForBlock -> DEBU 48e 将等待更新的区块。maxAvailaBlockNumber=[1],waitForBlockNum=[2]
2019-04-17 17:25:52.586 UTC [common.deliver] deliveryBlocks -> DEBU 48f 上下文取消,中止等待下一个块
2019-04-17 17:25:52.586 UTC [common.deliverevents] func1 -> DEBU 490 关闭交付流
2019-04-17 17:25:52.586 UTC [comm.grpc.server] 1 -> INFO 491 流媒体调用完成{"grpc.start_time": "2019-04-17T17:25:50.441Z", "grpc.service ": "protos.Deliver", "grpc.method": "DeliverFiltered", "grpc.peer_address": "192.168.16.1:48230", "error": "上下文在块检索前完成:上下文被取消", "grpc.peer_address": "192.168.16.1:48230"代码”:“未知”,“grpc.call_duration”:“2.144399922s”}
谁能告诉我我可能做错了什么以及这个错误的后果是什么? …
我是 Hyperledger Fabric 的新手。当我从 cli 容器安装到对等方后实例化用 java 编写的链码时,出现了一些错误:
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all files for configuration ':compileClasspath'.
> Could not find com.github.everit-org.json-schema:org.everit.json.schema:1.11.1.
Searched in the following locations:
file:/root/.m2/repository/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.pom
file:/root/.m2/repository/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.jar
https://repo.maven.apache.org/maven2/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.pom
https://repo.maven.apache.org/maven2/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.jar
Required by:
project : > org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:1.4.2
Run Code Online (Sandbox Code Playgroud)
我认为这可能是 Maven 存储库的问题,但是当我在主机的终端中使用 gradle 时,它运行正常,例如:
fabric@ubuntu:~/fabric1.4/fabric-samples/chaincode/master-liuqi/java$ sudo /opt/gradle/bin/gradle -b build.gradle build
Task :compileJava
Note: /home/fabric/fabric1.4/fabric-samples/chaincode/master-liuqi/java/src/main/java/org/hyperledger/fabric/example/SimpleChaincode.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
BUILD SUCCESSFUL in 0s
2 actionable tasks: …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试学习 Hyperledger Fabric ,我设法了解如何设置网络(Orderers、Peers 等),但现在是链码的一部分。
但是,我发现两个不同的 git 存储库(据我所知)可用于创建链码。
第一个是fabric-contract-api-go,我不久前跟着他们的教程。
第二个是fabric-chaincode-go。
所以我的问题是,这两个包有什么区别,我应该使用哪一个来编写链码?你有资源或好的例子吗?(除了fabric-samples git中的那些)
前段时间跟着fabric-contract-api教程写了一个chaincode,现在看到有人用fabric-chaincode-go这个包,有点迷茫。
对不起,这个问题可能听起来很愚蠢,但我没有开发人员背景。我有 SysAdmin 背景,不习惯 GOLANG(但我是一个快速学习者,有很好的资源)。
hyperledger hyperledger-fabric hyperledger-chaincode chaincode