Payment Rails CROPS Dashboard
Unaudited, unvetted, experimental. Do not use as a reference. AI-researched ratings that may be wrong; not advice or a statement of fact about any provider. Full disclaimer
Pending review. 1150 of 1150 ratings not yet checked by a human. Do not rely on unreviewed ratings.

Hinkal

transferEthereum Assessed on Ethereum (chain 1)hinkal.io

Ratings apply to this deployment only. Treat them as unverified for other chains. Why this deployment: Hinkal's Supported Chains page lists Ethereum (1) first among ten mainnets, and the Hinkal contract 0x7cb6…Cfa4 is the only deployment with a Sourcify exact match (chain 1, created at block 25543753). The SDK's deploy-data-ethMainnet names the same Hinkal, helper and timelock addresses. Unit: Hinkal.sol, its HinkalHelper and verifiers, governed by HinkalTimelockController 0xF043…b7D0. Excluded: the same address on Arbitrum, Polygon, Base, BNB, Tempo, Arc and Robinhood, plus Solana, TRON and the Emporium/wallet adapters.

At a glance

Category
Protocols for privacy-preserving transfers
Chain
EthereumEthereum
CROPS tally
5 of 23 hold up · 1 no evidence
Security audits
7 published
Offered
All but 4 countries
Last edited
2026-10-13 · History
  1. Censorship Resistance1 WeakWeakest: Admin pause or freeze powers; Reliance on hosted services; Neutral settlement, disclosed filtering; Token and chain freeze risks disclosed
  2. Open0 FailsWeakest: Can be self-hosted
  3. Free0 FailsWeakest: Open-source licences; No proprietary dependencies
  4. Privacy0 FailsWeakest: Endpoints can be changed
  5. Security0 FailsWeakest: Funds safe if provider disappears; Secrets and webhook handling

Where it is offered

Offered everywhere except the countries listed. Checked 2026-10-09. Not scored.

The Terms of Service bar persons in a Restricted Territory: Crimea, the so-called Donetsk and Luhansk People's Republics (regions of Ukraine; Ukraine as a whole is not listed), Cuba, Iran, North Korea and Syria. They add "any other country to which the United States embargoes goods or imposes similar sanctions", which they do not enumerate. Hinkal also reserves the right to block IP addresses. These terms govern Hinkal's Interface (site, apps, SDK and API). The Ethereum contracts have no country or address check (HinkalHelper.sol), so the protocol itself can be called from anywhere, subject to the proving-key dependency described in C2 and S4.

Excluded countries (4): Cuba, Iran, North Korea, Syria

Evidence (2)1 verified · 1 documented
  1. Verified

    performHinkalChecks has no country or address-list check. The only caller rule is the relayer allowlist.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/HinkalHelper.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    Terms of Service, section 3, define the Restricted Territory and bar persons in it from using the Interface.

    hinkal.io/tos

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Censorship Resistance

Who can block valid use, and can users route around them?

1 WeakPillar rating: weakest of 5
1 of 5 Partial or better

What would raise this pillar

  • Admin pause or freeze powers reaching Partial: Such a role exists and is held by a Safe of at least 2-of-3 with disclosed signers, no enabled module or guard that bypasses the threshold, behind a timelock at least as long as the documented user exit, with its scope documented in code or NatSpec.
  • Reliance on hosted services reaching Partial: Required intermediaries exist and their self-host code is public, but no fallback is configured by default.
  • Neutral settlement, disclosed filtering reaching Partial: Settlement contracts are neutral and edge filtering is disclosed, but it cannot be bypassed (C2 below 2).
  • Token and chain freeze risks disclosed reaching Partial: Enumerated in code, assumptions not stated.

Admin pause or freeze powers

Can any privileged role stop, freeze, or block payments through the settlement contracts, and how is that role constrained? C1

1 Weak

Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

The contracts have no explicit pause, freeze or blacklist. A timelocked role can still stop settlement: it can swap the helper that computes every proof's public inputs, swap or remove verifiers, and edit the relayer allowlist. HinkalTimelockController holds that power on Ethereum, with a 6-hour delay. Its proposer, executor, canceller and admin is a 2-of-3 Safe with no modules or guard. We found no disclosure of the signers, and no document sets the delay against a user exit. The factory 0x0c61…923c also still holds DEFAULT_ADMIN_ROLE, but its bytecode has no call path to Hinkal's admin functions. That contract is unverified, so we judge this from its function selectors only. Scored 1: a multisig behind a timelock, but the signers are undisclosed.

Evidence (5)5 verified
  1. Verified

    HINKAL_HELPER_MANAGER can replace hinkalHelper at any time (setHinkalHelper, L46-L50). transact() calls hinkalHelper.performHinkalChecks and uses its return value as the proof's public inputs (Hinkal.sol L38-L56), so the helper can block every transaction.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/HinkalBase.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Verified

    The owner can register or remove any verifier (registerVerifiers, removeVerifier). The helper's owner manages the relayer allowlist (RelayStore.sol L30-L57). The contracts contain no pause, freeze or address blacklist.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/VerifierFacade.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  3. Verified

    owner() of Hinkal is HinkalTimelockController 0xF043…b7D0 at block 26153565. The timelock also holds HINKAL_HELPER_MANAGER and DEFAULT_ADMIN_ROLE, and owns the helper 0x5f91…7C1b (helper owner() read at the same block).

    0x7cb6…Cfa4 on eth.blockscout.com

    0x7cb6…Cfa4 explorer · Sourcify · block 26153565 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  4. Verified

    HinkalTimelockController getMinDelay() returns 21600 s (6 h), raised from 180 s in a MinDelayChange event. PROPOSER, EXECUTOR, CANCELLER and TIMELOCK_ADMIN are all held by Safe 0x4d28…D7fB.

    0xF043…b7D0 on eth.blockscout.com

    0xF043…b7D0 explorer · Sourcify · block 26153565 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  5. Verified

    Safe 1.4.1, getThreshold() 2 of 3 owners (0xBdc7…1942, 0x6c7F…6Fd7, 0xe799…66B6). getModulesPaginated(0x1,10) returns no modules, and the guard slot is zero.

    0x4d28…D7fB on eth.blockscout.com

    0x4d28…D7fB explorer · Sourcify · block 26153565 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Settle without the provider

Can a payer or payee complete settlement by calling the public contracts directly, without the provider's API, signer, or relayer? C2

2 Partial

Best evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

A payer can deposit, and a holder can transfer or withdraw, by calling the public Hinkal contract directly with relay = 0, without Hinkal's relayer or a provider signature. The address is documented, and the ABI comes from the verified source. Building the proof needs the circuit wasm and zkey files. The SDK downloads these from Hinkal's own server (wallet-prodv12.hinkal.io/verifiers-v4/); they are in no repository, and only the circuit source is published. Judgment call: the direct contract path meets anchor 3 in substance. We take 2 because a direct call needs proving artifacts that only Hinkal hosts. No transaction was run.

Evidence (4)3 verified · 1 documented
  1. Verified

    performHinkalChecks accepts either relay == 0 with originalSender == msg.sender (the user submits the call) or a relay on the allowlist. A user can therefore call transact directly, with no relayer and no provider signature.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/HinkalHelper.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Verified

    _internalTransact pulls deposits from msg.sender and pays withdrawals to externalAddress. A relay fee is charged only when relay is non-zero.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/Hinkal.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  3. Verified

    Sourcify exact_match. The Sourcify source of Hinkal.sol, HinkalBase.sol, Merkle.sol and VerifierFacade.sol is identical to the repo at 61b6839a apart from a trailing newline. The EIP-1967 implementation slot is zero, so this is not a proxy.

    0x7cb6…Cfa4 on sourcify.dev

    0x7cb6…Cfa4 explorer · Sourcify · block 26153565 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  4. Documented

    The contract addresses page lists Hinkal.sol at 0x7cb6…Cfa4 for Ethereum and the other EVM chains.

    hinkal-team.gitbook.io/hinkal/security-and-compliance/smart-contract-addresses.md

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Reliance on hosted services

Does the payment flow require a relayer, paymaster, bundler, or API that only the provider runs? C3

1 Weak

Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Settlement does not need Hinkal's relayer: the contract allows self-submission, and the SDK has a relayer-off mode. The Merkle path can be rebuilt from RPC events instead of the snapshot server. Every proof, however, needs the circuit wasm and zkey files that the SDK fetches from a hardcoded Hinkal URL, and they are published nowhere else. Remote proving through Hinkal's enclave is the SDK default. The enclave source is published, without a licence. The relayer and the snapshot and data servers are closed. Scored 1: a required provider-hosted artifact, with no public copy and no configurable fallback.

Evidence (2)1 verified · 1 documented
  1. Verified

    The contracts repository states that it contains no tests, mocks, deployment scripts or off-chain infrastructure. The relayer, snapshot and data servers are not published.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · README.md

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    In the published SDK, common/src/functions/snarkjs/constant.mjs L4 builds every circuit wasm/zkey URL from BACK_END_URL + /verifiers-v4/. In common/src/constants/server.constants.mjs L105, BACK_END_URL is the hardcoded https://wallet-prodv12.hinkal.io, chosen by build mode and not by config. Relayers are optional (withdraw(..., isRelayerOff)), and proofs can be built locally (generateProofRemotely, Hinkal.mjs L81, default true).

    registry.npmjs.org/@hinkal/common/0.3.16

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Neutral settlement, disclosed filtering

Is the settlement layer free of address or geographic filtering, and is any filtering at the edge disclosed and avoidable? C4

1 Weak

Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

The deployed contracts carry no address or country filter. Screening (Chainalysis) is disclosed in the docs, terms and privacy policy, and the direct contract path (C2) should bypass it. The docs describe enforcement that the contracts do not show: proofs checked against live Chainalysis state, and flagged funds limited to public withdrawal. That enforcement can only sit in Hinkal's closed backend or relayer. The SDK names a /check-risk route and a compliance-server path, but neither the screening logic nor its effect on self-submitted proofs is visible in code. Scored 1: the filtering is disclosed in docs only, and where it is enforced cannot be shown from code.

Evidence (3)1 verified · 2 documented
  1. Verified

    The only caller check in the deployed helper is the relayer allowlist. A grep of contracts/ at this commit finds no sanctions list, blacklist or country check. The deployed helper source on Blockscout is identical to this file.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/HinkalHelper.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    The compliance page says every deposit is screened against Chainalysis and that flagged depositors can only withdraw publicly to the original address.

    hinkal-team.gitbook.io/hinkal/security-and-compliance/compliance.md

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  3. Documented

    The Terms of Service say wallet addresses using the Interface are screened against sanctions and high-risk lists, and that Hinkal may block IP addresses.

    hinkal.io/tos

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Token and chain freeze risks disclosed

Are the tokens and chains the rail depends on enumerated, with their issuers' freeze powers and sequencer assumptions stated to payees? C5

1 Weak

Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Users are told plainly that token issuers can blacklist the Hinkal contract. The token list itself, however, is a hosted API response, documented in the API reference but not enumerated in code or onchain. Ethereum L1 has no sequencer, so no sequencer assumption is needed for this unit. Judgment call: issuer freeze risk is disclosed, and the token list exists only in the documented API, so we score 1 (docs only).

Evidence (3)1 verified · 2 documented
  1. Verified

    USDC isBlacklisted(Hinkal 0x7cb6…Cfa4) returns false at block 26153552. Hinkal held 12,397 USDC and 469.6 USDT at that block.

    0xA0b8…eB48 on etherscan.io

    0xA0b8…eB48 explorer · Sourcify · block 26153552 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    The Risks page tells users that USDC, USDT and other tokens can blacklist the Hinkal contract, which would lock that token inside the pool.

    hinkal-team.gitbook.io/hinkal/security-and-compliance/risks.md

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  3. Documented

    Supported tokens are served by the hosted API endpoint /supported-tokens, with its OpenAPI schema on the docs site. The contract has no token allowlist.

    hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/supported-tokens.md

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Open

Is the whole stack visible?

0 FailsPillar rating: weakest of 4
1 of 4 Partial or better

What would raise this pillar

  • Can be self-hosted reaching Weak: Docs exist; reproduction not attempted, or failed with blockers listed.

Contracts verified onchain

Does the deployed bytecode match public source, and can a third party rebuild it? O1

2 Partial

Best evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Every settlement contract we checked is verified. The main contract is an exact match on Sourcify, and the helper and the registered verifiers are fully verified on Blockscout. The repo source matches the verified source. There is no build script, so anchor 3 is out of reach. Scored 2.

Evidence (2)2 verified
  1. Verified

    Hinkal is an exact_match (creation and runtime) on Sourcify, solc 0.8.28 with optimizer runs 500. The helper 0x5f91…7C1b, verifiers 0x8c16…6c36 and 0xd7d9…a091, and the timelock have no Sourcify record. Blockscout shows the helper and verifiers fully verified and the timelock partially verified.

    0x7cb6…Cfa4 on sourcify.dev

    0x7cb6…Cfa4 explorer · Sourcify · block 26153565 · checked 2026-10-09

  2. Verified

    The repository has no build configuration or deployment script, so nobody can reproduce the deployed bytecode from it.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · README.md

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Whole stack published

Are the SDK, frontend, backend or API, indexer, and deploy scripts all public? O2

1 Weak

Best evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Public: contracts, circuits, the enclave-api source and several SDK wrappers. Not public: the main TypeScript SDK's source (only its npm build is published), the relayer, the snapshot, data and compliance servers, the Hinkal Pay and Wallet frontends, and the proving keys. Scored 1.

Evidence (2)1 verified · 1 documented
  1. Verified

    Contracts and circuits are public. Other repos in the org are SDK wrappers (Go, iOS, WDK), demo apps, and the enclave-api source published as an attestation.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts

    commit 61b6839aa8 · checked 2026-10-09

  2. Documented

    The main TypeScript SDK is published only as an npm build (MIT, no repository field). The backend servers it calls (server, snapshot-server, data-server, compliance-server, relayer) are not in any public repository.

    registry.npmjs.org/@hinkal/common/0.3.16

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Can be self-hosted

Can a stranger reach a working deployment from the README? O3

0 Fails

Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

No published path leads to a working self-hosted deployment. The contracts repo has no build or deploy scripts, the proving keys are not published, and the relayer and indexing servers are closed. Reproduction was not attempted. Scored 0: the README itself states the path is absent.

Evidence (1)1 verified
  1. Verified

    The README says the repository contains no tests, mocks, deployment scripts or off-chain infrastructure.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · README.md

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Interfaces and data export

Are ABIs, event schemas, an API schema, and a payee data export in a non-proprietary format all in the repo? O4

1 Weak

Best evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Contract interfaces and events are in the repo. The API schema (OpenAPI) and the export feature are documented on the hosted docs site only, and no export format is versioned with code. Judgment call: ABIs are in the repo, but the API schema is not, so we take the lower anchor, 1.

Evidence (2)1 verified · 1 documented
  1. Verified

    Interfaces and events (NewCommitment, Nullified, BlockedUtxosCreated) are in the repo, from which the ABI can be derived.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/types/IHinkalBase.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    The docs offer viewing keys and a downloadable transaction history. The API's OpenAPI schema is on the hosted docs site only.

    hinkal-team.gitbook.io/hinkal/security-and-compliance/compliance.md

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Free

Does the license actually let a third party fork, modify, and run it?

0 FailsPillar rating: weakest of 3
1 of 3 Partial or better

What would raise this pillar

Open-source licences

Does every repository needed to run the product carry an OSI-approved license? F1

0 Fails

Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

The settlement contracts and circuits are BUSL-1.1, with no LICENSE file stating its terms. The proving keys are a required component that is closed. The Go and iOS SDKs and the enclave source have no licence. Scored 0: a required component is closed, and the critical contracts are source-available.

Evidence (1)1 verified
  1. Verified

    The contracts carry SPDX-License-Identifier BUSL-1.1, which is source-available. The repository has no LICENSE file, so the BUSL parameters (change date, additional use grant) are not stated.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/Hinkal.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Protection against relicensing

Can the provider unilaterally relicense future versions, and has it committed not to? F2

2 Partial

Best evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

No CLA and no licence-stability commitment. The contracts have been BUSL-1.1 in this repository from the start, so we found no relicensing event. Scored 2. The licence is already source-available, which F1 covers.

Evidence (1)1 verified
  1. Verified

    The root tree at this commit has only README.md, circuits/ and contracts/. The README makes no licence commitment, and there is no CLA or CONTRIBUTING file.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · README.md

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

No proprietary dependencies

Does a production deployment need a proprietary plugin or hosted-only service? F3

0 Fails

Sets the pillar ratingBest evidence: DocumentedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

A third party running the open parts still needs Hinkal-hosted proving keys for the deployed verifiers. Running a fork with new keys would need a new trusted setup and new contracts, and the BUSL licence restricts that. Scored 0.

Evidence (1)1 documented
  1. Documented

    common/src/functions/snarkjs/constant.mjs L4 points every proving artifact at Hinkal's backend (/verifiers-v4/). No repository publishes the zkeys, so no third party can build proofs for the deployed verifiers without Hinkal's server.

    registry.npmjs.org/@hinkal/common/0.3.16

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Privacy

What can an observer learn, and did the user knowingly choose it?

0 FailsPillar rating: weakest of 5
1 of 5 Partial or better

What would raise this pillar

Tracking and analytics

Do the SDK, widget, or frontend ship analytics, telemetry, error reporting, or fingerprinting? P1

1 Weak

Best evidence: DocumentedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

The apps run Google Analytics, Microsoft Clarity session replay and RB2B, disclosed and gated by consent according to the policy. The frontends are closed, so the gate could not be checked in code. The SDK also reports each deposit to Hinkal's data server by default, and the policy does not describe that. Judgment call: analytics are present and disclosed in policy, so we score 1. The undisclosed SDK deposit report would support 0, but it is first-party and covers deposits that are already public onchain.

Evidence (2)2 documented
  1. Documented

    The privacy policy lists Google Analytics and Microsoft Clarity (session replay) on the site and apps, and RB2B visitor identification, loaded only after cookie consent.

    hinkal.io/privacy-policy

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    In the published SDK, data-structures/Hinkal/hinkalDeposit.mjs L56 posts admin data after each deposit to the data server (/emit-tx-public-data). Per functions/pre-transaction/constructAdminData.mjs, that data is the chain, token, amount, timestamp, hashed depositor address and tx hash. The privacy policy does not list it.

    registry.npmjs.org/@hinkal/common/0.3.16

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Data collected beyond payment

Does the flow collect anything beyond addresses, amounts, token, and chain? P2

1 Weak

Best evidence: DocumentedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

The protocol itself needs only addresses, amounts and tokens. The apps add analytics and wallet-address screening. Deposits over $10,000 in Hinkal's own apps need a CEX-ownership or zkKYC attestation. All of this is disclosed in policy and docs, not in code. Scored 1.

Evidence (2)2 documented
  1. Documented

    Deposits over $10,000 through Hinkal Wallet and Hinkal Send need an Integrity Check, either a CEX account attestation or zkKYC through a partner.

    hinkal-team.gitbook.io/hinkal/security-and-compliance/compliance-1.md

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    The policy lists usage data (IP, location, device), business identification, an optional email, and the public wallet address, which is screened through Chainalysis.

    hinkal.io/privacy-policy

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Payments linkable onchain

What do calldata and events reveal about who paid whom for what? P3

2 Partial

Best evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Private transfers inside the pool reveal only nullifiers and new commitments, and recipients use stealth addresses. Deposits reveal depositor, token and amount. Withdrawals reveal recipient, token and amount. Proofless deposits carry a plaintext orderId in calldata, and their UTXOs are emitted in plaintext. Amounts are arbitrary, not fixed denominations, so amount and timing matching across entry and exit is a behavioural risk; we note it here and do not score it. Judgment call: the core shielded transfer fits anchor 3, but the documented orderId and plaintext-UTXO path adds linkage, so we score 2.

Evidence (2)2 verified
  1. Verified

    Private outputs are emitted as commitments with encrypted outputs. Only onchain-created UTXOs (proofless deposits, external actions) are emitted with their amount, token and stealth address in plaintext.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/HinkalBase.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Verified

    prooflessDeposit takes a string orderId that is unused onchain. The code comment says off-chain listeners read it from calldata to match the transaction to an order.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/Hinkal.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Third parties in the payment flow

Which third parties see a request during a payment, and can they be swapped out? P4

1 Weak

Best evidence: DocumentedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

In the default SDK flow, Hinkal's backend sees each request: Merkle siblings, risk checks and deposit reports. Chainalysis screens the depositing address. Swap and bridge flows add CoinGecko, LI.FI and OKX. These parties are named in the policy or visible in the npm build, but the endpoints are fixed by build mode and cannot be swapped by config. Scored 1.

Evidence (2)2 documented
  1. Documented

    The policy names Chainalysis for screening, plus Google, Microsoft Clarity, RB2B, Cloudflare and AWS.

    hinkal.io/privacy-policy

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    The SDK's server.constants.mjs L105 hardcodes Hinkal's server, snapshot-server, data-server and compliance-server paths. It also names pro-api.coingecko.com, LI.FI and OKX routes (swaps and bridges).

    registry.npmjs.org/@hinkal/common/0.3.16

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Endpoints can be changed

Can RPC and indexer URLs be changed, and is the indexer code public? P5

0 Fails

Sets the pillar ratingBest evidence: DocumentedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

The RPC comes from the user's wallet provider. Hinkal's snapshot, indexer and data endpoints are hardcoded per build, with no config option, and the indexer code is not public. Scored 0, matching the common failure where the RPC is configurable but the indexer is hardcoded.

Evidence (2)2 documented
  1. Documented

    API/getServerURL.mjs picks the server, snapshot-server and data-server URLs from a build-time deployment mode. HinkalConfig (documented in the TypeScript SDK page) has no option for a server or indexer URL. RPC access goes through the user's ethers/wagmi provider.

    registry.npmjs.org/@hinkal/common/0.3.16

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    HinkalConfig options are caching, the cache path, generateProofRemotely, disableMerkleTreeUpdates and tronChainOverride. None of them sets an endpoint.

    hinkal-team.gitbook.io/hinkal/hinkal-sdk/sdk-description.md

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Security

Who can cause loss, lock users in, or change the rules?

0 FailsPillar rating: weakest of 6
1 of 6 Partial or better · 1 no evidence

What would raise this pillar

Who holds funds in transit

Who holds funds between payer and payee, and can the provider redirect them? S1

1 Weak

Best evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

The pool is a non-upgradeable contract with no sweep function. Still, the timelock (Safe 2-of-3, 6-hour delay) can replace the helper that computes public inputs and the verifiers that check proofs, and either could redirect pooled funds. The docs give no exit procedure tied to the delay. Judgment call: in effect this is an escrow whose logic the provider can change behind a short timelock, which matches anchor 1 better than 2.

Evidence (2)2 verified
  1. Verified

    Funds are held by the Hinkal contract. hinkalHelper() returns 0x5f91…7C1b, not the documented helper 0x62Af…03F5 from the constructor, so the helper has been swapped once. The timelock holds HINKAL_HELPER_MANAGER (hasRole returns true).

    0x7cb6…Cfa4 on eth.blockscout.com

    0x7cb6…Cfa4 explorer · Sourcify · block 26153565 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Verified

    transact() verifies the proof against public inputs returned by the replaceable helper, using a verifier looked up in the owner-managed verifierMap. A malicious helper or verifier swap could accept a proof that pays out funds it should not.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/Hinkal.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Who can upgrade the code

Who can change the contract code, and with how much notice? S2

2 Partial

Best evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Hinkal itself is not upgradeable, but swapping the helper and verifiers changes its behaviour as much as an upgrade would. That authority sits with a 6-hour timelock controlled by a 2-of-3 Safe with no modules or guard. We found no disclosure of the signers and no notice channel named in the repo. Scored 2: a multisig with a timelock, but undisclosed signers and no notice channel.

Evidence (3)3 verified
  1. Verified

    getMinDelay() returns 21600 s. Safe 0x4d28…D7fB holds PROPOSER_ROLE (hasRole true) and every other timelock role.

    0xF043…b7D0 on eth.blockscout.com

    0xF043…b7D0 explorer · Sourcify · block 26153565 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Verified

    The Safe guard slot is zero, getModulesPaginated returns an empty list, and the threshold is 2 of 3.

    0x4d28…D7fB on eth.blockscout.com

    0x4d28…D7fB explorer · Sourcify · block 26153565 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  3. Verified

    Hinkal has no proxy (EIP-1967 implementation slot zero), but the helper and verifiers it calls can be replaced by the timelock.

    0x7cb6…Cfa4 on sourcify.dev

    0x7cb6…Cfa4 explorer · Sourcify · block 26153565 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Token approval scope

How large an allowance does the SDK ask users to grant, and for how long? S3

1 Weak

Best evidence: DocumentedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

The SDK asks for an exact-amount approval to the Hinkal contract. That fits anchor 3 in substance, but the only source is the npm build output; there is no source repository at a commit, which makes this documented-tier evidence. Judgment call: capped at 1 by the evidence tier, not by the behaviour.

Evidence (1)1 documented
  1. Documented

    In the published SDK, functions/web3/functionCalls/approveToken.mjs L15-L21 approves exactly the deposit amount (approve(hinkal, amount)), and first resets a non-zero USDT allowance on Ethereum. The Hinkal contract pulls exactly amountChanges[i] (Hinkal.sol L182-L187).

    registry.npmjs.org/@hinkal/common/0.3.16

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Funds safe if provider disappears Derived

If the provider disappears tomorrow, do payees keep their funds and the ability to keep settling? S4

0 Fails

Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Derived from S1=1, C2=2, C3=1 and O3=0. The contract would accept a self-submitted withdrawal (C2), and funds cannot be pulled out except through a valid proof. But a proof needs proving keys that only Hinkal serves (C3). The timelock can still change the helper and verifiers (S1), and nothing to self-host has been published (O3). A user who has not cached the zkeys depends on Hinkal's server staying online to withdraw. Scored 0.

Evidence (2)1 verified · 1 documented
  1. Verified

    The contract accepts a self-submitted withdrawal (relay == 0, originalSender == msg.sender).

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/HinkalHelper.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    Every withdrawal proof needs the zkey and wasm files that constant.mjs fetches from https://wallet-prodv12.hinkal.io/verifiers-v4/. No public repository has them.

    registry.npmjs.org/@hinkal/common/0.3.16

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Secrets and webhook handling

Are secrets kept out of client bundles and are webhooks signed and verified? S5

No evidence

Sets the pillar rating

UnreviewedAssessed by AI research agent (seed), 2026-10-09

No checkable evidence settles this yet, so it counts as 0.

Audits and bug bounty

Has the code been audited at a pinned commit, were findings fixed traceably, and is there a live bounty? S6

1 Weak

Best evidence: DocumentedChecked 2026-10-19 today

UnreviewedAssessed by AI research agent (seed), 2026-10-09

Six audit reports are linked from the docs, and a HackenProof bounty is listed as ongoing. We did not tie any report to the deployed commit (the contracts were deployed at block 25543753 in 2026), and no fixes are linked to commits in the repo. Scored 1: audit reports only.

Evidence (1)1 documented
  1. Documented

    The page lists reviews by zkSecurity, Zokyo, Quantstamp, Secure3, Hexens and Neodyme, mostly as Google Drive links. It lists a HackenProof bounty as ongoing and an Immunefi boost as completed.

    hinkal-team.gitbook.io/hinkal/security-and-compliance/security-audits.md

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

Security audits 7

Published audits and similar reviews of this provider's code, newest first. Context for the Audits and bug bounty rating, which scores them; this list does not change any rating, and an audit of older code says little about what is deployed now.

DateAuditorTypeScopeCovers deployed codeFindings
2026-08-28QuantstampAuditHinkal contracts and Circom circuits (MainEVMCircuit, MainEVMCircuitMin), including the Emporium controller and HinkalWallet at 6174378
Review ran 5-14 August 2026, after the Ethereum Hinkal contract was deployed (block 25543753, about 2026-07-16); the contract is not a proxy, so fixes that touch it would need a redeploy. Whether the deployed bytecode includes the fixes is not established.
Partly14 total: 1 medium, 8 low, 5 informational; 9 fixed, 3 acknowledged, 2 mitigated (fix review at ef86e0b3, 2026-08-24)
2026-07-17zkSecuritySecurity reviewPost-incident review of the circuit fix for the July 2026 double-spend (MainEVMCircuit and StealthAddressCalculator under libs/circom) plus automated scans; contracts out of scope at 37ba2894
The report states it is not a full audit and that no full audit has been performed on the current code. It records a security incident in early July 2026 caused by an under-constrained nullifying key; Hinkal redeployed after the fix.
PartlyConfirmed the fix closes the double-spend; 2 lower-severity defence-in-depth issues
2026-02-13NeodymeAuditHinkal Solana on-chain program (confidential settlement); zero-knowledge constructions out of scope
Solana program, outside the assessed Ethereum deployment.
No1 critical, 1 high, 2 low, 1 informational; fixes verified by the auditor
2025-04-01HexensAuditHinkal contracts (HinkalInLogic external calls), Circom circuits (SwapperM, access tokens) and relayer/server endpoints
The PDF is a findings list ("Hinkal Results 01/04/2025") that does not name the firm or a commit; the attribution to Hexens comes from Hinkal's audits page.
Unknown1 critical, 1 high, 3 medium, 5 low, 1 informational; no fix status given
2024-09-06zkSecurityAuditHinkal Solidity contracts (hardhat/contracts, staking external action, Connext bridging) and Circom circuits (libs/circom) at 117e8ad
zkSecurity's 2026 post-incident report says the codebase has changed meaningfully since this engagement.
No2 medium, 2 low, 2 informational
2024-02-20ZokyoPenetration testHinkal TypeScript codebase, server, relayer and dApp endpoints (December 2023) at 258716071b
Off-chain code that is not public, so it cannot be compared with what runs today.
Unknown1 medium (acknowledged), 8 low and 1 informational (resolved)
2023-09-29QuantstampAuditHinkal Protocol contracts and Circom circuits (Hinkal-Neo-Protocol) at 492ca00
Review of 14-24 August 2023 code; superseded by later versions and the 2026 redeployment.
No37 total: 4 high, 7 medium, 11 low, 8 undetermined, 7 informational; 32 fixed, 4 acknowledged, 1 mitigated

Compiled from: Hinkal's Security audits docs page (hinkal-team.gitbook.io/hinkal/security-and-compliance/security-audits), which links eight reports, mostly on Google Drive; the Hinkal-Protocol GitHub repos (no audits folder); reports.zksecurity.xyz; github.com/zokyo-sec/audit-reports; Quantstamp's certificate site. The Secure3 link (github.com/Secure3Audit/Secure3Academy/tree/main/audit_reports/Hinkal) returns 404 and no Secure3 report was found elsewhere, so it is not listed. The Immunefi boost and HackenProof programme are bug bounties, not audits. The audited commits named in the reports (117e8ad, 492ca00, 2587160, 6174378, 37ba2894) are in private repos (Hinkal-Protocol/Hinkal-Protocol, Novelty-Today/Hinkal-Neo-Protocol), not in the public Hinkal-Contracts-Circuits. Checked 2026-10-13. Only published reports are listed; private audits a provider mentions without a report are not.

Operational and procurement

Facts an institution's procurement, finance and security functions ask for. Separate from the CROPS ratings and never scored.

Group A: operational facts. Group B: 45 due-diligence controls derived from a UN agency's vendor requirements: 18 evidenced, 0 attested, 7 absent, 4 not applicable, 16 unknown. "Not applicable" means there is no operator to hold the control: it falls to whoever deploys the rail. How to read this.

Group A: operational facts

Fees

Evidenced
ComponentPaid byAmountBasis
providerpayerHinkal Pay and Prime 25 bps on sends and unshield; shielding freeHinkal Pay fees page; deducted by the hosted relayer; Hinkal can change it.
providerpayerHinkal Wallet 25 bps (shield, unshield, private sends), 35 bps swaps and bridgesHinkal Wallet fees page.
providerpayerAPI 10 bps Hinkal fee plus 0 to 100 bps partner fee, plus a flat relay feePartner fees page; deposits are free; on EVM the fee is grossed up so the recipient gets the full amount.
providernoneNone in the contract when the user submits the call (relay = 0)Hinkal.sol charges a relay fee only when a relayer is used.
networkpayerEthereum gas, paid directly or folded into the relay feeFees pages say network gas is separate; varies with gas price.

Three fee regimes. The self-submitted contract path (the CROPS unit) charges no protocol fee; the hosted apps and API charge per operation. The flat relay fee amount comes from GET /get-fee and is not published.

  1. Verified

    _internalTransact pays the relay fee only when relay is non-zero.

    Hinkal-Protocol/Hinkal-Contracts-Circuits · contracts/Hinkal.sol

    commit 61b6839aa8 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. DocumentedDrift

    Hinkal Pay fees table.

    hinkal-team.gitbook.io/hinkal/hinkal-pay/fees

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-12

  3. Documented

    Hinkal Wallet fees table.

    hinkal-team.gitbook.io/hinkal/hinkal-wallet/fees

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  4. Documented

    Partner fees and revenue share.

    hinkal-team.gitbook.io/hinkal/hinkal-partner/fees-and-revenue-share

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09

Custody model

Evidenced

Self-custody

Agrees with S1 (score 1): funds sit in the non-upgradeable Hinkal pool and only the note owner's proof releases them; the terms say Novelty Today has no custody. The disclosed risk is that the timelock (6 h, 2-of-3 Safe) can swap the helper or verifiers, and withdrawals need Hinkal-hosted proving keys (S4 = 0). WaaS managed wallets, which hold keys in Hinkal's enclave, are outside the unit.

Evidence shared with CROPS: S1 item 1, S1 item 2

UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09

Licences and registrations

Absent

Searched: FinCEN MSB registry (two names), the terms, privacy policy and compliance and security docs (no licence or regulator named). Not searched: state money-transmitter registers (NMLS), and registers outside the US. Integrity Check partners (zkMe, Galxe, AiPrise and others) were not looked up.

  1. Documented

    FinCEN MSB registrant search by legal name for "Novelty Today" and "Hinkal" returned no match (registry updated 10/05/2026).

    msb.fincen.gov

    checked 2026-10-09

  2. Documented

    Terms describe the company as a platform provider that does not hold, send or receive funds, and cite no licence.

    hinkal.io/tos

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09

Cash-out options

N/A: falls to the institution

Withdrawals send tokens to an address the user chooses; converting them to local currency is outside the protocol and outside Hinkal's hosted services.

Evidence shared with CROPS: C2 item 2

UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09

First deployment

Evidenced

2026-07-16 (block 25543753): Hinkal pool 0x7cb6…Cfa4 on Ethereum, created by factory 0x0c61…923c in tx 0x85f1ad3b…3284 (sender 0x0a0e…445c).

This is the deployment in the unit of assessment. Hinkal ran earlier contract versions; those are outside the unit and were not dated.

  1. Verified

    Blockscout shows tx 0x85f1ad3b…3284 in block 25543753 at 2026-07-16 07:32:11 UTC, a call to factory 0x0c61…923c whose internal create produced 0x7cb6…Cfa4; Sourcify's creation data gives the same transaction and block.

    0x7cb6…Cfa4 on eth.blockscout.com

    0x7cb6…Cfa4 explorer · Sourcify · block 25543753 · checked 2026-10-09

UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09

Operating entity

Evidenced

Novelty Today, Inc., US-DE

No company register entry; the Delaware search is CAPTCHA-protected.

  1. Documented

    Privacy policy names Novelty Today, Inc., Delaware, United States.

    hinkal.io/privacy-policy

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    Terms name Novelty Today Inc. as the company providing the site, apps, SDK and API, under Delaware law.

    hinkal.io/tos

    checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09

Security incidents

Evidenced

Absence of a found incident is not evidence that none occurred.

Searched: GitHub advisories, the docs (security audits, risks pages), terms and privacy policy. No incident affecting the Ethereum deployment found. Third-party incident databases were not used.

  1. Verified

    The contracts repository's published security advisories list is empty.

    api.github.com/repos/Hinkal-Protocol/Hinkal-Contracts-Circuits/security-advisories

    checked 2026-10-09

UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09

Product changes affecting users

Evidenced
  • 2026-08-25: HinkalTimelockController accepts ownership of the Hinkal pool (tx 0x3edad43a…fdaa) and its delay is set to 180 s. source
  • 2026-09-10: Timelock minimum delay raised from 180 s to 21,600 s (6 h), tx 0x406f2509…5681. source
  • 2026-09-24: Relayer allowlist changed through the timelock, addRelay 0xe6bd…ca5e and removeRelay of the deployer 0x0a0e…445c (txs 0x28dffe7c…b14d and 0xbc815985…491a). source

The helper swap from 0x62Af…03F5 to 0x5f91…7C1b (S1) happened before the timelock took ownership and was not dated. Docs and terms changes are not versioned except the privacy policy date (21 July 2026).

  1. Verified

    Timelock logs since block 25500000. MinDelayChange events at blocks 25830061 (0 to 180) and 25948466 (180 to 21600). CallExecuted events decode to acceptOwnership() on Hinkal (25830662), updateDelay(21600) (25948466), acceptOwnership() on 0x7958…17a1 (25997086), and addRelay and removeRelay on the helper (26048813, 26048968).

    0xF043…b7D0 on eth.blockscout.com

    0xF043…b7D0 explorer · Sourcify · checked 2026-10-09

UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09

Volume transacted (verified only)

Not observable

Hinkal's emitted events carry no public amount. NewCommitment has encrypted outputs and Nullified only a nullifier; NewTransaction and NewUtxo, which carry amounts, are declared in the ABI but no such logs exist from the pool since deployment (Blockscout, 2026-10-09). Deposit and withdrawal amounts appear only as ERC-20 Transfer logs on token contracts, which the spec cannot filter by counterparty.

Event topics counted from Blockscout getLogs over the pool since block 25543753 (NewCommitment 412, Nullified 343, BlockedUtxosCreated 99, VerifierRegistered 123, others administrative).

UnreviewedAssessed by AI research agent (operational), 2026-10-09

Group B: institutional due diligence

ControlStateWhat was found
Assurance and certifications
B1.1 ISO 27001, developer organisation
Is the organisation that develops the product ISO 27001 certified, and does the certificate name that entity?
Unknown
No ISO 27001 statement found for Novelty Today, Inc. in the docs (security audits, compliance, WaaS enclave pages), terms or privacy policy.
B1.2 ISO 27001, hosting and support organisation
Is the organisation that hosts and supports the service ISO 27001 certified in its own name, with a scope covering the service?
Unknown
The docs say the enclave runs in a GCP Confidential VM; no certification of Hinkal's own hosting and support organisation was found.
B1.3 SOC 2 Type II or ISAE 3000/3402 reports
Does the provider undergo periodic SOC 2 Type II or ISAE 3402 Type II assessments and make reports available?
Unknown
No SOC 2 or ISAE report or statement of availability found.
B1.4 Independent source-code security review before go-live
Was the application reviewed by an independent party before launch, and is the report linked?
EvidencedContracts and circuits reviewed by zkSecurity, Zokyo, Quantstamp, Secure3, Hexens and Neodyme (reports mostly as Google Drive links, not read); Immunefi boost completed and HackenProof bounty ongoing. No review of the hosted backend, relayer or enclave service is listed.
CROPS S6
B1.5 Penetration testing
Is the service penetration-tested before go-live and at least every three years, with results available?
Unknown
No penetration test of the hosted API, enclave or apps found.
B1.6 Vulnerability scanning cadence
Are the platform and the application scanned for vulnerabilities at least every six months?
Unknown
implied from the component list
Vulnerability and patch management
B2.1 Security contact and disclosure policy
Is there a published way to report a vulnerability (SECURITY.md, security.txt, or a disclosure page)?
Evidencedsome of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ no security policy file; Hinkal-Protocol/Hinkal-API-Enclave ✗ no security policy file; Hinkal-Protocol/hinkal-go ✗ no security policy file; Hinkal-Protocol/hinkal-ios-sdk ✗ no security policy file; Hinkal-Protocol/wdk-wallet-evm-hinkal ✓ security policy file: SECURITY.md; Hinkal-Protocol/Hinkal-Demo-App ✗ no security policy file
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
B2.2 Patch service levels
Does the provider commit to patch timelines for known vulnerabilities (the partner expects 30 days critical, 40 high, 90 medium)?
Unknown
implied from the component list
B2.3 Dependency and vulnerability scanning in CI
Do the public repositories run dependency or code scanning automatically?
Absentnone of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ no scanning config or workflow step found; Hinkal-Protocol/Hinkal-API-Enclave ✗ no scanning config or workflow step found; Hinkal-Protocol/hinkal-go ✗ no scanning config or workflow step found; Hinkal-Protocol/hinkal-ios-sdk ✗ no scanning config or workflow step found; Hinkal-Protocol/wdk-wallet-evm-hinkal ✗ no scanning config or workflow step found; Hinkal-Protocol/Hinkal-Demo-App ✗ no scanning config or workflow step found
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
Incident reporting and continuity
B3.1 Incident reporting commitment
Does the provider commit to notify customers of security or data incidents within a stated time (the partner expects 24 hours)?
Unknown
The privacy policy (effective 21 July 2026) and terms contain no commitment to notify users or customers of security or data incidents.
B3.2 Backups and restore testing
Are customer records backed up daily and restores tested on a schedule?
N/A: no such service
implied from the component list
B3.3 Recovery plan
Is there an approved and tested recovery plan for the service?
N/A: no such service
implied from the component list
B3.4 Status page and post-mortems
Does the provider publish service status and post-mortems for incidents?
Unknown
status.hinkal.io does not resolve and no status page or post-mortem is linked from the docs.
Identity and access (operator side)
B4.1 MFA for end users
Can or must end users protect accounts with multi-factor authentication?
N/A: no such service
implied from the component list
B4.2 MFA and separate accounts for privileged access
Is privileged access protected by MFA and kept on separate accounts?
Unknown
implied from the component list
B4.3 Periodic access reviews
Are user access rights reviewed at least annually and privileged accounts at least six-monthly?
Unknown
implied from the component list
B4.4 Segregation of duties and joiner-mover-leaver controls
Is there a documented segregation-of-duties model and a joiner-mover-leaver process?
Unknown
implied from the component list
B4.5 Session timeout
Are idle interactive sessions terminated after a defined period (the partner expects 60 minutes)?
N/A: no such service
implied from the component list
API and integration
B5.1 API authentication, browser to server
Which standard (OAuth 2.0, OpenID Connect, SAML, JWT) protects browser-to-server API calls?
EvidencedHosted API calls use a session (created by a wallet signature, bound to the address) plus a secp256k1 request signature per call bound to the route; no passwords, OAuth or JWT. Partner publishable keys work only from allowlisted Origins and are for attribution and fees, not authentication.
Applies only to the hosted API; the self-submitted contract path needs no API.
source 1 · source 2
B5.2 API authentication, server to server
Are server-to-server calls authenticated with keys or PKI certificates, and are keys scoped and rotatable?
EvidencedServer-side partner calls use a secret key (hk_sk_live_ plus 64 hex) with no origin check; keys can be turned off, renamed or revoked (effective within a minute), 10 per company, no scopes, no expiry or rotation schedule, and no test keys.
source 1
B5.3 Token expiry
Do API tokens expire, and within what period (the partner caps it at 120 minutes for public data, 30 otherwise)?
EvidencedAPI sessions are valid for 24 hours by default, with a caller-set expiry; partner API keys do not expire; partner portal sign-ins last 12 hours, with a 10-minute recent sign-in for sensitive actions.
source 1 · source 2
B5.4 Export controls
If an API exports data, does it limit volumes and log exports?
EvidencedPartner transaction CSV exports are capped at 10,000 rows and rate-limited per company; logging of exports is not stated. Users get viewing keys and a downloadable history (O4).
source 1
CROPS O4
Data protection and privacy governance
B6.1 Data classification and encryption
Does the provider state a data classification and enforce encryption at rest and TLS 1.2 or better in transit?
EvidencedThe privacy policy states encryption in transit, access controls and least-privilege access; the enclave behind the API and WaaS runs in a GCP Confidential VM (AMD SEV memory encryption) in a separate GCP project. No data classification, encryption at rest for other systems or TLS version is stated.
source 1 · source 2
B6.2 Production data kept out of test environments
Does the provider state that production or real personal data is not used in development and testing?
Unknown
implied from the component list
B6.3 Data retention and deletion on termination
What is retained, for how long, and is customer data removed on termination?
EvidencedGoogle Analytics 14 months from last visit; Microsoft Clarity recordings 30 days and saved data 9 months; visitor identification 12 months; contact details until unsubscribe or deletion request (email kept on a suppression list); on-chain data permanent. Deletion on request; no customer-termination clause.
source 1
CROPS P2
B6.4 Data protection impact assessment and roles
For systems holding personal data, has a DPIA been completed and are controller and processor defined?
EvidencedThe privacy policy is issued by Novelty Today, Inc. (Delaware) for its site, apps, SDK and API and names Chainalysis, analytics and hosting providers; it does not use controller or processor roles and mentions no DPIA. EEA/UK transfers use standard contractual clauses.
source 1
B6.5 Data processing or sharing agreement available
Can a customer obtain a data processing agreement or equivalent?
Unknown
implied from the component list
Logging and monitoring
B7.1 Audit logging
Are account changes, logins and activity on important records logged and retained?
Unknown
implied from the component list
B7.2 Central monitoring and endpoint detection
Are logs sent to a managed SIEM and is endpoint detection running on all platforms?
Unknown
implied from the component list
Hosting and network
B8.1 Hardened hosting
Are hosts hardened to a recognised benchmark, with only essential ports open, IDS/IPS, a WAF for internet-facing applications and tenant isolation?
Unknown
implied from the component list
B8.2 Deployment configuration and infrastructure as code
Does the repository ship reproducible deployment configuration (containers, IaC, Helm) that a self-hoster can harden?
Absentnone of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ no deployment configuration; Hinkal-Protocol/Hinkal-API-Enclave ✗ no deployment configuration; Hinkal-Protocol/hinkal-go ✗ no deployment configuration; Hinkal-Protocol/hinkal-ios-sdk ✗ no deployment configuration; Hinkal-Protocol/wdk-wallet-evm-hinkal ✗ no deployment configuration; Hinkal-Protocol/Hinkal-Demo-App ✗ no deployment configuration
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
Engineering practice in public repositories
B9.1 Default branch protected
Does the default branch require reviews and passing checks, with no direct pushes?
Absentnone of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ no branch rules visible (classic branch protection is not readable without push access); Hinkal-Protocol/Hinkal-API-Enclave ✗ no branch rules visible (classic branch protection is not readable without push access); Hinkal-Protocol/hinkal-go ✗ no branch rules visible (classic branch protection is not readable without push access); Hinkal-Protocol/hinkal-ios-sdk ✗ no branch rules visible (classic branch protection is not readable without push access); Hinkal-Protocol/wdk-wallet-evm-hinkal ✗ no branch rules visible (classic branch protection is not readable without push access); Hinkal-Protocol/Hinkal-Demo-App ✗ no branch rules visible (classic branch protection is not readable without push access)
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
B9.2 CI runs on pull requests
Does every pull request trigger automated checks?
Absentnone of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ no .github/workflows; Hinkal-Protocol/Hinkal-API-Enclave ✗ no .github/workflows; Hinkal-Protocol/hinkal-go ✗ no .github/workflows; Hinkal-Protocol/hinkal-ios-sdk ✗ no .github/workflows; Hinkal-Protocol/wdk-wallet-evm-hinkal ✗ no .github/workflows; Hinkal-Protocol/Hinkal-Demo-App ✗ no .github/workflows
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
B9.3 Tests run in CI
Do the CI workflows run the test suite?
Absentnone of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ test command in a workflow; Hinkal-Protocol/Hinkal-API-Enclave ✗ test command in a workflow; Hinkal-Protocol/hinkal-go ✗ test command in a workflow; Hinkal-Protocol/hinkal-ios-sdk ✗ test command in a workflow; Hinkal-Protocol/wdk-wallet-evm-hinkal ✗ test command in a workflow; Hinkal-Protocol/Hinkal-Demo-App ✗ test command in a workflow
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
B9.4 Coverage reported
Is test coverage measured and reported (the partner expects 85%)?
Absentnone of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ coverage tooling referenced; Hinkal-Protocol/Hinkal-API-Enclave ✗ coverage tooling referenced; Hinkal-Protocol/hinkal-go ✗ coverage tooling referenced; Hinkal-Protocol/hinkal-ios-sdk ✗ coverage tooling referenced; Hinkal-Protocol/wdk-wallet-evm-hinkal ✗ coverage tooling referenced; Hinkal-Protocol/Hinkal-Demo-App ✗ coverage tooling referenced
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
B9.5 Versioned releases
Are releases tagged with immutable semantic versions?
Evidencedsome of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ no tags; Hinkal-Protocol/Hinkal-API-Enclave ✗ latest tags: v20261015-1e529ff, v20261012-c49808e, v20261008-bab6aa1; Hinkal-Protocol/hinkal-go ✓ latest tags: v0.1.0; Hinkal-Protocol/hinkal-ios-sdk ✓ latest tags: 0.1.4, 0.1.3, 0.1.2; Hinkal-Protocol/wdk-wallet-evm-hinkal ✓ latest tags: v0.0.4; Hinkal-Protocol/Hinkal-Demo-App ✗ no tags
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
B9.6 Signed tags or commits
Are release tags or recent commits cryptographically signed?
Absentnone of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ 2 of 6 recent commits signed; Hinkal-Protocol/Hinkal-API-Enclave ✗ 0 of 10 recent commits signed; Hinkal-Protocol/hinkal-go ✗ 0 of 10 recent commits signed; Hinkal-Protocol/hinkal-ios-sdk ✗ 0 of 5 recent commits signed; Hinkal-Protocol/wdk-wallet-evm-hinkal ✗ 3 of 10 recent commits signed; Hinkal-Protocol/Hinkal-Demo-App ✗ 3 of 10 recent commits signed
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
B9.7 Changelog
Is a changelog maintained with the code?
Evidencedsome of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ no changelog or release notes; Hinkal-Protocol/Hinkal-API-Enclave ✓ 10 release(s) with notes; Hinkal-Protocol/hinkal-go ✗ no changelog or release notes; Hinkal-Protocol/hinkal-ios-sdk ✓ 2 release(s) with notes; Hinkal-Protocol/wdk-wallet-evm-hinkal ✓ CHANGELOG file; Hinkal-Protocol/Hinkal-Demo-App ✗ no changelog or release notes
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
B9.8 Contribution and branching model documented
Does the README or contribution guide state how changes are proposed, reviewed and released?
Evidencedsome of 6 repo(s): Hinkal-Protocol/Hinkal-Contracts-Circuits ✗ none found; Hinkal-Protocol/Hinkal-API-Enclave ✗ none found; Hinkal-Protocol/hinkal-go ✓ contribution section in README; Hinkal-Protocol/hinkal-ios-sdk ✗ none found; Hinkal-Protocol/wdk-wallet-evm-hinkal ✗ none found; Hinkal-Protocol/Hinkal-Demo-App ✗ none found
source 1 · source 2 · source 3 · source 4 · source 5 · source 6
Architecture documentation
B10.1 Architecture documentation
Is there a public architecture document covering logical, infrastructure and integration architecture and the components used?
EvidencedThe docs cover the logical view (core concepts, cryptographic setup, circuits, EVM/TRON contracts, Solana program) and the integration view (API, SDKs, WaaS); infrastructure is described only for the enclave (GCP Confidential VM). Not versioned in a repository.
source 1
CROPS O4
Commercial and financial
B11.1 Contracting entity
Which legal entity would an institution contract with, and in which jurisdiction?
EvidencedNovelty Today, Inc., Delaware, United States; terms under Delaware law with binding individual arbitration. Only relevant to the hosted interface, apps, SDK and API.
The Delaware Division of Corporations search requires a CAPTCHA and was not used, so no register entry is cited.
source 1 · source 2
B11.2 Funding of ongoing operation
How is ongoing operation and maintenance funded (revenue, foundation, grants, fee switch), per a primary source?
EvidencedPer-transaction privacy fees on the hosted apps (25 to 35 bps) and a 10 bps Hinkal fee plus flat relay fee on API traffic, part of which is shared with partners. No treasury or annual report was found.
source 1
B11.3 Termination terms
What happens to customer funds and data on termination by either side?
EvidencedNovelty Today may suspend or terminate interface access at any time without notice; users cancel by email. Funds stay in the Hinkal contract, which accepts self-submitted withdrawals, but proving still needs Hinkal-hosted zkeys (S4 = 0).
source 1
CROPS S4 · CROPS S4
AI components
B12.1 AI in the payment path
Does an AI system take part in payment processing or compliance decisions (for example automated transaction screening)?
EvidencedAutomated Chainalysis screening of depositing addresses before funds enter the private balance, with continuous re-screening; failing funds stay public and can only leave publicly. No statement on whether AI or a learned model is used.
source 1
CROPS C4
B12.2 AI controls documented
If AI is used, are monitoring, validation, override, decommissioning and bias evaluation documented?
EvidencedScreening outcomes are documented (funds failing screening remain public under the owner's control); no appeal or override, monitoring, validation, decommissioning or bias evaluation is documented.
source 1

Scope of assessment

Components in the payment path

ComponentRolePublicLicenceOperatorRequired
Hinkal pool contract, HinkalHelper and Groth16 verifierscontractsYesBUSL-1.1HinkalTimelockController (6 h delay), proposer Safe 2-of-3Yes
Circom circuits (MainEVMCircuit)otherYesBUSL-1.1HinkalYes
Proving keys and circuit wasm (served from wallet-prodv12.hinkal.io)otherNoproprietaryHinkal (Novelty Today, Inc.)Yes
TypeScript SDK @hinkal/common (npm build output, no source repository)sdkYesMITuserYes
Ethereum mainnet and a JSON-RPC endpointledgerYesLGPL-3.0Ethereum validators; RPC from the user's wallet providerYes
Hinkal backend (snapshot, Merkle siblings, data server, token lists)apiNoproprietaryHinkalNo
Allowlisted relayers (2 addresses in the helper's RelayStore)relayerNoproprietaryHinkal (relayer list set by the timelock)No
Enclave API (remote proving, signature storage)backendYesnoneHinkal on Google CloudNo
Chainalysis address screening at depositoracleNoproprietaryChainalysis via Hinkal backendNo
Integrity Check over $10,000 (CEX zkTLS attestation or zkKYC partner)kycNoproprietaryReclaim Protocol, zkMe, Galxe, AiPrise, Authento, Binance BABtNo
Hinkal Pay and Hinkal Wallet apps (pay.hinkal.io, browser extension)frontendNoproprietaryHinkalNo
HinkalTimelockController and its proposer SafeotherYesBUSL-1.1Safe 0x4d28…D7fB, 2-of-3, signers undisclosedNo

Repositories

Contracts

RoleAddressSource verified
Hinkal (shielded pool, entry point, not a proxy)0x7cb6…Cfa4 explorer · Sourcifysourcify
HinkalHelper (checks, relayer allowlist)0x5f91…7C1b explorer · Sourcifyexplorer
VerifierEVM1x2x1v4 (one of the registered verifiers)0x8c16…6c36 explorer · Sourcifyexplorer
VerifierEVM1x2x2v4 (one of the registered verifiers)0xd7d9…a091 explorer · Sourcifyexplorer
HinkalTimelockController (owner and helper manager)0xF043…b7D0 explorer · Sourcifyexplorer
Safe 2-of-3 (timelock proposer, executor, admin)0x4d28…D7fB explorer · Sourcifynone

Assessor notes

Unit: Ethereum mainnet Hinkal 0x7cb6…Cfa4 (deployed at block 25543753, Sourcify exact match to Hinkal-Contracts-Circuits@61b6839a), helper 0x5f91…7C1b and the registered verifiers. Onchain reads at block 26153565 via publicnode. Role history comes from the Blockscout logs API, because publicnode refuses archive log queries: RoleGranted/RoleRevoked on Hinkal, and RoleGranted/MinDelayChange on the timelock. The same Hinkal address is deployed on other EVM chains with different helpers (Base 0xf6aF…3746, Arbitrum 0x6Fac…8d12, Polygon 0x3CD1…1bAC); those were not assessed. Solana and TRON programs are out of scope. The main TypeScript SDK was read from its npm tarball (0.3.16) without running it. No transactions, UI runs, traces or self-host attempts were made.