daml

Build full-stack, distributed applications for DLT, Blockchain, or databases in days.

Easy

Describe the behavior of your application in an easy to read and write smart-contract language, and let Daml take care of infrastructure and integrations. Read more

Efficient

High levels of abstraction, clean APIs, and developer tooling mean you spend your time on the bits that differentiate your application.
Read more

Safe

Type safe, functional design across the stack, and testing tools allow you to rest assured that your application does what you had in mind. Read more

The tools developers deserve:

daml-ide-icon

Daml IDE

Get feedback on authorization, privacy, and application behavior as you type.

daml-sandbox

Daml Sandbox

A simple ledger that enables rapid application prototyping without an infrastructure.

daml-assistant

Daml Assistant

CLI that helps you create, initialize, compile, and build applications.

integrations

Integrations

Describe the behavior of your application in an easy to read and write smart-contract language, and let Daml take care of infrastructure and integrations.

The Language

icon-data-model
Data Model

Daml's powerful type system makes it easy to model complex data schemas for your application following domain-driven design.

with
    organizer : Party
    buyer : Party
    price : Decimal
                        
icon-fine-grained
Fine-grained Permissions

Specify who needs to sign a given contract, who can see it and who is allowed to perform actions on it.

signatory organizer
observer buyer
controller buyer can
                        
icon-business-logic
Business Logic

Describe the actions available on a contract, together with their parameters, assertions, and precise consequences

cash <- fetch cashId
assert (cash.amount == price)
exercise cashId Transfer with
    newOwner = organizer
create TicketAgreement with
    organizer; owner = buyer
                        
icon-script
Scenario-based Testing

Test your business logic and workflows with an expressive scenario language. interact with the ledger using multiple parties and verify the effects of your transactions instantly.

validateTicketPurchase = scenario do
    issuer <- getParty "Issuer"
    organizer <- getParty "Organizer"
    buyer <- getParty "Buyer"
    cash <- submit issuer do
        create Cash with
            issuer; owner = buyer; amount = 20.0
    offer <- submit organizer do
        create TicketOffer with
            organizer; buyer; price = 20.0
    submit buyer do
        exercise offer Accept with
            cashId = cash
                        
template TicketOffer
    with
        organizer : Party
        buyer : Party
        price : Decimal
    where
        signatory organizer
        observer buyer
        controller buyer can
            Accept : ContractId TicketAgreement
                with
                    cashId : ContractId Cash
                do
                    cash <- fetch cashId
                    assert (cash.amount == price)
                    exercise cashId Transfer with
                        newOwner = organizer
                    create TicketAgreement with
                        organizer; owner = buyer

validateTicketPurchase = scenario do
    issuer <- getParty "Issuer"
    organizer <- getParty "Organizer"
    buyer <- getParty "Buyer"
    cash <- submit issuer do
        create Cash with
            issuer; owner = buyer; amount = 20.0
    offer <- submit organizer do
        create TicketOffer with
            organizer; buyer; price = 20.0
    submit buyer do
        exercise offer Accept with
            cashId = cash
                

Who’s building full-stack applications with Daml?

Daml Supported Platforms

Daml is supported by a growing number of platforms:

code-logo Daml Company

Broadridge Reimagines Repo Markets with Smart Contracts and Distributed Ledger Technology

Read More
daml-logo-small Daml Engineering

All you didn't know but you wanted to know about smart contract exception handling

Read More
daml-github Daml Release Notes

Release of Daml Connect 1.16.0

Read More