This repository contains a helper to aid in generating the contents of Software Upgrade Proposals. It does so by
- Querying the release on GitHub
- Deriving the changed features from the release notes
- Calculating the block height for the desired time of upgrade
- Updating the description template
- Creating a Commonwealth thread
- Creating the CLI command to submit the proposal
- Creating a Notion page that contains the proposal text as well as the CLI command
NOTE: Because the Commonwealth integration is not yet implemented (an API key is already requested) it is not possible to run all of this in one go.
It is rather required, to first generate the proposal, which creates a Markdown file with the proposal description, that need to be posted on Commonwealth for mainnet upgrades.
$ ./proposer generate-proposal -h
Usage: proposer generate-proposal [OPTIONS]
Options:
-m, --model <MODEL> The LLM model to use for summarizing the release notes [default: gpt4o] [possible values: gpt4o]
-h, --help Print help
As a second step, it is required to generate the shell command to submit the proposal.
It is written to a .sh
file in your current working directory.
$ ./proposer generate-command -h
Usage: proposer generate-command [OPTIONS]
Options:
-c, --config <CONFIG> The path to the configuration file
-h, --help Print help
-
Rust and Cargo
You will need to have a somewhat recent version of the Rust toolchain installed.
-
OpenAI API Key
The tool is using OpenAI's LLMs to generate a summary of the changes in the release(s).
To use this feature, ensure that you run the binary in an environment whereOPENAI_API_KEY
is set. -
Configured
.evmosd
HomeTo generate a shell command that can be instantly used, the tool is checking
$HOME/.evmosd
for the configured keyring. This keyring is then used to get the list of available keys. It is checked, which of those keys hold a balance on the selected network (mainnet/testnet) and lets the user select the one to execute the command with if there are multiple.
To use this feature, ensure that you have your$HOME/.evmosd
configuration set so that the configured keyring holds your mainnet or testnet keys.
The tool can be built or installed locally using Rust's cargo
utility.
Clone the desired version of the repository locally:
git clone https://github.com/evmos/proposer.git --depth latest
cd proposer
To install the binary, run:
make install
If you do not wish for the binary to be installed in your $PATH
,
run the build command which creates the binary inside of the target
directory:
make build