摘要:安装与概览由于我使用的实现为,所以首先要安装配置环境。六安装辅助工具和,前者是一个桌面客户端,后者是一个浏览器插件,可以在及等浏览器上安装。你可以新开一个终端使用下等功能好了,本次对的安装配置到此结束,后续会更新更多内容。
IPFS安装与概览
由于我使用的IPFS实现为go-ipfs,所以首先要安装配置Golang环境。
我使用的系统为Ubuntu18.04,后面所有操作均在此系统下完成,下面的教程改自学长给的文档。
本文允许转载,转载前请私信我,并且转载发布要附带源地址以及我的ID。
如你发现本文有错误,可评论私信告知。
一、安装Go下载最新的Go语言版本,目前我用的版本为1.11.1,从官网下载时可能需要挂梯子,官网下载地址为golang下载。
下好linux版本的二进制文件后,将其解压至/usr/local目录下(你也可以解压到其他地方,只要把path设置好)
sudo tar xf go1.11.1.linux-amd64.tar.gz -C /usr/local
在/home目录,创建一个go目录,用做gopath
mkdir ~/go
配置好路径和环境,对/etc/profile和~/.zshrc(如果你用bash就是~/.bashrc)进行操作
$sudo vim /etc/profile export GOROOT=/usr/local/go export GOPATH=/HOMEPATH/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin $source /etc/profile
$vim ~/.zshrc export GOROOT=/usr/local/go export GOPATH=/home/xcshuan/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin $source ~/.zshrc
看go语言是否安装成功
$go version go version go1.11.1 linux/amd64二、安装IPFS
下载IPFS的go实现源码
go get -u github.com/ipfs/go-ipfs
进入源码目录编译安装
cd ~/go/src/github.com/ipfs/go-ipfs make install
Note1:若是⼀直处于下载gx,连接ipfs.io,可以架梯子,或者在/etc/hosts中添加
209.94.78.78 ipfs.io
Note2: 编译的过程会在~/go/src/gx/ipfs⽬录下,下载很多包,所以第⼀次编译过程⽐较⻓
Note3: 遇到golang.org/x/yyyy包下载超时,可以在github.com/golang下载相应的包后放在~/go/src/golang.org/x/下⾯
查看IPFS是否安装成功,在终端输入即可看到帮助信息
$ipfs USAGE ipfs - Global p2p merkle-dag filesystem. ipfs [--config=| -c] [--debug= | -D] [--help= ] [-h= ] [--local= | -L] [--api= ] ... SUBCOMMANDS BASIC COMMANDS init Initialize ipfs local configuration add Add a file to IPFS cat Show IPFS object data get Download IPFS objects ls List links from an object refs 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 cid Convert and discover properties of CIDs Use "ipfs --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 version ipfs version 0.4.18-dev
可见目前ipfs还不是正式版
三、安装zshzsh是比bash要好用许多的,用OhMyZsh来傻瓜式安装,在命令行下输入以下语句然后输入密码即可。
$sudo apt install zsh $sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
然后安装一些插件,
$vim ~/.zshrc //找到下面这一句 plugins=( git ) //将其修改为 plugins=( git extract last-working-dir zsh-autosuggestions wd zsh-syntax-highlighting )
安装autojump,这是一个十分强大的目录跳转插件,建议安装,安装流程如下
$sudo apt-get install autojump $cd $git clone https://github.com/joelthelion/autojump.git $cd autojump $python ./install.py //最后会有一个提示,让你把那句话复制到~/.zshrc里去,每个人都不一样 vim ~/zshrc 复制刚刚那段到最后 source ~/.zshrc四、编程环境
编辑器 or IDE
可以使用微软的VScode或者jetbrain的Goland来编辑源码,我使用的是VScode。
在VScode里安装Go插件,打开一个.go文件VScode会提示你安装一些Go的插件,这些插件有助于源码阅读编辑,建议安装,但是其中有几个会安装失败,此时需要架梯子进行,如果依然失败,在架梯子的前提下,将VScode里的安装命令复制到终端执行,即可成功安装,失败可多次尝试。
安装zsh,zsh比自带的bash要好用好看很多,有很多插件,建议用OhMyZsh安装,教程自查,Github上有一个zsh的ipfs补全插件,可以选择安装,如果用bash的话,可以在~/go/src/github.com/ipfs/go-ipfs/misc/completion目录下找到ipfs-completion.bash,把这个文件复制到~/.ipfs,然后在home目录新建.bash_completion文件,在文件里加上source ~/.ipfs/ipfs-completion.bash这句,即可在终端补全IPFS指令。
五、简化代码安装完IPFS后,我们可以看到在$GOPATH/src下面有两个文件夹和ipfs有关,分别是~/go/src/github.com/ipfs和~/go/src/gx/ipfs,第一个为主ipfs文件夹,后一个是由许多包组成的文件夹,后一个为前一个提供底层支持,诸如文件仓库的管理,网络协议之类的都在后一个文件夹,而命令行界面在第一个文件夹。
进入~/go/src/gx/ipfs文件夹,我们发现里面都是Qm开头编码命名的文件夹,再点进去才能看到如go-libp2p-nat的正常文件夹名,Qm编码文件夹很影响代码阅读,我们可以删去它。
在前面make install成功以后,首先终端进入go/src/gx/ipfs和go/src/github.com/ipfs/go-ipfs两个文件夹中运⾏
git init git add. git commit -m "begin" --allow-empty
这样能保证出问题还可以git reset --hard回滚回去。
go/src/gx/ipfs⽬目录下,将Qmxxx目录中的内容移动出来
cd go/src/gx/ipfs cp -r */* . mkdir -p ../bak mv Qm../bak
使用通配符,用VScode全局替换所有代码中的“gx/ipfs/Qmxxx/yy”为“gx/ipfs/yy”(否则go-ipfs找不到修改后的package了),包括go/src/gx/ipfs和go/src/github.com/ipfs/go-ipfs在vscode中使用replace功能,这两个文件夹下的所有文件都得替换。
"gx/ipfs/Qm.*?/ 替换为 "gx/ipfs/
注意1,VScode默认未开启全局搜索功能,请百度开启方法。
注意2,请使用正则模式查找替换
注意3,此次替换设计几千次正则查找,速度非常慢,请耐心等待。
修改go/src/github.com/ipfs/go-ipfs⽬目录下的Rules.mk,注释掉下⾯面三⾏
#include mk/gx.mk ... #deps: gx-deps #.PHONY: deps
在go/src/github.com/ipfs/go-ipfs目录下make install编译通过
此时新建一个工作区,讲gx/ipfs和go-ipfs两个文件夹都放入工作区中,方便代码阅读编辑。
六、安装辅助工具ipfs-desktop和IPFS-companion,前者是一个桌面客户端,后者是一个浏览器插件,可以在firefox、Chrome及Safari等浏览器上安装。
七、使用测试首先终端运行ipfs init
$ipfs init
ipfs就会默认新建一个~/.ipfs文件夹,里面会存一些信息,代表你这个节点已初始化成功
$cd ~/.ipfs $tree ├── api ├── blocks(文件夹) ├── config ├── datastore(文件夹) ├── datastore_spec ├── ipfs-completion.bash ├── keystore(文件夹) └── version
然后运行ipfs daemon即可启动ipfs的驻留程序
在浏览器打开http://localhost:5001/webui或者使用ipfs companion可以查看一些内容,如下图所示
可以开一个终端执行ipfs id查看自己节点的信息。
$ipfs id { "ID": "Qme**Fp", "PublicKey": "CAASpgI**AAE=", "Addresses": [ "/ip4/127.0.0.1/tcp/4001/ipfs/Qme**5hKrFp", "/ip4/192.168.1.125/tcp/4001/ipfs/Qme**T5hKrFp", "/ip6/::1/tcp/4001/ipfs/Qme**T5hKrFp", "/ip4/222.20.72.127/tcp/4001/ipfs/Qme**qKT5hKrFp" ], "AgentVersion": "go-ipfs/0.4.18-dev/29**961", "ProtocolVersion": "ipfs/0.1.0" }
你可以新开一个终端使用下ipfs add、ipfs get、ipfs cat、ipfs block put、ipfs block get等功能
好了,本次对ipfs的安装配置到此结束,后续会更新更多内容。
IPFS官方文档
go-ipfs实现
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/24377.html
摘要:说明的视频片段分发现在没做出什么成果作者还提了一句,协议有望成为直播内容的传播协议。仿佛也没能掩饰住不知道怎么分发视频片段的尴尬说了这么多,看了代码发现视频片段还是通过分发总结最终将建立一个可扩展的,即用即付的直播网络 Background Livepeer旨在构建带有激励机制的视频直播分布式网络 Blockchain 以太坊 智能合约和交易基于Ethereum以太坊网络 DP...
摘要:针对这一新的技术趋势,会上来自弗若斯特沙利文高级分析师头豹研究院副理事贾雁发布了行业首个去中心化云计算市场趋势全面分析了当前去中心化市场的规模和走势。基础架构作为整个环境的底层,通过去中心化能够更好的保护每个人的隐私安全和数据安全。 在刚刚结束的万物新生 云生多态 2021Web 3.0云响力峰会上分布式计算、分布式存储以及去中心化技术成为了整场关注的焦...
摘要:通常的做法是分享者将文件用接收者的公钥加密,接收者从网络下载后用私钥解密。而在命令的完整形式是注意其中的,如果不带这个参数,那么久表示使用默认的也就是节点。 IPFS是什么 IPFS(InterPlanetary File System)是一个内容寻址、版本化、点对点的分布式文件系统。 内容寻址 - 文件不是以URL寻址,而是根据文件内容的Hash值寻址,一旦内容确定,文件地址也就确...
摘要:之前有好几人问过小编,想在里面上传一张图片。如何做今天小编就讲一下如何在里面上传下载文件。这个时候你可以在浏览器里面输入你的哈希值就可以看到你的文件了,比如,这个小编刚才上传的文件。 作者简介:董天一 ,IPFS/Filecoin中国区技术布道人 ,《IPFS指南》作者。毕业于北京大学软件与微电子学院曾担任甲骨文亚洲研发中心(中国)数据库开发工程师。资深区块链技术开发者,现致力于IPF...
阅读 3967·2021-11-16 11:44
阅读 5188·2021-10-09 09:54
阅读 2030·2019-08-30 15:44
阅读 1678·2019-08-29 17:22
阅读 2752·2019-08-29 14:11
阅读 3388·2019-08-26 13:25
阅读 2324·2019-08-26 11:55
阅读 1595·2019-08-26 10:37