zoukankan      html  css  js  c++  java
  • IPFS扫盲

    第二届深圳区块链技术与应用大会暨展览会,深圳区块链存储与IPFS技术应用大会暨展览会于2019年4月9日在深圳会展中心6号馆举行。那么这个IPFS是什么?和区块链有什么关系?有什么用?又怎么用呢?接下来小编会为您详细解析。

    目录

    什么是IPFS
      简单地说
      枯燥地说
      有啥用
    原理是什么
      八层协议栈
      IFPS的理想
    操作
      编译
      安装启动
      基本操作
      对接RESTful
    实例
      部署个人博客
      做电商网站
      FileCoin
      疑问与解决方案
      有价值的参考资料

     

    什么是IPFS

    简单地说

    IPFS = Bittorrent + git + SFS + BITSWAP

    枯燥地说

          IPFS(The InterPlanetary File System,星际文件系统), 是一个面向全球的、点对点的分布式版本文件系统,目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起。
          原理用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,通过这样可以让网页的速度更快、更安全、更健壮、更持久。

    有啥用

    1.私人网盘(可以随时随地像访问本地存储一样,访问家里电脑里存的文件)
    2.迷你CDN(类似百度金矿,让普通人可以把自家的带宽像商品一样出售给别人)
    3.文件共享(知道BitTorrent么,IPFS不但可以共享文件还能共享目录)
    4.版本管理(此功能和Web结合起来,以后很难再见到404了)
    5.虚拟机的根目录(想想你把一个操作系统装到IPFS上)
    6.分布式文件系统(把家里磁盘的使用权像产品一样出售给别人)
    7.数据安全(这是去中心化的天赋,想要入侵数据库就要攻击所有人)
    8.取代HTTP(基于内容寻址,网络利用率高)
    。。。

    原理是什么

    八层协议栈

    • 网络:传输层(WebRTC)、可靠性(uTP或SCTP)、可连接性(ICE)、完整性、可验证性

    • 路由:DSHT,用于确定同伴或内容的地址,简单说可以让你知道到那个节点去找那个文件;

    • 块交换:Bittorrent+Bitswap, 节点必须以块的形式彼此提供直接的值

    • 对象:Merkle DAG, 路径、本地对象、对象锁定、发布对象、对象加密级别

    • 文件:Blok、List、Tree、Commit、文件系统路径、将文件分隔成LISTS和BLOBS

    • 命名:IPNS、DAG命名可变、人类友好名称,IPFS一问世就有很多人疯狂地去IPFS上注册域名,这就归功于此。

    IFPS的理想

    IPFS的思想是几十年成功的分布式系统的探索和开源的产物。IPFS综合了很多迄今为止很成功的系统中优秀的思想。除了BitSwap新协议之外,IPFS最大的特色就是系统的耦合以及设计的综合性。

    • IPFS是去中心化网络基础设施的一个野心设想,很多不同类型的应用都可以建立在IPFS上。
    • 最低限度,它可以用来作为一个全局的,挂载性,版本控制文件系统和命名空间,或者作为下一代的文件共享系统。
    • 而最好的情况是,IPFS可以让Web升级一个层次,当发布一个有价值的信息时,任何感兴趣的人都可以进行发布而不会强迫性的必须只允许发布机构进行发布,用户可以信任信息的内容,信不信任信息的发送者都是无关紧要的,还有一个特点就是,一些重要但很老的文件也不会丢失。
    • IPFS期待着带我们进入到一个Permanent Web的世界。

    操作

    编译

    以Ubuntu为例

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

    安装启动

    $ ipfs init
    $ ipfs daemon &

    基本操作

    # 添加文件
    $ ipfs add a.txt
    # QmQ4gV6RzpxURqBKypm981uDDKmPy3Q2hzcJAKFy4ug6PS是add之后生成的
    $ ipfs cat QmQ4gV6RzpxURqBKypm981uDDKmPy3Q2hzcJAKFy4ug6PS
    aaaaaaaaaaaaaa
    # 创建文件夹并复制文件
    $ ipfs files mkdir libai
    $ ipfs files cp /ipfs/QmQ4gV6RzpxURqBKypm981uDDKmPy3Q2hzcJAKFy4ug6PS /libai/file.txt
    # 浏览刚复制过去的文件
    $ ipfs files ls /libai
    # 将IPFS中的文件取到本地
    $ ipfs get /ipfs/QmQ4gV6RzpxURqBKypm981uDDKmPy3Q2hzcJAKFy4ug6PS -o ./

    用https的方式浏览我们刚才上传的文件

    对接RESTful

    API的官方文档:https://ipfs.io/docs/api/
    对接API的js开源代码:https://github.com/ipfs/js-ipfs
    具体操作步骤如下:

    • 编辑ipfs的config文件:将127.0.0.1换成0.0.0.0
    • 添加跨域共享
    ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
    ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
    • 访问IPFS的管理页面:http://[NodeIP]:5001/webui
    • 添加文件(路径前一定要加”@”符号)
    curl -F file=@myfile “http://localhost:5001/api/v0/add?recursive=false&quiet=<value>&quieter=<value>&silent=<value>&progress=<value>&trickle=<value>&only-hash=<value>&wrap-with-directory=<value>&hidden=<value>&chunker=<value>&pin=true&raw-leaves=<value>&nocopy=<value>&fscache=<value>&cid-version=0&hash=sha2-256“    

    实例

    看完操作步骤,相信您对IPFS的功能有了一些了解,我们进一步开下脑洞,看看能用IPFS干什么。

    部署个人博客

    ipfs add -r ipfs_blog/
    ipfs name publish QmebnxXBK7BgxRy2VsCE6z89epc9teZDh6ih8MCQUjDCZW
    ipfs name resolve Qmczs7Qzf9r5Efgi25gofF7VD1rrFuoz49eEgWwh2xdf4X

    做电商网站


    如图利用IPFS存储资源文件,利用比特币提供支付,自己写个后台提供接口,简直美滋滋(是不是少了很多审核流程),国外的Openbazaar就是这样的一个去中心化的电商,既没有交易费用,也不用担心审查。

    FileCoin

    Filecion是在IPFS基础上建立的项目,已经经过ICO,代币为“FIL”,用户通过向矿工支付FIL获取存储资源,从而激励有闲置资源的公众参与其中。FileCoin用复制证明(PoRep)和时空证明(Post)两种方式来证明矿工的价值,相比于依赖于工作量证明法(Pow)的比特币,FileCoin挖矿不会耗费那么多的电力和CPU。

    疑问与解决方案

    1. 长长的一串哈希值不容易被记住。
      答:IPFS可以配置人类友好型域名,ipns就是解决这个问题的。
    2. 不想和世界联网,只想自己组个私网。
      答:IPFS支持搭建私网,生成一个swarm.key放到IPFS数据目录即可。

    有价值的参考资料

    Filecoin白皮书: https://filecoin.io/filecoin.pdf
    Filecoin白皮书中文: http://chainx.org/paper/index/index/id/13.html
    IPFS中文官网: http://ipfser.org/
    IPFS白皮书: https://raw.githubusercontent.com/ipfs/ipfs/master/papers/ipfs-cap2pfs/ipfs-p2p-file-system.pdf
    IPFS白皮书中文: https://gguoss.github.io/2017/05/28/ipfs/
    IPFS源码: https://github.com/ipfs/go-ipfs
    IPFS安装: https://ipfs.io/docs/install/
    IPFS-js-api: https://github.com/ipfs/js-ipfs 


  • 相关阅读:
    关于代码风格
    python笔记-glob模块
    python笔记-mysql安装与配置
    python笔记-shutil模块
    python笔记-os模块
    python笔记-内存分析
    python笔记-装饰器
    python笔记-正则表达式
    python笔记-迭代器-生成器-对象生成式
    python笔记-模块和包
  • 原文地址:https://www.cnblogs.com/bugutian/p/10684203.html
Copyright © 2011-2022 走看看