使用 Docker 安装 IPFS 星际文件系统

Posted 李苏珂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Docker 安装 IPFS 星际文件系统相关的知识,希望对你有一定的参考价值。

IPFS简介

IPFS: InterPlanetary File System,星际文件系统.

技术

关键词: 持久化 分布式 存储 去中心化 共享文件 节点 Git DHTs 哈希 区块链 P2P BitTorrent

存储特性

使用存储对象的哈希值来获取对象内容。相同内容的文件由于哈希值一样,在系统中只会存在一份,有效的节约存储空间。

注意:用户无法在提交文件后修改文件。共享文件方便且非常安全。

安全性

IPFS 本身并不加密文件内容。假如有人刚好猜到某文件的哈希值,那他就可以获得该文件。

注意:需要保密的情况下,可以在共享之前把需要加密的文件进行加密(温馨提示:注意密钥的存储、传输过程)。

IPFS 的 3 个代码库

ipfs 命令

USAGE
  ipfs  - Global p2p merkle-dag filesystem.

  ipfs [--config=<config> | -c] [--debug | -D] [--help] [-h] [--api=<api>] [--offline] [--cid-base=<base>] [--upgrade-cidv0-in-output] [--encoding=<encoding> | --enc] [--timeout=<timeout>] <command> ...

SUBCOMMANDS
  BASIC COMMANDS
    init          Initialize local IPFS 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
    dag           Interact with IPLD DAG nodes
    files         Interact with files as if they were a unix filesystem
    block         Interact with raw blocks in the datastore

  TEXT ENCODING COMMANDS
    cid           Convert and discover properties of CIDs
    multibase     Encode and decode data with Multibase format

  ADVANCED COMMANDS
    daemon        Start a long-running daemon process
    shutdown      Shut down the daemon process
    resolve       Resolve any type of content path
    name          Publish and resolve IPNS names
    key           Create and list IPNS name keypairs
    pin           Pin objects to local storage
    repo          Manipulate the IPFS repository
    stats         Various operational stats
    p2p           Libp2p stream mounting (experimental)
    filestore     Manage the filestore (experimental)
    mount         Mount an IPFS read-only mount point (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
    routing       Issue routing commands
    ping          Measure the latency of a connection
    bitswap       Inspect bitswap state
    pubsub        Send and receive messages via pubsub

  TOOL COMMANDS
    config        Manage configuration
    version       Show IPFS version information
    diag          Generate diagnostic reports
    update        Download and apply go-ipfs updates
    commands      List all available commands
    log           Manage and show logs of running daemon

  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.

利用 Docker 安装 IPFS

使用 Docker 将使安装过程变得非常简单。本文简要介绍在Docker 中如何安装和使用它。

启动 Docker

这里我们使用 systemd 启动 Docker

sudo systemctl start docker

创建 Docker 挂载目录

mkdir -p $HOME/ipfs/staging,data

安装 IPFS

sudo docker run -d --name ipfs -v $HOME/ipfs/staging:/export -v $HOME/ipfs/data:/data/ipfs -p 4001:4001 -p 8080:8080 -p 5001:5001 ipfs/go-ipfs:latest

测试 IPFS

sudo docker exec ipfs ipfs cat QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

使用 IPFS 伴侣

在 Firefox 浏览器中安装IPFS 伴侣扩展程序
设置您的IPFS API 链接设置您的本地网关URL

Docker 容器中配置跨域

sudo docker exec ipfs ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://localhost:3000", "https://webui.ipfs.io", "http://127.0.0.1:5001"]'
sudo docker exec ipfs ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["POST"]'

重启 ipfs 容器

sudo docker restart ipfs

尽情使用吧!😀

浏览器中输入http://本地ip:5001/webui 看看效果把!
来试试用 ipfs-search.com来搜索资源把!

星际文件系统优点和原理

目录

什么是IPFS

星际文件系统优点

IPFS原理简述

基本原则一、通过内容寻址的唯一标识:

二、通过有向非循环图 (DAG) 链接内容:

三通过定向哈希表 (DHT) 发现内容


什么是IPFS

一个点对点的超媒传输协议。IPFS支持创建完全分布式应用,可以让存储在IPFS上的文件数据,在全世界任何一个地方都能快速获取,让我们访问数据更快,更安全,同时更加开放。

星际文件系统优点

  • 它的诞生完美的解决了http存在的问题,IPFS是分布式存储数据的,让黑客失去了攻击目标,数据的安全性更高了
  • IPFS采用分布式的多点传输,使得IPFS在传输速度上大幅度提高,并且节省约60%的网络带宽。
  • 智能合约存储:用于托管、拍卖、保险、游戏、金融机构等自动且安全的存储;
  • 人类数据存储:星际文件系统将存储至关重要的公共数据,例如百科全书、公开的科学论文、知识共享数据集、历史存档及文学作品;
  • 标准的区块链使用场景:存储分布式账本和应用程序、供应链等;
  • 支付:星际文件系统数字通证可以用于产品或服务的支付以及用户间的转账;
  • 时间戳:通过在长时间内存储大量数据的功能,星际文件系统可提供最终时间戳服务;
  • 价值存储:星际文件系统是分布式的,价值存储工具,并由真正的应用云存储服务支撑。
  • 星际文件系统的愿景是打造一个去中心化的分布式通信协议,补充和颠覆中心化的通信协议HTTP。
  • 互联网的三要素是网络、存储和计算。同时拥有网络、存储这两大要素的星际文件系统必将成为分布式生态的基础设施。因为星际文件系统既可以做网络通信,又能存储大数据、大文件。

IPFS原理简述

1.星际文件系统InterPlantery文件系统

是一个点对点的分布式系统,用于存储和访问文件、网站、应用程序和数据。星际文件系统旨在为分布式 Web - DWeb 提供动力。

作为一种对等协议,星际文件系统要求网络上连接的计算机通过文件(网站、应用程序或数据)的内容共享用户请求的信息。在生态系统中,使用文件的内容来满足用户的请求被称为内容寻址

我们首先要说起中心化网络——它的局限性和挑战,以及星际文件系统如何为非中心化网络提供动力和解决中心化网络的挑战。值得注意的是,通过使用星际文件系统从另一个系统下载文件,那么您的计算机也将成为分发者。这是使用星际文件系统作为协议的优势之一您的系统会成为非中心化网络的一部分,有助于传播和分发信息。

2 、非中心化网络的挑战和局限性

正如我们所知,今天的网络是中心化的。“权力”掌握在少数强大的公司手中。这意味着我们在网络上所做的大部分事情,例如发帖或是网络分享,都会归某些人所有——强大的公司。

在很大程度上,中心化网络是由数据经济驱动的——利用用户创建的内容并再次将其用于这些用户。

中心化网络对信息有着绝对的控制权,控制着我们如何利用自己对事物的感知来查看信息。

从高层次的角度来看,星际文件系统的工作原理是通过其内容查找您正在寻找的信息。这称为内容寻址,可以通过内容标识符—CID 实现。

这三个基本原则将有助于我们更好地了解星际文件系统。

星际文件系统工作原理的三个基本原则

基本原则一、通过内容寻址的唯一标识:

中心化网络和非中心化网络之间的主要区别之一是识别和检索各自的数据/信息。在中心化网络上,通过 URL(或 URI)的位置寻址用于识别和“定位”数据。

另一方面,非中心化网络使用内容寻址通过唯一的内容标识符—CID — 从各种来源(peer/节点)检索数据。

内容标识符—CID 是为星际文件系统开发的一种特殊形式的内容寻址。它是一个包含加密哈希值和一个编解码器的单一标识符,保存着有关如何读取数据的信息。使用加密哈希,任何人对相同的数据使用相同的算法都将获得相同的哈希。星际文件系统中的大部分内容都是使用sha2-256算法进行哈希计算的。

内容标识符不指示数据的存储位置。它根据数据的底层内容生成一个地址。

二、通过有向非循环图 (DAG) 链接内容:

数据在非中心化网络中进行点对点访问,而不是在中心化中访问。从高级概述来看,图是一种数学抽象,用于表示对象集合之间的关系。我们使用节点来指代图中的一个对象,使用边来指代对象之间的关系。

DAG 显然是一个复合词,因此通过分解它们来为其含义奠定基础是可行的。

有向图:如果每条边都有某种方向感,则称该图是有向图。节点之间的连接仅正确关联一个方向,并且单箭头指示该方向。就像我们使用祖先、后代、父母和孩子这样的系谱术语来指代有向图中的节点。

非循环图:非循环图在图中无法循环。这意味着无法沿着图的边缘从该节点导航回到自身节点。

有向非循环图 - DAG:一个有向但无法循环的图

三通过定向哈希表 (DHT) 发现内容

分布式哈希表—DHT 是非中心化的分布式系统。在星际文件系统中,DHT 用作内容路由系统的基本组件,并充当目录和导航系统之间的桥梁

DHT 将用户正在寻找的内容(CID)链接到实际内容存储的Peer上。

使用 DHT被对分为三种类型:

提供记录—将数据标识符链接到他们已拥有且愿意提供内容的Peer上。星际文件系统用于查找内容,IPNS over PubSub 用于查找 pubsub 主题的其他成员。

IPNS 记录—将 IPNS 密钥(公钥的哈希)链接到 IPNS 记录。

Peer记录—将一个 peerID 链接到peer可以到达的多个地址上。当我们知道peer的内容,但不知道其地址和手动连接时,可以使用星际文件系统.

 

以上是关于使用 Docker 安装 IPFS 星际文件系统的主要内容,如果未能解决你的问题,请参考以下文章

星际文件系统优点和原理

星际文件系统优点和原理

IPFS-Filecoin使用分布式存储协议和星际文件系统修复损坏的NFT

以太坊开发DApp实战教程——用区块链星际文件系统(IPFS)Node.js和MongoDB来构建电商平台

IPFS基础概念介绍

BSN IPFS(星际文件系统)专网简介功能架构及特性接入说明