Blockchain Verification
Verifying a Record
Authenticated users can verify any blockchain-anchored document from within the Vilulia platform. Verification confirms that the document has not been altered since it was anchored: the platform recomputes the SHA-256 hash of the current document and compares it to the hash recorded on the blockchain. A match means the document is unaltered; a mismatch means it has been modified since anchoring.
What you'll learn
- How to verify an anchored record from within a case
- What you need to perform verification (authentication required)
- What a successful vs. failed verification means
- How to look up a record by transaction hash or entity ID
- How the retry and pending-transaction system works
Authentication requirement
All blockchain verification endpoints in Vilulia require authentication. There is no public verification URL where anyone can verify a document without logging in. To verify a document, you must be an authenticated user with access to the case or entity being verified, and your plan must have the blockchain_verification feature enabled.
Verifying from a case record
For arbitration awards, blockchain verification status is shown inline in the Awards tab of the case. Once an award is issued and anchored, the panel displays the transaction hash (tx_hash), block number, confirmed date and time, network name, and a link to view the transaction on PolygonScan. If an award has not yet been anchored, an Anchor on Blockchain button is shown. There is no separate Verification tab in the case record.
Verification is supported for settlements, awards, documents (final/executed only), and training certificates. Evidence uploads, drafts, and working documents are not recorded on chain.
Training certificate QR codes
PDF training certificates include a QR code that encodes a verification URL in the form https://vilulia.com/verify/{verification_code}. Scanning the QR code opens the verification flow for that certificate. Authentication is still required to complete the lookup.
Verification by transaction hash or entity ID
Any anchored record can be verified by transaction hash (GET /verification/tx/{tx_hash}) or by entity type and ID (for example, GET /verification/settlement/{id}, GET /verification/award/{id}, GET /verification/document/{id}, or GET /verification/certificate/{id}). Admins can also browse the Blockchain Verification History page in the admin dashboard, which lists all anchored records in a filterable, paginated table and supports CSV export.
Pending transactions
When a transaction is submitted to the Polygon network but confirmation times out, the system saves it as pending and a background task continues to monitor it. Anchoring status can be polled via GET /verification/anchor-status/{log_id} or by entity using GET /verification/anchor-status/by-entity/{type}/{id}. Status values are: pending, processing, submitted, confirmed, and failed.
Retry logic
The anchoring system retries transient failures (network errors, timeouts, rate limits, 5xx responses) automatically using exponential backoff with full jitter, up to three attempts by default. Permanent failures — insufficient funds, invalid signature, execution reverted — are not retried. If all retries are exhausted, the record is marked failed and can be re-submitted manually.
Verification results
A verified result means the SHA-256 hash of the current document matches the hash recorded on the Polygon blockchain at the time of anchoring — confirming the document has not been modified. A failed verification means the hashes do not match, indicating that the document content differs from what was anchored. A failed verification should be investigated immediately.
If the blockchain service is unavailable at verification time, the platform falls back to comparing the expected hash against the locally stored hash in the database and notes this in the response.
Related articles
Can't find what you're looking for? Contact Support