7-1、2、3 IPFS介绍使用及浏览器交互(react+区块链实战)

7-1、2、3 IPFS介绍使用及浏览器交互(react+区块链实战)

  • [7-1 ipfs介绍](#7-1 ipfs介绍)
  • [7-2 IPFS-desktop使用](#7-2 IPFS-desktop使用)
  • [7-3 react+ipfs-api浏览器和ipfs交互](#7-3 react+ipfs-api浏览器和ipfs交互)

7-1 ipfs介绍

IPFS区块链上的文件系统

https://ipfs.io/

这个网站本身是需要科学上网的

Ipfs是点对点的分布式系统

无限大的全球分布式的百度云盘

在这里储存我们的图片和视频

Ipfs上传文件后,会保留此文件的哈希值,整个文件会被打散

全球分布在各个地方

不会丢失

可以看其官网

Ipfs整个系统在github开源的

Ipfs的理想是取代http

一行访问未来是ipfs://

有了ipfs网络后,会将文件存储到本地挂载的一个节点

在github开源了

Js-ipfs是ipfs的nodejs实现

直接安装到全局(ipfs 的nodejs实现)

npm install ipfs -g

安装完后

启动jsipfs

Ipfs项目主目录中的js-ipfs

新建一个learn-ipfs目录,再建个html

内容如上

Jsipfs init

Jsipfs add index.html

完成后在

使用ipfs将html加入

added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH index.html

中间的值是哈希值

全球有N个ipfs的节点,每个节点都有ipfs的小碎片,本地获取的哈希值,来获取内容

Jsipfs add

如何查看(后面跟着哈希即可)

jsipfs cat QmPAaKh7zNeYyGbVfvP9QqbRXh2a5Jz6vz57RSLuVQ3zEg

就从ipfs网络上将其读取

我们也可以尝试着在公网上找我们的文件

格式如下(只有记住哈希值文件就永远不会丢)

https://ipfs.io/ipfs/QmPAaKh7zNeYyGbVfvP9QqbRXh2a5Jz6vz57RSLuVQ3zEg

现在是访问不到的,因为添加完后没有进行同步

需要执行同步到公网的操作

jsipfs daemon

如下本地网络同步完成

https://blog.csdn.net/weixin_30852451/article/details/96953573

关于IPFS官网ipfs.io无法访问的解决办法

https://ipfsdrop.com/practice/cloudflare-goes-interplanetary-introducing-cloudflares-ipfs-gateway/

IPFS快速入门 | 通过Cloudflare直接从浏览器访问IPFS文件

如何访问ipfs的官网

https://blog.csdn.net/weixin_30852451/article/details/96953573

209.94.90.1 ipfs.io

有时ip不是上需要查询https://www.ipaddress.com/

更改hosts文件

注意不关机重启的话要刷新DNS在cmd下

ipconfig /flushdns

上方的步骤完全可行的,访问能成功

下方的示例在7-5成功执行

https://ipfs.io/ipfs/QmYkMuFZj7tyHFJRVe7ucqMNYGEiSXrjKdudm2mu7UD7er

7-2 IPFS-desktop使用

将之前的上传的一个图片打开

https://ipfs.io/ipfs/QmSM1YwAo77Gt64ca16pBxQBXZ5V7Q4cfxQEvBBJXDv8hC

视频中的浏览器可以访问,可能是需要翻墙才能看到

文件存到哪里了,谁在存,有什么激励机制

发展过程后

现在是存储免费的,后续可能类似比特币的奖励机制,或者贡献部分硬盘带宽来进行

这是命令行的操作

若觉得操作繁琐

可以在github使用ipfs-desktop

桌面

此ipfs-desktop和之前的命令行是一一对应的,此处是以可视化的形式展现的

解决github下载缓慢的问题如下

https://www.jianshu.com/p/0493dcc15d6f

140.82.113.3 github.com

199.232.69.194 github.global.ssl.fastly.net

安装ipfsdesk之后如下

既然已经进入了ipfs就需要有存储和共享文件的责任

我们可以直接上传文件使用界面化的ipfs

节点与自己通信的节点

任何文件都是存在全球的CDN之上,可以加速访问节点内容

在文件可以上传本地文件

Js调用配置文件

这里是手动拖上去上传文件的

下面如何在js中手动拖拽上传文件

7-3 react+ipfs-api浏览器和ipfs交互

Ipfs在命令行的上传同步文件等

可以发网站,文件夹静态文件管理

此节课堂主要任务就是浏览器和ipfs的交互

Js-ipfs-api(github上,官方提供)进行上传内容,使用react搭建简单网络

能上传一个小文件到ipfs之上,拿到其哈希值,并通过哈希获取文件内容

Npm install -g create-react-app

之前已经安装过了就不用了

直接执行创建一个react项目

create-react-app ipfs-demo

创建完成

Cd ipfs-demo

Npm start 启动此react项目

主要在其App.js更改代码

http://localhost:3000/

在浏览器可以看到

将ipfs-api安装在创建的react项目下,而不是全局变量

npm install ipfs-api --save

在react就可以直接使用此内容了



上方有错误App.css应该导入

代码不够全,如下

复制代码
import React,{Component} from 'react';
import './App.css';

class App extends Component
{

	constructor(props){
		super(propos)
			//状态,上传内容,上传后的哈希
		this.state = {
			content:''
			hash:''
		}
		//绑定按钮(否则会this穿透)
		this.handleClick = this.handleClick.bind(this)
		//this.handleReadClick = this.handleReadClick.bind(this) 若不想绑定可以使用下方的箭头函数,两种方式
	}
	
	handleClick(){
	
	}

	handleReadClick(){
	
	}


	render(){
		return(
			<div className='App'>
				<input type="text"/>
				<button onClick={this.handleClick}>提交数据到ipfs</button>
				<hr/>
				<p>
					{this.state.hash}
				</p>
				<button onClick={()=>this.handleReadClick()}>从ipfs读取数据</button>
				<p>
					{this.state.content}
				</p>
			</div>
		);
	
	}
}
export default App
相关推荐
txwtech21 小时前
第20篇esp32s3小智设置横屏
前端·html
Exquisite.21 小时前
企业高性能web服务器---Nginx(2)
服务器·前端·nginx
DFT计算杂谈21 小时前
VASP+PHONOPY+pypolymlpj计算不同温度下声子谱,附批处理脚本
java·前端·数据库·人工智能·python
广州华水科技21 小时前
如何选择合适的单北斗变形监测系统来保障水库安全?
前端
Mr_Xuhhh21 小时前
MySQL表的内连接与外连接详解
java·前端·数据库
Amumu1213821 小时前
Vue Router(一)
前端·javascript·vue.js
郑州光合科技余经理21 小时前
可独立部署的Java同城O2O系统架构:技术落地
java·开发语言·前端·后端·小程序·系统架构·uni-app
清山博客21 小时前
jQuery easyui 扩展datetimebox控件,增加上午、中午、下午快速选择
前端·jquery·easyui
VT.馒头21 小时前
【力扣】2694. 事件发射器
前端·javascript·算法·leetcode·职场和发展·typescript
life码农1 天前
HTML文本换行显示几种方法总结
前端·html