This project combines OpenGSN, pTokens and Tornado.cash in a single package which is as simple to use for Bitcoin users as Tornado.cash is for Ethereum users. We have achieved such a simplicity that Bitcoin user's won't even know that they use Ethereum (they will not have to deal with Ethereum accounts at all).
How It's Made
At the core of our project is a modified tornado cash mixer. The modifications are as follows: 1) The contract extends BaseRelayRecipient - support for OpenGSN; 2) the contract calls redeem function on pBTC token contract during withdrawal - that way the tokens are directly sent to the BTC address Second contract the project uses is a Paymaster. This contract handles the logic of paying for meta transactions. The user interface is a web app built in ReactJS and Typescript. This web app communicates with a server which is written in nodejs and Typescript. The main functionality of the server is to grab a user's signed relay request and broadcast it to the relay when the pBTC is deposited to the Ethereum account we have generated for a user. Another piece of infrastructure we have built is a modified withdrawal relay. The relay source code was forked from the official Tornado.cash relay.