标签:tdpos Kernel 区块 验证 源码 提案 xuperchain 合约
这里的合约定义更多的是自动执行约定,而不是预置了一个带有合约地址的合约代码,当时看源码时候就产生过疑惑
合约类图
Contract表示一种自定义执行约定,调用合约的方式必须是交易,交易到区块上面打包。
每一个合约实现,都被称为一个module,上面就有4个module,tdpos,kernel,consensus,proposal。
tdpos
XPoS是超级链的一种改进型的DPoS算法,他是在一段预设的时间长度(一轮区块生产周期)内选择若干个验证节点,同时将这样一轮区块生产周期分为N个时间段, 这若干个候选节点按照约定的时间段协议协同挖矿的一种算法。在选定验证节点集合后,XPoS通过Chained-BFT算法来保证轮值期间的安全性。 总结一下,整个XPoS主要包括2大阶段:
- 验证人选举:通过pos相关选举规则选出一个验证者集合;
- 验证人轮值:验证者集合按照约定的协议规则进行区块生产;
本身一种共识机制,xuperchain默认是tdpos共识,如果开启了改共识,它需要通过合约来执行一系列的共识准备工作
它有一下几种操作:
voteMethod = “vote”
revokeVoteMethod = “revoke_vote” // 候选人投票撤销
nominateCandidateMethod = “nominate_candidate” // 候选人提名
revokeCandidateMethod = “revoke_candidate” // 候选人罢黜
checkValidaterMethod = “check_validater” // 验证人生成
tdpos会有一个自动交易生成器来自动产生交易,例如{"module":"tdpos","method":"check_validater","args":{"term":"842378","version":"0"},"tag":null,"deadline":0,"tx":null,"trigger":null}
,这个交易表示需要执行验证人检查
kernel
kernel是xuperchain的核心合约,用来创建,停止,更新链的核心参数,有以下一些方法
"CreateBlockChain": (*Kernel).runCreateBlockChain,
"UpdateMaxBlockSize": (*Kernel).runUpdateMaxBlockSize,
"UpdateReservedContract": (*Kernel).runUpdateReservedContract,
"UpdateForbiddenContract": (*Kernel).runUpdateForbiddenContract,
"UpdateBlockChainData": (*Kernel).runUpdateBlockChainData,
"UpdateNewAccountResourceAmount": (*Kernel).runUpdateNewAccountResourceAmount,
"UpdateIrreversibleSlideWindow": (*Kernel).runUpdateIrreversibleSlideWindow,
"UpdateGasPrice": (*Kernel).runUpdateGasPrice,
"StopBlockChain":
consensus
consensus合约,目前只有一个方法,动态更新共识updateConsensusMethod
proposal
提案和投票机制是区块链系统实现自我进化的关键。系统首次上线后难免遇到很多问题,我们提供提案/投票机制为区块链的社区治理提供便利的工具,以保证未来系统的可持续发展。具体实现方法如下:
-
Step1:提案者(proposer) 通过发起一个事务声明一个可调用的合约,并约定提案的投票截止高度,生效高度;
-
Step2:投票者(voter) 通过发起一个事务来对提案投票,当达到系统约定的投票率并且账本达到合约的生效高度后,合约就会自动被调用;
-
Step3:为了防止机制被滥用,被投票的事务的需要冻结参与者的一笔燃料,直到合约生效后解冻。
提案合约包含以下合约方法
proposeMethod:
voteMethod:
createTriggerMethod:
thawMethod:
标签:tdpos,Kernel,区块,验证,源码,提案,xuperchain,合约 来源: https://blog.csdn.net/zengqiang1/article/details/120308428
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。