Skip to content
CCPEDIAby Unity Nodes
Incoming#751 Pull requestEquilibrium (equilibrium.co)RFP #17: SDKs in different languages

Proposal: Canton C++ SDK

Opened 31-08-2026 by olliten, last activity 21d ago

  1. Incoming51 days so far31-08-2026
  2. Needs Championnot reached
  3. In Reviewnot reached
  4. Ready for Votenot reached
  5. Voting Livenot reached
  6. Approvednot reached
Waiting on
Waiting on the committee
idle 21 days
Funding request
3,967,000 CC
Champion named in file
Heslin Kim, Zenith (@heslin-zenith)
Duration
~4 months engineering (6-month hard deadline); production adoption open to month 14, retention and expansion to month 20
Organization
Equilibrium (equilibrium.co)
RFP or roadmap area
RFP #17: SDKs in different languages

The Canton C++ SDK lets native C++ applications generate typed Daml bindings and build, sign, submit, stream and query Canton Ledger API v2 workflows through one maintained native SDK, without adding a JVM or sidecar to the application runtime. It ships six layered canton::* libraries, a .dar-driven code generator distributed as a dpm component, and conformance, benchmark and reference artifacts, all Apache-2.0.

Development Fund Proposal Submission

Proposal file: rfps/developer-experience-tooling-education/2026-08-Equilibrium-cpp-sdk.md

Applicant

Organization: Equilibrium

Author / Primary Contact: Olli Tiainen (olli@equilibrium.co)

Champion: Heslin Kim, Zenith (@heslin-zenith)


Proposal Classification

Proposal Type:

  • RFP-aligned proposal
  • Individual initiative

RFP / Roadmap Area: RFP # 17: SDKs in different languages

Label: canton-apis


Funding & Timeline

Total Funding Request: Up to 2,545,000 CC base. The independent security review is priced separately as a pass-through cost at Milestone 3, converted from vendor quotes at the CC/USD basis stated at filing.

Project Duration: ~4 months engineering (6-month hard deadline), adoption window to month 14

Maximum Amount: N/A

Maximum Duration: N/A


Summary

A C++ team integrating with Canton can find Ledger API protobuf definitions, an OpenAPI document, and SDKs for Java, TypeScript, Rust, Go, Python and C#. It cannot find a maintained C or C++ SDK. Building directly on the protos leaves the application layer to implement: Daml-LF decoding, serialization for every generated type, change-ID deduplication, command recovery, resumable streams and reassignment semantics. A sidecar in a supported language avoids some of that work, but adds a process boundary and a second toolchain — and splits the signing path, which matters because PKCS # 11, the standard HSM API, is specified in ANSI C.

The Canton C++ SDK gives C++ applications typed access to commands, ledger state, update streams, CIP-0056 and CIP-0112 token workflows, interactive submission with a pluggable signer interface, and typed Participant Query Store reads — all natively, with no JVM or sidecar in the runtime path.

What this delivers

Three artifact families, all Apache-2.0, distributed through CMake, Conan, vcpkg and dpm.

DeliverableWhat it is
canton-cpp-sdkSix layered libraries — canton::core, canton::ledger, canton::admin, canton::auth, canton::token, canton::pqs — with JWT/OIDC authentication, TLS/mTLS, resumable streams, command recovery and OpenTelemetry on every transport
canton-codegen-cppTyped C++ from .dar files (templates, choices, interfaces, contract keys) with gRPC and JSON codecs and round-trip tests on every generated type, shipped as a dpm codegen-cpp component
Verification and adoption artifactscanton-conformance-cpp and canton-bench-cpp with per-release published results, the canton-reference-cpp application, COMPATIBILITY.md and a versioned documentation site

Submission Checklist

  • Full proposal file is included in this PR
  • Organization and primary contact identified
  • Champion identified or Needs Champion selected
  • RFP / roadmap alignment identified, if applicable
  • Total funding request provided
  • Project duration provided
  • Proposal is within any RFP maximum amount
  • Proposal is within any RFP maximum duration
  • Milestones and milestone funding are defined in the proposal
  • Acceptance criteria are based on ecosystem value
  • Architectural alignment is addressed

Notes for Reviewers

  • The runtime path has no JVM. Daml-LF decoding happens at code-generation time through a project-owned thin adapter to the public daml-lf-archive interface; generated code and runtime libraries have no JVM dependency. The funded C# (#46) and Rust (#407) SDKs use the same model.
  • Memory safety is part of the deliverable. The SDK decodes untrusted network data and prepares payloads for signing, so sanitizers, continuous fuzzing of every decoder boundary and at least 80 percent coverage on codegen and serialization paths run in CI. Critical and high findings from the independent security review are remediated before Milestone 3 acceptance.

Milestones 5

  1. canton::core, canton::ledger, canton::auth and Proof of ConceptMonth 1.5. Hard deadline: 2 months from grant approval.
  2. canton-codegen-cpp, canton::admin and PackagingMonth 3. Hard deadline: 4 months from grant approval.
  3. canton::token, canton::pqs, canton-conformance-cpp and Security ReviewMonth 4. Hard deadline: 6 months from grant
  4. Production Adoption
  5. Retention and Expansion