Home

Awesome

go-ipfs explain translate-svg

「 ipfs 的 go 语言实现 」

更新 ✅

<!-- doc-templite START generated --> <!-- time = '2018 11.21' --> <!-- repo = 'ipfs/go-ipfs' --> <!-- commit = 'b7a48531b7b64fcaa858e2c28e42fb4eeb6fcc0d' -->
翻译的原文与日期最新更新更多
commit⏰ 2018 11.21last中文翻译
<!-- doc-templite END generated --> <details> </details>

贡献

欢迎 👏 勘误/校对/更新贡献 😊 具体贡献请看

生活

If help, buy me coffee —— 营养跟不上了,给我来瓶营养快线吧! 💰


go-ipfs

banner

standard-readme compliant GoDoc Build Status

项目状态

Throughput Graph

核心开发告示,周报大会

什么是 IPFS?

ipfs 是一个世界性的,版本化的对等文件系统. 它结合了 Git,BitTorrent,Kademlia,SFS 和 Web 的好点子. 它就像一个 bittorrent swarm,交换 git 对象. IPFS 提供了一个像 HTTP Web 一样简单的接口,但内置了永久性. 您还可以将世界挂载到 /ipfs.

目录

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <!-- END doctoc generated TOC please keep comment here to allow auto update -->

安全问题

ipfs 协议及其实现仍处于重大发展阶段. 这意味着我们的协议可能存在问题,或者我们的实现可能存在错误. 而且 - 虽然 ipfs 还没有生产就绪 - 许多人已经在他们的机器上运行节点. 因此,我们非常重视安全漏洞. 如果您发现安全问题,请立即引起我们的注意!

如果您发现可能影响实时部署的漏洞 (例如,暴露远程执行漏洞) ,请将您的报告私下发送至 security@ipfs.io. 请不要提交公共问题. security@ipfs.io 的 GPG 密钥 是4B9665FB 92636D17 7C7A86D3 50AAE8A9 59B13AF3.

如果问题是无法立即利用的协议弱点 或 尚未部署的问题,请公开讨论.

安装

ipfs 的下载说明在: http://ipfs.io/docs/install/. 它是 强烈建议的说明,如果您对 ipfs 开发不感兴趣,请遵循这些说明.

系统要求

ipfs 可以在大多数 Linux,macOS 和 Windows 系统上运行. 我们建议在具有至少 2 GB RAM 的机器上运行它 (只有一个 CPU 内核可以正常运行) ,但只需 1 GB 的内存即可正常运行. 在内存较少的系统上,它可能不完全稳定.

安装整理好的构建包

我们在我们的网站上托管预建的二进制文件发行页面.

从那里:

你也可以从项目的 Github releases 页面下载 go-ipfs ,如果你 被伟大的 GTW 阻止你访问 ipfs.io。

来自 Linux 包管理器

Arch Linux

在 Arch Linux 安装 go-ipfs包.

$ sudo pacman -S go-ipfs

go-ipfs 的开发版本也在 AUR 下go-ipfs-git. 您可以使用自己喜欢的 AUR Helper 安装它,也可以从 AU R 手动安装.

nix

对于 Linux 和 MacOSX,您可以使用纯功能包管理器nix:

$ nix-env -i ipfs

您也可以使用它的属性名称来安装ipfs.

snap

随着 snap,在任何一个支持的 Linux 发行版:

$ sudo snap install ipfs

从源代码构建

安装 Go

ipfs 的构建过程需要Go 1.10或更高版本. 如果你没有它: 下载 Go 1.10+.

您需要将 Go 的 bin 目录 添加到您的$PATH环境变量,例如,通过将下面这些代码行添加到您的/etc/profile (用于系统范围的安装) 或$HOME/.profile:

export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$GOPATH/bin

(如果遇到麻烦,请参阅go 安装说明) .

下载并编译 ipfs

$ go get -u -d github.com/ipfs/go-ipfs

$ cd $GOPATH/src/github.com/ipfs/go-ipfs
$ make install

如果你是在 FreeBSD 使用gmake install 而不是make install.

建立在不太常见的系统上

如果您的操作系统没有得到官方支持,但您仍然想尝试构建 ipfs (在大多数情况下它应该可以正常工作) ,您可以执行以下操作而不是make install:

$ make install_unsupported

注意: 如果,此过程可能会中断gx (用于依赖关系管理) 或其任何依赖关系go get将始终为每个依赖项选择最新的代码,通常会导致 API 不匹配.

故障排除

更新 go-ipfs

使用 ipfs-update 进行更新

ipfs 有一个官方更新工具ipfs update. 该工具没有与 ipfs 一起安装,以保持该逻辑独立于主代码库. 要安装ipfs update,在这里下载.

下载 ipfs 的构建,通过 ipfs

列出 go-ipfs 的可用版本:

$ ipfs cat /ipns/dist.ipfs.io/go-ipfs/versions

然后,从上一个命令 ($ VERSION) 查看版本的可用构建:

$ ipfs ls /ipns/dist.ipfs.io/go-ipfs/$VERSION

要下载版本的给定版本:

$ ipfs get /ipns/dist.ipfs.io/go-ipfs/$VERSION/go-ipfs_$VERSION_darwin-386.tar.gz # darwin 32-bit build
$ ipfs get /ipns/dist.ipfs.io/go-ipfs/$VERSION/go-ipfs_$VERSION_darwin-amd64.tar.gz # darwin 64-bit build
$ ipfs get /ipns/dist.ipfs.io/go-ipfs/$VERSION/go-ipfs_$VERSION_freebsd-amd64.tar.gz # freebsd 64-bit build
$ ipfs get /ipns/dist.ipfs.io/go-ipfs/$VERSION/go-ipfs_$VERSION_linux-386.tar.gz # linux 32-bit build
$ ipfs get /ipns/dist.ipfs.io/go-ipfs/$VERSION/go-ipfs_$VERSION_linux-amd64.tar.gz # linux 64-bit build
$ ipfs get /ipns/dist.ipfs.io/go-ipfs/$VERSION/go-ipfs_$VERSION_linux-arm.tar.gz # linux arm build
$ ipfs get /ipns/dist.ipfs.io/go-ipfs/$VERSION/go-ipfs_$VERSION_windows-amd64.zip # windows 64-bit build

命令行总览

    ipfs - 全球(星际)p2p merkle-dag 文件系统.

    ipfs [<flags>] <command> [<arg>] ...

子命令
    基本 COMMANDS
    init          初始化 ipfs 本地配置
    add <path>    将文件添加到 ipfs
    cat <ref>     显示 ipfs 对象数据
    get <ref>     下载 ipfs 对象
    ls <ref>      列出对象的链接
    refs <ref>    列出来自对象的链接哈希值

    数据结构 COMMANDS
    block         与数据存储区中的原始块交互
    object        与原始dag 节点交互
    files         与对象交互,就像它们是 unix文件系统一样

    高级 COMMANDS
    daemon        启动一个长期运行的守护程序进程
    mount         挂载ipfs只读挂载点
    resolve       解决任何类型的名称
    name          发布或解析IPNS名称
    dns           解析DNS链接
    pin           将对象固定到本地存储
    repo          操作ipfs存储库

    网络 COMMANDS
    id            显示有关ipfs peers的信息
    bootstrap     添加或删除引导程序对等项
    swarm         管理与p2p网络的连接
    dht           查询DHT的值或对等体
    ping          测量连接的延迟
    diag          打印诊断

    工具 COMMANDS
    config        管理配置
    version       显示ipfs版本信息
    update        下载并应用go-ipfs更新
    commands      列出所有可用命令

    Use 'ipfs <command> --help' to learn more about each command.

    ipfs使用本地文件系统中的存储库。 默认情况下,可
     在 ~/.ipfs 找到。 要更改位置,请设置 $ipfs_PATH 环境变量:

    export ipfs_PATH=/path/to/ipfsrepo

入门

也可以看看: http://ipfs.io/docs/getting-started/

要开始使用 ipfs ,必须首先在系统上 初始化 ipfs 的配置文件,用ipfs init. 看到ipfs init --help有关可选参数的信息. 初始化完成后,即可使用ipfs mount,ipfs add以及任何其他你想试试的命令!

有些事情要确定一下

本地'ipfs 正在工作'的基本证明:

echo "hello world" > hello
ipfs add hello
# This should output a hash string that looks something like:
# QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ipfs cat <that hash>

Docker 用法

ipfs 的 docker 镜像托管在hub.docker.com/r/ipfs/go-ipfs. 要使文件在容器内可见,您需要使用 docker 的选项-v安装主机目录. 选择要用于 从 ipfs 导入/导出文件 的目录. 您还应该选择一个目录来存储 在重新启动容器时 将保留的 ipfs 文件.

export ipfs_staging=</absolute/path/to/somewhere/>
export ipfs_data=</absolute/path/to/somewhere_else/>

启动运行 ipfs 的容器并公开端口 4001,5001 和 8080:

docker run -d --name ipfs_host -v $ipfs_staging:/export -v $ipfs_data:/data/ipfs -p 4001:4001 -p 127.0.0.1:8080:8080 -p 127.0.0.1:5001:5001 ipfs/go-ipfs:latest

观看 ipfs 日志:

docker logs -f ipfs_host

等待 ipfs 启动. 当你看到 ipfs 正在运行:

Gateway (readonly) server
listening on /ip4/0.0.0.0/tcp/8080

你现在可以停止观看日志了.

运行 ipfs 命令:

docker exec ipfs_host ipfs <args...>

例如: 连接到同行

docker exec ipfs_host ipfs swarm peers

添加文件:

cp -r <something> $ipfs_staging
docker exec ipfs_host ipfs add -r /export/<something>

停止正在运行的容器:

docker stop ipfs_host

故障排除

如果之前已经安装过 ipfs,并且遇到了使新版本工作的问题,请尝试删除 (或在其他地方备份) ipfs 配置目录 (默认为〜/.ipfs) 并重新运行ipfs init. 这会将配置文件重新初始化为其默认值,并清除任何错误的本地数据存储区.

请将一般问题和帮助请求发送给我们论坛或我们的 IRC 频道 (freenode #ipfs) .

如果您认为自己发现了错误,请查看问题清单,如果您没有在那里看到您的问题,请在 IRC (freenode #ipfs) 上与我们联系 或 提交您自己的问题!

Package 们

package-table生成此表格 ,运行 package-table --data=package-list.json.

IPFS 生态使用的主包的列表。 这里还有三个值得链接的规范:

CI/TravisCI/JenkinsCoverage
Files(文件)
go-unixfsTravis CIN/Acodecov核心'文件系统(filesystem)'逻辑
go-mfsTravis CIjenkinscodecovunixfs 的可变文件系统编辑器
go-ipfs-posinfoTravis CIN/Acodecovfilestore 的辅助数据类型
go-ipfs-chunkerTravis CIN/Acodecov文件分块器
Exchange(信息交换)
go-ipfs-exchange-interfaceTravis CIN/Acodecov交换服务接口
go-ipfs-exchange-offlineTravis CIN/Acodecov(虚拟)交换服务的离线实现
go-bitswapTravis CIjenkinscodecovbitswap 协议实现
go-blockserviceTravis CIN/Acodecov将一个块存储和一个交换一起插入的服务
Datastores(数据存储)n
go-datastoreTravis CIN/Acodecov数据存储区接口,适配器和基本实现
go-ipfs-ds-helpTravis CIN/Acodecov数据存储区实用程序功能
go-ds-flatfsTravis CIN/Acodecov一个基于文件系统的数据存储区
go-ds-measureTravis CIN/Acodecov一个度量收集数据库适配器
go-ds-leveldbTravis CIN/Acodecov一个基于 leveldb 的数据存储区
go-ds-badgerTravis CIN/Acodecov一个基于 badgerdb 的数据存储区
Namesys(另命为)
go-ipnsTravis CIN/AcodecovIPNS 数据结构和验证逻辑
Repo
go-ipfs-configTravis CIN/Acodecovgo-ipfs 配置文件 定义
go-fs-lockTravis CIjenkinscodecovlockfile 管理 函数
fs-repo-migrationsTravis CIN/Acodecovrepo 迁移
Blocks(块化)
go-block-formatTravis CIN/Acodecovblock(块) 接口 和 实现
go-ipfs-blockstoreTravis CIN/Acodecovblockstore 接口 和 实现
go-ipfs-blockstoreTravis CIN/Acodecovblockstore 接口 和 实现
Commands(命令)
go-ipfs-cmdsTravis CIN/AcodecovCLI & HTTP 命令 库
go-ipfs-cmdkitTravis CIjenkinscodecov命令库的类型帮手
go-ipfs-blockstoreTravis CIN/Acodecovblockstore 接口 和 实现
go-ipfs-apiTravis CIN/Acodecov一个 IPFS HTTP API 的 shell
Metrics & Logging(度量与记录)
go-metrics-interfaceTravis CIN/Acodecov指标集合 接口
go-metrics-prometheusTravis CIN/Acodecovprometheus-backed 指标集合
go-logTravis CIN/Acodecovlogging 框架
Generics/Utils(通用/工具)
go-ipfs-routingTravis CIN/Acodecovrouting-路由(content(内容), peer(节点), value) 帮手
go-ipfs-utilTravis CIN/Acodecovthe kitchen sink (厨房水槽)
go-ipfs-addrTravis CIN/Acodecov工具函数,用于解析 IPFS multiaddrs(多地址)

为简洁起见,我们省略了 go-libp2p 和 go-ipld 包。 这些包的表格可以在各自项目的 readme 文件中找到:

开发

有些地方可以帮助你入门

CLI, HTTP-API, 建筑图

测试

make test

开发依赖

如果更改 协议缓冲区,则需要安装protoc 编译器.

开发者 笔记

请在 docs目录,查看更多开发信息.

贡献-帮助

我们 ❤️ 所有我们的贡献者;没有你,这个项目不可能成功! 如果您想提供帮助,请参阅Contribute.zh.md.

该存储库遵守 ipfscode-行为守则.

执照

MIT