Skip to main content

IPFS

# macOS
brew install ipfs

# https://docs.ipfs.io/reference/api/cli/
# 生成配置文件
# 默认位于 $HOME/.ipfs 可通过 IPFS_PATH 更改
export IPFS_PATH=$PWD/repo
# 也可以使用 --config 或 -c 指定
ipfs init

# 获取配置
ipfs config -c $PWD/repo --json Addresses.API
# 修改配置
# 默认只监听 127.0.0.1
ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001

# 启动服务端
ipfs daemon

# 可使用 --api 指定远程接口
# 查看节点
ipfs --api /ip4/127.0.0.1/tcp/5001 swarm peers

# 容器环境中使用 ipfs
docker run --rm -it -v $PWD:/host --entrypoint sh --workdir /host ipfs/go-ipfs

# 启动服务
# -e IPFS_LOGGING=debug 显示调试日志
docker run -it --rm \
-v $PWD/repo:/data/ipfs \
-p 8080:8080 -p 4001:4001 -p 5001:5001 \
--name ipfs_host ipfs/go-ipfs


# 生成 hash 不添加文件 - HASH 对应 IPLD file data
echo 'Hello IPFS!' | ipfs add -nq

# MFS 里文件的 hash - 是一个 LINK - HASH 对应 IPLD 多个 file block - 最后的一个 block 对应 raw 数据 - 相同数据但不同 hsah
ipfs files stat /myfile

# cp 可以支持从 add 的复制到 mfs
ipfs files cp /ipfs/$(echo 'Hello IPFS!' | ipfs add -q) /hello.txt
ipfs files read /hello.txt

libp2p

功能目的实现
使用数据applicationsIPFS
定义数据naming
merkledag
IPNS
IPLD
移动数据exchange
routing
network
libp2p

https://github.com/ipld/specs/tree/master/ipld https://blog.cloudflare.com/distributed-web-gateway/ https://developers.cloudflare.com/distributed-web/ipfs-gateway/

filestore

# 启用特性
ipfs config --json Experimental.FilestoreEnabled true

gateway

ipfs swarm connect $peer
ipfs bootstrap add $peer