一个在浏览器里运行 IPFS 节点的 Demo - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xarthur
V2EX    IPFS

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

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

    测试链接

    因为 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     Solana     3162 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:43 PVG 19:43 LAX 03:43 JFK 06:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86