查看原文
其他

技术:IPFS浏览器集成操作指南

IPFS浏览器集成操作指南

本文来自Ryan Baumann在HackFS上发表的演讲:详细介绍了使用IPFS进行浏览器集成的基础知识。HackFS是一个为期三周的虚拟黑客马拉松,致力于建立一个无审查的去中心化互联网
完整的演讲内容可点击下方链接查看:
https://www.youtube.com/watch?v=xZiN9dLvMoU&list=PLXzKMXK2aHh5iq_crvYF76EmPsZgcgLki&index=4
 
互联网的未来是去中心化的网络,但实现这一目标需要基础设施。这个基础设施的核心是IPFS,星际文件系统。与名称解析系统INFS(星际名称系统)一起,它提供了一种新的方式来保存和分发内容到浏览器,称为内容寻址(打开新窗口)。

在这种模式下,数据可以根据其唯一的内容ID (CID)从IPFS网络中存储的任何位置检索。这改进了当前基于位置的基础设施,其中数据是从特定的服务器检索的,可能会受到各种安全风险的影响。
 
对于一般的应用开发者来说,这意味着不再需要将应用及其所需的数据托管在集中式服务器上,他们现在可以将应用上传到IPFS,并直接从分散的存储网络中运行它。这篇文章通过构建一个非常基本的聊天界面来研究如何通过IPFS开发web浏览器的互联性。
 
 开始 

本教程简单易上手,大多数开发人员都将熟悉所发生的事情。唯一的区别是,本指南使用IPFS作为后端来连接或发现其他客户端,并与它们聊天。
 
大多数web开发人员已经安装了一个文本编辑器。本教程的核心元素及完整的演示可以点击下方链接进行查看:
https://github.com/TheDiscordian/browser-ipfs-chat
 
本指南将重点关注chat.js文件,因为它可被编辑。用户可以在浏览器中打开index.html来检查他们在教程中的进度。
 
如果您想了解更多信息,可以打开浏览器控制台,并输入await ipfs.id()命令来获取它。
 
图1:浏览器内控制台
 
 步骤1:连接对等体 
 
对等连接是这个特定的IPFS聊天applet的核心。通常,当人们连接到IPFS时,我们希望通过聊天与他们交谈。为此,您可以订阅一个特定的频道。所有订阅同一频道的用户将收到发送到该频道的消息。但是你怎么和别人联系呢?
 
图2:一个潜在的用户网络设置
 
有两种方式可以通过IPFS连接到其他人。第一个依赖于WebRTCStar,它依赖于NAT工作。但是,如果NAT由于某种原因关闭了,那么还有备份计划。除了WebRTCStar,你还可以通过点对点网络发现其他人。为了确保连接能够解析,您必须兼顾这两种可能性。
 
在文件的顶部,您需要获取引导常量并包含它。
 
图3:引导常数
 
接下来,您将尝试连接;如果连接失败,它将自动重试。作为一种安全措施,您可能希望确保在重新尝试连接之前断开连接。
 
图4:dobootstrap(reconnect)函数
 
下一步是开发一个processAnnounce()函数,您将使用它来订阅公共通道(pubsub)。您将订阅一个称为announcer的网络,并将processAnnounce()函数附加到它。您将存储自己的ID以便进行比较,因此您不会重新发送从自己收集到的消息。持续向网络发送保持活动的数据包是很重要的,因为如果让连接处于休眠状态太长时间,就会有连接断开的趋势。
 
图5:进程宣布()函数第一部分
 
一旦您收集了点对点网络地址,您将使用标准字符串拆分将它们从消息中拆分出来。您还将从WebRTCStar获得一个对等点列表,因为这是您想要验证连接的内容。接下来,您将尝试连接两次。通常,您可以冗余地执行连接,因为系统拒绝第一次连接尝试,所以必须进行备份尝试才能成功连接。
 
图6:进程宣布()函数第二部分
 
您可以使用checkAlive()函数更新连接状态,并在聊天屏幕上更新它。您还将保持每15秒发送一个保持活动的数据包,以确保您保持连接。现在您已经完成了连接的开销,您可以查看消息的发送和接收。
 
图7:checkAlive()函数
 
然后我们将更新onload()函数。
 
图8:更新的onload()函数
 
 步骤2:发送和接收消息 
 
您将使用两个包装器与聊天系统交互。我们将把它们放在bootstrap定义的下面,但是放在dobootstrap(reconnect)函数的上面。第一个是标准的joinChannel()函数,使用传递给该通道的字符串作为标志,允许您订阅公共通道并接收从该通道发送的所有消息。sendmsg()(公共m)函数的用法与此类似,但您将使用它来发送强消息。另一个带有大写M的函数sendMsg()是一个更高级的函数,它允许您从文本元素收集输入数据并将其发送出去。out()函数将接收到的消息放入聊天中。
 
图9:消息发送和通道连接
 
注意事项 
 
通过检查代码可以立即看出,开发这个系统是为了介绍您可以在IPFS上做什么。IPFS作为底层基础,只需稍加完善即可在聊天中包含发送表情符号或甚至链接到gif的功能。您也可以显示嵌入式媒体。本教程不加密任何消息,但如果开发人员认为合适,可以添加他们自己的自定义加密。所有消息都经过签名,允许对消息进
行验证,即使消息是由第三方转发的。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存