This article offers a comprehensive view of DAML — the open-source language for smart contracts. You’ll also learn the benefits of DAML and comparison with other languages.
As blockchain technology evolves, there is a need for improved systems through which users operate and interact. Already, there are a lot of improvements happening especially as the enterprise blockchain continues to become popular. Among the latest developments in the fast-changing blockchain environment is DAML.
Since the dawn of the internet, data immutability is a property that eluded many developers. As such, bad actors within the online ecosystem took advantage of the ability to alter data to commit various crimes.
However, blockchain proved more important when developers demonstrated the capability of carrying out transactions in an environment without a central player like it happens in the legacy financial world.
In addition to these public ledgers, a large market for private, permissioned ledgers has also taken off. Whether controlled by a legally-authorize central party or a consortium of mutually distrusting actors who have a common goal, private ledgers provide the same future-proofing and immutability as public ledgers with the added ability to maintain data privacy.
Whether a given ledger is public or private, underpinning the ability for peers in a blockchain ecosystem to interact with privacy guarantees is the class of application usually referred to as smart contracts.
This article will discuss later in detail what smart contracts are and their importance in the context of DAML.
Enroll Now: Enterprise Blockchains Fundamentals Course
What is DAML?
In technical terms, DAML stands for Digital Asset Modeling Language (DAML full form). However, the technical jargon may confuse. So, for simpler DAML meaning think of it as the open-source language for smart contracts.
Essentially, DAML is a smart contract language that enables developers to accurately code multi-party agreements for a variety of blockchain, DLT, or even standard database architectures.
Originated by Digital Asset, breathes a new life into this application genre (smart contracts) which enables peers to transact in an environment of trust. Basically, this is a programming language that draws inspiration from Haskell and which facilitates the creation of smart contracts for distributed business workflows.
Notably, the language enables developers to cut down the amount of time spent dealing with the nuts and bolts of encryption and blockchain. Instead, the developers focus their time on developing programming solutions for business processes.
DAML – Language for Smart Contracts Simply Explained
Properties of DAML
Provides A Means for Writing Contracts
Like other languages which programmers use to write smart contracts, DAML enables peers to make and honor agreements. Notably, the language describes the process of formation of a contract, the key parties in the agreement, and the parties with delegated rights to the contract.
Besides defining the formation process of a contract, the language takes care of encoding of ideas like contracts, rights, parties, authorization, and obligations in that the developer only has to deal with the logic of their business; any heavy lifting relating to things like hashing in cryptography, and consensus algorithms are abstracted away and handled by the runtime.
This direct expression of contract elements as native language features implies that the DAML architecture can ably check the system code for problems automatically and earlier in the development cycle. Further, the system has the capability to reason on its own about the business logic.
It Is Open-Source
On April 4, 2019, Digital Asset, the firm behind DAML announced that the source code for the program would be freely available to all developers. This open-sourcing of the project meant that different parties would be able to use DAML to model and execute contracts through blockchain technology without fear of vendor lock-in.
According to the announcement, developers and other interested parties will be able to access the DAML language, source code, Software Development Kit (SDK), and runtime under the very permissive Apache 2.0 license.
Usable in A Private Execution Environment
One shortcoming of publicly distributed ledgers is that every node on the platform can view the data that is present in the smart contracts. As such, peers that need to keep the details of their deal private find it impossible to transact over a public blockchain network.
In particular, this is one major stumbling block that is preventing the complete adoption of enterprise blockchain. This is why, as mentioned earlier, private DLTs have soared in popularity.
The combination of DAML and a private DLT platform provides a remedy for this case. Notably, the team behind this expressive language optimized DAML in that it works perfectly in a private execution environment. This is to say that information carried in the contracts stays private such that only authorized parties can access it.
Readable by Humans and Machines
DAML is revolutionary in more than just one sense. Notably, the design of the system is in a way that machines and humans can understand the information included in the contract.
The implication of this capability is huge. The professionals involved in the formation of a contract will have an easy time getting their way around the details because DAML is very human-friendly.
For instance, a lawyer can easily understand the meaning of a contract by reading and assessing the DAML encoding of that contract. At the same time, DAML provides the right degree of specificity for developers to compute important aspects of a contract like cash flow, profiles of customers, and risk exposure.
How DAML Works? A Quick Functional DAML Tutorial
DAML works pretty much like all the other smart contract writing languages. In particular, the language works in two major levels where there is the language itself and the runtime.
Language is like the main part of technology. This is what enables developers to do all the work they need to do in terms of writing agreements and facilitating transactions.
Because there are very clean and abstracted APIs between the language and runtime, the runtime can be adapted to execute on a variety of blockchain, DLT, and other platforms.
This provides the flexibility for DAML applications to be ported across platforms that deliver support for DAML. This is analogous to a JVM allowing Java applications to run unchanged on any platform that supports the JVM.
After installation of the Software Development Kit (SDK), developers only need to run a few specific files so that the device can be in a position to support the operations.
One of the main and most important tasks one needs to perform when writing a smart contract is the modeling of data to be used with that contract. Normally, the data modeling function is complicated and can lead to very complex data structures depending on how complicated the contracts are and how many parties are involved.
Unlike other smart contract languages, DAML enables developers to specify their data schema on the fly, directly embedding it within the contract’s execution language. This greatly simplifies the task of data modeling and reduces the chance of errors being introduced due to mismatches between the data schema and application logic.
Read More: DAML Tutorial: Getting Started with DAML
Template Outline Structure
The DAML developer specifies a contract through a simple and well-defined structure called a “template”, which contains both the data model and parameters of the contract.
The parameters include, for example, the signatories to a given contract (those participants that must authorize actions on the contract), and the observers (those participants within the agreement who are just there to see the contract and what it does but are not authorized to take actions). Another aspect of the template structure includes the agreement, which is basically the detail of the agreement and a representation of what the contract is about.
Templates can specify one or more preconditions that ensure that the contract is created only if a certain threshold is achieved by the creator of the contract. The last element of the template outline structure is “choices”. This defines the range of choices which the executor of the contract can exercise.
A major structure within the template is the choice structure, which details the choices which the contract parties can choose in terms of the nature of the template.
The choice structure identifies the controller or the party which is responsible for exercising the choice. Other elements of this structure include consumability, a name, a return type, choice arguments, and a choice body.
Read More: DAML Training Tutorial
Comparing DAML vs Smart Contracts
Understanding Smart Contracts
Like earlier explained, smart contracts are a vital component of the distributed ledger technology (DLT). In public blockchains, two anonymous parties can create a smart contract to facilitate a certain transaction but the data remains stored on the public ledger. This is to say that all participants in the network can view the details of the deal to ascertain its authenticity. As such, enforcement of trust is possible.
In private, or permissioned DLTs, all parties are known but only those parties involved in a given transaction have access to that transaction’s data. Trust is still maintained through mechanisms that allow participants to validate all transactions to which they have access.
Smart contracts have distinguishing characteristics which also make them revolutionary.
For instance, smart contracts can have a self-executing mechanism that kicks in motion on cue from set deadlines (also called triggering events). In public networks, any interested party can analyze the activity of the smart contracts such that any anomaly can be identified.
Also, traders can use smart contracts to get the pulse of the market. This includes the ability to predict trends and uncertainties in the market.
Smart contracts have a number of benefits which include immutability of data. In basic terms, immutability refers to the impossibility of data alteration from its original state. This is to say that the data cannot be erased or altered in any manner conceivable.
The immutability of the data makes the smart contracts always accurate. Third, in some cases, smart contracts enable peers to transact directly without the need for an intermediary. Therefore, such transactions are very cheap, sometimes they do not cost a dime.
Properties of Smart Contracts
Proof of Obligations and Rights
One critical feature that smart contracts must possess is that one does not have to transact without being comfortable with the whole process. In essence, agreeing to enter a contract is completely voluntary but the consequences are compulsory. Therefore, the user must reliably and ably consider the future implications of the contract that one signs on to. The smart contract must guarantee that this is always the case, something that can be very difficult to get right.
Verification of Transaction Validity
Like earlier discussed, information concerning the details of the contract is easily traceable from the ledger. Therefore, this fulfills the requirement for contracts whereby one can verify their authenticity and validity.
Read More: Smart Contract Use Cases
Comparison with DAML
Essentially, it is obvious from the foregoing that DAML produces a subset of smart contracts in that one is able to correct the deficiencies of existing languages. Like earlier discussed, the fact that smart contracts on public networks store their data on public ledgers makes smart contracts unattractive for confidential transactions.
However, DAML, when used in conjunction with private networks, ensures that only those parties which authorize the contract, alongside those with delegated permission to view the details, can have access to the contract information. This is one reason why knowledgeable observers believe this language is the killer function for financial institutions and others that require transaction confidentiality.
Nonetheless, DAML as a language for smart contracts differs from traditional smart contracts when it comes to sharing the written agreements. Smart contracts languages like Solidity share the information publicly, hence the whole network has access to the details. That’s why people debate on DAML vs solidity.
On the contrary, agreements written in DAML are only available on a need-to-know basis. This is to say that undesirable third parties do not have access to the details. In particular, the language utilizes an extra layer of security whereby the data is not even available to undesirable parties.
Benefits of DAML
The blockchain platform might be just 10 years old but it is growing rapidly. Today, technology is revolutionizing industries at unprecedented rates. The reason for this fast growth is the fact that blockchain is open source and any developer can tinker with it to come with the best solution for a certain problem.
Interestingly, DAML is also open-source since April 4, 2019. This is to say that developers have the latitude to modify the DAML code to create the most innovative solutions when it comes to smart contracts and the blockchain ecosystem in general.
Read More: Is Blockchain The Future?
Enables Private Transactions
Traditional smart contract languages do not contain native features with robust restrictions where agreements can be made private. In essence, the information in the agreements is accessible to all participants, including undesirable third parties.
However, as discussed earlier, DAML incorporates an extra layer of security where such information is only accessible to authorized parties.
Accelerates Enterprise Blockchain Adoption
As blockchain transitions to enterprise use cases, one of the issues holding the technology back is the distributed nature of information. Notably, as discussed earlier, there are already efforts like the creation of private blockchain platforms where all participants have to acquire permission before entry.
However, enterprises still face the threat of competitors getting sight of their strategy. However, the entry of DAML is a potential solution to that problem. In particular, the language restricts agreement data to only those nodes authorized to access it, and information regarding agreements is not available to other users. As such, enterprises have no excuse but to jump on board and exploit the enterprise blockchain potential.
In-Built Support to Validate Model Correctness
Given the inchoate nature of blockchain, most of the operations and models are experimental and novel. Therefore, there is a need for constant validation of the correctness of the models. Luckily, DAML comes with in-built support where validation of the correctness of models is automatic.
The DAML runtime is robust and performs vital operations to make the language superior to the existing alternatives. For instance, the runtime abstracts the details of the ledger in that the developer can focus on the logic of the contract.
Comparing DAML With Other Alternative Smart Contract Languages
The blockchain ecosystem is still growing and that implies that there are no standard systems of operations. This also means that there is no single language that dominates in the writing of smart contracts. As such, there are numerous other alternatives apart from DAML.
DAML vs Solidity
Solidity is one of the very first languages for writing Ethereum smart contracts that gained popularity. This popularity was a result of the Ethereum blockchain platform being a preferred network for smart contracts.
Further, the Ethereum developers used Solidity to write version 0.4.0 of the software. The beauty of this language is that it does not break the functionality of the blockchain network.
In addition, the language is vital in the creation of smart contracts that run on the Ethereum virtual machine (EVM). The language enhances the ability of applications to self-reinforce the business logic which is inherent in smart contracts. As a result, transacting parties in the Ethereum ecosystem leave an authoritative record of their transactions to facilitate verifiability.
Unlike DAML whose language is similar to that of Haskell, Solidity utilizes a syntax that is close to ECMAScript. However, Solidity has extra capabilities like variadic return types and the ability for static typing. Also, contracts written in Solidity support multiple inheritances which are facilitated with C3 linearization.
Actulus Modelling Language
Since blockchain began to take the enterprise direction, various financial domain-specific languages came up to solve some problems identified in the initial languages.
In addition to DAML and Solidity, Actulus Modelling Language (AML) came up to help solve computational issues in the pension and insurance sectors. In particular, AML is a multiparty venture that incorporates Edlund A/S and the IT University of Copenhagen.
Unlike languages like Java, and C/C++ among others which are generally applicable in various settings, AML is domain-specific. This is to say that the language is useful for a specific purpose or can create applications that run on a specific platform. As such, the language cannot create stand-alone programs, interfaces, and applications.
BOScoin Trust Contracts
This is another alternative solution that uses Web Ontology Language (WOL) to create smart contracts. BOScoin always employs Timed Automata Language (TAL) to enhance the trust and robustness of the contracts. In particular, the language creates Trust Contracts that facilitate the creation of Decentralized Applications (DApps). Essentially, the smart contract emboldens the trusted nature of DApps.
Learn More: What is dApp?
Similar to DAML, BOScoin is not Turing-Complete. Instead, the languages are decidable which differentiates them from the Turing-Complete nature of Ethereum Smart Contracts. Unlike Ethereum smart contracts, BOScoin Trust Contracts use a comprehensive and more contained ontology language. In particular, this is due to the need for the team to create a platform where developers can come up with reliable contracts.
What Does the Future Hold For DAML?
As things stand, the blockchain environment is awash with smart contract languages. The many languages make it difficult for blockchain applications to interoperate and hence delaying the mass adoption of blockchain.
Interestingly, the Hyperledger platform alone uses over six languages including DAML which creates smart contracts in Hyperledger Sawtooth.
However, the abstraction capability of the DAML runtime helps to solve a host of bug problems in smart contracts created across the board. It also makes DAML applications portable to other platforms. In addition to Digital Asset’s platform, DAML support has been announced for VMware Blockchain and Sawtooth, which indicates that other platforms might adopt it.
Therefore, it is likely that the DAML language could become the universal smart contracts language in the coming decades.
If you want to learn more about similar fundamental topics regarding blockchain technology, make sure to check out our free enterprise blockchain course.