UnSend

Reversible ERC-20 transfers you can cancel before they land.

UnSend

Created At

ETHGlobal Lisbon 2026

Project Description

UnSend adds an "undo" to ERC-20 payments. It wraps any token 1:1 (like WETH) into a reversible version and lets you send with a short timelock instead of instantly and irreversibly.

Before the timelock ends, the sender can cancel and get every token back — great for a wrong address or amount. After it ends, the recipient claims the funds (many at once in one call), or the sender can release early. Normal transfers stay instant and final, so reversibility is opt-in per send. A factory deploys one canonical wrapper per token.

How it's Made

A Solidity contract built on OpenZeppelin v5: we extend ERC20Wrapper for 1:1 wrap/unwrap.

Pending transfers are keyed by a monotonic id with O(1) operations. Funds sit as the wrapper's own tokens at the contract address, so every send/cancel/claim emits a real ERC-20 Transfer event and stays fully backed. A factory deploys one wrapper per token. Built and tested with Hardhat 3, viem, and TypeScript.

background image mobile

Join the mailing list

Get the latest news and updates