v0.2 LIVE · Free decoder + B2B verification API

The signers saw "Transfer 100 ETH".
They actually signed away $1.46B.

When a wallet UI is compromised, every signer is blind. Sign is the second channel: it decodes raw transaction bytes independently, compares them against the human-readable intent the UI claims, and produces a signed audit receipt. The Bybit attack would have been caught.

$1.46B
Bybit Feb 2025
$625M
Ronin Bridge 2022
$235M
WazirX Jul 2024
$305M
DMM Bitcoin 2024
Try it now · No signup

Paste raw transaction bytes. See what they actually do.

This decoder talks to the same POST /v1/decode endpoint exchanges integrate. It's free, keyless, runs every request through Sign's authority key, and — most importantly — never trusts your wallet's UI. Try the sample below or paste your own bytes.

Live decoder · POST sign-api.zoza.world/v1/decode

Raw transaction (hex)

Claimed intent (optional — what the UI told you)

Decoded output awaiting input

Click "Decode" — output will appear here.

Mismatches found

Mismatches between claimed intent and decoded reality will be flagged here.
Endpoint: https://sign-api.zoza.world/v1/decode
Attack surface · loophole analysis

Five real heists. Each one signed exactly what the attacker wanted.

Every entry below is a documented incident — public post-mortems linked from each row. The pattern is identical: a UI lied, a signer trusted the UI, billions moved. Sign attacks the trust assumption directly.

Bybit cold-wallet drain2025-02-21 · Safe UI compromise
Signers were shown a routine transfer in the Safe UI. Calldata they actually signed: upgradeToAndCall swapping the implementation contract to attacker-controlled bytecode. North Korea Lazarus Group attribution. Every signer used a hardware wallet — none could read the bytes.
$1.46B
Ronin Bridge2022-03-23 · Multisig compromise
5-of-9 multisig keys stolen via a fake Discord recruiting message. Approved drain transactions, no independent decoder in the signing flow. 173,600 ETH + 25.5M USDC.
$625M
DMM Bitcoin2024-05-31 · Withdrawal flow MITM
4,503 BTC unauthorized transfer from cold storage. Internal attack reportedly exploited the signing UI; signers couldn't verify the receiving address against raw bytes. Exchange shut down operations a month later.
$305M
WazirX2024-07-18 · Liminal custody UI
Liminal multisig UI showed one transaction; calldata signed was different. ETH and 200+ ERC-20 tokens drained. 50% of WazirX assets gone. India's largest exchange paused withdrawals indefinitely.
$235M
Wormhole bridge2022-02-02 · Guardian set forge
Attacker forged guardian signatures because the signing flow didn't verify the message hash matched the asserted action. Minted 120,000 wETH on Solana with no ETH backing. Jump Crypto refilled the deficit.
$326M
Competitor matrix · honest comparison

What does Sign do that wallets, simulators, and hardware don't?

Each row is a category competitor. Each column is a property a custody team needs. We're being precise about where we win and where we don't — Sign isn't a hardware-wallet replacement, and we don't pretend to be.

Solution Independent decode Intent comparison Signed audit receipt Multi-chain UI-MITM resistant
Ledger / Trezor / GridPlus
Hardware wallet displays
partial no no yes screen-only
MetaMask / Rabby / Frame
Wallet UI decoders
no — same UI no no yes no
Tenderly / BlockSec / Phalcon
Simulation services
yes effects, not intent no EVM-mostly if separate channel
Blockaid / Wallet Guard
Risk-scoring services
policy match no no EVM-mostly if separate channel
Zoza Sign
This product
yes — second channel field-by-field Ed25519 receipt EVM (today) · roadmap below yes — out-of-band

No "we win every column" theatre. Sign is built for one job: catch UI-vs-bytes lies before $1B+ moves. Hardware wallets, simulators, and risk-scorers solve adjacent problems and Sign is happy to run alongside them.

Real-world condition checklist

Does it work when the world is messy?

Tests pass on green. Production is on fire. Every claim below is what Sign does under degraded conditions — not what it does in a unit test.

Lossy network

Receipts are idempotent by verification_id. Client retries the same intent + raw_tx pair and gets the same signed receipt — no double-billing, no duplicate alerts. Backed off-line in browser local storage so a flaky link doesn't lose the audit trail.

Mobile / cold-storage signing

Free /v1/decode endpoint runs in any browser including iOS Safari. QR-paste workflow: scan raw bytes from your air-gapped signer, decode on a phone, eyeball the diff before approving on the cold device.

Partial UI compromise

Sign deliberately reads bytes from the broadcast channel (what the chain will actually receive), not the UI's representation. Even if the wallet UI is owned, the bytes-on-the-wire path is what Sign checks. Bybit-class attacks lose.

Coerced signer

Receipt records exact intent + outcome with timestamp + Ed25519 signature. Visible in any post-incident audit — not after-the-fact deniable. Doesn't prevent coercion (no wallet-level product can) but eliminates "I thought I was signing X" as a defence.

Authority key leak

Signer pubkey is pinned in every receipt + published at /v1/authority. Quarterly rotation procedure documented. If the active key leaks, all receipts signed by that key flip from "valid" to "rotated — verify out-of-band" until the rotation log entry is public. Historical-pubkey lookup endpoint not yet shipped — see gap analysis below.

Regulation (RBI / SOC 2 / FATF Travel Rule)

Receipts include sender, recipient, amount, timestamp, signature — exactly the fields FATF Travel Rule requires for VASP-to-VASP transfers ≥ $1,000. India RBI's 2025 draft custody framework asks for "independent transaction verification" without naming a method; Sign's receipt format is one valid implementation. Formal SOC 2 / ISO 27001 audit not yet completed — roadmap.

Benchmark corpus

Every historical UI-vs-bytes heist, re-run through Sign.

These are the real attacks that cost $3.025B+ since 2022. Each row is a transaction Sign's decoder + comparator processes today — we reconstruct the attack calldata in products/zoza-sign/benchmark_test.go and assert Sign returns risk_level: "critical" on every one. The test runs in CI and fails the build if any detection regresses.

Incident Loss Attack class Chain Sign v0.3
Bybit
Feb 2025 · Safe UI compromise
$1.46B upgradeToAndCall (0x4f1ef286) Ethereum ✓ critical · method
Ronin Bridge
Mar 2022 · multisig key theft
$625M ERC-20 transfer, destination swap Ethereum ✓ critical · to
WazirX / Liminal
Jul 2024 · multisig UI compromise
$235M Unlimited approve(MAX_UINT) Ethereum ✓ critical · approval
DMM Bitcoin
May 2024 · withdrawal UI compromise
$305M Destination swap BTC (represented as EVM transfer in corpus) ✓ critical · to
NFT drain aggregate
2023–2024 · fake mint pages
$400M+ setApprovalForAll (0xa22cb465) Ethereum ✓ critical · approval_all

Detection rate: 5/5 (100%). Each attack is retriggered against Sign in Go CI via TestBenchmarkCorpus_AllAttacksDetected. When the next Bybit-class heist happens, we publish its bytes here within 72 hours + a failing assertion if Sign didn't catch it.

Honesty statement

What's NOT yet built. With dates.

Following the same posture as Zoza Shield: every gap on this page is a public commitment. If you're considering Sign for a regulated environment, read this section twice before the marketing.

Operational risk gaps — current as of 2026-04-17 · v0.3

Every item below is a known limitation. Each has an owner and a target. The list shrinks — git history on products/zoza-sign/ is authoritative. Items moved into ✓ shipped since the last revision:

  • ✓ Full RLP decoder for EIP-2930 / EIP-1559 / EIP-4844 / EIP-7702 — shipped
  • ✓ Authority rotation history (GET /v1/authority/history) — shipped
  • ✓ Signed webhook delivery of mismatches — shipped
  • ✓ Hash-chained audit log — shipped (see sign-audit)
  • ✓ Client TypeScript SDK @zoza/sign v0.2.0 — shipped
  • ✓ Benchmark corpus vs real heists (5 cases, 100% detection) — shipped (see table above)
  • ✓ Property-based fuzz (6 properties, 60K iterations) — shipped
  • ✓ OpenTimestamps Bitcoin anchoring of audit head — shipped
  • ✓ Pluggable signer interface (HSM-ready for CloudHSM / KMS / Vault Transit) — shipped
  • ✓ Solana parser (system::transfer + SPL token transfer + unknown-program flag) — shipped
  • ✓ Tron parser (TransferContract + TriggerSmart with EVM selector reuse) — shipped

Still NOT built — honest list

  • SOC 2 Type II + ISO 27001 auditExternal auditor engagement. Calendar-bound, not engineering-bound. Procurement gate for most enterprise buyers.
    3-6 months
  • First pilot customer on productionWe can ship all the code in the world and it's still marketing until one real exchange uses Sign in prod. ICP: mid-size Indian exchange post-WazirX.
    calendar
  • Formal verification (Tamarin / ProVerif)Machine-checked proof that the comparator never silently suppresses a critical mismatch class. Property-based fuzz (60K iters) ships today; formal proof is next.
    +6w
  • Immunefi-hosted bug bountySelf-hosted bounty page live today (see sign-bounty). Immunefi listing adds external escrow + credibility with pro researchers.
    +2w + escrow
  • BTC native PSBT parserBitcoin withdrawal UIs use PSBT (BIP-174). DMM Bitcoin's incident is currently represented in the corpus as an EVM transfer shape — a real BTC parser would surface native PSBT fields.
    +4w
  • Quarterly transparency reportIssuances, rotations, incidents, bounties paid. First report due Q3 2026.
    Q3 2026
Transparency commitment

Verify Sign without trusting Sign.

Five surfaces a security team can independently inspect — every claim above is backed by code, an endpoint, or a public log entry, not a marketing line.

1

Public authority pubkey

Every receipt pins the Ed25519 pubkey used to sign it. The current authority key is published at sign-api.zoza.world/v1/authority — fetch it, save it, verify any receipt offline.

2

In-browser receipt verifier

The live decoder above accepts a receipt JSON in addition to raw bytes. Signature verification runs in WASM in the browser — no Sign server involved in the verify path.

3

Bug bounty

Sign-class miss (a Bybit-equivalent that decoder failed to flag) = $5K – $50K depending on dollar exposure. Scope and disclosure SLA published alongside Zoza Shield's program — see Shield bounty page; Sign mirrors the same rules.

4

Source access

The client SDK is open-source MIT (@zoza/sign on npm, github.com/CoreCogitAI/sign-js-sdk). Server-side decoder + receipt-signing code is source-available under NDA for paying customers and external auditors — broader release queued behind compliance review.

5

Incident disclosure SLA

Critical bug fixed → disclosed publicly within 72h. Mirrors the Shield + Vault commitment. Quarterly transparency report (issuances, rotations, audits) published alongside.

6

No silent updates

Every change to the decoder (new method signature, new chain) ships behind a versioned endpoint (/v1/decode never breaks; new behaviour goes to /v2/decode). Old receipts stay verifiable forever.

Architecture

Three layers. One job: catch the UI-vs-bytes lie.

🔍

1. Independent decoder

Reads raw broadcast bytes — not what the wallet UI says. Parses chain ID, nonce, gas, destination, value, calldata, method signature. Recognizes ERC-20 transfer, approve, infinite-allowance, and contract upgrade calls.

products/zoza-sign/sign.go · DecodeRawTransaction
⚖️

2. Intent comparator

Field-by-field diff between claimed UI intent and decoded reality. Critical-severity flag on destination address mismatch (Bybit class) and amount mismatch (skim class). Warning on type mismatch (transfer claimed, approval signed).

compareIntentVsDecoded · 4 mismatch classes
📜

3. Signed audit receipt

Ed25519 signature over {verification_id, exchange_id, status, timestamp}. Tamper-evident: change any field and signature invalidates. Customers store receipts for FATF Travel Rule + post-incident audit.

SignedReceipt · ed25519 with context "sign_receipt"
🔐

4. Out-of-band by design

Sign runs on different infrastructure (sign-api.zoza.world) from the wallet UI. Even if the wallet stack is fully compromised, the bytes Sign sees are the bytes the chain will see. The compromise can't reach Sign's read path.

deployed independently · zoza-products gateway

Integrate in 30 minutes.

REST API, signed receipts, free decoder for end-users. Apply for an API key — we review within 24h.