- Overview
- Tutorials
- Getting started
- Get started with Canton and the JSON Ledger API
- 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
- Overview: Template Structure
- Reference: Templates
- Reference: Choices
- Reference: Updates
- Reference: Data Types
- Reference: Built-in Functions
- Reference: Expressions
- Reference: Functions
- Reference: Daml File Structure
- Reference: Daml Packages
- Reference: Contract Keys
- Reference: Interfaces
- Reference: Exceptions (Deprecated)
- 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
- Daml Script
- Smart contract upgrading reference
- Glossary of concepts
Explore the Canton Network Application Quickstart demo¶
Contents¶
Exploring the demo¶
Explore the demo is intended to help you become familiar with a Canton Network (CN) business operation within the CN App Quickstart. The App Quickstart application is intended to be incrementally extended by your team to meet your business needs. When you are familiar with the App Quickstart, review the technology choices and application design to determine what changes are needed. Technology and design decisions are ultimately up to you.
As a result, the CN App Quickstart guides may be a little out of step with the application. If you find errors or other inconsistencies, please contact your representative at Digital Asset.
This section works through a complete business operation within the CN App Quickstart.
Prerequisites¶
You should have successfully installed the CN App Quickstart before beginning this demonstration.
Access to the CN Docker repository is needed to successfully pull the Digital Asset artifacts from JFrog Artifactory.
If you need support accessing the JFrog Artifactory, [contact us](https://www.digitalasset.com/contact-us?comments=I%27m%20requesting%20access%20to%20jFrog).
The CN App Quickstart is a Dockerized application and requires Docker Desktop. It is recommended to allocate 8 GB of memory to properly run the required Docker containers. If you witness unhealthy containers, please consider allocating additional resources, if possible.
Walkthrough¶
The CN App Quickstart can run with or without authorization, based on your business needs.
Toggle authorization with the make setup
command in the quickstart
subdirectory.
make setup
asks to enable Observability, OAUTH2, and specify a party hint.
In this demo, we use the default party hint, and we show OAUTH2 as enabled and disabled.
When OAUTH2 makes a difference, we display both paths one after the other.
You can follow your path and ignore the other.
You may enable Observability, but it is not required for this demo.
Choose your adventure:
make setup
without OAUTH2:

make setup
with OAUTH2:

Build and start App Quickstart:
make build; make start
Open an incognito browser.
Navigate to:
app-provider.localhost:3000
Alternatively, in the terminal, from quickstart/ run:
``make open-app-ui``
OAUTH2 disabled
When OAUTH2 is disabled, the homepage presents a simple login field.
Begin by logging in as the AppProvider
by entering “app-provider” in the User field.

OAUTH2 enabled
When OAUTH2 is enabled, the homepage prompts to login with Keycloak’s OAuth 2.0 portal:

Make a mental note that AppProvider
’s username is “app-provider” and the password is “abc123” (all lowercase).
Login with app-provider
with keycloak.
Fill in the login credentials: username: app-provider, password: abc123

The App Installs Menu
Once you are logged in select “AppInstalls” in the menu.

Open a terminal to create an app install request.
From /quickstart/
run:
``make create-app-install-request``
This command creates an App Installation Request on behalf of the Participant.

Note
If your machine is not powerful enough to host LocalNet
or if the docker containers are not responsive then the response may show a failure with status code 404 or 000 (as shown in the image below). Increasing Docker memory limit to at least 8 GB should allow the LocalNet
containers to operate properly.

Return to the browser.
The install request appears in the list.
Click “Accept”.

The AppInstallRequest
is Accepted.
The actions update to create or cancel the license.
Click “Create License”.

The license is created and the “# Licenses” field is updated.

Next, navigate to the “Licenses” menu and select “Actions.”

An “Actions for License” modal opens with an option to renew or expire the license. Per the Daml contract, licenses are created in an expired state. To activate the license, a renewal payment request must be issued. Enter a description for the license renewal request, then click the green “Issue Renewal Payment Request” button.

The license renewal process is initiated and a 30-day extension becomes available for a fee of $100 CC.

The app-provider has done as much as they are able until the app-user pays the renewal fee.
💡For the next step we recommend opening a separate browser in incognito mode. Each user should be logged into separate browsers for most consistent results. For example, if you logged into
AppProvider
using Chrome, you would use Firefox when logging intoAppUser
.
Navigate to http://localhost:3000/ using a separate browser in incognito or private mode.
Your login screen will look as it had when you logged in as AppProvider
.
OAUTH2 disabled
If OAUTH2 is disabled, simply log in as app-user
.

OAUTH2 enabled
When OAUTH2 is enabled, you log in using the app-user username and password.

Login as AppUser
with “app-user” as the username and the password is “abc123”.

The App User Licenses Menu
As the app-user, go to the Licenses view and click the “Pay renewal” button.

OAUTH2 disabled
When OAUTH2 is disabled, you are directed to log in to the Canton Wallet, directly. Use “app-user” as the username.

OAUTH2 enabled
When OAUTH2 is enabled, you log in to the Canton Coin Wallet by clicking “LOG IN WITH OAUTH2”.

This navigates to a keycloak login.
Enter the app-user username and password.

Canton Coin Wallet
Signing in navigates to a preloaded Canton Coin Wallet. Click Send Payment.

Return to the AppProvider
’s License Renewal Requests View.
The AppProvider
may now Complete the Renewal.

Clicking “Complete Renewal” results in a Success.

The App User’s License view shows the activated license.

Congratulations. You’ve successfully created and activated a license with a payment transfer!
Canton Console¶
The Canton Console connects to the running application ledger. The console allows a developer to bypass the UI to interact with the CN in a more direct manner. For example, in Canton Console you can connect to the Participant to see the location of the Participant and their synchronizer domain.
Activate the Canton Console in a terminal from the quickstart/
directory.
Run:
make canton-console
After the console initiates, run the participants
and participants.all
commands, respectively.
participants
Returns a detailed categorization of participants.

participants.all
Shows a list of all participant references.

health.status
Is a diagnostic tool that displays the health of Canton Network participants.

Daml Shell¶
The Daml Shell connects to the running PQS database of the application provider’s Participant. In the Shell, the assets and their details are available in real time.
Run the shell from quickstart/ in the terminal with:
make shell
Run the following commands to see the data:
active
Shows unique identifiers and the asset count

active quickstart-licensing:Licensing.License:License
List the license details.

active quickstart-licensing:Licensing.License:LicenseRenewalRequest
Displays license renewal request details.

archives quickstart-licensing:Licensing.AppInstall:AppInstallRequest
Shows any archived license(s).

Canton Coin Scan¶
Explore the CC Scan Web UI at http://scan.localhost:4000/.
The default activity view shows the total CC balance and the Validator rewards.

Select the Network Info menu to view SV identification.

The Validators menu shows that the local validator has been registered with the SV.

Observability Dashboard¶
Note
Observability may no longer work while App Quickstart is under revisions.
In a web browser, navigate to http://localhost:3030/dashboards to view the observability dashboards. Select “Quickstart - consolidated logs”.

The default view shows a running stream of all services.

Change the services filter from “All” to “participant” to view participant logs. Select any log entry to view its details.

SV UIs¶
Navigate to http://sv.localhost:4000/ for the SV Web UI. The SV view displays data directly from the validator in a GUI that is straightforward to navigate.
Login as ‘sv’.

The UI shows information about the SV and lists the active SVs.

The Validator Onboarding menu allows for the creation of validator onboarding secrets.

Next steps¶
You’ve completed a business operation in the CN App Quickstart and have been introduced to the basics of the Canton Console and Daml Shell.
Learn more about Daml Shell and the project structure in the Project Structure guide.