project screenshot 1
project screenshot 2
project screenshot 3

Oculto

Pay and unlock content, in a private way, directly with your Lens account. Pay back your friends, donate without censorship, and pay for private unlockable content, anonymously with ZkBob.

Oculto

Created At

ETHGlobal Lisbon

Winner of

trophy

🏊 Polygon β€” Build on Polygon

trophy

πŸ₯ˆ zkBob β€” Best Use

trophy

🏊 Scroll β€” Deploy a Smart Contract

Project Description

In everyday life, we often make payments, whether between friends or to professionals, by credit card or cash. In both cases, our friends or the merchant can't see how much we have on our account, why shouldn't it be the case with cryptocurrencies?

For this project, we developed a solution, integrated with Lens (but which can be used on all platforms supporting XMTP), which allows, thanks to ZkBob, to pay anonymously.

The principle is quite simple: a user can make a request or a sending of money (a bit like the solutions offered by neobanks and a very famous phone brand). We need two pieces of information: the amount and the address of the receiver (who must have an address on zkBob), and that's it! Once we have this information, the user who wants to send the money just has to validate the transaction and it's done.

For content unlocking, the principle is similar: a user will request content from a person, who will then request payment. Once the payment is made, the person will send the content. We can imagine an integration with an automatic content unlocking, but then we lose a bit of anonymity, because we have to find a solution so that we can know which person paid for the content (we can generate an address per payment, then we have to store it somewhere, the buyer has to trust the seller, but we think it's still better than an intermediary, which can have flaws). We haven't implemented this part completely (because you need a "standard" to send an image over XMTP before) but the idea is interesting enough to be described here.

We have also developed a swap smart contract so that it is possible to send any ERC20 directly.

There are many applications for a project like this, from simple payment between friends while protecting your privacy, to donations in countries where censorship (of the press for example) is high and doesn't allow you to freely send your money to certain organizations, as well as purchasing "private" content.

How it's Made

For this project, we mainly used Lens, XMTP and ZkBob. We forked Lenster to ease the integration, keeping only the messages part. The messages sent on Lens use the XMTP protocol, so the user can send a request or a donation on Lenster, and it is the XMTP protocol that will be used to transmit it. The information to be transmitted is also transmitted by XMTP. Then zkBob is used to send the funds (the Metamask transaction).

The technologies of the sponsors that we use are few but essential: first zkBob, which allows, from an EOA wallet, to send funds directly to a wallet of their zk. This is an essential brick, because without it, there is no anonymity.

Second, we use Lens Protocol. Without Lens, there is no easy integration flexibility, and you lose the whole "easy" payment solution via message, directly on a social network application. It would be possible to use XMTP directly, but we would lose all the social side that Lens brings, it is much more pleasant to use a social network application, which is integrated in our daily life, rather than a new site or application to use the "raw" protocol.

XMTP is not a sponsor technology, it is an end-to-end encrypted message exchange protocol developed for the web3. For images, there are several ways to do this, with few implementations at the moment in Lens frontends. So we chose to use an implementation directly in base64, because the implementations we saw with IPFS did not satisfy us, we prefer not to add an intermediary in the communication, even if it is a decentralized intermediary. For the needs of the smart contract, we used solidity.

This project allows a lot of anonymity, and brings with it a lot of questions, because it could potentially be hijacked for bad uses. It is up to each user of this solution to take his responsibilities and to use our solution responsibly.

background image mobile

Join the mailing list

Get the latest news and updates