V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xarthur
V2EX  ›  IPFS

一个在浏览器里运行 IPFS 节点的 Demo

  •  
  •   xarthur · 2021-01-30 18:25:29 +08:00 · 2374 次点击
    这是一个创建于 1378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    测试链接

    因为 Bootstrap 节点可能被墙了,建议代理打开。

    算是一个技术验证类型的东西,这里的过程是在你打开这个网页的时候在浏览器里启动一个 IPFS 节点。然后通过这个 IPFS 节点获取 IPLD 数据结构的对象,然后把这个对象渲染出来。

    不过经过测试在浏览器里跑 JS-IPFS 的限制还是很多,比如 DHT 网络就不能用,目前看来只能和开了 Websocket 链接的服务器通讯,之后可能会好点(比如利用 WebRTC 技术来实现 DHT 网络?)。

    代码在这里,非常简单,用了 React 框架

    7 条回复    2021-04-03 01:00:45 +08:00
    mushokumunou
        1
    mushokumunou  
       2021-04-02 16:54:35 +08:00
    什么应用场景?没看懂。
    是不是客户端只要一直打开这个网页,就能作为 ipfs 节点,中继这个网站发出的 pin 请求?
    xarthur
        2
    xarthur  
    OP
       2021-04-02 17:56:33 +08:00
    @mushokumunou 你打开这个页面的时候就启动了一个本地的 IPFS 节点。
    然后你就可以通过这个节点获取数据,在这里就是一个 IPLD 结果的数据(你可以理解成 JSON )。
    mushokumunou
        3
    mushokumunou  
       2021-04-02 23:21:50 +08:00
    @xarthur 看了你的博客,介绍主要 ipfs,我正好有个问题想问问。
    ipfs 文件具有唯一性,发生变更后,就会产生新的 cid,这影响我之前的 cid 分享,怎么让我的 cid 能固定呢?
    用到 ipns,但 ipns 的查询相当慢,几乎不可用。官方也不建议 ipns 。
    那有什么其他方案可以做这类更新内容固定 id 的活呢?
    最近项目组里在弄 ipfs 玩,发现文件夹里增删改文件后,cid 也变了,之前分享的 cid 还是老版本的。
    xarthur
        4
    xarthur  
    OP
       2021-04-02 23:31:30 +08:00 via iPhone
    @mushokumunou CID 固定不了,你可以把 CID 当作一个 hash 值。
    要固定一般的解决方法是 IPNS 和用 DNSLink

    IPNS 确实很慢,按照官方的说法是 IPNS-over-pubsub 会快很多,但是 pubsub 现在还不是默认开启的选项。而且具体能快多少存疑。不过 IPFS 官方最近好像正在努力让 pubsub 能默认启用。
    关于这个主题有三个相关的 pr,你可以看看。

    https://github.com/protocol/web3-dev-team/pull/53

    https://github.com/protocol/web3-dev-team/pull/19

    https://github.com/protocol/web3-dev-team/pull/66

    目前比较好的解决方法就是用 DNSLink 来固定 CID 了。我的 Blog 就启用了 DNSlink,如果你装了 IPFS-companion 应该会自动跳转的。
    xarthur
        5
    xarthur  
    OP
       2021-04-02 23:37:00 +08:00 via iPhone
    @mushokumunou 说实话,如果你需要那种高动态的系统。现在这种去中心化的网络其实都很难做到。
    你可以使用一下零网,零网是目前动态性最好的了。
    xarthur
        6
    xarthur  
    OP
       2021-04-02 23:41:38 +08:00 via iPhone
    @mushokumunou 如果你要纯粹的分布式更新,其实也可以用去中心化区块链上的 DNS,比如 ENS 之类的。但是上链成本很高(
    mushokumunou
        7
    mushokumunou  
       2021-04-03 01:00:45 +08:00
    感谢提供思路,回头组里研究一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2700 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:31 · PVG 22:31 · LAX 06:31 · JFK 09:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.