C# / .NET SDK for Canton Network #46 - Milestone 2: Full Ledger API Coverage, PQS Client, JSON API & Remaining Splice Packages
Milestone 2: Full Ledger API Coverage, PQS Client, JSON API & Remaining Splice Packages
- Estimated Delivery: 10 weeks after M1 acceptance
- Focus: Complete gRPC and HTTP API surface (~40 endpoints across two transports), PQS client, async streaming, integration testing against LocalNet, remaining Splice NuGet packages
- Deliverables / Value Metrics:
| Deliverable | Acceptance Criteria | |-------------|---------------------| | Complete gRPC Ledger API v2 client | All endpoints implemented: Command submission, Active Contract Set queries, Transaction streams, Completions, Package service, Party management |Collapse comment | PQS Client | NuGet package published; active contract queries with typed payload filtering via PostgreSQL | | JSON API v2 client | HTTP client covering equivalent functionality for teams preferring REST | | OpenTelemetry instrumentation (end-to-end) | W3C trace-context propagation across all three transports — gRPC client via Grpc.Net.Client instrumentation, HTTP/JSON client via HttpClient + traceparent header, PQS client via Npgsql's OpenTelemetry integration (database semantic conventions: db.system=postgresql, db.statement, db.name). A single ActivitySource exposed for caller-side spans on command submission, retry attempts, stream consumption, and PQS query execution — so distributed traces flow end-to-end from application code through the Ledger API's existing OTel emission. | | Async streaming | IAsyncEnumerable<T> support for transaction and completion streams | | Remaining Splice reference NuGets | Canton.Splice.TokenStandard, Canton.Splice.ValidatorLifecycle, Canton.Splice.DsoGovernance, plus shared utility packages, published to public NuGet and version-aligned with current Canton mainnet release — using the same automated codegen + publish trigger as M1. Demonstrates the any-DAR codegen pipeline (§3) on the full Splice surface area. | | Integration tests | Test suite running against Canton LocalNet, exercising codegen output for both the Splice DARs and a user-supplied custom DAR | | Ecosystem gate | End-to-end demo published and announced; at least 1 community member successfully integrates the SDK into their own project. We accept either path as evidence: (a) consuming a Canton.Splice.* package directly, or (b) running the codegen against the team's own DAR and shipping the resulting NuGet — either demonstrates the distribution model. |
Verification: Demonstrate end-to-end flow: codegen → submit command → observe transaction → query ACS, on both gRPC and HTTP paths. Community integration attempt documented.
| Milestone | Amount | Description | |-------------|---------------------|---------------------| | Milestone 2 - Full API Coverage + PQS| 625,000 CC | full Ledger API across gRPC and JSON, PQS client, async streaming, remaining Canton.Splice.* packages. |
_Originally posted by @pedrodneves in https://github.com/canton-foundation/canton-dev-fund/issues/46#issuecomment-4914214302_