-
Create a proposal script:
[Option 1] Use release builder tool
- Define the list of change in a YAML file, e.g. release.yaml in aptos-core
- After the YAML file is approved, run
cargo run -p aptos-release-builder -- generate-proposals --release-config <PATH_TO_YAML> --output-dir <PATH_TO_OUTPUT_DIR>
to generate upgrade scripts
[Option 2] Manual process
- Use the following template:
script { use aptos_framework::aptos_governance; fun main(proposal_id: u64) { let framework_signer = aptos_governance::resolve(proposal_id, @1); ... } }
-
Upgrade the framework, the account must match where the package is intended to be published. This will create a proposal in
stdlib.move
:cargo run -p -- governance generate-upgrade-proposal --account 0x1 --output stdlib.move \ --package-dir aptos-move/framework/move-stdlib/
-
Upgrade the gas configuration, this will create a proposal in
gas/sources/update_gas_schedule.move
:cargo run -p aptos-gas -- --output gas
-
Upload the proposal to this GitHub repository using the proper naming conventions outlined below:
- Add the metadata to the metadata folder
- This includes the
title
,description
of the proposal,source_code_url
link to .move file, anddiscussion_url
link to GH Issue
- This includes the
- Create a PR and fill out this template in the description
- Add the move file to the sources folder.
- Add the metadata to the metadata folder
- To create a proposal on-chain, in the aptos-core repo, run
Note: --is-multi-step is required for proposals that have multiple steps
cargo run -p aptos -- governance propose --metadata-url <url-to-metadata-file.json> \ --pool-address $pool_address --script-path /path/to/proposal.move \ --framework-local-dir /path/to/aptos-core/aptos-move/framework/aptos-framework/ \ --is_multi-step \ --profile mainnet-voter
To vote on a proposal, use the UI at https://governance.aptosfoundation.org/ or run
```
cargo run -p aptos -- governance vote --proposal-id <proposal-id> --pool-addresses $pool_address_1,$pool_address_2 --yes/no
```
To execute a proposal that has passed, in the aptos-core repo, run
```
cargo run -p aptos -- governance execute-proposal --proposal-id <proposal-id> \
--script-path path/to/proposal.move --max-gas 500000 \
--framework-local-dir /path/to/aptos-core/aptos-move/framework/aptos-framework/
```
If the proposal has multiple steps, run the above command for each of the steps (with --script-path pointing to each specific step)
Validate each proposal by checking file naming conventions, checking each link points to it's corresponding file, and descriptions include either the AIP or proposed change.
Naming Convention | Good Example | Bad Example |
---|---|---|
Source Files must start with step_* |
step_1_description_of_proposal |
description_of_proposal , step_1 |
Multistep proposals must use alphabetic characters to maintain a multilevel ordered list | step_1a , step_1b , step_1c |
step_1.1 , step_1.0 , step_1_multistep_a , step_1_a |