我正在为 javascript 链码和 Fabric 2.0-beta运行和调整链码开发模式。我启动网络并调整 script.sh(客户端)以运行:
set -e
peer channel create -c myc -f myc.tx -o orderer:7050
peer channel join -b myc.block
cd chaincode
peer lifecycle chaincode package chaincode.tar.gz --lang node --path ./ --label justicechain_1
peer lifecycle chaincode install chaincode.tar.gz
Run Code Online (Sandbox Code Playgroud)
尽管如此,我发现以下错误:
错误:链码安装失败,状态:500 - 无法调用“InstallChaincode”的支持实现:无法构建链码:docker 构建失败:docker 镜像构建失败:docker 构建失败:构建返回的错误:1“+ INPUT_DIR=/chaincode /input + OUTPUT_DIR=/chaincode/output + cp -R /chaincode/input/src/./chaincode/output cp: can't stat '/chaincode/input/src/.': 没有那个文件或目录" /opt /gopath/src/chaincodedev/chaincode #
我在网上找不到有关此问题的任何信息。有任何想法吗?
编辑:看起来有更新 - https://jira.hyperledger.org/browse/FAB-18074
谁能帮我修复以下错误。我正在尝试通过 cli 在对等方上安装链码。我正确配置了 cli 容器。但不知何故我收到了这个错误..
grpc: addrConn.createTransport failed to connect to {peer0.org1.example.com:7051 0 <nil>}. Err :connection error: desc = “transport: Error while dialing dial tcp: lookup peer0.org1.example.com on 127.0.0.11:53: connection refused
Run Code Online (Sandbox Code Playgroud)
blockchain hyperledger hyperledger-fabric hyperledger-chaincode
Hyperledger Fabric 在私有集合的帮助下提供了存储链下数据的内置支持。为此,我们需要指定包含各种集合名称的集合配置以及有权访问这些集合中存在的数据的参与者。有一个名为“ BlockToLive ”的设置,我们可以使用它来指定对等方应该存储多少块他们有权访问的私有数据。在账本区块高度达到上述阈值后,对等方将自动清除私有数据。
我们有一个要求,我们需要使用私有数据集合,但应在 30 天后(自动/手动)删除数据。有没有可能达到同样的目标?
blockchain hyperledger hyperledger-fabric hyperledger-chaincode
我运行了脚本./network.sh deployCC,然后无法将其部署在网络上(Fabric 2.0),这是错误:
deploying chaincode on channel 'mychannel'
Vendoring Go dependencies ...
~/Desktop/Fabric/fabric-samples/chaincode/fabcar/go
~/Desktop/Fabric/fabric-samples/test-network
go: unknown subcommand "mod"
Run 'go help' for usage.
~/Desktop/Fabric/fabric-samples/test-network
Finished vendoring Go dependencies
Using organization 1
++ peer lifecycle chaincode package fabcar.tar.gz --path
../chaincode/fabcar/go/ --lang golang --label fabcar_1
++ res=1
++ set +x
Error: error getting chaincode bytes: listing deps for pacakge
../chaincode/fabcar/go/ failed: exit status 2
!!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed
!!!!!!!!!!!!!!!!
ERROR !!! Deploying chaincode failed
Run Code Online (Sandbox Code Playgroud) 我已经使用命令成功提交了链码:
./peer lifecycle chaincode commit -o orderer.example.org:7050 --channelID mychannel --name emp_chaincode --version v1 --sequence 1 --init-required --tls --cafile ./crypto-config/ordererOrganizations/example.org/orderers/orderer.example.org/msp/tlscacerts/tlsca.example.org-cert.pem
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试调用/查询链码时,出现此错误:
Error: endorsement failure during invoke. response: status:500 message:"error in simulation: failed to execute transaction f490a9e7bca41ad10f68306decae2fdd73e09a9d5f81da7c9ee5cdc3811b3f27: invalid invocation: chaincode 'emp_chaincode' has not been initialized for this version, must call as init first"
Run Code Online (Sandbox Code Playgroud)
在链码容器日志中,它显示:
+ CHAINCODE_DIR=/usr/local/src
+ cd /usr/local/src
+ npm start -- --peer.address peer0.org1.example.org:7052
> employee@1.0.0 start /usr/local/src
> node emp_chaincode.js "--peer.address" "peer0.org1.example.org:7052"
2020-02-25T09:28:16.743Z info [c-api:lib/chaincode.js] Registering with peer peer0.org1.example.org:7052 as …Run Code Online (Sandbox Code Playgroud) 我正在尝试将链码设置为官方文档中指定的外部服务
第一件事是设置externalBuilder变量
chaincode:
externalBuilders:
- name: my-golang-builder
path: /builders/golang
Run Code Online (Sandbox Code Playgroud)
在我的对等配置中,我添加了以下内容来覆盖它
- CORE_CHAINCODE_EXTERNALBUILDERS_PATH=/var/hyperledger/builderpath
- CORE_CHAINCODE_EXTERNALBUILDERS_NAME=externalbuilder
Run Code Online (Sandbox Code Playgroud)
但是当我运行时,peer install lifecycle我得到了
docker build failed: platform builder failed: Failed to generate a Dockerfile: Unknown chaincodeType: EXTERNAL
Run Code Online (Sandbox Code Playgroud)
尽管如此,它仍然尝试安装,因为旧的方式似乎没有检测到我的外部构建器路径
谁能知道解决办法
更新
对等体.yaml
peer1.base.right:
container_name: peer1.right.base
extends:
file: base.yaml
service: peer-base
environment:
- CORE_PEER_ID=peer1.right.base
- CORE_PEER_ADDRESS=peer1.right.base:9051
- CORE_PEER_LISTENADDRESS=0.0.0.0:9051
- CORE_PEER_CHAINCODEADDRESS=peer1.right.base:9052
- CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:9052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.right.base:10051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.right.base:9051
- CORE_PEER_LOCALMSPID=RightOrgMSP
volumes:
- /var/run/:/host/var/run/
- ./crypto-config/peerOrganizations/base.right/peers/peer1.base.right/msp:/etc/hyperledger/fabric/msp
- ./crypto-config/peerOrganizations/base.right/peers/peer1.base.right/tls:/etc/hyperledger/fabric/tls
- ./chaincode/external_builder:/builders/external
- ./fabric-config:/etc/hyperledger/fabric
- peer1.base.right:/var/hyperledger/production
ports: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Fabric Node SDK 在我的 Hyperledger Fabric 网络(在云上设置)上实例化 Golang 链代码。但是,我在执行相同操作时遇到以下错误:
Error: error starting container: error starting container: Failed to generate platform-specific docker build: Failed to pull hyperledger/fabric-ccenv:latest: API error (404): manifest for hyperledger/fabric-ccenv:latest not found: manifest unknown: manifest unknown
Run Code Online (Sandbox Code Playgroud)
相同的堆栈跟踪是:
at self._endorserClient.processProposal (./node_modules/fabric-client/lib/Peer.js:140:36)
at Object.onReceiveStatus (./node_modules/grpc/src/client_interceptors.js:1207:9)
at InterceptingListener._callNext (./node_modules/grpc/src/client_interceptors.js:568:42)
at InterceptingListener.onReceiveStatus (./node_modules/grpc/src/client_interceptors.js:618:8)
at callback (./node_modules/grpc/src/client_interceptors.js:845:24)
Run Code Online (Sandbox Code Playgroud)
我还尝试hyperledger/fabric-ccenv在本地环境中直接拉取图像,但在那里也遇到了类似的错误:
命令:
docker pull hyperledger/fabric-ccenv
Run Code Online (Sandbox Code Playgroud)
错误:
Using default tag: latest
Error response from daemon: manifest for hyperledger/fabric-ccenv:latest not found: manifest unknown: manifest unknown …Run Code Online (Sandbox Code Playgroud) hyperledger-fabric hyperledger-fabric-sdk-js hyperledger-chaincode
我正在使用 Hyperledger Fabric 2.2.0 和 Fabric-network 2.1(不是那么重要)。
我的链码是用 Go 编写的。所以我有一些带有,omitemptyJSON 标签的结构。这是我的结构:
type LeaseDetails struct {
EndOfTerm string `json:"endOfTerm"`
Info string `json:"info,omitempty"`
Option string `json:"option,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
但我从链代码中收到以下错误作为返回值:
peer=peer0.org1.example.com:7051, status=500, message=Error handling success response. Value did not match schema:
1. return.0.leaseDetails: info,omitempty is required
2. return.0.leaseDetails: option,omitempty is required
Run Code Online (Sandbox Code Playgroud)
如果我,omitempty从结构中删除并提供默认值,一切都会正常工作。在文档中fabric-contract-api-go提到有某种基于 json marshal/unmarshal 构建的序列化器,但对我来说,它似乎没有检测到关键字,omitempty。
这是故意的吗?或者我在这里遗漏了什么?
提前致谢
我创建了一个结构网络,它运行良好。我想更新oderer配置,例如batchtimeout在运行中的网络中。我已按照本教程在运行时更新通道配置。本教程适用于添加新组织。但是当我更新订购者配置时,我得到了如下错误
错误:状态发生意外:BAD_REQUEST-将配置更新应用于现有通道“ mychannel”时出错:授权更新:错误验证DeltaSet:未满足[Value] / Channel / Orderer / BatchTimeout的策略:隐式策略评估失败-0子-符合政策,但此政策要求满足“管理员”子政策中的1个
我从所有组织管理员(例如org1和org2)中选择了信封.pb文件。请帮助我。
注意:为此,我使用了fabric-samples第一网络。
编辑:我已经用org1和org2签署了pb文件。我还通过导出以下变量与订购者签署了文件
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/users/Admin\@example.com/msp/
CORE_PEER_ADDRESS=orderer.example.com:7050
CORE_PEER_LOCALMSPID=OrdererMSP
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt
Run Code Online (Sandbox Code Playgroud)
日志
11-28 09:13:57.207 UTC [policies] Manager -> DEBU cc4 Manager Channel/Orderer looking up path []
2019-11-28 09:13:57.207 UTC [policies] Manager -> DEBU cc5 Manager Channel/Orderer has managers OrdererOrg
2019-11-28 09:13:57.207 UTC [policies] Evaluate -> DEBU cc6 == Evaluating *policies.implicitMetaPolicy Policy /Channel/Orderer/Admins ==
2019-11-28 09:13:57.207 UTC [policies] Evaluate -> DEBU cc7 This is an implicit meta policy, it will trigger other …Run Code Online (Sandbox Code Playgroud) blockchain hyperledger hyperledger-fabric hyperledger-chaincode
在 HLF 1.4 中,我可以在成功调用操作后获取事务 id。但在 HLF 2.x 中我没有得到 txid。我可以在状态数据库(couch db)中看到我提交给hlf的数据。那为什么我没有得到 txid。这是链码中的最后一行,
return shim.Success(nil)
Run Code Online (Sandbox Code Playgroud)
使用 Node sdk 提交交易。
result = await contract.submitTransaction(fcn, args);
console.log("Result:", result.toString())
Run Code Online (Sandbox Code Playgroud)
上面的行给出了空。帮我获取 tx id。
go hyperledger-fabric hyperledger-fabric-sdk-js hyperledger-chaincode
我目前正在尝试学习 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
我正在尝试在 Hyperledger Fabric 测试网络(Fabcar javascript 智能合约)上执行智能合约,当我尝试使用 fabcar javascript 示例中存在的 invoke.js 文件调用链码时,出现以下错误:
错误:[ServiceEndpoint]:错误:无法在提交者截止日期之前连接 - 名称:orderer0.example.com:7050,url:grpcs://localhost:7050,已连接:false,connectAttempted:true 2021-05-05T23: 44:02.951Z - 错误:[ServiceEndpoint]:waitForReady - 无法连接到远程 gRPC 服务器 orderer0.example.com:7050 url:grpcs://localhost:7050 超时:3000 2021-05-05T23:44:02.952Z -错误:[DiscoveryService]:_buildOrderer[mychannel] - 无法连接到发现的排序者 orderer0.example.com:7050,因为错误:无法在提交者截止日期之前连接 - 名称:orderer0.example.com:7050,url: grpcs://localhost:7050,已连接:false,connectAttempted:true 2021-05-05T23:44:05.957Z - 错误:[ServiceEndpoint]:错误:无法在 Endorser 的截止日期之前连接 - 名称:peer0.org01.example .com:7051,url:grpcs://localhost:7051,已连接:false,connectAttempted:true 2021-05-05T23:44:05.957Z - 错误:[ServiceEndpoint]:waitForReady - 无法连接到远程 gRPC 服务器peer0。 org01.example.com:7051 url:grpcs://localhost:7051 timeout:3000 2021-05-05T23:44:05.958Z - 错误:[DiscoveryService]: _buildPeer[mychannel] - 无法连接到发现的对等点peer0。 org01.example.com:7051 由于错误:无法在 Endorser 截止日期之前连接 - 名称:peer0.org01.example.com:7051,url:grpcs://localhost:7051,已连接:false,connectAttempted:true
需要注意的一件事是我更改了默认测试网络中的端口转发和对等/组织名称。我的连接配置文件如下(为了清楚起见,删除了证书):
{
"name": "test-network-org1",
"version": "1.0.0",
"client": {
"organization": "Org1",
"connection": {
"timeout": {
"peer": {
"endorser": …Run Code Online (Sandbox Code Playgroud) hyperledger hyperledger-fabric hyperledger-fabric-sdk-js hyperledger-chaincode