跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

真紅の資源討論組

  1. 主页
  2. blog & 技术 & 教程
  3. [技术推荐] IPFS(InterPlanetary File System/星际文件系统) -- 有趣的去中心化,分布式网络

[技术推荐] IPFS(InterPlanetary File System/星际文件系统) -- 有趣的去中心化,分布式网络

已定时 置顶直到 2025/9/13 23:57 已锁定 已移动 blog & 技术 & 教程
技术ipfs推荐分布式
2 帖子 1 发布者 114 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • ErrorEutopiaE 离线
    ErrorEutopiaE 离线
    ErrorEutopia
    编写于 最后由 ErrorEutopia 编辑
    #1

    什么是IPFS?

    IPFS(InterPlanetary File System,星际文件系统) 是一种去中心化的文件存储和共享协议,旨在替代传统的中心化文件存储方式,如HTTP和FTP。它通过分布式网络来存储和共享文件,具有高效、安全和持久的特点。

    内容寻址

    传统互联网使用位置寻址(如'https://example.com/file.jpg'),你通过"去哪找"来获取文件。
    而IPFS使用内容寻址——基于文件内容的"指纹"来识别文件,而不是它的位置。

    这意味着什么?

    每个文件被分割成小块,每块通过加密哈希函数生成唯一指纹
    整个文件获得一个CID(Content Identifier,内容标识符),这是文件的"数字身份证"
    无论文件存储在世界哪个角落,只要你有CID,就能获取完全相同的文件
    文件内容哪怕改动一个字节,CID就会完全不同,确保你拿到的是原版

    IPFS的操作步骤

    存储:用户将文件上传到IPFS网络中,IPFS会将文件分散存储在多个节点。

    寻址:IPFS通过文件的内容生成一个唯一的哈希值,可以通过这个值来查找文件。

    下载:用户通过文件的哈希值来请求文件下载,IPFS会从网络中的多个节点上获取文件的不同片段,并将它们组装成完整的文件。

    共享:用户可以将自己的文件分享给其他用户,其他用户可以通过文件的哈希值来获取文件。

    小声BB:可以用来部署Blog等静态网页,真不错

    如何使用?

    PC端可使用命令行工具Kubo,其图形化界面IPFS Desktop,浏览器扩展IPFS Companion(需要搭配以上两个中的一个)

    命令行(Windows应该差不多?) + WebUI

    $ ipfs init #初始化IPFS
    $ ipfs daemon #启动服务
    $ ipfs repo gc #清除未pin的文件
    

    Desktop(推荐)

    开启挂后台即可

    一般人有什么用?

    1. 当分享盘(注:有点耗硬盘空间)
    2. 挂博客/静态网页 < 譬如这样(确保IPFS开启)

    各界面是什么?完全看不懂

    WebUI (以IPV4为准,默认在http://localhost:5001/webui)
    Desktop打开就是↑

    介绍页面,没啥用(点击IPFS左上角图标即可)

    63393e8c-639a-413c-8711-f06daa294a25-图片.png

    状态

    3de7f847-9c51-4bf1-a0b7-d88675d27a8f-图片.png

    可以查看你的IPFS占用,网络带宽(你用了多少[接收],别人用了多少/你上传了多少[发送])

    文件

    f286c306-1e78-4e60-a2e2-3f25a2d4780f-图片.png

    点击导入

    可以托管你的文件/静态网站
    aa028c02-4716-46ad-b5b2-32ee2d8c1e31-图片.png

    是否发现每个文件夹下面有Qmxxxx样式的文字?这就是CID
    TIps:除了Qm开头的还有bafy开头和k51开头的
    你只需要localhost:8080/ipfs/{CID}即可访问!
    若目录下有index.html,则会被浏览器渲染为网页
    (注:上传文件/文件夹会消耗一份同等与文件/文件夹大小的空间--ipfs复制了一份)

    来自IPFS路径

    通过CID导入别人的文件/文件夹

    如何下载?

    文件/文件夹右边三个点-> 下载(若是文件夹会被打包为.tar格式的压缩包)
    (或者wget -r -np -nH --cut-dirs=1 -P {你自定义文件夹名称} http://localhost:8080/{ipns/ipfs 不是k51开头的选ipfs就行}/{cid})

    浏览 -- 没啥用 前三个分别是阿波罗计划的图片存档,XKCD网站的梗图存档,维基百科的IPFS镜像(英语),其余没啥用

    3f320fe1-0318-44c9-8d65-08681e3b5e63-图片.png

    节点

    7923f931-3027-4271-8650-0db607d06427-图片.png
    你连接到节点才能使用IPFS,越多越好!

    配置

    (除了公共网关和IPNS发布密钥,其余的对于非高级用户没啥用)
    ff02d9a8-c852-43c7-807e-8d7329722060-图片.png
    本地网关是(默认端口8080)localhost:{端口}/{ipns/ipfs}/{CID}譬如:localhost:8080/ipfs/Qmxxxxx
    那么如果对方没有安装IPFS如何访问呢?
    这里就需要用到公共网关了!
    (注:官方仅维护https://dweb.link和https://ipfs.io,且都无法在中国大陆使用)

    这里的子域名网关是什么?

    emm...格式大概是这样的:{CID ipfs一般bafy开头}.{ipns/ipfs}.{host:port},例子:bafyxxxxxxx.ipfs.localhost:8080 或者k51xxxxxx.ipns.localhost:8080

    路径网关

    {host:port}/{ipns/ipfs}/{CID},譬如:localhost:8080/ipfs/Qmxxxxxxxx

    什么是IPNS发布密钥

    这就要提到上文所述:" 文件内容哪怕改动一个字节,CID就会完全不同,确保你拿到的是原版"
    那么如果我需要更改一点东西,譬如文本...文件...那么CID就会改变,这就蛋糕了,这时候,你或许就需要
    IPNS(IPNS全称是Inter-Planetary Naming Service,星际命名系统)了!
    简单来说,就是创建一个密钥,然后文件 -> 找个要发布的目录/文件,点击右边三个点 -> 点击发布至IPNS -> 选择密钥 -> 等待... -> 发布成功!
    (注:建议开启"设置固定")
    然后就可以参考网关部分{发布的密钥}.ipns.{host}或者{host}/ipns/{发布的密钥了}

    如何更新?

    删掉原本的,(勾选同时也从本地固定中移除(推荐),最好再在命令行ipfs repo gc[windows需要安装到PATH]),然后重新上传-> 发布
    若安装了Desktop和浏览器扩展IPFS Companion可使用这样的格式:
    ipfs://{CID}
    ipns://{CID}

    测试CID

    QmPDwD2m8FzwZY6PBbsX68ArDysrumDPP428MRpTafLCkc
    
    http://k51qzi5uqu5dgdmyxp21iljxpha2tewtak5ryhjz4ffegkfe6gefc1dsu6n42c.ipns.localhost:8080/onsyuri.html
    

    一些小问题:

    无法连接到Kubo RPC

    你可能填错了API或者服务未开启,修改一下配置文件或者重启应用

    连接不上

    1.看看代理是不是开的
    2.看看节点数,太少连不上很正常(尤其是IPNS)

    我发布的访问不了

    确保IPFS在后台开启!或者至少需要一台与你发布CID内容相同的机器在线

    安卓/IOS如何使用?

    由于现在的Android客户端太老(在7-10年以上了)你需要Termux(IOS ISH没用过所以不知是否可行)
    然后复制粘贴以下内容

    sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main stable main@' $PREFIX/etc/apt/sources.list #不想换源可以去掉
    
    apt update && apt upgrade 
    
    apt install kubo
    
    ipfs init
    
    # echo "ipfs daemon &" > $PREFIX/etc/termux-login.sh #若想termux开启就启动可以去掉 "#"号
    
    #其余参考命令行部分,还有请确保电池优化关闭!
    
    1 条回复 最后回复
    0
    • ErrorEutopiaE ErrorEutopia 固定了该主题
    • ErrorEutopiaE 离线
      ErrorEutopiaE 离线
      ErrorEutopia
      编写于 最后由 ErrorEutopia 编辑
      #2

      一些巨坑:
      1.请确保 状态 -> 地址那一栏至少一个IP地址双方可以ping通!
      2.双方尽量有相同的节点
      3.无法访问那就是没连上,以及尽量有一个公网IP(v4或者v6),没有请参考1.

      1 条回复 最后回复
      0
      回复
      • 在新帖中回复
      登录后回复
      • 从旧到新
      • 从新到旧
      • 最多赞同


      • 登录

      • 没有帐号? 注册

      • 登录或注册以进行搜索。
      Powered by NodeBB Contributors
      • 第一个帖子
        最后一个帖子
      0
      • 版块
      • 最新
      • 标签
      • 热门
      • 用户
      • 群组