美文网首页
IPFS 和区块链

IPFS 和区块链

作者: 花爬满篱笆 | 来源:发表于2019-07-08 19:39 被阅读0次

在B站看了黎跃春老师的教学视频,结合网上的资源和自己的操作整理的笔记,知识无价,感谢分享!

1.IPFS:

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

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

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

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

大量数据上传区块链成本非常高,把数据上传到IPFS,把哈希传到区块链,通过哈希到IPFS上进行寻址。

IPFS的工作原理:

  • 每个文件及其中的所有块都被赋予一个称为加密散列的唯一指纹。

  • IPFS通过网络删除重复具有相同哈希值的文件,通过计算是可以判断哪些文件是冗余重复的。并跟踪每个文件的版本历史记录。

  • 每个网络节点只存储它感兴趣的内容,以及一些索引信息,有助于弄清楚谁在存储什么。

  • 查找文件时,你通过文件的哈希值就可以在网络查找到储存改文件的节点,找到想要的文件。

  • 使用称为IPNS(去中心化命名系统),每个文件都可以被协作命名为易读的名字。通过搜索,就能很容易地找到想要查看的文件。

    从IPFS的介绍可以看出, IPFS设想的是让所有的网络终端节点不仅仅只充当 Browser或Client的角色,其实人人都可以作为这个网络的运营者,人人都可以是服务器。

“如果你把它(分布式账本)加到IPFS里,然后通过哈希算法把它录入区块里,那么你就可以通过IPFS直接在网上浏览交易以及文件。IPFS协议与区块链技术结合是个“完美的婚姻”。” ------Benet(IPFS创始人)

2. IPFS本地环境安装

2.1下载ipfs压缩包

百度搜索IPFS ,点击 try it

image.png

下载后,解压缩存档文件,并将ipfs二进制文件移动到可执行文件$PATH中的某个位置,使用install.sh脚本:

$ tar xvfz go-ipfs_v0.4.21_linux-amd64.tar.gz

$ cd go-ipfs

$ sudo ./install.sh

$ ipfs version

测试一下:

$ ipfs help
USAGE:
ipfs - Global p2p merkle-dag filesystem.

恭喜你!现在,您的计算机上已经安装了一个可以工作的IPFS。


Installing with ipfs-update

ipfs-update是一个命令行工具,用于安装和升级ipfs二进制文件。

Getting ipfs-update

ipfs-update can be downloaded for your platform at: https://dist.ipfs.io/#ipfs-update

If you have a working Go environment (>=1.8), you can also install it with:

$ go get -u [github.com/ipfs/ipfs-update](http://github.com/ipfs/ipfs-update)

安装ipfs的新版本或升级时,请确保使用最新版本的ipfs-update。

Installing ipfs with ipfs-update

ipfs-update版本列出所有可供下载的ipfs版本:

$ ipfs-update versions
v0.3.2
v0.3.4
v0.3.5
v0.3.6
v0.3.7
v0.3.8
v0.3.9
v0.3.10
v0.3.11
v0.4.0
v0.4.1
v0.4.2
v0.4.3
v0.4.4
v0.4.5
v0.4.6
v0.4.7-rc1

ipfs-update install latest 将安装最新可用的版本:

$ ipfs-update install latest

fetching go-ipfs version v0.4.7-rc1
binary downloaded, verifying...
success!
stashing old binary
installing new binary to /home/hector/go/bin/ipfs
checking if repo migration is needed...
Installation complete!

请注意,最新的可用版本可能不稳定(即表单中的候选版本vX.X.X-rcX)。因此,建议指定要安装的版本,例如:ipfs-update install v0.4.6。


3. 如何在本地创建一个IPFS节点

文件夹存储相关数据
通过节点连接的形式同步,将数据上传到整个IPFS网络。

cd ~/ 到主页面

在ubuntu下查看隐藏的文件和文件夹

ls -a 可以查看到隐藏的文件

此外 ,进入自己主目录,按ctrl+h也能看见以点号开头的隐藏文件

ipfs init 节点创建成功

image.png

ls -a 这回可以看到ipfs文件

image.png

cd .ipfs

image.png

节点已经创建成功,默认存储空间是10G,

我们要添加数据的时候,会先添加到本地的节点中,只有通过网络同步之后,才会把数据同步到整个IPFS网络,如果同步到IPFS网络后,就可以直接在公网查询数据。如果没有同步,就只能在本地即本机查询。

查看本地默认的存储空间是多大,如何修改:

执行完ipfs init命令后,会在根目录生成一个.ipfs的文件夹存储节点数据。.ipfs节点默认存储空间为10个G。
如果你自己想修改节点默认存储空间,可打开终端执行下面的命令,还是在.ipfs下。

image.png
$ export EDITOR=/usr/bin/vim

$ ipfs config edit

本步骤出问题是因为没有安装vim,打开一个新的terminal安装vim:
'$ sudo apt install vim'
再重新执行上面的两个语句。

执行完ipfs config edit命令后会打开一个文件,在这个文件中找到下图中绘制红线的位置,将10GB修改成你自己想要的存储空间。修改完毕,保存退出。(PS:输入i可以开始编辑,编译完毕后按esc键,再输入:,再次输入wq保存并且退出)。

image.png

如何区分本机节点和其他电脑的节点:

ipfs id

可以查看ID,ID是电脑的唯一标识,用于标识节点。

image.png
cd ..  切换回桌面

cd Desktop/

ls

mkdir 1124

cd 1124/

cat > file.txt

微信:liyc1215

Ctrl C退出

cat file.txt   查看当前文件的内容
image.png

如何将数据添加到本地的节点当中

ipfs add file.txt

将数据添加到ipfs中会返回一个哈希

QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T file.txt

已经往我们本地节点储存了一份数据

数据的文件名就是这个哈希,可以通过这个哈希找到这个文件的内容。

验证:

ipfs cat + hash

ipfs cat QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T

返回当前写入节点中的数据

image.png

vi file.txt

修改数据,按i可以编辑,写完后,按ESC键,:wq 保存并退出

ipfs add file.txt

产生新的哈希

added QmXjapcc9QbEPpN78JpabCpwszjitsAyZm6Y4UHHLcJk2y.txt

ipfs cat QmXjapcc9QbEPpN78JpabCpwszjitsAyZm6Y4UHHLcJk2y
image.png

若想外网也可以访问,ipfs.io/ipfs/QmXjapcc9QbEPpN78JpabCpwszjitsAyZm6Y4UHHLcJk2y

就需要把数据同步到整个网络当中,现在只是存储在本地中。

4.同步、启动节点服务器

就可以将节点和其他节点进行同步,依然在./1124下。

ipfs daemon

image.png

ipfs.io/ipfs/QmXjapcc9QbEPpN78JpabCpwszjitsAyZm6Y4UHHLcJk2y

需要耐心等待

5.跨域资源共享CORS配置

为了后续的开发方便,我们还需要对跨域资源共享( CORS )进行配置,ctrl- c退出ipfs,然后按照下面的步骤进行跨域配置。

  • 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 config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'

  • ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'

  • ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'

验证

  • 启动服务器

$ ipfs daemon

  • 新建终端执行下面的命令

$ ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

image.png

localhost:~ yuechunli$

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

image.png

相关文章

  • 关于IPFS存储的思考

    今天和大家要聊的话题:关于IPFS存储的思考。此篇文章和区块链关系不大,因为IPFS本身不属于区块链技术,但是它和...

  • 2020-11-13

    IPFS被写入区块链技术系列白皮书,IPFS发展正当时 2020年11月16日,为积极推动区块链技术在广播电视和网...

  • IPFS与区块链的关系

    前言 现在提到IPFS就一定会提到区块链,那么区块链和IPFS之间到底有什么关系呢?在介绍二者关系之前,我们需要先...

  • IPFS是区块链未来发展的最终形态?

    第三讲 IPFS与区块链的关系 上节课我们讲了IPFS产生的背景和它的发展历程,其实本质上IPFS是一个基于区块链...

  • “币”然激起千层浪——FileCoin

    IPFS是一个互联网技术,IPFS里面也没有使用到区块链技术,所以本身跟区块链没有关系。区块链从诞生至今目前最大的...

  • Filecoin存储和检索机制

    Filecoin是IPFS官方提供的区块链分布式存储项目,目前在区块链项目中是最火热的项目。 什么是IPFS呢? ...

  • 星际风暴

    墨客区块链的IPFSFileStorm正式开启公测: MOAC区块链IPFS平台FileStorm(星际风暴)自发...

  • IPFS 和区块链

    在B站看了黎跃春老师的教学视频,结合网上的资源和自己的操作整理的笔记,知识无价,感谢分享! 1.IPFS: IPF...

  • 买IPFS矿机应当考虑哪些要素?10招教你找到满意的矿机

    ​​作者:IPFS海神矿机 IPFS挖矿,指的是挖基于IPFS的区块链项目的矿,比如Filecoin。Fileco...

  • 【区块链】在GitHub上部署MDWiki(五十一)

    严格来说,MDWiki和区块链没关系,GitHub当然也没有,其实IPFS也可以和区块链没关系。只是暂时都归入这个...

网友评论

      本文标题:IPFS 和区块链

      本文链接:https://www.haomeiwen.com/subject/ploahctx.html