Filecoin 结构之 TipSet 与 ExpTipSet

yufei       4 年, 3 月 前       892

Filecoin 比起之前的 BTC 和 ETH 提出了一个新概念,这个新概念就是 TipSet。 我们要怎么理解这个概念呢?

简单的理解,你可以看成是多个 块(block) 的集合,也就是一个 TipSet 可以有多个唯一的 块(block)

打个比方,我们家里洗菜的时候,有时候爸妈会同时洗一个菜,洗完了然后再洗洗一个菜,如果把每种菜里的每棵菜堪称是一个事物 transaction ,那么每种菜就是一个块 block。 这是 BTC 和 ETH 时代 blocktransaction 之间的关系

但在 Filecoin 里,爸妈(也就是矿工)就不这么做了,它们可能是闹别扭了,洗菜之前先各自领了几种菜,然后各自洗菜。我们把每次领的动作看成是一个 TipSet.

解释的有点牵强,以后有空回来改吧

TipSet

TipSet 在 lotus/chain/types/tipset.go 文件中定义

type TipSet struct {
    cids   []cid.Cid         // 每个块的 CID 的集合
    blks   []*BlockHeader    // 多个块
    height abi.ChainEpoch    // 最低块的块高
}

看到这个结构体,你是不是很疑惑,为啥属性都是小写的,这样就没法赋值和序列化了。

哈哈,其实,这个结构体是对内使用的。

TipSet 的结构中可以看出,TipSet 就是把多个块,有序的块放到了一起而已。

  1. cidsblks 属性中每一个 BlockHeader.Cid 的集合
  2. heightblks 属性中 BlockHeader.Height 的最小值

ExpTipSet

当然了,你如果翻看源码,可以发现还有一个一模一样的结构 ExpTipSet

type ExpTipSet struct {
    Cids   []cid.Cid
    Blocks []*BlockHeader
    Height abi.ChainEpoch
}

Exp 其实就是 Export 的简写,也就是这个结构是对外用的。

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.