Filecoin - winningPoSt逻辑介绍
发布日期:2021-05-19 18:16:48 浏览次数:12 分类:精选文章

本文共 1815 字,大约阅读时间需要 6 分钟。

Lotus的PoSt概述:winningPoSt与windowPoSt的实现细节

PoSt的背景与应用

在Lotus网络中,PoSt(Proof of Space)是验证节点贡献资源以参与网络共识的过程。Lotus的PoSt分为两种形式:winningPoSt和windowPoSt。以下将详细介绍winningPoSt的实现细节及其背后的逻辑。

winningPoSt的定义

winningPoSt是节点参与PoSt提案时需提交的PoSt类型。名称来源于其在成功获取出块权时的应用场景。依据Lotus协议,节点需在指定sector中抽查66个叶子节点的Merkle路径,并验证其正确性。

Sector抽查过程

Sector选择

  • 随机抽查:从总可用sector中随机选择一个sector。该过程通过计算节点ID和特定随机值的哈希值来实现。
  • Leaf挑战:在所选sector中,计算叶子节点的索引。
  • Leaf抽查

    在选择sector后,需对其Merkle树进行叶子节点抽查。具体实现包括:

  • 随机挑战索引:对Merkle树中的叶子节点随机挑战。
  • 路径验证:验证挑战的叶子节点是否存在正确的路径到Merkle树的根。
  • 代码逻辑分析

    Go代码中的实现

    func (m *Miner) mineOne(ctx context.Context, addr address.Address, base *MiningBase) (*types.BlockMsg, error) {    mbi, err := m.api.MinerGetBaseInfo(ctx, addr, round, base.TipSet.Key())    rand, err := m.api.ChainGetRandomness(ctx, base.TipSet.Key(), crypto.DomainSeparationTag_WinningPoStChallengeSeed, base.TipSet.Height()+base.NullRounds, nil)    prand := abi.PoStRandomness(rand)    postProof, err := m.epp.ComputeProof(ctx, mbi.Sectors, prand)    return postProof, err}

    代码中MinerGetBaseInfo获取基本信息,包括需要抽查的sector信息;ComputeProof计算winningPoSt证明。尽管代码到Rust的fil-proofs层面,但核心逻辑具备清晰的步骤。

    Rust实现的接口

    代码逻辑跨越文件和文件,将Sector抽查与randomness处理整合。图片显示核心接口展示了 midfielder 的逻辑结构,包括sector和Merklize相关函数。

    Sector挑战生成

    代码逻辑详解

  • 获取Sector索引
  • let mut hasher = Sha256::new();hasher.input(AsRef::&[u8]::as_ref(&prover_id));hasher.input(AsRef::&[u8]::as_ref(&randomness));hasher.input(&n.to_le_bytes()[..]);let hash = hasher.result();let sector_challenge = LittleEndian::read_u64(&hash.as_ref()[..8]);let sector_index = sector_challenge % sector_set_len;

    该部分生成哈希值,计算后进行模运算,确定被抽中的Sector编号。

    1. 抽取叶子索引:类似地,叶子抽查通过哈希和模运算获取具体索引。
    2. zeroknowledge circuit的实现

      核心逻辑位于circuit.rs,通过Synthetize函数验证Merkle路径的正确性。代码通过num类型表示数值,构建计算约束以确保数据有效性。

      总结

      winningPoSt是Lotus节点获取出块权的关键PoSt类型。其核心逻辑包括对sector的随机抽查、叶子抽查,并通过零知识证明验证路径的正确性。理解这部分机制有助于深入掌握Lotus网络的共识机制。

    上一篇:Filecoin - 一个越界Bug引发升级
    下一篇:Filecoin - 深入理解NSE算法

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年04月15日 20时28分50秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章