gpt4 book ai didi

go - 以编程方式使用 Go-IPFS

转载 作者:IT王子 更新时间:2023-10-29 02:01:30 26 4
gpt4 key购买 nike

我希望能够在我的 Go 程序中使用 Go-IPFS,但是它完全没有记录。这是我的研究引导我的地方:

package main

import (
"context"
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"

"gx/ipfs/QmSP88ryZkHSRn1fnngAaV2Vcn63WUJzAavnRM9CVdU1Ky/go-ipfs-cmdkit/files"

"github.com/ipfs/go-ipfs/core"
"github.com/ipfs/go-ipfs/core/coreunix"
)

func main() {
ctx := context.Background()

node, err := core.NewNode(ctx, &core.BuildCfg{})
if err != nil {
log.Fatalf("Failed to start IPFS node: %v", err)
}
reader, err := coreunix.Cat(ctx, node, "QmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB")
if err != nil {
log.Fatalf("Failed to look up IPFS welcome page: %v", err)
}
blob, err := ioutil.ReadAll(reader)
if err != nil {
log.Fatalf("Failed to retrieve IPFS welcome page: %v", err)
}
fmt.Println(string(blob))
}

但是我不确定

的区别

context.Background() 对比 context.TODO() 对比 context.WithCancel(context.Background())

最重要的是,如何选择 IPFS 放置 IPFS 存储库的位置并确保它也初始化它?

如何启用和使用 Pubsub 及其命令 subscribepublish

如何将文件添加并固定到 IPFS,同时还可以为大文件输入流?

coreunix.Cat 也适合用流读取文件吗?

当您从 CLI 运行 ipfs 守护程序并让所有端口(如 webui、swarm 等)上的所有内容都在运行时,我如何保持节点“监听”?

这个添加文件怎么样?这是使用流还是将整个文件读入内存?如何改进?

func addFile(ctx *context.Context, node *core.IpfsNode, path *string) error {
file, err := os.Open(*path)
if err != nil {
return err
}
adder, err := coreunix.NewAdder(*ctx, node.Pinning, node.Blockstore, node.DAG)
if err != nil {
return err
}
filename := filepath.Base(*path)
fileReader := files.NewReaderFile(filename, filename, file, nil)
adder.AddFile(fileReader)
adder.PinRoot()
return nil
}

最佳答案

你可能想把你的问题分解成更小的部分,我一直在研究 go-ipfs 的源代码,这里是我可以给你的一般说明:

  1. 大多数数据结构,如上下文、DAG、IPFSNode 等都是以 go 结构的形式定义的,你应该能够在 gx/.../... 目录中找到它们,你也应该在该目录中能够查看有关每个使用的变量的详细信息(通过目录进行简单的字符串搜索应该可以让您找到所需的源文件)
  2. 所有的方法都定义在文件夹github.com/../..目录下
  3. 清除指针的概念,因为它们大部分时间都使用指针将参数传递给函数

关于go - 以编程方式使用 Go-IPFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52179737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com