BLS签名算法升级为我们带来了一系列重要的优势,主要体现在改善验证者地址管理和优化区块空间使用两个方面。
共识机制取消对验证者收益地址的依赖
在本次升级过程中,我们对共识机制中使用的签名算法做出了重要的修改:验证者对区块投票签名算法已从ECDSA更改为BLS。这意味着,验证者无需使用收益地址的私钥对区块进行签名,而是使用其对应的BLS私钥进行签名。而这一变化在硬分叉后体现得尤为明显:在节点的启动命令中,用户无需解锁收益地址的keystore,只需要解锁其对应的BLS keystore即可。这一改进,取消了底层共识机制对验证者私钥的依赖,不仅提高了操作的灵活性,还增强了系统的安全性。
优化区块投票数据
通过使用BLS聚合签名技术,使得我们可以将验证者的投票签名进行聚合,进而减少了每个区块中的投票数据。这一变化直接降低了每个区块的磁盘占用。
以下的比较基于有21个验证者且每个验证者的质押数量相同的场景进行(这里只讨论rei-dao硬分叉前后区块中有变化的数据):
硬分叉前
区块提案签名:65 字节
验证者投票签名:每个验证者的投票数据 65 字节,因此,21个验证者的磁盘占用范围为:65 * 21 * 2 / 3 = 910 字节(最小)至 65 * 21 = 1365 字节(最大)
硬分叉后
区块提案签名:96 字节
验证者投票数据聚合签名:96 字节
区块铸造者收益地址:20字节
验证者投票标记集合(bitArray):3 字节(最小)至4 字节(最大)
因此,当有21个验证者参与且各验证者票权相同时,硬分叉后每个区块的磁盘空间节省量可在760字节至1214字节之间。
然而,值得注意的是,在主网上,由于各验证者的票权并不相同,验证者数量变化等原因,硬分叉后每个区块的实际磁盘空间节省量可能会有所差异。
综上,BLS升级通过一系列优化提高了区块链系统的效率和可用性,给验证者和用户带来了更好的体验。