我正在使用 js-ipfs 服务器端在 IPFS 上“上传”文件,但它似乎比命令行ipfs daemon和ipfs add someFile.
在服务器端,我实例化一个Ipfs对象,然后尝试storeData使用文件内容的路径和缓冲区。当我的服务器启动时,我连接到三个集群:
Swarm listening on /ip4/127.0.0.1/tcp/4003/ws/ipfs/QmTBoDWXviw7eRKeDGbp3wU2PxAw1epPxax6mp8uY6CEEW
Swarm listening on /ip4/127.0.0.1/tcp/4002/ipfs/QmTBoDWXviw7eRKeDGbp3wU2PxAw1epPxax6mp8uY6CEEW
Swarm listening on /ip4/10.19.77.89/tcp/4002/ipfs/QmTBoDWXviw7eRKeDGbp3wU2PxAw1epPxax6mp8uY6CEEW
Run Code Online (Sandbox Code Playgroud)
我这样使用IPFS:
const IPFS = require('ipfs');
const node = new IPFS();
class Ipfs {
constructor() {
node.on('error', e => console.log(e))
node.on('start', () => console.log('Node started !'))
node.on('ready', () => console.log('Node is ready !'))
}
storeData(content, path) {
return new Promise((resolve, fail) => {
let encData = {
path: path,
content: content,
}; …Run Code Online (Sandbox Code Playgroud) 当使用node.js应用程序中的以下代码以编程方式启动 js-ipfs 节点时,它会启动 swarm,允许添加文件并查询它们。
// code from the docs: https://github.com/ipfs/js-ipfs#use-in-nodejs
const IPFS = require('ipfs')
const node = new IPFS()
node.on('ready', () => {
// Ready to use!
})
Run Code Online (Sandbox Code Playgroud)
但 API 和网关不可用,这意味着 Web-ui 无法检查存储库内容。如何使用 npm 包启动 API 网关以及 ipfs swarm ipfs?
如果两个用户在完全相同的时间从同一内部网络上的两个终端设备(例如,同一办公室共享互联网链接)将同一个文件上传到 IPFS,这两个文件的 CID 是否不同?如果 CID 不同,那么有什么不同呢?
这也许是非常基本的问题,但我在搜索中找不到\xe2\x80\x99。假设文件内容\xe2\x80\x99 甚至没有改变一点,即使它\xe2\x80\x99 被不同的用户添加/固定,IPFS CID 也永远不会改变吗?
\n这个假设在可预见的未来仍然成立吗?我知道这取决于哈希算法,所以只要知道使用了什么哈希算法(SHA-256),IPFS CID 就可以重现可预见的功能,对吗?或者还有其他信息需要存储吗?
\n我正在构建一个使用 IPFS 进行去中心化存储的应用程序,但现在我只有 1 个节点。
我从tmux运行ipfs 守护进程,但该守护进程不会长时间保持活动状态,我不明白为什么。无论如何,如果守护进程死了,我需要做一些事情来使其保持活力。
当初始化 ipfs 节点时,ipfs 似乎也会生成一个 RSA 密钥对:
$ jsipfs init
initializing ipfs node at /Users/pascalprecht/.jsipfs
generating 2048-bit RSA keypair...done
peer identity: QmYDkVX6kUFrn8FKiDKrFqhrkbr4Ax1nxxvgJfT5C6feXv
to get started, enter:
jsipfs files cat /ipfs/QmfGBRT6BbWJd7yUc2uYdaUZJBbnEFvTqehPFoSMQ6wgdr/readme
Run Code Online (Sandbox Code Playgroud)
虽然我知道非对称加密是安全性和完整性方面的关键构建块之一,但我仍然想知道为什么 IPFS 在节点初始化以及使用地点和时间上生成密钥对。
我需要通过安装了 certbot 的 nginx 创建ipfs http 网关,并将websocket 重定向到端口 9999,但我无法使其按预期工作。
运行 websocket 服务的代码位于“location /”。ipfs 网关的代码位于“location /ipfs”。
server {
location /ipfs {
proxy_pass http://0.0.0.0:9001;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
allow all;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_redirect http://0.0.0.0:9999/ /;
proxy_redirect ws://0.0.0.0:9999/ /;
proxy_pass http://0.0.0.0:9999/;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
allow all; # Any IP can perform any other requests
proxy_set_header Connection "Upgrade";
if …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用 js-ipfs 的浏览器应用程序。在我发布 ipfs 地址(例如 /ipfs/Qm...)后,我成功获取返回的名称(即 /ipns/Qm..)。但问题是我无法在其他任何地方(本地节点的网关、公共网关等)解决它,但在同一个浏览器应用程序中,这是非常有问题的......
如何解决这个问题?我相信这与浏览器不支持 DHT 有关,但不知道如何解决它......
我尝试使用 nft.storage (Reactjs) 将我的 nft 元数据存储到 ipfs 当我按照他们的文档中的说明导入库时,我收到此错误 在此处输入图像描述
我在网上看到了一个关于 web3storage 库的类似错误,这可能是 webpack 版本问题,但没有解决方案。有任何想法吗?这就是我导入它的方式: import { NFTStorage, File } from 'nft.storage'
完全如文档中所示。
我有一个用于测试目的的简单 ERC721 智能合约,我想知道是否可以查询该智能合约中特定钱包拥有的代币 ID。
最终我想在网站上显示用户铸造的 NFT。
合约中的balanceOf返回用户拥有的代币数量,但没有更多信息。
我的测试智能合约: