Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Corda:在单个事务中更新和使用ContractState 问题_Corda - Fatal编程技术网

Corda:在单个事务中更新和使用ContractState 问题

Corda:在单个事务中更新和使用ContractState 问题,corda,Corda,考虑Corda中的以下设计问题。假设我有一个ContractState,比如说Order,它带有一个明确的状态,例如它是活动的或者取消的。后一种状态与已完成的订单相关。我想要一个事务,它接受一个活动的输入状态订单,并在将其状态更改为已取消时使用它。我可以用原子转换来完成这个任务吗?换句话说,是否可以记录一个状态被消耗的原因? 任何时候,当一个状态被添加为事务的输入时,它都被视为已消费 比如说,Order有3个属性:Order(linearId、status、reason) 为了模拟Corda中的

考虑Corda中的以下设计问题。假设我有一个
ContractState
,比如说
Order
,它带有一个明确的状态,例如它是
活动的
或者
取消的
。后一种状态与已完成的订单相关。我想要一个事务,它接受一个
活动的
输入状态
订单
,并在将其状态更改为
已取消时使用它。我可以用原子转换来完成这个任务吗?换句话说,是否可以记录一个状态被消耗的原因?

  • 任何时候,当一个状态被添加为事务的输入时,它都被视为已消费
  • 比如说,
    Order
    有3个属性:
    Order(linearId、status、reason)
  • 为了模拟Corda中的更新,您的事务将以要更新的状态作为输入;并生成一个新状态,该状态具有相同的
    linearId
    ,但其余属性的值不同。这样,vault中具有相同
    linearId
    的所有状态都将被视为相同状态的不同版本,只有一个
    未使用的版本;这是最新的版本
  • 订单(123,活动,空)
    ——更新发送--->
    订单(123,取消,“不再需要”)
  • 如果状态被“取消”,您也可以考虑不创建输出;你只是消耗它,而不是创造一个输出;这意味着它不再存在于分类账上,Corda也不会跟踪它:
    订单(123,活动,空)
    ——取消发送--->无输出
      • 任何时候,当一个状态被添加为事务的输入时,它都被视为已消费
      • 比如说,
        Order
        有3个属性:
        Order(linearId、status、reason)
      • 为了模拟Corda中的更新,您的事务将以要更新的状态作为输入;并生成一个新状态,该状态具有相同的
        linearId
        ,但其余属性的值不同。这样,vault中具有相同
        linearId
        的所有状态都将被视为相同状态的不同版本,只有一个
        未使用的版本;这是最新的版本
      • 订单(123,活动,空)
        ——更新发送--->
        订单(123,取消,“不再需要”)
      • 如果状态被“取消”,您也可以考虑不创建输出;你只是消耗它,而不是创造一个输出;这意味着它不再存在于分类账上,Corda也不会跟踪它:
        订单(123,活动,空)
        ——取消发送--->无输出
      谢谢!在问这个问题之前,我知道这两种解决方案。我想确定没有比这更地道的了。谢谢!在问这个问题之前,我知道这两种解决方案。我想确定没有比这更地道的了。