{"templateId":"markdown","versions":[{"version":"v1.43","label":"v1.43 LTS","link":"/products/custody/accounts-and-assets/blockchains/canton/connect-your-validator","default":true,"active":true,"folderId":"c15a2701"},{"version":"v1.42","label":"v1.42 STS","link":"/products/custody/v1.42/accounts-and-assets/blockchains/canton/connect-your-validator","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.41","label":"v1.41 STS","link":"/products/custody/v1.41/accounts-and-assets/blockchains/canton/connect-your-validator","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/accounts-and-assets/blockchains/canton/connect-your-validator","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/accounts-and-assets/blockchains/canton/connect-your-validator","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/accounts-and-assets/blockchains/canton/connect-your-validator","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/accounts-and-assets/blockchains/canton/connect-your-validator","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Connect your validator","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"connect-your-validator","__idx":0},"children":["Connect your validator"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before your accounts can use Canton, connect ","Ripple Custody"," to your validator, register the Canton network as a ledger, and register the assets that you want to hold as tickers. Repeat these steps for each Canton network that you use: DevNet, TestNet, or MainNet."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"validator-prerequisites","__idx":1},"children":["Validator prerequisites"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Prerequisite"},"children":["Prerequisite"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Details"},"children":["Details"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unified Indexer Service v2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your ","Ripple Custody"," environment runs UISv2. You can't register a Canton ledger without it. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/overview/architecture/unified-indexer-service"},"children":["Unified Indexer Service"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ledger accounting refactor phase 2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Phase 2 is active in your environment. Without it, new Canton accounts stay in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Activating"]}," status. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/support/change-history/v140#ledger-accounting-refactor-phase-2"},"children":["Ledger accounting refactor phase 2"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A Canton validator"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Operated by you or your node provider, running the latest Splice Validator App release."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Token DARs"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your validator operator has installed the DARs for each CIP-56 token that you want to hold."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ledger API endpoint"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["gRPC, over TLS 1.2 or later."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Validator API endpoint"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["REST, over TLS 1.2 or later."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["DA Registry API endpoint"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["REST, over TLS 1.2 or later."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ledger API user rights"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A Ledger API user with the rights listed in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#ledger-api-user-rights"},"children":["Ledger API user rights"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Credentials for each endpoint"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["None, a static JWT, or an OAuth2 client-credentials grant. Each endpoint uses its own setting."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Canton Coin on the validator operator party"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Enough to cover network fees."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Firewall access (hybrid)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your validator firewall allows the Ripple indexer IP addresses. Ask your Ripple liaison for the list."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ripple Custody"," rejects plaintext (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["http"]},") endpoints. The Ledger API client connects directly to the validator and doesn't use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HTTP_PROXY"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HTTPS_PROXY"]},", so the Ledger API endpoint must be reachable without a forward proxy."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ledger-api-user-rights","__idx":2},"children":["Ledger API user rights"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Grant the Ledger API user that ","Ripple Custody"," authenticates as the following rights:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Right"},"children":["Right"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When it's needed"},"children":["When it's needed"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CanReadAsAnyParty"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Always. It covers contract queries, transaction streams, and transaction preparation."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CanExecuteAsAnyParty"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Always. It covers transaction execution on behalf of your parties."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ParticipantAdmin"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["During onboarding only, to allocate parties and grant the other two rights. No later operation, including transfers and pre-approvals, needs it."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"connect-the-validator","__idx":3},"children":["Connect the validator"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["How you connect the validator depends on your deployment model. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/blockchains/canton/architecture-and-responsibilities#deployment-models"},"children":["Deployment models"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"hybrid","__idx":4},"children":["Hybrid"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["SaaS customers use this model. Send the following details to your Ripple liaison for each Canton network:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Ledger API, Validator API, and DA Registry API addresses."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The authentication method and credentials for each endpoint."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The synchronizer ID and the DSO party ID of the network."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Then allow the Ripple indexer IP addresses through your validator firewall. Ripple provisions a dedicated indexer instance that connects to your validator, and confirms when the network is ready for you to register."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"on-premises","__idx":5},"children":["On-premises"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure the Canton network, its three endpoints, and their credentials in your Helm values, and then deploy the updated values. For the values and the Secret naming pattern, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/deployment/reference/canton"},"children":["Canton configuration"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"register-the-canton-ledger","__idx":6},"children":["Register the Canton ledger"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Register each Canton network as a ledger with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v0_CreateLedger"]}," intent. You can submit this intent only in the root domain, and your ledger policies apply to it like any other intent."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To register the ledger:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Prepare the intent payload, as shown in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#ledger-payload-example"},"children":["payload example"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Call the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/reference/api/openapi/intents/intentdryrun"},"children":["Perform a dry run for an intent"]}," operation, with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request"]}," field excluded. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents/manage-intents-and-approvals#dry-run-an-intent-with-the-api"},"children":["Dry run intents"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sign the request body and call the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/reference/api/openapi/intents/createintent"},"children":["Propose an intent"]}," operation. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents/manage-intents-and-approvals#submit-an-intent-with-the-api"},"children":["Submit an intent with the API"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check the intent status. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents/manage-intents-and-approvals#check-state-with-the-api"},"children":["Check state with the API"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ledger-payload-example","__idx":7},"children":["Ledger payload example"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This example registers Canton MainNet:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"payload\": {\n    \"id\": \"canton-mainnet\",\n    \"alias\": \"Canton MainNet\",\n    \"parameters\": {\n      \"type\": \"Canton\",\n      \"synchronizerId\": \"global-domain::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc\",\n      \"operatorId\": \"acme-validator-1::1220f3c6d9a2b5e8f1c4a7d0b3e6f9c2a5d8b1e4f7a0c3d6b9e2f5a8c1d4b7e0a3f6\",\n      \"dsoPartyId\": \"DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc\",\n      \"daRegistryOperator\": \"DigitalAsset-UtilityOperator::12202679f2bbe57d8cba9ef3cee847ac8239df0877105ab1f01a77d47477fdce1204\"\n    },\n    \"description\": \"Canton MainNet through the ACME validator\",\n    \"customProperties\": {},\n    \"type\": \"v0_CreateLedger\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ledger ID that you choose. You use it in accounts, tickers, and orders. ","Ripple Custody"," rejects a duplicate ID."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters.type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Canton"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters.synchronizerId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The synchronizer ID of the network. Get it from your validator operator."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters.operatorId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your validator's own primary party ID. Get it from your validator operator."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters.dsoPartyId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The DSO party ID of the network. ","Ripple Custody"," uses it as the Canton Coin instrument administrator."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters.daRegistryOperator"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The DA Registry operator party ID."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the DSO party and DA Registry operator values on each network, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/blockchains/canton/reference#network-identifiers"},"children":["Network identifiers"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"update-the-canton-ledger","__idx":8},"children":["Update the Canton ledger"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To change a Canton ledger's alias, description, or parameters, submit a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v0_UpdateLedger"]}," intent. It takes the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters"]}," as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v0_CreateLedger"]},", and it references the ledger by ID and current revision. Follow the same dry run, propose, and check steps as for registration."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your existing parties stay hosted on the validator where you created them. Before you change ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["synchronizerId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["operatorId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dsoPartyId"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["daRegistryOperator"]}," on a ledger with active accounts, contact your Ripple liaison."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"payload\": {\n    \"reference\": {\n      \"id\": \"canton-mainnet\",\n      \"revision\": 1\n    },\n    \"alias\": \"Canton MainNet (ACME validator)\",\n    \"parameters\": {\n      \"type\": \"Canton\",\n      \"synchronizerId\": \"global-domain::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc\",\n      \"operatorId\": \"acme-validator-1::1220f3c6d9a2b5e8f1c4a7d0b3e6f9c2a5d8b1e4f7a0c3d6b9e2f5a8c1d4b7e0a3f6\",\n      \"dsoPartyId\": \"DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc\",\n      \"daRegistryOperator\": \"DigitalAsset-UtilityOperator::12202679f2bbe57d8cba9ef3cee847ac8239df0877105ab1f01a77d47477fdce1204\"\n    },\n    \"description\": \"Canton MainNet through the ACME validator\",\n    \"customProperties\": {},\n    \"type\": \"v0_UpdateLedger\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To get the current revision, call the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/reference/api/openapi/ledgers/gettrustedledger"},"children":["Get trusted ledger details"]}," operation."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"register-canton-coin-and-cip-56-tokens","__idx":9},"children":["Register Canton Coin and CIP-56 tokens"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Register Canton Coin and each CIP-56 token that you want to hold as a ticker, with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v0_ValidateTickers"]}," intent. Your ticker policies apply to it. Follow the same dry run, propose, and check steps as for the ledger. For more information about tickers, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/token-management/api/allowlist-token"},"children":["Allowlist tokens"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ticker-payload-example","__idx":10},"children":["Ticker payload example"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This example registers Canton Coin and a CIP-56 token on Canton MainNet in one intent:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"payload\": {\n    \"tickers\": [\n      {\n        \"id\": \"5a1f9c3e-7b2d-4e8a-9c6f-1d3b5e7a9c2f\",\n        \"ledgerId\": \"canton-mainnet\",\n        \"kind\": \"Native\",\n        \"name\": \"Canton Coin\",\n        \"symbol\": \"CC\",\n        \"decimals\": 10,\n        \"ledgerDetails\": {\n          \"type\": \"Canton\",\n          \"properties\": {\n            \"type\": \"Native\"\n          }\n        },\n        \"lock\": \"Unlocked\",\n        \"customProperties\": {}\n      },\n      {\n        \"id\": \"8e4b2d6f-1a3c-4f7e-b9d2-6c8a0e2f4b7d\",\n        \"ledgerId\": \"canton-mainnet\",\n        \"kind\": \"Token\",\n        \"name\": \"Example Token\",\n        \"symbol\": \"EXT\",\n        \"decimals\": 10,\n        \"ledgerDetails\": {\n          \"type\": \"Canton\",\n          \"properties\": {\n            \"type\": \"Instrument\",\n            \"instrumentAdmin\": \"token-issuer-admin::1220c7e1a4d7b0e3f6a9c2d5b8e1f4a7d0c3b6e9f2a5d8c1b4e7f0a3d6c9b2e5f8a1\",\n            \"instrumentId\": \"EXT\"\n          }\n        },\n        \"lock\": \"Unlocked\",\n        \"customProperties\": {}\n      }\n    ],\n    \"type\": \"v0_ValidateTickers\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A new ticker ID, in UUID format. You use it as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickerId"]}," in token orders."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].ledgerId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ID of the Canton ledger that you registered."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].kind"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Native"]}," for Canton Coin. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Token"]}," for a CIP-56 token."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].decimals"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["10"]}," for every Canton asset."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].ledgerDetails.type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Canton"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].ledgerDetails.properties.type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Native"]}," for Canton Coin. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Instrument"]}," for a CIP-56 token."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].ledgerDetails.properties.instrumentAdmin"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Instrument"]}," only. The party ID of the token's administrator. Get it from the token issuer."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].ledgerDetails.properties.instrumentId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Instrument"]}," only. The token's instrument ID. Get it from the token issuer."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrumentAdmin"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrumentId"]}," values in the example are placeholders. Get the real values for each token from its issuer or from the DA Registry."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":11},"children":["Next steps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After you register the ledger and tickers, create accounts and set them up to send and receive. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/blockchains/canton/set-up-accounts-api"},"children":["Set up Canton accounts with the API"]},"."]}]},"headings":[{"value":"Connect your validator","id":"connect-your-validator","depth":1},{"value":"Validator prerequisites","id":"validator-prerequisites","depth":2},{"value":"Ledger API user rights","id":"ledger-api-user-rights","depth":3},{"value":"Connect the validator","id":"connect-the-validator","depth":2},{"value":"Hybrid","id":"hybrid","depth":3},{"value":"On-premises","id":"on-premises","depth":3},{"value":"Register the Canton ledger","id":"register-the-canton-ledger","depth":2},{"value":"Ledger payload example","id":"ledger-payload-example","depth":3},{"value":"Update the Canton ledger","id":"update-the-canton-ledger","depth":2},{"value":"Register Canton Coin and CIP-56 tokens","id":"register-canton-coin-and-cip-56-tokens","depth":2},{"value":"Ticker payload example","id":"ticker-payload-example","depth":3},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"seo":{"title":"Connect your validator"}},"lastModified":"2026-10-23T14:40:24.138Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/accounts-and-assets/blockchains/canton/connect-your-validator","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}