Skip to content

合约生命周期

设计和实现方案

背景

当前所有节点都可以部署合约,从而执行一个合约。

目标

智能合约的部署、升级、冻结、解冻、吊销都需要受控。

合约部署之后需要经过投票生效后才能调用,同样升级、冻结、解冻,吊销等均需要进行投票后才会生效。

投票规则:达到2/3见证节点同意或者1/3见证节点反对,投票立即结束(尚未进行投票的见证节点无需投票),合约状态发生流转。

2/3 这个比例要参考具体的共识。

总体设计

生命周期流程图

智能合约全生命周期管理

解释说明

  • 合约部署之后,会自动发起部署投票。2/3见证节点同意后,合约变更为生效状态,所有账户均可对该合约进行调用。
  • 生效状态下的合约可进行升级、冻结、吊销投票。
  • 解冻投票仅能在合约冻结状态下发起。
  • 仅在投票通过情况下,才能发生合约状态变化。
  • 除了部署之外,升级、吊销、冻结、解冻均可多次发起投票(合约的上一轮投票需要结束)。

模块设计

状态设计

合约分为未生效状态(吊销状态属于未生效状态),生效状态,冻结状态。

未生效状态合约不可调用,生效状态可正常调用,冻结状态合约不可调用。

状态流转

合约状态

0禁止执行
1允许执行
2冻结状态

查询

latc_getContractState

合约状态流转图

合约状态流程图

Released under the MIT License.