C/C++教程

xuperchain源码分析-合约

本文主要是介绍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

提案和投票机制是区块链系统实现自我进化的关键。系统首次上线后难免遇到很多问题,我们提供提案/投票机制为区块链的社区治理提供便利的工具,以保证未来系统的可持续发展。具体实现方法如下:

  1. Step1:提案者(proposer) 通过发起一个事务声明一个可调用的合约,并约定提案的投票截止高度,生效高度;

  2. Step2:投票者(voter) 通过发起一个事务来对提案投票,当达到系统约定的投票率并且账本达到合约的生效高度后,合约就会自动被调用;

  3. Step3:为了防止机制被滥用,被投票的事务的需要冻结参与者的一笔燃料,直到合约生效后解冻。

在这里插入图片描述
提案合约包含以下合约方法

proposeMethod:
voteMethod:
createTriggerMethod:
thawMethod:
这篇关于xuperchain源码分析-合约的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!