xuperchain源码分析-合约

8 篇文章 0 订阅
7 篇文章 0 订阅

这里的合约定义更多的是自动执行约定,而不是预置了一个带有合约地址的合约代码,当时看源码时候就产生过疑惑

合约类图

在这里插入图片描述
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:

合约时序

请添加图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值