The developer’s choice for building smart contracts

Download the DAML SDK

An open-source smart contract language for building future-proof distributed applications on a safe, privacy-aware runtime.

illus
productive

Be Productive

Focus only on the data and business logic of your use case and leave lower-level concerns to the runtime. DAML has language-level constructs to abstract away many boilerplate complexities such as signatures, data schemas or privacy.

productive

Grow your Solution

Extend your workflows and safely compose them within and across organizations. In DAML, contract upgrades are treated like any other business process, making them easy to write and hard to get wrong.

platform

Choose your Platform

DAML runs on a growing number of platforms without having to rewrite - or even rebuild - your code. Don’t worry about getting locked in with a vendor and simply choose the deployment target that best fits your requirements.

The Language

  • Data Model

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

  • Fine-grained Permissions

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

  • Business Logic

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

  • 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.

illus-two
template Cash
  with
    issuer : Party
    owner : Party
    amount : Decimal
    where
      signatory issuer
      controller owner can
      Transfer : ContractId Cash
        with newOwner: Party
        do create this with owner = newOwner
template TicketAgreement
  with
    organizer : Party
    owner : Party
  where
    signatory organizer, owner
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

ABN Amro

ABN Amro’s Explore Lab and Digital Asset team up for a two day Develop Camp to show developers how easy it is to code smart contracts with DAML.

video

The runtime abstracts away the persistence layer so DAML programs can be written in a storage-agnostic way.

Contract data in the IDE is presented in an easily digestible format:

Ticket:Cash
BuyerIssuerOrganizerIdStatusIssuerOwnerAmount
#0.0archivedIssuerBuyer200.0
#0.0archivedIssuerBuyer200.0
Ticket:TicketOffer
BuyerOrganizerIdStatusOrganizerOwnerticket.eventticket.categoryticket.price
#1:0archived‘Organise’‘Buyer’‘Conference’Ticket:Category
VIP
200.0
Ticket:TicketAgreement
BuyerOrganizerIdStatusOrganizerOwnerticket.eventticket.categoryticket.price
#1:0archived‘Organise’‘Buyer’‘Conference’Ticket:Category
VIP
200.0

The Platform

DAML is supported by a growing number of platforms:

hyperledger

DAML's powerful type system makes it easy to model complex data schemas for your application.

concord

DAML's powerful type system makes it easy to model complex data schemas for your application.

concord

DAML's powerful type system makes it easy to model complex data schemas for your application.

Get Involved

Download the SDK

Download the DAML SDK Developer Preview for OSX or Linux

Download the DAML SDK

Contribute code

The DAML SDK has been made available under the Apache 2.0 License, and we warmly welcome contributions.

Contribute code