Skip to content
Daml

Proof of Transfer

Integrating Proof of Transfer capability into a Canton Network Explorer gives users a seamless interface to verify transaction statuses natively, while preserving privacy.

Integration Blueprint

To provide a seamless customer journey, the Explorer handles incoming payload information—an UpdateID and a Transfer Object payload—usually supplied via direct user copy-pasting or automated routing via a platform referral URL parameter. The platform then submits this data payload to the DA Registry API to render an indisputable confirmation receipt.

Step-by-Step Implementation Flow

Follow this workflow sequence to build the verification stack inside your network explorer ecosystem.
1

1. Configure the Target Inbound Route

Create a dedicated, public route in your application routing profile (e.g., /verify-transfer) designated to handle incoming cryptographic verification payloads. Ensure the handler is equipped to extract query string components seamlessly if redirected from external wallet histories.
2

2. Construct the Payload Input Form Interface

Design a clean input card component. If parameters are present in the URL path, auto-populate the data fields for the user. If blank, provide a structured text area box allowing the user to paste their raw transaction JSON payload manually.
3

3. Query the DA Registry Endpoint

Dispatch an asynchronous network request from your application frontend layer directly to the live DA Registry network service infrastructure node using the structured body schemas.
Curl Request Signature
curl -X POST "[https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof](https://api.utilities.digitalasset.com/api/utilities/v0/registry/transfer/v0/proof)" \
  -H "Content-Type: application/json" \
  -d '{
    "updateId": "1220b1223907e943aa24b52e874a78c86067bafcdb429958994cbd2b33fc41df5e1a",
    "transfer": {
      "sender": "issuer::12204b6be4677e1e110e63cb3dcd89c62025932458547a09e580458e29e822e9ee26",
      "receiver": "holder::12204b6be4677e1e110e63cb3dcd89c62025932458547a09e580458e29e822e9ee26",
      "amount": "1.0000000000",
      "instrumentId": {
        "admin": "registrar::12204b6be4677e1e110e63cb3dcd89c62025932458547a09e580458e29e822e9ee26",
        "id": "INST"
      },
      "requestedAt": "2025-12-09T13:29:42.6187Z",
      "executeBefore": "2025-12-12T13:28:53.7492Z",
      "inputHoldingCids": [
        "0020a2a23208de8d9fec1efd1c377d9a4343eac83f27b26b554f1c9e95c9653c05ca12122056c38daac3b523885fe8436215c72d0181e81e34379918246fc0ef75852990f9"
      ]
    }
  }'
4

4. Parse Outcomes & Render Visual Verification Status

Read the structured enum value returned from the API service. Update the client view container to reflect the deterministic ledger evaluation output cleanly using descriptive status layouts.

API Request Schema Specifications

Your interface layer must accurately frame the request body definitions before transmitting data packages to the network node validation server.

Technical Payload Fields

updateId
string
required
The unique cryptographic ledger hash tracking indicator marking the target execution sequence window.
transfer
object
required
The private core transaction details package required to process cryptographic balance sheet verification.

Show Properties Block

sender
string
required
The specific identity fingerprint address origin string dispatching the digital asset.
receiver
string
required
The destination identity fingerprint address authorized to take legal custody of the asset.
amount
string
required
Alphanumeric decimal string specifying the absolute transfer token unit volume.
instrumentId
object
required
Identifies the core registry blueprint details governing the tokenized asset.
requestedAt
string (date-time)
required
ISO-8601 string mapping the exact timestamp historical moment the transfer workflow initialization sequence fired.
executeBefore
string (date-time)
required
The drop-dead expiration constraint timeline timestamp bounding the transaction validity lifecycle on-chain.
inputHoldingCids
array of strings
required
The explicit array of structural tracking contract identifiers used directly to fund the ledger movement.

UI Component States & Response Handling

To ensure alignment with network expectations, map the direct string responses from the DA Registry API into intuitive, color-coded dashboard indicators for your end users.
  • Success Resolution
  • Pending Evaluation
  • Failure Response
  • Validation Error Handling

Rendering UI Target: Balanced Verification Badge

The transaction variables are authenticated against the ledger state and indicate successful contract finalization.
Response Sample
{
  "status": "Success"
}
Interface Suggestion: Render a prominent checkmark module highlighting an “Indisputably Settled” receipt statement. Users can confidently treat this transaction as settled.