• Daml Documentation

Home

  • Introduction to Multi-Party Applications
    • Multi-Party Applications
    • Why Do Multi-Party Applications Matter?
    • What Is a Multi-Party Application?
    • Important Concepts in Multi-Party Applications
    • Key Architectural Concepts in Daml
    • Transfer Example Using Daml
    • Next Steps

Set Up Your Developer Environment

  • System Requirements
    • Feature/Component System Requirements
  • Installation
    • Install the Dependencies
    • Choose Daml Enterprise or Daml Open Source
    • Install Daml Open Source SDK
      • Windows 10
      • Mac and Linux
    • Install Daml Enterprise
    • Download Manually
    • Next Steps
  • Set JAVA_HOME and PATH Variables
    • Windows
      • Set the JAVA_HOME Variable
      • Set the PATH Variable
    • Mac OS
    • Linux
      • Set the JAVA_HOME Variable
      • Set the PATH Variable
      • Verify the Changes
  • Manual Installation

Tutorial: Write Your First Daml App

  • Getting Started
    • Prerequisites
    • Run the App
  • App Architecture
    • The Daml Model
    • TypeScript Code Generation
    • The UI
  • Your First Feature
    • Daml Changes
    • Messaging UI
      • MessageList Component
      • MessageEdit Component
      • MainView Component
    • Run the Updated UI
    • Next Steps
  • Test Your App
    • Set Up the Tests
    • Example: Log In and Out
    • Accessing UI Elements
    • Writing CSS Selectors
    • The Full Test Suite

Create Daml Apps

  • Introduction
    • Overall Considerations
    • Developer Considerations
    • Operational Considerations
    • Next Steps
  • Write Smart Contracts with Daml
    • Introduction
    • Basic Contracts
      • Daml Ledger Basics
      • Daml Modules and Files
      • Templates
      • Signatories
      • Next Up
    • Test Templates With Daml Script
      • Script Basics
      • Run the Scripts
      • Test for Failure
      • Archive Contracts
      • Explore the Ledger
      • Exercises
      • Next Up
    • Data Types
      • Native Types
      • Assemble Types
        • Tuples
        • Lists
        • Records
        • Variants and Pattern Matching
      • Manipulate Data
      • Contract Keys
      • Next Up
    • Transform Data Using Choices
      • Choices as Methods
      • Choices as Delegation
      • Choices In the Ledger Model
        • The Archive Choice
      • A Simple Cash Model
      • Next Up
    • Add Constraints to a Contract
      • Template Preconditions
      • Assertions
      • Time on Daml Ledgers
        • Time in Test Scripts
      • Actions and do Blocks
        • Pure Expressions Compared to Actions
        • Actions and Impurity
        • Chain Actions With do Blocks
        • Wrap Values in Actions
      • Failing Actions
      • A Sample Action
      • Errors
      • Next Up
    • Parties and Authority
      • Preventing IOU Revocation
      • Use Propose-Accept Workflows for One-Off Authorization
      • Use Role Contracts for Ongoing Authorization
      • Daml’s Authorization Model
        • An Authorization Example
      • Next Up
    • Composing Choices
      • Daml Projects
      • Project Structure
      • Project Overview
      • Composed Choices and Scripts
      • Daml’s Execution Model
      • Observers
      • Privacy
        • Divulgence
      • Next Up
    • Interfaces
      • Context
      • Interface Definition
      • Interface Instances
      • Using an Interface
    • Exception Handling
      • Next Up
    • Work With Dependencies
      • DAR, DALF, Daml-LF, and the Engine
      • Hashes and Identifiers
      • Dependencies and Data Dependencies
      • Structuring Projects
      • Next Up
    • Functional Programming 101
      • The Haskell Connection
      • Functions
        • Function Application
        • Infix Functions
        • Type Constraints
        • Pattern Matching in Arguments
        • Functions Everywhere
        • Lambdas
      • Control Flow
        • Branching
        • Looping
      • Next Up
    • The Daml Standard Library
      • The Prelude
      • Important Types From the Prelude
        • Lists
        • Tuples
        • Optional
        • Either
      • Typeclasses
      • Important Typeclasses From the Prelude
        • Eq
        • Ord
        • Show
        • Functor
        • Applicative Functor
        • Actions
        • Semigroups and Monoids
        • Additive and Multiplicative
      • Important Modules in the Standard Library
      • Search the Standard Library
        • Search for Functions by Name
        • Search for Functions by Signature
      • Next Up
    • Good Design Patterns
      • The Initiate and Accept Pattern
        • Motivation
        • Implementation
        • Trade-offs
      • The Multiple Party Agreement Pattern
        • Motivation
        • Implementation
      • The Delegation Pattern
        • Motivation
        • Implementation
      • The Authorization Pattern
        • Motivation
        • Authorization
      • The Locking Pattern
        • Motivation
        • Implementation
        • Lock by Archiving
        • Lock by State
        • Lock by Safekeeping
      • Diagram Legends
    • Testing
      • Daml Test Tooling
      • Debug, Trace, and Stacktraces
      • Diagnose Contention Errors
        • Common Errors
        • Avoid Race Conditions and Stale References
        • Collisions Due to Ignorance
      • Checking Coverage
        • Flags Controlling Tests and Coverage
        • Define templates, choices, and interfaces
        • Start testing
        • Template creation coverage
        • Template choice exercise coverage
        • Interface choice exercise coverage
      • Checking Coverage of External Dependencies
        • Definitions
        • Local Definitions
        • External Definitions
        • External, Internal, and “Any” Coverage
      • Next Up
    • Next Steps
  • Integrate Daml with Off-Ledger Services
    • Introduction
    • Architectural Patterns
      • Backend
      • Frontend
      • Authorization
      • Developer Workflow
        • Command Deduplication
        • Deal With Failures
        • Deal With Time
    • Parties and Users On a Daml Ledger
      • Parties in SDK 2.0 and Subsequent
      • Party ID Hints and Display Names
      • Authorization and User Management
      • Working with Parties
        • Daml Script
        • Daml Triggers
        • Navigator
        • Java Bindings
        • Create-daml-app and UIs
    • Access Active Contracts with the HTTP JSON API Service
      • Overview
        • Run the JSON API
        • HTTP Status Codes
        • Create a New Contract
        • Create a Contract with a Command ID
        • Exercise by Contract ID
        • Exercise by Contract Key
        • Create and Exercise in the Same Transaction
        • Fetch Contract by Contract ID
        • Fetch Contract by Key
        • Get All Active Contracts
        • Get All Active Contracts Matching a Given Query
        • Fetch Parties by Identifiers
        • Fetch All Known Parties
        • Allocate a New Party
        • Create a New User
        • Get Authenticated User Information
        • Get Specific User Information
        • Delete Specific User
        • List Users
        • Grant User Rights
        • Revoke User Rights
        • List Authenticated User Rights
        • List Specific User Rights
        • List All DALF Packages
        • Download a DALF Package
        • Upload a DAR File
        • Metering Report
        • Streaming API
        • Healthcheck Endpoints
      • Daml-LF JSON Encoding
        • Codec Library
        • Type-directed Parsing
        • ContractId
        • Decimal
        • Int64
        • Timestamp
        • Party
        • Unit
        • Date
        • Text
        • Bool
        • Record
        • List
        • TextMap
        • GenMap
        • Optional
        • Variant
        • Enum
      • Query Language
        • Fallback Rule
        • Simple Equality
        • Comparison Query
        • Appendix: Type-aware Queries
        • Appendix: Known Issues
      • Javascript Client Libraries
        • Use the JavaScript Code Generator
        • @daml/react
        • @daml/ledger
        • @daml/types
      • Production Setup
        • Overview
        • Query Store
        • Security and Privacy
        • Architecture
        • Scaling and Redundancy
        • Logging
        • Metrics
    • Build Integration with the Ledger API
      • What’s in the Ledger API
      • How to Access the Ledger API
      • Daml-LF
        • When You Need to Know About Daml-LF
      • The Ledger API Services
        • Overview
        • Submit Commands to the Ledger
        • Read From the Ledger
        • Utility Services
        • Testing Services
      • Java Bindings
        • Overview
        • Reference Documentation
        • Get Started
        • Example Projects
        • Generate Java Code from Daml
        • Ping Pong Example
        • Iou Quickstart Tutorial
      • Python Bindings
      • Use the Ledger API With gRPC
        • Get Started
        • Protobuf Reference Documentation
        • Example Project
        • Daml Types and Protobuf
        • Error Handling
      • Ledger API Reference
        • com/daml/ledger/api/v1/active_contracts_service.proto
        • com/daml/ledger/api/v1/admin/config_management_service.proto
        • com/daml/ledger/api/v1/admin/identity_provider_config_service.proto
        • com/daml/ledger/api/v1/admin/metering_report_service.proto
        • com/daml/ledger/api/v1/admin/object_meta.proto
        • com/daml/ledger/api/v1/admin/package_management_service.proto
        • com/daml/ledger/api/v1/admin/participant_pruning_service.proto
        • com/daml/ledger/api/v1/admin/party_management_service.proto
        • com/daml/ledger/api/v1/admin/user_management_service.proto
        • com/daml/ledger/api/v1/command_completion_service.proto
        • com/daml/ledger/api/v1/command_service.proto
        • com/daml/ledger/api/v1/command_submission_service.proto
        • com/daml/ledger/api/v1/commands.proto
        • com/daml/ledger/api/v1/completion.proto
        • com/daml/ledger/api/v1/contract_metadata.proto
        • com/daml/ledger/api/v1/event.proto
        • com/daml/ledger/api/v1/event_query_service.proto
        • com/daml/ledger/api/v1/experimental_features.proto
        • com/daml/ledger/api/v1/ledger_configuration_service.proto
        • com/daml/ledger/api/v1/ledger_identity_service.proto
        • com/daml/ledger/api/v1/ledger_offset.proto
        • com/daml/ledger/api/v1/package_service.proto
        • com/daml/ledger/api/v1/testing/time_service.proto
        • com/daml/ledger/api/v1/transaction.proto
        • com/daml/ledger/api/v1/transaction_filter.proto
        • com/daml/ledger/api/v1/transaction_service.proto
        • com/daml/ledger/api/v1/value.proto
        • com/daml/ledger/api/v1/version_service.proto
        • Scalar Value Types
      • How Daml Types are Translated to Protobuf
        • Notation
        • Records and Primitive Types
        • Variants
        • Contract Templates
      • How Daml Types are Translated to Daml-LF
        • Primitive Types
        • Tuple Types
        • Data Types
        • Type Synonyms
        • Template Types
        • Names with Special Characters
      • Create Your Own Bindings
        • Build Ledger Commands
        • Summary
        • Links
    • Write Off-Ledger Automation Using Daml
      • Overview
      • React to Off-Ledger Events: Daml Script
        • Usage
        • Use Daml Script for Ledger Initialization
        • Use Daml Script in Canton
        • Run Daml Script Against Ledgers with Authorization
        • Run Daml Script Against the HTTP JSON API
      • React to On-Ledger Events: Daml Triggers
        • How To Think About Triggers
        • Sample Trigger
        • Daml Trigger Basics
        • Run a No-Op Trigger
        • Diversion: Updating Message
        • AutoReply
        • Command Deduplication
        • Authorization
        • When Not to Use Daml Triggers
        • Trigger Service
        • Auth Middleware
        • OAuth 2.0 Auth Middleware
    • Handle Errors
      • Error Codes
        • Overview
        • Glossary
        • Anatomy of an Error
        • Work With Error Codes
        • Error Categories Inventory
        • Error Codes Inventory
      • Command Deduplication
        • How Command Deduplication Works
        • How to Use Command Deduplication
    • Authorization
      • Introduction
      • Acquire and Use Access Tokens
      • Access Tokens and Rights
      • Access Token Formats
        • User Access Tokens
        • Custom Daml Claims Access Tokens
  • Resource Management in Daml Application Design
    • Managing Latency and Throughput
      • Problem Definition
        • Possible Throughput Bottlenecks in Order of Likelihood
        • Solutions
    • Avoid Contention Issues
      • Contention in Daml
      • Reduce Contention
      • Example Application with Techniques for Reducing Contention
        • The Example Minimal Settlement System
        • Prepare Transactions for Contention-Free Parallelism
        • Non-UTXO Alternative Ledger Models
        • Simple Strategies for UTXO Ledger Models
        • Shard Asset Positions for UTXO Ledger Models
    • Managing Active Contract Set (ACS) Size
      • Problem Definition
      • Relational Databases
        • Solutions
      • HTTP JSON API Service
  • Upgrading and Extending Daml Applications
    • Extending Daml Applications
    • Upgrading Daml Applications
      • Daml Upgrade Overview
      • Structure Upgrade Contracts
      • Build and Deploy carbon-1.0.0
      • Create carbon-1.0.0 Certificates
      • Build and Deploy carbon-2.0.0
      • Build and Deploy carbon-upgrade
      • Upgrade Existing Certificates from carbon-1.0.0 to carbon-2.0.0
      • Further Steps
    • Automating the Upgrade Process
      • Structure the Upgrade
      • Implementation of the Daml Script
      • Implementation of the Daml Trigger
      • Deploy and Execute the Upgrade
  • Developer Tools
    • Daml Assistant
      • Full Help for Commands
      • Configuration Files
        • Global Config File (daml-config.yaml)
        • Project Config File (daml.yaml)
        • Recommended build-options
      • Build Daml Projects
      • Manage Releases
      • Terminal Command Completion
      • Run Commands Outside of the Project Directory
    • Canton Console
      • Introduction
      • Run the Canton Console Against the Sandbox
      • Built-in Documentation
      • Interact With the Sandbox
    • Deploy to Generic Daml Ledger
      • Connect via TLS
      • Configure Request Timeouts
    • Experiment: Daml REPL
      • Usage
      • What Is in Scope at the Prompt?
      • Using Daml REPL Without a Ledger
      • Connecting via TLS
      • Connection to a Ledger With Authorization
      • Using Daml REPL to Convert to JSON
    • Write: Daml Studio
      • Install
      • Create Your First Daml File
      • Supported Features
        • Symbols and Problem Reporting
        • Hover Tooltips
        • Daml Script Results
        • Daml Snippets
      • Common Script Errors
        • Abort, Assert, and Debug
        • Missing Authorization on Create
        • Missing Authorization on Exercise
        • Contract Not Visible
      • Work with Multiple Packages
    • Test: Daml Sandbox
      • Run With Authorization
        • Generate JSON Web Tokens (JWT)
        • Generate RSA keys
        • Generate EC keys
      • Run With TLS
      • Command-line Reference
      • Metrics
        • Enable and Configure Reporting
        • Types of Metrics
        • List of Metrics
    • Visualize: Daml Navigator
      • Navigator Functionality
      • Starting Navigator
      • Logging In
        • Logging in as a Party
      • Viewing Templates or Contracts
        • Listing templates
        • Listing contracts
        • Viewing contracts based on a template
        • Viewing template and contract details
      • Using Navigator
        • Creating contracts
        • Exercising choices
        • Advancing time
      • Authorizing Navigator
      • Advanced Usage
        • Customizable table views
        • Using Navigator with a Daml Ledger
    • Measure: Daml Profiler
      • Usage
      • Caveats
    • Daml Codegen
      • Introduction
      • Run the Daml Codegen
        • Command Line Configuration
        • Project File Configuration (Java)

Daml Finance

  • Introduction
  • Overview
    • Introduction
    • Architecture
    • Building Applications
    • Extending Daml Finance
  • Concepts
    • Asset Model
    • Settlement
    • Lifecycling
    • Contingent Claims
  • Packages
    • Interface Packages
      • Daml.Finance.Interface.Holding
      • Daml.Finance.Interface.Account
      • Daml.Finance.Interface.Settlement
      • Daml.Finance.Interface.Lifecycle
      • Daml.Finance.Interface.Instrument.Base
      • Daml.Finance.Interface.Claims
      • Daml.Finance.Interface.Data
        • Changelog
      • Daml.Finance.Interface.Types.Common
      • Daml.Finance.Interface.Types.Date
        • Changelog
      • Daml.Finance.Interface.Util
      • ContingentClaims.Core
      • Daml.Finance.Interface.Instrument.Bond
        • Changelog
      • Daml.Finance.Interface.Instrument.Equity
      • Daml.Finance.Interface.Instrument.Generic
      • Daml.Finance.Interface.Instrument.Option
      • Daml.Finance.Interface.Instrument.Swap
        • Changelog
      • Daml.Finance.Interface.Instrument.Token
    • Implementation Packages
      • Daml.Finance.Holding
        • Changelog
      • Daml.Finance.Account
        • Changelog
      • Daml.Finance.Settlement
        • Changelog
      • Daml.Finance.Lifecycle
        • Changelog
      • Daml.Finance.Data
        • Changelog
      • Daml.Finance.Claims
        • Changelog
      • Daml.Finance.Util
        • Changelog
      • ContingentClaims.Lifecycle
      • ContingentClaims.Valuation
      • Daml.Finance.Instrument.Bond
        • Changelog
      • Daml.Finance.Instrument.Equity
        • Changelog
      • Daml.Finance.Instrument.Generic
        • Changelog
      • Daml.Finance.Instrument.Option
      • Daml.Finance.Instrument.Swap
        • Changelog
      • Daml.Finance.Instrument.Token
        • Changelog
  • Tutorials
    • Getting Started
      • Transfer
      • Settlement
      • Lifecycling
    • Instrument Modeling
      • How to Use the Bond Extension Package
      • How To Use the Option Extension Package
      • How To Use the Swap Extension Package
      • How To Model and Lifecycle Equity Instruments
      • How To Model and Lifecycle Generic Instruments
      • Intermediated Lifecycling of a Generic Instrument
      • How to Implement a Contingent Claims-Based Instrument
      • Contingent Claims Tree on Ledger vs On-the-Fly Creation
  • Reference
    • Glossary
    • Daml Finance
      • ContingentClaims.Core.Builders
      • ContingentClaims.Core.Claim
      • ContingentClaims.Core.Internal.Claim
      • ContingentClaims.Core.Observation
      • ContingentClaims.Core.Util.Recursion
      • ContingentClaims.Lifecycle.Lifecycle
      • ContingentClaims.Lifecycle.Util
      • ContingentClaims.Valuation.MathML
      • ContingentClaims.Valuation.Stochastic
      • Daml.Finance.Account.Account
      • Daml.Finance.Claims.Lifecycle.Rule
      • Daml.Finance.Claims.Util
      • Daml.Finance.Claims.Util.Builders
      • Daml.Finance.Claims.Util.Lifecycle
      • Daml.Finance.Data.Numeric.Observation
      • Daml.Finance.Data.Reference.HolidayCalendar
      • Daml.Finance.Data.Time.DateClock
      • Daml.Finance.Data.Time.DateClock.Types
      • Daml.Finance.Data.Time.DateClockUpdate
      • Daml.Finance.Data.Time.LedgerTime
      • Daml.Finance.Holding.Fungible
      • Daml.Finance.Holding.NonFungible
      • Daml.Finance.Holding.NonTransferable
      • Daml.Finance.Holding.Util
      • Daml.Finance.Instrument.Bond.FixedRate.Factory
      • Daml.Finance.Instrument.Bond.FixedRate.Instrument
      • Daml.Finance.Instrument.Bond.FloatingRate.Factory
      • Daml.Finance.Instrument.Bond.FloatingRate.Instrument
      • Daml.Finance.Instrument.Bond.InflationLinked.Factory
      • Daml.Finance.Instrument.Bond.InflationLinked.Instrument
      • Daml.Finance.Instrument.Bond.Util
      • Daml.Finance.Instrument.Bond.ZeroCoupon.Factory
      • Daml.Finance.Instrument.Bond.ZeroCoupon.Instrument
      • Daml.Finance.Instrument.Equity.Factory
      • Daml.Finance.Instrument.Equity.Instrument
      • Daml.Finance.Instrument.Generic.Election
      • Daml.Finance.Instrument.Generic.Factory
      • Daml.Finance.Instrument.Generic.Instrument
      • Daml.Finance.Instrument.Generic.Lifecycle.Rule
      • Daml.Finance.Instrument.Option.European.Factory
      • Daml.Finance.Instrument.Option.European.Instrument
      • Daml.Finance.Instrument.Option.Util
      • Daml.Finance.Instrument.Swap.Asset.Factory
      • Daml.Finance.Instrument.Swap.Asset.Instrument
      • Daml.Finance.Instrument.Swap.CreditDefault.Factory
      • Daml.Finance.Instrument.Swap.CreditDefault.Instrument
      • Daml.Finance.Instrument.Swap.Currency.Factory
      • Daml.Finance.Instrument.Swap.Currency.Instrument
      • Daml.Finance.Instrument.Swap.ForeignExchange.Factory
      • Daml.Finance.Instrument.Swap.ForeignExchange.Instrument
      • Daml.Finance.Instrument.Swap.Fpml.Factory
      • Daml.Finance.Instrument.Swap.Fpml.Instrument
      • Daml.Finance.Instrument.Swap.Fpml.Util
      • Daml.Finance.Instrument.Swap.InterestRate.Factory
      • Daml.Finance.Instrument.Swap.InterestRate.Instrument
      • Daml.Finance.Instrument.Swap.Util
      • Daml.Finance.Instrument.Token.Factory
      • Daml.Finance.Instrument.Token.Instrument
      • Daml.Finance.Interface.Account.Account
      • Daml.Finance.Interface.Account.Factory
      • Daml.Finance.Interface.Account.Util
      • Daml.Finance.Interface.Claims.Claim
      • Daml.Finance.Interface.Claims.Dynamic.Instrument
      • Daml.Finance.Interface.Claims.Types
      • Daml.Finance.Interface.Data.Numeric.Observation
      • Daml.Finance.Interface.Data.Numeric.Observation.Factory
      • Daml.Finance.Interface.Data.Reference.HolidayCalendar
      • Daml.Finance.Interface.Data.Reference.HolidayCalendar.Factory
      • Daml.Finance.Interface.Data.Reference.Time
      • Daml.Finance.Interface.Holding.Base
      • Daml.Finance.Interface.Holding.Factory
      • Daml.Finance.Interface.Holding.Fungible
      • Daml.Finance.Interface.Holding.Transferable
      • Daml.Finance.Interface.Holding.Util
      • Daml.Finance.Interface.Instrument.Base.Instrument
      • Daml.Finance.Interface.Instrument.Bond.FixedRate.Factory
      • Daml.Finance.Interface.Instrument.Bond.FixedRate.Instrument
      • Daml.Finance.Interface.Instrument.Bond.FixedRate.Types
      • Daml.Finance.Interface.Instrument.Bond.FloatingRate.Factory
      • Daml.Finance.Interface.Instrument.Bond.FloatingRate.Instrument
      • Daml.Finance.Interface.Instrument.Bond.FloatingRate.Types
      • Daml.Finance.Interface.Instrument.Bond.InflationLinked.Factory
      • Daml.Finance.Interface.Instrument.Bond.InflationLinked.Instrument
      • Daml.Finance.Interface.Instrument.Bond.InflationLinked.Types
      • Daml.Finance.Interface.Instrument.Bond.ZeroCoupon.Factory
      • Daml.Finance.Interface.Instrument.Bond.ZeroCoupon.Instrument
      • Daml.Finance.Interface.Instrument.Bond.ZeroCoupon.Types
      • Daml.Finance.Interface.Instrument.Equity.Factory
      • Daml.Finance.Interface.Instrument.Equity.Instrument
      • Daml.Finance.Interface.Instrument.Generic.Election
      • Daml.Finance.Interface.Instrument.Generic.Election.Factory
      • Daml.Finance.Interface.Instrument.Generic.Factory
      • Daml.Finance.Interface.Instrument.Generic.Instrument
      • Daml.Finance.Interface.Instrument.Option.European.Factory
      • Daml.Finance.Interface.Instrument.Option.European.Instrument
      • Daml.Finance.Interface.Instrument.Option.European.Types
      • Daml.Finance.Interface.Instrument.Swap.Asset.Factory
      • Daml.Finance.Interface.Instrument.Swap.Asset.Instrument
      • Daml.Finance.Interface.Instrument.Swap.Asset.Types
      • Daml.Finance.Interface.Instrument.Swap.CreditDefault.Factory
      • Daml.Finance.Interface.Instrument.Swap.CreditDefault.Instrument
      • Daml.Finance.Interface.Instrument.Swap.CreditDefault.Types
      • Daml.Finance.Interface.Instrument.Swap.Currency.Factory
      • Daml.Finance.Interface.Instrument.Swap.Currency.Instrument
      • Daml.Finance.Interface.Instrument.Swap.Currency.Types
      • Daml.Finance.Interface.Instrument.Swap.ForeignExchange.Factory
      • Daml.Finance.Interface.Instrument.Swap.ForeignExchange.Instrument
      • Daml.Finance.Interface.Instrument.Swap.ForeignExchange.Types
      • Daml.Finance.Interface.Instrument.Swap.Fpml.Factory
      • Daml.Finance.Interface.Instrument.Swap.Fpml.FpmlTypes
      • Daml.Finance.Interface.Instrument.Swap.Fpml.Instrument
      • Daml.Finance.Interface.Instrument.Swap.Fpml.Types
      • Daml.Finance.Interface.Instrument.Swap.InterestRate.Factory
      • Daml.Finance.Interface.Instrument.Swap.InterestRate.Instrument
      • Daml.Finance.Interface.Instrument.Swap.InterestRate.Types
      • Daml.Finance.Interface.Instrument.Token.Factory
      • Daml.Finance.Interface.Instrument.Token.Instrument
      • Daml.Finance.Interface.Instrument.Token.Types
      • Daml.Finance.Interface.Lifecycle.Effect
      • Daml.Finance.Interface.Lifecycle.Event
      • Daml.Finance.Interface.Lifecycle.Event.Distribution
      • Daml.Finance.Interface.Lifecycle.Event.Replacement
      • Daml.Finance.Interface.Lifecycle.Event.Time
      • Daml.Finance.Interface.Lifecycle.Observable.NumericObservable
      • Daml.Finance.Interface.Lifecycle.Observable.TimeObservable
      • Daml.Finance.Interface.Lifecycle.Rule.Claim
      • Daml.Finance.Interface.Lifecycle.Rule.Lifecycle
      • Daml.Finance.Interface.Settlement.Batch
      • Daml.Finance.Interface.Settlement.Factory
      • Daml.Finance.Interface.Settlement.Instruction
      • Daml.Finance.Interface.Settlement.RouteProvider
      • Daml.Finance.Interface.Settlement.Types
      • Daml.Finance.Interface.Types.Common.Types
      • Daml.Finance.Interface.Types.Date.Calendar
      • Daml.Finance.Interface.Types.Date.Classes
      • Daml.Finance.Interface.Types.Date.DayCount
      • Daml.Finance.Interface.Types.Date.RollConvention
      • Daml.Finance.Interface.Types.Date.Schedule
      • Daml.Finance.Interface.Util.Common
      • Daml.Finance.Interface.Util.Disclosure
      • Daml.Finance.Lifecycle.Effect
      • Daml.Finance.Lifecycle.ElectionEffect
      • Daml.Finance.Lifecycle.Event.Distribution
      • Daml.Finance.Lifecycle.Event.Replacement
      • Daml.Finance.Lifecycle.Rule.Claim
      • Daml.Finance.Lifecycle.Rule.Distribution
      • Daml.Finance.Lifecycle.Rule.Replacement
      • Daml.Finance.Lifecycle.Rule.Util
      • Daml.Finance.Settlement.Batch
      • Daml.Finance.Settlement.Factory
      • Daml.Finance.Settlement.Hierarchy
      • Daml.Finance.Settlement.Instruction
      • Daml.Finance.Settlement.RouteProvider.IntermediatedStatic
      • Daml.Finance.Settlement.RouteProvider.SingleCustodian
      • Daml.Finance.Util.Common
      • Daml.Finance.Util.Date.Calendar
      • Daml.Finance.Util.Date.DayCount
      • Daml.Finance.Util.Date.RollConvention
      • Daml.Finance.Util.Date.Schedule
      • Daml.Finance.Util.Disclosure

Deploy Daml

  • Introducing Canton
    • Introducing Canton
    • Canton Overview
      • Canton 101
        • A Basic Example
        • Transaction Processing in Canton
        • Conflict Detection
        • Time in Canton
        • Subtransaction privacy
      • Domain Entities
        • Sequencer
        • Mediator
        • Topology Manager
      • Participant-internal Canton Components
        • Transactions
        • Sequencer Client
        • Identity Client
      • System Model And Trust Assumptions
        • System Model
        • General Trust Assumptions
        • Assumptions Relevant for Privacy
        • Assumptions Relevant for Liveness
    • Canton Demo
    • Getting Started
      • Installation
      • Starting Canton
      • The Example Topology
      • Connecting The Nodes
      • Canton Identities and Provisioning Parties
      • Creating Parties
      • Extracting Identifiers
      • Provisioning Smart Contract Code
      • Executing Smart Contracts
      • Privacy
      • Your Development Choices
      • Automation using bootstrap scripts
      • What Next?
    • Daml SDK and Canton
      • Starting Canton
      • Running the Create Daml App Example
        • Connecting to participant2
      • What Next?
    • Composability
      • Part 1: A multi-domain workflow
        • Setting up the topology
        • Creating the IOU and the paint offer
        • Contracts and Their Domains
        • Transferring a contract
        • Atomic acceptance
        • Completing the workflow
        • Performing transfers automatically
        • Take aways
      • Part 2: Composing existing workflows
        • Existing workflows
        • Required changes
        • Preparation using the existing workflows
        • The paint offer-accept workflow
        • Continuing the existing workflows
        • Take aways
    • Compatibility Matrix and Supported Dependencies
      • Canton release version
      • For application developers and operators
      • For Canton participant and domain operators
        • Canton protocol version
        • Features and protocol versions
        • Configuring the protocol version
        • Minimum protocol version
        • Support and bug fixes
  • Download and Install Canton
    • Choosing Open-Source or Enterprise Edition
    • Downloading the Open Source Edition
    • Downloading the Enterprise Edition
    • Basic Installation
      • Downloading Canton
      • Your Topology
      • Environment Variables
      • Selecting your Storage Layer
        • Persistence using Postgres
      • Setting up a Participant
        • Secure the APIs
        • Configure Applications, Users and Connection
      • Setting up a Domain
        • Secure the APIs
        • Next Steps
      • Multi-Node Setup
    • Work With the Docker Containers
      • Obtaining the Docker Images
      • Starting Canton
      • Configuring Logging
      • Supplying custom configuration and DARs
      • Exposing the ledger-api to the host machine
      • Running Postgres in Docker
    • Set Configuration Options
      • Configuration reference
      • Configuration Compatibility
      • Advanced Configurations
      • Configuration Mixin
      • Multiple Domains
      • Fail Fast Mode
      • Init Configuration
    • Set Up A Daml Domain With Enterprise Drivers
      • Oracle Domain
      • Fabric Domain
        • Tutorial
        • User Manual
        • Fabric Setup
      • Ethereum Domain
        • Introduction
        • The Ethereum Demo
        • Error codes
        • TLS configuration
        • Ethereum accounts and wallets
        • Deployment of the sequencer contract
        • Authorization
        • Requirements for the Ethereum Network
        • Trust Properties of the Ethereum Sequencer Integration
        • High Availability
  • High Availability (HA)
    • Intro to HA in Canton
      • Overview
        • Participant Nodes
        • Domains
        • Replication
        • Databases
        • Health Check
      • Replicating Participant Nodes
        • High-Level System Design
        • Leader Election
        • Prevent Passive Replica Activity
      • HA on the Domain
        • Sequencer
        • Mediator
    • HA for Production Systems
      • HA and Horizontal Scaling
        • Introduction
      • High Availability From a Business Perspective
        • Availability
        • Resiliency
        • Other Common Metrics / RTO and RPO
        • HA Cost Trade-Offs
      • Use Cases By Role
        • Distributed Application Provider
        • Distributed Application User
        • Site Reliability Engineer (SRE)
      • Implementing HA and Scaling Deployments
        • Basic Daml Deployment
        • Architecture for HA and Scaling
        • HTTP JSON API and Participant Node Services
        • Sequencer Service
        • Mediator Service
        • Domain Manager Service
        • Trigger Service
      • HA Deployment Solution for Production
      • HA in the Cloud
        • Database Options
    • High Availability Usage
      • Domain Manager
      • HA Setup on Oracle
      • Mediator
        • Running a Stand-Alone Mediator Node
        • HA Configuration
      • Sequencer
        • Total Node Count
        • External load balancer
        • Client-side load balancing
      • Participant
        • Domain Connectivity during Fail-over
        • Manual Trigger of a Fail-over
        • Load Balancer Configuration
  • Disaster Recovery (DR)
  • Persistence
    • Postgres
      • SSL
    • Oracle
      • Installation and Setup of Oracle
        • Default Character Set and Collations
        • Database Replication
        • Setup Oracle Schemas
      • Configuring Canton Nodes for Oracle
      • Performance Tuning
        • Operating System Modifications
        • System Container Configuration (CDB)
    • General Settings
      • Max Connection Settings
      • Queue Size
    • Backup and Restore
      • Order of Backups
      • Restore Caveats
        • Incomplete Command Deduplication State
        • Application State Reset
        • Private Keys
      • Postgres Example
    • Database Replication for Disaster Recovery
      • Synchronous Replication

Operate a Daml Ledger

  • Canton Administration Quick Start
    • Use the Canton Command Line
      • Selecting a Configuration
      • Run Modes
        • Interactive Console
        • Daemon
        • Headless Script Mode
        • Interactive Server Process using Screen
      • Java Virtual Machine Arguments
    • Console Quickstart
      • Remote Administration
      • Node References
      • Help
      • Lifecycle Operations
      • Timeouts
      • Code-Generation in Console
    • Console Commands
      • Top-level Commands
      • Participant Commands
        • Database
        • Health
        • Domain Connectivity
        • Packages
        • DAR Management
        • DAR Sharing
        • Party Management
        • Key Administration
        • Topology Administration
        • Ledger API Access
        • Composability
        • Ledger Pruning
        • Bilateral Commitments
        • Participant Repair
        • Resource Management
        • Replication
      • Multiple Participants
      • Domain Administration Commands
        • Health
        • Database
        • Participants
        • Sequencer
        • Mediator
        • Key Administration
        • Parties
        • Service
        • Topology Administration
      • Domain Manager Administration Commands
        • Setup
        • Health
        • Database
        • Sequencer Connection
        • Key Administration
        • Parties
        • Service
        • Topology Administration
      • Sequencer Administration Commands
        • Sequencer
        • Health
        • Database
      • Mediator Administration Commands
        • Mediator
        • Health
        • Database
        • Sequencer Connection
  • Monitoring Best Practices
    • Logging
      • Viewing Logs
      • Detailed Logging
    • Tracing
      • Sampling
      • Known Limitations
      • Traces
    • Status
    • Health Dumps
      • Remote Health Dumps
    • Health Check
      • gRPC Health Check Service (Preview)
      • HTTP Health Check
    • Metrics
      • Enabling the Prometheus Reporter
      • Prometheus-Only Metrics
      • Deprecated Reporters
      • Participant Metrics
        • canton.<domain>.conflict-detection.sequencer-counter-queue
        • canton.<domain>.conflict-detection.task-queue
        • canton.<domain>.dirty-requests
        • canton.<domain>.protocol-messages.confirmation-request-creation
        • canton.<domain>.protocol-messages.confirmation-request-size
        • canton.<domain>.protocol-messages.transaction-message-receipt
        • canton.<domain>.request-tracker.sequencer-counter-queue
        • canton.<domain>.request-tracker.task-queue
        • canton.<domain>.sequencer-client.application-handle
        • canton.<domain>.sequencer-client.delay
        • canton.<domain>.sequencer-client.event-handle
        • canton.<domain>.sequencer-client.load
        • canton.<domain>.sequencer-client.submissions.dropped
        • canton.<domain>.sequencer-client.submissions.in-flight
        • canton.<domain>.sequencer-client.submissions.overloaded
        • canton.<domain>.sequencer-client.submissions.sends
        • canton.<domain>.sequencer-client.submissions.sequencing
        • canton.commitments.compute
        • canton.db-storage.<service>.executor.queued
        • canton.db-storage.<service>.executor.running
        • canton.db-storage.<service>.executor.waittime
        • canton.db-storage.<storage>
        • canton.db-storage.<storage>.load
        • canton.db-storage.alerts.multi-domain-event-log
        • canton.db-storage.alerts.single-dimension-event-log
        • canton.dirty_requests
        • canton.max_dirty_requests
        • canton.prune
        • canton.prune.max-event-age
        • canton.updates-published
        • daml.commands.delayed_submissions
        • daml.commands.failed_command_interpretations
        • daml.commands.input_buffer_capacity
        • daml.commands.input_buffer_delay
        • daml.commands.input_buffer_length
        • daml.commands.max_in_flight_capacity
        • daml.commands.max_in_flight_length
        • daml.commands.submissions
        • daml.commands.submissions_running
        • daml.commands.valid_submissions
        • daml.commands.validation
        • daml.execution.cache.<state_cache>.evicted_weight
        • daml.execution.cache.<state_cache>.evictions
        • daml.execution.cache.<state_cache>.hits
        • daml.execution.cache.<state_cache>.misses
        • daml.execution.cache.contract_state.register_update
        • daml.execution.cache.key_state.register_update
        • daml.execution.cache.read_through_not_found
        • daml.execution.cache.resolve_divulgence_lookup
        • daml.execution.cache.resolve_full_lookup
        • daml.execution.engine
        • daml.execution.engine_running
        • daml.execution.get_lf_package
        • daml.execution.lookup_active_contract
        • daml.execution.lookup_active_contract_count_per_execution
        • daml.execution.lookup_active_contract_per_execution
        • daml.execution.lookup_contract_key
        • daml.execution.lookup_contract_key_count_per_execution
        • daml.execution.lookup_contract_key_per_execution
        • daml.execution.retry
        • daml.execution.total
        • daml.execution.total_running
        • daml.executor.runtime.completed
        • daml.executor.runtime.duration.seconds
        • daml.executor.runtime.idle.duration.seconds
        • daml.executor.runtime.running
        • daml.executor.runtime.submitted
        • daml.identity_provider_config_store.<operation>.commit
        • daml.identity_provider_config_store.<operation>.compression
        • daml.identity_provider_config_store.<operation>.exec
        • daml.identity_provider_config_store.<operation>.query
        • daml.identity_provider_config_store.<operation>.translation
        • daml.identity_provider_config_store.<operation>.wait
        • daml.identity_provider_config_store.idp_config_cache.evicted_weight
        • daml.identity_provider_config_store.idp_config_cache.evictions
        • daml.identity_provider_config_store.idp_config_cache.hits
        • daml.identity_provider_config_store.idp_config_cache.misses
        • daml.identity_provider_config_store.verifier_cache.evicted_weight
        • daml.identity_provider_config_store.verifier_cache.evictions
        • daml.identity_provider_config_store.verifier_cache.hits
        • daml.identity_provider_config_store.verifier_cache.misses
        • daml.index.active_contracts_buffer_size
        • daml.index.completions_buffer_size
        • daml.index.db.<operation>.commit
        • daml.index.db.<operation>.compression
        • daml.index.db.<operation>.exec
        • daml.index.db.<operation>.query
        • daml.index.db.<operation>.translation
        • daml.index.db.<operation>.wait
        • daml.index.db.compression.create_argument_compressed
        • daml.index.db.compression.create_argument_uncompressed
        • daml.index.db.compression.create_key_value_compressed
        • daml.index.db.compression.create_key_value_uncompressed
        • daml.index.db.compression.exercise_argument_compressed
        • daml.index.db.compression.exercise_argument_uncompressed
        • daml.index.db.compression.exercise_result_compressed
        • daml.index.db.compression.exercise_result_uncompressed
        • daml.index.db.fetch_event_consuming_ids_non_stakeholder.commit
        • daml.index.db.fetch_event_consuming_ids_non_stakeholder.compression
        • daml.index.db.fetch_event_consuming_ids_non_stakeholder.exec
        • daml.index.db.fetch_event_consuming_ids_non_stakeholder.query
        • daml.index.db.fetch_event_consuming_ids_non_stakeholder.translation
        • daml.index.db.fetch_event_consuming_ids_non_stakeholder.wait
        • daml.index.db.fetch_event_consuming_ids_stakeholder.commit
        • daml.index.db.fetch_event_consuming_ids_stakeholder.compression
        • daml.index.db.fetch_event_consuming_ids_stakeholder.exec
        • daml.index.db.fetch_event_consuming_ids_stakeholder.query
        • daml.index.db.fetch_event_consuming_ids_stakeholder.translation
        • daml.index.db.fetch_event_consuming_ids_stakeholder.wait
        • daml.index.db.fetch_event_consuming_payloads.commit
        • daml.index.db.fetch_event_consuming_payloads.compression
        • daml.index.db.fetch_event_consuming_payloads.exec
        • daml.index.db.fetch_event_consuming_payloads.query
        • daml.index.db.fetch_event_consuming_payloads.translation
        • daml.index.db.fetch_event_consuming_payloads.wait
        • daml.index.db.fetch_event_create_ids_non_stakeholder.commit
        • daml.index.db.fetch_event_create_ids_non_stakeholder.compression
        • daml.index.db.fetch_event_create_ids_non_stakeholder.exec
        • daml.index.db.fetch_event_create_ids_non_stakeholder.query
        • daml.index.db.fetch_event_create_ids_non_stakeholder.translation
        • daml.index.db.fetch_event_create_ids_non_stakeholder.wait
        • daml.index.db.fetch_event_create_ids_stakeholder.commit
        • daml.index.db.fetch_event_create_ids_stakeholder.compression
        • daml.index.db.fetch_event_create_ids_stakeholder.exec
        • daml.index.db.fetch_event_create_ids_stakeholder.query
        • daml.index.db.fetch_event_create_ids_stakeholder.translation
        • daml.index.db.fetch_event_create_ids_stakeholder.wait
        • daml.index.db.fetch_event_create_payloads.commit
        • daml.index.db.fetch_event_create_payloads.compression
        • daml.index.db.fetch_event_create_payloads.exec
        • daml.index.db.fetch_event_create_payloads.query
        • daml.index.db.fetch_event_create_payloads.translation
        • daml.index.db.fetch_event_create_payloads.wait
        • daml.index.db.fetch_event_non_consuming_ids_informee.commit
        • daml.index.db.fetch_event_non_consuming_ids_informee.compression
        • daml.index.db.fetch_event_non_consuming_ids_informee.exec
        • daml.index.db.fetch_event_non_consuming_ids_informee.query
        • daml.index.db.fetch_event_non_consuming_ids_informee.translation
        • daml.index.db.fetch_event_non_consuming_ids_informee.wait
        • daml.index.db.fetch_event_non_consuming_payloads.commit
        • daml.index.db.fetch_event_non_consuming_payloads.compression
        • daml.index.db.fetch_event_non_consuming_payloads.exec
        • daml.index.db.fetch_event_non_consuming_payloads.query
        • daml.index.db.fetch_event_non_consuming_payloads.translation
        • daml.index.db.fetch_event_non_consuming_payloads.wait
        • daml.index.db.flat_transactions_stream.translation
        • daml.index.db.lookup_active_contract
        • daml.index.db.lookup_key
        • daml.index.db.translation.get_lf_package
        • daml.index.db.tree_transactions_stream.translation
        • daml.index.flat_transactions_buffer_size
        • daml.index.ledger_end_sequential_id
        • daml.index.lf_value.compute_interface_view
        • daml.index.package_metadata.decode_archive
        • daml.index.package_metadata.view_init
        • daml.index.transaction_trees_buffer_size
        • daml.indexer.current_record_time_lag
        • daml.indexer.events
        • daml.indexer.last_received_record_time
        • daml.indexer.ledger_end_sequential_id
        • daml.indexer.metered_events
        • daml.lapi.streams.acs_sent
        • daml.lapi.streams.active
        • daml.lapi.streams.completions_sent
        • daml.lapi.streams.transaction_trees_sent
        • daml.lapi.streams.transactions_sent
        • daml.parallel_indexer.<stage>.commit
        • daml.parallel_indexer.<stage>.compression
        • daml.parallel_indexer.<stage>.exec
        • daml.parallel_indexer.<stage>.query
        • daml.parallel_indexer.<stage>.translation
        • daml.parallel_indexer.<stage>.wait
        • daml.parallel_indexer.input_buffer_length
        • daml.parallel_indexer.inputmapping.batch_size
        • daml.parallel_indexer.output_batched_buffer_length
        • daml.parallel_indexer.seqmapping.duration
        • daml.parallel_indexer.updates
        • daml.party_record_store.<operation>.commit
        • daml.party_record_store.<operation>.compression
        • daml.party_record_store.<operation>.exec
        • daml.party_record_store.<operation>.query
        • daml.party_record_store.<operation>.translation
        • daml.party_record_store.<operation>.wait
        • daml.services.index.<operation>
        • daml.services.index.in_memory_fan_out_buffer.prune
        • daml.services.index.in_memory_fan_out_buffer.push
        • daml.services.index.in_memory_fan_out_buffer.size
        • daml.services.read.<operation>
        • daml.services.write.<operation>
        • daml.services.write.submit_transaction.count
        • daml.user_management.<operation>.commit
        • daml.user_management.<operation>.compression
        • daml.user_management.<operation>.exec
        • daml.user_management.<operation>.query
        • daml.user_management.<operation>.translation
        • daml.user_management.<operation>.wait
        • daml.user_management.cache.evicted_weight
        • daml.user_management.cache.evictions
        • daml.user_management.cache.hits
        • daml.user_management.cache.misses
        • test.db.commit
        • test.db.compression
        • test.db.exec
        • test.db.query
        • test.db.translation
        • test.db.wait
      • Domain Metrics
        • canton.<component>.sequencer-client.application-handle
        • canton.<component>.sequencer-client.delay
        • canton.<component>.sequencer-client.event-handle
        • canton.<component>.sequencer-client.load
        • canton.db-storage.<service>.executor.queued
        • canton.db-storage.<service>.executor.running
        • canton.db-storage.<service>.executor.waittime
        • canton.db-storage.<storage>
        • canton.db-storage.<storage>.load
        • canton.db-storage.alerts.multi-domain-event-log
        • canton.db-storage.alerts.single-dimension-event-log
        • canton.mediator.max-event-age
        • canton.mediator.outstanding-requests
        • canton.mediator.requests
        • canton.mediator.sequencer-client.submissions.dropped
        • canton.mediator.sequencer-client.submissions.in-flight
        • canton.mediator.sequencer-client.submissions.overloaded
        • canton.mediator.sequencer-client.submissions.sends
        • canton.mediator.sequencer-client.submissions.sequencing
        • canton.sequencer.db-storage.<storage>
        • canton.sequencer.db-storage.<storage>.load
        • canton.sequencer.db-storage.alerts.multi-domain-event-log
        • canton.sequencer.db-storage.alerts.single-dimension-event-log
        • canton.sequencer.db-storage.general.executor.queued
        • canton.sequencer.db-storage.general.executor.running
        • canton.sequencer.db-storage.general.executor.waittime
        • canton.sequencer.db-storage.locks.executor.queued
        • canton.sequencer.db-storage.locks.executor.running
        • canton.sequencer.db-storage.locks.executor.waittime
        • canton.sequencer.db-storage.write.executor.queued
        • canton.sequencer.db-storage.write.executor.running
        • canton.sequencer.db-storage.write.executor.waittime
        • canton.sequencer.max-event-age
        • canton.sequencer.processed
        • canton.sequencer.processed-bytes
        • canton.sequencer.sequencer-client.submissions.dropped
        • canton.sequencer.sequencer-client.submissions.in-flight
        • canton.sequencer.sequencer-client.submissions.overloaded
        • canton.sequencer.sequencer-client.submissions.sends
        • canton.sequencer.sequencer-client.submissions.sequencing
        • canton.sequencer.subscriptions
        • canton.sequencer.time-requests
        • canton.topology-manager.sequencer-client.submissions.dropped
        • canton.topology-manager.sequencer-client.submissions.in-flight
        • canton.topology-manager.sequencer-client.submissions.overloaded
        • canton.topology-manager.sequencer-client.submissions.sends
        • canton.topology-manager.sequencer-client.submissions.sequencing
    • Common Metrics
      • Health Metrics
        • daml_health_status
      • gRPC Metrics
        • daml_grpc_server_duration_seconds
        • daml_grpc_server_messages_sent_total
        • daml_grpc_server_messages_received_total
        • daml_grpc_server_started_total
        • daml_grpc_server_handled_total
        • daml_grpc_server_messages_sent_bytes
        • daml_grpc_server_messages_received_bytes
      • HTTP Metrics
        • daml_http_requests_duration_seconds
        • daml_http_requests_total
        • daml_http_websocket_messages_received_total
        • daml_http_websocket_messages_sent_total
        • daml_http_requests_payload_bytes
        • daml_http_responses_payload_bytes
        • daml_http_websocket_messages_received_bytes
        • daml_http_websocket_messages_sent_bytes
      • Java Execution Service Metrics
        • daml_executor_pool_size
        • daml_executor_pool_core
        • daml_executor_pool_max
        • daml_executor_pool_largest
        • daml_executor_threads_active
        • daml_executor_threads_running
        • daml_executor_tasks_queued
        • daml_executor_tasks_executing_queued
        • daml_executor_tasks_stolen
        • daml_executor_tasks_submitted
        • daml_executor_tasks_completed
        • daml_executor_tasks_queue_remaining
      • Pruning Metrics
        • daml_services_pruning_prune_started_total
        • daml_services_pruning_prune_completed_total
      • JVM Metrics
        • runtime_jvm_gc_time
        • runtime_jvm_gc_count
        • runtime_jvm_memory_area
        • runtime_jvm_memory_pool
    • Example Monitoring Setup
      • Container Setup
        • Intended Use
        • Network Configuration
        • Postgres Setup
        • Domain Setup
        • Participant Setup
        • Logstash
        • Elasticsearch
        • Kibana
        • cAdvisor
        • Prometheus
        • Grafana
        • Dependencies
        • Docker Images
        • Running Docker Compose
      • Connecting to Nodes
        • Remote configurations
        • Getting Started
      • Kibana Log Monitoring
      • Grafana Metric Monitoring
      • Monitoring Choices
        • Use Docker Log Drivers
        • Use GELF Docker Log Driver
        • Use Logstash
        • Use Elasticsearch/Kibana
        • Use Prometheus/Grafana
      • Logging Improvements
      • Glossary
        • Docker Log Driver
        • Syslog
        • GELF
        • Docker Plugins
        • Loki Log Driver
        • Logstash
        • Elasticsearch
        • ECS
        • MinIO
        • ELK
        • Graylog
        • Loki
        • Prometheus
        • Grafana
        • OpenTelemetry
        • cAdvisor
  • Identity Management
    • Introduction
      • What is a Canton Identity?
      • Unique Identifier
      • Topology Transactions
      • Legal Identities
      • Life of a Party
      • Participant Onboarding
      • Default Initialization
      • Identity Setup Guide
    • User Identity Management
    • Cookbook
      • Manage Users
        • Create
        • Update
        • Inspect
        • Decommission
      • Adding a new Party to a Participant
      • Migrate Party to Another Participant Node
      • Party on Two Nodes
      • Manually Initializing a Node
        • Domain Initialization
        • Participant Initialization
  • Common Tasks
    • Manage DARs and Packages
      • Uploading DARs
      • Inspecting DARs and Packages
      • Understanding Package Vetting
      • Removing Packages and DARs
        • Removing DARs
        • Removing Packages
    • Upgrade To a New Release
      • Upgrade Canton Binary
        • Preparation
        • Back Up Your Database
        • Test your Configuration
        • Migrating the Database
        • Test Your Upgrade
        • Version Specific Notes
      • Change the Canton Protocol Version
        • Upgrade the Domain to a new Protocol Version
        • Hard Domain Connection Upgrade
        • Soft Domain Connection Upgrade
    • Configure Auth0 Middleware (With Example Configuration)
      • Configure Auth0
        • Create an API
        • Create an Application
        • Create a Rule
        • Create a User
      • Start Daml
        • Sandbox
        • OAuth 2.0 Middleware
        • Trigger Service
      • Configure Web Server
      • Test the Setup
    • Security & Key Management
      • Cryptographic Key Usage
        • Supported Cryptographic Schemes in Canton
        • Key Generation and Storage
        • Public Key Distribution using Topology Management
        • Common Node Keys
        • Participant Node Keys
        • Domain Topology Manager Keys
        • Sequencer Node Keys
        • Mediator Node Keys
        • Domain Node Keys
        • Canton Console Keys
      • Cryptographic Key Management
        • Rotating Canton Node Keys
        • Namespace Intermediate Key Management
        • Moving the Namespace Secret Key to Offline Storage
        • Identifier Delegation Key Management
        • Key Management Service Setup
      • Ledger-API Authorization
  • Infrastructure Automation (Node and Domain)
    • Administration APIs
      • Participant Admin APIs
        • Package Service
        • Participant Status Service
        • Ping Pong Service
        • Domain Connectivity Service
        • Party Name Management Service
        • Inspection Service
        • Transfer Service
        • Pruning Service
      • Domain Admin APIs
        • Domain Status Service
      • Identity Admin APIs
        • Vault Management Service
        • Initialization Service
        • Topology Aggregation Service
        • Topology Manager Read Service
        • Topology Manager Write Service
      • Mediator Admin APIs
        • Mediator Initialization Service
        • Enterprise Mediator Administration Service
      • Sequencer Admin APIs
        • Sequencer Administration Service
        • Enterprise Sequencer Administration Service
  • Scaling and Performance
    • Network Scaling
    • Node Scaling
    • Performance and Sizing
    • Batching
    • Storage Estimation
    • How to Setup Canton to Get Best Performance?
      • System Design / Architecture
      • Hardware and Database
      • Configuration
  • Advanced Operations
    • Manage Domains
      • Permissioned Domains
      • Domain Rules
      • Dynamic domain parameters
      • Recover From a Small Max Request Size
    • Manage Domain Entities
      • Setting up a Distributed Domain With a Single Console
      • Setting up a Distributed Domain With Separate Consoles
      • Adding new sequencers to distributed domain
    • Ledger Pruning
      • Enable Automatic Pruning
      • Monitoring Pruning Progress
      • Best Practices
      • Current Limitations
    • Participant Pruning
      • Impacts on Daml Applications
      • How the Daml Ledger API is Affected
      • Other Limitations
      • How Pruning Affects Index DB Administration
      • Determine a Suitable Pruning Offset
    • Participant Metering
      • Generate a Metering Report
      • Example
      • Output
    • Api Configuration
      • Default Ports
      • Administration API
      • TLS Configuration
      • Keep Alive
      • Max Inbound Message Size
      • Participant Configuration
        • Ledger Api
      • Domain Configurations
        • Public Api
      • Limiting concurrent GRPC requests (preview feature)
      • Usage of native libraries by Netty
    • Sequencer Connections
      • Participant Connections
        • Connect Using Macros
        • Inspect Connections
        • Modify Connections
        • Enable and Disable Connections
      • Mediator and Domain Manager
    • Repair Nodes
      • Preparation
      • Importing an actual Ledger
        • Repairing Participants
      • Recovering from a Lost Domain
      • Repairing an actual Topology
        • Repair Macros
      • Clone Identity
      • Importing existing Contracts
  • Troubleshooting Guide
    • Introduction
    • Enable Information Gathering
    • Key Knowledge
    • Log Files
    • Using LNAV to View Log Files
    • Setup Issues
    • Timeout Errors
    • Auth Errors
    • Performance Issues
      • How to Measure Database Performance
      • How to Diagnose Slow Database Queries
      • How to find the Bottleneck
        • Theory
        • Practical
    • Contention
      • Why do you get contention
      • How To Change Your Model To Avoid Undesired Contention
      • How To Find Contention
    • Use Bisection to Narrow Down the Root Cause

Help

  • Troubleshooting
    • Error: “<X> is not authorized to commit an update”
    • Error: “Argument is not of serializable type”
    • Modeling Questions
      • How To Model an Agreement With Another Party
      • How To Model Rights
      • How To Void a Contract
      • How To Represent Off-ledger Parties
      • How To Limit a Choice by Time
      • How To Model a Mandatory Action
      • When to Use Optional
    • Testing Questions
      • How To Test That a Contract Is Visible to a Party
      • How To Test That an Update Action Cannot Be Committed
  • Getting Help
    • Support Expectations
  • Portability, Compatibility, and Support Durations
    • Ledger API Compatibility: Application Portability
      • List of Ledger API Versions Supported by Daml
      • Summary of Ledger API Changes
    • Driver and Participant Compatibility: Network Upgradeability
      • Participant database migration
    • SDK, Runtime Component, and Library Compatibility: Daml Upgradeability
    • Ledger API Support Duration
  • Daml Ecosystem Overview
    • Architecture
    • Daml Networks
      • Daml drivers
    • Participant Nodes
    • Ledger API
    • Daml Components
      • Runtime Components
      • Libraries
      • Generated Code
      • Developer Tools / SDK
    • Status Definitions
      • Early Access Features
      • Deprecation
      • Comparison of Statuses
    • Feature and Component Statuses
      • Ledger API
      • Runtime Components
      • Libraries
      • Developer Tools
  • Releases and Versioning
    • Versioning
    • Cadence
    • Support Duration
    • Release Notes
    • Roadmap
    • Process

Reference

  • Glossary of Concepts
    • Key Concepts
      • Daml
      • Daml Language
      • Daml Ledger
        • Canton Ledger
      • Canton Protocol
      • Synchronization Technology
      • Daml Drivers
    • Daml Language Concepts
      • Contract
        • Active Contract, Archived Contract
      • Template
      • Choice
        • Consuming Choice
        • Nonconsuming Choice
        • Disjunction Choice, Flexible Controllers
      • Party
        • Signatory
        • Observer
        • Controller
        • Choice Observer
        • Stakeholder
        • Maintainer
      • Authorization, Signing
      • Standard Library
      • Agreement
      • Create
      • Exercise
      • Daml Script
      • Contract Key
      • DAR File, DALF File
    • Developer Tools
      • Assistant
      • Studio
      • Sandbox
      • Navigator
        • Navigator GUI
    • Building Applications
      • Application, Ledger Client, Integration
      • Ledger API
        • Command Submission Service
        • Command Completion Service
        • Command Service
        • Transaction Service
        • Active Contract Service
        • Package Service
        • Ledger Identity Service
        • Ledger Configuration Service
      • Ledger API Libraries
        • Java Bindings
        • Python Bindings
      • Reading From the Ledger
      • Submitting Commands, Writing To the Ledger
        • Commands
      • Participant Node
      • Sub-transaction Privacy
      • Daml-LF
      • Composability
      • Trust Domain
    • Canton Concepts
      • Domain
      • Private Contract Store
      • Virtual Global Ledger
      • Mediator
      • Sequencer
      • Domain Identity Manager
      • Consensus
  • Example Applications
  • Daml Language
    • Cheat Sheet
    • Language Reference
      • Overview: Template Structure
        • Template Outline Structure
        • Choice Structure
        • Choice Body Structure
      • Templates
        • Template Name
        • Template Parameters
        • Implicit Record
        • this and self
        • Template-local Definitions
        • Signatory Parties
        • Observers
        • Choices
        • Serializable Types
        • Agreements
        • Preconditions
        • Contract Keys and Maintainers
        • Interface Instances
      • Choices
        • choice First or controller First
        • Choice Name
        • Controllers
        • Preconsuming Choices
        • Postconsuming Choices
        • Non-consuming Choices
        • Choice Arguments
        • Choice Body
        • Deprecation of controller first syntax
      • Updates
        • Background
        • Binding Variables
        • do
        • archive
        • create
        • exercise
        • exerciseByKey
        • fetch
        • fetchByKey
        • visibleByKey
        • lookupByKey
        • abort
        • assert
        • getTime
        • return
        • let
        • this
      • Data types
        • Built-in Types
        • Lists
        • Records and Record Types
        • Type Synonyms
        • Algebraic Data Types
      • Built-in functions
        • Work with Time
        • Work with Numbers
        • Work with Text
        • Work with Lists
      • Expressions
        • Definitions
        • Arithmetic Operators
        • Comparison Operators
        • Logical Operators
        • If-then-else
        • Let
      • Functions
        • Defining Functions
        • Partial Application
        • Functions are Values
        • Generic Functions
      • File structure
        • File Structure
        • Imports
        • Libraries
        • Comments
        • Contract Identifiers
      • Packages
        • Building Daml Archives
        • Inspecting DARs
        • Import Daml Packages
        • Handling Module Name Collisions
      • Contract keys
        • What Can Be a Contract Key
        • Specify Maintainers
        • Contract Lookups
        • exerciseByKey
        • Example
      • Exceptions
        • Builtin Errors
        • User-defined Exceptions
        • Throw Exceptions
        • Catch Exceptions
      • Interfaces
        • Configuration
        • Interface Declaration
        • Interface Instances
        • Interface Functions
        • Required Interfaces
    • The Standard Library
      • Prelude
        • Typeclasses
        • Data Types
        • Functions
      • DA.Action
        • Functions
      • DA.Action.State
        • Data Types
        • Functions
      • DA.Action.State.Class
        • Typeclasses
      • DA.Assert
        • Functions
      • DA.Bifunctor
        • Typeclasses
      • DA.BigNumeric
        • Functions
      • DA.Date
        • Data Types
        • Functions
      • DA.Either
        • Functions
      • DA.Exception
        • Typeclasses
        • Data Types
      • DA.Foldable
        • Typeclasses
        • Functions
      • DA.Functor
        • Functions
      • DA.Internal.Interface.AnyView
        • Typeclasses
        • Functions
      • DA.Internal.Interface.AnyView.Types
        • Data Types
      • DA.List
        • Functions
      • DA.List.BuiltinOrder
        • Functions
      • DA.List.Total
        • Functions
      • DA.Logic
        • Data Types
        • Functions
      • DA.Map
        • Functions
      • DA.Math
        • Functions
      • DA.Monoid
        • Data Types
      • DA.NonEmpty
        • Functions
      • DA.NonEmpty.Types
        • Data Types
      • DA.Numeric
        • Functions
      • DA.Optional
        • Functions
      • DA.Record
        • Typeclasses
      • DA.Semigroup
        • Data Types
      • DA.Set
        • Data Types
        • Functions
      • DA.Stack
        • Data Types
        • Functions
      • DA.Text
        • Functions
      • DA.TextMap
        • Functions
      • DA.Time
        • Data Types
        • Functions
      • DA.Traversable
        • Typeclasses
        • Functions
      • DA.Tuple
        • Functions
      • DA.Validation
        • Data Types
        • Functions
      • GHC.Show.Text
        • Functions
      • GHC.Tuple.Check
        • Functions
    • Script Library
      • Daml.Script
        • Data Types
        • Functions
    • Trigger Library
      • Daml.Trigger
        • Typeclasses
        • Data Types
        • Functions
      • Daml.Trigger.Assert
        • Data Types
        • Functions
      • Daml.Trigger.LowLevel
        • Typeclasses
        • Data Types
        • Functions
  • Daml Ledger
    • Daml Ledger Model Concepts
      • Structure
        • Actions and Transactions
        • Ledgers
      • Integrity
        • Valid Ledgers
        • Consistency
        • Conformance
        • Authorization
        • Valid Ledgers, Obligations, Offers and Rights
      • Causality and Local Daml Ledgers
        • Causality Examples
        • Causality Graphs
        • Local Ledgers
      • Privacy
        • Contract Observers and Stakeholders
        • Choice Observers
        • Projections
        • Privacy Through Authorization
        • Divulgence: When Non-Stakeholders See Contracts
      • Daml: Define Contract Models Compactly
      • Exceptions
        • Structure
        • Consistency
        • Transaction Normalization
        • Authorization
        • Privacy
        • Relation to Daml Exceptions
      • Identity and Package Management
        • Identity Management
        • Package Management
      • Time on Daml Ledgers
        • Ledger Time
        • Record Time
        • Guarantees
        • Ledger Time Model
        • Assign Ledger Time
    • Canton Advanced Architecture
      • Contract Keys in Canton
        • Domains with Uniqueness Guarantees
        • Non Unique Contract Keys Mode
      • Domain Architecture and Integrations
        • Domain-specific Requirements
        • Domain-Internal Components
        • Drivers
        • Canton Domain on Ethereum
        • Canton Domain on Fabric
      • Identity Management
        • Identity Providing Service
        • Identity Management Design
        • Implementation
      • Canton High-Level Requirements
        • Functional requirements
        • Resource limits
        • Non-functional requirements
        • Known limitations
        • Requirement Exceptions: Notes
      • Research Publications
      • Security
        • Secure Cryptographic Private Key Storage
        • Resilience to Malicious Participants
        • Consensus & Transparency
      • System Architecture FAQ
        • What does the Sequencer do?
        • How does Canton process a transaction?
        • How does Canton ensure privacy?
        • Where does “the golden source” of Daml Ledger data live in Canton?
        • How is Canton able to recover from data loss?
    • Canton Error Codes
      • Error Categories
      • Machine Readable Information
      • Example
      • List of error codes
        • 1. ParticipantErrorGroup
        • 1.1. Errors
        • 1.1.1. MismatchError
        • 1.2. LedgerApiErrors
        • 1.2.1. CommandExecution
        • 1.2.1.1. Package
        • 1.2.1.2. Preprocessing
        • 1.2.1.3. Interpreter
        • 1.2.1.3.1. LookupErrors
        • 1.2.2. AdminServices
        • 1.2.2.1. PartyManagementServiceErrorGroup
        • 1.2.2.2. UserManagementServiceErrorGroup
        • 1.2.2.3. IdentityProviderConfigServiceErrorGroup
        • 1.2.3. ConsistencyErrors
        • 1.2.4. PackageServiceError
        • 1.2.4.1. Reading
        • 1.2.5. WriteServiceRejections
        • 1.2.5.1. Internal
        • 1.2.6. AuthorizationChecks
        • 1.2.7. RequestValidation
        • 1.2.7.1. NotFound
        • 1.3. TransactionErrorGroup
        • 1.3.1. TransactionRoutingError
        • 1.3.1.1. MalformedInputErrors
        • 1.3.1.2. TopologyErrors
        • 1.3.1.3. ConfigurationErrors
        • 1.3.2. SubmissionErrors
        • 1.3.3. SyncServiceInjectionError
        • 1.3.4. LocalReject
        • 1.3.4.1. MalformedRejects
        • 1.3.4.2. ConsistencyRejections
        • 1.3.4.3. TimeRejects
        • 1.3.4.4. TransferInRejects
        • 1.3.4.5. TransferOutRejects
        • 1.3.5. CommandDeduplicationError
        • 1.4. SyncServiceError
        • 1.4.1. SyncDomainMigrationError
        • 1.4.2. DomainRegistryError
        • 1.4.2.1. ConfigurationErrors
        • 1.4.2.2. HandshakeErrors
        • 1.4.2.3. ConnectionErrors
        • 1.5. AdminWorkflowServices
        • 1.6. IndexErrors
        • 1.6.1. DatabaseErrors
        • 1.7. PruningServiceError
        • 1.8. CantonPackageServiceError
        • 1.9. ParticipantReplicationServiceError
        • 1.10. CommonErrors
        • 2. EthereumErrors
        • 2.1. ConfigurationErrors
        • 2.2. TransactionErrors
        • 3. TopologyManagementErrorGroup
        • 3.1. TopologyManagerError
        • 3.1.1. DomainTopologyManagerError
        • 3.1.2. ParticipantTopologyManagerError
        • 3.1.3. Domain
        • 3.1.3.1. GrpcSequencerAuthenticationService
        • 3.2. DomainTopologySender
        • 4. ConfigErrors
        • 5. CommandErrors
        • 6. DatabaseStorageError
        • 7. HandshakeErrors
        • 8. FabricErrors
        • 8.1. ConfigurationErrors
        • 8.2. TransactionErrors
        • 9. SequencerError
        • 10. EnterpriseGrpcVaultServiceError
        • 11. MediatorError
        • 12. ProtoDeserializationError
        • 13. ResilientSequencerSubscription
        • 14. Clock
    • Canton Frequently Asked Questions
      • Log Messages
        • Database task queue full
        • Serialization Exception
      • Console Commands
        • I received an error saying that the DomainAlias I used was too long. Where I can see the limits of String types in Canton?
      • Bootstrap Scripts
        • Why do you have an additional new line between each line in your example scripts?
        • How can I use nested import statements to split my script into multiple files?
        • How do I write data to a file and how do I read it back?
      • Why is Canton complaining about my database version?
        • Postgres
        • Oracle
        • Using non-standard database versions
      • How do I enable unsupported features?
      • How to troubleshoot included configuration files?
  • Test Evidence

Early Access

  • Daml Ledger Interoperability
    • Interoperability Examples
      • Topology
      • Aggregation at the Participant
      • Enter and Leave Events
      • Cross-ledger Transactions
    • Multi-ledger Causality Graphs
      • Consistency
      • Minimality and Reduction
      • From Multi-ledger Causality Graphs to Ledgers
    • Ledger-aware Projection
    • Ledger API Ordering Guarantees
  • Ledger Export
    • Introduction
    • Usage
    • Output
      • Daml Script
      • Arguments
    • Execute the Export
    • Ledger Offsets
    • Unknown Contract Ids
    • Transaction Time
    • Caveats
      • Contracts Created and Referenced In the Same Transaction
  • Non-repudiation
    • Architecture
    • Run the Server-side Components
    • Use the Client
    • Non-repudiation Over the HTTP JSON API
    • TLS Support
  • Visualizing Daml Contracts
    • Example: Visualize the Quickstart Project
    • Visualize Daml Contracts - Within IDE
    • Visualize Daml Contracts - Interactive Graphs
Download as PDF

Developers
Products
Company
Version 
Please enter at least 3 letters.
In This Section
  • Navigator
    • Navigator Functionality
    • Starting Navigator
    • Logging In
      • Logging in as a Party
    • Viewing Templates or Contracts
      • Listing templates
      • Listing contracts
      • Viewing contracts based on a template
      • Viewing template and contract details
    • Using Navigator
      • Creating contracts
      • Exercising choices
      • Advancing time
    • Authorizing Navigator
    • Advanced Usage
      • Customizable table views
      • Using Navigator with a Daml Ledger

Navigator¶

The Navigator is a front-end that you can use to connect to any Daml Ledger and inspect and modify the ledger. You can use it during Daml development to explore the flow and implications of the Daml models.

The first sections of this guide cover use of the Navigator with the SDK. Refer to Advanced Usage for information on using Navigator outside the context of the SDK.

Navigator Functionality¶

Connect the Navigator to any Daml Ledger and use it to:

  • View templates
  • View active and archived contracts
  • Exercise choices on contracts
  • Advance time (This option applies only when using Navigator with the Daml Sandbox ledger.)

Starting Navigator¶

Navigator is included in the SDK. To launch it:

  1. Start Navigator via a terminal window running Daml Assistant by typing daml start
  2. The Navigator web-app is automatically started in your browser. If it fails to start, open a browser window and point it to the Navigator URL
When running daml start you will see the Navigator URL. By default it will be http://localhost:7500/.

Note

Navigator is compatible with these browsers: Safari, Chrome, or Firefox.

Logging In¶

By default, Navigator shows a drop-down list with the users that have been created via the user management service. During development, it is common to create these users in a Daml script: that you specify in the init-script section of your daml.yaml file so it is executed on daml start. Most of the templates shipped with the Daml SDK already include such a setup script. Only users that have a primary party set will be displayed.

After logging in, you will interact with the ledger as the primary party of that user, meaning that you can see contracts visible to that party and submit commands (e.g. create a contract) as that party.

The party you are logged in as is not displayed directly. However, Navigator provides autocompletion based on the party id which starts with the party id hint so a good option is to set the party id hint to the user id when you allocate the party in your setup script. You can see an example of that in the skeleton template:

  alice <- allocatePartyWithHint "Alice" (PartyIdHint "Alice")
  bob <- allocatePartyWithHint "Bob" (PartyIdHint "Bob")
  aliceId <- validateUserId "alice"
  bobId <- validateUserId "bob"
  createUser (User aliceId (Some alice)) [CanActAs alice]
  createUser (User bobId (Some bob)) [CanActAs bob]

The first step in using Navigator is to use the dropdown list on the Navigator home screen to select from the available users.

The Digital Asset Navigator home screen with dropdown list. The options are alice, bob, eur and us.

The main Navigator screen will be displayed, with contracts that the primary party of this user is entitled to view in the main pane and the option to switch from contracts to templates in the pane at the left. Other options allow you to filter the display, include or exclude archived contracts, and exercise choices as described below.

The Contracts view with a list of contracts displayed as a table. The column headings are ID, Template ID, Time, and Choice.

To change the active user:

  1. Click the name of the current user in the top left corner of the screen.
  2. On the home screen, select a different user.
The upper left corner of the screen, location of the navbar. The current user is displayed next to the date and time.

You can act as different users in different browser windows. Use Chrome’s profile feature https://support.google.com/chrome/answer/2364824 and sign in as a different user for each Chrome profile.

Logging in as a Party¶

Instead of logging in by specifying a user, you can also log in by specifying a party directly. This is useful if you do not want to or cannot (because your ledger does not support user management) create users.

To do so, you can start Navigator with a flag to disable support for user management:

daml navigator --feature-user-management=false

To use this via daml start, you can specify it in your daml.yaml file:

navigator-options:
  - --feature-user-management=false

Instead of displaying a list of users on login, Navigator will display a list of parties where each party is identified by its display name.

Alternatively you can specify a fixed list of parties in your daml.yaml file. This will automatically disable user management and display those parties on log in. Note that you still need to allocate those parties before you can log in as them.

parties:
  - Alice::12201d00faa0968d7ab81e63ad6ad4ee0d31b08a3581b1d8596e68a1356f27519ccb
  - Bob::12201d00faa0968d7ab81e63ad6ad4ee0d31b08a3581b1d8596e68a1356f27519ccb

Viewing Templates or Contracts¶

Daml contract ​templates are ​models ​that contain ​the ​agreement ​statement, ​all ​the ​applicable parameters, ​and ​the ​choices ​that ​can ​be ​made ​in ​acting ​on ​that ​data. They ​specify ​acceptable input ​and ​the ​resulting ​output. ​A ​contract ​template ​contains ​placeholders ​rather ​than ​actual names, ​amounts, ​dates, ​and ​so ​on. In ​a contract, ​the ​placeholders ​have ​been ​replaced ​with ​actual ​data.

The Navigator allows you to list templates or contracts, view contracts based on a template, and view template and contract details.

Listing templates¶

To see what contract templates are available on the ledger you are connected to, choose Templates in the left pane of the main Navigator screen.

The Templates view with a list of templates.

Use the Filter field at the top right to select template IDs that include the text you enter.

Listing contracts¶

To view a list of available contracts, choose Contracts in the left pane.

The Contracts view, as described previously.

In the Contracts list:

  • Changes to the ledger are automatically reflected in the list of contracts. To avoid the automatic updates, select the Frozen checkbox. Contracts will still be marked as archived, but the contracts list will not change.
  • Filter the displayed contracts by entering text in the Filter field at the top right.
  • Use the Include Archived checkbox at the top to include or exclude archived contracts.

Viewing contracts based on a template¶

You can also view the list of contracts that are based on a particular template.

  1. You will see icons to the right of template IDs in the template list with a number indicating how many contracts are based on this template.
  2. Click the number to display a list of contracts based on that template.

Number of Contracts

The Templates view with the handshake icon and number of contracts for the 12th template on the list highlighted. Here, the number of contracts is one.

List of Contracts

The result of clicking on the number highlighted in the last image - the Contracts view filtered to display only the single contract based on the selected template.

Viewing template and contract details¶

To view template or contract details, click on a template or contract in the list. The template or contracts detail page is displayed.

Template Details

The Template Details view, showing the Issuer, Owner, Amount, Currency, Observers, and Recipient for a particular template.

Contract Details

The Contract Details view displays the same information as the Template Details view as well as the name of the template the contract is based on and options to Call, Consolidate, Lock, Split, or Transfer the contract.

Using Navigator¶

Creating contracts¶

Contracts in a ledger are created automatically when you exercise choices. In some cases, you create a contract directly from a template. This feature can be particularly useful for testing and experimenting during development.

To create a contract based on a template:

  1. Navigate to the template detail page as described above.
  2. Complete the values in the form
  3. Choose the Submit button.
A Template Details form with none of the values filled in.

When the command has been committed to the ledger, the loading indicator in the navbar at the top will display a tick mark.

While loading…

The circular In Progress icon next to the date and time in the navbar.

When committed to the ledger…

The black tickmark icon that indicates completion next to the date and time in the navbar.

Exercising choices¶

To exercise a choice:

  1. Navigate to the contract details page (see above).
  2. Click the choice you want to exercise in the choice list.
  3. Complete the form.
  4. Choose the Submit button.
The Contract Details view with the Mergeb choice selected.

Or

  1. Navigate to the choice form by clicking the wrench icon in a contract list.
  2. Select a choice.
The wrench icon from the Choice column of the Contract Details view, selected and displaying the list of choices.

You will see the loading and confirmation indicators, as pictured above in Creating Contracts.

Advancing time¶

It is possible to advance time against the Daml Sandbox. (This is not true of all Daml Ledgers.) This advance-time functionality can be useful when testing, for example, when entering a trade on one date and settling it on a later date.

To advance time:

  1. Click on the ledger time indicator in the navbar at the top of the screen.
  2. Select a new date / time.
  3. Choose the Set button.
The date and time in the navbar, selected and displaying the calendar interface.

Authorizing Navigator¶

If you are running Navigator against a Ledger API server that verifies authorization, you must provide the access token when you start the Navigator server.

The access token retrieval depends on the specific Daml setup you are working with: please refer to the ledger operator to learn how.

Once you have retrieved your access token, you can provide it to Navigator by storing it in a file and provide the path to it using the --access-token-file command line option.

If the access token cannot be retrieved, is missing or wrong, you’ll be unable to move past the Navigator’s frontend login screen and see the following:

The Digital Asset Navigator home screen with the error message "You don't have the necessary authorization to access. Make sure to start the Navigator server with a valid access token." displayed in red.

Advanced Usage¶

Customizable table views¶

Customizable table views is an advanced rapid-prototyping feature, intended for Daml developers who wish to customize the Navigator UI without developing a custom application.

To use customized table views:

  1. Create a file frontend-config.js in your project root folder (or the folder from which you run Navigator) with the content below:

    import { DamlLfValue } from '@da/ui-core';
    
    export const version = {
      schema: 'navigator-config',
      major: 2,
      minor: 0,
    };
    
    export const customViews = (userId, party, role) => ({
      customview1: {
        type: "table-view",
        title: "Filtered contracts",
        source: {
          type: "contracts",
          filter: [
            {
              field: "id",
              value: "1",
            }
          ],
          search: "",
          sort: [
            {
              field: "id",
              direction: "ASCENDING"
            }
          ]
        },
        columns: [
          {
            key: "id",
            title: "Contract ID",
            createCell: ({rowData}) => ({
              type: "text",
              value: rowData.id
            }),
            sortable: true,
            width: 80,
            weight: 0,
            alignment: "left"
          },
          {
            key: "template.id",
            title: "Template ID",
            createCell: ({rowData}) => ({
              type: "text",
              value: rowData.template.id
            }),
            sortable: true,
            width: 200,
            weight: 3,
            alignment: "left"
          }
        ]
      }
    })
    
  2. Reload your Navigator browser tab. You should now see a sidebar item titled “Filtered contracts” that links to a table with contracts filtered and sorted by ID.

To debug config file errors and learn more about the config file API, open the Navigator /config page in your browser (e.g., http://localhost:7500/config).

Using Navigator with a Daml Ledger¶

By default, Navigator is configured to use an unencrypted connection to the ledger. To run Navigator against a secured Daml Ledger, configure TLS certificates using the --pem, --crt, and --cacrt command line parameters. Details of these parameters are explained in the command line help:

daml navigator --help
Previous Next

Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. Any unauthorized use, duplication or distribution is strictly prohibited. "Digital Asset" and "Daml" are Registered in the U.S. Patent and Trademark Office.