(这里lotus所有的内容,基本都是从官方的英文文档翻译过来的)
目前,lotus未上线,处于测试阶段,有开放测试网Testnet
Lotus是用Go编写的Filecoin分布式存储网络(Filecoin Distributed Storage Network) 的一个实现。 它被设计成模块化的,并且可以与Filecoin协议的任何其他实现进行互操作。 更多关于Lotus的信息这里。
Lotus可以在大多数的 Linux(Arch,Ubuntu,Fedora) 和MacOS 上构建和运行还有,具有至少8GiB RAM的系统。
Windows尚不受支持。
(这里用Ubuntu)
下面的设置是密封Lotus上32个GiB扇区的最小示例:
如果您只有128GiB的RAM,那么在SSD上启用256GB的NVMe swap将有助于避免挖掘时出现内存不足问题。
GPU是获得block rewards(区块奖励)的必备条件。这里有一些已经被证实能够足够快地生成SNARKs来成功地在Lotus Testnet上挖掘块。
需要安装以下依赖:
1、安装go
2、安装其它依赖
sudo apt install mesa-opencl-icd ocl-icd-opencl-dev -qy
sudo apt install pkg-config mesa-opencl-icd ocl-icd-opencl-dev -y
sudo apt install gcc git bzr jq curl tmux nethogs sysstat -qy
3、安装rustup
curl https://sh.rustup.rs -sSf | sh
安装完,想在终端立即生效:
source $HOME/.cargo/env
git clone https://github.com/filecoin-project/lotus.git
cd lotus/
make clean && make all
sudo make install
如果你无法连接外国网络,可以在系统的环境变量导入以下内容:
export IPFS_GATEWAY="https://proof-parameters.s3.cn-south-1.jdcloud-oss.com/ipfs/"
启动守护进程
lotus daemon
在另一个终端窗口中,检查与peers的连接:
lotus net peers | wc -l
额外说明:
守护进程启动后,会默认生成~/.lotus文件。(在进行同步工作中)
运行下面的命令查看链同步进度。要查看当前链高度:
lotus sync wait
这一步需要几个小时到几天的时间。(取决于链的高度)
访问network stats page,可以查看要查看最新的网络活动,包括 chain block height(链高度)、block height(区块高度)、 blocktime(区块时间)、total network power(总网络功率)、最大的block producer miner(区块生产商miner)
请使用以下命令确保钱包中至少存在一个BLS地址(以t3
开头):
lotus wallet list
如果您没有bls钱包地址,请创建一个新的bls钱包地址:
lotus wallet new bls
DO NOT REFRESH THE PAGE. THIS OPERATION CAN TAKE SOME TIME.(不要刷新页面。这个操作可能需要一些时间。)
初始化矿工
lotus-storage-miner init --actor=ACTOR_VALUE_RECEIVED --owner=OWNER_VALUE_RECEIVED
例子
lotus-storage-miner init --actor=t01424 --owner=t3spmep2xxsl33o4gxk7yjxcobyohzgj3vejzerug25iinbznpzob6a6kexcbeix73th6vjtzfq7boakfdtd6a
额外说明:
初始化完后,会默认生成~/.lotusstorage文件
默认路径可以通过LOTUS_STORAGE_PATH改
lotus-storage-miner run
获取有关矿工的信息:
lotus-storage-miner info
生成一个块:
lotus-storage-miner sectors pledge
Lotus Seal Worker是一个额外的进程,可以从Lotus Storage Miner卸载繁重的处理任务。它可以与您的lotus-storage-miner
在同一台计算机上运行,也可以在另一台通过快速网络通信的计算机上运行。
lotus-seal-worker run --adress 127.0.0.1:2346
要使用完全独立的计算机执行密封任务,您需要在单独的计算机上运行 lotus-seal-worker
,该计算机通过局域网连接到您的lotus Storage Miner。
首先,您需要确保可以通过网络访问lotus-storage-miner
的API。
为此,打开~/.lotusstorage/config.toml
(或者如果手动设置LOTUS_STORAGE_PATH
,请在该目录下查找)并查找API字段。
Default config:
[API]
ListenAddress = "/ip4/127.0.0.1/tcp/2345/http"
RemoteListenAddress = "127.0.0.1:2345"
要通过局域网访问节点,需要确定局域网上的计算机IP,并将文件中的 127.0.0.1
更改为该地址。
一个更宽松、更不安全的选项是将其更改为0.0.0.0
。这将允许任何可以连接到该端口上的计算机的人访问API. 他们仍然需要一个身份验证令牌。
RemoteListenAddress
必须设置为网络上其他节点可以访问的地址
接下来,你需要create an authentication token. 所有lotusapi都需要身份验证令牌,以确保您的进程对试图向其发出未经身份验证的请求的攻击者同样安全。
lotus-storage-miner auth create-token --perm admin
在将运行lotus-seal-worker
的计算机上,将STORAGE_API_INFO
环境变量设置为TOKEN:STORAGE_NODE_MULTIADDR
. 其中,TOKEN
是我们在上面创建的令牌,STORAGE_NODE_MULTIADDR
是在中设置的Lotus STORAGE MinerAPI的multiaddr
在config.toml
.
设置后,运行:
lotus-seal-worker run
要检查Lotus Seal Worker是否已连接到Lotus Storage Miner上,请运行lotus-storage-miner workers list
,并检查远程工作者计数是否已增加。
why@computer ~/lotus> lotus-storage-miner workers list
Worker 0, host computer
CPU: [ ] 0 core(s) in use
RAM: [|||||||||||||||||| ] 28% 18.1 GiB/62.7 GiB
VMEM: [|||||||||||||||||| ] 28% 18.1 GiB/62.7 GiB
GPU: GeForce RTX 2080, not used
Worker 1, host othercomputer
CPU: [ ] 0 core(s) in use
RAM: [|||||||||||||| ] 23% 14 Giexport WORKER_PATH="/sdd_cache"B/62.7 GiB
VMEM: [|||||||||||||| ] 23% 14 GiB/62.7 GiB
GPU: GeForce RTX 2080, not used
以下是如何在Lotus Testnet上存储数据的说明。
在本地添加文件允许您在Lotus Testnet上进行miner交易。
lotus client import ./your-example-file.txt
成功后,此命令将返回一个Data CID。
Data CID: CID是一种用于在分布式信息系统中引用内容的格式,它是一种存储信息的方式,因此可以根据其内容而不是其位置来检索它。
DataCID专门用于表示Filecoin分布式存储网络中存储的文件。
按CID
, name
, size
(字节)和status
查看文件列表的命令:
lotus client local
输出示例:
bafkreierupr5ioxn4obwly4i2a5cd2rwxqi6kwmcyyylifxjsmos7hrgpe Development/sample-1.txt 2332 ok
bafkreieuk7h4zs5alzpdyhlph4lxkefowvwdho3a3pml6j7dam5mipzaii Development/sample-2.txt 30618 ok
获取可以存储数据的所有矿工的列表:
lotus state list-miners
获取要与之存储数据的矿工的要求:
lotus client query-ask
使用miner存储 Data CID:
lotus client deal
检查交易状态:
lotus client list-deals
duration
以块的形式表示,它表示矿工将托管您的文件的时间。每个方块代表25秒。成功后,此命令将返回Deal CID。
存储矿工将需要seal(密封)文件才能检索。如果Lotus Storage Miner没有在设计用于密封的机器上运行,则该过程将需要很长时间。
额外说明:
1、lotus client import 和lotus client local返回的文件CID不同。这里我用两个都可以上传,但不知道有什么区别。
2、lotus client query-ask 大部分矿工都不通的,基本要写脚本去循环ask一遍,看哪一个能通。