When transactions fail, nodes disconnect, or the system behaves unexpectedly, the Canton Console provides the tools to diagnose the problem. This page walks through common debugging scenarios with concrete console commands.Documentation Index
Fetch the complete documentation index at: https://cantonfoundation-issue-365-details-history.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Debugging Stuck Transactions
A transaction appears “stuck” when a command was submitted but no completion event arrives. Common causes: a stakeholder’s participant is unreachable, a required package isn’t vetted, or the synchronizer rejected the transaction.Step 1: Check Node Health
Step 2: Verify Synchronizer Connectivity
Step 3: Check Package Vetting
A transaction fails if a stakeholder’s participant hasn’t vetted the required packages.Step 4: Check Party Hosting
Verify that all parties involved in the transaction are properly hosted:Connectivity Issues
Synchronizer Connection Failures
When a participant can’t connect to the synchronizer:- Network firewall blocking sequencer ports
- TLS certificate mismatch
- Authentication token expired or invalid
- Sequencer endpoint unreachable
Verifying Sequencer Connectivity (from Sequencer Console)
Identity Problems
Party Not Found
If a party ID returns no results:Multi-Hosting Proposal Status
If a multi-hosting setup isn’t taking effect:ACS Inspection
When application behavior is unexpected, inspect the active contract set to verify on-ledger state:Comparing ACS Across Participants
If two participants see different state for the same party, compare their ACS counts for specific templates. Discrepancies indicate a synchronization issue — check that both participants are connected to the same synchronizer and have the same packages vetted.Diagnostic Checklist
When investigating any issue, work through this sequence:- Health — Is the node running?
participant.health.status - Connectivity — Is the synchronizer connected?
participant.synchronizers.list_connected - Packages — Are required packages uploaded and vetted?
participant.topology.vetted_packages.list() - Parties — Are parties correctly hosted?
participant.parties.hosted() - Topology — Are party-to-participant mappings correct?
participant.topology.party_to_participant_mappings.list(syncId) - ACS — Does the on-ledger state match expectations?
participant.testing.acs_search(...)
Next Steps
- Essential Commands — Quick reference for all key commands
- Console Overview — How to access the console in different environments