Blockchain Corda上的数据存储

Blockchain Corda上的数据存储,blockchain,corda,Blockchain,Corda,我正在编写一个用例。要求是我需要创建一个订单。订单有一些客户参数。订单可以修改多次。最初,我想在以太坊中实现它。因此,我想从UI中捕获客户详细信息,并将其存储在智能合约中。然而,问题是一旦部署了契约,我就无法更改它,因为它是不可变的。这个缺点使我无法使用以太坊。考虑Corda,我是否可以将客户数据存储为单个记录,并对其进行修改,以便将修改存储在我们可以查询的分类账上。例如,我想存储客户ID、客户名称、客户采购订单号、订单类型和订单状态 在Corda数据模型中我将如何做到这一点? 该数据是否可以根

我正在编写一个用例。要求是我需要创建一个订单。订单有一些客户参数。订单可以修改多次。最初,我想在以太坊中实现它。因此,我想从UI中捕获客户详细信息,并将其存储在智能合约中。然而,问题是一旦部署了契约,我就无法更改它,因为它是不可变的。这个缺点使我无法使用以太坊。考虑Corda,我是否可以将客户数据存储为单个记录,并对其进行修改,以便将修改存储在我们可以查询的分类账上。例如,我想存储客户ID、客户名称、客户采购订单号、订单类型和订单状态

在Corda数据模型中我将如何做到这一点? 该数据是否可以根据智能合约上的编码规则进行修改? 可以查询数据吗?

在Corda中,使用
State
s存储信息。在您的情况下,您可以创建一个
CustomerDataState
类。然后,您将在分类账上创建此类的实例,以表示您的各种客户

然后可以使用事务更新此数据。但并非所有交易都被允许。哪些交易是有效的基于关联的
CustomerDataContract
中的规则。
CustomerDataContract
将是无状态的,它的存在只是为了说明
CustomerDataState
s如何随时间发展


然后,您可以使用SQL风格的语法从节点的vault或事务存储中轻松查询此数据。

感谢您的快速恢复。回答了我的大部分疑问。如果我收到客户订单,并且在将来收到同一订单的修改请求。如何处理。例如,我收到客户a的请求。系统创建订单id:12345。现在客户A想要修改订单,他不能这样做,因为在corda中,状态是已消费的或已创建的。我们无法修改它。您将提出一个使用现有状态并发出表示订单新版本的新状态的事务。例如,您使用值为10的Order12345,然后创建一个id为12345但值为15的新订单。您不明白。这里值10和15的意义是什么?哦,这只是一个例子,如果你想改变订单的值。基本上,您创建一个事务,使用旧属性使用OrderState,并使用新属性发出OrderState。因此,在本例中,order 12345值10被事务Tx1使用,输出状态为order 12345值15。那么在审计能力方面,如果我想审计订单,我会得到订单12345的详细信息,值为10吗?因为它已经被消耗了