The Agoric OpCo engineering team is pleased to publish the agoric-upgrade-12
release. This release is primarily intended to fix state-sync and NPM published packages. It does not change the behavior of any contracts, but includes the smart wallet changes published in the agoric-upgrade-11wf
release. It fixes at least the following issues:
- #8325: enable restore from state-sync with payloads larger than 64 MB
- #8423: avoid a potential consensus failure when the node is restarted during busy blocks
- #8321: allow a brand new chain to start with a functioning walletFactory contract
- #8501: allow usage of outgoing IBC messages in JS contracts
- #8380: make NPM published packages more usable for dapp development
Additionally the new software contains the following noteworthy changes:
- #8483: reduce the consensus
BlockParams.MaxBytes
size to 5MB as a mitigation for the ASA-2023-002 security advisory impacting the cosmos ecosystem. - #8337: fix vstorage module path validation as additional mitigation for vulnerability fixed in previous release.
This code has satisfied all pre-release/testnet validation checks, and is now recommended for chains to upgrade from the previous agoric-upgrade-11
release. As a state-machine-breaking upgrade, once approved, all chain validators will need to upgrade from agoric-upgrade-11
to this new version (after the chain halts due to reaching the height required in a governance proposal).
Unlike the agoric-upgrade-11
release, no data is migrated during this upgrade.
Since the agoric-upgrade-11
release, state-sync snapshots include more data than before. Nodes which have inadvertently pruned this data (e.g. those created from a state-sync before the agoric-upgrade-11
release) will not be able to produce such snapshots, and will need to be restored from state-sync using this release. Please see the forum post for more details.
Discussion for this release will take place in the Agoric community forum.
Below is the cosmos upgrade handler name for this release. These is the name that can be used in governance proposals to deploy this upgrade.
Cosmos Upgrade Handler Name: agoric-upgrade-12
Below is git information related to this software release. Note the git tag and cosmos upgrade handler name may differ.
Git Tag: agoric-upgrade-12
Git Commit: ee5a5fdad9187a6b1b7b26b772b6564c0db3062e
@agoric/cosmos package version: 0.35.0-u12.0
Docker: ghcr.io/agoric/agoric-sdk:38
As shown in go.mod this release is based on:
ibc-go v3.4.0
cosmos-sdk v0.45.11
tendermint v0.34.23
How to upgrade
Presuming that your node is running agoric-upgrade-11
, once the upgrade height for a subsequent proposal to upgrade to agoric-upgrade-12
has been reached, your node will halt automatically allowing you to upgrade the agoric stack.
# prepare by installing Go 1.20.2 or higher, Node 16, clang 10 or gcc 10
# stop the agd service
cd agoric-sdk
git fetch --all
git checkout agoric-upgrade-12
yarn install
yarn build
(cd packages/cosmic-swingset && make)
#start the agd service
Do not copy the agd
script or Go binary to another location. If you would like to have an executable agd
in another location, then create a symlink in that location pointing to agoric-sdk/bin/agd
.
Node Version
Node.js LTS (version 16.13.0 or higher).
Golang Version
The agoric-upgrade-12 release requires Go 1.20.2 or higher.
C Compiler Version
Clang version 10 or GCC version 10 required.
Troubleshooting repoconfig.sh: No such file or directory
Unlike typical cosmos-sdk chains where the daemon is a single executable file, Agoric's use of cosmos-sdk depends on many components of agoric-sdk
at runtime. Copying agd
to /usr/local/bin
or the like is unlikely to produce a working installation. For more detail, see: #7825
Troubleshooting Cannot find dependency ...
in systemd
If you have LimitNOFILE=4096
in your systemd unit file, change it to LimitNOFILE=65536
. For more detail, see #7817
Specifying --upgrade-info
for the software upgrade proposal
The ./scripts/gen-upgrade-proposal.sh
is designed to aid in composing a agd tx submit-proposal software-upgrade ...
command. In particular, it captures package checksums to verify integrity of downloaded software.