I am working on a use case. The requirement being I need to create an order. The order has some customer parameters. The order can be modified multiple times. Initially, I thought of implementing it in Ethereum. So, I thought of capturing the customer details from a UI and store it on the smart contract. However, the issue is once the contract is deployed I cannot change it since it is immutable. This drawback prevents me to use Ethereum. Deliberating on Corda, can I store the customer data as a single records and make modifications to it such that modifications are stored on the ledger which we can query. For instance, I want to store customer ID, Customer name, customer purchase order number, order type, and order status.
How would I do that in Corda data model? Will that data be modifiable based on the rules coded on smart contract? The data can be queried?
Yes.
In Corda, you store information using
State
s. In your case, you might create aCustomerDataState
class. You'd then create instances of this class on the ledger to represent your various customers.This data can then be updated using transactions. But not all transactions are allowed. Which transactions are valid is based on the rules in the associated
CustomerDataContract
. TheCustomerDataContract
will be stateless, and simply exists to say howCustomerDataState
s can evolve over time.You can then easily query this data from your node's vault or transaction storage using an SQL-style syntax.