勇敢的IPFS支持

2021-01-20 04:35:26

在过去的几个月中,Brave团队一直与Protocol Labs合作,以在Brave中添加行星际文件系统(IPFS)支持。这是这种类型的首次深度整合,我们很自豪地在本文中概述其运作方式。

IPFS是一项令人兴奋的技术,可以帮助内容创建者在不使用高带宽成本的情况下分发内容,同时利用重复数据删除和数据复制的优势。通过利用其地理上分散的群集网络,通过IPFS加载内容具有性能优势。 IPFS对于区块链和自我描述的数据完整性非常重要。以前查看的内容甚至可以使用IPFS脱机访问!即使内容已被公司和民族国家(例如Wikipedia的一部分)审查,IPFS网络也可以访问内容。

IPFS支持允许Brave桌面用户使用内容哈希(称为内容标识符(CID))下载内容。与HTTP(S)不同,内容没有指定的位置。

IPFS网络中的每个节点都是请求的内容的潜在宿主,如果节点没有请求的内容,则该节点可以从大量对等节点中检索内容。检索到的内容将在本地进行验证,从而无需信任第三方的完整性。

HTTP(S)使用统一资源定位符(URL)指定内容的位置。该系统可以轻松地进行审查,因为内容是代表单个实体托管在特定位置的,并且容易受到拒绝服务攻击(DDoS)的影响。 IPFS通过统一资源标识符(URI)中的内容路径和/或CID而非URL来标识其内容。

从Brave 1.19.x开始,您可以使用此地址,将其粘贴到Brave地址栏中,然后加载。

默认情况下,Brave将通过公共HTTP网关加载所请求的URI。但是,它还会显示一个信息栏,询问您是否要使用本地节点来解析IPFS URI。如果您选择使用本地节点,则Brave将自动下载go-ipfs作为组件,并将将来的流量路由通过该节点。无需手动管理IPFS节点或使用扩展。用户可以选择安装IPFS Companion扩展,它会建议您使用Brave受管节点。

通过Brave,您可以配置遇到IPFS URI时发生的情况。您可以选择:

将IPFS配置为使用本地节点时,它将在地址栏中保留该方案(ipfs:或ipns :)。您可能需要此选项,因为您始终可以信任本地节点来验证正在访问的CID的内容。使用本地节点时,您还可以脱机访问以前查看的IPFS内容。本地节点还有助于提高IPFS网络的强度。

如果您使用的是第三方网关,则地址栏将在网关服务器上显示重定向的URL。如果您不想在本地计算机上加载IPFS节点,则可能需要此选项。您的系统资源可能有限,并且只想访问IPFS内容。

与通过HTTP(S)之类的传统协议加载的站点相比,IPFS带来的隐私利益和成本有所不同。无论您的IPFS配置如何,这些隐私注意事项中的一些都适用。例如,通常浏览器将原点用作隐私和安全性边界,称为同源策略(SOP)。通过IPFS加载站点时,Brave会改用CID作为起点边界。此外,当从IPFS加载主页时,Brave仅允许通过IPFS加载子资源。页面可以为其自己的CID设置cookie,但不能为其另一个CID设置cookie。 IPFS页面可以包含来自任何CID的其他IPFS图像,样式表和iframe,并且可以在同一CID中获取IPFS内容。

其他IPFS风险和收益取决于Brave的配置方式。如果将Brave配置为使用本地IPFS节点,则在访问IPFS内容时,它还会使您成为该内容的临时主机。 IPFS节点使用libp2p网络层堆栈,并具有一个PeerID,可以在分布式哈希表(DHT)中查找该PeerID,其他人可以观察到DHT。网络对等方可以观察到您提出的请求和提供的内容。

另一方面,如果将Brave配置为使用公共IPFS网关,则隐私风险会有所不同。例如,该网关可以查看您要求其通过IPFS请求加载的内容。网关可能还可能与它为您提供的内容有关。将来,Brave计划使用其CID验证通过网关检索的内容。

我们不允许在专用窗口和Tor窗口中解析IPFS URI。 go-ipfs组件仅管理一个数据存储,并且我们将其配置为在缓存为最大存储空间(1GB)的90%时每小时运行一次垃圾收集。当用户清除浏览器数据中的缓存图像和文件时,我们还会触发go-ipfs管理的已存储IPFS内容的垃圾回收。这将删除除固定内容以外的所有IPFS内容。我们可能会决定通过保留单独的配置和缓存来在将来的私有窗口中允许IPFS,该配置和缓存将在会话结束时自动清除。

IPFS和其他去中心化协议对于在以太坊等全球去中心化网络中运行的区块链和智能合约至关重要。

如果您想拥有一个处理内容的智能合约,会发生什么?您不希望使用URL,因为内容的位置可能会更改或不可用,并且智能合约是不可变的。您可以使用统一资源标识符(URI),例如用于标识IPFS中内容的标识符。

在以太坊上存储内容会很昂贵,但是存储哈希(CID)是可行的。数据的内容在IPFS网络上传输,并且哈希存储在智能合约中。该哈希可用于从任何IPFS节点访问内容。

Dapps也可以从IPFS提供服务,并且可以使用web3与以太坊通信。这使用户能够获得完全分散的浏览体验。

系统管理员可以使用管理策略完全禁用该功能。还有一个全局设置,可以在brave:// flags中使用。

如果启用了本地节点,则Brave将下载go-ipfs二进制文件并保持最新。它使用与扩展相同的更新机制。

勇敢的IPFS支持旨在最大程度地减少对系统资源的影响。如果已将Brave配置为使用本地IPFS节点,则仅当访问第一个IPFS URI时才会延迟加载该节点。如果已将Brave配置为使用公共网关,则不会加载IPFS节点。

用户可以通过导航至内部页面:brave:// ipfs来对IPFS进行故障排除。这也向用户显示网关,API和群集端口。用户还可以使用go-ipfs命令行并为--api =参数指定参数来与Brave受管实例进行对话。

您可以在浏览器的配置文件目录的名为brave_ipfs的子文件夹中找到Brave托管的go-ipfs节点的配置目录。您可以在此处找到您的个人资料目录:brave:// version /

上述工作仅仅是开始。我们正在积极致力于IPFS的更多改进,包括:

DNSLink,允许发布者使用指向IPFS路径的DNS TXT记录。勇于具体的实施细节

您可以从其规范中阅读有关Brave中IPFS实施的更多信息:github.com/brave/brave-browser/issues/10220

我们很乐意听到有关如何在Brave中改善IPFS支持的建议。问题可以在这里发布:github.com/brave/brave-browser/issues/new?lab​​els=OS%2FDesktop&template=desktop.md

继续阅读有关广告屏蔽,功能,性能,隐私和基本注意令牌相关公告的新闻。