带哨兵节点的链_HBA公链 | IPFS:区块链“不可能三角”的可能解

2a6bc1e6ba8db83900c46c702660a39d.png

你知道区块链中的“不可能三角”吗?即区块链无法同时达到可扩展性(Scalability)、去中心化(Decentralization)和安全(Security)。这三个要素中只能同时兼顾两个,比如,要想追求“去中心化”和“安全”就势必会牺牲“可扩展性”。因为要想保证开放性、自治性、不可篡改等去中心化网络特性就需要赋予任意节点均等的权利和义务,也就是说,系统中任意节点都需要对交易数据进行全量计算和存储。这样一来,整体系统的性能就会受限于单个节点的性能上限,进而限制整体系统的可扩展性。

可扩展性是目前区块链普遍面临的一大挑战。以太坊创始人Vitalik Buterin就曾表示过:“扩展性也许是排在第一位的问题。扩展性问题已经成为很多系统的坟墓。这是一个重大而艰巨的挑战。这些都是已知的事实。”为有效应对这一挑战,很多项目正在尝试以“IPFS+区块链”协同合作的方式提升区块链的可扩展性。但IPFS又是什么?如何提升区块链的可扩展性?今天的万向区块链小课堂就带大家了解一下IPFS。

IPFS是什么?

IPFS全称Interplanetary File System,星际文件系统,是一种点对点的开源分布式超媒体协议。它最初诞生于互联网界,旨在解决HTTP(超文本传输协议)引发的一些问题。说起HTTP,大家应该不陌生吧。我们在输入网址时通常都会在最开始输入http://。这一协议发明于1991年,并于1996年应用于网络浏览器。其主要作用就是支撑互联网上的数据通信,即规定互联网上的信息传输方式及浏览器和服务器的指令响应方式。

可以说HTTP是现今互联网运行的基石。但是诞生将近30年来,这一协议已逐渐过时,其弊端也已逐一显露。例如:

1、不支持同时从多个服务器下载文件,导致内容传输效率低下。

2、高带宽成本及大量重复文件堆积,加剧存储负荷。

3、随着服务器和服务提供商的中心化程度不断提高,互联网的监管也更加严格。

4、互联网能够存储的历史信息有限,难以追溯时间久远的历史信息记录。

5、连接不稳定导致连接速度慢、信息传输效率低。

诸如此类的问题不胜枚举。IPFS这一分布式文件存储系统则有望将这些难题一一突破。比如,在IPFS这一分布式协议中,用户不再从单一服务器中下载文件,而可以同时从网络中的其他多个节点处获取文件,提高下载效率。另外,这种分布式数据存储协议还通过会哈希加密保障网络信息的安全性。听起来是不是跟区块链有着异曲同工之妙呢。

IPFS如何运作?

首先,IPFS通过哈希值来对系统里的所有文件进行唯一身份标识,在此基础上剔除重复文件,记录文件的历史版本信息,实现文件的历史信息可追溯,从而确保网页内容不会因为服务器故障或虚拟主机崩溃而丢失。

其次,哈希加密也有助于保障文件内容的真实性。用户通过IPFS网络查找文件时,网络系统其实是以文件的哈希值作为标准,从储存文件的各节点中找到哈希值一致的文件返回给用户。

另外,IPFS中的节点通过哈希值相连,形成默克尔有向无环图(Merkle DAG)这一数据结构,因此具有以下几大优势:

1、内容可寻址:所有内容通过哈希值进行身份标识,方便查找追踪。

2、无重复内容:由于系统里的哈希值具有唯一性,相同内容会生成相同的哈希值,从而被系统判定为重复,并及时剔除。

3、内容不可篡改:系统的内容需通过哈希值校验。篡改内容后哈希值自然会发生变化,帮助系统识别出内容已被篡改,及时发现风险。

值得一提的是IPFS中的每个节点只会储存它需要或是感兴趣的内容,并为内容信息制作索引,便于节点之间了解各自储存了什么样的信息,方便后续查找。

综上,IPFS的分布式文件储存框架从根本上颠覆了HTTP以中心化的服务器传输内容的方式。用户不再从单一的服务器中搜索信息,而是可以从网络中成千上百万的其他节点中,依据文件的唯一身份标识(哈希值)快速获取信息,同时还能够实现文件的本地化离线获取,大大提升信息获取的效率和便捷性。

IPFS在区块链中的应用

无论是去中心化的分布式结构,还是运用密码学技术保障信息安全,我们都可以看到IPFS和区块链有诸多相似之处。同时,IPFS的发明者Juan Benet曾表示:“IPFS中的信息可以在互不信任的节点间传输且系统不会丧失信息的控制权,也不会面临安全风险。”这与区块链能够帮助缺乏信任的利益相关者进行低成本、高效率的协作这一应用价值有着异曲同工之妙。

IPFS和区块链如此高的吻合度让我们看到了这两项技术的融合潜力。IPFS技术通过哈希加密为海量数据生成不可篡改的永久性IPFS地址,再将地址信息储存在区块链上。这样相当于将原始数据简化成IPFS地址后再上链,在不牺牲去中心化和安全性的前提下扩充单个节点信息储存容量,从而整体网络的可扩展性,为解决区块链中的“不可能三角”问题提供可行方案。

已有不少项目尝试在区块链中应用IPFS技术,通过这种点对点的分布式文件系统提升节点的存储能力,为整体系统扩展和可持续发展奠定良好基石。随着区块链的应用场景不断拓展,对于该技术的性能要求也会逐渐提高,我们相信IPFS分布式储存协议将会通过提升区块链的可扩展性助力区块链应用的进一步发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现微信小程序的接口自动化_appium+python自动化56-微信小程序自动化(摩拜为例)...

前言 最近微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化测试? 本篇以摩拜小程序为例,介绍如何定位小程序里面的元素 运行环境: android 7.0 appium v1.7.1 webview进程 1.小程序和微信公众号还不太一样…

swingworker_使用SwingWorker的Java Swing中的多线程

swingworker如果要使用Swing用J​​ava编写桌面或Java Web Start程序,您可能会觉得需要通过创建自己的线程在后台运行某些程序。 没有什么可以阻止您在Swing中使用标准的多线程技术,并且需要遵循通常的注意事项。 如果有多个线程访问相同的变量&#xf…

指定端口传输_一段话告诉你什么是端口

1、端口的含义端口是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。电脑运行的系统程序,其实就像一个闭合的圆圈,但是电脑是为人服务的&#x…

loop在python中什么意思_python中迭代什么意思

1、迭代: 迭代是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。例如:…

使用Spring Data的Apache Ignite

Spring Data提供了一种统一而简单的方法来访问不同类型的持久性存储,关系数据库系统和NoSQL数据存储。 它位于JPA之上,添加了另一层抽象并定义了基于标准的设计以在Spring上下文中支持持久层。 Apache Ignite IgniteRepository实现了Spring Data CrudR…

js hover图片放大不遮挡_CSS3+JS 实现放大镜

注意:看懂本文需要:懂中文 :)学习过 JavaScript 和 css代码较长,框框可左右滑动哦您的观看和点赞是对本公众号最大力的支持 ~~原文链接:https://blog.csdn.net/qq_43624878/article/details/110197749 CSS3JS完美实现放…

python装饰器class_Python中的各种装饰器详解

Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义。 一、函数式装饰器:装饰器本身是一个函数。 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: &g…

odoo controller 继承

方式一: 继承基类,直接重写方法 from odoo.addons.web.controllers.main import Exportclass PsExport(Export): http.route(/web/export/get_fields, typejson, auth"user") def get_fields(self, model, prefix, parent_name , import_co…

python字符串startswith_Python 字符串 startswith() 使用方法及示例

Python 字符串 startswith() 使用方法及示例如果字符串以指定的前缀(字符串)开头,则startswith()方法将返回True。如果不是,则返回False。startswith()的语法为:str.startswith(prefix[, start[, end]])startswith()参数startswith()方法最多…

odoo连接外部数据库

odoo框架默认的访问时Postgres数据库,但在实际的应用场景中,不可避免的使用到其他数据库,所以有必要研究如何连接其他第三方数据库,这里分享下OCA的相关模块,具体的源代码在这里。 我将第三方的数据库需要连接的情况汇…

整型和bcd的对应关系_微信与多闪之争背后,好友关系链到底是如何窃取的?

这几天从发布到全面推广,多闪已经快速的超越100万用户,迅速占领了appsotre榜首,在七麦数据中也是蝉联第一。但因多闪包括头条产品登录采取都支持【微信第三方登录】。很多用户都反馈是否自己的关系链被多闪、甚至是抖音窃取,并且腾…

线程同步,线程不同步_同步多线程集成测试

线程同步,线程不同步测试线程非常困难,这使得为被测多线程系统编写良好的集成测试非常困难。 这是因为在JUnit中,测试代码,被测对象和任何线程之间没有内置的同步。 这意味着,当您必须为创建并运行线程的方法编写测试时&#xff0…

ehcache 默认大小_简单的使用ehcache

ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源代码项目,采用限制比较宽松…

JS定时器使用,定时定点,固定时刻,循环执行

本文概述:本文主要介绍通过JS实现定时定点执行,在某一个固定时刻执行某个函数的方法。比如说在下一个整点执行,在每一个整点执行,每隔10分钟定时执行的方法。 JavaScript中有两个定时器方法:setTimeout(&am…

axios 跨域_当遇到跨域开发时,我们如何处理好前后端配置和请求库封装

我们知道很多大型项目都或多或少的采用跨域的模式开发, 以达到服务和资源的解耦和高效利用. 在大前端盛行的今天更为如此, 前端工程师可以通过nodejs或者Nginx轻松搭建起web服务器.这个时候我们只需要请求后端服务器的接口即可实现系统的业务功能开发.这个过程中会涉及到web页面…

Java数据类型和标识符

在本教程中,我们将了解Java中的数据类型和标识符。 Java语言具有丰富的数据类型实现。 数据类型指定大小和可以存储在标识符中的值的类型。 Java数据类型分为两类: 原始数据类型 非原始数据类型 原始类型 Java定义了八种原始数据类型:字…

哈罗顺风车送到终点吗_没有了顺风车,滴滴“特惠拼车”来了!比拼车更低价,比顺风车更安全吗?...

近日,有网友表示,滴滴出行App内出现了“特惠拼车”功能,据悉,该功能主要给乘客提供长距离拼车出行的优惠折扣。如果拼车价格为44.8元,那“特惠拼车”的价格为30.7元。但是该功能目前还未在上海出现。近日,有…

管理角色认知-工程师到管理者角色发生了哪些变化?

背景 不同等级的管理者需求不同; 管理者需求说明新经理提供管理相关的工具和方法能力层面,术高级经理提升角色认知认知和理解,道,系统通过认知上的改变达到能力和行为上的改善一个人的行为,能力,价值观都源…

axure 小程序 lib_小程序定制开发的步骤有哪些?

经过两年多的微信小程序开发,各种功能应用变得越来越成熟,越来越多的企业和企业正在开发微信小程序用于在线营销。如果您的公司尚未开发成都小程序,它将变得越来越凶猛。在竞争激烈的市场环境中,将失去许多获得和营销客户的机会。…

java 检查打印机状态_爱普生打印机常见故障有哪些 爱普生打印机故障解决方法【详解】...

任何设备在使用一段时间后都会出现一些小问题,打印机也不例外,那么爱普生打印机常见的故障有哪些 ,出现问题该怎么解决呢?下面小编就来分享2018爱普生打印机故障解决方法 ,一起来看看吧!一、故障现象 &a…