@gyorgybalazsi to give a bit more color on the reason this is encoded as an opaque blob, some of our design goals were:
- Protect DAML users from getting locked in to a single technology, i.e. allow them to port their applications across databases / distributed ledgers
- Allow DAML and the underlying ledger technologies to evolve independently, i.e. make sure each has a very clear and clean interface
By encoding the DAML-LF data as opaque blobs we ensure the developers of the underlying platform and the integration don’t make any implicit assumptions about DAML, and the developers of DAML don’t make any implicit assumptions about the underlying platform. Goal (1) is achieved because the underlying platform is unaware of the DAML data, making ensuring that the Ledger API is your sole interface into DAML based applications. Goal (2) is achieved because the abstraction sets a clear interface between DAML concerns and ledger concerns, so each can evolve independently.