分类: P2P

  • DWeb教程:去中心化网络上的内容寻址(第四课)

    欢迎来到ProtoSchool的第四课!今天我们将深入探讨密码学哈希内容标识符(CIDs)。准备好了吗?让我们一起揭开这些概念的神秘面纱。

    🖼️ 不只是可爱的图片

    在之前的课程中,我们一直在讨论可爱的图片,但内容寻址不仅限于此。实际上,它可以应用于所有类型的文件和数据,从JSON对象到论文再到视频,内容寻址的应用范围非常广泛。为了使密码学哈希正常工作,我们需要了解正在处理的数据格式,并使用适当的工具。

    🔑 什么是内容标识符(CID)?

    内容标识符(CID)是去中心化网络中一种特定形式的内容寻址。它是为IPFS(一个去中心化网络协议)开发的,但它的应用前景非常广泛。CID的魅力在于它是一个单一的标识符,包含了一个密码学哈希和一个编解码器(codec),后者提供了有关如何解释该数据的信息。编解码器的作用是对数据进行编码和解码。

    +-------+------------------------------+
    | Codec | Multihash                    |
    +-------+------------------------------+

    许多格式和协议已经在使用内容寻址,例如Git、以太坊和比特币,但它们在解释数据和使用的加密哈希函数方面有所不同。CID使我们能够为任何这些系统创建一个通用标识符。

    🔍 CID的构成

    每个CID都是一个标识符,包含用于解释数据的编解码器和一个自描述哈希(multihash),即一个告诉你使用了哪种哈希函数来创建它的哈希值。

    +------------------------------+
    | Codec                        |
    +------------------------------+
    |                              |
    | Multihash                    |
    | +----------+---------------+ |
    | |Hash Type | Hash Value    | |
    | +----------+---------------+ |
    |                              |
    +------------------------------+

    如果你想了解更多关于CID如何在IPFS中构建的细节,可以查看我们的《CID的解剖》教程。

    🌐 小结

    今天我们探讨了CID的概念,它为我们在去中心化网络中标识和处理各种类型的数据提供了便利。通过结合密码学哈希和编解码器,CID为内容寻址带来了新的可能性。

    在接下来的课程中,我们将继续深入探讨如何在去中心化网络上利用这些工具。若你在学习过程中有任何疑问,ProtoSchool非常欢迎你的反馈,以帮助我们改进课程内容。准备好迎接最后一课的挑战了吗?

    参考文献

    • ProtoSchool. (n.d.). DWeb Tutorial | Content Addressing on the Decentralized Web (Lesson 4). Retrieved from ProtoSchool.
  • DWeb教程:去中心化网络上的内容寻址(第三课)

    欢迎回到ProtoSchool!在这一课中,我们将深入探讨去中心化网络中的内容寻址。准备好揭开这一崭新世界的面纱了吗?

    🔗 走出中心化的阴影

    在中心化网络中,我们依赖可信的权威机构来托管我们的数据,使用基于位置的URL来访问。然而,在去中心化网络中,我们有了另一种选择:每个人都可以托管彼此的数据,这种链接方式更加安全,从而使我们更容易信任我们的“邻居”。

    🔐 密码学哈希:去中心化的核心工具

    密码学哈希是去中心化数据结构中最重要的工具。它为我们打开了一种新的链接形式——内容寻址,使我们不再依赖中心化的权威。

    哈希过程会将任何大小和类型的数据转换为一个固定大小的“哈希值”。这个哈希值就像是数据的独特名称,虽然看起来像是一串乱码(例如:bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi),但它的安全性却让人印象深刻。

    🖼️ 哈希的神奇之处

    密码学哈希是基于数据本身生成的,这意味着使用相同算法处理相同数据的人会得到相同的哈希。例如,如果Ada和Grace都在使用IPFS共享同一张小猫的照片,那么两张照片的哈希值将完全相同。通过比较这些哈希,我们可以确认这两张照片每一个像素都是一致的。

    而且,哈希是唯一的。如果Grace在Photoshop中删除了一根猫胡子,更新后的图像将生成一个新的哈希。即使不访问文件本身,仅通过哈希,我们也能轻易识别出文件内容已经不同。

    🛡️ 去中心化网络中的信任

    在中心化网络中,我们习惯于信任某些权威机构,而不信任其他机构。虽然我们尽力从URL中获取线索,但仍然有一些恶意行为者利用位置寻址的缺陷来欺骗我们。

    然而,在去中心化网络中,我们共同托管彼此的数据,内容寻址使我们能够信任共享的信息。我们可能对托管数据的同伴知之甚少,但哈希可以防止恶意行为者欺骗我们。这就是密码学哈希在去中心化网络中如此重要的原因。

    🕵️‍♀️ 向节点请求内容

    在传统的基于位置的寻址中,我们知道需要访问puppies.com来找到存储为beagle.jpg的内容。如果puppies.com域名出现问题,我们将失去访问那张图片的权限。

    然而,在去中心化网络中,情况就大不相同。当我们想要获取一张可爱的宠物照片时,我们是通过内容地址(哈希)来请求的。我们要向谁询问呢?整个网络!如果Ada在线,我们会看到她拥有我们需要的内容,并且由于哈希匹配,我们知道这正是我们需要的文件。如果她下线,我们可能仍然可以从Grace或其他节点获取同样的照片。

    在去中心化网络上,由于我们使用哈希来请求数据,我们可以将哈希视为一种链接,而不仅仅是一个名称。

    参考文献

    • ProtoSchool. (n.d.). DWeb Tutorial | Content Addressing on the Decentralized Web (Lesson 3). Retrieved from ProtoSchool.
  • 提升 BiglyBT 对 IPFS 友好的处理方式:更好地处理作为 Webseeds 使用的 IPFS URL

    在当今数字内容共享的时代,文件的分布和传输方式正在快速演变。BitTorrent 和 IPFS(InterPlanetary File System)是两个强大的工具,分别在文件共享和分布式存储领域占据重要地位。然而,这两个工具之间的互操作性尚有提升空间。最近,有用户在 GitHub 上提出了一项建议,旨在改进 BiglyBT 客户端对 IPFS URL 作为 Webseeds 的处理方式,从而使其更加 IPFS 友好。这一提议不仅有助于提升文件传输效率,还能进一步推动去中心化网络的发展。

    现状与问题

    当前,当 BiglyBT 遇到一个公共 IPFS 网关 URL 作为 Webseed 时,它会尝试连接到该网关。然而,通过公共网关下载托管在 IPFS 上的文件,特别是大文件,效率往往不高。用户 hollownights 提出,BiglyBT 应该在检测到公共 IPFS 网关 URL 作为 Webseed 时,自动将其重写为由本地主机提供的路径格式 URL,或者如果检测到使用“ipfs:”协议的原生 IPFS URL,则将其重写为子域网关 URL。

    具体而言,URL 的重写方式如下:

    • 公共网关 URL:https://gateway-host.tld/ipfs/{cid} → http://localhost:8080/ipfs/{cid}
    • 原生 IPFS URL:ipfs://{cidv1} → http://{cidv1}.ipfs.localhost:8080

    重写后,BiglyBT 将发起请求并等待 HTTP 206(或200)响应。如果收到响应,则继续连接;如果未收到响应,则放弃本地主机 URL,回退到公共网关 URL 或直接丢弃原生 URL。

    提议的改进

    hollownights 还提出,这种行为可以通过与 IPFS 软件进行通信(通过命令行或 API)进一步优化,但目前以保持简单为目标。此更改结合自动将下载的文件/文件夹导入本地 IPFS 节点的选项(#2823),将显著提高去中心化 Web 协议(IPFS)与去中心化“文件协议”(BitTorrent)之间的互操作性。

    此外,parg 对此提出了一些疑问:谁会使用这些 IPFS Webseeds?如果这些 Webseeds 被添加到公开发布的种子文件中,那么大多数用户不会运行本地 IPFS 节点。如果这些 Webseeds 仅限于 IPFS 社区,为什么还要使用种子文件?

    hollownights 解释道,这种方法不仅仅是为了增加种子,还可以帮助像互联网档案馆这样的网站更好地将 Web 协议和 BitTorrent 结合起来。他进一步指出,如果 BitTorrent 客户端能够与本地 IPFS 节点通信,将更容易在 IPFS 网络中填充文件和节点,解决(或至少减轻)Web 问题。

    实际应用

    虽然 parg 认为公众大规模安装和维护 IPFS 节点的可能性不大,但 hollownights 强调这项改进主要面向已经托管种子盒和 IPFS 节点的用户。这些用户通常会发布大量文件,并希望在不同网络之间分发这些文件,同时节省带宽。对于网站而言,这意味着可以使用 IPFS 分发网站上的文件,同时通过种子文件利用用户的带宽。如果用户托管 IPFS 节点,那么这种方式将更加高效;如果没有,一切将如常进行。

    通过这些改进,BiglyBT 将更好地支持 IPFS,从而推动去中心化网络的发展。这不仅有助于提高文件传输效率,还能让更多用户受益于去中心化技术的优势。

    https://github.com/BiglySoftware/BiglyBT/issues/2822
人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客