The developer’s choice for building smart contracts

Download the DAML SDKTry the Web IDE

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