问题标签 [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 回答
114 浏览

hyperledger-fabric - 网关编程模型是新常态吗?

因此,我一直在尝试使用 Hyperledger Fabric Client SDK for Go 中的网关包以外的包来查找教程和示例。我只找到了几个旧的;1.4之前。此外,Hyperledger Fabric 文档完全专注于网关模型。

这让我想到了标题中的问题。这对我来说很有意义,因为我看不到使用 SDK 创建通道和部署链代码的价值。因为我们还有管理任务要在 CLI 上完成;准备通道配置文件和通道创建交易,更不用说对链码进行编程了。

最近是否有一个共同的共识是完全在 CLI 上执行管理任务(创建通道、加入对等点和部署链码),并将带有网关模型的 SDK 专用于链码交互?

0 投票
0 回答
89 浏览

hyperledger-fabric - 如何为不同主机中的容器设置 fabric-sdk-go 的实体匹配器部分?

我已经将我的超级账本结构网络和我的客户端应用程序(使用fabric-sdk-go)部署在一台机器上(使用docker compose)并且一切正常,但是我正在尝试将我的网络与不同主机上的容器一起部署(使用一个带有 docker swarm 的覆盖网络)。此步骤有效,但我的客户端应用程序无法正常工作,因为它无法与不同主机上的容器通信。我认为问题与我的 config.yaml 文件中的实体匹配器部分有关。对于我的原始解决方案(单主机)实体匹配器设置如下:

对于我在多台主机上的解决方案,我在一台主机上设置了 ca 和 orderer,在其他主机上设置了 peer0 和 peer 1。我的问题是:如何将 localhost 替换为不同主机上相应容器的 url?(如果问题确实如此)

注意:我尝试将 localhost 更改为 docker 容器的名称,但没有成功

0 投票
0 回答
188 浏览

hyperledger-fabric - 提交失败:发现状态代码:(11) UNKNOWN。描述:获取背书时出错:无法满足背书组合

我有 5 个排序节点,4 个节点属于我的结构网络中的两个不同组织。我已经在所有对等方中安装了链码。当我提交购买同行时,一切正常:

但是,当我提交交易时fabric-sdk-go,我会收到这样的错误:

这是connection.jsonfor fabric-sdk-go

这是configtx.yaml

我不知道我的结构网络出了什么问题。有人能帮我吗?

0 投票
1 回答
194 浏览

go - 结构调用链码错误:无法获得背书节点:无法满足背书组合

我已经成功建立了一个组织中的 3 个订购者和一个具有 5 个组织的联盟的结构网络。每个组织只有一个对等节点并加入同一频道。我已经在这个频道中安装并实例化了两个链码。但是,当我通过 *channel.Client 调用链代码时,有时它可以正常工作,有时会出现这样的错误:

这是我的开发环境:

以下是我认为可能有用的 Fabric 配置:configtx.yaml

docker-compose.yaml

config.yaml 用于fabric-sdk-go

这个问题困扰我很久了。有人能帮我吗?


我已经找到了这个问题的原因。这是因为从 channel 得到的 endorsers 应该包含在通过 得到的 peers 列表中discovery,否则会被过滤掉。并且始终只有一个背书节点从通道或discovery. 所以,除非两者相等,否则背书是不满足的。channel.policies.discovery.retryOpts.attempts因此,可能需要多次重试才能成功,否则在到达or时将返回错误channel.policies.discovery.retryOpts.maxBackoff

现在的问题是,为什么只能从渠道获得或找到一个背书discovery?我试图通过修改 yaml 中的一些可能的配置来修复它,但都失败了。

调试消息

0 投票
0 回答
227 浏览

hyperledger-fabric - 如何正确初始化 FabricSDK?

编辑:似乎network.sh脚本需要设置COMPOSE_PROJECT_NAME环境变量,test否则它不会正确初始化网络?完成此操作后,我尝试编写一个新config.yaml文件,但仍然不正确,但我得到的错误已经改变。

我最近开始使用Hyperledger织物。使用“fabric-samples”测试网络,我开发并安装了连接到网关后成功调用的链代码。

要启动区块链网络,我运行以下test-network/network.sh命令:

现在,我正在尝试以编程方式访问一个块(为了查看背书者),但clientChannelContext我得到导致此错误:

Can not get ledger client failed to get client context to create channel client: user not found

不知道 fabsdk 参考需要什么配置,我尝试了在文件夹下找到的每个 文件,但没有成功。*.yamltest-network

虽然fabsdk.New()返回“有效” *FabricSDK,但我怀疑它没有正确初始化。

我当前的 config.yaml,基于config_e2e.yaml

0 投票
0 回答
66 浏览

hyperledger-fabric-sdk-go - 我正在学习fabric-sdk-go。当我执行“make run”来运行我的应用程序时,有两个 WARN。这意味着什么剂量?

[fabsdk/fab] 2021/05/02 11:52:01 UTC - fab.detectDeprecatedNetworkConfig -> WARN 从端点配置 channels.orderer 获取 orderer 已弃用,使用实体匹配器覆盖 orderer 配置

[fabsdk/fab] 2021/05/02 11:52:01 UTC - fab.detectDeprecatedNetworkConfig -> WARN 访问https://github.com/hyperledger/fabric-sdk-go/blob/master/test/fixtures/config/样本的overrides/local_entity_matchers.yaml

0 投票
1 回答
274 浏览

hyperledger-fabric - 当使用在 fabric-go-sdk 中使用 `WithSDK` 配置的网关发送事务时,会发生 TRANSIENT_FAILURE

我正在构建一个客户端服务器以使用fabric-go-sdk. 要使用自定义日志记录系统,我使用函数获取一个FabricSDK对象,fabsdk.New()然后将其注入到一个Gateway对象中gateway.WithSDK。检查下面的代码:

当我运行测试时,我收到一个错误:

我运行的测试是使用Gateway对象及其Submit方法发送事务的测试。

当我定义一个没有 的Gateway对象时FabricSDK,它工作正常。也就是说,如果我使用下面的代码,测试就会顺利通过。但是,在这种情况下,我无法使用我的自定义日志记录系统。(我只想禁用 Fabric SDK 的日志系统。)

根据我的调查,由和FabricSDK初始化的对象之间的区别在于,由 和 创建的对象具有选项,而另一个则没有。我尝试为我的代码提供相同的选项,但我找不到如何去做。fabsdk.New()gateway.Connect(gateway.WithConfig())FabricSDKgateway.Connect(gateway.WithConfig())fabsdk.WithMSPPkg(gw.mspfactory)fabsdk.New()

所以,我的问题是:

  • 我该如何处理“TRANSIENT_FAILURE”错误,或者
  • 如何禁用 Fabric SDK 的默认日志系统?

谢谢。

0 投票
0 回答
77 浏览

kubernetes - ISSUE 提交失败:发现状态代码:(11) UNKNOWN。描述:获取背书时出错:无法满足背书组合

我需要一些帮助来解决这个问题,我一直在尝试解决它,但我找不到腐烂的原因。

我正在尝试使用 kubernetes 在外部链代码上运行 application-go。一切正常,但是当我尝试从 application-go 发布请求时,我在终端或 POSTMAN 上收到以下错误:

以下是 application-go 的日志:

任何帮助将不胜感激。

0 投票
0 回答
110 浏览

go - 当我尝试将链码与 go 程序连接时遇到了一些问题。* '***.Registrar' 期望地图,得到 'slice'

我编写了配置文件 connect.yaml 并尝试将链码与 go 程序连接起来。但是出现了以下错误:

2021/08/29 17:10:04 无法连接到网关:无法应用配置选项:无法初始化配置:无法加载身份配置:无法从配置后端初始化身份配置:无法从后端创建身份配置:无法将“certificateAuthorities”配置项解析为 identityConfigEntity.CertificateAuthorities 类型:3 错误解码:

  • '[ca.agridepart.amops.com].Registrar' 期待一张地图,得到了 'slice'
  • '[ca.agrimacowner.amops.com].Registrar' 期待一张地图,得到了 'slice'
  • '[ca.financedepart.amops.com].Registrar' 期待一张地图,得到了 'slice'

然后我尝试在connect.yaml文件的certificateAuthorities部分删除以下内容

但是出现以下错误: 2021/08/29 17:38:57 Failed to get network: Failed to create new channel client: event service creation failed: could not get chConfig cache reference: QueryBlockConfig failed: QueryBlockConfig failed: target(s)必需的

那么第二个错误是否与第一个错误有关以及导致它的原因。我应该怎么办?

我的 connect.yaml 文件内容如下:

0 投票
1 回答
102 浏览

couchdb - 如何在外部链码构建中打包 couchdb 索引?

我正在尝试按照此处的说明将链代码安装和部署为外部服务

我按照此处的说明创建了couchdb 索引,并将链代码打包为:

  • META-INF 目录与输出“code.tar.gz”的 connection.json 一起打包
  • META-INF 目录与输出“cc_name.tgz”的“code.tar.gz”和“metadata.json”一起打包

在使用peer 生命周期命令安装链代码时,这两种方法都会导致错误。

我在没有打包 META-INF(couchd 索引)的情况下安装了链码,一切都按预期工作。但是对于区块链应用程序,我很少需要从 couchdb 查询数据并更新分类帐中的资产。

在外部部署链代码时,打包 couchdb 索引的正确方法是什么?