【问题标题】:Sending received money (money is an example) from A to send it to B将收到的钱(钱是一个例子)从 A 发送给 B
【发布时间】:2020-07-20 12:53:59
【问题描述】:

我对 DLT 技术相当陌生,并且对 Corda 有一点了解。我还不确定是否能很好地理解所有内容,所以这是我试图回答自己的问题(使用 NotaryChangeFlow)。请纠正我。

问题设置:

我是节点 A。我与节点 B 和节点 C 共享事实。他们不共享任何事实。 对于节点 B,我们有公证人 B 跟踪我们的交易。 对于节点 C,我们有公证人 C 跟踪我们的交易。

问题:

如果 B 寄给我,假设是 5 欧元。 我如何使用这 5 欧元将其发送给 C

我的解决方案:

A 和 B 创建一个交易,更新两个状态 + 更新公证人 B 状态。 A 将公证人 B 更改为公证人 C。 A 消耗他与 B 共享的状态,并使用公证人 C 作为验证者将钱发送到他与 C 共享的事实。 A 向 C 汇款。

这样:B 知道 A 使用了 5 欧元,C 知道 5 欧元已添加到 A 余额中,然后转移给他。

这是正确的方法吗?

谢谢!

【问题讨论】:

    标签: corda


    【解决方案1】:

    是的,你是对的。让我重申一下,让它更清楚一点。 Corda 中的状态与特定公证人相关联,并且只能与该特定公证人一起使用。如果需要在不同的公证人处花费状态,则首先执行 Notary Change Transaction。在公证人变更交易中,相关状态在当前公证人处使用,并由新公证人重新签发。

    所有这些都是为了确保公证人能够完成防止网络中双重支出尝试的工作。除了一个状态被交易的公证人之外,任何公证人都不会有任何关于一个状态的先前交易的信息,并且在没有这些信息的情况下将无法防止双花尝试。

    所以现在在您的情况下,B 想要使用公证人 N1 将 5 美元发送给 A,现在 A 想要使用公证人 N2 将相同的 5 美元发送给 C。这将是一个两步过程:

    1. A 进行公证变更交易,他在 N1 花费 5 美元状态并在 N2 重新签发状态。所有这些都由库流程NotaryChangeFlow 处理。
    2. 现在,一旦公证人被更改,A 现在可以构造一个交易来在公证人 N2 处花费状态。

    在声明 B know $5 has been used by A 中,您需要将 A 添加为参与者/观察者,以便通知他任何更新。一般来说,这不是现金的要求,因为一旦我必须把钱寄给另一方,我不应该知道他用它做什么。但如果这是某些用例的要求,则需要相应地设计 cordapp。

    【讨论】:

    • 好的,非常感谢!我很高兴我确实理解了这个概念的核心。最后一个问题,我假设 2 个对等方需要知道其他人的余额(或只有对方允许共享的部分)才能验证交易。但实际上他们不需要对吗?因为仅公证人就足以验证输入状态尚未被使用。
    • 双花的情况,即验证交易的唯一性由公证人负责。但是内容验证由各个参与者通过合同来处理。因此,如果您收到 5 美元并且公证人没有标记它,那么您可以保证这 5 美元之前没有花费,但 5 美元是否合法必须由您验证。
    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 2015-12-12
    • 2022-01-02
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2019-08-06
    相关资源
    最近更新 更多