当前位置: 首页 > news >正文

什么是IPFS?与区块链又是怎样的关系

早在2017年上半年,国内大部分投资人或开发者就已经接触到了IPFS和Filecoin项目。那么IPFS和Filecoin究竟是什么?IPFS与区块链到底是什么关系?其有什么优势,竟然会得到如此广泛的关注?其未来的应用前景到底如何?

01 IPFS的概念和定义

IPFS(InterPlanetary File System)是一个基于内容寻址的、分布式的、新型超媒体传输协议。IPFS支持创建完全分布式的应用。它旨在使网络更快、更安全、更开放。IPFS是一个分布式文件系统,它的目标是将所有计算设备连接到同一个文件系统,从而成为一个全球统一的存储系统。某种意义上讲,这与Web最初的目标非常相似,但是它是利用BitTorrent协议进行Git数据对象的交换来达到这一个目的的。IPFS正在成为现在互联网的一个子系统。IPFS有一个更加宏伟而疯狂的目标:补充和完善现有的互联网,甚至最终取代它,从而成为新一代的互联网。这听起来有些不可思议,甚至有些疯狂,但的确是IPFS正在做的事情。图1-1所示为IPFS的官方介绍。

▲ 图1-1 IPFS官方介绍

IPFS项目通过整合已有的技术(BitTorrent、DHT、Git和SFS),创建一种点对点超媒体协议,试图打造一个更加快速、安全、开放的下一代互联网,实现互联网中永久可用、数据可以永久保存的全球文件存储系统。同时,该协议有内容寻址、版本化特性,尝试补充甚至最终取代伴随了我们20多年的超文本传输协议(即HTTP协议)。IPFS是一个协议,也是一个P2P网络,它类似于现在的BT网络,只是拥有更强大的功能,使得IPFS拥有可以取代HTTP的潜力。

Filecoin是运行在IPFS上的一个激励层,是一个基于区块链的分布式存储网络,它把云存储变为一个算法市场,代币(FIL)在这里起到了很重要的作用。代币是沟通资源(存储和检索)使用者(IPFS用户)和资源的提供者(Filecoin矿工)之间的中介桥梁,Filecoin协议拥有两个交易市场—数据检索和数据存储,交易双方在市场里面提交自己的需求,达成交易。

IPFS和Filecoin相互促进,共同成长,解决了互联网的数据存储和数据分发的问题,特别是对于无数的区块链项目,IPFS和Filecoin将作为一个基础设施存在。这就是为什么我们看到越来越多的区块链项目采取了IPFS作为存储解决方案,因为它提供了更加便宜、安全、可快速集成的存储解决方案。

02 IPFS为区块链带来什么变化

区块链的诞生本是为了做到去中心化,在没有中心机构的情况下达成共识,共同维护一个账本。它的设计动机并不是为了高效、低能耗,抑或是拥有可扩展性(如果追求高效、低能耗和扩展性,中心化程序可能是更好的选择)。IPFS与区块链协同工作,能够补充区块链的两大缺陷:

  • 区块链存储效率低,成本高。

  • 跨链需要各个链之间协同配合,难以协调。

针对第1个问题,区块链网络要求全部的矿工维护同一个账本,需要每一个矿工留有一个账本的备份在本地。那么在区块链中存放的信息,为了保证其不可篡改,也需要在各个矿工手中留有一份备份,这样是非常不经济的。设想,现在全网有1万个矿工,即便我们希望在网络保存1MB信息,全网消耗的存储资源将是10GB。目前,也有折中的方案来缓解这一问题。在搭建去中心化应用DAPP时,大家广泛采取的方式是,仅在区块链中存放哈希值,将需要存储的信息存放在中心化数据库中。而这样,存储又成为去中心化应用中的一个短板,是网络中脆弱的一环。IPFS则提出了另一个解决方法:可以使用IPFS存储文件数据,并将唯一永久可用的IPFS地址放置到区块链事务中,而不必将数据本身放在区块链中。针对第2个问题,IPFS能协助各个不同的区块链网络传递信息和文件。比特币和以太坊区块结构不同,通过IPLD可以定义不同的分布式数据结构。这一功能目前还在开发中,目前的IPLD组件,已经实现了将以太坊智能合约代码通过IPFS存储,在以太坊交易中只需存储这个链接。

IPFS和区块链是完美的搭配,我们可以使用IPFS处理大量数据,并将不变的、永久的IPFS链接放置到区块链事务中,而不必将数据本身放在区块链中。毕竟,区块链的本质是分布式账本,本身的瓶颈之一就是账本的存储能力,目前大部分公链的最大问题是没法存储大量的数据在自己的链上。比特币至今全部的区块数据也才数百GB,以太坊这样可编程的区块链项目也只能执行和存储小段合约代码,DApp的发展受到了很大的制约。运用IPFS技术解决存储瓶颈是可行方案之一。

——本文节选自《IPFS原理与实践》

推荐阅读

 《IPFS原理与实践》

长按二维码
了解及购买

你与世界

只差一个

公众号

相关文章:

  • 新书推荐 |《Python网络编程(原书第2版)》
  • Python传奇:30年崛起之路
  • 新书推荐 |《IPFS原理与实践》
  • 微服务架构之「 下一代微服务 Service Mesh 」
  • 新书推荐 |《OpenCV 4计算机视觉项目实战(原书第2版)》
  • 一文看懂用R语言读取Excel、PDF和JSON文件(附代码)
  • 新书推荐 |《好设计,有方法:我们在搜狐做产品体验设计》
  • 新书推荐 |《广告数据定量分析:如何成为一位厉害的广告优化师》
  • 用Python给女友准备个绝对甜蜜的七夕礼物
  • 新书推荐 |《机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序》...
  • 搞定这个月薪50K的AI热门领域,看这9本书就够了
  • 新书推荐 |《强化学习:原理与Python实现》
  • 智能生产之路(一):从计算机集成制造到精益生产再到工业 4.0
  • 这是一份所有人都适用的DevOps书单
  • 新书推荐 |《TensorFlow机器学习实战指南(原书第2版)》
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • angular2 简述
  • canvas 五子棋游戏
  • java8-模拟hadoop
  • js数组之filter
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • ng6--错误信息小结(持续更新)
  • Nodejs和JavaWeb协助开发
  • React的组件模式
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • Xmanager 远程桌面 CentOS 7
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 基于webpack 的 vue 多页架构
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • #QT(智能家居界面-界面切换)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $L^p$ 调和函数恒为零
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4)STL算法之比较
  • (AngularJS)Angular 控制器之间通信初探
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (第一天)包装对象、作用域、创建对象
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)C#调用WebService 基础
  • **PHP分步表单提交思路(分页表单提交)
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net core 依赖注入的基本用发
  • .NET Core引入性能分析引导优化
  • .NET DataGridView数据绑定说明
  • .NET 中的轻量级线程安全
  • .net6Api后台+uniapp导出Excel
  • [Angular 基础] - 数据绑定(databinding)
  • [ARM]ldr 和 adr 伪指令的区别