区块链

tendermint源码阅读(九)

2018-11-09  本文已影响42人  印随2018

关注点:validator

一个Tendermint 节点要想要变成validator的话,有两个途径

  1. 在genesis.json中内置
  2. 创建create_validator交易

这里的关键逻辑就是把validator和delegator创建关联关系,validator获得的奖励就会发送到delegator的账户中。这个过程类似于以太坊中设置basecoin账户。

如果是想移动validator节点,只需要移动priv_validator.json文件即可,原来的节点需要删除priv_validator.json,然后重新启动就可以了。


下面是加载priv_validator.json的逻辑

github.com/tendermint/tendermint/privval/priv_validator.go

// LoadOrGenFilePV loads a FilePV from the given filePath
// or else generates a new one and saves it to the filePath.
func LoadOrGenFilePV(filePath string) *FilePV {
    var pv *FilePV
    if cmn.FileExists(filePath) {
        pv = LoadFilePV(filePath)
    } else {
        pv = GenFilePV(filePath)
        pv.Save()
    }
    return pv
}

上面可以看出,如果配置文件不存在的话,就自动创建一个。这就说明配置文件priv_validator.json我们可以随时删除,tendermint就会重新生成一个新的配置文件。

注意: 在移动priv-validator.json的时候,务必删除文件里名称为last_*的所有字段,因为这几个字段保存了和链相关的状态信息。

上一篇 下一篇

猜你喜欢

热点阅读