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).
At the core of our project is a modified tornado cash mixer. The modifications are as follows:
The contract extends BaseRelayRecipient - support for OpenGSN;
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.