Skip to main content
Canton’s architecture differs fundamentally from traditional blockchains. Understanding these components is essential for designing and debugging Canton applications.

The Big Picture

Canton separates coordination from storage. Synchronizers coordinate transaction ordering; participant nodes (validators) store data for their hosted parties. Unlike Ethereum where every node stores all state, Canton nodes store only their parties’ data. The synchronizer coordinates but never stores transaction content.

Core Components

Validators

Validators are the workhorses of Canton. They:
FunctionDescription
Host partiesStore contract data for their hosted parties
Execute Daml logicRun smart contract code when transactions affect their parties
Validate transactionsVerify authorization and correctness for their shard
Expose the Ledger APIProvide gRPC/JSON APIs for applications
A participant is the private, self-sovereign computational and storage unit for an entity within Canton Network. Key characteristics:
  • Each participant maintains a localized, private view of the ledger
  • Participants only store contracts where their hosted parties are stakeholders
  • Multiple parties can be hosted on a single participant
  • Participants can connect to multiple synchronizers

Synchronizers

Synchronizers coordinate transaction ordering and consensus without seeing transaction content. They consist of two components: Sequencer
  • Orders and distributes encrypted messages between participants
  • Provides total ordering for transactions for that synchronizer
  • Does not see decrypted transaction content
  • Ensures all participants receive messages from that synchronizer in the same order
Mediator
  • Facilitates the consensus protocol
  • Collects confirmation verdicts from participants
  • Declares transaction verdicts (committed or rejected)
  • Does not see decrypted transaction content
The synchronizer is a coordination layer, not a state storage layer. It never stores or has access to transaction data, only encrypted messages and confirmation results.

Parties

Parties are Canton’s on-ledger identities, analogous to addresses or externally owned accounts (EOAs) on other blockchains.
alice::1220f2fe29866fd6a0009ecc8a64ccdc09f1958bd0f801166baaee469d1251b2eb72
└┬┘  └─────────────────────────────────────────┘
 name                              fingerprint (hash of public key)
Party Capabilities:
CapabilityDescription
ValidateConfirm transactions affecting their contracts
ControlInitiate specific actions (choices)
ObserveSee specific state and transactions
Local vs External Parties:
TypeKey StorageControlUse Case
Local PartyHeld by validatorValidator signs on behalfSimpler; validator has full control
External PartyHeld externallyRequires explicit signaturesMore control; wallet-like experience
Unlike Ethereum addresses, parties have costs associated with creation and create state on validators. They’re not ephemeral, design your party structure deliberately.

How Transactions Work

Transaction Flow

Step-by-Step Explanation

StepComponentAction
1. SubmitApplicationSends command to participant via Ledger API
2. InterpretSubmitting ParticipantExecutes Daml code, creates transaction with views
3. SubmitSubmitting ParticipantSends encrypted views to synchronizer
4. SequenceSequencerOrders transaction, assigns timestamp
5. DistributeSequencerSends each view only to entitled participants
6. ValidateAll ParticipantsEach validates their view independently
7. ConfirmAll ParticipantsSend confirmation/rejection verdict to mediator
8. CollectMediatorAggregates verdicts, determines outcome
9. CommitAll ParticipantsApply transaction to local ledger shard
Key points:
  • Transaction is decomposed into views, each party sees only their view
  • Synchronizer sequences but never decrypts content
  • Confirmation requires threshold agreement from relevant participants
  • Each participant stores only their committed view

Network Topology Options

Canton supports multiple topology configurations:

Single Synchronizer (Simple)

Use case: Simple deployments, testing, single-organization applications.

Multiple Synchronizers (Enterprise)

Use case: Different synchronizers for different workflows; regulatory separation; consortium governance.

Global Synchronizer (Canton Network)

Use case: Public Canton Network; decentralized applications; cross-organization workflows.

Where Your Code Runs

ComponentLocationTechnologyResponsibility
Smart Contracts (Templates)Participant nodesDamlBusiness logic, authorization, privacy rules
Backend ServicesYour infrastructureAny language (TypeScript, Java, Python)Off-ledger automation, integrations
FrontendBrowser/mobileAny frameworkUser interface
QueriesParticipant (Ledger API) or PQSgRPC, JSON, SQLReading ledger state

Application Architecture Decisions

DecisionOn-Ledger (Daml)Off-Ledger (Backend)
Multi-party agreements✓ Required
Authorization enforcement✓ RecommendedPossible but weaker
Complex business logicPossible✓ Often easier
External API callsNot possible✓ Required
High-frequency operationsConsider batching✓ Better suited
Audit trail requirements✓ Built-inMust implement

Component Communication

APIs Overview

APIProtocolUse Case
Ledger API (gRPC)gRPC/ProtobufHigh-performance backend integration
Ledger API (JSON)HTTP/JSONSimpler integration, browser-friendly
Admin APIgRPC/ProtobufNode administration, party management
PQS SQL APIPostgreSQLComplex queries, reporting

Ledger API Operations

OperationDescription
Command SubmissionSubmit Daml commands (create contracts, exercise choices)
Transaction StreamSubscribe to transaction events for your parties
Active Contract SetQuery currently active contracts
CompletionsTrack command completion status

Next Steps