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

【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置

一、创建ipfs节点

  • 通过ipfs init在本地计算机建立一个IPFS节点

  • 本文有些命令已经执行过了,就没有重新初始化。部分图片拷贝自先前文档,具体信息应以实物为准

ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2048-bit RSA keypair...done peer identity: QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP to get started, enter:ipfs cat /ipfs/QmVLDAhCY3X9P2uRudKAryuQFPM5zqA3Yij1dY8FpGbL7T/readmecd /.ipfscd ~/.ipfscd /.ipfs ls blocks datastore version config keystore $ open ./
  • 执行ipfs init初始化节点之后,会生成一个.ipfs的文件夹,用于存储相关的信息,比如节点ID、环境配置信息、数据存储等
  • 如果使用的是MAC电脑,使用shift+command+. 可以查看隐藏文件

  • ​通过ipfs id查看创建的节点id的信息

二、启动节点服务器

  • 使用命令ipfs daemon启动节点服务器
  • 一旦启动当前界面会处于监听状态,需要新建标签页

三、简单验证

  • 使用如下命令,进行简单测试

    ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

  • 浏览器输入下面的网址:http://localhost:5001/webui会看到一个漂亮的UI界面

四、相关问题详解

1. ipfs的存储位置

  • IPFS的数据存储,个人用户的数据存储在自己个人的硬盘上,也就是本地硬盘存储。存储后,会在IPFS网络广播,“我存储哈希为Qm...的数据了”,因为哈希的唯一性,如果数据的分割方法一定,那么同样的数据在网络存储中只会有一份,也就是只在本地节点存储。当有用户检索该数据时,检索数据的hash值就是key,节点会首先在DHT表(key/value存储)中查询有无该key,如果没有,到与key异或距离最近的K桶里查找,如果该K桶中的某个节点有key对应的value则返回,否则返回它认为存有value值的最可能节点,以此递归,最终找到key对应的value。然后请求节点与value(也就是节点ID)建立连接,并请求数据,同时将该key/value键值对存储到自己的DHT表中。请求节点将接收到的数据存储到ipfs缓存中,数据检索成功。该请求节点在缓存数据有效期内,同样可以为ipfs网络,提供该数据,作为原始数据的备份。

2. ipfs的冗余备份措施

  • IPFS采用了Erasure coding的冗余备份措施,集群中有n份原始数据和m份校验数据,即共有n+m份备份数据。

3. 修改节点默认存储空间

  • ipfs节点默认存储空间为10个G

方式一:可打开终端执行下面的命令

export EDITOR=/usr/bin/vim ipfs config edit

  • 找到下图使用红色的框标定的内容,修改自己想要的大小
  • PS:输入i可以开始编辑,编译完毕后按esc键,再输入:,再次输入wq保存并且退出

方式二 采用web界面进行修改

  • 修改对应的信息,然后点击保存

ipfs的节点掉线,对于整个组织的影响

  • IPFS的容错机制会保证数据被复制了足够数量并存放在不同的地区,即使某一个地方的数据由于不可抗力的因素被完全销毁,通过其他地区的备份也可以实现完整恢复数据,极大的保证了存储在IPFS上的数据的安全性
  • 采用MerkleDAG,因为它具有以下特点:1.内容可寻址:所有内容都是被多重hash校验和来唯一识别的,包括links。2.无法篡改:所有的内容都用它的校验和来验证。如果数据被篡改或损坏,IPFS会检测到。3.重复数据删除:重复内容并只存储一次。
    在IPFS网络中,数据的存储可能是有重复的。重复的数量与用户上传的时候采用的IPFS进行分块的方法有关。
  • 之前提到过数据在IPFS存储是以块的形式存储的。在ipfs提供的数据分割方式有很多种。在ipfs源码种core/commands/add.go代码中描述了切割的方法:
  1. 默认模式,块的大小是256kb,也就是256 * 1024 bytes,对应的size=262144。命令不需要加参数,即ipfs add 文件。

  2. 指定块大小模式。命令是ipfs add --chunker=size-1000。其中后边的1000可以是任意小于262144的数。

  3. rabin可变块大小切割模式。命令是ipfs add --chunker=rabin-[min]-[avg]-[max] 文件。其中min,avg,max的值分别值最小块大小,平均块大小,最大块大小的意思,值在小于262144自行设定。

    The chunker option, '-s', specifies the chunking strategy that dictates how to break files into blocks. Blocks with same content can be deduplicated. The default is a fixed block size of 256 * 1024 bytes, 'size-262144'. Alternatively, you can use the rabin chunker for content defined chunking by specifying rabin-[min]-[avg]-[max] (where min/avg/max refer to the resulting chunk sizes). Using other chunking strategies will produce different hashes for the same file.

    ipfs add ipfs-logo.svg ipfs add --chunker=size-2048 ipfs-logo.svg ipfs add --chunker=rabin-512-1024-2048 ipfs-logo.svg

  • 同一个文件存储在ipfs中,因为存储是选用的文件切割方法不同,返回的hash值却不一样。所以说IPFS的块存储没有重复的,而IPFS块文件拼凑的数据可能有重复的。也就是说同一个文件可以根据不同的文件切割方法在IPFS网络中重复的存储多次。

如上图,测试了一个6.8K的文件存储,存储设定1024B为一个分片,分片完后,可以查到这个文件分为了7个分片。 

  • 备份是如何实现的呢?假如一部非常火的电影,大家都习惯性的将该电影存储到自己的电脑E盘或其它硬盘存储中,全世界如果有1亿的人存储了这个电影,这不是对存储的极大浪费吗?在ipfs网络中,该电影只被存储在一个节点中,当有用户需要读取的时候,会产生新的备份。就是谁使用数据,这个数据就会复制到谁那里。当一个节点加入IPFS网络时,这个节点会提供一部分硬盘空间(缺省为10G,可以配置)给整个网络使用。那么通常情况下,在存储文件的时候,您自己提供的这部分硬盘空间总是最快的,因为不需要跨网。当存储完毕后,网络上任意节点都可以访问这个文件。当另一个节点访问的时候,那个节点往往会复制一份您的数据到他的缓存空间。这样整个网络中就有两份拷贝了。试想,当有很多人对这个文件感兴趣,那么网络中的拷贝数会越来越多。
  • 需要提出的是:拷贝一般都是缓存,也就是说是临时存储的。时间一长就被自动删除掉了。这种临时缓存非常好地解决了分布式数据分发的问题,比如说一个社会热点往往呈现出预热期、火热期和退潮期等阶段,利用IPFS,数据的分布和拷贝数与这些时期是完全匹配的。访问的人越多,拷贝数就越多,但热度下来了,拷贝数就会降下来,从而自然地实现空间利用率和存取效率的平衡。如果想让这个文件永久存储,那么必须将其设为固定的样式,即存储在硬盘中。

4. ipfs的使用

上传txt文件

上传其他格式的文件

  • pdf
  • docx
  • jpg
  • mp4
  • mp3

注意事项

  1. 对于下载的文件需要进行格式的准换,否则不可用。这个转化的方式可以手工进行转化,也可以使用命令的方式。
  2. 也可以指定下载的文件名称,加上-o 文件名,也可以加上-a : 压缩成.tar格式,-C :压缩成.gz格

pdf

ipfs get QmZJBKrLFPvn8zEatZsxSJTtJkCFm4YeMwChDLRPPPerZ6 -o 1.pdf

  • 使用命令open hh.pdf 打开pdf文件,此处open的用法是Linux自带功能,和ipfs无关

docx

mp3

​ jpg

mp4

上传整个文件夹

  • 此处上传的整个文件夹里面的文件和先前测试使用的是相同的文件,所以他们的哈希值是一致的,这个就是ipfs要求的避免相同的文件被用户上传多次。

查看上传的文件中包含的子文件

查看被引用的hash

  • 被引用的hash概念:一般指文件夹下面有多少个文件,这个文件夹的名称就被引用多少次,hash就是应用该文件名的文件hash

​如果上传的是一个文件夹,那么将文件夹拉回到本地,里面的文件是正常的存储格式,无需进行格式转化

​ 进入web可视化界面,将哈希序列输入到搜索框,进行文件的查询,如果文件不支持预览,需要点击downloading进行下载查看

发现的问题

  • 使用root用户和普通用户,使用ipfs id查看自己的节点信息,还不一样。

​ 而且,这两个节点之间还不能互相交换文件,不隶属于同一个集群。

参考链接

  • 使用ipfs完成一个图片上传的案例
  • IPFS:分布式文件存储
  • IPFS

相关文章:

【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置

一、创建ipfs节点 通过ipfs init在本地计算机建立一个IPFS节点 本文有些命令已经执行过了,就没有重新初始化。部分图片拷贝自先前文档,具体信息应以实物为准 ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2048-bit RSA keypair.…...

【autodesk】浏览器中渲染rvt模型

使用Forge完成渲染 Forge是什么 为什么能够渲染出来rvt模型 Forge是由Autodesk开发的一套云端开发平台和工具集。在Forge平台中,有一个名为"Model Derivative"的服务,它可以将包括RVT(Revit)在内的多种BIM&#xff08…...

Python超入门(1)__迅速上手操作掌握Python

# 1.第一个代码:输出语句 # 1.第一个代码:输出语句 print("My dogs name is Huppy!") print(o----) print( ||| ) print("*" * 10) """ 输出结果: My dogs name is Huppy! o----||| ********** "&…...

后端面试话术集锦第 十四 篇:go语言面试话术

这是后端面试集锦第十四篇博文——go语言面试话术❗❗❗ 1. go数组、切片、扩容 go的数组和切片都是用来存储相同类型的数据集合。 数组是存储固定大小的集合,且为值引用。 但切片是存储无固定大小的集合,且为引用类型。 切片有三个属性,分别为指向指针的数组array,数组…...

Oralce集群管理-19C RAC 私有网络调整为BOND1

1 尝试在线添加私有网络的新接口 是否成功。 使用oifcfg命令在线添加新的网卡接口,在还没有配置bond1的条件下 也是可以添加成功的。 [gridorcldb1 ~]$ oifcfg getif eno3 192.168.224.0 global public ens3f0 10.2.0.0 global cluster_interconnect,asm eno…...

洛谷 Array 数论

题目: 对于长度为n的数组A,A中只包含从1到n的整数(可重复)。如果A单调不上升或单调不下降,A就可称为美丽的。 找出在长度为n时,有几个美丽的A。 思路: 这是一道数论题。 我们先找找“单调不递…...

简明SQL条件查询指南:掌握WHERE实现数据筛选

条件查询是用于从数据库中根据特定条件筛选数据行的一种方式&#xff0c;它避免了检索整个表中的数据。通常&#xff0c;使用 WHERE 子句来定义过滤条件&#xff0c;只有符合这些条件的数据行才会被返回。 SQL中的运算符有&#xff1a;、!、<、> 等&#xff0c;用于进行…...

通过HbaseClient来写Phoenix表实现

由于数据存储在Hbase上&#xff0c;并且上层使用了Phoenix来读写数据。并且由于数据的列字段不固定&#xff0c;并且可能由于Hbase表列和Phoenix的表列字段不一致&#xff0c;使用Phoenix写入的数据会导致写出报错的问题出现。所以这里直接使用HbaseClient写入到Hbase表中&…...

uniapp qiun charts H5使用echarts的eopts配置不生效

原因是&#xff1a;使用web的要设置 echartsH5 :echartsH5"true" <template><view class"charts-box"><view class"chart-title"> 趋势</view><qiun-data-chartstype"column":eopts"eopts":cha…...

嵌入式Linux驱动开发(LCD屏幕专题)(三)

1. 硬件相关的操作 LCD驱动程序的核心就是&#xff1a; 分配fb_info设置fb_info注册fb_info硬件相关的设置 硬件相关的设置又可以分为3部分&#xff1a; 引脚设置时钟设置LCD控制器设置 2. 在设备树里指定LCD参数 framebuffer-mylcd {compatible "100ask,lcd_drv&qu…...

MySQL视图用户管理

文章目录 视图视图的规则用户用户信息创建用户删除用户修改密码 用户权限给用户授权回收权限 视图 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会…...

我发现了一个很好看的字体,霞鹜文楷!如何换windows和typora字体?

1、字体 官方地址如下&#xff0c;下载也很简单。 https://github.com/lxgw/LxgwWenKai 有1W多的stars。 方式&#xff1a; 直接打包下载。下载不来&#xff0c;可以联系我。 然后ttf的文件&#xff0c;全部安装就行了。 reg save "HKCU\Control Panel" .\res…...

微软8月系统更新引发问题:虚拟内存分页文件出现错误

微软的八月系统更新引发了一系列问题&#xff0c;其中包括“UNSUPPORTED_PROCESSOR”蓝屏错误和文件管理器故障。尽管微软已经修复了前者&#xff0c;但据国外科技媒体Windows Latest报道&#xff0c;仍有用户反馈在非微星设备上出现“fault in nonpaged area”蓝屏错误。 如果…...

swiper删除虚拟slide问题

在存在缓存的情况下&#xff0c;删除较前的slide&#xff0c;会出现当前slide与后一个slide重复出现的情况 假设当前存在5个slide&#xff0c;且这5个slide已缓存&#xff0c;则删除slide2后&#xff0c;仍为5个slide&#xff0c;且slide2的内容变为slide3的内容&#xff0c;此…...

FPGA实战小项目2

基于FPGA的贪吃蛇游戏 基于FPGA的贪吃蛇游戏 基于fpga的数字密码锁ego1 基于fpga的数字密码锁ego1 基于fpga的数字时钟 basys3 基于fpga的数字时钟 basys3...

一些关于完整小程序项目的优秀开源

转载自&#xff1a; 35个项目&#xff0c;开源&#xff0c;开源&#xff01; (qq.com) 那几本霸占我休息时间的PDF&#xff01; (qq.com) 13个超强的 SpringBoot 实战项目 &#xff08;还不赶紧收藏起来&#xff09; (qq.com) 用SpringBoot开发一个人脸识别系统&#xff01…...

Windows模拟器推荐

物是人非事事休&#xff0c;欲语泪先流 Windows模拟器推荐 如果你需要在 Windows 操作系统之外运行 Windows 应用程序或测试不同版本的 Windows&#xff0c;有几个 Windows 模拟器和虚拟机软件可供选择。以下是一些常用的 Windows 模拟器和虚拟机软件&#xff1a; VirtualBox&…...

搭建RabbitMQ消息服务,整合SpringBoot实现收发消息

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;蓝桥云课认证讲师。 目录 一、前言1.1 什么是消息队列1.2 RabbitMQ 是什么1.…...

Web framework-Gin(二)

目录 一、Gin 1、Ajax 2、文件上传 2.1、form表单中文件上传(单个文件) 2.2、form表单中文件上传(多个文件) 2.3、ajax上传单个文件 2.4、ajax上传多个文件 3、模板语法 4、数据绑定 5、路由组 6、中间件 一、Gin 1、Ajax AJAX 即“Asynchronous Javascript And XM…...

【聚类】K-Means聚类

cluster&#xff1a;簇 原理&#xff1a; 这边暂时没有时间具体介绍kmeans聚类的原理。简单来说&#xff0c;就是首先初始化k个簇心&#xff1b;然后计算所有点到簇心的欧式距离&#xff0c;对一个点来说&#xff0c;距离最短就属于那个簇&#xff1b;然后更新不同簇的簇心&a…...

超图聚类论文阅读2:Last-step算法

超图聚类论文阅读2&#xff1a;Last-step算法 《使用超图模块化的社区检测算法》 《Community Detection Algorithm Using Hypergraph Modularity》 COMPLEX NETWORKS 2021, SCI 3区 具体实现源码见HyperNetX库 工作&#xff1a;提出了一种用于超图的社区检测算法。该算法的主要…...

React 防抖与节流用法

在React中&#xff0c;防抖和节流是优化性能和提升用户体验的常用技术。下面是它们的用法&#xff1a; 防抖&#xff08;Debounce&#xff09;&#xff1a;防抖是指在某个事件触发后&#xff0c;等待一段时间后执行回调函数。如果在等待时间内再次触发该事件&#xff0c;将重新…...

发布 VectorTraits v1.0,它是 C# 下增强SIMD向量运算的类库

发布 VectorTraits v1.0, 它是C#下增强SIMD向量运算的类库 VectorTraits: SIMD Vector type traits methods (SIMD向量类型的特征方法). NuGet: https://www.nuget.org/packages/VectorTraits/1.0.0 源代码: https://github.com/zyl910/VectorTraits 用途 总所周知&#x…...

HCIA自学笔记01-冲突域

共享式网络&#xff08;用同一根同轴电缆通信&#xff09;中可能会出现信号冲突现象。 如图是一个10BASE5以太网&#xff0c;每个主机都是用同一根同轴电缆来与其它主机进行通信&#xff0c;因此&#xff0c;这里的同轴电缆又被称为共享介质&#xff0c;相应的网络被称为共享介…...

3D封装技术发展

长期以来&#xff0c;芯片制程微缩技术一直驱动着摩尔定律的延续。从1987年的1um制程到2015年的14nm制程&#xff0c;芯片制程迭代速度一直遵循摩尔定律的规律&#xff0c;即芯片上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍。但2015年以后&#xff0c;芯片制…...

探讨下live555用的编程设计模式

这个应该放到这里 7.live555mediaserver-第1阶段小结&#xff08;完整对象图和思维导图&#xff09; https://blog.csdn.net/yhb1206/article/details/127330771 但是想想&#xff0c;还是拿出来吧。 从这第1阶段就能发现&#xff0c;它实质用到了reactor网络编程模式。...

LeetCode 1123. Lowest Common Ancestor of Deepest Leaves【树,DFS,BFS,哈希表】1607

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

centroen 23版本换界面了

旧版本 新版本 没有与操作系统一起打包的ISO文件了&#xff0c;要么先安装系统&#xff0c;再安装Centreon&#xff0c;要么用pve导入OVF文件...

Postman 调用 Microsoft Graph API (InsCode AI 创作助手)

官方配置参考网址&#xff1a; https://learn.microsoft.com/zh-cn/graph/use-postman 获取 Azure AD 应用程序凭据&#xff1a; 在 Azure AD 中注册你的应用程序&#xff0c;并获取客户端ID和客户端密钥。这些凭据将允许你的应用程序与 Microsoft Graph 进行身份验证和访问权限…...

MySql 游标 触发器

游标 1.什么是游标 MySQL游标是一种数据库对象&#xff0c;它用于在数据库查询过程中迭代访问结果集中的每一行。游标可以被看作是一个指向查询结果集的指针&#xff0c;通过移动游标&#xff0c;可以按行读取和处理结果集的数据。在MySQL中&#xff0c;游标可以用于在存储过程…...

html 网站源码 卖手机/互联网营销的方法

2019独角兽企业重金招聘Python工程师标准>>> (index):11 Uncaught ReferenceError: testAlert is not definedat HTMLInputElement.onclick ((index):11)解决&#xff1a; if后面漏了{。 要从chrome控制台看。否则很难定位。 Uncaught SyntaxError: Unexpected toke…...

信息网站设计案例/企业网站推广的方法有

题意&#xff1a; 给定一棵树&#xff0c;n个节点&#xff0c;若删除点v使得剩下的连通快最大都不超过n/2&#xff0c;则称这样的点满足要求。求所有这样的点&#xff0c;若没有这样的点&#xff0c;输出NONE。 思路&#xff1a; 只需要拿“求树的重心”的代码改一行就OK了。因…...

佛山市网站建设系统/seo关键词怎么填

较老版本的 AFNetworking 下载链接 http://pan.baidu.com/s/14Cxga 将压缩包中的文件夹拖入xcode工程项目中并引入如下的框架 简单的 JOSN 解析例子 static NSString *serverAddress "http://m.weather.com.cn/data/101110101.html"; // 1.创建JSON操作对象 A…...

wordpress 增加收录/百度论坛首页

一 常用命令 1、.gitignore 文件为git忽略文件&#xff0c;例*.[oa] *.~ 为忽略.a或.o或.~结尾的文件。/表示忽略目录&#xff0c;&#xff01;表示反取&#xff0c; *表示匹配零个或者多个字符。&#xff1f;表示匹配一个字符。 [0~9]表示0到9所有数字 2、如果部分更改文件已经…...

企业网站建设美丽/百度seo如何快速排名

一、步骤 1.创建一个Canvas 2.对Canvas进行初始化&#xff0c;记得把Game视图的分辨率调成和Canvas里面设置的一样的分辨率960X640 3.创建一个Image的UI节点作为Canvas的子节点&#xff0c;名字叫bg&#xff0c;设置宽高为1920X1080&#xff0c;Image组件里面的Color设置为黑色…...

合肥制作网站的公司简介/品牌建设

谷歌浏览器安装jetbrains ide support 打开webstorm 新建项目 新建test.html并添加js文件 Edit Configurations--->defaults-->javascript debug-->browser-->选择chrome 运行test.html 参考&#xff1a;https://blog.csdn.net/happybruce8023/article/details/534…...