How canton-network/splice works
Splice is a Canton Network application platform for operating validators and super-validators, with wallet, Scan, ANS, and Splitwell applications. The available README does not describe a user journey, so the graph emphasizes the evidenced operational workflow: ledger updates and mediator verdicts are ingested, processed, and persisted, alongside validator topology ingestion. Frontend and other application capabilities are represented from the repository tree; their runtime connections are not inferred. Several nodes group Canton/common runtime primitives; unsampled subsystem links are omitted.
Main entry points: ScanVerdictIngestionService.scala Verdict ingestion · UpdateIngestionService.scala Ledger update ingestion · PartyToParticipantIngestionService.scala Party topology ingestion · automation Retry services
Components 22
Network applications
- Wallet app
apps/wallet/frontend/src/App.tsx - ANS app
apps/ans/frontend/src/App.tsx - Splitwell app
apps/splitwell/frontend/src/App.tsx - Super-validator app
apps/sv/frontend/src/App.tsx - Scan app
apps/scan/frontend/src/App.tsx
Ingestion and indexing
- Verdict ingestion
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/automation/ScanVerdictIngestionService.scala - Mediator verdict client
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/mediator/MediatorVerdictsClient.scala - Activity computation
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/rewards/AppActivityComputation.scala - Scan verdict store
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/store/db/DbScanVerdictStore.scala - Bulk storage
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/store/bulk/BulkStorage.scala - Ledger update ingestion
apps/common/src/main/scala/org/lfdecentralizedtrust/splice/automation/UpdateIngestionService.scala - Party topology ingestion
apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/automation/PartyToParticipantIngestionService.scala
Operations and services
- Ledger connection
apps/common/src/main/scala/org/lfdecentralizedtrust/splice/environment/SpliceLedgerConnection.scala - Multi-domain ACS store
apps/common/src/main/scala/org/lfdecentralizedtrust/splice/store/MultiDomainAcsStore.scala - Party mapping store
apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/store/PartyToParticipantStore.scala - Application environment
apps/app/src/main/scala/org/lfdecentralizedtrust/splice/environment/SpliceEnvironment.scala
Shared runtime
- Retry services
apps/common/src/main/scala/org/lfdecentralizedtrust/splice/automation - Shared primitives
apps/common/src/main/scala/org/lfdecentralizedtrust/splice
Canton foundations
- Canton runtime primitives
canton/community/base/src/main/scala/com/digitalasset/canton - Timestamp and clock
canton/community/base/src/main/scala/com/digitalasset/canton/data/CantonTimestamp.scala - Pretty formatting
canton/community/base/src/main/scala/com/digitalasset/canton/logging/pretty/Pretty.scala
Other components
- Operator
Connections 22
- Operator → Wallet app: uses
- Operator → ANS app: uses
- Operator → Splitwell app: uses
- Operator → Super-validator app: uses
- Operator → Scan app: uses
- Verdict ingestion → Mediator verdict client: requests verdicts
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/automation/ScanVerdictIngestionService.scala - Verdict ingestion → Activity computation: computes activity
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/automation/ScanVerdictIngestionService.scala - Verdict ingestion → Scan verdict store: inserts verdicts
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/automation/ScanVerdictIngestionService.scala - Verdict ingestion → Ledger update ingestion: shares ingestion runtime
- Ledger update ingestion → Ledger connection: reads updates
apps/common/src/main/scala/org/lfdecentralizedtrust/splice/automation/UpdateIngestionService.scala - Ledger update ingestion → Multi-domain ACS store: writes ingestion
apps/common/src/main/scala/org/lfdecentralizedtrust/splice/automation/UpdateIngestionService.scala - Ledger update ingestion → Retry services: extends retry service
apps/common/src/main/scala/org/lfdecentralizedtrust/splice/automation/UpdateIngestionService.scala - Party topology ingestion → Ledger connection: reads topology updates
apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/automation/PartyToParticipantIngestionService.scala - Party topology ingestion → Party mapping store: initializes mappings
apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/automation/PartyToParticipantIngestionService.scala - Party topology ingestion → Retry services: extends retry service
apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/automation/PartyToParticipantIngestionService.scala - Verdict ingestion → Timestamp and clock: parses record times
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/automation/ScanVerdictIngestionService.scala - Verdict ingestion → Shared primitives: uses services
apps/scan/src/main/scala/org/lfdecentralizedtrust/splice/scan/automation/ScanVerdictIngestionService.scala - Retry services → Shared primitives: uses retry provider
apps/common/src/main/scala/org/lfdecentralizedtrust/splice/automation/UpdateIngestionService.scala - Application environment → Wallet app: hosts app services
- Application environment → Super-validator app: hosts app services
- Timestamp and clock → Canton runtime primitives: uses runtime types
canton/community/base/src/main/scala/com/digitalasset/canton/data/CantonTimestamp.scala - Pretty formatting → Canton runtime primitives: formats values
canton/community/base/src/main/scala/com/digitalasset/canton/logging/pretty/Pretty.scala