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.

zERC20 (zBNB on BNB Chain)

transferBNB Chain Assessed on BNB Chain (chain 56)zerc20.io

Ratings apply to this deployment only. Treat them as unverified for other chains. Why this deployment: zERC20 is deployed on Ethereum, Arbitrum, Base, BNB Chain, Polygon and Kaia (docs Contract Addresses page). We read the token's own transfer counter index() on each chain on 2026-10-09: zBNB on BNB Chain 0x4388…5c54 had 17356 indexed transfers, against 451/250/111 for zETH and 193/419/394 for zUSDC on Ethereum/Base/Arbitrum. Unit: the zBNB token proxy, its Verifier, the shared Blocklist, the zBNB Hub and LiquidityManager on BNB Chain. Excluded: zETH, zUSDC and zJPYC deployments (same code, Base-hosted hubs) and the testnets.

At a glance

Category
Protocols for privacy-preserving transfers
Chain
BNB ChainBNB Chain
CROPS tally
2 of 23 hold up · 2 no evidence
Security audits
1 published
Offered
All but 3 countries
Last edited
2026-10-13 · History
  1. Censorship Resistance0 FailsWeakest: Admin pause or freeze powers; Settle without the provider; Reliance on hosted services
  2. Open0 FailsWeakest: Can be self-hosted
  3. Free0 FailsWeakest: Open-source licences; Protection against relicensing
  4. Privacy1 WeakWeakest: Tracking and analytics; Data collected beyond payment; Third parties in the payment flow; Endpoints can be changed
  5. Security0 FailsWeakest: Funds safe if provider disappears; Audits and bug bounty

Where it is offered

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

The terms define Restricted Countries as jurisdictions under OFAC, EU or UN sanctions "including but not limited to" North Korea, Iran and Syria; only those three are named, so only they are listed. The terms are governed by Swiss law. At protocol level, the token contracts have no country check but enforce an owner-maintained address Blocklist (C1, C4). The production app bundle has no IP or country gate (archived grep), and it pre-checks recipients against the onchain Blocklist.

Excluded countries (3): North Korea, Iran, Syria

Evidence (2)2 documented
  1. Documented

    The Terms and Conditions define Restricted Countries and require users to warrant they are not residents of them.

    zerc20.io/terms-and-conditions

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

  2. Documented

    No country gate was found in the served app bundle.

    app.zerc20.io

    checked 2026-10-09

Censorship Resistance

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

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

What would raise this pillar

  • Admin pause or freeze powers reaching Weak: Role held by a multisig that misses one of those conditions (no timelock, undisclosed signers, bypass modules), or the constraints are documented only.
  • Settle without the provider reaching Weak: Partial (for example settle but not refund or withdraw), or documented only.
  • Reliance on hosted services reaching Weak: Intermediaries required, only documented, no public code.

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

0 Fails

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

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

The settlement contracts carry two stop powers. The Blocklist owner, a 3-of-4 Safe with undisclosed EOA signers, can add any address at once, with no timelock or notice. The token then refuses every transfer to or from that address, including funds already sitting at a burn address meant for that recipient. The Verifier owner, a second 3-of-4 Safe with the same signers, can pause all proofs and teleports with activateEmergency. Neither Safe has a module or a guard. Scored 0 because the role can target individual addresses with no notice. The docs say the list follows OFAC; that is a policy statement, not a constraint in code.

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

    _update() reverts with AddressIsBlocked if from or to is on BLOCKLIST, so every transfer, mint, burn and teleport of a listed address fails. This file is identical, apart from a trailing newline, to the Sourcify source of the deployed implementation 0x857a…c748.

    kbizikav/zERC20 · contracts/src/zERC20.sol

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

  2. Verified

    The Blocklist (Sourcify exact_match) has onlyOwner blockAddress, unblockAddress and blockAddresses with no delay; owner() is the Safe 0x4301…B1fa at block 126599703.

    0x847b…4Df9 on sourcify.dev

    0x847b…4Df9 explorer · Sourcify · block 126599703 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  3. Verified

    Safe 1.4.1 with threshold 3 and four owners (0x6893…2647, 0x5C04…4Bb6, 0x1eB7…794D, 0x4E3a…6830, all EOAs); getModulesPaginated returns no modules and the guard slot is zero. The Verifier owner Safe 0xb6d8…DafCa has the same four owners, threshold 3, no modules and no guard.

    0x4301…B1fa on sourcify.dev

    0x4301…B1fa explorer · Sourcify · block 126599703 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  4. Verified

    The zBNB Verifier's owner is the Safe 0xb6d8…DafCa and paused() is false. Its implementation 0x6b4a…E1c8 has the same code hash on BNB Chain as on Base, where Sourcify has an exact match. In that source, activateEmergency() lets the owner pause proveTransferRoot, teleport, singleTeleport and relayTransferRoot.

    0xb059…774A on sourcify.dev

    0xb059…774A explorer · Sourcify · block 126599703 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  5. Documented

    The FAQ says the Blocklist follows the OFAC list and that a blocked address cannot send, receive, wrap, unwrap or teleport. The signers are not named.

    zerc20.gitbook.io/zerc20/for-users/faq

    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

0 Fails

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

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

The payer's half is direct: the sender transfers zBNB to a burn address with any wallet. The payee's half is not. teleport and singleTeleport are open to anyone with a valid proof, but they verify against transfer roots, and only addresses the Verifier owner has allowlisted can post those roots. A payment that has not been included in a proved root cannot be redeemed until the provider's prover posts it. Judgment call: we score the private flow, so 0, because settlement depends on the provider's prover. A plain public zBNB transfer settles directly, but it is not private.

Evidence (2)2 verified
  1. Verified

    proveTransferRoot() is gated by onlyAllowedProver, which requires msg.sender to be in an owner-managed allowlist (setAllowedProver L775-L780). Teleports verify against roots recorded only by this function or relayed from the Hub.

    kbizikav/zERC20 · contracts/src/Verifier.sol

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

  2. Verified

    The deployed Verifier implementation (exact match on Base, same code hash on BNB Chain) keeps the onlyAllowedProver gate on proveTransferRoot. latestProvedIndex() equalled the token's index() (17356) at block 126599703, so roots were being proved at the time.

    0xb059…774A on sourcify.dev

    0xb059…774A explorer · Sourcify · block 126599703 · checked 2026-10-09

Reliance on hosted services

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

0 Fails

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

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

Two provider services sit in the required path. The root prover is single-vendor by contract design: only allowlisted addresses can prove roots. The hosted indexer supplies the Merkle proofs recipients need. The docs invite users to run their own indexer, but the official repository is not public. A snapshot of the monorepo, BUSL-1.1, exists under a personal GitHub account; it is not linked from the org, and running a prover from it would not help, because the contract allowlist still applies. The relay node and ICP canisters are optional. Scored 0: required, closed and single-vendor.

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

    Root proving is restricted to allowlisted provers, so the provider can stop new payments from becoming redeemable.

    kbizikav/zERC20 · contracts/src/Verifier.sol

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

  2. Documented

    Recipients get Merkle proofs for their burn events from the indexer; the app bundle hardcodes https://v1.mainnet.api.zerc20.io/indexer/zbnb (archived bundle strings).

    zerc20.gitbook.io/zerc20/for-developers/indexer-api

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

  3. Documented

    The docs point to github.com/zerc20io/zERC20 for the CLI, indexer and prover code, but that repository returned 404 on 2026-10-09. The org has one public repo, its profile.

    zerc20.gitbook.io/zerc20/for-users/getting-started-1

    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

Best evidence: VerifiedChecked 2026-10-19 today

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

Filtering is built into the settlement contracts. The token checks every sender and recipient against an owner-maintained Blocklist, so no direct path avoids it. The filter is disclosed in the docs, and the list source is named as OFAC, but its contents are set by the owner Safe. The terms describe these parameters as operating "without human intervention or discretion by the Operator", which the owner-only blockAddress function contradicts. Judgment call: anchors 2 and 3 require a neutral settlement layer. The filtering is disclosed, so not 0. We take 1.

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

    Address filtering sits in the token's _update(), which is the settlement layer.

    kbizikav/zERC20 · contracts/src/zERC20.sol

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

  2. Documented

    The FAQ and contract spec disclose the OFAC Blocklist and its effect; the app also pre-checks recipients against the Blocklist before sending (docs Private Transfer page).

    zerc20.gitbook.io/zerc20/for-users/faq

    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

2 Partial

Best evidence: VerifiedChecked 2026-10-19 today

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

Tokens and chains are enumerated onchain and in the docs. zBNB wraps native BNB, which has no issuer freeze. The freeze power that matters is zERC20's own Blocklist (C1), which the docs disclose. The docs do not state BNB Chain's validator-set assumptions or LayerZero's DVN trust for cross-chain roots. Scored 2: enumerated in code, chain and messaging assumptions not stated.

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

    underlyingToken() of the zBNB LiquidityManager returns the native-token sentinel 0xEeee…EEeE (native BNB), and the token's verifier() and minter() point at the listed Verifier and LiquidityManager.

    0x39Cc…eFD9 on sourcify.dev

    0x39Cc…eFD9 explorer · Sourcify · block 126599703 · checked 2026-10-09

  2. Documented

    The addresses page enumerates every token, chain and contract, and says it is derived from config/deployed JSON files.

    zerc20.gitbook.io/zerc20/reference/addresses

    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
0 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

1 Weak

Best evidence: VerifiedChecked 2026-10-19 today

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

Most of the zBNB contracts are verified on Sourcify, but the Verifier implementation, which every redeem calls, is not verified on BNB Chain. Its bytecode matches a verified deployment on Base. BscScan blocked automated access, and we did not bypass it. The official repository is not public, so there is no build script from a provider-published commit. Judgment call: 1 rather than 2, because one settlement contract is unverified on this chain.

Evidence (2)2 verified
  1. Verified

    The token proxy's implementation slot reads 0x857a…c748. On chain 56 Sourcify returns exact_match for the zERC20 implementation, the LiquidityManager implementation 0x0403…53bd, the Blocklist and the Hub proxy; match (partial) for the token, Verifier and LiquidityManager proxies and the Hub implementation; and no record for the Verifier implementation 0x6b4a…E1c8.

    0x4388…5c54 on sourcify.dev

    0x4388…5c54 explorer · Sourcify · block 126599703 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Verified

    The Verifier proxy's implementation slot reads 0x6b4a…E1c8, whose runtime code hash (0x452b52…d697) equals that of the exact-matched contract at the same address on Base.

    0xb059…774A on sourcify.dev

    0xb059…774A explorer · Sourcify · block 126599703 · 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

Officially, only the contracts (as Sourcify source) and the compiled MIT SDK on npm are public. The docs' repository link returns 404. A full-stack snapshot exists under an unaffiliated personal account; we cite it only where it matches deployed bytecode and do not treat it as the provider's published stack. Judgment call: 1 (contracts and SDK only).

Evidence (2)2 verified
  1. Verified

    The zerc20io org has one public repository, its profile README, which links the app, docs and website and no source repository.

    zerc20io/.github · profile/README.md

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

  2. Verified

    A personal-account repository holds a BUSL-1.1 snapshot (2026-04-20) of the monorepo, with contracts, cli, sdk, frontend, indexer, decider-prover, relay and zstorage. Its zERC20.sol and Blocklist.sol match the deployed source; its Verifier.sol is an older version.

    kbizikav/zERC20 · contracts

    commit b890773cf9 · checked 2026-10-09

Can be self-hosted

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

0 Fails

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

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

The documented path to a working deployment starts from a repository that is not public, so a stranger cannot follow it. We made no reproduction attempt. Even with code, a self-hosted prover could not post roots to the deployed Verifier without being allowlisted. Scored 0, because no published path exists.

Evidence (1)1 documented
  1. Documented

    The CLI and self-host instructions start by cloning github.com/zerc20io/zERC20, which returned HTTP 404 on 2026-10-09.

    zerc20.gitbook.io/zerc20/for-users/getting-started-1

    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: DocumentedChecked 2026-10-19 today

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

ABIs ship in the npm package, and the API and events are described on GitBook, but none of it is versioned in a public provider repository. We found no payee export function. Scored 1: documented only.

Evidence (1)1 documented
  1. Documented

    The indexer API, contract spec and events are documented on the hosted docs site; the npm SDK ships contract ABIs (BlocklistArtifact and others).

    zerc20.gitbook.io/zerc20/for-developers/indexer-api

    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
0 of 3 Partial or better · 1 no evidence

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 token and Verifier source is BUSL-1.1 with no additional use grant, so production use of a fork needs a commercial licence until 2030. The required root prover and indexer are not public. Scored 0: required components are closed, and the core contracts are source-available only.

Evidence (1)1 verified
  1. Verified

    Business Source License 1.1, Licensor zERC20, no Additional Use Grant, Change Date 2030-04-08, Change License GPL-2.0-or-later. The deployed zERC20.sol and Verifier.sol carry SPDX BUSL-1.1 in their Sourcify source; Blocklist, Hub and LiquidityManager are MIT.

    kbizikav/zERC20 · LICENSE

    commit b890773cf9 · 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

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.

The official repository is not public, so its CLA, contributing rules and licence history cannot be checked. The snapshot's LICENSE sets a 2030 change date to GPL-2.0-or-later.

No proprietary dependencies

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

1 Weak

Best evidence: VerifiedChecked 2026-10-19 today

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

Using the deployed protocol requires the provider's root prover, a hosted-only service by contract design, and the indexer code is not officially public. The docs describe both services. Scored 1: production needs a hosted service with no open alternative, documented.

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

    The prover allowlist is set by the owner; no open alternative can post roots to the deployed Verifier.

    kbizikav/zERC20 · contracts/src/Verifier.sol

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

  2. Documented

    The architecture page lists the indexer, Decider prover, cross-chain job and relay node as off-chain services.

    zerc20.gitbook.io/zerc20/for-developers/architecture

    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?

1 WeakPillar 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

Sets the pillar ratingBest evidence: DocumentedChecked 2026-10-09 10 days ago

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

Neither the served app bundle nor the SDK package contains analytics; the app explicitly disables Reown's analytics. The app source is not public, and the SDK is published only as compiled npm output, so this rests on documented-tier reads of build artefacts. No trace was run. Judgment call: the substance fits 2 or 3, but without verified or trace evidence the documented cap applies, so 1.

Evidence (2)2 documented
  1. Documented

    The production bundle passes analytics:false to Reown AppKit, and a grep finds no analytics, error-reporting or fingerprinting SDK. The npm SDK (0.7.5) has no such dependency.

    app.zerc20.io

    checked 2026-10-09

  2. Documented

    Search of the SDK's dist files for analytics libraries.

    registry.npmjs.org/@zerc20/client-sdk/0.7.5

    checked 2026-10-09

Data collected beyond payment

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

1 Weak

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

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

Onchain, the flow needs only addresses and amounts, and burn-address secrets are delivered encrypted through ICP canisters. The required hosted indexer, however, learns which recipient is querying which burn events, and with them the IP address and timing. That is collection beyond settlement needs, disclosed only in docs. Scored 1.

Evidence (1)1 documented
  1. Documented

    The trust model says the indexer operator sees sender, burn address and value, and learns the recipient when the recipient queries it.

    zerc20.gitbook.io/zerc20/for-developers/architecture

    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

The chain shows the sender paying an unknown burn address, and later a recipient minting via teleport, with no onchain link between the two. Amounts are plaintext and not fixed denominations, so unusual amounts and timing can link a payment to its redeem; the docs say so. Judgment call: 2 (minimal linkage, documented) rather than 3, because plaintext arbitrary amounts are revealed by the protocol itself. Anonymity-set size (17356 indexed zBNB transfers) is behavioural and not scored.

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

    Every balance change emits IndexedTransfer(index, from, to, value) in plaintext, and a redeem emits Teleport(to, value); the burn address is trim160(poseidon(recipient, secret)), so it does not reveal the recipient.

    0x4388…5c54 on sourcify.dev

    0x4388…5c54 explorer · Sourcify · block 126599703 · checked 2026-10-09

  2. Documented

    The docs state that amounts are public and suggest batching or partial withdrawals to reduce correlation.

    zerc20.gitbook.io/zerc20/overview/how-it-works

    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

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

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

In the app flow, the provider's indexer, Alchemy (or thirdweb) RPCs and ICP boundary nodes see payment requests, and WalletConnect relays see wallet sessions. The SDK leaves every endpoint to the integrator, but the indexer it needs is the provider's unless you build your own. Disclosed in docs; the app's choices are not swappable. Scored 1.

Evidence (2)2 documented
  1. Documented

    The app hardcodes the zERC20 indexer and relayer, Alchemy RPC URLs with an embedded key, a thirdweb BNB RPC, ICP API hosts and WalletConnect/Reown hosts.

    app.zerc20.io

    checked 2026-10-09

  2. Documented

    The docs disclose what the indexer operator sees.

    zerc20.gitbook.io/zerc20/for-developers/architecture

    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

1 Weak

Sets the pillar ratingBest evidence: DocumentedChecked 2026-10-09 10 days ago

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

In the SDK, endpoints are configurable in code. The app hardcodes them. The indexer code is not officially public. Judgment call: the SDK would support 2, but the evidence is a compiled npm package (documented tier), so 1.

Evidence (1)1 documented
  1. Documented

    The SDK hardcodes no service URL (only explorer links); indexer, decider, relay, ICP and RPC endpoints are passed in by the integrator.

    registry.npmjs.org/@zerc20/client-sdk/0.7.5

    checked 2026-10-09

Security

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

0 FailsPillar rating: weakest of 6
0 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

In flight, value sits as a zBNB balance at a keyless burn address until the recipient teleports an equal amount. No provider wallet holds it, but the token and Verifier are upgradeable by 3-of-4 Safes with no timelock. The owner can also swap the Verifier or minter, which could redirect or invalidate pending balances. The BNB backing sits in an upgradeable LiquidityManager administered by the same Safe. Disclosed in docs. Scored 1: upgradeable escrow, disclosed.

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

    The zBNB token is an ERC1967 UUPS proxy whose owner is the Safe 0x4301…B1fa; _authorizeUpgrade is onlyOwner, and setVerifier and setMinter (onlyOwner) choose which contracts can mint.

    0x4388…5c54 on sourcify.dev

    0x4388…5c54 explorer · Sourcify · block 126599703 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    The trust model discloses the owner's upgrade and verifier powers.

    zerc20.gitbook.io/zerc20/for-developers/architecture

    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

1 Weak

Best evidence: VerifiedChecked 2026-10-19 today

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

All core contracts are UUPS proxies upgradeable at once by two 3-of-4 Safes that share the same undisclosed EOA signers. There is no timelock and no notice channel. Neither Safe has a module or a guard. Scored 1: multisig admin, no timelock.

Evidence (2)2 verified
  1. Verified

    The upgrade owner of the token, Blocklist and LiquidityManager is this Safe (3-of-4, EOA signers), with no modules and the guard slot at zero. No timelock contract sits in front of it.

    0x4301…B1fa on sourcify.dev

    0x4301…B1fa explorer · Sourcify · block 126599703 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Verified

    The Verifier and Hub owner Safe has threshold 3 and the same four EOA owners, with no modules and no guard.

    0xb6d8…afCa on app.safe.global

    0xb6d8…afCa explorer · Sourcify · block 126599703 · 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-09 10 days ago

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

The SDK requests exact-amount approvals, and the zBNB payment path needs none. Gasless redeem uses a signed fee authorization rather than an allowance. Judgment call: the code fits 3, but it is read from a compiled npm package, not a public repository, so the documented cap gives 1.

Evidence (1)1 documented
  1. Documented

    SDK wrap and unwrap approve exactly the amount being wrapped or unwrapped to the LiquidityManager, and only when the current allowance is short. zBNB wraps native BNB, which needs no approval, and a private send is a plain transfer.

    registry.npmjs.org/@zerc20/client-sdk/0.7.5

    checked 2026-10-09

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-09 10 days ago

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

Derived from S1=1, C2=0, C3=0 and O3=0. If the provider disappears, no new roots are proved. Payments sent to burn addresses after the last proved root cannot be redeemed, and earlier unredeemed ones need indexer data that only the provider serves. Holders of plain zBNB can still unwrap through the LiquidityManager. Scored 0: payees' access depends on provider liveness.

Evidence (1)1 verified
  1. Verified

    Teleports verify only against roots posted by allowlisted provers (C2), and the Verifier owner can pause (C1).

    0xb059…774A on sourcify.dev

    0xb059…774A explorer · Sourcify · block 126599703 · checked 2026-10-09

Secrets and webhook handling

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

1 Weak

Best evidence: DocumentedChecked 2026-10-09 10 days ago

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

The only secret seen in the client is an RPC provider key, which grants RPC quota. There are no webhooks or merchant API keys. Burn-address secrets stay with the user or are sent encrypted through ICP. Judgment call: this is a minor issue (2 in substance), but the evidence is a documented-tier read of a built bundle, so 1.

Evidence (1)1 documented
  1. Documented

    The served app bundle embeds one Alchemy key in six RPC URLs. Burn secrets and recipient keys are derived client-side, and gasless redeem uses an EIP-712 fee authorization signed by the recipient.

    app.zerc20.io

    checked 2026-10-09

Audits and bug bounty

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

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.

The docs and website name no audit or bug bounty. The personal-account snapshot contains audit/zksecurity-audit.pdf, but we could not extract its text to confirm scope or an audited commit, and the official repository is not public.

Security audits 1

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
2025-12-08zkSecurityAuditzERC20 proof-of-burn R1CS circuits (withdraw, root transition, burn address, Merkle and Poseidon gadgets) and the Solidity contracts (zERC20, Verifier, Hub) at 69537e9569
Audited the zk-audit-target release. zERC20.sol, Verifier.sol, Hub.sol, Blocklist.sol and LiquidityManager.sol all differ between the audited commit and b890773c, so the deployed contracts include unaudited changes. The same report is at audit/zksecurity-audit.pdf in the snapshot repository.
Partly3 low, 3 informational

Compiled from: zerc20.io and its docs (no audit named), the audit/ folder of the snapshot repository github.com/kbizikav/zERC20, and zkSecurity's public report index, which publishes the same audit for INTMAX. Audited contract sources were compared with the snapshot commit b890773c that this file matches to the deployed contracts. 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: 14 evidenced, 0 attested, 5 absent, 5 not applicable, 21 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
providerpayeeRedeem fee 35 bps of the newly redeemable amount, rounded up (contract maximum 100 bps)redeemFeeBps on the zBNB Verifier, set per Verifier by its owner Safe; accrues in redeemFeeBalance and is minted to feeRecipient (the Verifier owner Safe 0xb6d8…DafCa) on withdrawal.
providerpayeeRelay fee on gasless redeems, quoted by the zERC20 relay node and deducted after the redeem feeOptional; a recipient with BNB for gas can redeem directly. Quotes are dynamic and not published.
providernoneNo wrap or unwrap fee for zBNB (dynamic liquidity fees apply to zUSDC and zETH only)Docs fee table; wrap and unwrap of zBNB happen only on BNB Chain, so no cross-chain balancing fee.
networkbothBNB Chain gas for the transfer to the burn address and for a direct redeem; LayerZero fees cross-chainNot set by the protocol. No gas sample recorded (BSC public RPCs refuse historical log queries).
  1. Verified

    redeemFeeBps() returns 35 and feeRecipient() returns 0xb6d8B261948B097069eF926475cbB6dd698DafCa at block 126643625. The implementation source (exact match on Base, same code on BNB Chain) caps the fee at MAX_REDEEM_FEE_BPS = 100 and rounds up.

    0xb059…774A on sourcify.dev

    0xb059…774A explorer · Sourcify · block 126643625 · checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19

  2. Documented

    Fees and Rewards page, current fee settings and private transfer redeem fee.

    zerc20.gitbook.io/zerc20/for-users/fees-and-rewards

    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). In flight, value sits as zBNB at a keyless burn address until the recipient redeems; no provider wallet holds it, and wrapped BNB sits in the LiquidityManager. The disclosed risk is that 3-of-4 Safes can upgrade the token, Verifier and LiquidityManager with no timelock, swap the Verifier or minter, and block addresses.

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: terms, privacy policy, docs (llms-full.txt) and Zefix. Not searched: FINMA's register of authorised institutions and SRO member lists (interactive searches).

  1. Documented

    Terms (last updated 5 February 2026) say the Operator is not a financial institution, money services business or VASP and cite no licence.

    zerc20.io/terms-and-conditions

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

  2. Documented

    Zefix entry for Ryodan Systems AG (Zug), a software development company; Zefix does not record financial-market authorisations.

    www.zefix.ch/ZefixREST/api/v1/firm/1494951.json

    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

The recipient redeems zBNB to its own address and may unwrap it to BNB on BNB Chain; converting to local currency is outside the protocol.

Evidence shared with CROPS: C5 item 1

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

First deployment

Evidenced

2026-02-04 (block 79259750): zBNB token proxy 0x4388…5c54 on BNB Chain, created through factory 0x29c8…281d in tx 0xc1880e18…7909 sent by 0xc692…49ac, with first implementation 0xda2f…acb8.

  1. Verified

    The app's token config gives deployed_block_number 79259750 for zBNB on BNB Chain; eth_getBlockReceipts for that block (bsc-dataseed) shows tx 0xc1880e18a029867dfee46087c5a199644d23a65487d457a3edb24979147f7909 emitting the proxy's first Upgraded (implementation 0xda2fd3a6979d5304bc36aab4d1f17b8b82bcacb8), OwnershipTransferred (to 0xc69251d8…49ac) and Initialized logs. Block dated 2026-02-04 13:40:30 UTC. Sourcify has no creation data for the proxy.

    0x4388…5c54 on sourcify.dev

    0x4388…5c54 explorer · Sourcify · block 79259750 · checked 2026-10-09

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

Operating entity

Evidenced

Ryodan Systems AG, CH-ZG · CHE-291.471.162 · register

The terms define an unnamed "Operator" of the app, website and docs; only the privacy policy names Ryodan Systems AG. Who holds the owner Safes is not stated.

  1. Documented

    The privacy policy (18 February 2026) names the operator of the website and app.

    zerc20.io/privacy-policy

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

  2. Documented

    Zefix record, Aktiengesellschaft in Zug, status existing, same address; purpose software development including decentralised finance applications.

    www.zefix.ch/ZefixREST/api/v1/firm/1494951.json

    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

Unknown

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

Searched: docs (llms-full.txt, FAQ, support), terms and website. The official repository is not public, so there is no advisory channel to check; EmergencyTriggered and ActivateEmergency logs on the Verifier could not be scanned (no archive BSC RPC). paused() is false today.

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

Product changes affecting users

Evidenced
  • 2026-02-04: zBNB token proxy deployed with implementation 0xda2f…acb8, owned by the EOA 0xc692…49ac. source
  • 2026-02-05: Terms of Use last updated (privacy policy dated 2026-02-18). source
  • 2026-04-14: Shared Blocklist 0x847b…4Df9 deployed (block 92449195). source
  • 2026-04-15: zERC20 implementation 0x857a…c748 deployed (block 92624068); the token proxy now points to it, so the token was upgraded on or after this date (upgrade transaction not located). source

Upgrade, owner-transfer, blocklist and fee-change logs could not be listed because public BSC RPCs serve no archive logs; the docs mention a migration of older Verifiers to the redeem-fee version without a date.

  1. Verified

    Sourcify creation data gives block 92624068 (2026-04-15 05:41:04 UTC) for the implementation and 92449195 (2026-04-14 07:48:05 UTC) for the Blocklist, both from 0x5eF8…17d3; the initial implementation in the proxy's deploy receipt was 0xda2f…acb8.

    0x857a…c748 on sourcify.dev

    0x857a…c748 explorer · Sourcify · block 92624068 · checked 2026-10-09

  2. Documented

    Terms version date.

    zerc20.io/terms-and-conditions

    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

Volume transacted (verified only)

Unknown

not computed on 2026-10-19: no blocks-per-day estimate for chain 56

Teleport and TeleportWithRelayerFee carry the same amounts but split across two topics; RedeemFeeAccrued is emitted on both paths. Not computed; BSC log ranges need an archive RPC (RPC_56).

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 for Ryodan Systems AG in the terms, privacy policy or docs.
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
implied from the component list
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?
Unknown
The docs and website name no audit. A personal-account snapshot of the monorepo contains audit/zksecurity-audit.pdf, which was not read (CROPS S6 is unknown for the same reason).
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 indexer, prover, relay node or app 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)?
Absentnone of 2 repo(s): kbizikav/zERC20 ✗ no security policy file; zerc20io/.github ✗ no security policy file
source 1 · source 2
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
No security policy, disclosure page or patch timelines found; the official repository is not public.
B2.3 Dependency and vulnerability scanning in CI
Do the public repositories run dependency or code scanning automatically?
Evidencedsome of 2 repo(s): kbizikav/zERC20 ✓ dependabot config present; zerc20io/.github ✗ no scanning config or workflow step found
source 1 · source 2
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 terms and privacy policy contain no incident-notification commitment.
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
No status page or post-mortem found.
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?
EvidencedThe indexer is a public, unauthenticated read API with IP-based rate limits; the ICP storage layer requires EVM signatures for key requests. No OAuth or JWT.
source 1
B5.2 API authentication, server to server
Are server-to-server calls authenticated with keys or PKI certificates, and are keys scoped and rotatable?
Unknown
implied from the component list
B5.3 Token expiry
Do API tokens expire, and within what period (the partner caps it at 120 minutes for public data, 30 otherwise)?
Unknown
implied from the component list
B5.4 Export controls
If an API exports data, does it limit volumes and log exports?
Unknown
implied from the component list
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?
Unknown
implied from the component list
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?
EvidencedNo fixed periods; personal data kept as long as needed for its purpose or legal requirements, then deleted or anonymised. Covers the website and app only.
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?
EvidencedRyodan Systems AG is the controller for website and app data under the Swiss FADP and GDPR; service providers are listed by type. No DPIA mentioned.
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?
Evidencedsome of 2 repo(s): kbizikav/zERC20 ✓ deployment configuration: docker-compose.yml; zerc20io/.github ✗ no deployment configuration
source 1 · source 2
Engineering practice in public repositories
B9.1 Default branch protected
Does the default branch require reviews and passing checks, with no direct pushes?
Evidencedsome of 2 repo(s): kbizikav/zERC20 ✓ rules: deletion, non_fast_forward, pull_request; zerc20io/.github ✗ no branch rules visible (classic branch protection is not readable without push access)
source 1 · source 2
B9.2 CI runs on pull requests
Does every pull request trigger automated checks?
Evidencedsome of 2 repo(s): kbizikav/zERC20 ✓ 3 workflow file(s); zerc20io/.github ✗ no .github/workflows
source 1 · source 2
B9.3 Tests run in CI
Do the CI workflows run the test suite?
Evidencedsome of 2 repo(s): kbizikav/zERC20 ✓ test command in a workflow; zerc20io/.github ✗ test command in a workflow
source 1 · source 2
B9.4 Coverage reported
Is test coverage measured and reported (the partner expects 85%)?
Absentnone of 2 repo(s): kbizikav/zERC20 ✗ coverage tooling referenced; zerc20io/.github ✗ coverage tooling referenced
source 1 · source 2
B9.5 Versioned releases
Are releases tagged with immutable semantic versions?
Absentnone of 2 repo(s): kbizikav/zERC20 ✗ latest tags: zk-audit-target, contract-audit, audit-target; zerc20io/.github ✗ no tags
source 1 · source 2
B9.6 Signed tags or commits
Are release tags or recent commits cryptographically signed?
Evidencedall of 2 repo(s): kbizikav/zERC20 ✓ 10 of 10 recent commits signed; zerc20io/.github ✓ 1 of 2 recent commits signed
source 1 · source 2
B9.7 Changelog
Is a changelog maintained with the code?
Absentnone of 2 repo(s): kbizikav/zERC20 ✗ no changelog or release notes; zerc20io/.github ✗ no changelog or release notes
source 1 · source 2
B9.8 Contribution and branching model documented
Does the README or contribution guide state how changes are proposed, reviewed and released?
Absentnone of 2 repo(s): kbizikav/zERC20 ✗ none found; zerc20io/.github ✗ none found
source 1 · source 2
Architecture documentation
B10.1 Architecture documentation
Is there a public architecture document covering logical, infrastructure and integration architecture and the components used?
EvidencedLogical and integration views on the docs site (architecture overview of contracts, off-chain services and ICP storage; contract, ZKP and ICP specs; SDK and indexer API). No infrastructure view of the hosted prover, indexer or relay node. Not versioned in a public provider repository.
source 1
CROPS F3
Commercial and financial
B11.1 Contracting entity
Which legal entity would an institution contract with, and in which jurisdiction?
EvidencedRyodan Systems AG (CHE-291.471.162), Zug, per the privacy policy; the terms name only an "Operator", under Swiss law with Swiss Arbitration Centre arbitration seated in Zurich.
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?
EvidencedOnchain redeem fee (35 bps on zBNB) accrues to the Verifier and can be minted to the fee recipient, the 3-of-4 owner Safe; liquidity fees on zUSDC and zETH fund wrap rewards. No other funding source is published.
source 1
B11.3 Termination terms
What happens to customer funds and data on termination by either side?
EvidencedThe Operator may suspend or end access to the app and APIs for violations, suspected illegality or security reasons, with an appeal by email; the terms say onchain access cannot be terminated, but the owner-managed Blocklist can freeze an address in the token (C1).
source 1
CROPS C1
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)?
EvidencedCompliance in the payment path is an owner-maintained address Blocklist (said to follow OFAC) checked on every token transfer, and the app pre-checks recipients against it. No automated scoring, vendor screening or AI is described.
CROPS C4 · CROPS C1
B12.2 AI controls documented
If AI is used, are monitoring, validation, override, decommissioning and bias evaluation documented?
N/A: no such service
The only screening is a manually maintained address list; no AI component is described (B12.1).

Scope of assessment

Components in the payment path

ComponentRolePublicLicenceOperatorRequired
zBNB token (zERC20 proxy and implementation)contractsYesBUSL-1.1zERC20 owner Safe 0x4301…B1fa (3-of-4)Yes
zBNB Verifier (root proofs, teleport, pause)contractsYesBUSL-1.1zERC20 owner Safe 0xb6d8…DafCa (3-of-4)Yes
Blocklist (OFAC address list checked on every transfer)contractsYesMITzERC20 owner Safe 0x4301…B1fa (3-of-4)Yes
Allowlisted root prover (Decider prover and cross-chain job)otherNoproprietaryzERC20 (addresses allowlisted by the Verifier owner)Yes
zERC20 indexer (v1.mainnet.api.zerc20.io/indexer)indexerNoproprietaryzERC20Yes
@zerc20/client-sdk (proof generation, burn-address derivation)sdkYesMITuserYes
BNB Chain and a JSON-RPC endpointledgerYesLGPL-3.0BNB Chain validators; RPC chosen by the integratorYes
zBNB Hub and LayerZero messaging (global roots, cross-chain)contractsYesMITzERC20 owner Safe 0xb6d8…DafCa; LayerZero DVNs and executorsNo
LiquidityManager (wrap BNB into zBNB and unwrap)contractsYesMITzERC20 owner Safe 0x4301…B1fa (admin role)No
ICP stealth storage canisters (encrypted announcements and invoices)otherNoproprietaryzERC20 on the Internet ComputerNo
Relay node (gasless redeem, swap to gas)relayerNoproprietaryzERC20No
zERC20 app (app.zerc20.io)frontendNoproprietaryzERC20No
Alchemy and Reown/WalletConnect services used by the appotherNoproprietaryAlchemy; ReownNo

Repositories

RepositoryRoleLicense
kbizikav/zERC20contractsBUSL-1.1
zerc20io/.githubdocsnone

Contracts

RoleAddressSource verified
zBNB token (ERC1967 proxy, UUPS)0x4388…5c54 explorer · Sourcifysourcify
zERC20 implementation0x857a…c748 explorer · Sourcifysourcify
zBNB Verifier (ERC1967 proxy, UUPS)0xb059…774A explorer · Sourcifysourcify
Verifier implementation (not on Sourcify for chain 56)0x6b4A…E1c8 explorer · Sourcifynone
Blocklist (shared, Ownable, not upgradeable)0x847b…4Df9 explorer · Sourcifysourcify
zBNB Hub (ERC1967 proxy)0x35eE…1c7A explorer · Sourcifysourcify
zBNB LiquidityManager (ERC1967 proxy)0x39Cc…eFD9 explorer · Sourcifysourcify
Owner Safe of token, Blocklist, LiquidityManager (3-of-4)0x4301…B1fa explorer · Sourcifysourcify
Owner Safe of Verifier and Hub (3-of-4)0xb6d8…afCa explorer · Sourcifynone

Assessor notes

Unit: zBNB on BNB Chain (most indexed transfers of any zERC20 deployment on 2026-10-09). All BNB Chain reads are at block 126599703 via bsc-rpc.publicnode.com, which serves only very recent state. The docs' source link (github.com/zerc20io/zERC20) returned 404. We cite a BUSL-1.1 snapshot at github.com/kbizikav/zERC20 (commit b890773c, 2026-04-20; author Akira Taniguchi). The org does not link it, so we use it only where its files match deployed Sourcify source (zERC20.sol, Blocklist.sol) or show the same gate (Verifier prover allowlist). The SDK and the served app bundle were read as build artefacts (archived) and never installed or run. The Verifier implementation is unverified on BNB Chain but byte-identical to a Sourcify exact match on Base. No transactions or traces.