【IPFS相关】教你用IPFS使你的网站趋于分布式

【IPFS相关】教你用IPFS使你的网站趋于分布式

本文由IPFS原力区收集译制,版权所属原作者   原标题:“IPFS,Again”

【IPFS相关】教你用IPFS使你的网站趋于分布式 

2017年,我写了如何用IPFS分散你的网站那时我做不到。 (https://macwright.org/2017/08/09/decentralize-ipfs.html)   两年后,一些事情发生了变化。协议实验室的资金从5200万美元增加到2.57亿美元,总共超过3亿美元,是那种你投资雇佣顶级人才的钱。经过两年的开发,已经产生了大量的开放源码存储库——IPFS组织中245个,多格式下67个,libp2p下168个,IPFS Shipyard下102个。   那么,我们对IPFS应该期望什么呢在“五岁”的时候,这个项目是否像主页在2017年承诺的那样“此时此地”可用?所有的部分都到位了吗,看到曙光只是等待web和应用程序开发人员我注意到的2017年的困难是否已经被克服了   没有  | IPFS仍然不能用于网站。   我再次尝试让IPFS发挥作用。当我遇到bug时,我会报告它们。我在论坛上四处询问,并与Pinata一个团队进行了一次非常有意义的通话。当过程需要脚本和我这边的工作区时,我实现了一些必要的东西。我为许多文档问题编写并提出了修复方案。   我希望存在类似IPFS的东西。我对IPFS所处的“加密”生态系统持怀疑态度,但我也认真对待网络危机。如果区块链被证明是有用的,我将欢迎它们作为解决方案的一部分。   换句话说,这不是下意识的咆哮。我试着让IPFS工作,直到不得不停止为止。以下是我的笔记,以及我得出的一些结论。  

【IPFS相关】教你用IPFS使你的网站趋于分布式

我们的目标   目标与2017年相同创建macwright.org的分布式版本。一个分布式的网站。   org是最容易去中心化的网站。它是轻量级的,很少有外部依赖,没有跟踪器,并且有一个简单的、可定制的构建过程。如果你可以使任何网站工作,你应该能够使这个工作。   我对这项任务的唯一限制是:   我不使用服务。人们围绕IPFS创建服务来简化它,这非常好。但我是在评估IPFS,而不是一项服务,而且通过依赖一些预先构建的东西,我很可能会让自己对这些问题一无所知。我也不想一开始就在DigitalOcean或云服务器上托管。权力下放意味着它需要在我家里发挥作用。   更新需要合理。这是一个博客。我写新帖子,并从Twitter上链接这些帖子。IFPS的目标是内容的不变性,但是这个博客不是不可变的,所以我需要一种机制来更新指向最新版本的指针  

它需要可寻址IPFS使用很多散列。您将看到很多对像Qmc5cLBCY6fsWkxqpMS1RTovhERoXZSSDrjkjogrVfrDfJ之类的东西的参考文献。这对于体系结构来说是非常棒的,但这对人类并不友好。人类应该有办法找到东西。

  这个过程   下面是我尝试一步一步建立一个系统时的笔记。我的目的小目标的增量。  
  • 步骤1在本地安装IPFS
  2017年,从ipfs.io中获取“下载”按钮,点击通过冗余页面需要4次。这个数字已减少到3但矛盾依然存在macOS在一地方被称为darwin,在另一地方被称为OS X,在另一地方被称为Mac OS X。此外还有一些新的错误:安装说明中包含了IPFS桌面应用程序,但与它的链接已经断开。   命名不一致成为一个题。协议实验室生态系统的最大问题之一是它对语言的粗心大意。术语和首字母缩略词正在毫无必要或无限制地繁殖,并产生了一个同时具有过多和过少含义的词汇世界。  
  • 步骤二:在本地浏览你的网站
  好的,我运行了IPFS。让我们看看最简单的例子在本地服务我的网站,并在本地浏览它。在我的例子中——使用Jekyll构建,它看起来像:   ipfs daemon & bundle exec jekyll build cd _site ipfs add -r   这将输出一长行输出,以   added QmesFFG92JmyZsPfSrAtbEMSWELsfkPfADhhcg8FjxKB3z _site/resources added QmTrLEV3NQBhgYM2ZiW52eoSdvVqwU36p3qsQvH4oTfYkM _site/simple-statistics added QmbkWSVC1VqbswL6NCN4VSZZRoKPtvcBEfkfFbeWVnddGn _site/swift added QmNb7T9sa3zgvpoRs1k92MQ1pNZxjk3FxaHDc6U9tGAPfj _site/talks added QmP662VnQbyxK6tbnqhueTzJnPgkFBx7G6hwwTwAtAYyz4 _site/tmp added QmR2eSRGdDhnnUHWYFvwwbyMDkAJ2gPVMJQZh4TQwKKJW4 _site/topics added QmVwS9a5LYs3rU3nCyMkmbdHj2ZguE5PpbQy14gjeSytQt _site   相当简洁的对吧没有“成功”的方法来告诉我它是完成了,或是过程刚刚结束。不知道哪个是根元素,也不知道怎么找到它。只是很多哈希值。   这是一个CLI,但也是建立网站的推荐路径。在这里,一些物质上的享受可能是有价值的   您可以通过复制粘贴这一行的最后一个散列,安装IPFS Chrome扩展,并将其前缀为http://127.0.0.1:8080/ipfs/来访问这个网站。所以我们在这里:

 

  • 第三步:重新建立链接
  准备好发布到web上了吗?没有那么快。点击一个链接让我们回到我2017年的话题IPFS网关的工作方式会破坏你的链接。   本质上,由于您看到的网站的根目录是/ipfs/HASH/,那么以/开头的任何链接都将指向错误的位置。你不能把这个前缀加到所有链接上,因为哈希来自内容,也因为人们可能会从/ipns/hash/ipns/domainname.com浏览你的网站。   所以,链接不起作用。我发表了一篇文章,详细描述了这个问题,虽然我得到了一个令人鼓舞的回应,那就是计划了一个真正的解决方案,但没有真正的解决方案。人们仅仅为IPFS使用特定的插件,就像这个为GatsbyJS使用的插件一样,来让它工作。   最后我写了make-relative,一个脚本,它重写了我构建的站点来使用相对链接。这就是为什么IPFS现在对web开发人员非常有用的原因。在我从业的十年中,我已经做了足够多的html错误处理和路径解析,所以编写这个脚本非常简单。但是做这件事所需要的知识并不是那么普遍,我认为这是大多数web开发人员会放弃的地方,因为IPFS“网站托管”故事看起来会被破坏   而且它几乎已经坏了。目前在浏览器中使用IPFS的方式是一个糟糕的黑客攻击,就像2017年一样。默认情况下,它会破坏网站,而且它仍然没有web安全模型的外表。  
  • 步骤4:给它一个URL
  所以我写了一个自定义脚本,现在有一个可浏览的本地网站。我想有一个本地服务器,以保持该网站在线,但首先我将深入到URL问题。   好吧,我们每天都依赖于网络现有的、有效的、足够好的寻址系统。您现在可以通过输入macwright.org进入这个页面,地址栏中是域名macwright.org。域名是你要付钱的东西:我每年付给gandi大约18美元,让我可以使用这个名字,然后他们把钱分给Verisign,那是一个 runs .com公司和ICANN,一个管理纠纷、续签和治理的官僚机构。您的浏览器使用DNS,一个分散的命名系统,来解析这个名称到一个IP地址,这是服务器的IP地址,有这个内容。   分散的web项目必须决定是否可以完全分散地复制这个系统(不涉及ICANN、注册商或公司),还是依赖DNS来“引导”它们的系统。   IPFS堆栈选择了实现所有这些方法。   DNSLink,一个相当实用的系统,你可以添加另一个DNS记录到你分散的网站上。   还有ipns,它完全是去中心化的,但代价是非常非常慢。它也不会生成漂亮的名称——相反,它会给出一个很长的散列,就像我在ipfs中看到的那些添加-r的散列一样。   这些是基本原则。让我们添加一些细节。   IPNS地址是这样的   /ipns/QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd   文档告诉我们,DNSLink比IPNS更快,并且可以生成更多漂亮的名称。这是一个DNSLink地址:   /ipns/ipfs.io   细心的读者会注意到这个地址也以IPNS开头。但是,据我所知,它并不一定使用IPNS它可能是——而且通常是——macwright.org使用DNSLink来表示IPFS地址。如果DNSLink经常使用/ipns/而不是ipns,为什么要使用/ipns/作为前缀? 我和你一样对此感到困惑。   所以,无论如何,我在IPNS中建立了DNSLink,我认为这一定是大多数人所做的。当然,他们不会每次更新网站时都更新DNS记录。   这是一个错误的假设。基于ipfs的网站在每次更新网站时都会更新DNS记录,这样它们就可以避免使用IPNS,因为IPNS太慢了。   这是一个艰难的发现,因为它与我所知道的DNS(一个不是特别设计为快速或可编写脚本的系统)背道而驰。   但是,我必须继续前进,所以我编写了gandi-ipfs,这是一个工具,可以让我使用DNSLink更新DNS记录。据报道,其他用户使用CloudFlare并拥有自己的脚本。我从一个非常友好和乐于助人的Pinata团队的电话中得到了这个信息。

【IPFS相关】教你用IPFS使你的网站趋于分布式

  第五步主持(host)   为了说明我们的观点,下面是我的脚本。   ipfs daemon &   echo “Jekyll building…” bundle exec jekyll build   cd _site make-relative https://macwright.org/ hash=`ipfs add -r -q . | tail -1`   echo “Root hash: ${hash}” gandi-ipfs $hash   因此,我使用自定义脚本make-relative使站点上的所有链接都是相对的,并使用脚本gandi-ipfs更新DNS记录。   但是,每当我关闭笔记本电脑的盖子时,启动ipfs守护进程的服务器就会停止。下一步是设置服务器。   我决定从Raspberry PI工具包开始——尤其是PI – hole,它本来是作为一个广告拦截器来设置的,但碰巧包含了一个简单服务器所需的所有部分。我非常清楚Raspberry PIs是小型、低功耗、低内存的计算机,我可能需要更大的处理器来实现长期性能,比如Intel NUC。所以,它应该可以用于测试。   设置圆周率是相当顺利的,它是魔术,只要登录到一个微型计算机。它是一个ARM芯片,运行某种风格的Linux。   Raspberry PI上安装IPFS也很顺利只要下载go-ipfs的ARM发就可以了。   不幸的是,当我开始将这个设置为“钉住设备”时,乐趣就停止了。   我试着用ipfs add -r前面生成的散列运行ipfs pin add,但是它只是“挂起”—什么也没有输出。过了一段时间,我意识到,就像ipfs pin add一样,ipfs在遇到问题时不能很好地进行通信。因此,我找到了如何将日志信息一直向上打开的方法,然后……尽管尝试了IPFS守护进程的所有潜在配置、启用日志、升级到最新版本等等,但始终无法通过“拨号时出错”故障。跟踪器中大约有63个类似的问题,其中21个被标记为bug。  
后记   就我所知。   就像上次一样,我可能错过了一些关键的步骤,让这个过程对我自己更加困难。新闻完整性这篇文章没有被任何人编辑或审核。因此,有输入错误。   我试图使过程文档简单明了,并且基于事实,但是忍不住添加了一些关于问题的预兆。确实存在一些问题。   以下是问题所在  

过多的、文档不足的、未完成的项目。没有一个生态系统的单一部分是真正完成和记录良好的,每天产新的部分。几乎被普遍避免的项目(如IPN)仍然包含在主文档中,并且建议使用它们。

  语言也是如此IPFS有一组不断扩展的术语,它们的使用并不一致。是merkledag还是merkle-dag?有足够多的术语,所以有一个术语表,但术语表本身同时涉及merkel -dag和merkledag。节点是对等点还是内容块?最糟糕的是发现了两个repos,它们的自述都是相同的。   然后还有三个大问题:可用性、可靠性和性能。 CLI命令有解释性输出吗?错误消息能提供信息吗?我能指望工具像广告宣传的那样工作吗?分散化的web会有像bittorrent那样的可伸缩性,还是更像比特币?   以下是一些建议   首先,提出建议。我进入IPNS rabbit hole是因为文档发送给我,在一次偶然的机会,我才知道它几乎是普遍的。说一个项目还没有准备好并不可耻。推荐无用的项目会损害商誉。推荐可行的路径。   第二,纠正你的话。语言是工作,而工作并没有发生。完成术语表,规范用法和意义,剔除不必要的术语。把新术语当成技术债务,因为它们就是技术债务。   第三,设定现实的目标,做出现实的陈述Ipfs.io仍然有一个以web为中心的消息,并承诺它现在就很有用。它承诺“快速性能”,并支持“大型数据集”。这些都是目标,而不是现实。 投入300 TB数据的努力得到了不同的结果,有关添加和检索数据的说明非常缓慢。   第四,设定目标。这和上一个问题稍有不同。一个核心问题是IPFS正试图成为互联网吗?网站会说是的,还有一些文档也是。但2019年的目标将“分散式网络”的目标锁定在2020年以上,而是将重点放在基于IPFS的NPM上。这就引出了entropic,最有前途的分布式包管理器,它讨论了如何使用IPFS,而IPFS马上就提出了它的性能问题。   也许我对IPFS太苛刻了。但现在不是2014年。IPFS不是一个新项目,也不受资源限制。协议实验室已经筹集了3亿多美元,已经成立5年了。这对很多聪明人来说是一大笔钱。   所以有几种情况是可能的。也许大多数IPFS用户使用它作为文件存储和API后端,有点像 textile。我是一个期望它对网站有用的人。这可以解释DNSLink和IPNS的随机性,但不能解释性能问题。或许我对历史的进程判断有误——协议实验室是一个20年的项目,而不是一个10年的项目。   但我真的怀疑,有些炒作是存在的,因为人们在谈论IPFS,但他们并不依赖它。人们对FileCoin的潜力感到兴奋,并对密码技术进行了大肆宣传,他们想要想象技术的使用和组合,而不是被那些不起作用的现实所束缚。   我希望协议实验室设定一个目标并实现它。IPFS的未来是令人兴奋的。但是我们还没有到那里,我不确定我们会到那里。   本文由IPFS原力区编译,原文链接:https://macwright.org/2019/06/08/ipfs-again.html
【IPFS相关】教你用IPFS使你的网站趋于分布式

IPFS原力区

Slogan:让存储更安全、更高效、更开放、更经济 价值观:价值 共建 共享 荣耀

 

总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于 IPFS 的商业生态建设和社区发展。

 

每周二举办“分布式存储网络”主题沙龙,聚集了众多技术大咖和 IPFS 爱好者,通过持续输出全面、精细、优质的 IPFS 咨询和技术支持,将生态中的爱好者转化为 IPFS支持者和参与者,共建 IPFS 生态的健康发展。

【IPFS相关】教你用IPFS使你的网站趋于分布式

原创文章,作者:IPFSforce,如若转载,请注明出处:http://ipfser.org/2019/07/01/jiaoniyongipfsshinidewangzhanquyufenbushi/

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

邮件:ipfsforce@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code