Skip to content

Proposal: Pinned External Data Fetches for Daml Contracts

OPENPull Request
by elliottdehn16-04-2026Incoming
4M CC requested
References:CIP-0043CIP-0044CIP-0079

Development Fund Proposal Submission

Proposal file: /proposals/external-data-pinning.md

---

Summary

This proposal funds the implementation of CIP-draft-external-data-pinning: a new Canton protocol primitive (fetchExternal) that allows Daml contract choices to fetch data from external TCP services and cryptographically pin the signed response to the transaction. Validating participants verify the signature rather than re-executing the call, preserving determinism. This replaces the per-source oracle infrastructure pattern (CIP-0079 price feeds, CIP-0043/CIP-0044 KYC attestations) with a single general-purpose mechanism that any contract author can use without new governance proposals.

---

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

  • Draft implementation: digital-asset/canton#491 — core protocol machinery with 20 tests, covering proto definitions, Engine Result trampoline, Speedy built-in, TCP resolver, pinned data verification, and protocol parameter gating.
  • The CIP itself is at cip-draft-external-data-pinning in the CIPs repo (Draft status, created 2026-04-13). This grant proposal funds its implementation.
  • This is a hard-fork change touching the Daml LF Speedy interpreter, the Canton transaction tree format, and the protocol validation logic. The phased rollout (feature-gated until 2/3 SV adoption) follows the pattern of previous protocol upgrades.
  • The Daml engine changes follow the existing ResultNeedContract/ResultNeedPackage trampoline pattern — ResultNeedExternalFetch is a natural addition, not a new execution model.
  • The trust model is strictly stronger than today's oracle patterns: trust shifts from "entire automation pipeline" to "a single signing key."
  • Funding request: 4,000,000 CC across 5 milestones over ~26 weeks. The larger ask (vs. simpler proposals) reflects the scope: three codebases (Daml engine, Canton protocol, standard library), two SDKs (Python, TypeScript), and a hard-fork rollout.