问题标签 [hyperledger-fabric-sdk-go]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
900 浏览

hyperledger-fabric - 未能获得发现服务:无法获得 chConfig 缓存参考:读取通道对等方的配置失败

尝试安装和实例化链码时,出现以下错误:

WSL 出现错误(Linux 的 Windows 子系统)

无法安装和实例化链码:无法实例化链码:无法获取发现服务:无法获取 chConfig 缓存引用:读取通道对等点的配置失败

Ubuntu 16.04 上的错误

无法安装和实例化链码:无法实例化链码:无法获取发现服务:无法获取 chConfig 缓存引用:没有为通道 [mychannel] 配置通道对等点

我正在关注chainHero 示例。下面是运行 make 命令后的完整输出。

配置.yaml

docker-compose.yaml

peer-base.yaml

0 投票
3 回答
2621 浏览

hyperledger-fabric - Hyperledger Fabric:检查交易是否已提交到账本

我有三个客户端应用程序,它们分别使用 Java、Node.js 和 Go SDK 与我的区块链 Fabric 进行交互。使用它们,我可以成功查询和更新分类帐。

现在我想测量更新分类帐期间的延迟。所以,我想在提交请求之前获取一个时间戳,然后在事务成功提交到账本之后再获取一个时间戳,然后计算差异。

我的问题是我找不到任何关于 SDK 的 Java、Go 和 Node.js 的 API 的完整文档,所以我不知道当提交方法返回时,我是否可以认为交易正确提交到账本.

这是我的三个客户的代码。爪哇:

节点.js:

去:

这些代码有效。我的问题是:我可以确定在线路之后

(在 Java 中)

(在 Node.js 中)

(在 Go 中)交易是否已提交到账本?

我只在文档中发现:

“向账本提交交易。交易函数名称将在背书节点上进行评估,然后提交给排序服务以提交到账本。” 在https://fabric-sdk-node.github.io/release-1.4/module-fabric-network.Contract.html#submitTransaction__anchor的 Node.js 中的 submitTransaction

在https://godoc.org/github.com/hyperledger/fabric-sdk-go/pkg/client/channel#Client.Execute在 Go 中执行的“使用请求和可选请求选项执行准备和执行事务”

对于 Java,我找不到文档……我也不确定 Node.js 和 Go。

0 投票
3 回答
719 浏览

hyperledger-fabric - 如何使用fabric sdk(fabric-client)安装链码?

基于此处列出的包定义https://fabric-sdk-node.github.io/master/tutorial-chaincode-lifecycle.html

我应该将位于我笔记本电脑中的链码 go (golang) 代码的字节数组放在哪里?也不确定什么chaincodePathmetadataPath是为了什么?它们是结构系统中的路径吗?

基本上,我不知道如何将我的 golang 源代码(链代码)加载到安装链代码的请求中。

0 投票
2 回答
372 浏览

go - 如何下载fabric-sdk-go的所有依赖?

我使用命令“ go get github.com/hyperledger/fabric-sdk-go ”下载fabric-sdk-go 及其依赖项。没有发生错误。

在 golang 文档(https://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies)中,它说“获取下载由导入路径命名的包及其依赖项。然后安装命名的包,如'去安装'。”

所以我原本以为fabric-sdk-go的所有依赖都会递归下载。但事实证明我错了。

当我在fabric-sdk-go目录下运行命令“go install ./...”时,显示了许多错误“找不到包”: 在此处输入图像描述 所以我的问题是:

  1. “去获取”是否递归下载依赖项?

  2. 如何下载fabric-sdk-go的所有依赖,而不是使用“go get [a_dependency_package]”来一一下载每个依赖?

非常感谢。

0 投票
0 回答
140 浏览

hyperledger-fabric - 关于频道创建过程的问题

我有一个带有端点的 API,它创建一个通道,加入一个对等点并在其上实例化链码。在编码过程中,我遇到了一些关于如何完成的询问。

  • 组织管理员证书按字节进行测试,而其他角色使用 OU。我们是否解释了为什么管理员验证会以这种方式运行?
  • 我永远无法为组织管理员注册并提交完全相同的证书。由于上述问题,这意味着我发现能够执行管理员操作的唯一解决方案是将管理员证书/密钥复制到 sdk crypto-{msp,store}。有没有办法避免使用fabric-ca复制管理员证书和私钥?
  • 由于 sdk 没有找到任何 channelPeer,我无法在 sdk 配置文件中没有条目的情况下在新创建的通道上实例化链码。如果我们可以以编程方式知道哪个对等点拥有通道,有没有办法避免配置文件更新?

如果有人对如何解决上述任何问题有任何提示,我将不胜感激。

谢谢!

0 投票
2 回答
332 浏览

hyperledger-fabric - Hyperledger Fabric 中的动态通道工件(channel.tx)

是否有任何其他方法可以为 Hyperledger-Fabric 通道创建生成通用通道工件(channel.tx),以便可以在运行时单独更改通道名称,而不是为每个新通道发出具有不同通道名称的以下命令。

./bin/configtxgen -profile OneOrgChannel -outputCreateChannelTx ./config/channel5.txt

0 投票
1 回答
508 浏览

go - Fabric GO SDK 的背书政策问题

我有一个超级账本结构测试网,其中包含 2 个组织、org1 中的 3 个对等点和 org2 中的 2 个对等点。每个组织的 peer0 是锚节点。我想用一个只有一个组织的背书策略来实例化一个链码:Org1,所以我指定了策略:“AND('org1MSP.member')”。

我只在 org1 的对等方中安装了链代码,因为 org2 不是背书者。但是,链码不会实例化,因为它将提案发送给其他组织 (org2) 中的对等方。

问题是因为 org2 中的这些对等点没有安装链码,但是......为什么 SDK 将背书请求发送给不属于背书策略的对等点?

这是我的配置文件,如您所见,我只有一个 org1 的对等方:https ://gist.github.com/mtnieto/02dd17097de64a73bd627594056598ed

我已将以下功能添加到配置中,但它不起作用。

日志如下:

“错误”:“创建链码时出错:发送部署交易提案失败:发生多个错误:-背书人 [peer0.org2.example.com:8051] 的交易处理:背书人客户端状态代码:(23)CHAINCODE_NAME_NOT_FOUND。描述:无法获取链码包 (examplecc:2) - endorser [peer1.org2.example.com:6051] 的事务处理:Endorser 客户端状态代码:(23) CHAINCODE_NAME_NOT_FOUND。描述:无法获取链码包 (examplecc:2)”

实例化链码的代码如下。(在之前的阶段我已经安装了链码)

这发生在对等点更新为锚点时。换句话说,如果我在初始化网络时没有在对等方中执行以下命令,则不会发生错误。

(在 peer0 org1 上下文中)

在 peer0 org2 上下文中

0 投票
5 回答
1436 浏览

hyperledger-fabric - HyperLedger Fabric SDK Go 显示无法将 nil 转换为 csr.KeyRequest 类型

其中一个基于 go-lang 的微服务代码需要与 Fabric 的链码连接,直到上次都运行良好,目前没有问题。

但是现在它在构建基于 go 的微服务时显示了以下问题,该微服务具有结构客户端代码以与结构链代码连接。

../vendor/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/util

../../vendor/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/util/csp.go:47:8:无法将nil转换为csr.KeyRequest类型 ../../vendor/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/util/csp.go:132:37:不能使用req.KeyRequest(类型* csr.KeyRequest) 作为类型 csr.KeyRequest 在 getBCCSPKeyOpts 的参数中

也许它是一个依赖问题,我清理了完整的供应商目录并完成了 dep ensure --update ,但它显示了同样的问题,

更多信息 :

转到版本 1.12

在 GoPkg.Toml 上

[[覆盖]] name = "github.com/hyperledger/fabric" 分支 = "master"

[[覆盖]] name = "github.com/hyperledger/fabric-sdk-go" 分支 = "master"

我尝试了 fabric-sdk-go 的各种组合和不同分支,它仍然显示相同,尽管它之前工作得很好。

0 投票
0 回答
615 浏览

hyperledger-fabric - 查询链码时出现“运行时错误:无效的内存地址或零指针取消引用”

我正在使用 fabric-sdk-go 来安装、实例化、调用和查询链代码。

  1. 链码安装成功。

    /li>
  2. 链码实例化。

    代码片段

    /li>
检查 docker 容器

这里链码被实例化,但 Input 标签显示 nil 值。是预期的吗?不是应该显示我用于实例化的值吗

  1. 查询链码

    代码片段

    /li>

对链码的这种查询导致以下错误:

恐慌:运行时错误:无效的内存地址或零指针取消引用

【信号SIGSEGV:分段违规代码=0x1 addr=0x8 pc=0x9e17e0】

goroutine 1 [运行]:github.com/hyperledger/fabric-sdk-go/pkg/client/channel.(*Client).Query(0x0, 0xdb43d4, 0x9, 0xdb14ef, 0x6, 0xc00016ff80, 0x2, 0x2, 0x0, 0x0 , ...) /home/alpha/GoWorkspace/src/github.com/hyperledger/fabric-sdk-go/pkg/client/channel/chclient.go:97 +0xc0 github.com/hyperledger/myproject/sdk.( *FabricSetup).Query(0xc000179ea8, 0xdb0f3d, 0x6, 0x0, 0xdbbe50, 0x13, 0xdb43cb) >/home/alpha/GoWorkspace/src/github.com/hyperledger/myproject/sdk/query.go:17 +0x2d4 main.main () /c/Projects/Go/src/github.com/hyperledger/myproject/main.go:79 +0x176

setup.go:用于创建通道、安装和实例化链码的文件

  1. main.go 文件:调用该文件中的所有方法

    /li>

客户端日志记录(设置为调试模式)。这些日志很大,因此共享链接ClientLogs

请帮忙。

编辑:添加链码

编辑

  1. 在运行时错误之后,我使用命令登录到peer0.seller.mytrade.comcli docker exec -it cli bash并运行peer chaincode query -C mychannel -n myproject -c '{"Args":["query","Seller"]}'命令来查询链码,我得到了结果Seller = 100

  2. 在运行peer chaincode query命令之前,dev-peer0.seller.mytrade.com容器丢失了。只有容器dev-peer1.seller.mytrade.com存在。但是 在cli上的peer chaincode query命令导致链码容器之后。peer0.seller.mytrade.com由于在卖方的两个对等方上调用了链码,因此两个容器都应该在那里。

  3. 我还添加了 20 秒的延迟,因为我认为 docker 需要一些时间来创建容器。但它没有用。

  4. PFAdocker ps -a命令 的图像docker ps -a 输出

0 投票
1 回答
293 浏览

hyperledger-fabric - Hyperledger Fabric go sdk - 交易未提交

我有一个基本的第一个网络,它与两个组织一起运行,并且它们都有两个对等点。事务未提交。当我调用时,链代码在容器中按预期运行并按预期返回提案。但是这些并没有反映在 stateDB 中。收到以下错误。

代码如下:

配置看起来像这样: