【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点

2019.2.14 情人节,Filecoin项目开放了核心源码仓库go-filecoin,并更新了 filecoin-project organization下的诸多核心成果,这意味着,Filecoin已然度过了最困难的难点攻关期,进入到了全民公测阶段

本系列文章将协助大家对源码仓库进行全解析,帮助大家系统地学习和了解Filecoin这个项目,发现新的机遇和商机,小编将在这段时间密切关注Filecoin动态,和大家一起度过Filecoin全民公测阶段

章节目录

  • 前言
  • Filecoin里程碑
  • 第一章:搭建Filecoin测试节点
  • 第二章:如何创建钱包,获取FIL Mock代币
  • 第三章:存储提供方(矿工)的配置操作
  • 第四章:存储需求方的配置操作
  • 第五章:如何让自己的节点加入测试网络
  • 第六章:如何组建多节点矿工集群('矿池')
  • 第七章:如何参与复制证明游戏测试
  • 第八章:Filecoin Organization介绍
  • More

Filecoin 里程碑

(万事开头难,一起追溯和回顾一下Filecoin的革命历程)

  • 2015年7月15日,Filecoin发布了第一版白皮书:

《Filecoin: A Cryptocurrency Operated File Storage Network》

  • 2016年,Juan Benet首次对外发布Filecoin主题演讲,向大众宣告:IPFS准备添加一个名为Filecoin,基于区块链的货币层,以激励IPFS网络上的数据存储。
  • 2017年7月19号,Filecoin发布了第二版白皮书:《Filecoin: A Decentralized Storage Network》。
  • 2017年8月-9月,Filecoin发布了SAFT协议,开始在Coinlist上发起众筹,吸引来自50个国家的2100+投资人参与,成功募集2.57亿美金,并承诺于2022年之前完成此项目。
  • 2018年8月,Filecoin在Lab Day技术日,发布了Demo和测试网络模拟器演示,并向大众开放Github之上的filecoin-project organization。
  • 2019年2月14日,filecoin-project organization开源了核心源码库:go-filecoin,开启全民公测阶段
  • 未来,更多期待...

第一章 搭建Filecoin测试节点

本章我们将一步一步,尝试在自己的macOS和Linux服务器上搭建Filecoin测试节点,小编的实战操作系统环境如下:

Darwin daijialedeMBP.lan 17.4.0 Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64 x86_64

1.1 准备环境依赖

在安装和配置go-filecoin的测试节点之前,需要做的准备工作比较繁多,相对复杂,因为小编机器采用的是macOS,将使用homebrew包管理器来安装语言环境。

1.1.1 golang安装

为啥安装就不解释了...


# 需要安装大于v1.11.2版本的golangbrew install gogo version go1.11.2 darwin/amd64

设置GOPATH,由于小编采用的是zsh,而非macOS自带的bash,所以环境变量设置在.zshrc中:


vim ~/.zshrc

编辑.zshrc,添加如下图所示内容:

记得重启终端,新的环境变量GOPATH才会生效

1.1.2 rust安装

Filecoin的复制证明工程实现,基本都是使用rust编写的,为此,我们需要安装rust环境:


# 需要安装大于v1.31.0版本的rust/Cargobrew install rustcrustc -V
rustc 1.32.0cargo -V
cargo 1.32.0

1.1.3 pkg-config安装

处理编译go-filecoin产生的linker flags

brew install pkg-config

1.2 安装配置go-filecoin

这里,将介绍两种release安装包的获得方式,一种是通过源码进行自编译,另一种是下载官方发布的release安装包,两种方式各有利弊,小编都实测了一下。

1.2.1 自编译release安装包

可以重构go-filecoin相关源码,定制自己专属的go-filecoin binary release包,方便大伙们来炫技、PR、以及装B。

  • 好处:可自定义的源码编译环节。
  • 坏处:编译准备环节比较复杂,需要较强的Debug和运维能力,同时编译耗时长,对机器CPU性能要求更高。

下载go-filecoin源码仓库

mkdir -p ${GOPATH}/src/github.com/filecoin-projectgit clone git@github.com:filecoin-project/go-filecoin.git ${GOPATH}/src/github.com/filecoin-project/go-filecoin

熟悉go语言的朋友肯定不会陌生,源码路径习惯统一维护在${GOPATH}的src下,协议实验室也是提倡大家遵守这样的开发规范。

检查并更新gcc/Clang版本

go-filecoin在构建时需要引用到cgo-compatible rust-proofs library 证明依赖,因此需要c编译器支持,比较常见的c编译器工具有:gcc/clang,下面分别介绍两个工具的配置:

Clang

macOS用户如果安装过xcode,默认应该是高版本的clang配置,小编机器的Clang配置如下:

如图所示,Clang-902.0.39.1版本,是符合接下来的编译需求的。

gcc

gcc需要v7.4.0的高版本支持,以及指定特殊系统变量$CC

brew install gcc-7export CC=gcc-7

安装gx包管理工具

gx需要单独介绍一下,这是一个很有意思的golang包管理工具,其管理的所有依赖库都存储于IPFS网络之中,由协议实验室的核心工程师whyrusleeping所创造,并灵活运用于协议实验室的各个代码库之中,而go-filecoin的依赖安装也离不开gx:

go get -u github.com/whyrusleeping/gxgx version

设置了GOPATH,gx是能被识别为全局环境变量的,否则无法进行后续依赖安装。

安装依赖并编译源码

cd ${GOPATH}/src/github.com/filecoin-project/go-filecoinFILECOIN_USE_PRECOMPILED_RUST_PROOFS=true go run ./build/*.go deps

提示:此过程比较漫长,小编机器跑了44分钟多,且CPU过热导致风扇不停,大家可以看一下自己机器的情况....

构建、安装、测试自编译包

洗了个澡、泡了杯茶,刷了会抖音...

45分钟过去了:

嗯...终于看到了安装并编译好的半成品...

别急,release成品就快了:

# 构建release包
go run ./build/*.go build# 安装go-filecoin至${GOPATH}/bin目录下
go run ./build/*.go install# 单元测试
go run ./build/*.go test

1.2.2 获取官方release安装包

如上图所示,可以在https://github.com/filecoin-project/go-filecoin/releases中直接下载官方于2019年2月11日发布的0.0.1版本,将安装包解压至{$gopath}/bin目录下。

  • 好处:绕过了复杂和漫长的源码编译环节。
  • 坏处:由于官方代码仓库在频繁更新,无法获取最新的代码包,实时性滞后。

PS:好奇官方为啥不配置个自动化持续集成...我也是无语了

1.3 验证安装

经过1.2节操作后,全局运行go-filecoin -help,出现如下图菜单栏,说明节点已经成功安装。

1.4 初始化节点

测试网络有多种类型:

  • devnet-user 针对普通用户
  • devnet-nightly 针对开发者用户

我们在初始化的时候,可以按照需求,指定flag:

go-filecoin init --devnet-user --genesisfile=http://user.kittyhawk.wtf:8020/genesis.car

1.5 运行Filecoin节点

如下图所示,完成初始化操作后,即可正式启动并运行我们的Filecoin测试节点了:

go-filecoin daemon

Filecoin发现节点的过程是遵循着gossip协议,逐渐向外发散,我们可以通过go-filecoin swarm peers 来查看所连接对等方的信息和过程。

PS: 存在一些网络连接的错误日志,看来NAT的问题依然存在,测试网并未在libp2p上针对多层NAT进行方案解决升级。

1.6 为节点定义专属昵称

与IPFS不一样,Filecoin考虑到了以Qm..开头的冗长NodeID并不好记忆,这里加了一些比较人性化的设计,即,可以为自己的节点创建专属昵称(nickname),不过仅限字符串:

#设置
go-filecoin config heartbeat.nickname "jialesoho"#核对
go-filecoin config heartbeat.nickname

1.7 节点与网络的可视化监控

设置节点心跳配置,与Filecoin网络监控建立连接:

go-filecoin config heartbeat.beatTarget "/dns4/stats-infra.kittyhawk.wtf/tcp/8080/ipfs/QmUWmZnpZb6xFryNDeNU7KcJ1Af5oHy7fB9npU67sseEjR"

如下图所示,登录可视化控制台,https://stats.kittyhawk.wtf/,可查看Filecoin测试网(devnet)状态以及个人节点信息:

如图所示,刚刚我们自定义命名的Filecoin节点——jialesoho,已经被点亮在Filecoin的全网可视化监控面板中,除此之外,可视化控制台还有许多全网的交易数据,吞吐量,区块信息可供我们查阅和分析...

至此,我们应该可以通过《【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点》的学习,顺利搭建并测试自己的Filecoin节点了,期望帮正在电脑前研究Filecoin源码仓库的你,少走弯路!

下一章,我们将介绍《【Filecoin源码仓库全解析】第二章:如何创建个人钱包,获取FIL Mock代币》

参考文献:

  • go-filecoin | github

本系列文章赞助合作招募:

本系列文章预计10+篇,欢迎感兴趣的朋友参与,同时将开放赞助渠道,你们的赞助和打赏是支持我业余时间持续写作的动力,我也将尽自己所能,最大化地为阅读者和相关创业公司品牌带来帮助和权益, 具体如下:

品牌和赞助商所享受权益

  • 文尾品牌Logo展示
  • 一条品牌的推荐语
  • 公众号文章转载权限
  • 为平衡用户体验,每篇仅限1家
  • 个人知乎、公众号、简书、头条号等多渠道投放

参与方式

私信我即可,联系方式已在上方联系读者处给出。

示例

星鉴网 是一家专注于IPFS生态的垂直媒体,集信息传播,技术推广,应用孵化于一身;感谢星鉴网(ipfsfirst.com)对嘉乐SOHO原创内容的支持。

联系作者:

深夜写作,不免有不足之处,欢迎指正和更多讨论,可私信微信公众号:jialesoho,或者加我微信:daijiale6239,如果觉得对您有帮助,可以帮点击好看推广打赏支持噢,感激不尽!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DNS 代理?Pipy:这我也可以

Pipy 是个可编程代理,曾经我们做过 TCP/HTTP 代理、MQTT 代理、Dubbo 代理、Redis 代理、Thrift 代理。前几天有人问 DNS[1] 的代理能不能做?当然可以,而且 DNS 代理已经应用在 跨集群流量调度 中,文末经对此进行简单地介绍。阅读…

如何在Windows中快速轻松地将文件发送到SkyDrive

We have already shown you how you can share external folders with your SkyDrive, but what if you actually want to copy a file or folder into your SkyDrive folder? Of course copying and pasting is nowhere near geeky enough, so here’s how to add a SkyDrive…

windows删除桌面ie_从Windows 8“开始”屏幕启动IE的桌面版本

windows删除桌面ieThere are two versions of Internet Explorer in Windows 8, one you can only launch from the Start Screen and the Desktop version which you can only launch from the Desktop. Lets look at how we can launch the Desktop version from the Start S…

.NET Conf China 2022 圆满落幕,明年再见!

时光飞快,还记得本月的第一个周末吗?12月3日-12月4日,相信对于 .NET 开发者来说一定记忆犹新!.NET Conf China 2022 于12月4日圆满落幕。八方助力共谱大会盛宴.NET Conf China 2022 是一个社区性质的技术峰会,本次大会…

马哥linux高薪中级-DNS

第一章 简介一、DNSdomain name server,用来将计算机名称或者域名解析成ip地址的服务协议。用户在使用域名访问时会先通过DNS服务请求域名对应的ip地址,然后缓存下来,然后才通过ip地址进行通信。最初域名解析是通过HOSTS文件来静态绑定的。DN…

愚蠢的怪胎技巧:通过命令行管理SkyDrive

Originally launched as an April Fools prank by the Microsoft SkyDrive team, SkyCMD turned out to be a really geeky way to manage files and folders on your SkyDrive from the command line. Lets take a quick look. SkyCMD最初是由Microsoft SkyDrive团队以愚人节恶…

关于vue父子组件之间事件触发及数据传递问题

父组件:1,引入子组件2,ref 3,需要更新数据操作的地方 子组件:1,定义同名事件,拿到数据执行相关操作

.NET Core如何通过认证机制访问Kafka?

【.NET Core】| 总结/Edison Zhou大家好,我是Edison。最近有一个ASP.NET Core使用认证机制访问Kafka的需求,加之我们又使用了CAP这个开源项目使用的Kafka,于是网上寻找了一番发现对应资料太少,于是调查了一番,做了如下…

JQuery框架2.位置属性|筛选方法|事件

1、位置属性 jquery的css position获取匹配元素相对父元素的偏移位置;offset获取匹配元素在当前视口的相对偏移,返回的对象包含两个整型属性:top 和 left $("p").offset() $(div).offset().top $("p").offset().left scrollTop获取匹…

jenkins没安装git报错

Jenkins新建项目中源码管理使用Git时遇到如下问题: 在安装jenkins服务器上查看一下git版本,可能没有安装git 也可能是git版本太低 [rootlocalhost nnnnn]# git --version git version 1.8.3.1 yum安装的版本太低了 打开Jenkins的 主页面 > 系统管理 …

mac 不能连接wi-fi_如何在Mac OS X中查看当前的Wi-Fi连接速度

mac 不能连接wi-fiEver since I’ve been using my new MacBook Air, I’ve been befuddled by how to do some of the simplest tasks in Mac OS X that I would normally do from my Windows laptop—like show the connection speed for the current Wi-Fi network. So am I…

User Stories - 最佳实践 (Best Practices)

在转向敏捷之后,很多团队开始使用“用户故事”一词。用户故事是一种简单而优雅的技术,可以收集客户需求。然而,它需要一定的理解和实践才能用User Stories构建出色的软件。 让我们仔细看看用户故事是什么以及如何使用这种技术取得成功。 什么…

聊一聊promise的前世今生

promise的概念已经出现很久了,浏览器、nodejs都已经全部实现promise了。现在来聊,是不是有点过时了? 确实,如果不扯淡,这篇随笔根本不会有太多内容。所以,我就尽可能的,多扯一扯,聊一…

chromebook刷机_如何在Chromebook上切换(或离开)Canary频道

chromebook刷机Just like Chrome, Google offers multiple channels of the Chrome OS operating system. In addition to the standard Stable, Beta, and Developer channels you can choose from on the About page, there’s a special bleeding-edge Canary channel. The …

C++--day05

目录: 1. C的提高 1-131P 时间七天 2. C的基础 132-286P 时间八天 3. C的提高 287-378P 时间五天 4. C/C的数据结构 379-482P 时间五天 5. C/C的设计模式基础 483-540P 时间三天 视频资料:https://www.bilibili.com/video/av27904891?fromsearch&seid108915144…

libreoffice_如何更改您在LibreOffice中可以撤消的操作数

libreofficeIn LibreOffice programs, you can undo one action after another…to a point. The default number of actions you can undo is 100, but that number is easy to change. 在LibreOffice程序中,您可以撤消一个动作,直到某个点。 您可以撤消…

远程连接服务器出现身份验证错误 要求的函数不受支持

来源:https://www.cnblogs.com/lindajia/p/9021082.html 以往发布程序到服务器都没问题。今天远程桌面连接到服务器,突然出现了异常!异常信息为: 在网上看到有多种解决方案:发现有种修改注册表的方式很简单。 详细步骤…

CDH集群安装配置(五)- Cloudera Manager Server

在线安装 sudo yum install cloudera-manager-daemons cloudera-manager-server 离线安装 资源下载地址 https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/ 上次下面资源包到cdh1节点 cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm cloudera-manager-s…

c++简单程序设计-5

编程实验部分1.vector3.cpp #include <iostream> #include <vector> #include <string> using namespace std;// 函数声明 void output1(vector<string> &); void output2(vector<string> &); int main() {vector<string>like…

关于JavaScript的编译原理

引擎&#xff1a;负责整个js程序的编译和执行过程编译器&#xff1a;负责语法分析和代码生成作用域&#xff1a;收集和维护一系列查询&#xff08;由所有声明的标识符组成&#xff09; 【例子&#xff1a;声明一个变量并赋值 var a value&#xff1b;】 Step1.编译器对该程序段…