Skip to main content

ProposalExecutionEngine

Upgradable contract that implements proposal execution logic for Parties. Inherits code for all the proposal types a Party will support.

Code

ProposalExecutionEngine.sol

Functions

getCurrentInProgressProposalId

Get the current InProgress proposal ID.

With this version, only one proposal may be in progress at a time.

function getCurrentInProgressProposalId() external view returns (uint256 id);

executeProposal

Execute a proposal.

Must be delegatecalled into by PartyGovernance. If the proposal is incomplete, continues its next step (if possible). If another proposal is incomplete, this will fail. Only one incomplete proposal is allowed at a time.

function executeProposal(ExecuteProposalParams memory params)
external
onlyDelegateCall
returns (bytes memory nextProgressData);

Parameters

NameTypeDescription
paramsExecuteProposalParamsThe data needed to execute the proposal.

Returns

NameTypeDescription
nextProgressDatabytesBytes to be passed into the next execute() call, if the proposal execution is incomplete. Otherwise, empty bytes to indicate the proposal is complete.

cancelProposal

Forcibly cancel an incomplete proposal.

This is intended to be a last resort as it can leave a party in a broken step. Whenever possible, proposals should be allowed to complete their entire lifecycle.

function cancelProposal(uint256 proposalId) external onlyDelegateCall;

Parameters

NameTypeDescription
proposalIduint256The ID of the proposal to cancel.