Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hyperledger fabric Hyperledger Fabric-手动干预以批准来自其他组织的链码调用_Hyperledger Fabric_Hyperledger Chaincode - Fatal编程技术网

Hyperledger fabric Hyperledger Fabric-手动干预以批准来自其他组织的链码调用

Hyperledger fabric Hyperledger Fabric-手动干预以批准来自其他组织的链码调用,hyperledger-fabric,hyperledger-chaincode,Hyperledger Fabric,Hyperledger Chaincode,假设存在两个不同的链码,比如chaincodeA和chaincodeB chaincodeA实现了一个函数,该函数在完成之前(例如,将某物置于状态),它调用chaincodeB中的一个函数,请求其他组织的管理员批准此操作 例如: 调用chaincodeA-函数启动,在某些步骤后调用chaincodeB上的相应函数,该函数要求其他组织的管理员同意 chaincodeB中调用的函数启动并请求其他组织中的每个管理员进行批准。在这种情况下,chaincodeA的功能将等待已签署的批准的交付 每个管理员都

假设存在两个不同的链码,比如chaincodeA和chaincodeB

chaincodeA实现了一个函数,该函数在完成之前(例如,将某物置于状态),它调用chaincodeB中的一个函数,请求其他组织的管理员批准此操作

例如:

  • 调用chaincodeA-函数启动,在某些步骤后调用chaincodeB上的相应函数,该函数要求其他组织的管理员同意
  • chaincodeB中调用的函数启动并请求其他组织中的每个管理员进行批准。在这种情况下,chaincodeA的功能将等待已签署的批准的交付
  • 每个管理员都已回答-结果将返回到chaincodeA的调用函数,并检查多数人是否同意
  • 如果大多数管理员批准了该操作,则该函数可以继续,否则返回错误
  • 这样(或接近这样)的事情可能吗?如果没有,即使没有人工干预,如何实现这样的目标


    我是否应该在调用chaincodeA函数之前达成共识,并将管理员的答案保存到状态,以便在需要时检查它们?

    手动干预

    我以前也考虑过类似的事情——将人力投入作为智能合约的一部分。作为这个思想实验的一部分,我发现了一些问题

    • 超时,事务最终必须完成,因此在对等机上配置了超时。在某个时候,它需要使事务超时。任何来自人类的输入都需要足够快才能在这个超时下进入,或者至少有一个可接受的默认选项
    • 你如何确认你问的是谁?他们的身份如何确定?经典问题,但在这里也非常相关
    备选方案

    我认为最好的选择是看一个更异步的模型。例如,一个事务记录了需要做出决策的事实。每个管理员都可以记录他们的“投票”。最后一个事务可以用来给出通过/不通过的决定

    通过适当地使用访问控制、事件以及一些链外代码,我可以看到这是如何实现的

    交叉链码调用

    我不认为需要跨链码调用来满足这一要求,只是简单地澄清一下

    在单个智能合约中,任何事务函数都可以根据常规编程调用任何其他函数。它的行为只是成为同一事务的一部分

    在同一通道上跨链码容器调用-同样,操作也合并到同一事务中

    可以调用其他通道,但只能以只读方式调用

    定义

    我使用术语智能合约来指代构成代码的实现、函数和类


    链码是运行智能合约的容器,是对等方的部署单元。

    谢谢Calanais。在第一个项目符号中,您说“在对等机上配置的超时”。难道不应该在链码本身配置超时吗?另外,我更关心的是:假设链码广播一条类似“嘿,投票!”的消息。每个人都知道,在系统中,只有具有“管理员”角色的成员才能投票(这解决了第二个问题,不是吗?)。所以,每个组织的每个管理员都会来投票,但是投票会发送到哪里呢?我的意思是,SDK如何将投票返回给发出该事件的函数(并等待答案)?