- 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
Canton Quickstart high level structure¶
The Canton Quickstart project extends the LocalNet
Docker Compose configuration from the
Splice repository using a modular architecture.
It organizes additional capabilities, including, authentication, observability, PQS,
and application configurations as discrete Docker Compose modules that layer onto LocalNet
’s base infrastructure.
The LocalNet
configuration runs local versions of a super validator,
the Canton Coin wallet application, the example application nodes, and any supporting services.
This allows you to run, test, and demonstrate the application entirely on a single machine.
This is sufficient for local development, debugging, and testing. For production, consider dynamic resource management and high-availability support and other infrastructure requirements beyond the local development foundation.
Configuration¶
Running make setup
in the quickstart/
directory selects a configuration.
Once your configuration is built and running, make status
in quickstart/
displays the associated running Docker containers.
See the Topology documentation in the docs/
directory for more detailed information on the various nodes in each configuration and their relationship to each other.
Top-level¶
The top-level project directory supports a portable, consistent cross-platform development environment.
It does this using the Nix package manager, Direnv, and Docker Compose.
If you do not wish to use Nix, quickstart/
directory can be made the top-level directory for your project, however, you will need to manage your binary dependencies manually.
Review the Canton Utility Setup if you require utility deployment support.
The current top-level directory contents include:
% ls -Algo
total 120
drwxr-xr-x 6 192 Aug 18 13:56 .circleci
drwxr-xr-x 2 64 Aug 5 08:23 .direnv
-rw-r--r-- 1 388 Aug 18 13:56 .envrc
drwxr-xr-x 15 480 Aug 20 12:32 .git
-rw-r--r-- 1 214 Feb 14 2025 .gitattributes
drwxr-xr-x 3 96 Aug 18 13:56 .github
-rw-r--r-- 1 652 Aug 18 13:56 .gitignore
drwxr-xr-x 3 96 Apr 14 13:46 .vscode
drwxr-xr-x 3 96 Aug 18 17:44 docs
-rw-r--r-- 1 1462 Aug 18 13:56 flake.lock
-rw-r--r-- 1 547 Aug 18 13:56 flake.nix
-rw-r--r-- 1 680 Feb 14 2025 LICENSE
drwxr-xr-x 5 160 Aug 18 13:56 nix
drwxr-xr-x 27 864 Aug 18 13:56 quickstart
-rw-r--r-- 1 24258 Aug 18 13:56 README.md
drwxr-xr-x 12 384 Aug 19 11:39 sdk
-rw-r--r-- 1 702 Feb 14 2025 SECURITY.md
-rw-r--r-- 1 7042 Aug 18 13:56 terms.md
.git*
The usual git files and directories.
.gitignore
is configured to exclude build artifacts for the build systems in use, Daml SDK support files, and IDE project artifacts.
.envrc
is a part of the Direnv configuration.
Specifically, it activates the Nix environment for the project via a call to use nix
which uses the shell.nix
file to set up the development environment using nix-shell.
docs
contains some engineering documentation for the example app.
quickstart
is the main project directory.
nix
contains the Nix configuration.
shell.nix manages new dependencies.
nix/sources.json
pins the nix release for determinacy across builds.
Update at a cadence that balances staying up to date with development environment stability.
sdk/
contains the source to this documentation, using reStructuredText.
- Current Dependencies declared in `nix/shell.nix`
jdk21
nodejs_20
typescript
These are in addition to the Nix stdenv environment.