【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.pswp.cn/news/280293.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280293.shtml
英文地址,請注明出處:http://en.pswp.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…

性能測試一些相關的概念

1.壓測任務需求的確認 確定好工作范圍: 首先分析壓測最容易出現瓶頸的地方,有目的的進行測試。 用戶更關心整個系統中哪個環節的性能情況也會影響工作范圍。2. 壓力測試 通過不斷加壓被測系統,直到性能指標達到飽和,這種測試能夠找…

阿里云雙11全球狂歡節 計算資源買買買

本文講的是阿里云雙11全球狂歡節 計算資源買買買【IT168資訊】除了喜歡屯奶粉和運動裝備的消費者外,創業者也能加入雙11“買買買”狂歡。11月2日,阿里云宣布加入天貓雙11全球狂歡節,全線計算資源產品在官網狂歡售賣,與創業者共同打…

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 是一個社區性質的技術峰會,本次大會…

移動端手指操控左右滑動的菜單

<!DOCTYPE html> <html lang"en"> <head> <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0"> <meta charset"UTF-8"> <title>移動端…

馬哥linux高薪中級-DNS

第一章 簡介一、DNSdomain name server&#xff0c;用來將計算機名稱或者域名解析成ip地址的服務協議。用戶在使用域名訪問時會先通過DNS服務請求域名對應的ip地址&#xff0c;然后緩存下來&#xff0c;然后才通過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父子組件之間事件觸發及數據傳遞問題

父組件&#xff1a;1&#xff0c;引入子組件2&#xff0c;ref 3&#xff0c;需要更新數據操作的地方 子組件&#xff1a;1&#xff0c;定義同名事件&#xff0c;拿到數據執行相關操作

.NET Core如何通過認證機制訪問Kafka?

【.NET Core】| 總結/Edison Zhou大家好&#xff0c;我是Edison。最近有一個ASP.NET Core使用認證機制訪問Kafka的需求&#xff0c;加之我們又使用了CAP這個開源項目使用的Kafka&#xff0c;于是網上尋找了一番發現對應資料太少&#xff0c;于是調查了一番&#xff0c;做了如下…

JQuery框架2.位置屬性|篩選方法|事件

1、位置屬性 jquery的css position獲取匹配元素相對父元素的偏移位置&#xff1b;offset獲取匹配元素在當前視口的相對偏移,返回的對象包含兩個整型屬性&#xff1a;top 和 left $("p").offset() $(div).offset().top $("p").offset().left scrollTop獲取匹…

新手學習Java必需要知道的這些基本概念!

學習好比蓋房子&#xff0c;打地基好很重要&#xff0c;房了能蓋多高關鍵看地基&#xff1b;學習同樣道理&#xff0c;基礎知識是以后學習一切技術的必要條件&#xff0c;我們在準備學習一門開發語言時&#xff0c;首先要學習它的基礎&#xff0c;不僅要會&#xff0c;更要融會…

jenkins沒安裝git報錯

Jenkins新建項目中源碼管理使用Git時遇到如下問題&#xff1a; 在安裝jenkins服務器上查看一下git版本&#xff0c;可能沒有安裝git 也可能是git版本太低 [rootlocalhost nnnnn]# git --version git version 1.8.3.1 yum安裝的版本太低了 打開Jenkins的 主頁面 > 系統管理 …

如何使用 IdGen 生成 UID

在分布式系統中&#xff0c;雪花 ID 是一種常用的唯一 ID 生成算法。它通過結合時間戳、機器碼和自增序列來生成 64 位整數 ID&#xff0c;可以保證 ID 的唯一性和順序性。在.Net 項目中&#xff0c;我們可以使用 IdGen 這個類庫來生成雪花 ID。它是一個開源的類庫&#xff0c;…

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)

在轉向敏捷之后&#xff0c;很多團隊開始使用“用戶故事”一詞。用戶故事是一種簡單而優雅的技術&#xff0c;可以收集客戶需求。然而&#xff0c;它需要一定的理解和實踐才能用User Stories構建出色的軟件。 讓我們仔細看看用戶故事是什么以及如何使用這種技術取得成功。 什么…

聊一聊promise的前世今生

promise的概念已經出現很久了&#xff0c;瀏覽器、nodejs都已經全部實現promise了。現在來聊&#xff0c;是不是有點過時了&#xff1f; 確實&#xff0c;如果不扯淡&#xff0c;這篇隨筆根本不會有太多內容。所以&#xff0c;我就盡可能的&#xff0c;多扯一扯&#xff0c;聊一…

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 …