Censorship Resistance in InfinitumX
We run a website and as a result of that, we run it within the laws and regulations of countries InfinitumX is hosted at and we will have to obey those rules. Along side that, some territories might choose to completely ban InfinitumX altogether, perhaps someone uploads something that offends the fragile ego of a dictator. It has happened.
InfinitumX is designed to be censorship-resistant and preserve as much privacy as possible. This is achieved by:
- Collecting zero user information when interacting either directly with the Solidity contract or through the website. A Metamask integration is all that is needed.
- The images on the board are all hosted via IPFS and the hashes of the uploaded files are saved on chain for each square. The resulting collage is hosted through our servers and is subject to censorship imposed by local laws, but open source tooling will be provided to create or host the resulting collage yourself.
- You can directly enter an IPFS hash (a CID) into the square, completely bypassing InfinitumX as an intermediary entity.
Our strategy has been to know the bare minimum about our users. We don't need to capture emails to make the site functional, there is no direct image upload link between the frontend and our servers (done via IPFS) and we've provided the means of interacting with the contract directly and also the ability to produce the end result image collage all by yourself (Code will be shared opensource).
How the decentralized image upload works
We've designed the image upload and processing in such a way that anyone can render and host the collage created by InifinitumX. See the diagram below:
- InfinitumX frontend interact directly with the Polygon contract via Metamask. The user purchases a square and sets the image directly via two distinct Polygon network transactions.
- While the transaction goes through, a full IPFS node hosted within the user browser comes online, hosts the image for the rest of the network to "pin".
- The frontend refreshes its view of the board by calling an API endpoint, this is a read only step.
- Once the transaction goes through, a contract event is raised which a notification system on InfinitumX backend keeps listening to. The censorship snooping happens in this step. The image is read through the IPFS network, analysed by an image recognition AI for various hate symbols, nudity and other illegal content, and if it seems suitable, the image is pinned to guarantee later access.
- Notification service triggers the image renderer service to get this new image, place it on top of the state of the board so far and host the new resulting collage.
So while the responsibility of image hosting is delegated to IPFS and all the cid
s are on the chain, removing InfinitumX as an intermediary, we still pin and host the resulting image. So how can one overcome this?
Bypassing InfinitumX as an intermediary
As mentioned, InfinitumX backend picks which images it wants to pin through IPFS. That means if it finds an image objectionable, it won't pin the image and if no other node pins it, it will be lost in the ether forever.
But fret not, we've added the functionality to direct enter an IPFS cid
in the application.
This essentially means you can host your own IPFS node (easily done, see here) and host your images yourself and directy enter the resulting cid
in the frontend.
This deals with InfinitumX backend refusing to pin an image, but there is still a layer of potential censorship when building the state (the collage of images) and hosting it on our website. We could still be forced to not render a certain image on the collage because of the contents. To overcome this, we are essentially releasing most of our backend (image rendering services) as opensource software. In this way, anyone can run the renderer locally and end up with a censorship free final image collage.