【Lotus项目源代码导读】项目简介

前言
Filecoin 可谓是当前区块链的一个明星项目,首先在拼爹的年代它有一个高贵的出身:协议实验室,这个名字或者有人比较陌生,但说起 IPFS 可就是鼎鼎大名了,IPFS 就是协议实验室的大儿子。而 Filecoin 就是小儿子了,再有它可谓是含着金钥匙出生的:2017 年该项目 ICO 的金额是 2.5 亿美金,在当时是最高的。
IPFS 项目源自 2014 年,他本身已经很成功项目,代码模块化程度非常高,例如 libp2p 已经在开源社区很多应用。而 Filecoin 的项目不仅重用了 IPFS 的绝大多数代码,而且开发者大多是原先开发 IPFS 的那批程序员,所以不仅技术起点高,而且团队技术力量雄厚。所以这样的项目不仅得到币/链圈的推崇,也得到技术人员的喜爱。
最早 Filecoin 的项目是 go-filecoin,但 2019 年下半年团队推出一个新的项目:lotus,这个项目后来居上,率先在 12 月 11 日启动测试网。所以可以理解这个项目是之前 go-filecoin 的重构项目,但官方目前并没有抛弃 go-filecoin 项目。本人理解其中原因是为保证区块链安全,因为多个代码实现可以避免因为仅有的代码实现的BUG而导致全网瘫痪。
项目相关链接:
  • github 代码主仓库: https://github.com/filecoin-project/lotus
  • 使用指南文档: https://docs.lotu.sh/
  • 设计规范文档: https://filecoin-project.github.io/specs
  • 测试网: https://stats.testnet.filecoin.io/
  • Slack 官方频道: https://app.slack.com/client/TEHTVS1L6/CPFTWMY7N
项目代码分支
master 为 0.2.x 版本的测试网版本,但最新代码目前是在 testnet/3 分支上,对应的区块链网络名称为 interopnet,相当于是预测试网。本文开始写时是 2020 年 4 月 23 日,使用的版本号为 ac92ad36,后续随着版本的版本,文中使用的代码也会跟随更新。
项目功能简介
Lotus 是一个分布式存储区块链项目,其目标是提供一个存储的平台和市场,一方是提供存储和检索服务的矿工,另一方普通用户通过支付数字货币 Fil 可上传存储数据,并在需要时又可获取到数据。矿工为了证明自身进行存储的事实,采用零知识证明加密技术对存储的数据进行计算并将结果广播到区块链,一方获取用户支付的 Fil,另一方面获得 Power(单位与存储的字节一样),当 Power 到达一定程度还可以有机会参与到区块链的打包,从而再获取得区块打包的奖励。
代码基本情况
上层代码开发语言为 Golang,版本是 1.13 或以上。底层涉及到零知识证明等算法相关的逻辑采用 Rust 语言,toolchain 版本为 nightly-2020-03-19。底层库先是编译成静态库,上层 Golang 通过 cgo 调用底层静态库。
底层的代码仓库叫 filecoin-ffi,URL:
https://github.com/filecoin-project/filecoin-ffi.git,在主仓库的路径 extern/filecoin-ffi 之下。
二进制文件
代码编译后可能产生多个二进制文件,最主要有两个:lotus 和 lotus-storage-miner。lotus 为全节点,lotus-storage-miner 为矿工软件。这两个软件均是命令行方式运行。
后续
以上是 lotus 的基本介绍,后续再进 lotus 全节点 daemon 服务启动过程的源代码逻辑进行分析。
End
非常感谢您对 IPFS&Filecoin 项目的持续支持。我们很高兴继续与您一起,为人类信息建立一个强大的,去中心化和高效的基础。
FilCloud 帮你迅速了解 IPFS 领域的热点技术和应用
公众号:filcloud
张贴在未分类