aelf主网合约部署流程

circle-info

ContractDeploymentAuthorityRequired配置为false,直接使用零合约的DeploySmartContractUpdateSmartContract即可完成部署和升级。本文档只针对aelf主网合约部署的pipeline进行说明,即ContractDeploymentAuthorityRequired为true的情况。

综述

DeploySmartContract为例,UpdateSmartContract的流程与之类似。

开发者:ProposeNewContract

  • 发送ProposeNewContract交易。

  • 通过ProposeNewContract交易,会创建一个ProposeContractCodeCheck提案,该提案用于申请让BP进行代码检查。

  • ProposeContractCodeCheck如果执行成功的话,会再创建一个ProposeContractCodeCheck提案。

BP:Parliament.Approve

  • 手动同意开发者创建的ProposeContractCodeCheck提案,即同意检查该合约的代码。

开发者:ReleaseApprovedContract

  • ProposeContractCodeCheck提案被议会通过后,通过ReleaseApprovedContract交易,释放ProposeContractCodeCheck提案。

  • 随即创建一个ProposeContractCodeCheck提案,该提案用于让BP的aelf节点自动执行代码检查(抛出一个事件,链上处理该事件,执行代码检查任务),且该提案通过后,会执行DeploySmartContract方法。

BP:Parliament.ApproveMultiProposals(自动)

  • BP的aelf节点执行完代码检查任务,如果检查通过,就自动通过系统交易的机制发送ApproveMultiProposals交易,即通过ProposeContractCodeCheck提案。

开发者:ReleaseCodeCheckedContract

  • 开发者通过ReleaseCodeCheckedContract交易,释放ProposeContractCodeCheck提案,执行DeploySmartContract方法,合约部署完成。

总结

  1. 开发者一共发送三个交易:

    1. ProposeNewContract:申请部署合约。

    2. ReleaseApprovedContract:部署合约的审批被批准后,申请合约代码检查。

    3. ReleaseCodeCheckedContract:代码检查通过后,执行合约部署。

  2. BP一共需要参与:

    1. 通过开发者的合约部署的申请。

    2. 运行aelf节点,自动检查代码后,会发ApproveMultiProposals交易。

Last updated