About

This website is maintained on the internet by this Raspberry Pi, a $50 credit-card-sized minicomputer. While the device is capable of serving the website directly, the secret is that it broadcasts the content over the Inter-Planetary File System (IPFS) network. That content is downloaded and rebroadcast by several other servers around the internet. Anyone who downloads that content also helps broadcast the IPFS content. The Raspberry Pi (RPi), is just a backup as a last resort, in case no other systems on the internet have the content.

Copies of this site can be accessed in several different ways:

Videos - Learn More


How it Works

Content on the IPFS network is linked by its hash. A hash looks like this:
QmNuGu4moPdCu3Rrnia77k3wDS2v4jLxmyiE68N7fGEDv5
The cryptography behind these hashes ensures that any random person can provide a copy of the conent, and you can be sure it hasn't been tampered with. But the downside is that any time a piece of content (like this website) is updated, the hash must also change, and that change must be broadcast to the people who want to access the content.

IPFS has a general solution to this problem called IPNS, which can be very slow. Instead, this site uses the Bitcoin Cash Blockchain (BCH) to syndicate updates. The uncensorable nature of the BCH blockchain ensures that updates to the site can not be blocked, and links to past and present conent can not be lost.

This new, permissionless, censorship-resistant form of publishing makes use of a few tools that I created:

  • koa-ipfs-blog is the 'back end' web server running on the Raspberry Pi pictured above (Here is a version for the Raspberry Pi). It serves the content in a conventional way, but also syndicates it over the IPFS and Tor networks.
  • gatsby-ipfs-boilerplate is the 'front end' website template used to create this site. You can fork it to create your own website. It includes all the prerequisits for syndicating your site over the IPFS network.
  • memo-push is a tool used to publish the IPFS link on the Bitcoin Cash blockchain, using the Memo.cash protocol. It's important to note that Memo.cash is just a site. The data can be accessed directly off the BCH blockchain.
  • IPFS Cacher (optional) finds the latest link published to the BCH blockchain the requests the IPFS content from a list of public IPFS gateways once per hour. This ensure that the gateways have the latest website updates on-hand and can provide the content to the network too.


Decentralized Publishing Model

Below is a model illustrating the different ways this website can be accessed over the internet.

  1. The website is updated on a Dev Box. Updated content is uploaded to the IPFS network and the new link is published to the BCH blockchain.
  2. The Raspberry Pi periodically checks the BCH network for updates published to a specific address. If an update is detected, the updates are downloaded from the IPFS network.
  3. The Rasberry Pi then serves the content over the clearnet and Tor darkweb. It also begins pinging IPFS public gateways so that other servers begin downloading and syndicating the IPFS content.
  4. Mirror servers, Random IPFS users, and distributed web apps (dapps) can independently and permissionlessly check the BCH address and syndicate the IPFS data too. This all taps into the Streisand Effect, causing content to be easier to syndicate if an authority-in-power tries to censor it.


How You Can Help

You can help distribute this site and any other content on IPFS by running your own node and pinning the content. This allows your node to download and share the content with anyone else in the network.

  • Install IPFS on your own computer.
  • Get the latest IPFS hash of this blog from this memo.cash feed.
  • Run ipfs pin add -r hash to download and share the content. Replace 'hash' with the hash at the top of the memo.cash feed.

You are now doing your part to fight censorship on the internet!