TIMEBack to home ↗

TIME real proof demo and test transfers

Try the demo without command-line tools

Return home, select the real proof experience and start the demo. No wallet, facial data, identity documents or personal information are required. The first run downloads proving artifacts from this site and performs real computation; it may take tens of seconds.

After real Groth16 verification passes, try resubmitting, changing application, changing epoch and tampering with a proof. Results come from actual verification code. Insufficient browser support or memory produces an error, never a simulated proof.

What this demo verifies

The browser temporarily generates eight random synthetic identities and uses Semaphore 4.14.5 to prove membership in a local group. Depth-4 WASM/zkey artifacts are checked with SHA-256 at build time and before use. Proof computation runs in a dedicated Web Worker; the main UI does not receive identity secrets.

The current demo session rejects a reused nullifier within the same application and epoch. Changing application or epoch produces a different nullifier with a valid proof. Modifying a proof point fails verification. Replayed proofs can remain cryptographically valid; rejection by the session replay store is reported separately.

This is not official identity verification

All eight identities are created by one browser; they are not eight real people. The demo does not verify personhood or uniqueness, perform anonymous issuance, grant official eligibility or issue tokens. Replay records exist only in Worker memory and reset on refresh, clearing or closing. There is no shared database or cross-browser replay protection.

Different application nullifiers demonstrate scope separation, not comprehensive unlinkability. Network, timing, messages, group membership and recovery records may still link users. Biometric deduplication, anonymous issuance, recovery linkage and replay protection after key replacement remain unresolved.

Test token transfers

A browser wallet and Base Sepolia test ETH are required. Connect and deploy a personal test TIME contract, then enter the public recipient address and amount and review the confirmation. Your wallet signs every transaction. This site does not obtain private keys.

Transfers are restricted to chain ID 84532 and require runtime bytecode matching this site’s TIME draft. Zero addresses, zero amounts, more than 18 decimal places, insufficient balance, bytecode mismatches and wrong networks are rejected. Deployment and transfer operations are mutually exclusive to prevent rapid duplicate submissions.

Actual verification scope

Twelve recorded code tests passed: seven TIME/local Uniswap V2 tests and five real Semaphore demo engine tests, including parent tests. Browser checks exercised real proofs, replay, application and epoch separation, tampering, clearing and mobile layouts.

Browser transfer tests used a synthetic wallet transport and a local in-memory EVM. After deploying 1,000 tokens and transferring 1.5, balances were 998.5 and 1.5, with exactly one deployment and one transfer. Wrong network, wrong contract, rejected signing and duplicate clicks were checked. Public-testnet, real-wallet-extension and mainnet acceptance are not claimed.

Open source and limitations

The browser demo combines GPL-3.0 dependencies including snarkjs and ffjavascript. Corresponding demo source and licenses are provided. The TIME token contract retains its MIT license. Identity secrets are not uploaded but remain in browser process memory; clearing terminates the Worker and drops references, without guaranteeing hardware-level erasure.

Dependency scans still contain security advisories, including development tools and transitive dependencies. No independent security audit is complete. Use synthetic data only; do not process real identities or control real funds with this demo. The website is not a production identity service, and TIME has not been officially issued or listed.

← Back to home