hyperledger fabric:读取查询并在通道内传递同伴

时间:2018-02-21 08:22:52

标签: hyperledger-fabric

我知道读取查询是一个链代码调用,它读取分类帐当前状态但不写入分类帐。 客户端应用程序可以选择提交只读事务以进行排序,验证和提交(用于审计目的)

问题:

  1. 是否可以在不通过链码的情况下读取分类帐数据库? 什么阻止通道上的某人直接阅读CouchDB(假设这是使用的基础数据库)而不使用合同并避免记录读取

  2. 从根本上说,我们在结构中使用异步通信。启动事务的节点仅与对等体同步进行通信,然后启动订购服务,该服务将在所有验证检查后将txn提交到分类帐。

  3. 以下可能吗? 节点A将数据提交给操作的分类帐请求 - >这需要由节点B完成。

    节点A是否可以通知B检查分类账并执行操作,B完成后通知A检查更新的分类账?

1 个答案:

答案 0 :(得分:2)

  

是否可以在不通过链码的情况下读取分类帐数据库?   什么阻止通道上的某人直接阅读CouchDB   (假设这是使用的基础数据库)没有使用合同和   避免记录读数

如果您有权访问数据库本身,那么没有什么能阻止您这样做。 但是,客户端通常无法访问数据库,因此对等体(通过链代码)可以强制选择性逻辑,客户端和可以读取的数据。 想想应用程序服务器,servlet容器等。 从浏览器浏览的用户无权访问应用程序服务器使用的数据库,对吧? 类似的事情发生在这里。

  

从根本上说,我们在结构中使用异步通信。节点   仅与对等方同步启动事务会话   之后启动订购服务,将txn提交给   所有验证检查后的分类帐..

严格来说,订购服务不会将txn提交给分类帐,因为订购服务没有分类帐。它将事务打包成块,然后将块发送给对等体。然后是对等体验证并将块提交给它们自己的分类帐。

  

节点A是否可以通知B检查分类帐并执行   操作和B完成后通知A检查更新的分类帐?

您需要客户端SDK来协调所有这些。用户链接仅在客户端请求的上下文中运行。 因此,您可以让客户端执行提交事务的操作,然后客户端发送另一个事务,其中链代码检查当前分类帐等。