Skip to content
Heiswap Dapp - Mix and Mask your Ethereum Transactions!
JavaScript HTML CSS
Branch: master
Clone or download
Latest commit 61901f0 Jul 23, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
contracts fixed fees variable Jul 22, 2019
public bamp Jul 3, 2019
src sign before withdrawing Jul 23, 2019
test lsag tests Jul 6, 2019
.DS_Store Content and light UI changes Jul 5, 2019
.flowconfig connect button Jun 27, 2019
.travis.yml travis stuff Jul 22, 2019
LICENSE Initial commit Jun 27, 2019 signs message before getting Jul 23, 2019
package.json .. Jul 23, 2019 netlify Jul 6, 2019
truffle-config.js deployed to ropsten Jul 2, 2019
yarn.lock .. Jul 23, 2019

Heiswap Dapp

Branch Status URL
master Build Status

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 and EIP1895.

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.

Verifying Contract on Etherscan

  1. Deploy to etherscan. (truffle migrate --network ropsten)
    • Remember to export ENV vars ETH_SK and INFURA_KEY
  2. Install truffle-flattener
  3. Flatten source files: truffle-flattener contracts/AltBn128.sol contracts/Heiswap.sol contracts/LSAG.sol > /tmp/etherscan.sol
  4. Upload single large file (/tmp/etherscan.sol) on to etherscan to verify, remember to add the library addresses from src/contracts/Heiswap.json -> links.

Special Thanks

This project would not have been possible without the existence of other open sourced projects, most notably

You can’t perform that action at this time.