星际文件系统 IPFS 环境搭建

文章目录

      • 1. 什么是 IPFS
      • 2. 节点软件下载
      • 3. 安装节点软件
      • 4. 命令操作
      • 5. ipfs跨域资源共享CORS配置
        • 5.1 mac 系统
        • 5.2 windows 系统
      • 6. Reference

1. 什么是 IPFS

  • 星际文件系统IPFS(Inter-Planetary File System)是一个面向全球的、点对点的分布式文件存储协议目的是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),通过一个文件系统将网络中所有的设备连接起来,构建一个更快速、更安全、开放分享的互联网。

  • IPFS用基于内容的寻址替代传统的基于域名的寻址,用户不需要关心服务器的位置,不用考虑文件存储的名字和路径。我们将一个文件放到IPFS节点中,将会得到基于其内容计算出的唯一加密哈希值。哈希值直接反映文件的内容,哪怕只修改1比特,哈希值也会完全不同。当IPFS被请求一个文件哈希时,它会使用一个分布式哈希表找到文件所在的节点,取回文件并验证文件数据。通过这样可以让网页的速度更快、更安全、更健壮、更持久。

  • IPFS是通用目的的基础架构,基本没有存储上的限制。大文件会被切分成小的分块,下载的时候可以从多个服务器同时获取。IPFS的网络是不固定的、细粒度的、分布式的网络,可以很好的适应内容分发网络的要求。这样的设计可以很好的共享各类数据,包括图像、视频流、分布式数据库、整个操作系统、模块链、8英寸软盘的备份,还有静态网站。

  • IPFS协议定义了文件在分布式系统中如何存储,索引,和传输。能永久的、去中心化保存和共享文件,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。

  • IPFS提供了一个友好的WEB访问接口,用户可通过http://ipfs.io/hash 获取IPFS网络中的内容,也许在不久的将来,IPFS协议将会彻底替代传统的HTTP协议。

 

2. 节点软件下载

  • 官网下载

  • 百度网盘下载

    • IPFS 节点软件 32位 - 提取码: spwa
    • IPFS 节点软件 64位 - 提取码: tffg

 

3. 安装节点软件

  1. 解压节点软件安装包 go-ipfs_v0.4.14_windows-amd64.zip 到指定安装目录
    • 如: C:\ipfs
  2. 配置环境变量
    • PATH=C:\ipfs\go-ipfs
    • IPFS_PATH=C:\Users\answer\Desktop\ipfs

不配置 IPFS_PATH 环境变量的话, 默认初始化节点的仓库目录为 ~/.ipfs, 配置了环境变量, 初始化节点时的仓库目录指向环境变量的值

 

4. 命令操作

  • 初始化节点: ipfs init
λ ipfs init
initializing IPFS node at C:\Users\answer\Desktop\ipfs
generating 2048-bit RSA keypair...done
peer identity: QmagYckojeodgk2XTYn9y6pM99P611SQ8akASDHKsp3QUe
to get started, enter:

        ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

 

  • 查看节点信息: ipfs id
λ ipfs id
{
        "ID": "QmagYckojeodgk2XTYn9y6pM99P611SQ8akASDHKsp3QUe",
        "PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDG32/5h1KOZ1ZeKamMxin/TpfbofHE6cZEGQ6rEMrNTXGTW49KkJ7MwcO2p7xzELvLwYrLX7XHlUJ0v7kMI5DRBquTr/BvBidQAk7KVtDzZgGv/TG8QUIHcYVqsXWZXopYvYzPQpKnX0TUWiSOw4Szzk+hwgBwIX/RP1VGjDMi/Y+idTvlnGR6wZHlDmUalWrvVkd/OKLX4y0u/dvnV4Za6YC7Wg5WlbpACsSRMEAkLcQ9VBNNgJHQF86sQ/D++NTr76rE5wsCS7O0lSsqlBnA8uKGwil94PIJ07HMiGjErX8AV+9K+g8MkHSFxuLq2hMoy8zjMUF66tgw1J9Pi+rxAgMBAAE=",
        "Addresses": null,
        "AgentVersion": "go-ipfs/0.4.14/",
        "ProtocolVersion": "ipfs/0.1.0"
}

 

  • 添加文件到ipfs: ipfs add file
λ ipfs add ipfs.md
added QmUS8fPbj3NAxgN7fd8HauXRBUjAFdYXnoxbGBBQ6uajm2 ipfs.md

ipfs.md 文件内容

Hello world, Hello IPFS(Inter-Planetary File System) 

Created By AnswerAIL At 2019-6-5

 

  • 通过hash查看文件: ipfs cat hash
λ ipfs cat QmUS8fPbj3NAxgN7fd8HauXRBUjAFdYXnoxbGBBQ6uajm2
Hello world, Hello IPFS(Inter-Planetary File System)

Created By AnswerAIL At 2019-6-5

节点启动的情况下, 也可以通过浏览器访问: http://localhost:8080/ipfs/hash
如: http://localhost:8080/ipfs/QmPWVjXm46BNoPeB7MpDjWzEWPW2HgyNnfaCGt9mgFh4Rs
 

  • 删除节点仓库: del ${IPFS_PATH}
λ del C:\Users\answer\Desktop\ipfs
C:\Users\answer\Desktop\ipfs\*, 是否确认(Y/N)?

 

  • 上传目录: ipfs add -r answerail\
λ ipfs add -r answerail\
added QmUS8fPbj3NAxgN7fd8HauXRBUjAFdYXnoxbGBBQ6uajm2 answerail/answer/answer.md
added QmUS8fPbj3NAxgN7fd8HauXRBUjAFdYXnoxbGBBQ6uajm2 answerail/ipfs.md
added QmNjsGC9ad5M6bNjD1E2nfM7peib3MWXoYxv2bNkVmjedt answerail/answer
added QmZ5X9YC2bXD4m4ULQMq1vNxEkZerSZGeY3xTjHLDHsntC answerail

answer.md 和 ipfs.md 文件内容一样, 所以返回的 hash 也是一样的
 

  • ipfs创建文件夹: ipfs files mkdir /answer
     

  • ipfs查看文件列表: ipfs files ls /

λ ipfs files ls /
answer

 

  • 启动节点: ipfs daemon
     

  • 下载ipfs上的文件到本地: ipfs get hash

λ ipfs get QmUS8fPbj3NAxgN7fd8HauXRBUjAFdYXnoxbGBBQ6uajm2
Saving file(s) to QmUS8fPbj3NAxgN7fd8HauXRBUjAFdYXnoxbGBBQ6uajm2
 101 B / 101 B [============================================================] 100.00% 0s

 

  • 查看配置:ipfs config Datastore.StorageMax
λ ipfs config Datastore.StorageMax
10GB

配置文件存放在 节点仓库目录下的 config 文件。 如: C:\Users\answer\Desktop\ipfs\config
 

  • 设置配置: ipfs config Datastore.StorageMax 5G
     

  • 帮助命令: ipfs --help
     

  • 文件帮助命令: ipfs files --help

 

5. ipfs跨域资源共享CORS配置

5.1 mac 系统

# 请依次执行以下命令
localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
 
localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
 
localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
 
localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'
 
localhost:ipfs-http-demo yuechunli$ ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'

 

5.2 windows 系统

# 请依次执行以下命令
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods "[\"PUT\", \"GET\", \"POST\", \"OPTIONS\"]"
 
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]"
 
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "[\"true\"]"
 
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers "[\"Authorization\"]"
 
ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers "[\"Location\"]"

 

6. Reference

  • IPFS官网
  • IPFS命令手册
  • java-ipfs-http-client github 地址
  • ipfs 学习
  • java 操作 ipfs github源码

你可能感兴趣的:(教程类,区块链)