IPFS 和区块链

在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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343