How to setup a canton production environment?

Hi Team,

I have tried canton in my local machine. How to setup a production environment and for complex query, i would like to use postgresql, how to implement this? can any one suggest? Thanks in advance.

Hi, @Manju!

Have you considered exploring Daml Hub? That is a option for those looking to take the next step beyond a local machine demo.

If Daml Hub doesn’t work for you, let us know more about your requirements.

Hi @Manju,

I wanted to provide another possibility that might suit your needs. The Advanced Configuration example from our community github has a few examples that you might find useful. In addition to this, I might recommend setting up pgAdmin and Daml Navigator as development aids:

This example directory contains a collection of configuration files that can be used to setup domains or participants for various purposes. The directory contains a set of sub-folders:

  • storage: contains “storage mixins” such as memory.conf or postgres.conf
  • nodes: contains a set of node defintions for domains and participants
  • api: contains “api mixins” that modify the API behaviour such as binding to a public address or including jwt authorization
  • remote: contains a set of remote node definitions for the nodes in the nodes directory.
  • parameters: contains “parameter mixins” that modify the node behaviour in various ways.

Hi,

Thanks for your reply. I tried Advanced configuration. But using daemon is not working for me. Can you please provide any other reference, how to set up a production canton network in VM?

Hi Manju,

It may take a day or two but I’ll provide more specific instructions to get set up with a functional Canton domain that uses Postgres storage with the open source binaries. For evaluation purposes however I would recommend starting with the Daml SDK which has some built in tools to help you hit the ground running.

These include:

  • Running code in a local sandbox instance
  • Automatic script evaluation in VSCode
  • Create and run contracts in the Daml Navigator web interface
  • Interact with a ledger using the HTTP JSON API

There are also plenty of examples in the documentation for writing contract template and building user interfaces with React. The point being that you can get pretty far with >$ daml start

https://docs.daml.com/getting-started/installation.html#install-daml-open-source-sdk

Keep in mind too that an enterprise license provides features in addition to the full Canton Protocol that may be critical in a production environment such as:

  • Helm Charts
  • High Availability
  • Fast Parallel Transaction Processing
  • Monitoring and Observability
  • Besu & Hyperledger Fabric connectors

You can find a comparison of Daml open source and enterprise versions here:
https://docs.daml.com/getting-started/installation.html#choose-daml-enterprise-or-daml-open-source

1 Like

Thanks for the update.

Hi WallaceKelly,

I have tried the codebase which is in your github repository https://github.com/wallacekelly-da/daml-public-demos/tree/docker-canton-example/docker-canton-example
In this, I have add dars folder and ran the docker compose. I tried this setup in my local machine. Domain and participants’ containers were created. Using the canton console, I am able to communicate with domain and participant nodes. I checked whether the dar uploaded or not (participant1.dar.list _ ), I am able to see cantonExamples.dar. I followed your readme doc. Next step using Navigator we can perform operations. When I login as Alice/ bank, I am not able to see contracts. Can you please suggest if I missed something?

I tried the same thing in the VM. When I ran the docker compose up, all the containers were created, but within a minute participant nodes went to Exited. Why is it working in local but not in VM?

In both cases, your best course of action is to look at the logs. Otherwise, both of us would just be speculating what the problem is.

On your local machine, you can see the logs in Docker Desktop. I’m not sure how your VM is configured, so you may have to look for the logs elsewhere. The Monitoring page in the docs will be helpful. Look for the section “Logging.”

By the way, let’s continue this conversation about the Docker Compose example on the associated tutorials page so that future readers can find this discussion more easily.

Hi WallaceKelly,

Thanks for your reply. Will Check and come back to you.

Hi WallaceKelly,

Thanks, it is working now. I failed to open the node port in the VM.

1 Like

Hi Daml,

Does DA (Digital Asset) charge any license fees for running a network? Do they charge anything for providing support?

Hi @Manju ,

Canton releases come in two variants: Open-Source or Enterprise(has license fees). Enterprise includes everything needed to build, test, and deploy Daml applications to your own infrastructure, on-prem or in the cloud. Daml Enterprise includes always-on, 365x24 support directly from Digital Asset.

A production deployment of a network requires enterprise level features and here is a link that compares our enterprise vs opensource features : Obtaining Canton — Daml SDK 2.7.6 documentation

1 Like

Thanks Ashok,

If I go with Enterprise Edition. What will be the cost of running a canton network (license fees)? Can you please elaborate?

I will ask my colleague Jacob, to reach out to you and Sanjay to provide more clarity on that.

Hi Daml Team,

I am trying to set up a canton network in the VM using canton open source. mydomain and participant1 in one VM called (VM1) and participant2 in another VM called (VM2). I am able to connect to mydomain. Using remote.conf, I am able to communicate participant1 and participant2.

Note: I downloaded canton-open-source-2.7.5. In this, I have created a folder called config and i kept all my configuration files here. I am executing all the commands inside this folder.

I have started the network using the following cmd:
VM1: …/bin/canton -c mydomainparticipant1.conf --bootstrap participant1.canton
VM2: …/bin/canton -c participant2.conf --bootstrap participant2.canton
Remote canton console, I have started in VM1:
daml canton-console -c remote.conf

In the .canton file, I have mentioned the dar upload cmd
participant1.dars.upload(“…/dars/CantonExamples.dar”)

When I try to run
participant1.dars.list(filterName=“CantonExamples.dar”)
i got the output:
res13: Seq[com.digitalasset.canton.participant.admin.v0.DarDescription] = Vector()

I didn’t get dar description.

Can you suggest where I did mistake?

The package name does not include the .dar file extension. Try:

participant1.dars.list(filterName=“CantonExamples”)

BTW, it would help us if you started a new topic when you have new questions. :slight_smile: You’ll get more visibility to your subsequent questions. Additionally, it makes the forum search work better.

Thanks, it works. Yeah Ok, next time I will do.

Just curious, now that the free version of DAML hub is no longer available, are there any cloud deployment options available? A nice option would be to easily deploy a DAML application from a codespace….