Go Ethereum Meitu - 以太坊的 DPoS 算法实现


LGPL
跨平台
Java

软件简介

Go Ethereum 项目是美图技术团队在以太坊上实现的 DPoS 算法,是以太坊协议的 Go 语言实现,目前尚处于实验阶段。

查看官方的实现版本>>>https://www.oschina.net/p/go-ethereum

基于 Ethereum(1.7.3版本) 实现 DPoS 共识算法

以太坊当前代码里面已经包含了几种共识算法的实现:

  • PoW 在主网使用

  • FakePow 在单元测试使用

  • PoA(Proof of Authority) 在测试网络中使用

为了在代码中实现多种共识算法,以太坊抽象了一套共识算法接口,实现不同的共识算法只要实现几个接口即可。另外由于 DPoS
为了避免每次选举都从创世块开始回放历史数据,增加了几个全局状态树用来记录选举和投票的状态, 并把树对应的 root 存储到块头,其中包括:

  • EpochTrie 记录每个周期的验证人列表

  • VoteTrie 记录投票人对应验证人

  • CandidateTrie 记录候选人列表

  • DelegateTrie 记录验证人以及对应投票人的列表

  • MintCntTrie 记录验证人在周期内的出块数目