Skip to content

Proposal: Compliance Middleware SDK for EVM Developers on Zenith

CLOSEDPull Request
by Noosphere-31406-08-2026Declined
needs-champion
References:CIP-0056

Development Fund Proposal Submission

Proposal file: proposals/woof-compliance-middleware-sdk.md

---

Summary

An open-source SDK that makes Canton's compliance primitives callable from Solidity on Zenith. It ships base contracts with compliance modifiers, atomic ERC-20 to CIP-56 DvP settlement, party-to-address mapping, a TypeScript middleware layer, and reference dApps.

The SDK works at the application layer, gating positions, LP shares and pool access. That sits above the instrument-level controls a registry enforces, and no Solidity-native surface for it exists on Zenith today.

Total request: $120,000, paid in Canton Coin at the rate on each milestone's acceptance, across 2 milestones over 6 months.

---

Checklist

  • [x] Proposal file added under /proposals/
  • [x] Milestones and funding amounts defined
  • [x] Acceptance criteria included
  • [x] Alignment with Canton priorities described

---

Notes for Reviewers

SIGs: Regulatory Compliance as primary, Token & Asset Standards as secondary, since the SDK is the EVM-side consumption surface for CIP-56. @monsieurleberre and @shaul-da, we'd value your review.

@monsieurleberre reviewed an earlier draft and raised the key boundary question. The Registry App's native blocklist and credential-based allowlist are asset-model controls, set by the issuer over their own instrument. This SDK covers a dApp's own per-action permissions, including objects that are not registry instruments at all, such as positions and LP shares. Motivation now sets that boundary out explicitly. The two layers compose, and the SDK reimplements neither.

The proposal also states its main platform dependency openly. Zenith's external_call() is not yet publicly exercisable, so every cross-VM call sits behind a single adapter contract.

Already on record. CompliLedger / TokenProof (#231) confirmed in writing that the two efforts are complementary rather than overlapping (comment). We consume their DAML-side ComplianceGuard via external_call() and are coordinating on interface stability. Qasara (#300) named this class of SDK as a target consumer of their classified-event vocabulary (forum post, PR reply).

Champion: not yet confirmed. We're identifying one per the process, and are happy to walk any SIG member through the draft.