Corda:如何为Corda中特定交易状态的每个节点添加自定义验证代码

时间:2017-11-08 14:38:39

标签: corda

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

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

1 个答案:

答案 0 :(得分:0)

实现此目的的最简单方法是为每个节点提供不同的流实现。例如,如果您有AcceptTxBasedOnThreshold流,则可以创建多个实现:

  • NodeA的一个AcceptTxBasedOnThreshold流程实现,其阈值可能为10
  • NodeB的一个AcceptTxBasedOnThreshold流程实现,其阈值可能为20而不是
  • 等等任何其他节点...

然后你会创建几个CorDapps:

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