美图的以太坊代码释义

2019-01-16 16:47:08 +08:00
 faker1

看了下共识使用了 dpos,但是我不太懂,选择打包者这块的代码是什么意思? 代码如下, 知道或者看懂的同学,请指导下(谢谢). 源码位置: https://github.com/meitu/go-ethereum/blob/6be4cd4b94f22b2cea34086bf0aa9752dd4ebf15/consensus/dpos/epoch_context.go#L129.

func (ec *EpochContext) lookupValidator(now int64) (validator common.Address, err error) {
    validator = common.Address{}
    offset := now % epochInterval  // 这个为什么要先这个样子做, 
    if offset%blockInterval != 0 {
        return common.Address{}, ErrInvalidMintBlockTime
    }
    offset /= blockInterval

    validators, err := ec.DposContext.GetValidators()
    if err != nil {
        return common.Address{}, err
    }
    validatorSize := len(validators)
    if validatorSize == 0 {
        return common.Address{}, errors.New("failed to lookup validator")
    }
    offset %= int64(validatorSize)
    return validators[offset], nil
}
645 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/527641

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX