首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当链码有授权或事件的编码块时,如何才能达成一致?

当链码有授权或事件的编码块时,如何才能达成一致?
EN

Stack Overflow用户
提问于 2016-07-06 03:03:31
回答 1查看 445关注 0票数 1

我读了协议规范https://github.com/hyperledger/fabric/blob/master/docs/protocol-spec.md#5-byzantine-consensus-1

我想知道:

  1. 当链码有一个编码块的授权时,到底发生了什么?
  2. 当链码有一个事件编码块时,到底发生了什么?

例如,A、B、C、D是四个缔约方,它们运行在四个验证对等点上。在链码A中有一个授权的编码块,只有甲方有权运行该编码块。在链码A中有一个事件编码块,只有甲方才能得到事件的结果。

所以只有甲方才能进入代码块。乙方、丙、丁不能撞上代码块。

在这种情况下,PBFT如何达成A,B,C,D的共识?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-14 12:30:50

考虑到上述意见,这个问题可以改为如下:

“示例management.go有”isCaller“方法,该方法只能由”调用者“执行。在这种情况下,如何达成PBFT共识?“

但是这个定义是不正确的,因为所有的A、B、C和D验证对等点都可以在“传输”、“分配”和“isCaller”中执行代码,如果事务使用原始的“管理”证书签名的话。

让我们看一下这个例子,一步一步地学习。

  1. “asset_management.go”链码可以由任何具有“客户端”角色的用户部署到分类帐中。
  2. 在部署期间,在Init方法中,这个用户的证书将保存在分类帐中,作为“admin”: adminCert,:= stub.GetCallerMetadata() .stub.PutState("admin",adminCert)
  3. 当某人想将assigntransfer交易提交到分类账中时,他必须用自己的证书签署这项请求。
  4. 此请求将传播到网络中的所有VP。
  5. 每个VP将从分类账中加载“admin”证书,并将其与用于签署此特定请求的证书进行比较: adminCertificate,:= stub.GetState("admin") .好的,:= t.isCaller(存根,adminCertificate)

如果证书不是相同的-此请求将不会被VP在PBFT共识阶段接受。

如果证书是相同的-所有VP都会知道这个请求是由原始的“调用者”签名的,并且将继续执行链码,因为它们有这样做所需的所有信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38215761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档