百度超级链的克隆与应用二(快速了解)

我在上篇文章讲的是如何多百度超级链进行克隆。在本篇则对百度超级链做一个快速的介绍,以便开发者了解。

我在上篇文章讲的是如何多百度超级链进行克隆。在本篇则对百度超级链做一个快速的介绍,以便开发者了解。因为过去半年多了,我也忘了里面内容那些是复制的,哪些是自己写的,敬请见谅。

提案和投票机制

Step1:提案者(proposer) 通过发起一个事务声明一个可调用的合约,并约定提案的投票截止高度,生效高度; Step2:投票者(voter) 通过发起一个事务来对提案投票,当达到系统约定的投票率并且账本达到合约的生效高度后,合约就会自动被调用; Step3:为了防止机制被滥用,被投票的事务的需要冻结参与者的一笔燃料,直到合约生效后解冻。

共识可升级

系统参数可升级、通过提案和投票机制,区块链自身的运行参数也是可升级的。包括:block大小、交易大小、挖矿奖励金额和衰减速度等。

多链结构

超级链是一个多链架构,其中单个链的主要逻辑在 core/xchaincore.go 文件中,其中与共识模块交互的函数主要有2个,分别是 Miner() 和 SendBlock() : 共识基础接口是共识模块的核心接口,是与core模块交互的主要部分。其中最核心的部分主要是 CompeteMaster 和 CheckMinerMatch 两个。 CompeteMaster 是一个节点判断自己是否为主的主要逻辑, CheckMinerMatch 是节点收到一个区块验证其区块有效性的主要逻辑。 共识安全接口是保证底层共识安全的核心接口,共识框架底层支持了 Hotstuff 算法的的高性能的共识安全模块 Chained-BFT 。暴露出了 PacemakerInterface 和 ExternalInterface 接口,其中 PacemakerInterface 是 Chained-BFT 的活性保证,此外为了扩展 Chained-BFT 安全模块能够应用于更多的仲裁类型, 底层 Chained-BFT 设计上不需要理解仲裁的具体内容,通过 ExternalInterface 会与外层的共识进行通信。

chained-bft

超级链底层有一个共识的公共组件叫chained-bft,其是Hotstuff算法的实现。HotStuff是一种简洁而优雅的bft改进算法。它具有以下优点: 它的设计中将liveness和safty解耦开来,使得非常方便与其他的共识进行扩展; 将bft过程拆解成3阶段,每个阶段都是o(n)的通信; 它允许一个节点处于不同的view,并且将view的切换与区块结合起来,使得其能够实现异步共识,进一步提升共识的效率。 这样一个chained-bft可以在给定主集合的场景下确保网络的共识安全性,并且通过与外层共识配合工作实现共识的活性保证。

XPoS

XPoS是超级链的一种改进型的DPoS算法,他是在一段预设的时间长度(一轮区块生产周期)内选择若干个验证节点,同时将这样一轮区块生产周期分为N个时间段, 这若干个候选节点按照约定的时间段协议协同挖矿的一种算法。在选定验证节点集合后,XPoS通过Chained-BFT算法来保证轮值期间的安全性。 总结一下,整个XPoS主要包括2大阶段: 验证人选举:通过pos相关选举规则选出一个验证者集合; 验证人轮值:验证者集合按照约定的协议规则进行区块生产。

Single共识

对于矿工:Single是固定 address 周期性出块,因此在调用 CompeteMaster 的时候主要判断当前时间与上一次出块时间间隔是否达到一个周期; 对于验证节点:验证节点除了密码学方面必要的验证之外,还会验证矿工与本地记录的矿工是否一致;

Pow共识

对于矿工:每次调用 CompeteMaster 都返回 true,表明每次调用 CompeteMaster 的结果都是矿工该出块了; 对于验证节点:验证节点除了密码学方面必要的验证之外,还会验证区块的难度值是否符合要求;

跨链

百度采用的是合约与ip中继的方式。 跨链涉及到不同链资源的互操作,由于不同的链的协议各部相同,为了实现对不同链的资源进行统一定义,超级链定义了如下跨链寻址协议,结合着链名解析合约,便可以实现对任何协议链的统一资源寻址。 在大部分使用场景下,用户仅希望从一个链能够查询到另一个链的数据,并且能够满足稳定性、幂等性和安全性,我们称为只读事务跨链。 只读事务跨链的典型场景包括身份认证、资质认证等; 背书和验证,超级链的合约采用的是先预执行再提交的二阶段处理过程。 非事务场景跨链是指跨链行为并不是要求不同链上的交易具备事务性,即不要求不同链上的跨链交易同时生效或同时失败,跨链交易只对当时被跨链的交易状态进行确认,并根据目标交易状态执行交易后续操作。 举例来讲,在A链上发起的交易tx1执行成功后,发起B链上的交易tx2,但tx2执行失败并不会影响tx1,即不会发生tx1回滚。这种存在依赖的交易,但不保证多个交易执行满足事务性的场景,是典型的非事务跨链。

非事务跨链的典型场景

比如身份验证、预言机、资产跨链转移等等,在技术上主要强调跨链交易的存在性证明,但对跨链交易的原子性没有要求。 链上中继合约(XuperRelayer):部署在原链上的一个智能合约,会保存目标链的所有块头信息,并提供基于梅克尔证明的目标链交易存在性验证。 中继同步进程(Relay Process):在目标链和原链之间,会有一个或多个中继进程,持续监听目标链的最新出块信息,并抽取出块头信息写入。 单节点网络的创建,在该基础上,搭建一个SINGLE共识的多节点网络,其他节点只要新增p2p网络bootNodes配置即可。如果你想搭建一个TDPoS共识的链,仅需要修改创世块参数中“genesis_consensus”配置参数即可。 简单说,多节点部署只需要增加p2p网络bootNodes配置即可。而真正想建立一个tdpos共识的链,则比较麻烦。尤其是后期需要多重签名。

点赞 0
收藏 0
分享

0 条评论

请先 登录 后评论
问答区块链
问答区块链
致力于人工智能与区块链相结合下的智能设备自治