比特币中的一项特性是去中心化。这使得比特币拥有较为自由的能力,不会因为某些服务器故障而无法运行。这是因为使用了去中心化技术。如果互联网去中心化会是怎样的呢?
安装 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 中的部分网站。随便点一个进去

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

从这个地址中我们发现它并没有直接访问任何现存互联网的资源。而是直接访问电脑地址 127.0.0.1 。
这是官方的一个公告板网站,里面有很多刚来的人打招呼。
这就是使用 ZeroNet 的基本流程。跟访问普通网站没有太大的区别。唯一要做的就是打开 ZeroNet 的客户端。这样才能访问 ZeroNet 中的网站。
在使用者看来不连接现有互联网的情况下能够访问网页,感觉挺神奇的,像是打开了新世界。
探索 ZeroNet
第一次打开 ZeroNet 你会发现欢迎页面中的网站很少。是不是 ZeroNet 上只有这些网站呢?
其实不是。实际上 ZeroNet 拥有很多网站。只是没有看到而已。
回想在普通的互联网上,想要访问一个网站应该怎么做?
在地址栏中输入它的网址即可。
那这个网址是怎么来的呢?有很多种渠道,不过最典型的渠道是搜索引擎。
目前还没发现 ZeroNet 有相关的搜索引擎。不过作者也考虑到了这一点所以提供了一个 ZeroNet 网站的列表
这个列表就在欢迎页面的左边 more site @ 0list

随便点击一个网站

这是一个视频资源网站,相应的资源通过磁力链接下载。
如果有耐心可以发现很多好玩的网站。比如
也会发现一些奇奇怪怪的东西。毕竟 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
在地址栏中输入刚建立站点的地址,会看到类似的页面

接下来修改个人网站。比如把 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 最大的缺点是用户量比较少,部分网页访问速度比较慢。还有部分内容不是去完全中心化的。要说清楚得从原理说起,这个坑就太大了。改天有空介绍吧。