比特币中的一项特性是去中心化。这使得比特币拥有较为自由的能力,不会因为某些服务器故障而无法运行。这是因为使用了去中心化技术。如果互联网去中心化会是怎样的呢?

安装 ZeroNet

ZeroNet 是一个使用了比特币加密技术和 BT 分布式技术的网络。它的主要目的是将互联网去中心化。

使用起来很方便,首先下载 相应的客户端。

解压。发现文件目录为

1
2
3
ZeroBundle
├─Python
└─ZeroNet.cmd

有一个 python2 的环境和一个启动脚本。

如果你是 Windows 用户直接运行 ZeroNet.cmd

弹出黑框并开始下载主程序

Downloading https://github.com/HelloZeroNet/ZeroNet/archive/master.zip to ZeroNet directory.

大约一分钟后主程序下载完毕,你会发现任务栏里面出现一个 ZeroNet 的图标。

这时候会弹出 Windows 防火墙,点允许免得出奇奇怪怪的问题。

初尝 ZeroNet

双击 ZeroNet 的图标或者直接在地址栏中输入 http://127.0.0.1:43110/ 就会打开 ZeroNet 的初始欢迎界面。

ZeroNet 欢迎页面

左边列出了 ZeroNet 中的部分网站。随便点一个进去

ZeroNet 加载页面

等待一两秒的载入后,网页内容刷新出来了。

ZeroNet ZeroBoard页面

从这个地址中我们发现它并没有直接访问任何现存互联网的资源。而是直接访问电脑地址 127.0.0.1 。

这是官方的一个公告板网站,里面有很多刚来的人打招呼。

这就是使用 ZeroNet 的基本流程。跟访问普通网站没有太大的区别。唯一要做的就是打开 ZeroNet 的客户端。这样才能访问 ZeroNet 中的网站。

在使用者看来不连接现有互联网的情况下能够访问网页,感觉挺神奇的,像是打开了新世界。

探索 ZeroNet

第一次打开 ZeroNet 你会发现欢迎页面中的网站很少。是不是 ZeroNet 上只有这些网站呢?

其实不是。实际上 ZeroNet 拥有很多网站。只是没有看到而已。

回想在普通的互联网上,想要访问一个网站应该怎么做?

在地址栏中输入它的网址即可。

那这个网址是怎么来的呢?有很多种渠道,不过最典型的渠道是搜索引擎。

目前还没发现 ZeroNet 有相关的搜索引擎。不过作者也考虑到了这一点所以提供了一个 ZeroNet 网站的列表

这个列表就在欢迎页面的左边 more site @ 0list

ZeroNet 网站列表

随便点击一个网站

ZeroNet 一个资源站

这是一个视频资源网站,相应的资源通过磁力链接下载。

如果有耐心可以发现很多好玩的网站。比如

也会发现一些奇奇怪怪的东西。毕竟 ZeroNet 不受监管。

安家 ZeroNet

在 ZeroNet 上创建一个网站也很方便。无需审核。

在创建之前先关闭 ZeroNet

进入 ZeroNet 的目录

1
2
3
4
5
6
7
8
9
10
ZeroBundle
├─Python
├─ZeroNet
│ ├─data
│ ├─log
│ ├─plugins
│ ├─...
│ ├─zeronet.py <- 关键脚本
│ └─...
└─ZeroNet.cmd

在文件夹地址栏中输入 cmd

就会以当前路径运行黑框。

输入以下命令

1
..\Python\python zeronet.py siteCreate

输出为

1
2
3
4
5
6
7
8
9
10
- Starting ZeroNet...
- OpenSSL loaded, version: 01000201F
- Version: 0.4.1 r1536, Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)], Gevent: 1.1.2
- Generating new privatekey...
- ----------------------------------------------------------------------
- Site private key: 5KYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- !!! ^ Save it now, required to modify the site ^ !!!
- Site address: 1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5
- ----------------------------------------------------------------------
? Have you secured your private key? (yes, no) >

其中 Site private key 就是你的私钥。在修改自己的网站的时候会用到,请妥善保管

地址为 Site address 后面的部分。比如我的就是 1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5

保存好私钥后输入 yes 。输出为

1
2
3
4
5
6
7
8
9
10
11
12
13
- Creating directory structure...
- Creating content.json...
Site:1BTG4L..eEQ5 Content.json not exist: data/1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5/content.json
Site:1BTG4L..eEQ5 File content.json not exist yet, loading default values...
Site:1BTG4L..eEQ5 Opening site data directory: data/1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5/...
Site:1BTG4L..eEQ5 - index.html (SHA512: 20d3253a86e9e19d99c1e1c1ad7c8c272b0e1037ae1773aecc8ab6e09f2854e7)
Site:1BTG4L..eEQ5 Adding timestamp and sha512sums to new content.json...
Site:1BTG4L..eEQ5 Verifying private key...
Site:1BTG4L..eEQ5 Correct 1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5 in valid signers: ['1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5']
Site:1BTG4L..eEQ5 Signing content.json...
Site:1BTG4L..eEQ5 Saving to content.json...
Site:1BTG4L..eEQ5 File content.json signed!
- Site created!

说明成功建立站点。地址为 http://127.0.0.1:43110/你的地址

比如我的是 http://127.0.0.1:43110/1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5

双击 ZeroNet.cmd 启动 ZeroNet

在地址栏中输入刚建立站点的地址,会看到类似的页面

ZeroNet 常见站点

接下来修改个人网站。比如把 Hello 该成 Hi。这时候需要用到上面产生的私钥

先找到自己的网站。位于 ZeroBundle\ZeroNet\data\你的地址 文件夹中。比如我的就是 ZeroBundle\ZeroNet\data\1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5

其中目录结构如下

1
2
3
1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5
├─content.json
└─index.html

用文本编辑器打开 index.html

1
Hello 1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5!

改成

1
Hi 1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5!

保存。双击 index.html 打开后发现内容已经发生改变。

这只是本地预览的效果。要想其他人也能看到就需要发布。

首先运行命令登陆自己的网站

1
..\Python\python zeronet.py siteSign 你的地址

出现输入私钥的提示

1
2
3
4
5
- Starting ZeroNet...
- OpenSSL loaded, version: 01000201F
- Version: 0.4.1 r1536, Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)], Gevent: 1.1.2
- Signing site: 1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5...
Private key (input hidden):

密码验证正确后提示

1
2
3
4
5
6
7
8
9
Site:1BTG4L..eEQ5 Opening site data directory: data/1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5/...
Site:1BTG4L..eEQ5 - [SKIPPED] content.json
Site:1BTG4L..eEQ5 - index.html (SHA512: d749c3e6ea1668e314fa3a32c5048313d2387a336abcd60b6ba1b50a0f4e0952)
Site:1BTG4L..eEQ5 Adding timestamp and sha512sums to new content.json...
Site:1BTG4L..eEQ5 Verifying private key...
Site:1BTG4L..eEQ5 Correct 1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5 in valid signers: ['1BTG4LYoSYQxNMaQfDCmZv56fQhitFeEQ5']
Site:1BTG4L..eEQ5 Signing content.json...
Site:1BTG4L..eEQ5 Saving to content.json...
Site:1BTG4L..eEQ5 File content.json signed!

登陆成功后接着发布网站

1
..\Python\python zeronet.py sitePublish 你的地址

发布成功后提示

1
2
3
4
5
6
7
8
9
10
- Starting ZeroNet...
- OpenSSL loaded, version: 01000201F
- Version: 0.4.1 r1536, Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)], Gevent: 1.1.2
- Loading site...
- Creating FileServer....
- Sending siteReload
- {'to': 1, 'cmd': 'response', 'ok': 'Reloaded'}
- Sending sitePublish
- {'to': 2, 'cmd': 'response', 'ok': 'Successfuly published to 0 peers'}
- Done.

其中有提示 Successfuly published to 0 peers 每一个访问者都会保存你的网站,因为你的网站还没其他人访问过。所以没有推送给任何一个用户。

如何检验是否更新成功呢?很简单让小伙伴访问一下你的网站就可以了。

如果想要做更多的自定义修改请参考官方开发者文档

看待 ZeroNet

ZeroNet 是一个很有意思的项目。目前处于发展阶段。就算不能成功也会启发后来的人。目前 ZeroNet 最大的缺点是用户量比较少,部分网页访问速度比较慢。还有部分内容不是去完全中心化的。要说清楚得从原理说起,这个坑就太大了。改天有空永远没空介绍吧。