大数据搬上区块链

IPFS(InterPlanetary File System)是一个点对点的分布式超媒体分发协议,它整合了过去几年最好的分布式系统思路,为所有人提供全球统一的可寻址空间,包括Git、自证明文件系统SFS、BitTorrent和DHT,同时也被认为是最有可能取代HTTP的新一代互联网协议。

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

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

IPFS提供了一个友好的WEB访问接口,用户可以通过哈希串获取IPFS网络中的内容,也许在不久的将来,IPFS协议将会彻底替代传统的HTTP协议。

二、IPFS本地环境安装

2.1、下载安装包

打开https://dist.ipfs.io/#go-ipfs,页面会自动根据你的操作系统提供适合的下载安装包,点击下载按钮即可。
 笔者是在Ubuntu下安装,所以下载go-ipfs的地址为:https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz(目录为:https://dist.ipfs.io/go-ipfs/,可以下面查找相关版本)
 通过wget命令下载报错,提示拒绝连接,接下来在浏览器中手工下载。

2.2、安装

我们将压缩包上传到家目录,如:/home/simon/,然后解压。
$ tar xvfz go-ipfs_v0.4.15_linux-amd64.tar.gz
go-ipfs/build-log
go-ipfs/install.sh
go-ipfs/ipfs
go-ipfs/LICENSE
go-ipfs/README.md

$ cd go-ipfs
$ sudo mv ipfs /usr/local/bin/ipfs
$ ipfs version #查看版本
ipfs version 0.4.15
$ ipfs help #查看帮助文档

USAGE
  ipfs - Global p2p merkle-dag filesystem.

ipfs [--config=<config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L] [--api=<api>] <command> ...

SUBCOMMANDS
  BASIC COMMANDS
    init          Initialize ipfs local configuration
    add <path>    Add a file to IPFS
    cat <ref>    Show IPFS object data
    get <ref>    Download IPFS objects
    ls <ref>      List links from an object
    refs <ref>    List hashes of links from an object
 
  DATA STRUCTURE COMMANDS
    block        Interact with raw blocks in the datastore
    object        Interact with raw dag nodes
    files        Interact with objects as if they were a unix filesystem
    dag          Interact with IPLD documents (experimental)
 
  ADVANCED COMMANDS
    daemon        Start a long-running daemon process
    mount        Mount an IPFS read-only mountpoint
    resolve      Resolve any type of name
    name          Publish and resolve IPNS names
    key          Create and list IPNS name keypairs
    dns          Resolve DNS links
    pin          Pin objects to local storage
    repo          Manipulate the IPFS repository
    stats        Various operational stats
    p2p          Libp2p stream mounting
    filestore    Manage the filestore (experimental)
 
  NETWORK COMMANDS
    id            Show info about IPFS peers
    bootstrap    Add or remove bootstrap peers
    swarm        Manage connections to the p2p network
    dht          Query the DHT for values or peers
    ping          Measure the latency of a connection
    diag          Print diagnostics
 
  TOOL COMMANDS
    config        Manage configuration
    version      Show ipfs version information
    update        Download and apply go-ipfs updates
    commands      List all available commands
 
  Use 'ipfs <command> --help' to learn more about each command.
 
  ipfs uses a repository in the local file system. By default, the repo is
  located at ~/.ipfs. To change the repo location, set the $IPFS_PATH
  environment variable:
 
    export IPFS_PATH=/path/to/ipfsrepo
 
  EXIT STATUS
 
  The CLI will exit with one of the following values:
 
  0    Successful execution.
  1    Failed executions.


看到版本号或帮助信息了,说明我们已经安装成功了。

三、项目配置

3.1、创建ipfs节点

为了运行项目,我们需要通过在本地建立一个IPFS节点。
$ ipfs init

initializing IPFS node at /home/simon/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmQSh8D1aV5ASF3b1mFChpeCyH4QB1EdzDm8pZJ2U1GKSR
to get started, enter:

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme #这一行记录下来,稍后我们还会用到

$ cd /home/simon/
$ ll -a
drwxrwxr-x  5 simon simon    4096 5月  15 18:39 .ipfs/ #多出了这样一个文件夹
#......其它文件,略

ipfs在家目录/home/simon/下创建一个.ipfs文件夹,通过ll -a可以查看到。

3.2、修改节点默认存储空间

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c6b7492cd8cb7090848a9af546eaa359.html