问题标签 [chaincode]

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 回答
367 浏览

hyperledger-fabric - Hyperledger Fabric:对等链码实例化错误:“无法组装交易”“味精链码注册失败”

我们正在尝试在示例网络中实例化示例链代码github.com/chaincode/chaincode_example02/go/,我们收到以下错误消息......有什么建议可以查看吗?

CLI 日志:

对等日志:

0 投票
2 回答
222 浏览

interface - Hyperledger Fabric:如何使调用链码的应用程序和部署的链码保持同步?任何 ABI 等效功能?

Hyperledger 结构中没有ABI(应用程序二进制接口)的概念,因为它存在于 Ethereum/Quorum 中。

Quorum 中的ABI文件是在编译智能合约(链码)时生成的,客户端应用程序进一步将其用作对已部署智能合约的函数定义的引用。

例如:如果有一个名为getAsset(assetId: string )的函数返回一个Asset对象,那么这个完整的信息将在ABI文件中定义。

所以,简而言之,ABI服务于已部署智能合约的接口的目的,并且还保留在客户端应用程序中,作为已部署智能合约的功能定义的参考,这省略了应用程序被与已部署的合约不同步,并使用不正确的参数调用智能合约的函数。

现在,我想知道如何在Hyperledger Fabric中解决这个问题。

我正在通过asset-transfer-basic(javascript应用程序),在那里我可以看到一个名为CreateAsset的方法,它接受(assetId,color,owner,size,appraisedValue)但它们被明确传递。

我的意思是,如果不手动查看智能合约中函数的实现,就没有其他方法可以知道CreateAsset接受哪些参数。

有没有办法解决这个问题?

0 投票
1 回答
148 浏览

interface - Hyperledger Fabric:如何获取部署的链码中包含的所有函数的名称及其参数和返回类型

我想知道是否有任何可能的方法来获取部署的 Chaincode 包含的所有函数的名称,以及它们每个期望的参数以及它们的返回类型。

这样客户端应用程序就可以在调用它们时利用它来最大程度地减少不一致。

0 投票
1 回答
59 浏览

hyperledger-fabric - 卡尺错误:事务返回失败。密钥已经存在

我仍在第一次设置 Caliper 的过程中。希望你能救我:)

知道我得到了错误:事务返回失败:用户 1 已经存在。当我尝试启动卡尺基准测试时。

因为我不允许使用现有用户 ID 注册用户(在我的链码上验证)。

这是我的测试文件:

你知道我该如何解决这个问题吗?非常感谢。

0 投票
1 回答
89 浏览

sorting - 如何排序和恢复日期时间

我坐在一个 Go 结构中,其中变量中有一个日期类型。使用此日期字段将订单应用于结构时,不会返回日期,仅返回默认值。我正在使用超级账本结构来存储值并检索它们。存储在链码中的值是这样的:

我使用 time.NOW().UTC().Format(....) 在链代码中设置的“日期”参数

我有一个名为 N 的结构,其中包含以下字段:

我正在尝试使用函数 GetHistoryForKey(args[0]) 进行恢复

但是当我调用这个函数对历史进行排序时,DATE 值出现了错误,如下所示:

{"XXX":1,"YYY":12,"ZZZ":92,"DATE":"0001-01-01T00:00:00Z"}

如果我调用恢复此特定键的其他函数,则正确的值返回 ok。

{"XXX":1,"YYY":12,"ZZZ":92,"DATE":16/Nov/2020 17:50:04}

我做错了什么没有排序的返回值?

我这样设置日期:

通过此代码调用:

0 投票
1 回答
88 浏览

hyperledger-fabric - 一个链码,多个资产

我正在尝试创建具有不同资产类型的链码。

想象一下,我有一个链码,用于存储创建的用户以及用户获得积分的交易。

如何以能够查询AllUsers 和 queryAllPointsTransactions 的方式创建链码?不使用此 github 中提供的列表https://github.com/IBM/customer-loyalty-program-hyperledger-fabric-VSCode 因为在使用列表时,我们会同时遇到多个客户端和多个事务的问题。

有人可以帮助我吗?

非常感谢!

0 投票
1 回答
264 浏览

hyperledger-fabric - 获取链码的不同包 ID - Hyperledger Fabric 2.2.0

我有一个超级账本结构网络(v2.2.0)在使用 baf 部署的 kubernetes 集群中运行。最初网络有 5 个组织(Org1、Org2、Org3、Org4 和 Org5),后来我尝试使用 baf 脚本将一个 org(Org6)加入网络。由于使用 baf 脚本没有成功将 org 添加到频道,我使用 configtxlator 工具手动将 org6 加入网络。

现在在 Chaincode 安装过程中,我遇到了一个问题。测试了 fabcar 链码(来自 github repo - fabric-samples-2.0.0-beta),这个链码安装导致网络中所有 6 个组织的包 ID 相同。但是当我尝试部署自己的链代码时,我得到了新添加的第 6 个组织的不同包 ID,以及所有剩余 5 个组织的不同包 ID。任何人都可以解释这个的原因吗?

我需要引用一个声明,我正在使用我在 hyperledger fabric 1.4.2 中使用的链代码。为fabric v1.4.x 编写的链码是否适用于fabric v.2.2.0?此外,我正在使用对等生命周期链代码命令来部署链代码。

0 投票
1 回答
129 浏览

hyperledger-fabric - 无法使用新的管理员身份更新结构通道配置

背景

我们有一个生产结构集群设置,并且已经运行了一年。现在大多数证书过期并且集群崩溃,包括 tls 和身份证书。

我试图通过完全删除旧证书和私钥来修复,为 peer、peer admin、orderer、orderer 管理员生成和注册新身份。

一切都恢复正常,但我无法在现有通道中实例化/升级链代码,因为该通道配置了旧的管理员证书。

问题

所以现在看起来我陷入了僵局。为了使用新证书更新通道配置,我需要使用匹配的旧证书对更新进行签名,该旧证书已经过期并被订购者阻止。

我发现我们可以使用 ORDERER_GENERAL_AUTHENTICATION_NOEXPIRATIONCHECKS=true 在排序器中禁用过期证书检查。但是现在我没有旧的管理员私钥,所以我仍然无法更新频道配置。

问题

我已经用新的私钥替换了旧的私钥,所以没有办法再次使用旧的证书。我可以做些什么来解决这个频道问题吗?

非常感谢您的建议。

0 投票
2 回答
224 浏览

hyperledger-fabric - 如何在 Hyperledger Fabric 的链码中获取伪随机数?

由于链码必须是确定性的,有没有办法在所有背书节点中获得相同的随机数来实现类似彩票的东西?在以太坊中,你可以这样做:

通过使用区块编号、时间戳、区块难度、gas 等……但您在 Hyperledger Fabric 中没有这些。

0 投票
2 回答
329 浏览

java - 在 Hyperledger Fabric 智能合约中,我如何打开日志记录?

我用 Java 和 NodeJS 编写了一个 Hyperledger Fabric 智能合约。如何打开不同级别的日志记录?

Fabric 智能合约类本身记录在 INFO 级别,在部署和运行合约时如何更改它?

编辑:包括 Node.js(用于 JavaScript 和 Typescript)以及 Java。