<aside> ⚠️ 这是一个针对 Conflux PoS Finality 的介绍性文件,没有实操的细节。它在于帮助读者大体了解 PoS,是阅读技术细节文档的必要条件。
</aside>
在一个 PoW 链生态的早期,在全网算力较低的时候,可能会出现 51% 攻击的问题。特别是公有链的发展催生了一些算力租借平台的时候。在去年,以太经典、Grin 和 Verge 都曾出现了 51% 攻击的问题。
为了应对 51% 攻击可能带来的威胁,Conflux 将引入一条独立运行的 PoS 链。PoS 链的共识参与者将定期对树图结构 pivot 区块签名。拥有足够多签名的 pivot 区块应当被所有 PoW 矿工选进 pivot 链,哪怕它的兄弟区块权重更大。简单来说,PoS 链指定了一个 pivot 区块,所有的 PoW 矿工都应该跟随。
这意味着,一旦 PoS 共识对一个 pivot 区块投票,即使 51% 攻击者尝试逆转这个区块,也不会被 PoW 节点认可。
Conflux 要求 PoS 共识克制地使用“指定 pivot 区块”的权力。一个区块首先要根据 PoW 的规则确认满几分钟,诚实的 PoS 节点才会对它进行签名。这意味着,树图结构的区块排序和确认依然由 PoW 的矿工完成。
<aside> ℹ️ PoS 链只是应对 51% 攻击用的。所以除了 pivot block 投票,投票委员会的选举等基本功能外,不包含通用区块链的功能,如转账、合约执行等。
</aside>
<aside>
ℹ️ PoS 链的功能内置在 Conflux 节点里面,对外还是 conflux-rust
一个程序。
</aside>
<aside> ℹ️ 本文档里,Conflux 链指目前运行的区块链,PoS 链指新引入的链。
</aside>
<aside> ℹ️ PoS 区块大约一分钟一个,以下说的所有时间,都是对应的区块数。
</aside>
一般来说,区块链上的账户模型都是:私钥产生公钥,公钥产生地址。PoS 链上的账户类似,但有两个私钥,称为BLS私钥和VRF私钥。对应BLS公钥和VRF公钥。两个公钥计算哈希得到 PoS 的地址,目前是 256 bit.
PoS 账户的主要职责是维护 Conflux 的共识协议。每一个 PoS 账户应当运行一个独立的 Conflux 节点。因此 Conflux 核心代码 conflux-rust
内置了 PoS 账户的钱包功能,包括
由于钱包是全节点实现的,所以和钱包的交互方式非常原始,基本上就是手动拷贝文件什么的。