刚刚开始使用ipfs。在我们执行 $ipfs 守护进程之后,我联系 localhost:5001/webui (显示连接被拒绝。检查了代理和所有东西)。守护进程逃脱了 cmd,但仍在后台运行。当我们做 $ipfs swarmpeers 时。它给出“错误:api 未运行”
我们正在Electron上构建一个桌面应用程序,以便在IPFS上共享媒体.我们希望激励那些通过IPFS添加或引脚向其他用户提供数据并实际上正在"播种"数据的人.我们希望以编程方式和周期性跟踪每个用户发送和接收的数据量.
是否有标准模式或服务能够做到这一点?
TIA!
我正在使用IPFS version 0.4.4.
我的目标是连接两个对等体,以防止IPFS对等体从共享对等体读取IPFS哈希时停止.为了实现它,我ipfs swarm connect
用来将peer-A连接到peer-B,其中peer-B可以访问peer-A上的ipfs-file.
我的问题与:
ipfs swarm connect /ip4/x.x.x.x/tcp/4003/ipfs/QmXXXXXXXXXXXXXXXXXXX
当我尝试将笔记本电脑连接到另一个IPFS-peer时,我面临以下错误:
connect failure: dial attempt failed: context deadline exceeded.
但是当我尝试所有端口都打开的亚马逊AWS时,它可以工作,因此群集连接成功结束.
[问]为了使ipfs swarm connect
工作API和网关端口应该打开?或者我应该做别的什么?
例如:端口5001和8080无论什么都打开?
.ipfs/config
文件:
"API": "/ip4/127.0.0.1/tcp/5001",
"Gateway": "/ip4/127.0.0.1/tcp/8080",
Run Code Online (Sandbox Code Playgroud) 目前正在制作一个用于发布聊天的基本 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) 为了通过哈希在IPFS网络中找到文件,我们应该询问相邻节点 - “你有哈希H(F)的文件吗?” 如果没有,那么他们会进一步传播这个问题。
有没有办法通过文件名搜索 IPFS 中的文件?例如,如果我想在 IPFS 中搜索一个主题,我想这个主题的文件名类似于some-subject.pdf,那么,有一种方法可以检索包含单词“subject”的文件的哈希值?
假设我要像这样向IPFS添加数据:
$ echo Hello World | ipfs add
Run Code Online (Sandbox Code Playgroud)
这将给我QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
-一个CID,它是Base58编码的Multihash。
将其转换为Base16,告诉我IPFS添加的哈希摘要是SHA2-256哈希:
12 - 20 - 74410577111096cd817a3faed78630f2245636beded412d3b212a2e09ba593ca
<hash-type> - <hash-length> - <hash-digest>
Run Code Online (Sandbox Code Playgroud)
我知道IPFS不仅会散列数据,而且实际上会先将其序列化为Unixfs protobuf,然后再将其放入dag中。
我想揭开神秘的面纱,但该如何解决这个问题,74410577111096cd817a3faed78630f2245636beded412d3b212a2e09ba593ca
但我不太确定如何掌握已创建的数据,该数据将Unixfs protobuf与数据一起保存。
例如,我可以将序列化的原始数据写入磁盘并使用protobuf解码器进行检查:
$ ipfs block get QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u > /tmp/block.raw
$ protoc --decode_raw < /tmp/block.raw
Run Code Online (Sandbox Code Playgroud)
这将使我获得可读格式的序列化数据:
1 {
1: 2
2: "Hello World\n"
3: 12
}
Run Code Online (Sandbox Code Playgroud)
但是,通过SHA-256进行管道传递仍然会给我带来不同的哈希值,这是有道理的,因为IPFS会将protobuf置于dag中并对其进行多次哈希处理。
$ protoc --decode_raw < /tmp/block.raw | shasum -a 256
Run Code Online (Sandbox Code Playgroud)
因此,我决定弄清楚如何掌握该dag节点,自己对其进行哈希处理,以获取所需的哈希值。
我希望使用它ipfs dag get QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
可以给我提供一个多哈希,然后可以对其进行解码,但是事实证明,它会返回一些我不知道如何检查的其他数据哈希:
$ ipfs dag get QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
$ {"data":"CAISDEhlbGxvIFdvcmxkChgM","links":[]}
Run Code Online (Sandbox Code Playgroud)
关于如何data
从此处解码的任何想法?
更新 …
我正在尝试从流中加载视频。即使整个视频尚未“下载”,我也希望能够“播放”视频。base64 数据以缓冲区块流的形式传入。
const videoTag = document.getElementById('videoTag');
const mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
const mediaSource = new MediaSource();
videoTag.src = URL.createObjectURL(mediaSource);
await new Promise((resolve, reject) => {
mediaSource.addEventListener('sourceopen', function (_) {
resolve();
});
});
const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
for await (const chunk of ipfsNode.cat(CID)) {//Chunk is coming in as an array buffer
sourceBuffer.appendBuffer(chunk);
}
sourceBuffer.addEventListener('updateend', async function (_) {
mediaSource.endOfStream();
$('#videoTag')[0].load();
});
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用new MediaSource()
和sourceBuffer.appendBuffer(chunk);
推新下载的数据块的视频,但不仅在视频没有播放过,我现在用的方法要求之前,整个视频下载可以玩。
如何将我chunk
的 base64 数据放入视频中?
编辑(回应评论):无论我是使用字符串还是二进制流,我都对如何将流导入视频感到有些困惑。
如何完全卸载 IPFS 并从头开始重新启动并获取新的对等 ID?我尝试删除 go-ipfs 文件夹,但仍然收到错误:ipfs 配置文件已存在!当我执行 ipfs init 时。
我将文件上传到 NFT 存储,我可以在https://nft.storage/files/中看到文件列表,但如果我单击 CID 链接,则会收到错误消息ipfs cat /ipfs/bafyreiayui2us6fpowl42vqwmjrntpewhqpfkbgcak6pt4gkpz55z2o3se/: unknown node type
我的代码如下
const { NFTStorage, File } = require('nft.storage')
const apiKey ='eyJ........CJ9'
const client = new NFTStorage({ token: apiKey })
const metadata = await client.store({
name: artworkName,
description: description,
artistName: artistName,
image: new File(data, fileName, { type: artfile.mimetype }),
})
console.log(metadata.url)
Run Code Online (Sandbox Code Playgroud)
我可以在NFT存储nft存储上看到metadata.json和文件
我认为,文件大小存在问题。
请帮我
ipfs ×10
javascript ×2
express ×1
html5-video ×1
http-error ×1
metadata ×1
next.js ×1
nft ×1
node.js ×1
p2p ×1
video ×1