【发布时间】:2020-07-24 22:14:34
【问题描述】:
Corda 作为一个平台,如何处理一个人是否想将资产从一个账户转移到另一个账户的所有者? 或者其他有权访问节点的用户也可以访问节点上存在的任何帐户。
【问题讨论】:
-
在附注中,请编辑您的帖子标题;把它变成一个独特的问题,而不是一个笼统的标题。
标签: corda
Corda 作为一个平台,如何处理一个人是否想将资产从一个账户转移到另一个账户的所有者? 或者其他有权访问节点的用户也可以访问节点上存在的任何帐户。
【问题讨论】:
标签: corda
AccountInfo 状态,它是帐户库的核心;它有一个属性host,即托管帐户的节点(创建帐户的节点)。host 是代表帐户签名的Party,使用其密钥签名。host 是流程的发起者,那么他们可以像这样代表帐户签名:(首先你调用accountKey = RequestKeyForAccount();然后getServiceHub().signInitialTransaction(txBuilder, accountKey.getOwningKey()); 。CollectSignaturesFlow 以便响应节点签名时;每个响应的节点都会检查交易中请求的密钥,并使用请求并且它拥有的所有密钥签署该交易。host 节点不需要 10 个 FlowSession,您只需创建一个 FlowSession 并将其传递给 CollectSignaturesFlow。节点(即 10 个帐户中的 host)将在响应程序流中看到所有 10 个请求的密钥都归它所有,因此它将使用所有 10 个密钥(即代表 host 节点签名) 10 个帐户)。FlowSession's(一个用于甲方,将代表 5 个帐户签名,一个用于乙方,将代表另外 5 个帐户签名)。现在回到你原来的问题:
MoveFungibleTokens());那么只有托管“from-account”的节点才能启动流程。这样,托管帐户的节点会签署移动交易;这需要(通过合同)当前持有人(即“来自账户”)的签名,并且由于启动流程的节点托管该账户,它可以代表它签名。就绪移动流程 (MoveFungibleToken()) 内部没有 CollectSignaturesFlow() 调用,这意味着您无法启动该流程来移动属于未托管在启动节点上的帐户的令牌,因为该流程没有收集其他节点的签名,因此它无法收集“来自帐户”(即代币的当前持有者)的签名,因为它托管在不同的节点上。addMoveFungibleTokens() ) 然后使用CollectSignaturesFlow 收集“来自帐户”的签名,主机在响应流中对交易进行签名。CollectSignaturesFlow 收集“来自账户”的签名,其中账户的host 在响应流程中代表其签名。【讨论】: