OSDN Git Service

a3fc8d2d0c11c2c471635fa136702d0d8812a916
[bytom/vapor.git] / docs / vapor-docs / 0.1 / core / consensus.md
1 # dpos共识
2
3 ​     在共识协议上,vapor采用了委托权益证明(DPOS)的机制。DPoS 是基于 POW 及 POS 的基础上,出现的一种新型的保障数字货币网络安全的共识算法。它既能解决 POW 在挖矿过程中产生的大量能源过耗的问题,也能避免 POS 权益分配下可能产生的“信任天平”偏颇的问题。
4
5 ## DPoS 共识机制
6
7 ​     其原理是让每一个持币者进行投票,选出一定数量的持币者代表,或理解为一定数量的代表节点,并由这些代表节点来完成交易验证和区块生产的工作。持币者可以随时通过投票更换这些代表,以维系链上系统的“长久纯洁性”,保证该协议有充分的去中心化程度。
8
9 ​     在目前区块链的实现中DPoS共识只用于账户模型, UTXO模型与DPos的结合也会有许多额外的优势,UTXO 模型是存放记录的一种方式,用于交易存储、组织及验证;DPoS 是一种共识算法,用于保证在分布式网络中参与者也可以对交易数据取得一致认识。
10
11 ## 时间戳
12
13 ​     UTXO 和 DPoS 结合的一大难点在于时间戳,DPoS 共识基于时间,会严格检查区块时间。全节点系统时间必须设置为和标准时间一样,否则共识一致性会出现问题。而 UTXO 本身也记录了时间戳的功能,但时间戳并不基于标准时间。在 LBTC 里将时间戳统一成标准时间协议,以保证区块的正常运行。当存在作恶节点或者时间不同步的区块时,出块被作为异常块处理,出块节点被作为异常节点处理
14
15 ## 数据快照
16
17 ​     在 UTXO 模型中,并不支持查询地址余额的功能,是通过全局遍历 UTXO 数据,实时计算地址余额。实时计算的工作量相当巨大,现实中不具备可行性。为了 DPoS 算法的需要,vapor中新增地址余额计算、节点注册、节点投票新功能。考虑到共识算法的高性能要求、注册节点数目的有限性,把地址余额、节点注册及投票信息保存在内存中,并把数据回写到db。通过数据库和地址余额、投票信息来链接 UTXO 记账信息和 DPoS 共识机制:
18
19 - 注册、投票的信息由vapor底层协议负责传输。
20 - 把注册、投票信息保存在内存以及db中。
21 - DPoS 共识模块查看注册、投票信息,完成共识。