All projects

Umbra Protocol

Privacy-preserving token vesting on Ethereum using stealth payments and Chainlink CRE.

Privacy World

What it is

Umbra Protocol solves a fundamental problem in on-chain compensation: transparency. Today, every vesting schedule is fully visible anyone can see who's getting paid, how much, and when. For DAOs compensating contributors or companies paying teams on-chain, this is a serious privacy leak.
Umbra enables private token vesting through two privacy classes. Class I (Schedule Metadata Privacy) hides the beneficiary entirely only a commitment hash is stored on-chain, while the real identity is known only inside a Chainlink CRE workflow running in a TEE. Class II (Payment Receipt Privacy) uses stealth payments via ECDH key exchange to generate one-time recipient addresses, making token transfers unlinkable. The protocol is built as an EIP-2535 Diamond proxy with 9 facets, deployed on Sepolia. Vault owners deposit tokens, create vesting schedules (public or private) and Chainlink CRE workflows automatically handle the release cycle polling on-chain state, computing vested amounts, verifying World ID proofs to prevent sybil attacks and executing releases. Beneficiaries simply claim when ready.

How it Works

Smart contracts: Solidity 0.8.29 using the EIP-2535 Diamond pattern with 9 facets (Vault, Vesting, Stealth, WorldID, AccessControl, Admin, Pause, DiamondCut, DiamondLoupe) and 7 libraries using diamond storage. Deployed on Ethereum Sepolia.

Chainlink CRE: Two workflows vesting-release and stealth-release written in TypeScript, compiled to WASM. The vesting workflow polls vault schedules, computes linear vesting with cliff, optionally verifies World ID via ConfidentialHTTP and triggers on-chain releases. The stealth workflow derives ECDH stealth addresses and pushes tokens to one-time addresses.

Privacy: Class I uses beneficiaryCommitment = keccak256(beneficiary, salt) on-chain with preimages stored only in CRE TEE. Class II uses secp256k1 ECDH for stealth address generation. World ID integration prevents sybil attacks on private schedules.

Frontend: Next.js 16, React 19, wagmi 2, viem 2, RainbowKit 2, Tailwind 4. Deployed on Render.

Testing: 72 Foundry tests across VaultFacet, VestingFacet, StealthFacet, AdminFacet, and WorldIDFacet. CRE workflows simulated using @chainlink/cre-sdk TestRuntime with mocked on-chain state.

Links

Created by

  • Akanimoh Osutuk