Search projects, hackathons, sponsors and tech

    ← All projects

    Levarac

    A peer-to-peer check of who was really there: phones that meet sign.

    Demo

    About

    Try it: install the Beid app from its public iOS beta (https://testflight.apple.com/join/2DNXhfTR), then open the human-check join page (https://alcor-human-check.levarac.workers.dev/, World ID staging). Code, deployments and verification steps: https://github.com/levarac/mizar Levarac answers one question for people who run events and apps: was this user really there, and did they actually meet anyone? Today the choice is an open allowlist that gets farmed, or a strong check built on private data that nobody outside can audit. Levarac is our ongoing project. Its Parallax protocol lets attendee phones record rotating Bluetooth identifiers of nearby phones and sign what they saw. An operator service anchors ordered commitments of those signed observations on Sepolia. That evidence layer, the Beid attendee app and the Barnard BLE library existed before this hackathon. At ETHGlobal Tokyo we built the part that turns this evidence into a fair, checkable reward list: - Alcor, a human check. At join time the attendee proves with World ID (IDKit 4) that they are one person, and Alcor binds that World ID to exactly one event key for the event and publishes a signed credential list. A second key from the same person is rejected. - Mizar, an evaluator and batch claim. A fixed public rule counts a key only if it has mutual, signed observations with at least N distinct credentialed partners, in at least B separate time windows per partner. The evaluator publishes a manifest, the eligible list and Merkle proofs; a root poster posts the root to a claim contract on Sepolia; each person then claims an EAS attestation with a signature from their event key. - Anyone can recompute the list from the published inputs. Changing one bit makes verification fail. Ten phones held by one person still count as one person, and walking in without meeting anyone is not enough. What it does not do: it does not prove physical location, and it does not stop Bluetooth relays or verified people who agree to lie together. Alcor is a trusted attester in this version, because it verifies World ID off-chain. Claims link an event key to a wallet publicly. Status at submission: the claim contract and EAS schema are deployed on Sepolia (source verified on Sourcify), the Alcor service is live on World ID staging, and a read-only evaluation of the live demo event passed with 0 eligible keys because no phone had done the human check yet. The claim page, the first posted root and a live claim are still pending.

    How it's made

    Pre-existing: - Beid, the attendee app (iOS/Android), public at github.com/levarac/beid. Its UI redesign continued in parallel during the event; that work is not part of this submission. - Barnard, the BLE sensing SDK (Swift/Kotlin, MIT), public at github.com/levarac/barnard. - The Parallax evidence layer: a Cloudflare Workers operator service and Solidity evidence contracts on Sepolia. This repository (levarac/parallax) is private, so judges cannot inspect it. Two evaluator files in Mizar carry "Ported from the pre-existing evidence-layer reference" headers, and the mutual-pair function follows its relation derivation; everything else in Mizar is new. Built during the hackathon: - levarac/mizar (MIT), first commit 2026-09-25 23:53 JST: a Solidity claim contract (Foundry) that stores snapshot roots, checks a Merkle proof plus a typed signature from the event key, allows one claim per key, and calls EAS attest with a non-revocable schema; a TypeScript evaluator (ethers, @noble/curves, OpenZeppelin merkle-tree, CBOR/COSE parsing) that checks observation, commitment and credential signatures, applies the N/B rule, and has a verify mode that rechecks the posted root and RootPosted event on Sepolia; a claim page (Vite, viem, Cloudflare Workers); a local E2E runner on Anvil with a mock EAS; and a comparison of the same synthetic evidence under three rules. - levarac/alcor (MIT), first commit 2026-09-25 23:53 JST: a Cloudflare Worker with D1 that verifies World ID proofs through the World Developer Portal v4 verify API, binds one nullifier to one event key per event with a unique constraint, and signs the credential list with Ed25519; and a join page using IDKit 4 (`@worldcoin/idkit-core` 4.3.0). - In Beid iOS: a small entry point that shows the request and signs a typed message with the event key for the join page and claim page (branch feat/event-key-signing-entry, commits 95b965a to ebcbfab, 2026-09-26 03:11 to 15:45 JST; not yet merged to Beid main). Partner technology: World ID is what makes the rule work. Without it, one person with ten phones is ten partners. With it, each event key needs its own verified human, and the evaluator only counts credentialed keys, including partners who never claim. Notable choices: eligibility is batched into one root per snapshot, but each person claims individually with their own signature, so wallets never appear in the public inputs. Rotating identifiers that are claimed by more than one signing key are dropped. World ID actions are derived from the event ID, so nullifiers do not link a person across events.