飞行的蜗牛

vuePress-theme-reco 极客学长    2013 - 2025
飞行的蜗牛 飞行的蜗牛

Choose mode

  • dark
  • auto
  • light
首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
author-avatar

极客学长

154

文章

151

标签

首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
  • Lotus 私钥安全防护

    • 硬件环境
      • 1. 机器配置
      • 2. 网络配置
    • 编译源码
      • 启动 daemon
        • 使用 lotus-shed

        Lotus 私钥安全防护

        vuePress-theme-reco 极客学长    2013 - 2025

        Lotus 私钥安全防护


        极客学长 2022-03-29 0 lotus-shed

        犯罪图鉴

        因为你心里早就预设了答案,所以别人说什么都是不对的。

        目前 lotus 运维都是采用远程运维的方式,机器放在远程机房。那么私钥的安全性就取决于下面几个因素:

        1. 机房人员不作恶,如果机房人员想要导出你的私钥你几乎是一点办法都没有。
        2. 集群运维人员。
        3. 私钥在线上-线下或者人与人之间传递。
        4. 黑客攻击服务器。

        关于私钥的重要性,我在之前的文章 《Lotus 私钥安全管理和数据为先的 FIP 探讨》 有详细的阐述。 为了避免 owner 私钥泄露带来的灾难,我们强烈建议运维人员运用拔插的方式使用 owner 私钥:用完即删除,再用再导入。

        然而,频繁地在线上 daemon 服务器上导入和删除 owner 私钥,确实有些繁琐,这很考验运维人员的专业素质。 而且运维人员跟老板之间的信任问题,在我看来目前几乎无解的。

        这里我们提供一种简单的思路:集群的所有者(这里我们称之为老板)在一个相对安全可控环境里(如自己家里或者办公室)运行一个 daemon 节点,凡是需要使用 Owner 私钥的操作,都由老板亲自操作。

        使用场景

        1. 在本地创建好 Miner 账号,然后交付给第三方运维,避免 owner 私钥传递。
        2. 在本地执行其他需要 owner 私钥的操作,如提现,终止错误扇区等,自己动手,安全可靠

        警告

        即使是在本地操作,我们也建议你养成一个好习惯:先确认备份好 Owner 私钥,每次用完之后及时删除,需要用的时候再导入。 私钥的备份和删除请参考 钱包私钥的备份和删除

        # 硬件环境

        # 1. 机器配置

        准备一台机家用台式机即可,daemon 和 Miner 都跑在这台机器上,下面给出一个样机配置:

        配件 型号 数量
        CPU AMD Ryzen 3950X 1
        RAM 海盗船 32GiB 4
        系统盘 120G SSD 1
        数据盘 4TiB M.2 磁盘 1
        主板 华硕 GAMING B550M-PLUS 1
        机箱 游戏机箱 1
        电源 长城 500W 以上 1

        上述机器装好 Ubuntu-18.04 LTS-Server 版系统,将 4TiB 的 M.2 SSD 磁盘挂载到 /data 备用。

        # 2. 网络配置

        1. 不需要公网 IP,如果网络已经配备公网 IP,请关闭除 P2P 接口以外的所有外网端口。
        2. 关闭 SSH 连接服务。

        当然考虑到疫情可能需要远程办公,建议你在办公室和家里各备一台。如果你对安全级别没有那么高,那么你也可以打开 SSH 服务,但是要注意加强 SSH 连接安全,比如只能使用私钥连接,关闭密码登录等。

        # 编译源码

        1. 安装 lotus 依赖

          sudo apt install make gcc git bzr jq pkg-config mesa-opencl-icd ocl-icd-opencl-dev libhwloc-dev -y
          
        2. 安装 golang, 你需要安装 Go 1.16.4 或更高版本:

          wget -c https://golang.org/dl/go1.16.4.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local
          

          然后将 /usr/local/go/bin 添加到环境路径中:

          echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc && source ~/.bashrc
          
        3. 克隆仓库到本地,并切换到最新的 REALSE 版本:

          git clone -b offline-miner https://github.com/lionsoul2014/lotus.git
          git check v1.15.0 # tag for a release
          
        4. 编译 lotus

          cd lotus
          # 这里我们只编译我们需要用的 lotus 和 lotus-shed 工具
          FFI_BUILD_FROM_SOURCE=1 make clean lotus lotus-shed
          # 编译完成之后我们加入环境路径
          cp lotus lotus-shed /usr/local/bin
          

          更多编译方法请参考 编译 lotus 源码 (opens new window)。

        # 启动 daemon

        1. 导入节点快照

          cd /data
          # 1. 下载主网最新的最小快照
          wget https://fil-chain-snapshots-fallback.s3.amazonaws.com/mainnet/minimal_finality_stateroots_latest.car -O lotus-chain.car
          # 2. 导入快照
          export LOTUS_PATH=/data/lotus
          lotus daemon --import-snapshot=lotus-chain.car --halt-after-import
          
        2. 启动节点

          export LOTUS_PATH=/data/lotus
          export GOLOG_LOG_LEVEL=error
          nohup lotus daemon > /data/daemon.log 2>&1 & 
          

          daemon 启动之后你就可导入或者创建钱包了:

          # 创建钱包
          lotus wallet new bls
          # 导入钱包
          lotus wallet import <wallet.key>
          # 导出钱包
          lotus wallet export <address>
          

        # 使用 lotus-shed

        lotus-shed 是一个非常强大的工具集合,它几乎包含了消息的构建,编码,解码,签名以及所有的跟chain,miner,market 等相关的操作。你运行 lotus-shed --help 就能列出所有功能,这里我们演示几种:1. 创建一个新的 Miner 账号:

        1. 创建一个新的 Miner 账号:

          export LOTUS_MINER_PATH=/data/miner
          
          lotus-shed miner create <sender> <owner> <worker> <sector-size>
          
          • sender: 用来发送消息(签名)的钱包地址
          • owner: Owner 钱包地址
          • worker: Worker 钱包地址
          • sector-size: 扇区大小,可选:32GiB, 64GiB

          创建成功会输出类似如下日志:

          2022-03-29T11:06:54.949+0800	INFO	lotus-shed	lotus-shed/miner.go:243	Pushed CreateMiner message: bafy2bzacedsgqhybdi6hoxuoaukshgcftpm5bctvmsgoqoqfixot5kubw6e7w
          2022-03-29T11:06:54.949+0800	INFO	lotus-shed	lotus-shed/miner.go:244	Waiting for confirmation
          2022-03-29T11:07:09.950+0800	INFO	lotus-shed	lotus-shed/miner.go:260	New miners address is: t01001 (t23wyhealysqoer27xavmitzfqollpcvqfy7fd3fq)
          
        2. 提现 Miner 收益到 Owner 钱包:




           


          # usage
          lotus-shed actor withdraw --actor=<miner-addr> <amount>
          # e.g
          lotus-shed actor withdraw --actor=t01000 10
          Requested rewards withdrawal in message bafy2bzacebnmtjdrtlu3oa7id4cv4wsasm4qpcjcpdmqbaetlkvyxhkwooqiu
          
        3. 终止错误扇区




           


          # usage
          lotus-shed sectors terminate --actor=<miner-addr> --really-do-it <sector-number>
          # e.g
          lotus-shed sectors terminate --actor=t01000 --really-do-it 100
          sent termination message: bafy2bzacebdsaqigefl7wl7l3j2dr3pxvuvuvpxtqrd6o5vkp5repw2zopdqk
          

        本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01

        Lotus snap-deal 功能体验报告 Lotus 扇区续期详解