SimpleMixer is a simple centralized Ethereum mixer that uses EIP-712 signatures for withdrawing funds. Users are able to deposit funds into the contract but they need a signature from the central server in order to retrieve the funds back.
The central server will emit a new EIP712 signed message. The user can now use that signature from a different public address to interact with the contract withdraw method. This method will check if the signature was signed by the central address and send the funds (minus a configurable fee).
All signatures on the mixer are using ECDSA since the mixer is made for EVM networks. The front-end generates a simple signed message to verify proof of the deposit transaction.
The central server will check that signature and if valid will generate a proper EIP-712 signature for the withdraw method of the contract.
Inside the contract the verification for the server signature is done using ecrecover. If the public address matches the central server public address then the signature is valid and the funds can be transfered.
On the backend Go is mostly used alongisde the go-ethereum library for parsing and generating signatures.
All the smart-contract and Solidity related parts are made with Hardhat.