问题标签 [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 投票
2 回答
734 浏览

hyperledger-fabric - Hyperledger Fabric:实现链码级访问控制

我想对某些方法实现链码级别的访问控制。因此,例如,我希望调用的链码方法只有在执行请求的用户具有与世界状态中请求的资产字段匹配的特定身份时才能执行。

https://hyperledger-fabric.readthedocs.io/en/release-1.4/chaincode4ade.html,官方文档说:

“Chaincode 可以通过调用 GetCreator() 函数将客户端(提交者)证书用于访问控制决策。此外,Go shim 提供了扩展 API,可从提交者的证书中提取客户端身份,可用于访问控制决策,无论是基于在客户身份本身、组织身份或客户身份属性上。

例如,表示为键/值的资产可能包括客户端的身份作为值的一部分(例如作为指示资产所有者的 JSON 属性),并且只有该客户端可能被授权对键/值进行更新在将来。客户端身份库扩展 API 可在链代码中使用来检索此提交者信息,以做出此类访问控制决策。”

这完美地反映了我的情况:我的资产包含一个字段所有者,我希望只有作为该资产所有者的用户才能对资产执行删除方法,即如果他的身份 - 用户名 - 与所有者字段匹配。

我的问题是官方文档中提供的解决方案描述了使用“客户端身份(cid)库”的可能性(https://github.com/hyperledger/fabric/tree/master/core/chaincode/shim/ext/ cid ) 从证书中提取用户信息。但在我的情况下,我有 Java 和 Javascript 的链码,并且(我认为)我只能使用 GetCreator() 方法,它将用户证书作为字节数组作为输出。

如何从证书中提取我需要的信息?可能吗?是否可以使用我的 Java 和 Javascript 链代码中的 CID 库?

0 投票
1 回答
199 浏览

hyperledger-fabric - 如何在节点链码中使用 stub.getTransient()

我有一个用 node.js 编写的链码,我正在尝试读取瞬态值,但它无法正常工作:

我的代码:

value是不正确的。出现一些随机字符。

0 投票
1 回答
242 浏览

transactions - 通过超级账本结构中的交易 ID 获取发件人证书

我正在使用GoLangSDK 与链代码中的 Fabric 网络进行交互,但我找不到从交易 ID 获取证书以找出谁签署交易的方法。

0 投票
0 回答
446 浏览

hyperledger-fabric - Hyperledger Fabric:资产查询上的 ENDORSEMENT_MISMATCH

似乎我误解了 Hyperledger Fabric 如何处理查询。我目前正在使用 fabric-go-sdk 从分​​类帐中查询资产,例如

当我的系统处于负载状态时(许多与查询无关的新事务),我有时会收到以下错误消息:

背书验证失败:背书客户端状态代码:(3) ENDORSEMENT_MISMATCH。说明:ProposalResponsePayloads 不匹配。

如果只查询数据,为什么要涉及背书?对我来说,错误消息似乎表明多个对等方对查询的回答不同。这是否意味着一些对等方已经将资产提交到账本中,而另一些则没有?值得注意的是,查询是在资产创建后不久运行的,并且不会始终如一地发生。

查询链码非常直接且最小化:

0 投票
1 回答
135 浏览

hyperledger-fabric - 什么时候需要实现Fabric高吞吐以避免key冲突?

我正在尝试在低 TPS 的 Fabric 中实现令牌。根据高吞吐量样本,我必须考虑密钥冲突并尽量避免为帐户使用相同的密钥。由于实现的难度,我想知道有没有必要实现高吞吐?我需要多少 TPS 来实现它?

0 投票
1 回答
401 浏览

hyperledger-fabric - Hyperledger Fabric Go SDK:如何解析块

我正在使用 Hyperledger Golang SDK 来实现客户端以使用分类帐。我的应用程序依赖于发送的事件,但是,我想使用 BlockEvents 以便我可以确保给定的数据已经写入分类帐而不是链码事件。不幸的是,关于这类事件的文档非常有限。我注册了 BlockEvents,并使用它们每个引用的结构func (c *Client) RegisterBlockEvent()...获取BlockEvent响应。Block块结构如下所示:

我可以导航到BlockData

但是,此时我迷路了,只有一个原始字节数组作为数据。我想针对特定的资产创建事件,并且需要解析块数据以搜索数据。该数据使用什么结构或结构?我假设每个数组条目都代表一个事务,但是如果没有映射到它的结构,解析非常困难。

0 投票
1 回答
273 浏览

javascript - 从本地网络访问本地托管的 Hyperledger Fabric

我正在尝试使用 Fabric SDK 访问本地托管的 Hyperledger Fabric。我从本地机器调用事务没有问题。但是,当我尝试使用同一网络中另一台机器上的 Fabric SDK 运行脚本时,我不断收到错误消息。

我在 config.json 中指定了我的本地 IP 地址

我还尝试通过在连接文件中将 localhost 更改为我的 IP 地址来使用我的本地 IP 地址:

是否需要更改任何不同的设置才能从不同的机器访问 Fabric?

我正在使用 VSCode 中的 IBM Blockchain Extension 开发智能合约。

当我运行我的脚本“query.js”时,我不断收到这个错误:

0 投票
0 回答
260 浏览

hyperledger-fabric - Hyperledger Fabric:Java 类中的对等链码实例化错误

“我是fabric的新手,并试图在fabcar网络上的“mychannel”中安装和实例化一个java链代码,其中安装操作已成功完成,但在实例化时出现以下错误,任何人都可以帮助解决这个问题”

安装 :

实例化:

安装 :

实例化:

错误:无法组装事务,错误提案响应未成功,错误代码500,msg错误启动容器:错误启动容器:无法生成特定于平台的docker build:从构建返回的错误:1“Maven构建

0 投票
1 回答
294 浏览

hyperledger-fabric - Hyperledger Fabric - 实现交易类型并为每种交易类型配置背书策略

在 Hyperledger Fabric 中,一项资产有多个交易。这些交易更新资产的状态并保持跟踪。

目前,如果我想为一种资产拥有不同的交易类型,那么我已经在链码中编写了与交易类型相对应的不同函数。

例如:如果我的资产是汽车,那么每个资产都可以有销售、购买、服务、维修等类型的交易。对于这些购买、维修、服务等中的每一个,我在链码中编写了一个函数,它得到根据作为输入发送的交易类型调用(交易类型作为对等链码调用命令中的参数发送)。

你认为这是一个好方法吗?你遵循什么?推荐什么来实现不同的交易类型?另外,我如何为不同的交易类型执行不同的背书策略?

注意:我知道可以用链码编写的基于资产(或基于密钥)的背书策略(Fabric v1.4)。但这不允许我根据交易类型配置背书策略。

0 投票
1 回答
542 浏览

couchdb - 如何为我的 Hyperledger Fabric 链码部署 couchDb 索引?

我正在尝试使用 couchdb 索引部署链代码,但它不起作用。我使用 Hyperledger Fabric 版本 2.0 alpha 并且我的链码正在运行。

这是我的索引

这是文件夹结构:chaincode\META-INF\statedb\couchdb\indexes\indexPrice.json

这是我的链码中的查询

在我的日志文件中执行查询时,我发现此错误:

错误是什么?