Search projects, hackathons, sponsors and tech

    ← All projects

    Catenor One

    Tokens prove who holds. Catenor proves who may be paid today — one DID, checked confidentially.

    Demo

    About

    Catenor One is the first reference implementation of Catenor Protocol, an open protocol for canonical identity and verifiable authority for humans, organizations and agents. The problem: tokenized assets prove who holds them, not who may be paid today. A wallet is not an identity, a relationship is not a capability, and a validly signed credential is not current eligibility. Catenor gives every subject a persistent did:catenor identity that is independent of wallets and identity providers. Organizations become Trust Anchors through a confidential admission. Authority flows as explicit, scoped capabilities that can be delegated but never exceed the delegator's. Investors hold W3C Verifiable Credentials. Every payout is gated by a confidential decision about current eligibility. The live demo ran end to end on testnet (24/24 stages). A Trust Anchor is admitted by a deployed Chainlink Confidential Workflow and authorizes a Sponsor. The Sponsor tokenizes a synthetic real-estate SPV on Hedera Asset Tokenization Studio and issues 600 and 400 units to two investors whose KYC passed in the Sumsub sandbox. A dividend is declared, with entitlements of 6 and 4. Then one investor is sanctioned. He still holds his 400 units and a valid credential, but the TEE re-checks today's evidence and decides HOLD. A Privy-controlled Distribution Agent, authorized only through delegation, pays the eligible investor 6 HBAR and never even requests a signature for the other. Every DENY path is part of the demo: a capability used outside its scope; an agent with a wallet but no capability; a relationship without a capability; a non-delegable action. Everything is verifiable: the CRE execution IDs, the HashScan transactions, the Privy policies and a hash-chained audit log. Honest labels: the Sumsub sandbox uses synthetic applicants, the company KYB in the admission is a synthetic mock, and Hedera runs on testnet.

    How it's made

    Architecture. A TypeScript monorepo built as spec-driven vertical slices against a pinned protocol baseline. Framework-free domain packages: identity, credentials, authority, policy and audit. An API and a clean-room stage runner of 24 numbered scripts. Postgres through Prisma on Railway, used only as an index. The proofs are the signed documents and a hash-chained audit. Identity and credentials. Random did:catenor identifiers, with DID Documents that carry Ed25519 verification methods. W3C VC 2.0 with Data Integrity eddsa-jcs-2022 (RFC 8785 JCS). Verifiable Presentations bound to a challenge and a domain, checked by seven named checks. Issuer-signed status statements. Authority. A Trust Anchor admission whose bootstrap configuration is pinned by hash, decided by a deterministic policy and endorsed by a separate bootstrap key. Relationships kept apart from capabilities. Delegation chains checked for scope, delegability and validity windows. Chainlink CRE. One Confidential Workflow, identity-confidential, runs five operations with cre.handlerInTee: admission, investor eligibility, credentials, offering eligibility and the pro-rata PAY/HOLD distribution. The Sumsub API keys come from the Vault DON, and the signed Sumsub calls are made inside the enclave. The trigger context is sealed with AES-256-GCM, using HKDF-derived keys, so the trigger payload carries no plaintext. Only facts, decisions and commitments come out, through an HMAC-authenticated callback. It was deployed to the private registry twice; the second deploy pins the Trust Anchor's key as the only accepted issuer. It is triggered through the gateway's JSON-RPC with an ETH-signed JWT, paced to respect the rate limit. The notable part: a store-and-forward relay on our Railway API lets a local runner receive TEE results. We also found that the documented private-registry gateway answered "Workflow not found" for our org, and proved with a control workflow that the CLI's gateway works. Privy. Every key is a Privy server wallet under a Catenor-created policy. Management-owner keys stay outside the runtime, and the runtime signers are override-scoped key quorums, so the service can never loosen its own limits. The credential-signing wallets allow signMessage only. The SPV wallet may only call the ATS Factory on chain 296. Then owner-authorized calldata rules pin issueByPartition, grantRole and setDividend to the new equity. The Distribution Agent may only pay the two investor wallets, up to 20 HBAR. The investor wallets are receive-only. Transactions are signed with eth_signTransaction for Hedera's EVM, behind a signer-boundary check that the signed transaction equals the prepared one. Hedera ATS. The official ATS v8 contracts on testnet, driven through their typechain bindings with ethers v6. deployEquity through the Factory. issueByPartition, only for the exact units approved by a TEE-backed ALLOW decision. grantRole and setDividend, with the entitlements read on-chain. The payout, as an HBAR transfer from the Agent. A public verification script that uses only the JSON-RPC relay and the Mirror Node. Front end. A static site on Vercel: a landing page, a click-through replay console of the recorded run (with live Mirror Node checks) and the full evidence history. AI. Built with Claude Code, with project subagents for CRE, Privy and Hedera. Every prompt, plan and provenance entry is in the repo.