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

        需要在答辩之前做一点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到用户还是需要程序员想办法,这只是冰山一角的工作,思考更合理的逻辑,更安全有效的加密方式才是我们做应用需要的工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章