<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Bluish Coder: zeronet</title>
 <link href="http://bluishcoder.co.nz/tag/zeronet/atom.xml" rel="self"/>
 <link href="http://bluishcoder.co.nz/"/>
 <updated>2020-07-10T16:25:05+12:00</updated>
 <id>http://bluishcoder.co.nz/</id>
 <author>
   <name>Bluishcoder</name>
   <email>admin@bluishcoder.co.nz</email>
 </author>

 
 <entry>
   <title>ZeroMe - Decentralized Microblogging on ZeroNet</title>
   <link href="http://bluishcoder.co.nz/2017/10/12/zerome-decentralized-microblogging-on-zeronet.html"/>
   <updated>2017-10-12T21:00:00+13:00</updated>
   <id>http://bluishcoder.co.nz/2017/10/12/zerome-decentralized-microblogging-on-zeronet</id>
   <content type="html">&lt;p&gt;I wrote about &lt;a href=&quot;https://zeronet.io/&quot;&gt;ZeroNet&lt;/a&gt; a few years ago when it was released and it mostly was about &lt;a href=&quot;http://bluishcoder.co.nz/2015/01/15/decentralized-websites-with-zeronet.html&quot;&gt;decentralized websites&lt;/a&gt;. In the time between then and now it has gained a lot of features and regular use. It still does distributed websites well but it adds features suchs as support for sharing large files, merging sites and distributed pseudo-anonymous identity. This post is about an application hosted on ZeroNet called &lt;code&gt;ZeroMe&lt;/code&gt;. It&#39;s a microblogging platform (i.e. A twitter like system) that takes advantage of ZeroNet&#39;s identity system and merging of sites.&lt;/p&gt;

&lt;h2&gt;Starting ZeroNet&lt;/h2&gt;

&lt;p&gt;To start with ZeroMe you first need to &lt;a href=&quot;https://github.com/HelloZeroNet/ZeroNet#user-content-how-to-join&quot;&gt;install ZeroNet&lt;/a&gt;. Given all the right dependancies are installed you can clone the github repository and run the Python script to get online:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git clone https://github.com/HelloZeroNet/ZeroNet
$ cd ZeroNet
$ ./zeronet.py
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will start the ZeroNet node and run a local webserver on port &lt;code&gt;43110&lt;/code&gt; to access it. This port is available on the local machine only. It also opens a port on &lt;code&gt;15441&lt;/code&gt; to communicate with other nodes. This port is open to the internet at large and will attempt to punch a hole through firewalls using UPNP.&lt;/p&gt;

&lt;p&gt;If you have the Tor daemon running then ZeroNet will connect to it and bridge between clearnet nodes and nodes running on Tor. You can force the node to run only on Tor by providing a command line argument:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ./zeronet.py --tor always
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In this configuration ZeroNet will not expose the port &lt;code&gt;15441&lt;/code&gt; over the internet. It will spawn Tor onion services and expose the port to those for communication with other ZeroNet nodes running on onion services. Access to the local node is still done via port &lt;code&gt;43110&lt;/code&gt; but you should use a browser configured to use Tor if anonymity is a concern since sites can run arbitary JavaScript. The main ZeroNet &#39;Hello&#39; page warns you if you are not using Tor Browser in this configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet1.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet1.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Gaining an identity&lt;/h2&gt;

&lt;p&gt;ZeroMe requires an identity to be created. Identities are created through identity ZeroNet sites. The main one, operated by the creator of ZeroNet, is &lt;code&gt;ZeroId&lt;/code&gt;. When you first use a site that requires an identity you will be prompted to create one from any identity providers you have access to. For this example I&#39;ll use &lt;code&gt;ZeroId&lt;/code&gt;, accessible at &lt;code&gt;zeroid.bit&lt;/code&gt; - &lt;code&gt;http://localhost:43110/zeroid.bit&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet2.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet2.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;code&gt;Get auth cert&lt;/code&gt; and choose a username. There are two ways to make the request for the identity. The first is a request over the internet via HTTP. If you&#39;re not running the browser over Tor this will expose your IP address to the identity service. The other is using &lt;a href=&quot;https://bitmessage.org/wiki/Main_Page&quot;&gt;BitMessage&lt;/a&gt;, which is an anonymous messaging system. &lt;code&gt;ZeroId&lt;/code&gt; will request that you send a confirmation message to a &lt;code&gt;BitMessage&lt;/code&gt; address.&lt;/p&gt;

&lt;p&gt;This may seem very centralized - it requires the identity service to be running, if it goes down you can&#39;t create a new identity. There are other identity services on ZeroNet that have different requirements for creating an identity. And there&#39;s an API to create your own. Identities created using these work on any service using the ZeroNet identity API in the same was as &lt;code&gt;ZeroId&lt;/code&gt; identities.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;ZeroId&lt;/code&gt; site will show your identity name once you&#39;ve signed up:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet3.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet3.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From &lt;code&gt;ZeroId&lt;/code&gt; you can search for existing users and choose to &lt;code&gt;Mute&lt;/code&gt; or &lt;code&gt;Unmute&lt;/code&gt;. By muting a particular identity you won&#39;t see any posts from that identity. This is useful for dealing with spam or users posting on topics you don&#39;t want to see. This will prevent you seeing their content on any ZeroNet site.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet4.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet4.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can manage muted users from the &lt;code&gt;Hello&lt;/code&gt; page left sidebar menu:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet15.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet15.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Joining a ZeroMe Hub&lt;/h2&gt;

&lt;p&gt;Access &lt;code&gt;ZeroMe&lt;/code&gt; by activating the &lt;code&gt;ZeroMe&lt;/code&gt; icon on the main user interface or going directly to &lt;code&gt;Me.ZeroNetwork.bit&lt;/code&gt; - http://localhost:43110/Me.ZeroNetwork.bit/&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet5.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet5.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A prompt on the top right asks you to accept a merger site. Merge sites are a way to split large sites into a number of smaller ones. You should approve this request.&lt;/p&gt;

&lt;p&gt;Click on &quot;Select user to post new content&quot; to create a &lt;code&gt;ZeroMe&lt;/code&gt; user. It will prompt for an identity to choose and you can select the one already created in &lt;code&gt;ZeroId&lt;/code&gt; above.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet6.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet6.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once an identity is chosen you&#39;ll be asked to select a &#39;hub&#39;. &lt;code&gt;ZeroMe&lt;/code&gt; works by having the user interface operate from the main &lt;code&gt;ZeroMe&lt;/code&gt; site with data on users and posts stored in &#39;Hub&#39; sites. You only see posts from users that belong to hubs that you have requested. There is a hub operated by the &lt;code&gt;ZeroMe&lt;/code&gt; creator and it will be shown as &lt;code&gt;Sun hub&lt;/code&gt; on this page along with any other Hub sites you may already have requested. Click &lt;code&gt;Download&lt;/code&gt; on a hub to download existing posts and content for that hub and &lt;code&gt;Join&lt;/code&gt; to join one.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet7.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet7.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Downloading a hub can take some time. On the &lt;code&gt;Hello&lt;/code&gt; ZeroNet page you can see the progress of any sites currently being downloaded.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet8.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet8.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There&#39;s a useful site called &lt;code&gt;0hub.bit&lt;/code&gt; that lists known hubs and lets you download them all. It&#39;s at &lt;code&gt;http://localhost:43110/0hub.bit/&lt;/code&gt; and clicking the &lt;code&gt;Click me to unlock all hub post in ZeroNet&lt;/code&gt; will start downloading them. This takes some time but is worth it since you can then see all posts by everyone on &lt;code&gt;ZeroMe&lt;/code&gt;. You can delete hubs if you decide you don&#39;t want to see content from a particular hub.&lt;/p&gt;

&lt;h2&gt;Microblogging with ZeroMe&lt;/h2&gt;

&lt;p&gt;Now that you&#39;ve got an identity, signed into ZeroNet and joined a hub you can starting reading content and posting. The &lt;code&gt;Everyone&lt;/code&gt; tab in the user interface will show posts from all users, even those you haven&#39;t followed. This is useful at the beginning to find users and content.&lt;/p&gt;

&lt;p&gt;Posts are in Markdown format and can include images. There is no limit to the size of a post and posts can have comments. You can visit profile pages of users and choose to optionally seed their images, mute users, and edit parts of your own profile page to have an avatar and description:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet12.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet12.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An example of a post with comments (selected randomly, identities blacked out):&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet13.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet13.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Random stuff&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;ZeroNet&lt;/code&gt; node running on your machine enforces size limits for sites. This prevents sites that you have accessed from consuming all your disk space. When a site starts reaching the size limit it appears in the main &lt;code&gt;Hello&lt;/code&gt; page left sidebar in a special section:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet9.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet9.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the site goes past the limit it will no longer download updates. Visiting the site will give a popup asking to increase the limit. Approving that popup will resume downloads for the site until it hits the next limit.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet10.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet10.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There&#39;s a sidebar on the right of pages that can be accessed by dragging the top right &lt;code&gt;0&lt;/code&gt; icon to the left:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet11.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet11.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This sidebar gives statistics on the number of nodes seeding the site, the size limit, and various other things.&lt;/p&gt;

&lt;p&gt;When you visit a ZeroNet site you starting seeding that sites content and receive automatic updates when the content changes. This can be disabled on the main &lt;code&gt;Hello&lt;/code&gt; page on a per site basis. Sites can have &quot;optional files&quot; which you don&#39;t automatically seed. They are downloaded on demand and are often used for user generated content or larger files. You can choose to seed a sites optional files in the right hand sidebar for that site. There are also &quot;Big Files&quot; which are treated specially. These are large files like videos and are also optionally seeded. The &lt;code&gt;Files&lt;/code&gt; tab of the &lt;code&gt;Hello&lt;/code&gt; page lists optional and big files that you are seeding:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://bluishcoder.co.nz/images/zeronet14.png&quot;&gt;&lt;img src=&quot;http://bluishcoder.co.nz/images/zeronet14.png&quot; width=320&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sites can be set to allow cloning by end users. This creates a copy of the site with no content. An example of a site that does this is &lt;code&gt;ZeroBlog&lt;/code&gt; which you can clone to create your own blog. This extends to &lt;code&gt;ZeroMet&lt;/code&gt; itself. You can clone the &lt;code&gt;ZeroMe&lt;/code&gt; user interface site and modify that to get a customized look but it still uses the data from the existing hubs.&lt;/p&gt;

&lt;p&gt;There&#39;s a bunch of other interesting sites on ZeroNet. The &lt;code&gt;ZeroTalk&lt;/code&gt; forums, various blogs, &lt;code&gt;ZeroMail&lt;/code&gt; for encrypted email like service, etc. Be aware that the psuedo-anonymous use of identities can make for content you might not agree with and much spam. Use of &#39;Mute&#39; is useful here.&lt;/p&gt;

&lt;p&gt;Also be aware that it is &#39;psuedo-anonymous&#39; not &#39;anonymous&#39;. You create an identity and that identity is not tied to you in the real world but people can track what you do to that identity. Content is added to sites and distributed to other nodes. If you &lt;code&gt;like&lt;/code&gt; a post or add content to some site then anyone who decides to dig into the data of that site can see that your identity liked or posted that content. It is possible to have multiple identities if you want to keep aspects of your ZeroNet usage separate but that&#39;s a topic for another post.&lt;/p&gt;

&lt;p&gt;Overall ZeroMe is a nice microblogging system. It&#39;s user friendly, has a nice design and has tools for muting and &quot;Non Real Name&quot; identities. It, along with ZeroNet, is actively developed and supported by the ZeroNet developer.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Decentralized Websites with ZeroNet</title>
   <link href="http://bluishcoder.co.nz/2015/01/15/decentralized-websites-with-zeronet.html"/>
   <updated>2015-01-15T21:00:00+13:00</updated>
   <id>http://bluishcoder.co.nz/2015/01/15/decentralized-websites-with-zeronet</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://github.com/HelloZeroNet/ZeroNet&quot; target=&quot;_top&quot;&gt;ZeroNet&lt;/a&gt; is a new project that aims to deliver a decentralized web. It uses a combination of bittorrent, a custom file server and a web based user interface to do this and manages to provide a pretty useable experience.&lt;/p&gt;

&lt;p&gt;Users run a ZeroNet node and do their web browsing via the local proxy it provides. Website addresses are public keys, generated using the same algorithm as used for bitcoin addresses. A request for a website key results in the node looking in the bittorrent network for peers that are seeding the site. Peers are selected and ZeroNet connects to the peer directly to a custom file server that it implements. This is used to download the files required for the site. Bittorrent is only used for selecting peers, not for the site contents.&lt;/p&gt;

&lt;p&gt;Once a site is retrieved the node then starts acting as a peer serving the sites content to users. The more users browsing your site, the more peers become available to provide the data. If the original site goes down the remaining peers can still serve the content.&lt;/p&gt;

&lt;p&gt;Site updates are done by the owner making changes and then signing these changes with the private key for the site address. It then starts getting distributed to the peers that are seeding it.&lt;/p&gt;

&lt;p&gt;Browsing is done through a standard web browser. The interface uses Websockets to communicate with the local node and receive real time information about site updates. The interface uses a sandboxed iframe to display websites.&lt;/p&gt;

&lt;h2&gt;Running&lt;/h2&gt;

&lt;p&gt;ZeroNet is open source and hosted on github. Everything is done through the one &lt;code&gt;zeronet.py&lt;/code&gt; command. To run a node:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ python zeronet.py
...output...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will start the node and the file server. A check is made to see if the file server is available for connections externally. If this fails it displays a warning but the system still works. You won&#39;t seed sites or get real time notification of site updates however. The fix for this is to open port &lt;code&gt;15441&lt;/code&gt; in your firewall. ZeroNet can use UPNP to do this automatically but it requires a &lt;a href=&quot;http://miniupnp.free.fr/&quot; target=&quot;_top&quot;&gt;MiniUPNP&lt;/a&gt; binary for this to work. See the &lt;code&gt;--upnpc&lt;/code&gt; command line switch for details.&lt;/p&gt;

&lt;p&gt;The node can be accessed from a web browser locally using port &lt;code&gt;43110&lt;/code&gt;. Providing a site address as the path will access a particular ZeroNet site. For example, &lt;code&gt;1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr&lt;/code&gt; is the main &#39;hello&#39; site that is first displayed. To access it you&#39;d use the URL &lt;code&gt;http://127.0.0.1:43110/1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Creating a site&lt;/h2&gt;

&lt;p&gt;To create a site you first need to shut down your running node (using &lt;code&gt;ctrl+c&lt;/code&gt; will do it) then run the &lt;code&gt;siteCreate&lt;/code&gt; command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ python zeronet.py siteCreate
...
- Site private key: ...private key...
- Site address: ...site address...
...
- Site created!
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You should record the private key and address as you will need them when updating the site. The command results in a &lt;code&gt;data/address&lt;/code&gt; directory being created, where &#39;address&#39; is the site address that &lt;code&gt;siteCreate&lt;/code&gt; produced. Inside that is a couple of default files. One of these, &lt;code&gt;content.json&lt;/code&gt;, contains JSON data listing the files contained within the site and signing information. This gets updated automatically when you sign your site after doing updates. If you edit the &lt;code&gt;title&lt;/code&gt; key in this file you can give your site a title that appears in the user interface instead of the address.&lt;/p&gt;

&lt;p&gt;Another flie that gets modified during this site creation process is the &lt;code&gt;sites.json&lt;/code&gt; file in the &lt;code&gt;data&lt;/code&gt; directory. It contains the list of all the sites and some metadata about them.&lt;/p&gt;

&lt;p&gt;If you visit &lt;code&gt;http://127.0.0.1:43110/siteaddress&lt;/code&gt; in your browser, where &lt;code&gt;siteaddress&lt;/code&gt; is the address created with &lt;code&gt;siteCreate&lt;/code&gt;, then you&#39;ll see the default website that is created. If your node is peering successfully and you access this address from another node it will download the site, display it, and start seeding it. This is how the site data spreads through the network.&lt;/p&gt;

&lt;h2&gt;Updating a site&lt;/h2&gt;

&lt;p&gt;To change a site you must first store your files in the &lt;code&gt;data/siteaddress&lt;/code&gt; directory. Any HTML, CSS, JavaScript, etc can be put here. It&#39;s like a standard website root directory. Just don&#39;t delete the &lt;code&gt;config.json&lt;/code&gt; file that&#39;s there. Once you&#39;ve added, modified or removed files you run the &lt;code&gt;siteSign&lt;/code&gt; command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ python zeronet.py siteSign siteaddress
- Signing site: siteaddress...
Private key (input hidden):
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now you enter the private key that was displayed (and hopefully you saved) when you ran &lt;code&gt;siteCreate&lt;/code&gt;. The site gets signed and information stored in &lt;code&gt;config.json&lt;/code&gt;. To publish these changes to peers seeding the site:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ python zeronet.py sitePublish siteaddress
...publishes to peers...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If your node is running it will serve the files from the running instance. If it is not then the &lt;code&gt;sitePublish&lt;/code&gt; command will continue running to serve the files.&lt;/p&gt;

&lt;h2&gt;Deleting a site&lt;/h2&gt;

&lt;p&gt;You can pause seeding a site from the user interface but you can&#39;t delete it. To do that you must shutdown the node and delete the sites &lt;code&gt;data/siteaddress&lt;/code&gt; directory manually. You will also need to remove its entry from &lt;code&gt;data/sites.json&lt;/code&gt;. When you restart the node it will no longer appear.&lt;/p&gt;

&lt;h2&gt;Site tips&lt;/h2&gt;

&lt;p&gt;Because the website is displayed in a sandboxed iframe there are some restrictions in what it can do. The most obvious is that only relative URLs work in anchor elements. If you click on an absolute URL it does nothing. The sandboxed iframe has the &lt;code&gt;allow-top-navigation&lt;/code&gt; option which means you can link to external pages or other ZeroNet sites if you use the &lt;code&gt;target&lt;/code&gt; attribute of the anchor element and set it to &lt;code&gt;_top&lt;/code&gt;. So this will work:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a href=&quot;http://bluishcoder.co.nz/&quot; target=&quot;_top&quot;&amp;gt;click me&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But this will not:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a href=&quot;http://bluishcoder.co.nz/&quot;&amp;gt;click me&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Dynamic websites are supported, but requires help using centralized services. The ZeroNet node includes an example of a dynamic website called &#39;ZeroBoard&#39;. This site allows users to enter a message in a form and it&#39;s published to a list of messages which all peering nodes will see. It does this by posting the message to an external web application that the author runs on the standard internet. This web app updates a file inside the sites ZeroNet directory and then signs it. The result is published to all peers and they automatically get the update through the Websocket interface.&lt;/p&gt;

&lt;p&gt;Although this works it&#39;s unfortunate the it relies on a centralized web application. The ZeroNet author has posted that they are looking at decentralized ways of doing this, maybe using &lt;a href=&quot;https://bitmessage.org&quot; target=&quot;_top&quot;&gt;bitmessage&lt;/a&gt; or some other system. Something involving &lt;a href=&quot;http://peerjs.com/&quot; target=&quot;_top&quot;&gt;peer to peer WebRTC&lt;/a&gt; would be interesting.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;ZeroNet seems to be most similar to &lt;a href=&quot;https://www.torproject.org&quot; target=&quot;_top&quot;&gt;tor&lt;/a&gt;, &lt;a href=&quot;https://geti2p.net/en/&quot; target=&quot;_top&quot;&gt;i2p&lt;/a&gt; or &lt;a href=&quot;http://bluishcoder.co.nz/2014/12/18/using-freenet.html&quot;&gt;freenet&lt;/a&gt;. Compared to these it lacks the anonymity and encryption aspects. But it decentralizes the site content which tor and i2p don&#39;t. Freenet provides decentralization too but does not allow JavaScript in sites. ZeroNet does allow JavaScript but this has the usual security and tracking concerns.&lt;/p&gt;

&lt;p&gt;Site addresses are in the same format as bitcoin addresses. It should be possible to import the private key into bitcoin and then bitcoins sent to the public address of a site would be accessed by the site owner. I haven&#39;t tested this but I don&#39;t see why it couldn&#39;t be made to work. Maybe this could be leveraged somehow to enable a web payment method.&lt;/p&gt;

&lt;p&gt;ZeroNet&#39;s lack of encyption or obfuscation of the site contents could be a problem. A peer holds the entire site in a local directory. If this contains malicious or illegal content it can be accidentally run or viewed. Or it could be picked up in automated scans and the user held responsible. Even if the site originally had harmless content the site author could push an update out that contains problematic material. That&#39;s a bit scary.&lt;/p&gt;

&lt;p&gt;It&#39;s early days for the project and hopefully some of these issues can be addressed. As it is though it works well, is very useable, and is an interesting experiement on decentralizing websites. Some links for more information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/HelloZeroNet/ZeroNet&quot; target=&quot;_top&quot;&gt;ZeroNet on github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.reddit.com/r/Bitcoin/comments/2s72uy/zeronet_decentralized_websites_using_bitcoin/&quot; target=&quot;_top&quot;&gt;Original reddit announcement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.reddit.com/r/zeronet&quot; target=&quot;_top&quot;&gt;ZeroNet subreddit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://127.0.0.1:43110/18qigy8XcrxLpK7QaS52FfjwN2gjqHE231&quot; target=&quot;_top&quot;&gt;ZeroNet site containing list of other sites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://127.0.0.1:43110/13TSUryi4GhHVQYKoRvRNgok9q8KsMLncq&quot; target=&quot;_top&quot;&gt;This site, Bluishcoder, hosted on ZeroNet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://127.0.0.1:43110/1Jr5bnqSnnp94CfC7xrqPh4yYYDRkpzozD&quot; target=&quot;_top&quot;&gt;My Pitcairn Island photos, hosted on ZeroNet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 
</feed>
