governance_proposal - [mainnet]
Define the GovernanceProposal that will be used as part of on-chain governance by AptosGovernance.
This is separate from the AptosGovernance module to avoid circular dependency between AptosGovernance and Stake.
Structs
GovernanceProposal
struct GovernanceProposal has drop, store
Fields
-
dummy_field: bool
Functions
create_proposal
Create and return a GovernanceProposal resource. Can only be called by AptosGovernance
public(friend) fun create_proposal(): governance_proposal::GovernanceProposal
Implementation
public(friend) fun create_proposal(): GovernanceProposal { GovernanceProposal {}}
create_empty_proposal
Useful for AptosGovernance to create an empty proposal as proof.
public(friend) fun create_empty_proposal(): governance_proposal::GovernanceProposal
Implementation
public(friend) fun create_empty_proposal(): GovernanceProposal { create_proposal()}
Specification
create_proposal
public(friend) fun create_proposal(): governance_proposal::GovernanceProposal
High-level Requirements
No. | Requirement | Criticality | Implementation | Enforcement |
---|---|---|---|---|
1 | Creating a proposal should never abort but should always return a governance proposal resource. | Medium | Both create_proposal and create_empty_proposal functions return a GovernanceProposal resource. | Enforced via create_proposal and create_empty_proposal. |
2 | The governance proposal module should only be accessible to the aptos governance. | Medium | Both create_proposal and create_empty_proposal functions are only available to the friend module aptos_framework::aptos_governance. | Enforced via friend module relationship. |
Module-level Specification
aborts_if false;// This enforces high-level requirement 1:ensures result == GovernanceProposal {};
create_empty_proposal
public(friend) fun create_empty_proposal(): governance_proposal::GovernanceProposal
aborts_if false;// This enforces high-level requirement 1:ensures result == GovernanceProposal {};