标签:根据 协议 排序 c中 引导 通信 节点 collect mit
①应用程序连接到节点(安装有链码);
②应用程序向节点发送一个调用链码(方法)的提案,节点使用该提案调用链码,然后链码产生一个查询的提案响应(包含查询结果);
③节点将提案响应返回给应用程序。
①应用程序连接到节点(安装有链码);
②应用程序向节点发送一个调用链码(方法)的提案,节点使用该提案调用链码,然后链码产生一个更新的提案响应;
③节点将提案响应返回给应用程序;
④应用程序将收集到的来自所有背书节点的响应打包成一个交易,然后将交易发送给排序节点。排序节点将从全网收集到的交易打包成区块,然后再将区块发送给所有节点。节点接收到区块后,使用区块更新本地的账本副本;
⑤账本更新后,节点向应用程序发送一个账本更新事件,通知应用程序账本已更新。
*应用程序应该在提交交易后侦听交易事件,例如使用submitTransaction API,该API自动侦听交易事件。如果不侦听交易事件,你将不知道你的交易是否已经被排序、验证并提交到账本上。
①客户端应用程序提交一个用来调用链码函数(读取或写入私有数据)的提议请求到作为集合中被授权组织一部分的背书节点。私有数据,或者用于在链中生成私有数据的数据,被发送到提案的一个transient字段中。
②背书节点模拟交易,并将私有数据存储在transient data store(对等节点本地的临时存储)中。他们根据集合策略,通过gossip将私有数据分发给被授权的对等节点。
③背书节点将提案响应发送回客户机。提案响应包括已背书的读/写集,其中包括公共数据,以及任何私有数据键和值的散列。没有将私有数据发送回客户机。
④客户端应用程序将交易(包括带有私有数据散列的提案响应)提交给排序服务。带有私有数据哈希的交易像往常一样被包含在块中。带有私有数据哈希的区块被分发给所有的对等节点。通过这种方式,通道上的所有对等节点都可以用私有数据的哈希以一致的方式验证交易,而不需要知道实际的私有数据。
⑤在提交区块时,授权的对等节点使用集合策略来确定它们是否被授权访问私有数据。如果是,他们将首先检查他们的本地transient data store,以确定他们是否已经在链码背书时收到了私有数据;如果不是,它们将尝试从另一个被授权节点拉取私有数据。然后,他们将根据公共区块中的哈希验证私有数据,并提交交易和区块。在验证/提交之后,私有数据被移动到私有状态数据库和私有写集存储的副本中。然后从transient data store中删除私有数据。
私有数据集合是为通道上的部分组织定义的,只有这些组织有对私有数据背书、提交或查询的能力,通道上的其它组织不行。私有数据集合是两个元素的组合:
①实际的私有数据,通过gossip协议点对点地发送到只有被授权查看它的组织。此数据存储在被授权组织的对等节点上的私有状态数据库中(有时称为“侧”数据库,或“SideDB”),可以从这些被授权节点上的链码访问这些数据库。这里不涉及排序服务,它也看不到私有数据。注意,由于gossip将私有数据点对点地分布在被授权的组织中,因此需要在通道上设置锚节点,并在每个节点上配置CORE_PEER_GOSSIP_EXTERNALENDPOINT,以引导跨组织通信。
②数据的哈希,经过背书、排序,然后写入每一个节点的账本。哈希作为交易的证据,用于状态验证,并可用于审计目的。
标签:根据 协议 排序 c中 引导 通信 节点 collect mit
原文地址:https://www.cnblogs.com/skzxc/p/10850358.html