- Overview
- Tutorials
- Getting started
- Get started with Canton and the JSON Ledger API
- Get Started with Canton, the JSON Ledger API, and TypeScript
- Get started with Canton Network App Dev Quickstart
- Get started with smart contract development
- Basic contracts
- Test templates using Daml scripts
- Build the Daml Archive (.dar) file
- Data types
- Transform contracts using choices
- Add constraints to a contract
- Parties and authority
- Compose choices
- Handle exceptions
- Work with dependencies
- Functional programming 101
- The Daml standard library
- Test Daml contracts
- Next steps
- Application development
- Getting started
- Development how-tos
- Component how-tos
- Explanations
- References
- Application development
- Smart contract development
- Daml language cheat sheet
- Daml language reference
- Daml standard library
- DA.Action.State.Class
- DA.Action.State
- DA.Action
- DA.Assert
- DA.Bifunctor
- DA.Crypto.Text
- DA.Date
- DA.Either
- DA.Exception
- DA.Fail
- DA.Foldable
- DA.Functor
- DA.Internal.Interface.AnyView.Types
- DA.Internal.Interface.AnyView
- DA.List.BuiltinOrder
- DA.List.Total
- DA.List
- DA.Logic
- DA.Map
- DA.Math
- DA.Monoid
- DA.NonEmpty.Types
- DA.NonEmpty
- DA.Numeric
- DA.Optional
- DA.Record
- DA.Semigroup
- DA.Set
- DA.Stack
- DA.Text
- DA.TextMap
- DA.Time
- DA.Traversable
- DA.Tuple
- DA.Validation
- GHC.Show.Text
- GHC.Tuple.Check
- Prelude
- Smart contract upgrading reference
- Glossary of concepts
Introduction¶
What is a Canton Network application¶
Canton Network applications are applications that use the Canton ledger to operate business processes spanning multiple organizations or business entities. The benefit of using the Canton ledger is that the state of these applications is automatically synchronized across all participating organizations while preserving privacy on a need-to-know basis.
Canton Network applications often build on the functionality of other applications by composing with them. This composition can happen on-ledger using composed Daml transactions as well as off-ledger by building on APIs exposed by other Canton Network applications.
An example for on-ledger composition are trading applications that compose with tokenization or asset registry applications and settle their trades on-ledger using a Daml transaction to implement truly atomic DvP settlement. An example for off-ledger composition is a block explorer for the Global Synchronizer built on top of the Global Synchronizer Scan HTTP APIs.
Note that Canton Network applications do not require developing custom Daml code by default. They can use the Daml code of other applications to read or update the on-ledger state or even just build on the off-ledger APIs of other applications. For example a block explorer does not require custom Daml code, but it might rely on the Daml code that implements the tokenomics of the Global Synchronizer to parse Canton Coin transactions and present them in their UI.
How to build a Canton Network application¶
Use the documentation on this site to guide you through the following steps:
- Get familiar with the technology:
Read the Key concepts of Canton Network applications to learn the key concepts that the rest of the documentation builds on.
Follow the Get started with Canton and the JSON Ledger API tutorial to learn about how to access the Canton ledger on a validator node.
Follow the Get started with smart contract development tutorial if you want to learn about how to read and write Daml code.
Browse the table of contents to the left to get an intuition for what documentation is there.
Review the SDK components to learn about what tools are available for you to build your application.
- Scope your application and decide on its architecture:
Use the Best practices for Canton Network application development to learn about special considerations for the software development lifecycle of Canton Network applications.
Use the how-to guides in System design to decide on common architectural questions.
- Develop and deploy your application:
Use the Development how-tos for guidance on common tasks encountered during the software development lifecycle.
Use the Component how-tos for guidance on how to use the SDK components.