xuperchain源码分析-合约
2021/9/15 17:06:13
本文主要是介绍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:
这篇关于xuperchain源码分析-合约的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门