
FileSeal
A decentralised Ethereum dApp that lets multiple parties prove co-possession of a document on-chain — no file upload, no trusted intermediary, just a hash and a signature.
Problem
Multi-party document co-possession is typically handled by centralised platforms like DocuSign or Adobe Sign. These introduce a single point of failure, vendor lock-in, and require uploading file contents to a third-party server. FileSeal removes all three: no trusted intermediary, no file upload, no proprietary lock-in.
How It Works
A file's SHA-256 hash uniquely identifies its contents. FileSeal lets N parties each sign the same hash on-chain — collectively proving co-possession without the file ever leaving their devices. The hash is computed entirely in the browser using the Web Crypto API.
The system has three roles: an Initiator who creates the session and specifies participant wallet addresses; Participants who each submit an attest(fileHash) transaction; and Observers who can query attestation status without a wallet.
Smart Contract
Written in Solidity and deployed on Ethereum Sepolia. The core data structure pairs enumerable arrays (for listing) with O(1) mappings (for eligibility and duplicate checks), keeping attest() gas around 50–60k. Key design decisions include:
- No reverse index on-chain — "which files has this address attested?" is answered client-side via
eth_getLogs, saving ~20k gas per attestation. - Hard cap of 20 participants — prevents gas unpredictability from oversized arrays.
- Custom errors over
requirestrings — lower gas and precise frontend decoding viaInterface.parseError().
Frontend
A fully static React 18 + TypeScript app deployed on Cloudflare Workers. Supports both MetaMask and private key / mnemonic wallet import (key held only in component state, never persisted). The contract is verified on Sepolia Etherscan.