As far as I understand, DAML on Fabric is not compatible with Fabric’s two privacy features, Private Data and Transient Data.
The difference between Private Data and Transient Data is explained eg. in this blog post:
Scenario 3 : Using Private Data with Transient Data input
Similar to Scenario 2, data is written into the private data part inside a ledger, and only those peers of organizations defined in collection definition will keep this data. In the chaincode, PutPrivateData and GetPrivateData API are used with collection specified. When we invoke chaincode, we specify the input as transient data, not as arguments. And we use GetTransient in the chaincode to process the input data.
This can be used when data privacy is needed in storage, while the input data is sensitive such that they should not be kept anywhere.
From the description, it seems to me that for using these two features we don’t need different chaincode logic, just need to use three special functions in the chaincode for processing the input arguments, and put and get the world state data.
All this makes me wonder if it would take a big development effort to make DAML on Fabric support these two privacy features.
Hi @gyorgybalazsi, you’re correct that the current implementation doesn’t use these Fabric privacy features. In the current version of DAML for Fabric, the full DAML privacy spec is enforced at the API level and not the infrastructure level. You’re correct that it wouldn’t be too big a development effort to make DAML for Fabric support these.
We’re currently working on the next version of DAML for Fabric based on the Canton protocol which will provide full DAML privacy guarantees in addition to all of the Canton feature set.
We haven’t announced a GA date yet. If you have specific clients/use cases which require Fabric we’d be glad to know as it may affect prioritization.
DM me on Slack if you want early access to the alpha version, I’m sure we can arrange that for you.
From a user perspective, it won’t feel much different than using Canton with the Postgres integration (the Canton domain will be centralized, but you can still distribute the participant nodes) so you may want to start with Postgres and it will be dead simple to swap in Fabric and transfer all contracts after the fact, even if you’re already in production.