在某个虚拟子节点创建了区块提案后,它将按照数据可用性协议通知其他的虚拟子节点。数据可用性协议保证了信息能够传递至绝大多数的虚拟子节点。 共识与轮次对区块提案的共识采用异步二进制拜占庭协议(ABBA)。目前 SKALE 使用来源于 Mostefaoui et al 的 ABBA 协议的变体。 提案阶段结束后,每个收到提案 P 的绝大多数签名 S 的虚拟子节点 A 立即会在一个共识轮次 R 中对 ABBA 进行投票。协议如下: (1)对于每一轮 R,虚拟子节点会执行 N 个 ABBA 实例; (2)每个 ABBA[i] 相当于虚拟子节点 I 在区块提案中的一次投票; (3)每个 ABBA[i] 以一次「是」或「否」结束共识投票; (4) ABBA[i] 全部结束后,会有生成投票向量 v[i],它包括每次提案的「是」或「否」; (5)如果投「是」的仅有一票,相关的区块提案 P 则被提交至弹性侧链; (6)如果投「是」的有多票,则会用伪随机的数字 R 从「是」的投票提案伪随机性选出 P。选出的提案对 R 除以 N_WIN 剩下的部分进行索引,其中 N_WIN 为投「是」提案的总数; (7)随机数 R 是 ABBA 所有 COMMON_COIN(一种随机数源) 的总和。 (8)如果所有投票全是「否」,则向该区块链提交一个空的区块。所有投票都为「否」的可能性非常小,随着 N 的增加而降低。 一旦共识在任意虚拟子节点 A 上成功选出区块 P,虚拟子节点将执行以下算法以确定提案,并提交至区块链。 (1) A 会检查其是否收到选出的提案 P; (2)如果 A 未收到提案,它将向其对等的虚拟子节点提出申请,进行下载; (3) A 将对 P 签署一个签名碎片 S,并将其发送至其他全部的虚拟子节点; (4) A 等待接收来自包括其自己的绝大多数虚拟子节点的签名碎片; (5) A 一旦接收到绝大多数的签名碎片,就会把它们组合成一个阈值签名; (6)最后,A 把 P 与阈值签名 S 一同提交至区块链。 此外,SKALE 的容器化结构还为 dApp 开发者提供了企业级性能与选项选择,旨在实现中心化系统同等级别的灵活性、可配置性及模块化特性,提供 SKALE 管理服务、节点监控服务、虚拟子节点调配服务,并整合了一系列的应急策略和故障恢复方案,以应对网络攻击和故障等紧急情况。 SKALE 网络扩展SKALE 开发了两个扩展包:文件存储与链间通讯。 文件存储图片来源:SKALE Network Blog SKALE 网络的文件存储依赖于其内置的数据可用性协议,它确保了数据至少存储在每个弹性侧链 2/3 的虚拟化子节点上。fileStorage.js 是一个 npm 包,用户只需几行代码即可将 SKALE FileStorage 集成到他们的 dApp 中。并通过调用 uplodaFile、downloadFileIntoBrowser/downloadFileIntoBuffer、deleteFile 方法来对文件进行上传、下载和删除。 (责任编辑:admin) |