【区块链】#区块链 ipfs介绍及环境配置

2023-11-10

        需要在答辩之前做一点demo进行展示,好给评委老师展示我们的预期成果,组长最后挑选了IPFS作为初级的展示工具。我们的第一次在链上操作就开始了。区块链具有去中心化、不可篡改、智能合约的一些特性。其实大家都知道区块链是这几年因为比特币的火而赶上风口的东西,ipfs就是一个实现。

这里借用网络的一些资源简要介绍一下IPFS的东西。

部分内容来源于黎跃春区块链博客--IPFS环境配置

IPFS简介

IPFS(InterPlanetary File System)是一个点对点的分布式超媒体分发协议,它整合了过去几年最好的分布式系统思路,为所有人提供全球统一的可寻址空间,包括Git、自证明文件系统SFSBitTorrentDHT,同时也被认为是最有可能取代HTTP的新一代互联网协议。

IPFS用基于内容的寻址替代传统的基于域名的寻址,用户不需要关心服务器的位置,不用考虑文件存储的名字和路径。我们将一个文件放到IPFS节点中,将会得到基于其内容计算出的唯一加密哈希值。哈希值直接反映文件的内容,哪怕只修改1比特,哈希值也会完全不同。当IPFS被请求一个文件哈希时,它会使用一个分布式哈希表找到文件所在的节点,取回文件并验证文件数据。

IPFS是通用目的的基础架构,基本没有存储上的限制。大文件会被切分成小的分块,下载的时候可以从多个服务器同时获取。IPFS的网络是不固定的、细粒度的、分布式的网络,可以很好的适应内容分发网络的要求。这样的设计可以很好的共享各类数据,包括图像、视频流、分布式数据库、整个操作系统、模块链、8英寸软盘的备份,还有静态网站。

IPFS提供了一个友好的WEB访问接口,用户可通过http://ipfs.io/hash 获取IPFS网络中的内容,也许在不久的将来,IPFS协议将会彻底替代传统的HTTP协议。

/* end*/

其实这些区块链的实现的关键技术都有类似的,例如点对点,分布式,这个也是一种发展趋势。这里不多做解释,如果想要深入了解区块链架构,可以去找寻一点 例如白话区块链 图解区块链 深入理解区块链  区块链架构之类的书籍去看看。

IPFS的环境配置

博主在Windows系统上和Linux系统上都试着装过ipfs的环境,现在机器上也有ipfs的环境,整个安装过程给人感觉很简单,一步一步走下去就ok,坑几乎没有,前提是网络啊 机器啊一些底层环境都存在。

做到结束 能在本地打开你的ipfs的一个HelloWorld的web端,输入一个数字,返回一串hash值,就很安逸,大功告成。

因为Ubuntu系统对于开发者、对于作为服务器端具有更好的性能,我们这里首先以Ubuntu为例开始讲,参考的还是黎跃春区块链博客--IPFS环境配置

首先去IPFS官网www.ipfs.io下载它的对应你系统的安装包,

之后的通过ipfs访问hash的操作也是才能看到。也可以去CSDN或者网盘去搜下载的     一个windows的下载地址

一个Ubuntu的下载地址  还是建议去官网下最新的。

如图所示

在Try it 后的页面找到install ipfs找到属于自己的系统平台,下载对应的文件即可。

Linux下就是tar.gz压缩包、windows下就是zip压缩包。在Ubuntu下后需要拷贝到一个给定的目录,建议这个目录不要太深,比较好找,因为你可能经常需要终端操作。

可以通过ls命令看到在home下的

使用 tar xvfz go-ipfs_xxxx.tar.gz命令解压 也就是tar xvfz加上你的文件名 结果如图所示

czb@ubuntu:~$ tar xvfz  go-ipfs_v0.4.17_linux-amd64.tar.gz
go-ipfs/build-log
go-ipfs/install.sh
go-ipfs/ipfs
go-ipfs/LICENSE
go-ipfs/README.md
czb@ubuntu:~$ 

然后再用ls命令 可以发现文件目录中多了一个 go-ipfs文件夹 就是解压得到的

使用cd命令进入go-ipfs文件夹 因为里面有可执行的文件

czb@ubuntu:~$ cd go-ipfs
czb@ubuntu:~/go-ipfs$ ls
build-log  install.sh  ipfs  LICENSE  README.md

因为这个ipfs文件是其可执行安装的文件,有的人会把这个进行移动,我没移动,以后就都得在这个文件夹中执行了。你在当前文件夹下直接打开ipfs 也就是终端输入ipfs 会发现就像-help一样 已经好了 可以执行操作了    (因为相当于你直接打开)

 我们使用ipfs init在你的机器上初始化 创建第一个结点, 

czb@ubuntu:~/go-ipfs$  ipfs init
initializing IPFS node at .ipfs
generating 2048-bit RSA keypair...done
peer identity: QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP
to get started, enter:

	ipfs cat /ipfs/QmVLDAhCY3X9P2uRudKAryuQFPM5zqA3Yij1dY8FpGbL7T/readme

应该就是这样,因为我的已经早之前init过,这里提示不能再init。接着你就可以用ls 和 cd命令查看目录了。

此时其实已经可以用了 只是一些功能受限,它对我们只是一个库,通过它完成自己的APP还得设置很多。

修改节点默认存储空间

可以在ipfs根目录.ipfs 使用export EDITOR=/usr/bin/vim 和ipfs config edit 进行修改默认存储空间。

查看节点id

本来想给大家展示如何查看节点id的,但是显示我这个锁上了,

通过先ipfs repo fsck删除锁 再通过ipfs daemon启动即可解锁      (ipfs daemon命令经常用到)

czb@ubuntu:~/go-ipfs$ ipfs id
Error: api not running
czb@ubuntu:~/go-ipfs$ ipfs fsck
Error: Unknown Command "fsck"

czb@ubuntu:~/go-ipfs$ ipfs repo fsck
Lockfiles have been removed.
czb@ubuntu:~/go-ipfs$ ipfs daemon
Initializing daemon...
Successfully raised file descriptor limit to 2048.

然后再打开一个新的终端,试着ipfs id即可查看结点  如图

czb@ubuntu:~$ ipfs id
{
	"ID": "QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9",
	"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC48Jx6BLYcHXNwBDTq/WNEDBxN+J8Mpq3BNWBbZkeSEtthP4bwdIZGjf+BmSJgUfOg3bUpdwvmFui9BMsl/QtTgGxGq7SWVbEj0V8x9VoQ/ySgvicYJXulajuZSdeLxAjvY8EWqi0L3+fzMGJc2NN/xDwac6HtBuGJ82gf2gRCH4b5q2cOQhUdOehYMyLo4EKh+NTiBRAv2RVT22H2NviuzoVtHQE1lkO3BpbnUpB2SSmwO2sQku7+38e2UXIDDASc4fyYocUWe/QFWa+7IUGFTWUXpNDCIWo0Zdf6eC1FWSKI/w+6srigRBpQnQPJ6FyoTKyhPIAQYFBUdf/WtrgTAgMBAAE=",
	"Addresses": [
		"/ip4/127.0.0.1/tcp/4001/ipfs/QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9",
		"/ip6/::1/tcp/4001/ipfs/QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9"
	],
	"AgentVersion": "go-ipfs/0.4.17/",
	"ProtocolVersion": "ipfs/0.1.0"
}

以下字符串为你的ID的hash值 之后可以通过它去官网上查看你的主页。

	"ID": "QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9",

一点关于复制粘贴的建议,Ubuntu的终端 如果你ctrl + c就会默认中止当前命令 如果你执行一些较长的命令,切记不要ctrl+c 直接鼠标右键 copy  即可。

启动结点服务器

前面提到的 ipfs daemon命令 就是启动结点服务器的命令,在给链上传文件、传字符串的之后daemon一下。可以认为是同步节点的过程和打开本地服务器的过程 ,主要是打开本地服务器,就像apache一样,给你提供了一个端口,你启动之后,通过127.0.0.1:5001/webui 进行访问。这里要建议的是 建议不要出现全角字符,不然会莫名报错。

daemon的命令产出的结果是这样

czb@ubuntu:~/go-ipfs$ ipfs daemon
Initializing daemon...
Successfully raised file descriptor limit to 2048.
21:19:09.061 ERROR       core: mdns error: No multicast listeners could be started core.go:271
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit/ipfs/QmfTUiUGGn9ao8uo2YZjpXJ3qMvt9SGav87b1eKmUPGPU9
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

跨域资源共享CORS配置

这个可以认为是为了传输而适应底层的一些协议而设置的东西,Windows和Ubuntu都有差别,在Ubuntu上简单的按照要求即可,Windows的配置后续会说。

对跨域资源共享( CORS )进行配置,先ctrl- c退出ipfs,然后按照下面的步骤进行跨域配置。

press ctrl- c//退出ipfs

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'

验证是否配置成功

先启动节点服务器

ipfs daemon

然后新建终端执行下面的命令

ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

这个里面的hash不是我的,命令直接输入即可,看结果即可

会在终端画一个这样的东西,表示你的环境安装成功了。大功告成

czb@ubuntu:~$ ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

ipfs daemon成功后  也可打开127.0.0.1:5001/webui 即可看到它预设的网页 里面包含你的结点信息、上传的文件、IPFS区块链的分布情况等。如图

 

我们已经完成了本次ipfs基本的配置和说明,关于windows的配置和更多操作之后进行分享,特别鸣谢黎跃春区块链博客--IPFS环境配置 祝大家使用顺利。

一点说明 是ipfs已经打好了基础的区块链,也具有一定规模的结点和群体,具有基本的足够的操作。程序员可以直接操作传值传文件返回hash值,但是加密解密,实现hash到用户还是需要程序员想办法,这只是冰山一角的工作,思考更合理的逻辑,更安全有效的加密方式才是我们做应用需要的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【区块链】#区块链 ipfs介绍及环境配置 的相关文章

  • 公众号上传临时素材获取media_id

    公众号上传临时素材获取media id java语言 更新于2018 01 15 public class Util private static final String UPLOAD URL https api weixin qq co
  • Linux驱动系列-PWM驱动

    转自 嵌入式系统研发 1 概述 本文主要讲述了Linux的PWM驱动框架 实现方法 驱动添加方法和调试方法 示例Linux内核版本 6 2 8 2 原理 PWM是Pulse Width Modulation的简称 中文译作脉冲宽度调制 作为
  • Vue实现底部对话框

    效果 手机上的效果 电脑上的效果 代码 App vue

随机推荐

  • 手写一个简化版 vuepress 需要知道什么?

    自实现 vuepress 效果图如下 首先我们来看看 vuepress 是怎么工作的 1 全局安装 vuepress npm install g vuepress 2 运行编写好的 docs 文件 编译后的浏览器显示文档网页 vuepres
  • 谭浩强C++课后习题20——找二维数组的鞍点

    谭浩强C 课后习题20 找二维数组的鞍点 题目描述 找出一个二维数组中的鞍点 即该位置上的元素在该行上最大 在该列上最小 也有可能没有鞍点 一个二维数组最多只有一个鞍点 也有可能没有 算法思路 先找出一行中值最大的元素 然后检查它是否是该列
  • 一、Vite css处理(模块module、sass less预处理、获取CSS代码字符串)

    文章目录 一 参考 二 CSS 自动导入 三 import 内联和变基 四 PostCSS 五 CSS 模块化 module css 5 1 自定义 CSS module 导出命名规则 5 2 为什么要有 CSS module 5 3 CS
  • java 手写一个简易的 tomcat 服务器

    最近想学一下 tomcat 到底是怎么运行的 于是手写一个简易的 tomcat 服务器 加深一下印象 涉及到的知识 计算机网络 tcp ip 协议 网络编程 socket 浏览器请求 响应报文规范 java 反射 注解 实现的功能 可打包成
  • Web自动化测试(3)-Unittestreport

    HTML报告 目录 HTML报告 1 Unittest自动化报告生成 2 Unittestreport安装 3 使用Unittestreport生成测试报告 1 Unittest自动化报告生成 在使用Unittest进行自动化测试时 往往需
  • 【zookeeper】ZooKeeper 权限管理与Curator增加权限验证

    文章目录 1 概述 2 种类 2 1 scheme 2 1 1 world 2 1 2 digest 2 1 2 1 shell认证 2 1 2 2 zookeeper 2 1 2 Curator 2 1 3 id 3 permission
  • QGIS学习资料

    QGIS学习资料整理 1 QGIS Tutorials and Tips 网址 https www qgistutorials com en
  • /var/lib/docker目录迁移

    简介 docker用起来简单 但是要用到实际线上业务当中细节问题往往影响整个系统的稳定 比如docker容器在物理机上的数据卷问题 docker默认的根目录是 var lib docker 容器使用一段时间后会发现该目录所占磁盘会非常大 小
  • js获取当前ip地址

    方法一 用搜狐的接口查询IP地址 方法二 国外一个网站提供的ip查询服务
  • Web学习笔记-React(路由)

    笔记内容转载自 AcWing 的 Web 应用课讲义 课程链接 AcWing Web 应用课 CONTENTS 1 Web分类 2 Route组件 3 URL中传递参数 4 Search Params传递参数 5 重定向 6 嵌套路由 本节
  • 纯js判断文件流格式类型:pdf,doc,docx,xls,xlsx,ppt,pptx一次搞定!

    目录 使用js判断文件类型的场景 方法特点 输入输出 方法步骤 1 查看每种格式文件的16进制码 提取不同文件类型的 特征数 2 先判断大类型 在具体大类下判断小类型 项目地址 纯前端基于react实现的多类型文件预览 通过arraybuf
  • java中的string是什么意思_java中String[][] 是什么东西?string[]又是什么东西?

    展开全部 String 是二维数组 例如 String str new String 4 4 这是创建了一个有4行4列元32313133353236313431303231363533e78988e69d8331333366306433素的
  • 看完这篇 教你玩转渗透测试靶机vulnhub——FunBox11(Scriptkiddie)

    Vulnhub靶机FunBox11 Scriptkiddie 渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 FTP匿名登入 漏洞发现 漏洞利用 获取flag Vu
  • 解读《“三板斧”-阿里巴巴管理之道》

    三板斧 阿里巴巴管理之道 1 管理的真相是什么 三板斧 是阿里巴巴的一门培训课程 形象一点比喻分别是 揪头发 指组织中的向上思考 照镜子 指团队中的自我认知 闻味道 指发展中的精神融合 这三点说的是组织中的管理者如何通过管理团队的力量 成就
  • 如何在Win10中安装Visual Studio 6.0

    随着微软Windows操作系统的不断升级 尤其是升级到64位系统后 很多原有32位的开发软件在如今的win10 11系统上运行时会遇到很多问题 比如 笔者就曾遇到的过去很熟悉的VC 6 0在win10中安装后 一打开文件 程序就闪退的问题
  • redis基础1——发展历程+源码安装及配置+基本常识

    文章目录 一 NOSQL概述 1 1 单机Mysql的演进 1 2 什么是Nosql 1 3 Nosql的四大分类 1 3 1 KV键值对型 1 3 2 文档型数据库 bson格式 和json一样 1 3 3 列存储数据库 1 3 4 图数
  • PCB中电流与线宽 电流与过孔的关系

    1 一般认为20mil走线可以过1A电流 有一定余量 2 0 5mm 20mil 过孔可以过1A电流 有一定余量 如果2A电流放置0 25mm 10mil 过空作为载流 至少放置四个过孔 制作最小过孔的能力与板厂的制作能力和工艺有关系 嘉立
  • mysql设置开机自启后依然无法自启动

    一般情况下设置的开机自启 一般情况下这样设置就可以实现开机自启了 但是有部分天选之子不行 例如看见博客的你我 明明设置了开机自启 但每次打开数据库却连不上 还需要自己手动启动 乌鱼 解决办法 1 第一步 我们查看系统启动日志 方法如下 cm
  • python运维开发工程师养成记(break语句)

    图示 案例 下节分享continue语句 链接 https ke qq com course 4300856 tuin d8aedf68
  • 【区块链】#区块链 ipfs介绍及环境配置

    需要在答辩之前做一点demo进行展示 好给评委老师展示我们的预期成果 组长最后挑选了IPFS作为初级的展示工具 我们的第一次在链上操作就开始了 区块链具有去中心化 不可篡改 智能合约的一些特性 其实大家都知道区块链是这几年因为比特币的火而赶