Provifier

Trustless off-chain data integrity with on-chain hash commitments.

Prove your data hasn't changed. No middleman.

Provifier lets any application hash its data and commit that hash on-chain. Verification is trustless: re-hash locally, compare to the blockchain. No data goes on-chain — only 64-character SHA-256 hashes.

How it works

1 Hash your data

Your app calls Provifier.hashRecord(table, rowId, data). Domain-separated SHA-256 ensures hashes are unique per table and row — no cross-protocol collisions.

2 Commit hash on-chain

The hash is signed and submitted to Sui, Solana, Ethereum, Polygon, or Base. Server-side with a private key, or client-side via the user's wallet — your choice.

3 Verify anytime

Re-hash the data, fetch the on-chain event, compare. If they match, the data is authentic and hasn't been tampered with since commitment. Fully trustless — the blockchain is the referee.

Key features

Multi-chain

Sui, Solana, Ethereum, Polygon, Base

Merkle batching

Commit thousands of records in one transaction

Client-side signing

Users commit from their own wallet (Sui)

Domain separation

Hashes scoped by table + row ID

Zero on-chain data

Only 64-char hashes, never your data

MIT licensed

Free, open source, no lock-in

Fully decentralized

Hashes live on-chain forever. Verify without provifier.com

Quick start

npm install @provifier/sdk
const { Provifier } = require('@provifier/sdk');

const p = new Provifier({
  chain: 'sui',          // or 'solana', 'ethereum', 'polygon', 'base'
  network: 'testnet',
  privateKey: process.env.SUI_PRIVATE_KEY,
  packageId: '0x...',   // Sui only — deployed Move contract
});

// Commit a record
const receipt = await p.commit({
  table: 'documents',
  rowId: 'doc-7',
  data: documentContent,
});
console.log(receipt.txDigest);    // Sui transaction digest
console.log(receipt.explorerUrl); // https://suiscan.xyz/testnet/tx/...

// Verify later — trustless
const result = await p.verify({
  table: 'documents',
  rowId: 'doc-7',
  data: documentContent,
  txDigest: receipt.txDigest,
});
console.log(result.valid); // true

Batch commits (Merkle tree)

Commit many records in a single transaction. Each entry gets a Merkle proof for individual verification.

const batch = await p.commitBatch({
  entries: [
    { table: 'users', rowId: '1', data: JSON.stringify(user1) },
    { table: 'users', rowId: '2', data: JSON.stringify(user2) },
    { table: 'users', rowId: '3', data: JSON.stringify(user3) },
  ],
});

// Verify one entry from the batch
const result = await p.verify({
  table: 'users',
  rowId: '2',
  data: JSON.stringify(user2),
  merkleProof: batch.receipts[1].merkleProof,
  merkleRoot: batch.receipts[1].merkleRoot,
  txDigest: batch.txDigest,
});
console.log(result.valid); // true

Client-side wallet signing

For dApps where the user commits from their own wallet — maximum trust, zero server dependency.

const p = new Provifier({
  chain: 'sui',
  network: 'mainnet',
  packageId: '0x...',
  // No privateKey — client-side mode
});

const { transaction, hash } = p.buildCommitTx({
  table: 'documents',
  rowId: 'doc-7',
  data: documentContent,
});

// Pass to user's wallet (Sui Wallet, Suiet, zkLogin)
const result = await wallet.signAndExecuteTransaction({
  transaction,
});

Multi-chain

Sui

Move contract with typed events

Client-side wallet signing

~$0.001 per commit

Recommended
Solana

SPL Memo — no deploy needed

Lowest possible cost

~$0.0005 per commit

Zero setup
Ethereum

Input data memo — no contract

Highest security guarantees

~$0.50+ per commit

Self-host / SDK
Polygon

Input data memo — no contract

EVM-compatible, low cost

~$0.01 per commit

Self-host / SDK
Base

Input data memo — no contract

Coinbase L2, fast finality

~$0.001 per commit

Zero setup

Use cases

dApps with off-chain data

Games, social platforms, and NFT marketplaces store most data off-chain for cost and speed. Provifier lets users independently verify that their inventory, profile, or listing data hasn't been silently altered by the platform — re-hash locally, compare to the blockchain.

Users commit from their own wallet — the platform can't deny or revoke proof of what was stored.
Compliance & audit trails

Financial records, healthcare data, and legal documents require proof that data existed in a specific state at a specific time. Provifier anchors SHA-256 hashes with on-chain timestamps — auditors verify directly against the blockchain without trusting your internal systems.

Merkle batching keeps costs minimal — commit thousands of records for under $0.01.
Supply chain integrity

Hash shipment manifests, quality certificates, and IoT sensor readings at each checkpoint in your supply chain. Each commit creates an immutable waypoint — if any record is altered between checkpoints, re-hashing reveals the tampering instantly. No centralized authority required.

Works across organizations — each party commits independently, verification is trustless.
Configuration drift detection

Commit hashes of your infrastructure configs, Terraform state, Kubernetes manifests, and deployment artifacts at release time. On any subsequent audit, re-hash the live files and compare — unauthorized modifications are detected with cryptographic certainty, not just heuristic diff tools.

Integrates into CI/CD pipelines — commit hashes as a post-deploy step.
Document notarization

Contracts, research papers, IP filings, and creative works can be timestamped with a single hash commit. The on-chain timestamp proves the document existed in its exact form at that moment — establishing priority, preventing backdating, and creating admissible digital evidence.

No personal data on-chain — only a 64-character hash that reveals nothing about the content.
Database integrity monitoring

Periodically hash critical database tables and commit the root. If a breach, insider threat, or software bug silently corrupts records, the next verification cycle catches it — even if the attacker covered their tracks in application logs. Works with any database that can export rows.

Combine with Merkle batching to verify individual rows without re-hashing the entire table.

Sui Move contract

Deploy once, use forever. The contract emits events — no stored objects, cheapest possible on-chain operation.

// Two event types:
// HashCommitted  — single record: committer, table, row_id, data_hash, timestamp
// BatchCommitted — Merkle batch: committer, merkle_root, leaf_count, timestamp

cd contracts/sui
sui move build
sui client publish --gas-budget 100000000

API reference

Method Returns Description
Provifier.hash(data) string SHA-256 with provifier:v1: domain prefix
Provifier.hashRecord(table, rowId, data) string Domain-separated hash per table/row
commit({ table, rowId, data }) Promise<Receipt> Commit a single hash on-chain
commitBatch({ entries }) Promise<BatchResult> Merkle batch commit
verify({ ... }) Promise<VerifyResult> Re-hash + on-chain comparison
buildCommitTx({ ... }) { transaction, hash } Unsigned Sui tx for wallet signing

Hosted API

Don't want to manage keys and chain connections? Use the hosted API at provifier.com. Same SDK — just point it at our endpoint instead of running your own.

Self-hosted (all 5 chains)

Deploy your own instance

Your keys, your chain costs

Sui, Solana, Base, Polygon, Ethereum

Free forever (MIT)

provifier.com

No setup — just get an API key

We handle chain transactions

Sui, Solana, Base

1 credit per commit ($0.01)

Verify: always free

Pay-as-you-go

25 free credits/week
# Hosted API — no SDK needed, just curl
curl -X POST https://provifier.com/v1/commit \
  -H "X-Provifier-Key: pvf_live_..." \
  -H "Content-Type: application/json" \
  -d '{"table":"docs","rowId":"doc-7","data":"Hello world"}'

# Verify (free, no auth)
curl https://provifier.com/v1/verify/SuiTxDigest...

Decentralization & self-hosting

Hash commitments are on-chain events. Once committed, they exist permanently on the blockchain and can be verified by anyone without provifier.com.

Existing commitments survive

Hash events are immutable on-chain data. If provifier.com goes offline, every commit ever made remains verifiable. Re-hash locally, fetch the on-chain event from any RPC, compare. No server needed.

Self-host or use the SDK directly

The SDK talks directly to blockchains — no provifier.com dependency. Point it at your own RPC and sign with your own keys. The hosted API is a convenience layer, not a requirement.

No admin keys or kill switch

On Sui, the Move contract emits events — no stored objects, no admin capability. On Solana/EVM, commits use memo instructions with no contract authority. Nobody can alter or delete committed hashes.

Verification is always free

Verification never touches provifier.com. It's a local SHA-256 hash compared to a public on-chain event. Any blockchain explorer, RPC endpoint, or SDK instance can do it. Zero cost, zero trust.

Testing

cd packages/sdk
node --test test/sdk.test.js
# 25 tests — hashing, Merkle trees, commit/verify, tamper detection
# Uses mock chain adapters — no network access needed