Heiswap (黑 swap) is an Ethereum transaction mixer that ultilizes parts of CryptoNote to enable zero-knowledge transactions.
It ulitilizes Ring Signatures and pseudo-stealth addresses to achieve its zero-knowledge properties. The deployed smart contract handles the signature verification, while the client is responsible for generating the pseudo-stealth address.
Ring signatures was only possible on the EVM (gas-wise) due to the recent addition of EIP198.
You can play with the Ropsten version right now.
Project is a standard create-react-app
project, using truffle
to compile, migrate and deploy contracts.
Solidity files are located in contracts
, and compiled to src/contracts
Run yarn start
to run the project.
The proof-of-concept repository is located here.
- Deploy to etherscan. (
truffle migrate --network ropsten
)- Remember to export ENV vars
ETH_SK
andINFURA_KEY
- Remember to export ENV vars
- Install truffle-flattener
- Flatten source files:
truffle-flattener contracts/AltBn128.sol contracts/Heiswap.sol contracts/LSAG.sol > /tmp/etherscan.sol
- Upload single large file (
/tmp/etherscan.sol
) on to etherscan to verify, remember to add the library addresses fromsrc/contracts/Heiswap.json
->links
.
This project would not have been possible without the existence of other open sourced projects, most notably