【问题标题】:Corda: How to add custom validating code for every node on a particular transacting state in CordaCorda:如何为 Corda 中特定事务状态的每个节点添加自定义验证代码
【发布时间】:2017-11-15 20:16:58
【问题描述】:

在 Corda 示例中,如果我们想添加自定义验证代码,我们可以在响应者代码中重写 checkTransaction() 以确保 IOU 高于某个阈值。这假设所有响应者都同意该阈值。

如果我们允许每个贷方设置自己的门槛会怎样。在这种情况下,阈值变成一个变量。为了解决这个问题,我创建了一个直接将阈值(整数)发布到数据库的 UI。但是,我发现很难提取该值并将其传递给流代码中的阈值变量。有没有更好的办法?如果这可行,我可以隔离更多变量并使用单个节点的 UI,我可以设置自定义参数(到数据库中)用于验证 Tx 中的状态。

【问题讨论】:

    标签: corda


    【解决方案1】:

    实现这一点的最简单方法是为每个节点提供不同的流程实现。例如,如果您有一个 AcceptTxBasedOnThreshold 流,您将创建多个实现:

    • NodeA 的一个 AcceptTxBasedOnThreshold 流实现,其阈值可能为 10
    • NodeB 的一个 AcceptTxBasedOnThreshold 流实现,其阈值可能改为 20
    • 对于任何其他节点等等...

    然后你会创建几个 CorDapps:

    • 第一个 CorDapp 将包括每个人都使用的共享状态和合同定义。你会在每个节点上安装这个 CorDapp。这个 CorDapp 不会包含任何流定义
    • 然后,您将为每个节点创建一个额外的 CorDapp:
      • 只有 NodeA 的 AcceptTxBasedOnThreshold 流的 CorDapp。这个 CorDapp 只能由 NodeA 安装
      • 只有 NodeB 的 AcceptTxBasedOnThreshold 流的 CorDapp。这个 CorDapp 只能由 NodeB 安装

    【讨论】:

    • 如果每个人都可以拥有自定义流程(尤其是发行流程),那么如何确保各方没有运行他们没有资格运行的流程指令。白名单如何以这种方式工作?我们是否需要硬编码到合同代码中以检查特定流的特定法律实体
    • 人们可以通过设计自定义流程。每个参与者都拥有自己的节点,并且可以控制他们在其上安装的流代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多