先秀一波头像,吐槽下简书的头像都不能编辑
IPFS简介
IPFS全称星际文件系统(InterPlanetary File System),第一眼觉得这名字取得真中二,但是深入理解他们的理念后,觉得他们的架构还真适合星际间的网络。所以IPFS也有被称为New Internet,它试图解决HTTP协议的弊端,所以IPFS自己就是一个网络协议。当然它还有很多身份,有兴趣可以在github一探究竟。
Github地址
这或许让大家想到HBO的电视剧《硅谷》,特别是第三季之后,Richard每天挂在嘴边的New Internet,其实我也是通过看电视剧了解他们这个系统的一些观念的。
安装IPFS
目前IPFS的版本是0.4.14,现在的程序是用go语言实现的,目前JavaScript已经在开发中,Python跟C也有计划。个人比较期待Python,但是Python那个项目已经2年没啥动静,千万别凉凉的了。
#先下载IPFS程序,进行解压缩
#CD到目录之下
#Mac或Linux下安装
tar xvfz go-ipfs.tar.gz
cd go-ipfs
./install.sh
#Windows下安装
#解压缩出来ipfs.exe文件,直接拷贝到某个在含在Path(全局变量)的某个目录中
#测试一下
ipfs help
#输出结果
USAGE
ipfs - Global p2p merkle-dag filesystem.
ipfs [--config=<config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L] [--api=<api>] <command> ...
SUBCOMMANDS
BASIC COMMANDS
init Initialize ipfs local configuration
add <path> Add a file to IPFS
cat <ref> Show IPFS object data
get <ref> Download IPFS objects
ls <ref> List links from an object
refs <ref> List hashes of links from an object
DATA STRUCTURE COMMANDS
block Interact with raw blocks in the datastore
object Interact with raw dag nodes
files Interact with objects as if they were a unix filesystem
dag Interact with IPLD documents (experimental)
ADVANCED COMMANDS
daemon Start a long-running daemon process
mount Mount an IPFS read-only mountpoint
resolve Resolve any type of name
name Publish and resolve IPNS names
key Create and list IPNS name keypairs
dns Resolve DNS links
pin Pin objects to local storage
repo Manipulate the IPFS repository
stats Various operational stats
p2p Libp2p stream mounting
filestore Manage the filestore (experimental)
NETWORK COMMANDS
id Show info about IPFS peers
bootstrap Add or remove bootstrap peers
swarm Manage connections to the p2p network
dht Query the DHT for values or peers
ping Measure the latency of a connection
diag Print diagnostics
TOOL COMMANDS
config Manage configuration
version Show ipfs version information
update Download and apply go-ipfs updates
commands List all available commands
Use 'ipfs <command> --help' to learn more about each command.
ipfs uses a repository in the local file system. By default, the repo is
located at ~/.ipfs. To change the repo location, set the $IPFS_PATH
environment variable:
export IPFS_PATH=/path/to/ipfsrepo
EXIT STATUS
The CLI will exit with one of the following values:
0 Successful execution.
1 Failed executions.
这样子,算是你的ipfs安装成功了,然后我们来初始化一下
初始化
在命令行窗口
#初始化将生产自身特殊的hash值ID
ipfs init
#可以通过ipfs config show 或 ipfs id命令来显示
具体相关教程网上都有,这里就不再赘述
最后讨论一个有意思的问题
先上代码
#启动ipfs网络
ipfs daemon
#新开一个命令行窗口输入
ipfs add ~/Desktop/t.jpeg
added QmbuFuKgqZKo2mowoDmapCduvpiYmnP4mWfYXxZXfNvvs9 t.jpeg
在浏览器中录入
localhost:8080/ipfs/QmbuFuKgqZKo2mowoDmapCduvpiYmnP4mWfYXxZXfNvvs9
浏览器就会显示我的这张图片
更酷的是,我在我本地add这张图片之后,全世界都可以访问我这张图片了。我不需要将他传到任何网络服务器中(网盘、网络相册等等等等)。
回顾一下我的文章开头,我传的照片,我一定要存在简书的服务器中,如
https://upload-images.jianshu.io/upload_images/4062623-3870f41b92eaba23.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
而现在只要通过ipfs协议,我就可以找到这个照片,而且不用担心这照片会丢失,更酷的是,他是加密的,而且安全性非常非常高,如果你不把文件的hash码给别人,这张照片就永远属于你自己。
https://ipfs.io/ipfs/QmbuFuKgqZKo2mowoDmapCduvpiYmnP4mWfYXxZXfNvvs9
下期介绍一下用IPFS搭建静态网络