MGP 9.1: US$20,000 for BlockX to build a web UI for the Hopper mixer
The team behind the Argent Wallet have developed a noncustodial Ethereum mixer named . This proposal seeks funding to grant the BlockX team US $20,000 (72 shares) to develop a web UI for Hopper.
A mixer is a general term for a mechanism which breaks traceability between a sending address and destination address. Mixers are important as Ethereum transactions are public by default and susceptible to chain-analysis. This reduces users’ privacy.
Some mixers, like , are custodial, which means that they can spy on users, be shut down, or steal users’ funds. Others, which are under active development, are noncustodial, which means that they allow users to retain full control over their funds while providing privacy via cryptographic techniques.
There currently are two active efforts underway to develop a noncustodial mixer: The Hopper mixer and the .
The Hopper mixer contracts are already live on a testnet and have a working iOS user interface. Unfortunately, they do not support desktop browsers. This reduces the number of potential users and, in turn, its anonymity set.
The Semaphore mixer is still under development, and aims to deliver a web UI, smart contracts, and zk-SNARK circuits. The Semaphore team views the Hopper mixer as complementary and they hope to work together to benchmark both approaches, enhance research and development, and ideally converge on a single mixer.
As such, a web UI for Hopper is the lowest-hanging fruit. In the immediate term, it is the most cost-effective way to enhance privacy for the largest number of users in the shortest amount of time.
The selection process
After Vitalik a technical proposal for a mixer in May 2019, Ameen put out a call for candidates on social media for developers to be funded to build it. He subsequently got in touch with Wei Jie, who was already working on the Semaphore mixer. They interviewed 7 teams or individuals to understand their technical skills and time availability. They narrowed the field down to two teams, gave them a scope of work, and asked for time and cost estimates. Finally, they compared the quotes and chose .
BlockX Labs is a Toronto, Canada based blockchain development shop with expertise in pushing technology and product boundaries. They have deployed over a dozen of applications to production for our clients throughout the globe. Below are some of the projects they have deployed in just the last 12 months:
- DApp Wallet for AION Network -
- Universal Faucet for AION, Ethereum, PolkaDot, Edgeware, Robonomics, Stellar (and more to be added) -
- Block Explorer for OneLedger -
- DApp Wallet for PolkaDot Network -
- Decentralized Exchange Genesis (Android) -
- Decentralized Exchange Genesis (iOS) -
For this project, Jesse Abramowitz (blockchain developer) will be the main developer and Kush Patel (CTO) will oversee the technical architecture. They will be supported by other blockchain developers from BlockX for brainstorming, solutioning, and debugging of the project.
- Kush’s profile -
- Jesse’s profile -
BlockX Labs’ ETH address to receive funds: 0x3274e22d86cc21778df15836833e147b1894d3e4
Scope of Work
Anyone with a modern desktop browser (e.g. Chrome 75) and a web3 wallet (MetaMask and WalletConnect) should be able to use a web interface to interact with the Hopper contracts already deployed on mainnet to mix their ETH.
This UI should be static so there’s no need for a backend server. Wei Jie (me) is working on a for the Semaphore-based mixer, and we encourage as much code reuse as possible.
Subgoals (the ultimate goal broken down into parts)
- Deploy the Hopper contracts on a testnet and use this web UI to mix testnet ETH.
- To integrate this the JS prover which Haarold develops for the Hopper zk-SNARKS.
- The JS prover should be able to generate withdrawal proofs to let the user withdraw their funds into the destination address. Collaborate with Haarold on this as they’re the point-person for this component.
- Basic unit tests and integration tests of the prover.
- Documentation and source code
- Anyone running a modern version of Linux (e.g. the latest Ubuntu LTS) should be able to copy and paste up to 5 commands from a README or documentation file to build, run, and deploy the UI. See for an example of succinct but complete instructions for developers.
- The full source code of everything developed.
- A document with step-by-step instructions on how to use the web UI. Assume that the reader already owns ETH and knows how to use MetaMask to make transactions.
- Make changes to the web UI which WJ is working on for Semaphore as Hopper requires some custom UI work. WJ’s web UI should include the following and be ready by 12 July:
- Basic web3 wallet and network detection
- A page to deposit ETH and specify a destination address.
- A withdrawal page where the user sees a countdown timer in the UI to schedule withdrawals shortly after midnight UTC. So if the user deposits at 3pm UTC on 1 Jan, it will wait for 9 hours, plus 0-15 minutes, to withdraw the funds. The user has to keep the tab open so that the UI can automatically perform the withdrawal at midnight.