Agoric Upgrade 16: Orchestration Core, Performance Improvements

:wave: Hello Agoric Validators & BLD Community,

Agoric OpCo engineers have released the agoric-upgrade-16 software upgrade for the agoric-3 chain. agoric-upgrade-16 includes Orchestration core, which will allow JavaScript contracts to interact with IBC, as well as performance improvements. This is a significant upgrade that marks a major milestone by enabling new functionality for the Agoric chain!

The following new features are included in this release:

  • Orchestration Core (#8583 and more)
  • #9388: Reduce the size of state-sync snapshots

The release contains at least the following fixes:

  • #9316: Fix a memory leak that impacted commit time and resulted in missed blocks
  • #9418: State-sync export would temporarily stall the node while initiating a snapshot resulting in missed blocks
  • #9100: Make the snapshots export command usable
  • #9424: Some options like iavl-disable-fastnode were not applied
  • #9179: Avoid unnecessary rebuilds when invoking agd

The full set of changes in this release can be found here.

We’ve prepared the following:

Milestone Testing

By running long-lived testnets and using that environment to evaluate software before promoting it to mainnet, validators play a vital role in maintaining a healthy, robust network for the Agoric community. Qualifying or certifying any new software release as production ready requires significant testing. Agoric OpCo recommends that validators perform the following milestone tests to ensure functionality on Emerynet before launching an on-chain governance proposal on the agoric-3 mainnet.

Note: Ensure that you’re up to date on golang and node versions for this release, and that you’ve upgraded to the latest version of Cosmovisor that supports the upgrade handler.

Milestone tests include:

  • Performing the upgrade on a test node
  • Restarting a validator node
  • Testing state sync
    • Create a state sync snapshot
    • Spinning up a node using state sync
  • Submitting a test proposal (e.g., a chain parameter change)

Creating an Emerynet upgrade proposal:

Please note that the naming conventions have changed and Emerynet and mainnet will use the same upgrade name. Confirm the commit hash and upgrade name BEFORE submitting a proposal.

# Edit as needed

FROM_WALLET=yourwallet

UPGRADE_HEIGHT="1234-get-blockheight-from-estimator"

# Verify values

UPGRADE_TO="agoric-upgrade-16"

CHAIN_ID="agoric-emerynet-8"

COMMIT_ID=$(git rev-parse HEAD)

ZIP_URL="https://github.com/Agoric/agoric-sdk/archive/${COMMIT_ID}.zip"

CHECKSUM=sha256:$(curl -L "$ZIP_URL" -o- | shasum -a 256 | cut -d' ' -f1)

UPGRADE_INFO="{\"binaries\":{\"any\":\"$ZIP_URL//agoric-sdk-$COMMIT_ID?checksum=$CHECKSUM\"},\"source\":\"$ZIPURL?checksum=$checksum\"}"

agd tx gov submit-proposal software-upgrade $UPGRADE_TO --upgrade-info="$UPGRADE_INFO" --upgrade-height="$UPGRADE_HEIGHT" --title="Upgrade to $UPGRADE_TO" --description="This proposal if voted will upgrade the chain to $UPGRADE_TO" --from=$FROM_WALLET --chain-id=$CHAIN_ID

When the testnet milestones are complete and validators have fully qualified the release on Emerynet, the testnet coordinator should inform Agoric OpCo to promote the release from rc to final and update tags accordingly, then create and submit a similar on-chain proposal to upgrade the agoric-3 chain to agoric-upgrade-15.

Creating a Mainnet upgrade proposal:

Please note that the naming conventions have changed and Emerynet and mainnet will use the same upgrade name. Confirm the commit hash and upgrade name BEFORE submitting a proposal.

# Edit as needed

FROM_WALLET=yourwallet

UPGRADE_HEIGHT="1234-get-blockheight-from-estimator"

# Verify values

UPGRADE_TO="agoric-upgrade-16"

CHAIN_ID="agoric-3"

COMMIT_ID=$(git rev-parse HEAD)

ZIP_URL="[https://github.com/Agoric/agoric-sdk/archive/${COMMIT_ID}.zip](https://github.com/Agoric/agoric-sdk/archive/$%7BCOMMIT_ID%7D.zip)"

CHECKSUM=sha256:$(curl -L "$ZIP_URL" -o- | shasum -a 256 | cut -d' ' -f1)

UPGRADE_INFO="{\"binaries\":{\"any\":\"$ZIP_URL//agoric-sdk-${COMMIT_ID}?checksum=$CHECKSUM\"},\"source\":\"$ZIP_URL?checksum=$CHECKSUM\"}"

agd tx gov submit-proposal software-upgrade $UPGRADE_TO --upgrade-info="$UPGRADE_INFO" --upgrade-height="$UPGRADE_HEIGHT" --title="Upgrade to $UPGRADE_TO" --description="This proposal if voted will upgrade the chain to $UPGRADE_TO" --from=$FROM_WALLET --chain-id=$CHAIN_ID

Note for anyone generating state-sync snapshots or restoring from state-sync

As a change from previous releases, state-sync snapshots now only include minimal data to restore a node. However there are still continued performance issues related to state-sync. In particular, we’ve observed that on some deployments, the snapshot taking and restoring process can take multiple hours, require 10s of GB of temporary free disk space, and 16GB of memory.

In this release the snapshots export agd command has been fixed, and can now be used to generate a snapshot export of the latest application state (while the node is not running). Combined with other snapshots commands and the tendermint bootstrap-state command, this can be used to restore a node (state-sync pruning) without having to connect the node to the p2p network.

1 Like

Update:

Emerynet was successfully upgrade to agoric-upgrade-16!

Big thanks to the Emerynet validators for coordinating to upgrade!

IBC smoke testing done between emerynet and devnet.
Emerynet transactions:
https://emerynet.explorer.agoric.net/agoric/tx/CFC0E2F4F375FDCA1A595571C5C22BD76F49AE2B1EF8B9EBCF1A398402D56B3B

https://emerynet.explorer.agoric.net/agoric/tx/3A0962A7D59BD559242A2CE7313A83151575ED7A2656FD4C1D38097E814CAAC1

Devnet transactions:
https://devnet.explorer.agoric.net/agoric/tx/9AC68F8DC3F320159D7A2497C4794D799CD72300EE5BAAB2246427CEA59214D6

https://devnet.explorer.agoric.net/agoric/tx/1192B6314BC5E8FAC367141FE75FE3C9B71E3036C4B85A5F61CDF79D8FE71C36

1 Like

A new rc2 release has been made available for Emerynet. See the release notes for details: Release agoric-upgrade-16-rc2 · Agoric/agoric-sdk · GitHub