# Canton Validators

Dfns supports the Canton network, including self-hosted validators. For more information, you can read our announcement [on our blog](https://www.dfns.co/article/canton-tier-1-support).

{% hint style="warning" %}
The Canton Network is a speciality chain that requires a dedicated activation by Dfns teams.&#x20;

Please reach out to your account manager or raise a [support request](https://support.dfns.co) indicating your organization id so we can activate it for you.&#x20;
{% endhint %}

## 1/ Setup a Canton Validator

Dfns offers two options for interacting with the Canton Network:

<details>

<summary>Option 1: Use Dfns’ shared validator</summary>

This is the easiest way to start quickly broadcasting transactions with Canton wallets.&#x20;

Create a new validator, name it and select kind "Dfns" or "`Shared`" when requested and you are done.&#x20;

**Via API:** see details [here](https://docs-legacy.dfns.co/d/api-docs/networks/create-validator#sample-request) for the related endpoint to call. &#x20;

**Via the Dashboard:** head to the dashboard: Settings > Developers > Canton Validators ([direct link](https://app.dfns.io/v3/settings/developers/canton-validators)) and click :heavy\_plus\_sign: New Validator to access the creation form. Once you are done you will be requested to :key: sign the creation with your passkey. Then you are done!

<div><figure><img src="https://3953120539-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtnSPOZGQ2hBmgoVWX5H6%2Fuploads%2FJoXXiNbWWYSe88d2fY50%2FCapture%20d%E2%80%99e%CC%81cran%202025-08-11%20a%CC%80%2017.46.52.png?alt=media&#x26;token=9cd28851-fd74-491d-a5ae-aa4f3608fcdc" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="https://www.youtube.com/watch?v=B81gJ_ek3z0" alt=""><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Option 2: Connect your own validator (BYOV)</summary>

If you are running your own validator, then you can connect it to Dfns over API (see details [here](https://docs-legacy.dfns.co/d/api-docs/networks/create-validator#sample-request-1)) or via the Dashboard. Once connected, you can create secure wallets linked to your validator. There is no extra setup needed on your validator side.&#x20;

{% hint style="info" %}
You will always earn the rewards associated with the validator in the native wallet on that validator.&#x20;

We recommend configuring a automated sweep into a separate Dfns-secured Canton wallet to ensure your coins are safe. See an example configuration [here](https://docs.dev.sync.global/validator_operator/validator_helm.html#configuring-sweeps-and-auto-accepts-of-transfer-offers).&#x20;
{% endhint %}

We need several information to be able to connect to your validator:&#x20;

* **The validator URL:** we expect to be able to call the validator External Signing API, for instance `$URL/api/validator/v0/admin/external-party/topology/generate`. See the underlying calls details [here](https://docs.dev.sync.global/app_dev/validator_api/index.html#validator-api-external-signing). The calls will be originating from our IP addresses (see [dfns-environments](https://docs-legacy.dfns.co/d/getting-started/dfns-environments "mention"))
* **The Validator OAuth2 authentication parameters:** this is how we will authenticate into your validator. You should have setup authentication already (see details [here](https://docs.dev.sync.global/validator_operator/validator_helm.html#helm-validator-auth)), you can reuse the same Application details. For convenience you can find some examples with some common providers on [#sample-request-1](https://docs-legacy.dfns.co/d/api-docs/networks/create-validator#sample-request-1 "mention")&#x20;
  * **Domain:** your OAuth2 tenant domain. Provided by your auth provider.&#x20;
  * **Token Path:** token endpoint from your authorization provider. We will call this endpoint on your tenant domain (i.e.: `<domain>/<token path>`)
  * **Audience:** the audience your configured on your auth provider. It is suggested to start with  `https://canton.network.global`.
  * **Client ID:** The client id from your auth provider for this application.
  * **Client Secret:** The client secret from your auth provider for this application.
* **The Ledger API URL:** URL to access the Ledger JSON API and call endpoints such as `/v2/state/ledger-end`, `/v2/state/active-contracts`, `/v2/parties/participant-id`, `/v2/interactive-submission/prepare`, `/v2/interactive-submission/execute`, `/v2/commands/completions`. See the underlying details [here](https://docs.dev.sync.global/app_dev/ledger_api/index.html). The calls will be originating from our IP addresses (see [dfns-environments](https://docs-legacy.dfns.co/d/getting-started/dfns-environments "mention"))
* **The Ledger OAuth2 authentication parameters:** this is how we will authenticate to your ledger API. This will usually use the same parameters as for the validator.&#x20;

Once you have gathered these information, you can start setting up the custom validator on Dfns.&#x20;

**Via API:** see details [here](https://docs-legacy.dfns.co/d/api-docs/networks/create-validator#sample-request-1) for the related endpoint to call. &#x20;

**Via the Dashboard:** head to the dashboard: Settings > Developers > Canton Validators ([direct link](https://app.dfns.io/v3/settings/developers/canton-validators)) and click :heavy\_plus\_sign: New Validator to access the creation form. Once you are done you will be requested to :key: sign the creation with your passkey, then you are done!

<figure><img src="https://3953120539-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtnSPOZGQ2hBmgoVWX5H6%2Fuploads%2FbnFiUAH2CdQUz4n1JkFJ%2FCapture%20d%E2%80%99e%CC%81cran%202025-08-11%20a%CC%80%2018.50.22.png?alt=media&#x26;token=650d30f0-e197-48e5-8371-5bf87218b931" alt="" width="375"><figcaption></figcaption></figure>

</details>

{% hint style="info" %}
Canton Validators support a limited number of wallets. You can connect several validators to your Dfns account.&#x20;
{% endhint %}

Check out the video tutorial on our Youtube Channel:&#x20;

{% embed url="<https://www.youtube.com/watch?v=B81gJ_ek3z0>" %}

## 2/ Setup a Canton Wallet

{% stepper %}
{% step %}

### Create a Canton Wallet

Once setup using the shared or your own validator, you can create wallets via the dashboard Wallets page or via the Wallets API. You will be requested to select the validator you want to leverage.

Should you need help to create a wallet, you can watch the video above, or follow the tutorial: [using-the-dashboard-create-your-first-wallet](https://docs-legacy.dfns.co/d/getting-started/onboarding-to-dfns/using-the-dashboard-create-your-first-wallet "mention") or use our deditated API doc: [create-wallet](https://docs-legacy.dfns.co/d/api-docs/wallets/create-wallet "mention")

{% endstep %}

{% step %}

### Pre-approve assets reception

{% hint style="warning" %}

#### To do before sending assets to your Canton Wallet

The Canton networks has two ways of transferring funds: offers that need to be explicitely accepted, or automated transfers.&#x20;

Dfns does not yet support responding to transfer offers (it's coming soon!).&#x20;

You need to pre-approve receiving Canton Coins to make it automated before issuing a transfer to your wallet. After that receiving Canton Coins will automatically be accepted.&#x20;

Note: if you sent an offer before approving assets, then it will automatically expire within 24hrs.&#x20;
{% endhint %}

Pre-approve receiving assets into your Canton Wallet from the Dashboard Wallet page.&#x20;

Click "<i class="fa-circle-check">:circle-check:</i> Approve Assets" button on the dashboard, then "<i class="fa-circle-check">:circle-check:</i> Approve" for the assets needed.&#x20;

<div><figure><img src="https://3953120539-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtnSPOZGQ2hBmgoVWX5H6%2Fuploads%2FFBbR5KPuqQbbB5QLwybO%2Fimage.png?alt=media&#x26;token=c460412a-6a70-49f6-8823-37afe5123edb" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="https://3953120539-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtnSPOZGQ2hBmgoVWX5H6%2Fuploads%2FFJNm0YJrs9lGPCxNFeMO%2Fimage%20(3).png?alt=media&#x26;token=2ddd3a01-7f0c-4006-9a8c-5c2d3855959e" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

## API reference

{% content-ref url="validators/create-validator" %}
[create-validator](https://docs-legacy.dfns.co/d/api-docs/networks/validators/create-validator)
{% endcontent-ref %}

{% content-ref url="validators/list-validators" %}
[list-validators](https://docs-legacy.dfns.co/d/api-docs/networks/validators/list-validators)
{% endcontent-ref %}
