首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >corda 4-一个国家是否属于一个以上的合同类别?

corda 4-一个国家是否属于一个以上的合同类别?
EN

Stack Overflow用户
提问于 2021-07-23 13:53:54
回答 1查看 73关注 0票数 0

我们正在使用Corda 4和Springboot web服务器构建一个POC。

POC以PostgreSQL为数据库,在本地网络中以DEV模式运行。

为POC开发的CorDapp有四个节点-

  1. 提供者节点(节点1)
  2. 消费者1节点(节点2)
  3. 消费者2节点(节点3)
  4. 公证节点

上述所有节点都参与了一项交易。一笔交易由三种病毒组成-

  1. 流程1:从节点1到节点2的数据流
  2. 流程2:从节点2到节点1和节点3的数据流
  3. 流程3:从节点3到节点1和节点2的数据流

当这三个流程都完成后,交易就完成了。

假设“交易1”已经启动,并执行"Flow 1“和”Flow 2“,对于"DEAL 1”,假设使用"IOUContract.class“。

由于新的需求,契约发生了更改,创建了一个新的契约类文件"IOUContractv2.class“。

现在应用程序有两份合同-

  1. "IOUContract.class“-”交易1“所用
  2. "IOUContractv2.class“--将用于新交易

当我使用"BelongsToContract“注释将上述契约类链接到"State”时,编译器不允许重复使用相同的注释。

代码语言:javascript
复制
@BelongsToContract(IOUContract::class)
@BelongsToContract(IOUContractv2::class)
data class State(val iou: IOU,
                     val sender: Party,
                     val recipient: Party,
                     var recipient2: Party,
                     val state: WorkflowState = WorkflowState.NEW,
                     override val linearId: UniqueIdentifier = UniqueIdentifier(iou.bndId.toString())) : LinearState, QueryableState {

问题:

  1. 如何使两个合同都使用相同的状态?
  2. 我用两份合同的方法有问题吗?
  3. 申请只能有一份合同吗?
  4. 如何完成使用旧合同的旧“交易”的执行?
EN

回答 1

Stack Overflow用户

发布于 2021-07-26 09:06:19

为了确保“你看到的就是我看到的”,我们在科达有“国家”。国家随着时间的推移而变化。这一演变是由一套规则所支配的。这些规则是在“合同”中写成的。在任何时间点,状态转换总是与一个契约相关联。正如您所提到的,您可能希望更改这些规则。在这种情况下,正如Alessandro正确指出的那样,你必须进行合同升级。由于您使用的是Corda 4,所以可以使用隐式签名约束来进行合同升级。按照以下步骤升级您的合同。

  1. 停止你的节点。
  2. 在罐子上签名。默认情况下,如果没有禁用Corda 4中的签名,则在运行deployNodes任务时将对jar进行签名。停止你的节点。在罐子上签名。要在jar外部签名,请使用铁匠。默认情况下,如果没有禁用Corda 4中的签名,则在运行deployNodes任务时将对jar进行签名。用这个新签名的jar替换旧的jar。
  3. 用这个新签名的jar替换旧的jar。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68500332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档