CC Ledger Community API
Canton Network infrastructure for developers. CC Ledger provides 7 on-chain action endpoints — attest, attest-mutual, transfer, lock, unlock, mint, settle. Every API call creates an immutable on-chain record on Canton MainNet with full cryptographic proof.
Built by Blueprint, a Hivemind Capital Partners ecosystem company. Blueprint operates a Canton Network validator on Global MainNet. Every API key includes 50 trial transactions — deposit CC for paid tier at 100 RPM. Hold CCL for discount.
Why Use CC Ledger
- On-chain proofs, no gas fees — No wallet setup, no gas fees. 50 trial transactions included with every API key (max 25/day). Deposit CC for paid tier at 100 RPM (2.0 CC base per standard action, 5.0 CC base for mutual attestation). Hold CCL for discount.
- 7 action types — Attest, mutual-attest, transfer, lock, unlock, mint, settle. Each maps to a real-world economic event and creates a Daml smart contract on Canton MainNet.
- Cryptographic proof — Every response includes contract ID, transaction ID, ledger offset, synchronizer ID, and effective timestamp. Independently verifiable.
- Canton Network MainNet — Not a testnet or simulation. Your records exist on the same global synchronization domain used by major financial institutions.
- Self-service registration — One POST request returns an API key instantly. No approval process, no KYC, no waiting.
- SHA-256 data hashing — Your raw data never leaves your system. Send a hash, get on-chain proof. Privacy-preserving by design.
- Query and verify — Retrieve any past action by ID, filter by app name or type, get aggregate statistics. Full audit trail.
- No infrastructure to manage — Blueprint runs the Canton validator, Daml runtime, and database. 50 trial transactions to get started. Paid tier unlocks unlimited throughput at 2.0 CC base per standard action (5.0 CC base for mutual attestation). Hold CCL for discount. You just call the API.
Canton Network
Canton Network is a privacy-enabled, interoperable blockchain network designed for institutional use. Unlike public chains, Canton uses Daml smart contracts with built-in privacy — participants only see data they are authorized to see.
How Canton Works
- Daml smart contracts — Contracts are written in Daml, a purpose-built language for multi-party workflows. Each contract has explicit visibility and authorization rules.
- Global synchronization domain — All participants share a single source of truth without exposing private data. Transactions are atomic across parties.
- Validators — Network participants run validator nodes that host applications and process transactions. Blueprint operates one of these validators.
- Participant nodes — Each validator runs a participant node connected to the global domain. CC Ledger submits commands through Blueprint’s participant.
What Gets Recorded On-Chain
When you call any CC Ledger action endpoint, the backend creates a Daml contract on Canton MainNet. The key data recorded on-chain:
| Data | Description |
|---|---|
| dataHash | Your SHA-256 hash — the cryptographic proof of your data |
| submittedBy | Your application name |
| batchId | Unique record identifier (UUID) |
| gateway | Blueprint’s Canton party ID (signatory) |
| timestamp | When the record was committed on-chain |
Once created, the on-chain record is immutable. It exists on Canton MainNet for the lifetime of the network. No one — including Blueprint — can modify or delete it.
Architecture
CC Ledger is a Spring Boot application running alongside Blueprint’s Canton validator. Here is the complete request flow from your application to on-chain proof.
- Validate API key & check rate limit
- Store action record in gateway DB
- Build Daml contract command & submit to Canton
splice-validator-participant-1:5001 · Submit & wait for commitInfrastructure
| Component | Detail |
|---|---|
| Cloud | AWS EC2, us-east-1 (Virginia) |
| TLS | Caddy with automatic HTTPS (Let’s Encrypt) |
| Backend | Spring Boot on Eclipse Temurin 21, Docker container |
| Database | PostgreSQL (operational cache — API keys, action records, audit trail) |
| Canton SDK | Daml, Splice |
| Auth | Auth0 M2M client credentials for participant gRPC |
| Validator | Blueprint validator on Canton Global MainNet |
| Daml package | ccledger-blueprint.dar |
Source of Truth
The Canton ledger is the source of truth for all CC Ledger operations. Registration bindings, deposits, actions, CCL mints, and mutual attestations are all recorded as immutable Daml contracts on Canton MainNet. The PostgreSQL database is an operational cache for fast queries and rate-limit enforcement. If the DB were lost, the Canton ledger retains all records.
On-Chain Proof Model
CC Ledger is infrastructure — you define your own data model. The 7 action primitives (attest, mutual-attest, transfer, lock, unlock, mint, settle) are generic building blocks. You choose the action type that matches your use case and provide your own dataHash.
What CC Ledger records on-chain for every action:
- Your
dataHash(SHA-256 hex) — the cryptographic fingerprint of your data - Your
appName— identifies which application submitted the record - A unique record ID and timestamp
What you get back:
contractId— the Canton contract identifier (immutable, permanent)transactionId— the Canton transaction hashledgerOffset— global sequence number on the ledgersynchronizerId— which Canton domain processed iteffectiveAt— when the Canton sequencer committed it
Your raw data never touches our servers. You hash it locally, send the hash, and receive an immutable on-chain proof. Build any verification, audit, or compliance workflow on top of these primitives.
Getting Started
From zero to on-chain proof in three steps. No wallet, no gas fees. 50 trial transactions included.
Base URL
Step 1: Register for an API Key
One POST request. No approval needed. Returns your key instantly.
cantonParty) at registration to unlock the full platform. Get it from your Loop wallet. Without it, you are limited to trial credits only — there is no way to deposit CC, earn CCL Builder Rewards, or receive action discounts. With a cantonParty: CC deposits are auto-credited to your balance, CCL tokens are minted to your wallet, and you get the discount curve. You can add it later, but you will need it before your first CC deposit.
The cantonParty field is optional at registration but required before your first CC deposit. If not set, the first deposit permanently binds the sender party.
X-API-Key header for all subsequent requests. Your key includes 50 trial transactions (max 25/day) — no deposit needed to start.
Step 2: Call Any Action Endpoint
Choose from 7 action types. Here’s an example using attest:
Step 3: Get On-Chain Proof
Every successful action returns a proof object with the on-chain record:
The contractId uniquely identifies the Daml contract on Canton MainNet. The transactionId is the Canton transaction hash. The ledgerOffset is the global sequence number. These are permanent, immutable records.
API Reference
15 REST endpoints. All return JSON. Base URL: https://ccledger.theblueprint.xyz. For the interactive explorer with try-it-out, see the API Explorer.
X-API-Key header. The registration and stats endpoints are public (no auth).Error responses: See the Error Responses section below for the exact format returned by each HTTP status code (400, 401, 404, 429, 500).
Registration
Register for a community API key. No authentication required. Rate limited to 3 registrations per IP per 24 hours. Provide your Canton party ID (from your Loop wallet) at registration — CC deposits must come from this party, and CCL tokens are minted to this address on-chain.
Request body:
| Field | Type | Required | Description |
|---|---|---|---|
appName | string | Yes | Your application name (3–100 characters) |
cantonParty | string | No (strongly recommended) | Your Canton party ID from your Loop wallet (max 512 characters). Provide this to unlock the full platform: CC deposits, CCL Builder Rewards, and action discounts. Without it, you are limited to trial credits only. You can add it later, but you will need it before your first CC deposit. If not set, the first deposit permanently binds the sender party. |
contactEmail | string | No | Optional contact email address |
Response (201 Created):
Action Endpoints
All 7 action endpoints follow the same pattern. They accept JSON with your action-specific data, create an immutable on-chain record on Canton MainNet, and return the cryptographic proof.
Required Fields (all action types)
| Field | Type | Required | Description |
|---|---|---|---|
appName | string | Yes | Your application identifier (1–100 characters) |
dataHash | string | Yes | SHA-256 hash of the data (hex-encoded, max 128 characters) |
Each action type accepts additional optional fields. See the Action Types section for a complete breakdown per action.
Common Response Fields
| Field | Type | Description |
|---|---|---|
actionId | string (UUID) | Unique identifier assigned by CC Ledger |
actionType | string | The action type (attest, attest-mutual, transfer, lock, unlock, mint, settle) |
status | string | confirmed when on-chain, failed on ledger error |
appName | string | Your application name (echoed back) |
dataHash | string | Your data hash (echoed back) |
mintedAt | string (ISO 8601) | When the action was confirmed on-chain |
proof.contractId | string | Canton contract ID (hex-encoded) |
proof.transactionId | string | Canton transaction hash (hex-encoded) |
proof.ledgerOffset | integer | Global ledger sequence number |
proof.synchronizerId | string | Canton synchronizer (global-domain::...) |
proof.effectiveAt | string (ISO 8601) | Timestamp when the transaction was committed by the Canton sequencer |
proof.packageId | string or null | Daml package identifier. Always null for community action proofs. |
proof.templateId | string or null | Fully qualified Daml template identifier. Always null for community action proofs. |
rewardMarkerCreated | boolean | Reserved field, always false. |
Record a data attestation. Use for audit trails, compliance records, data integrity proofs. Additional fields: dataOwner, dataId, description.
Create a mutual attestation proposal that requires the attestor party to co-sign. Costs 5.0 CC. Required field: attestorParty (Canton party ID of the co-signer). Additional fields: dataOwner, dataId, description, assetType.
Record an asset transfer. Additional fields: sender, recipient, assetId, amount, currency, reference.
Record an asset lock. Additional fields: owner, assetId, amount, currency, duration, reference.
Record an asset unlock. Additional fields: owner, assetId, amount, currency, lockId, reference.
Record a token mint. Additional fields: owner, tokenId, tokenName, amount, metadata, reference.
Record a trade settlement. Additional fields: parties, settlementId, amount, currency, reference.
Query Endpoints
List past actions. Requires API key. Supports query parameters for filtering.
| Parameter | Type | Description |
|---|---|---|
appName | string | Filter by application name |
actionType | string | Filter by type: attest, attest-mutual, transfer, lock, unlock, mint, settle |
dataOwner | string | Filter by data owner |
status | string | Filter by status: pending, confirmed, failed |
reference | string | Filter by reference identifier |
page | integer | Page number, 0-indexed (default: 0) |
size | integer | Page size (default: 50, max: 100) |
Response: Returns a JSON array of action detail objects.
Get a single action by its UUID. Returns the full action detail record with on-chain proof. Returns 404 if the action does not exist or does not belong to your API key.
Public aggregate statistics. No authentication required. Returns total counts and a breakdown by action type.
Response:
Public time-series chart data for analytics dashboards. No authentication required. Returns daily counts within the requested time window.
| Parameter | Type | Description |
|---|---|---|
window | string | Time window: 7d, 30d (default), or 90d |
Response:
Balance & Credits
Prepay with CC or CCL — both are accepted at the same value. Send CC from your Loop wallet and your balance is auto-credited within seconds. Or send CCL to CC Ledger at 1 CCL = 1 CC. Community tier includes 50 trial actions (max 25/day) at no cost. Paid tier (100 RPM) costs 2.0 CC per standard action (5.0 CC for mutual attestation). Simply holding CCL in your wallet gives you a discount on every action.
Pricing (deterministic, no hidden costs)
| Action Type | Base Cost |
|---|---|
| Standard (attest, transfer, lock, unlock, mint, settle) | 2.0 CC (hold CCL for discount) |
| Mutual attestation (attest-mutual) | 5.0 CC (hold CCL for discount) |
| Trial actions (50 included) | 0 CC |
CCL Discount Curve
Your discount is based on the CCL you hold in your Canton wallet (cclOnchainHoldings), tracked in real-time from the Canton ledger. Formula: discount = 50% × (1 - 1/(1 + cclOnchainHoldings/200))
| CCL Held | Discount | CC/Action | CC/Mutual |
|---|---|---|---|
| 0 | 0% | 2.000 | 5.000 |
| 50 | 10% | 1.800 | 4.500 |
| 100 | 16.7% | 1.667 | 4.167 |
| 200 | 25% | 1.500 | 3.750 |
| 500 | 35.7% | 1.286 | 3.214 |
| 1,000 | 41.7% | 1.167 | 2.917 |
Discount increases with more CCL held (up to ~50%). Two ways to use CCL: hold in your wallet for a discount on action costs, or send to CC Ledger as prepay credit (1 CCL = 1 CC). Your discount is shown in GET /balance (cclOnchainHoldings, discountedCostPerAction, discountedCostPerMutual, discountPercent). If you transfer CCL away, your discount drops. If you receive more, it increases — all in real-time.
Unified balance endpoint. Returns CC balance, CCL balance, on-chain CCL holdings (cclOnchainHoldings — the real-time CCL balance in your Canton wallet that drives your discount), tier, rate limit, base and discounted cost per action, CCL mint progress (cantonParty, cclTotalMinted, cclActionsTowardNext, cclNextMilestone), discount info, and recent transaction history. Your discount is based on the CCL you hold in your Canton wallet, tracked in real-time from the Canton ledger. Requires API key.
Response:
Deposit address:
blueprint-validator-1::1220daab58adcae026bd2ca7ad95014f678bda3ce2a6f91b744cf3ec3d87f09deeacHow to get CC: Buy Canton Coin on Coinbase → transfer to your Loop wallet → send to the Blueprint validator address above. Balance auto-credits. Tier auto-upgrades.
Manual fallback. The primary deposit method is automatic (see above). Use this endpoint only if auto-detection hasn’t processed your transfer yet. Verifies the transaction via gRPC Ledger API (extracts amount from contract arguments, verifies sender is signatory, filters non-transfer contract types). Sender party must match your registered cantonParty (returns 403 if mismatch). First deposit binds the sender party if not set at registration. Automatically upgrades your key from community (10 RPM) to paid tier (100 RPM). Returns 409 if the transaction was already credited.
Response (200 OK):
Action Types
Each action type represents a different class of economic event. Choose the type that best matches what your application does. All types produce the same on-chain proof format.
| Action | Use Case | Additional Fields |
|---|---|---|
| Attest | Data integrity proofs, audit trails, compliance records, document hashes, KYC/AML attestations | dataOwner, dataId, description |
| Attest-Mutual | Two-party non-repudiation, counterparty co-signature, dual-signatory attestations (5.0 CC) | attestorParty (required), dataOwner, dataId, description |
| Transfer | Asset transfers, token movements, payment records, fund flows between accounts | sender, recipient, assetId, amount, currency, reference |
| Lock | Escrow, collateral locks, time-locked deposits, vesting schedules | owner, assetId, amount, currency, duration, reference |
| Unlock | Release from escrow, collateral release, vesting unlocks | owner, assetId, amount, currency, lockId, reference |
| Mint | Token creation, NFT minting, certificate issuance, credential generation | owner, tokenId, tokenName, amount, metadata, reference |
| Settle | Trade settlement, payment finalization, batch close, invoice settlement | parties, settlementId, amount, currency, reference |
Computing a Data Hash
JavaScript / Node.js
Python
Bash
On-Chain Proof
Every action response includes a proof object. These fields are your cryptographic evidence that the record exists on Canton MainNet.
| Field | Format | Description |
|---|---|---|
contractId | Hex string (~140 chars) | Unique identifier of the Daml contract on the ledger. This is the canonical reference for the on-chain record. |
transactionId | Hex string (68 chars) | Canton transaction hash. Identifies the specific transaction that created the contract. |
ledgerOffset | Integer | Global monotonically-increasing sequence number. Every transaction on the participant gets a unique offset. |
synchronizerId | global-domain::1220... | The Canton synchronization domain where the transaction was committed. global-domain = Canton MainNet. |
effectiveAt | ISO 8601 timestamp | The timestamp at which the transaction was committed by the Canton sequencer. |
packageId | String or null | Daml package identifier. Always null for community action proofs; populated for enterprise (ledger submission) proofs. |
templateId | String or null | Fully qualified Daml template identifier (e.g., Module:Template). Always null for community action proofs. |
What Makes This Proof Trustworthy
- Immutability — Once a Daml contract is created on Canton, it cannot be modified or deleted by anyone, including Blueprint.
- Consensus — The transaction was committed through Canton’s global synchronization protocol, validated by the sequencer and mediator.
- Ordering — The
ledgerOffsetgives a total ordering of all events. You can prove that record A was created before record B. - Timestamping — The
effectiveAttimestamp is set by the Canton sequencer, not by Blueprint’s application.
Trial Credits & CCL Builder Rewards
Trial Credits
Every new API key includes 50 trial transactions (max 25 per day). Trial credits let you test all action endpoints — attest, transfer, lock, unlock, mint, settle, and attest-mutual — without depositing CC.
- 50 total trial credits per API key, non-renewable
- 25/day cap to prevent abuse (resets daily UTC)
- Automatic refund if a trial action fails on-chain
- Check remaining credits via
GET /api/v1/community/balance(trialCreditsRemaining,trialDailyUsed)
When trial credits are exhausted, action endpoints return 402. Send CC from your Loop wallet to the Blueprint validator (auto-credited) to upgrade to paid tier for unlimited actions. POST /deposit is available as a manual fallback.
CCL Builder Rewards
Every 10th paid action (not trial) mints 1 CCL token on-chain to your Canton party, tracked per API key.
- 1 CCL per 10 paid actions (attest, transfer, lock, unlock, mint, settle, attest-mutual)
- Discount based on real on-chain holdings (
cclOnchainHoldings), tracked in real-time from Canton ledger - Two ways to use: HOLD in wallet for discount, or SEND to CC Ledger for 1:1 CC prepay credit
- Holding CCL gives you a discount; sending CCL to CC Ledger converts it to CC credit at 1:1
- See CCL Builder Rewards for full details on the discount curve, transfers, and pricing
CCL Builder Rewards
CCL is the CIP-56 builder rewards token for the CC Ledger ecosystem. Two ways to use CCL: hold in your wallet for a discount on CC-priced actions, or send to CC Ledger as prepay credit (1 CCL = 1 CC). Your discount is based on the CCL you hold in your Canton wallet — tracked in real-time from the Canton ledger via DepositWatcherService.
On-Chain Details
| Property | Value |
|---|---|
| Template | Gateway.CCLToken.CCLToken |
| Package ID | be3e1f78d0578eb75029a3c8d938fdbb290da4bd797b1b8bc8304afef4941749 |
| Network | Canton Global MainNet |
| CIP-56 assetType | ccl |
| Choices | Transfer (holder → any party), Redeem (holder → Blueprint for CC credit) |
| Prepay value | 1 CCL = 1 CC (accepted via /ccl/deposit) |
Developers can verify CCL tokens on-chain using the package ID and template above against any Canton participant.
cclOnchainHoldings). Transfer CCL away = discount drops. Receive more = discount increases.Discount Curve
Discount is based on cclOnchainHoldings — the real-time on-chain CCL balance in your Canton wallet. Formula: discount = 50% × (1 - 1/(1 + cclOnchainHoldings/200))
| On-chain CCL | Discount | CC/Action | CC/Mutual |
|---|---|---|---|
| 0 | 0% | 2.000 | 5.000 |
| 10 | 2.4% | 1.952 | 4.881 |
| 50 | 10% | 1.800 | 4.500 |
| 100 | 16.7% | 1.667 | 4.167 |
| 200 | 25% | 1.500 | 3.750 |
| 500 | 35.7% | 1.286 | 3.214 |
| 1,000 | 41.7% | 1.167 | 2.917 |
Discount increases with more CCL held (up to ~50%).
Earning CCL
CCL tokens are minted automatically. Every 10 CC-paid actions (attest, transfer, lock, unlock, mint, settle, attest-mutual) mints 1 CCL on-chain to your Canton party. Trial actions do not count — only CC-paid actions earn CCL. Your Canton party is set at registration or captured from your first CC deposit.
Ownership & Transfers
CCL is a Daml contract on Canton MainNet held in your Loop wallet. You can transfer CCL to any Canton party or trade it on any Canton DEX. CCL is yours to hold, send, or trade. Transfers update your cclOnchainHoldings in real-time — your discount adjusts accordingly.
Send to CC Ledger as CC Credit
Send CCL to CC Ledger via POST /ccl/deposit at 1 CCL = 1 CC. Your CCL is converted to CC credit on your balance. Note: sending CCL to CC Ledger reduces your cclOnchainHoldings, which lowers your discount.
CCL Price
CCL is pegged to CC — Blueprint accepts CCL at 1 CCL = 1 CC. The price shown is the current CC market price.
Billing Order
When you submit an action, CC Ledger deducts in this order: CC balance (at discounted rate based on on-chain CCL holdings) → trial credits → 402 if all exhausted. CCL sent to CC Ledger via /ccl/deposit is converted to CC credit at 1:1, which is then used to pay for actions.
CCL Endpoint
CCL balance, on-chain CCL holdings (cclOnchainHoldings), mint progress, and your current discounted rates are included in the unified GET /api/v1/community/balance endpoint (see Balance & Credits above). The dedicated CCL endpoint below is for sending CCL to CC Ledger as CC credit.
Send CCL to CC Ledger as CC credit (1 CCL = 1 CC credit on your balance).
Response:
Error Responses
Error response formats vary by endpoint and status code. Below is the exact response body for each error condition.
400 Bad Request
Returned by the registration endpoint when the request body is invalid:
Returned by action endpoints when required fields (appName or dataHash) are missing or invalid:
401 Unauthorized
Returned when the X-API-Key header is missing or contains an invalid key. Note: the 401 response uses {"message":"..."} only — there is no error field.
404 Not Found
Returned by GET /api/v1/community/actions/{actionId} when the action ID does not exist or does not belong to your API key:
429 Too Many Requests
Returned when you exceed the rate limit. The API-key rate limiter includes retryAfterSeconds in the JSON body and a Retry-After HTTP header. The registration rate limiter returns a standard error response.
500 Internal Server Error
Returned when the Canton ledger operation fails (e.g., participant unavailable). Returns an ActionResponse with status: "failed" and a null proof:
Security Model
CC Ledger is designed with a minimal trust surface. Here is exactly what the API can and cannot do.
- Your data is private — Only you can see your actions and balance. No one else can access your data.
- On-chain proof, off-chain data — You send a hash, not raw data. CC Ledger never sees your underlying records. The hash is stored on-chain as proof, but the data it represents remains entirely within your system.
- Rate limiting — Community tier: 10 RPM (50 trial TX, max 25/day). Paid tier: 100 RPM. Registration: 3 per IP per 24 hours.
- TLS everywhere — All connections use HTTPS with automatic certificate management. No plaintext data in transit.
- Deposit verification — CC deposits are verified on-chain via the Canton Ledger API. The sender’s Canton party must match your registered party. Amounts are extracted from on-chain contract arguments, not user-supplied.
Rate Limits
Rate limits protect the shared infrastructure and ensure fair access for all developers.
| Endpoint | Limit | Window |
|---|---|---|
| Action endpoints (attest, attest-mutual, transfer, lock, unlock, mint, settle) | 10 RPM (community) / 100 RPM (paid) | Per minute, per API key |
| Query endpoints (actions list, single action) | 10 RPM (community) / 100 RPM (paid) | Per minute, per API key |
| Registration | 3 requests | Per 24 hours, per IP |
| Stats | No limit | Public endpoint |
When rate limited, the API returns HTTP 429 with a JSON body. For API-key rate limits, the response includes a retryAfterSeconds field. See Error Responses for exact response formats.
MCP Server
CC Ledger exposes 15 MCP tools via Streamable HTTP. AI agents (Claude Desktop, Claude Code, LangChain, CrewAI, etc.) can connect and call the API with zero friction.
Endpoint
Tools (15)
| Tool | Description | Auth |
|---|---|---|
register_api_key | Register for an API key | No |
get_stats | Public network statistics | No |
submit_attest | Record attestation on-chain | apiKey |
submit_attest_mutual | Create mutual attestation proposal | apiKey |
submit_transfer | Record asset transfer | apiKey |
submit_lock | Record asset lock | apiKey |
submit_unlock | Record asset unlock | apiKey |
submit_mint | Record token mint | apiKey |
submit_settle | Record trade settlement | apiKey |
get_balance | CC + CCL balance, on-chain CCL holdings (drives discount), tier, CCL mint progress, discounted rates | apiKey |
deposit_cc | Manual deposit fallback (CC deposits are auto-detected) | apiKey |
list_actions | List past actions | apiKey |
get_action_by_id | Get single action by UUID | apiKey |
get_action | Alias for get_action_by_id | apiKey |
deposit_ccl | Deposit CCL as CC credit | apiKey |
Connect from Claude Desktop / Claude Code
Add to your claude_desktop_config.json or project .mcp.json:
AI Discovery Files
- llms.txt — LLM-optimized overview (llmstxt.org spec)
- llms-full.txt — Complete reference for agents
- .well-known/agent.json — A2A agent card
- openapi.json — OpenAPI 3.1 spec with x-llm-hint annotations
FAQ
GET /api/v1/community/balance.blueprint-validator-1::1220daab...deeac) — auto-credited within seconds. Or send CCL to CC Ledger via POST /ccl/deposit at 1 CCL = 1 CC. Either way, your tier upgrades to paid automatically.false. You can ignore it.contractId or transactionId from the proof object. These can be looked up against any Canton participant connected to the global domain. You can also query your actions back through the API using GET /api/v1/community/actions/{actionId}.Gateway.CCLToken.CCLToken, package: be3e1f78...4941749). You earn 1 CCL per 10 paid actions, minted to your Canton party (Loop wallet). Your discount is based on the CCL you hold in your Canton wallet (cclOnchainHoldings), tracked in real-time from the Canton ledger — discount = 50% × (1 - 1/(1 + cclOnchainHoldings/200)). If you transfer CCL away, your discount drops; if you receive more, it increases. Two ways to use CCL: (1) HOLD in wallet for discount, or (2) SEND to CC Ledger for 1:1 CC prepay credit (1 CCL = 1 CC). See CCL Builder Rewards for full details.Verification
How to verify that your on-chain records are real and immutable.
Via the API
Query any action by its ID to retrieve the full proof:
Via the Stats Endpoint
Verify aggregate counts match your expectations:
Data Hash Verification
To verify that a record matches your original data:
- Retrieve the action from the API using its
actionId - Recompute the SHA-256 hash of your original data
- Compare the hash against the
dataHashfield in the response - If they match, the on-chain record corresponds to your original data
Canton Participant Verification
For maximum independence, you can verify contracts directly against a Canton participant. The contractId in the proof object is the canonical Daml contract identifier on the global domain. Any Canton participant with visibility to Blueprint’s contracts can look up this ID.
Ready to build?