Go Ethereum 项目是美图技术团队在以太坊上实现的 DPoS 算法,是以太坊协议的 Go 语言实现,目前尚处于实验阶段。
查看官方的实现版本>>>https://www.oschina.net/p/go-ethereum
基于 Ethereum(1.7.3版本) 实现 DPoS 共识算法
以太坊当前代码里面已经包含了几种共识算法的实现:
PoW 在主网使用
PoW
FakePow 在单元测试使用
FakePow
PoA(Proof of Authority) 在测试网络中使用
PoA(Proof of Authority)
为了在代码中实现多种共识算法,以太坊抽象了一套共识算法接口,实现不同的共识算法只要实现几个接口即可。另外由于 DPoS 为了避免每次选举都从创世块开始回放历史数据,增加了几个全局状态树用来记录选举和投票的状态, 并把树对应的 root 存储到块头,其中包括:
EpochTrie 记录每个周期的验证人列表
VoteTrie 记录投票人对应验证人
CandidateTrie 记录候选人列表
DelegateTrie 记录验证人以及对应投票人的列表
MintCntTrie 记录验证人在周期内的出块数目