← Back to home

schwarzschild

a protocol that combines zkwormholes and stealth addresses for better ux and plausible deniability

Problem Statement

The Stealth addresses (ERC5564) protocol allows the to derive fresh wallet addresses of the recipient that are unlinkable to the recipients main account. However the recipient still needs to claim all of these funds in a privacy preserving manner. The perfect match to solve this issue are zkWormholes (EIP7503), a method to keep the sender anonymous in a private transaction while also achieving plausible deniability by burning the token and privately re-minting it to a fresh account.Schwarzschild solves this by blending both approaches to achieve a fully unlinkable transaction graph. In other terms this is a privacy protocol where both the sender and recipient are private, and it also adds plausible deniability which is novel property from zkwormholes.

Solution

ENS was used to enhance the experience of the user, by allowing them to either input the recipient ens or wallet address that will then eventually resolve to an ens name. We used it mainly as a registry for the metaKey that is being used to derive fresh accounts (stealth addresses).Hardhat 3 is very good, faster than 2, modern ESM is great, unit testing and deployment just easy to use in general.We used NOIR lang to craft two Circuits that are proving that the tokens are burned and can be re-minted on a fresh address.The Main contract is written in Solidity with a verifier generated by aztec bb proof system.For the frontend we chose Svelte with Svelte-shadcn as the UI lib. We feel like Svelte provides a better DevX and is easier to manage than react, but we had to build some web3 component from scratch because the Svelte ecosystem is not that big in web3 as it is the case with React.

Hackathon

ETHGlobal Buenos Aires

2025

Contributors