标签: ipfs

如何在不等待整个文件的情况下将可读流传输到URL.createObjectURL?

我知道它对mediaSource是可行的,但媒体源不支持所有视频格式(例如碎片mp4).这是一个问题,因为我的应用程序没有可以修复文件的服务器.它只是一个客户端应用程序.

const blob = await ipfs.getBlobFromStream(hash)

const url = URL.createObjectURL(blob)

this.setState({...this.state, videoSrc: url})

const getBlobFromStream = async (hash) => {

  return new Promise(async resolve => {

    let entireBuffer

    const s = await stream(hash)
    s.on('data', buffer => {

      console.log(buffer)

      if (!entireBuffer) {
        entireBuffer = buffer
      }
      else {
        entireBuffer = concatTypedArrays(entireBuffer, buffer)
      }

    })

    s.on('end', () => {

      const arrayBuffer = typedArrayToArrayBuffer(entireBuffer)
      const blob = new Blob(arrayBuffer)
      resolve(blob)
    })

  })

}
Run Code Online (Sandbox Code Playgroud)

这是我现在正在使用的代码,它基本上等待整个文件并将其放在一个数组中然后放入blob然后放入URL.createObjectURL

javascript ipfs

10
推荐指数
1
解决办法
489
查看次数

来自 jacoco 的 java.lang.NoSuchFieldException 错误

我正在尝试运行从这里提供的 kotlin 代码的测试:https : //github.com/ligi/ipfs-api-kotlin with gradlew

我收到下面列出的错误。有人能告诉我这个错误是什么意思吗?

> Task :test FAILED
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:513)
        at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:525)
Caused by: java.lang.RuntimeException: Class java/lang/UnknownError could not be instrumented.
        at org.jacoco.agent.rt.internal_c13123e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:140)
        at org.jacoco.agent.rt.internal_c13123e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:101)
        at org.jacoco.agent.rt.internal_c13123e.PreMain.createRuntime(PreMain.java:55)
        at org.jacoco.agent.rt.internal_c13123e.PreMain.premain(PreMain.java:47)
        ... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
        at java.base/java.lang.Class.getField(Class.java:1999)
        at org.jacoco.agent.rt.internal_c13123e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138)
        ... 9 more
*** java.lang.instrument ASSERTION FAILED ***: "result" with …
Run Code Online (Sandbox Code Playgroud)

java kotlin gradlew ipfs

10
推荐指数
4
解决办法
7928
查看次数

使用IPFS的分散式聊天应用程序

我使用写分散聊天应用程序nodejs,expressjs,angularjs,socket.ioipfs.我现在用libp2p形成,将相互在一个开放的连接进行通信的节点.Libp2p是一个模块化的IPFS项目网络堆栈.

Libp2p允许我构建nodes能够托管一个swarmlistening/ dialing一个的.我已经发展到几个节点可以通过angularjs(由socket.io补充)网页中的输入相互通信,但是它们的IP地址和tcp端口需要进行硬编码.

我面临的问题是,如果未知数量的用户加入此系统并设置其节点,我该如何处理该方案.我已经完成了大量的研究,DHT特别是它与种子的应用,但我没有接近实际应用它.

我不想运行一个跟踪用户的中央系统,因为跟踪器跟踪种子中的播种机和传感器(由于DHT,现在有些多余)

在集中式聊天应用程序中,每次用户进入或离开时,我都可以使用socket.io信号从服务器向所有对等体发送emit事件.但是,分散式聊天应用程序中的等价物是我正在努力奋斗的东西.

我需要一些指导.

p2p dht node.js blockchain ipfs

8
推荐指数
1
解决办法
1865
查看次数

如何在不运行ipfs节点的情况下从Javascript app使用IPFS?

我有javascript应用程序(ReactJs),它将作为移动设备上的Android混合应用程序运行.我不想在移动设备上运行完整的IPFS节点,因为它会消耗大量的内存和能量.如何将我的应用程序连接到IPFS呢?

我看到了https://github.com/ipfs/js-ipfs-api#importing-the-module-and-usage,但它不再适用于移动设备,因为它作为独立服务运行.

可能我必须通过IPFS API(https://ipfs.io/docs/api/)连接到互联网上的某个IPFS节点,但是有没有办法在运行时发现运行节点并选择最快/最近一?

javascript ipfs

8
推荐指数
2
解决办法
3641
查看次数

IPFS 和 Bittorrent 中的分布式哈希表如何防止滥用?

我的理解是 IPFS 和 Bittorrent Mainline DHT 建立在分布式哈希表 (Kademlia) 之上。他们使用文件哈希作为 Kademlia 密钥来查找可能拥有此文件的对等点列表。

1- 我不明白的是,这是否都是分散的,谁从不再托管文件内容的 DHT 对等方中删除?

2- 什么阻止某人在 DHT 中免费存储大量数据?

3- 什么防止某人通过为流行文件添加大量无效对等点来破坏网络。

4- 什么阻止坏人加入 DHT 环而不遵循路由协议,从而阻止发现消息到达正确的节点。

bittorrent dht chord kademlia ipfs

8
推荐指数
1
解决办法
733
查看次数

如何修复“类型错误:Buffer.from 不是函数”?

问题

当尝试在我的应用程序中使用 ipfs-api 时,我收到以下错误:

ERROR TypeError: Buffer.from is not a function
    at varintEncode (vendor.js:185602)
    at Object../node_modules/is-ipfs/node_modules/multicodec/src/varint-table.js
    .....
Run Code Online (Sandbox Code Playgroud)

我的打字稿文件

ERROR TypeError: Buffer.from is not a function
    at varintEncode (vendor.js:185602)
    at Object../node_modules/is-ipfs/node_modules/multicodec/src/varint-table.js
    .....
Run Code Online (Sandbox Code Playgroud)

原因

错误语句中提到的文件在内部使用“ Buffer.from ”。

版本详情

我在某处读到这可能是由于版本问题造成的,并且 Buffer API 仅在 Node v5.10.0+ 中可用。

Buffer - 5.6.0 (latest)

Node - 10.17.0 

ipfs-api - 26.1.2
Run Code Online (Sandbox Code Playgroud)

所以我认为版本不是我的问题。

我尝试过的

对于抛出错误的文件,我添加了:

var ipfsAPI = require('ipfs-api');
....
ngOnInit() {
   this.ipfsApi = ipfsAPI(this.globals.ipfsIp, '5001');
}
Run Code Online (Sandbox Code Playgroud)

并且错误转移到下一个文件,显然这不是一个解决方案,而只是一个尝试。

如何解决这个问题?任何帮助,将不胜感激。

buffer node.js typescript ipfs

8
推荐指数
1
解决办法
2万
查看次数

有没有办法强制更新 Opensea 上的元数据?

我尝试更改令牌基本 URL 以在 opensea.io 上显示 NFT 的新图像。但不会立即更新。

有一种方法可以通过在 Rikeby 测试网上指定force_update=true 来进行更新。

但我不知道如何在主网上更新它。有可能吗?

任何帮助将不胜感激。

metadata ethereum ipfs nft opensea

8
推荐指数
1
解决办法
2万
查看次数

IPFS 无法真正强制节点删除上传的文件,这不是问题吗?

随着数字世界中正在发生这种去中心化浪潮,我想知道如何删除刚刚在去中心化网络上上传的一些内容。

据我了解,越来越多的人希望拥有去中心化的服务,因为与客户端-服务器架构相反,这让你对自己的东西拥有更多的所有权,并且一切都更加透明。但是,如果您搞砸了,或者您作为客户的公司搞砸了,他们/您上传了一些您显然不希望其他人访问的个人信息,会发生什么?由于它是一个点对点网络,每个人都可以访问它,并且没有办法强制他们删除它。

我想我想要了解的是,这个去中心化的未来将如何处理私人数据,是否会有一个集中的地方来存放私人数据,然后我们将在 ipfs 和不同的类似应用程序上做其他事情?因为如果是这样的话,那目的是什么,为什么不继续现在这样呢?也许我还没有看到所有的用例......

distributed ipfs decentralized-applications

8
推荐指数
2
解决办法
4329
查看次数

如何在一台机器上运行多个IPFS节点?

为了测试,我希望能够在一台机器上运行多个IPFS节点.

这是一个场景:我正在构建基于IPFS核心库的小型服务,遵循制作您自己的IPFS服务指南.当我尝试将客户端和服务器放在同一台机器上时(注意它们每个都将创建自己的IPFS节点),我将得到以下内容:

panic: cannot acquire lock: Lock FcntlFlock of /Users/long/.ipfs/repo.lock failed: resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

ipfs

7
推荐指数
1
解决办法
2077
查看次数

将文件上传到 IPFS 时出错:HTTPError:需要项目 ID

目前正在制作一个用于发布聊天的基本 DApp,与 Twitter 类似,只是基于智能合约构建。我正在使用安全帽并在本地主机上运行我的应用程序。创建个人资料时,我希望用户能够上传个人资料图片,但是目前每当我尝试这样做时,都会收到以下错误:

POST https://ipfs.infura.io:5001/api/v0/add?stream-channels=true&progress=false 401 (Unauthorized)
Run Code Online (Sandbox Code Playgroud)

伴随着错误消息:

Error uploading file:  HTTPError: project id required

    at Object.errorHandler [as handleError] (core.js?edc8:103:1)
    at async Client.fetch (http.js?8f3e:149:1)
    at async addAll (add-all.js?93f2:36:1)
    at async last (index.js?7e49:13:1)
    at async Object.add (add.js?6672:22:1)
Run Code Online (Sandbox Code Playgroud)

控制台显示该函数发生错误:

    const uploadToInfura = async (file) => {
      try {
        const added = await client.add({ content: file });
  
        const url = `https://ipfs.infura.io/ipfs/${added.path}`;
  
        setFileUrl(url);
      } catch (error) {
        console.log('Error uploading file: ', error);
      }
    };
Run Code Online (Sandbox Code Playgroud)

我将在下面附上此页面的完整代码,如果您可以,请告诉我需要修复哪些内容才能停止发生此错误。关于我总体上可以改进的任何其他建议也将不胜感激:)

import { useState, useEffect, useContext, useCallback, useMemo } …
Run Code Online (Sandbox Code Playgroud)

javascript http-error ipfs next.js

7
推荐指数
1
解决办法
7969
查看次数