星际文件系统(IPFS)

区块链这个名词最近大火,作为早年ed2k的资深用户,以及bt下载的玩家,早就是接受过区块链的洗礼的人啦,折腾过好多emule的mod,后来迅雷、百度等一类离线下载兴起,也就逐步转了过去,毕竟谁不喜欢快速呢,也就下点稀缺资源时候才会用到mldonkey,现在更多时候用的PT,毕竟高校里的ipv6的PT的速度还是挺给力的。

最近想看看这一类分布式文件系统的趋势,于是乎发现了神奇的东东-IPFS,我第一反应是IP File System,基于ip地址的一种分布式文件系统,结果原来是InterPlanetary File System,直译过来就是星际文件系统,无比高大上的一种赶脚,字面上看着像是一种为星际传输设计的文件系统,似乎征服宇宙指日可待。

先来看看电驴,目前几大知名Tracker服务器,加起来才不到15万用户,再加上其它零零总总的,或者只依赖KAD网络的用户的话,也就30~40万左右的用户量。虽然电驴的用户量少,但是电驴的确存下了很多稀缺资源,比如你懂的(啥。。。我不懂)某些照片,古董级别操作系统的镜像(Win98,MS-DOS)电驴网络上还是可以找得到的。

eMule上服务器信息

历史讲完了,来谈谈ipfs把,ipfs其实跟eMule的kad网络有点像,通过部分已知节点接入整个网络。

eMule的kad网络,通过已知的节点可以Bootstrap一下,理论上是可以访问所有节点的

如果要论ipfs那些特性啊,优点,工作原理啊,网上很多,这里不再赘述,链接(链接1链接2链接3…)真的很多很多,但在论原理上,ipfs,区块链本质上都还是基于p2p (peer-to-peer) 网络,采用现代密码学为基础的信息交换系统

  • p2p可以保证网络的鲁棒性,并不会因为单点失效而造成网络瘫痪
  • 现代密码学则保证了安全性 ,保证身份不可抵赖,信息传输的安全

我们来看看某些网站夸上天的ipfs优点,跟过去已知的网络结构比,能不能算上优点。

  • 决过度冗余问题,实现共享经济 (评:eMule,bt出现的也是实现再低带宽下的高速传输)
  • 同时基于内容寻址,而非基于域名寻址 (评:eMule网络也是基于HASH寻址的,比如win10的ed2k下载链接,ed2k://|file|filename.iso|43…|94….|/,最后一串94fd…就是hash码,前面文件名改成什么都无所谓的。)
  • 节点存储激励,代币分成(评:eMule很有前瞻性设计了积分机制,但是这个积分只能保证下载队列的优先级,并不会限制下载,同理,尤其文件分享类的p2p网络设计的时候,如何做到积分制度和用户门槛的平衡性,这很重要,举个例子,1、积分制度非常严格,用户没下多少东西,积分就没了,整个网络把他给ban了,他也不玩了,失去了潜在客户,典型的例子是pt,需要一直挂机赚取积分,也就决定了这个圈子很小众 2、电驴这种弱积分制度,门槛很低,但是也导致很多吸血驴的存在,再加上版权问题,导致衰落。所以如果引入代币,通过市场的方式来解决这个问题,是值得探索的)

因此,总的来说,带上FileCoin的ipfs可以说是个趋势,过去个人用于挂机,或者跑分布式计算都是自愿的,现在可以变现,会更有吸引力。


一通概念,评论扯完,下面就实干把,讲讲是怎么把Wordpress搬上ipfs的吧,大概有两部要走

a) 网站静态化,因为ipfs是不支持php这种东东的,所以需要把Wordpress静态化

b)上传ipfs

其实主要在第一部上卡了好久,研究了好几个Wordpress的插件,实在不满意,还担心会不会把不该导的也给导出来,例如wp-config.php,那就囧大发了,所幸后来发现了一个神器,httrack,相当于从外部来扒Wordpress,再导出页面,也就避免了安全方面的顾虑。但是httrack有一点比较讨厌,打开的时候会出现引导页,虽然时间很短,且跳转了,但是很难看,所以需要通过脚本删除这个引导页,把属于我们网站的index-2.htm替换回去,并且修正链接。另外需要仔细调整哪些哪些链接不变,例如google analytics,访客地图里的外链接都需要保留,有一次不小心加了-Y参数,居然最后跑去抓维基上乱七八糟的东西了。当然需要把ipfs站点区分开来,或者加一点个性化的东西,都可以通过后期脚本来解决。

httrack会生成引导页替代index.html
#!/bin/bash
rm -rf ./xuzp-mirror #删除原来目录
mkdir ./xuzp-mirror #新建目录
cd xuzp-mirror
httrack -w -s -N100 https://www.xuzp.net/ -*ntpsource.php +*.png +*.gif +*.jpg +*.jpeg +*.css +*.js +*.woff2 +*.js* -schema.org/* -ad.doubleclick.net/* -www.google-analytics.com/* -rf.revolvermaps.com/* -secure.gravator.com/* -stats.g.doubleclick.net/* -mime:application/foobar
rm index.html #移除httrack引导页
mv index-2.html index.html #把我们的主页替换成引导页
grep -rl '.html' ./|xargs sed -i 's/index-2.html/index.html/g' #把index-2替换回来
cd ..
ipfs add -r xuzp-mirror/ > ipfs.log #存入ipsw网络

至于ipfs怎么安装,怎么运行就不提了,教程也大把,怎么借助cloudflare推送,都有很多教程,但是据我观察,ipns貌似比ipfs要慢的很多,我add了ipfs,几乎同时就可以再ipfs的网关(https://ipfs.io/) ,但是ipns要等好久才行,所以建议有条件还是用ipfs配合DNS运营商的API把,即使在美国,纵使ipfs上传服务器用的Oracle千兆网络,家庭宽带都是千兆,ipns访问还是慢如蜗牛。

所以折腾了一圈,总算把ipfs建好了,配合cloudflare,搞了试验性质的站点,话说里面有个坑,需要注意一下,TXT记录应该带上子域名,而不是_dnslink,应该是_dnslink.ipfs。

https://ipfs.xuzp.net (国内貌似不能直接访问),顺便薅点oracle羊毛,用300刀额度,装个Windows Server虚拟机当桌面系统用,再装个ipfs-desktop做做种,体验一把IDC里的网速。

注:之前用的cloudflare的加速,2019/12/2把ipfs移到oracle云上,国内应该可以访问了,原来基于cloudflare的改为 https://ipfs2.xuzp.net

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注