I am coming near to the end of my project so I expect there will be no more technical questions from me. Thanks for the help so far.
Now I am writing up the results of the work. I have had one overriding doubt about DAML this entire time; contract visibility. In fact, I have asked a few technical questions about how to overcome problems presented by DAMLs strict contract visibility rules. Maybe you can convince me that this isn’t really a problem before I write something ‘bad’ about DAML in my report
In this blog post Built a distributed application for supply chain using DAML in 4 weeks , the writer expresses that a motivation for writing ‘yet another’ supply chain application is to provide the ‘ability for every player to review the demand and supply patterns’. This corresponds with the major arguments for using blockchain in supply chain management: visibility, record immutability etc.
Given that observers need to be explicitly set on records, how can it be argued that DAML does provide the visibility to ‘every player’ in the supply chain?
I can’t speak for the writer of the article but the way I see DAML’s strict contract visibility rules are:
Each participant can see all contracts which are relevant to them, but cannot see ones they are not involved in. This allows them to have the maximum visibility into their workflows without having any of their private operational concerns disclosed to parties that don’t need to know about them.
For example if a supply chain had 2 manufacturers creating supplies they may not want their competitors seeing their quotes for their services as it’s competitive information. That could give the other an edge (say by undercutting costs). However if you’re the party responsible for ordering supplies from these two manufacturers you most certainly will want to see all your interactions with them.
So you essentially preserve the privacy you get right now with multiple disparate systems not really talking to each other; and it can be argued you enforce it better with DAML’s strongly enforced guarantees. But on the opposite end you get more visibility into your workflows by not having the frictions and opacity that multiple disparate systems create.
Cheers @anthony. I was reading about the UK Startup Provenance (https://www.provenance.org/tracking-tuna-on-the-blockchain) and their aim to create a blockchain solution for supply chain visibility with the aim of creating a ‘globally auditable’ database. I read that article and felt that this would not be possible in DAML.
I agree it would be a tad more cumbersome but if you did need a user(or users) that could see every contract and action you could do that by creating an observer party (call it seeEverything) on all contracts.
I think this requirement though really helps programmers think about their programs. Does seeEverything truly need to see everything? Ohh this contract has trade secrets, shouldseeEverything still see it?
And if the answer is yes then it also gives those using the system valuable information “okay this party can see everything we do”.