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—anUpdateID 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. 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. 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. 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"
]
}
}'
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
The unique cryptographic ledger hash tracking indicator marking the target execution sequence window.
The private core transaction details package required to process cryptographic balance sheet verification.
Show Properties Block
Show Properties Block
The specific identity fingerprint address origin string dispatching the digital asset.
The destination identity fingerprint address authorized to take legal custody of the asset.
Alphanumeric decimal string specifying the absolute transfer token unit volume.
Identifies the core registry blueprint details governing the tokenized asset.
ISO-8601 string mapping the exact timestamp historical moment the transfer workflow initialization sequence fired.
The drop-dead expiration constraint timeline timestamp bounding the transaction validity lifecycle on-chain.
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.
Rendering UI Target: Progress Indicator Badge
The parameters represent a structurally valid ledger entry path, but the contract steps are still moving through live execution queues.Response Sample
{
"status": "Pending"
}
Interface Suggestion: Inform users that the asset transfer is in an intermediate lifecycle phase (e.g., a two-step transfer workflow where the destination party hasn’t formally accepted an open offer yet). Advise re-evaluating once final settlement commits.
Rendering UI Target: Terminated Execution Badge
The proof data successfully resolved to a historical ledger event path, but the workflow instructions failed execution or were rejected.Response Sample
{
"status": "Failure"
}
Interface Suggestion: Update the dashboard to inform the user that the transaction request was intentionally canceled, explicitly aborted by a counterparty, or simply expired on-chain.
Rendering UI Target: Input Mismatch Panel (HTTP 400)
The input fields failed lookup, are missing parameters, or contain structured mismatches against live on-chain transactional tracking parameters.Response Sample
{
"error": "invalid_request",
"error_description": "Something went wrong"
}
Data Privacy Guardrail Rule: The backend deliberately zero-discloses tracking details to prevent unwanted transaction state farming by unauthorized actors. Ensure your Explorer frontend handles errors elegantly with a general “Invalid Proof Credentials” module rather than displaying custom data logs.
Was this page helpful?
YesNo
⌘I