#34 Agoric-upgrade-10 / Mainnet 1B Upgrade

Hi BLD Validators & Community

Agoric OpCo is happy to announce that a new software release(SDK Version) for the agoric-3 chain is now available.
This release contains a number of significant upgrades including:

  • Vaults contracts
  • Validator State Sync
  • Smart Contract Upgradeability
  • Governance Capability Upgrade
  • Decentralized Oracle Network
  • Critical Message Prioritization
  • Scalability and Performance Improvements

We’ve prepared the following:

Upgrade Handlers:
Emerynet: agorictest-upgrade-10
Mainnet: agoric-upgrade-10

Recommended Testnet Milestones

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, and Agoric core developers recommend that validators evaluate the following milestones before launching an on-chain governance proposal on the agoric-3 mainnet.

0 – Choose a testnet coordinator to kick off the Emerynet upgrade. Traditionally, the testnet coordinator submits the on-chain proposal for mainnet software upgrade.

1 – Ensure that you’re up to date on golang and node versions for this release, and that you’ve upgraded to the newest version of Cosmovisor that supports the new upgrade handler.

2 – Evaluate core mainnet functionality. This could include:

  • Exercising the new VM functionality of the release by participating in the upgrade
  • Restarting your node after a successful upgrade
  • Spinning up a node using a state-sync snapshot
  • Making IBC transactions with testnet tokens
  • Exercising on-chain governance parameters

3 – Take Vaults for a test drive. Once the UIs are wired up and the Econ Committee has set economic parameters on Emerynet, this could include:

  • Creating a Vault
  • Adjusting your Vault balances
    • Deposit
    • Borrow
    • Withdraw
    • Repay
    • Deposit + Borrow
    • Withdraw + Repay
  • Closing a Vault

4 – Test out liquidations with Agoric core devs after the oracle network launches on Emerynet. This might include:

  • Monitoring oracle price feeds to coordinate market prices to your testnet trading activities
  • Creating a vault and liquidating it
  • Placing a liquidation bid in an auction via CLI
  • Reducing prices to trigger a liquidation aligned with the liquidation schedule

5 - Keep the community updated on testnet progress by posting updates to this thread or sharing details about mainnet-1b in Discord or Twitter so that the entire community can follow progress towards launch.

6 – Coordinate with your fellow validators to determine if this release is ready to be promoted to mainnet. If it is, Emerynet Validators could support the Testnet Coordinator in putting up a software upgrade proposal on mainnet by helping out with the proposal deposit.

Next Steps

Calculating an upgrade height:

Creating an upgrade proposal:

upgradeto="agorictest-upgrade-10"
height="123heightfrom-estimator-above"
agd tx gov submit-proposal software-upgrade $upgradeto --upgrade-info='{"binaries":{"any":"https://github.com/Agoric/agoric-sdk/archive/ea8c1c64911b4c58fb43635b25e17e3d50d0cf2a.zip?checksum=sha256:9e387ca1a8767279aa4a38bd80a4692a01c8f6ca5f14c1e21a956d13e899b147"}}' --upgrade-height="$height" --title="Upgrade to $upgradeto" --description="This proposal if voted will upgrade the chain to $upgradeto" --from=yourwallet --chain-id=agoric-emerynet-5

When the testnet milestones are complete and validators have fully qualified the release on Emerynet, the testnet coordinator, or another member of the community, can create and submit a similar on-chain proposal to upgrade the agoric-3 chain to agoric-upgrade-10.

2 Likes

(x-posting from Discord)

Reviewing the proposal now (thanks @kjnodes ). I notice that we do not appear to have binaries cut as a part of this release candidate.

However, the on-chain upgrade proposal points the ‘binaries’ field here:
https://github.com/Agoric/agoric-sdk/archive/ea8c1c64911b4c58fb43635b25e17e3d50d0cf2a.zip?checksum=sha256:9e387ca1a8767279aa4a38bd80a4692a01c8f6ca5f14c1e21a956d13e899b147,

which afaict is a zip of the source.

This won’t work for validators that are using cosmovisor to automatically download new binaries at the appropriate height. Curiously, I do see what we have a docker image built, which seems strange if the underlying binaries aren’t specified as part of the release.

Can anybody on the OpCo dev team provide some insight and guidance here?

Holding off on voting for this upgrade proposal until we get clarity on this.

DC

1 Like

Sounds like we haven’t had binary builds since the last days of ag0 and that making this happen in the future is an issue that’s already being tracked. Thanks @dkdc for the clarification.

1 Like

Update:

The Emerynet upgrade proposal has passed!!

The estimated time for the upgrade block (4382610) is 2023-05-23 17:08 UTC

Emerynet update: During the Emerynet upgrade process some apphash issues were discovered.

Agoric OpCo core devs have identified the Emerynet upgrade issues as a build issue, in which older gcc versions result in non-deterministic behavior during upgrade. The team is working on a new release candidate that requires the relevant tool versions.

Full details are available on GitHub.

We will be resetting emerynet to pismoC with chain ID agoric-emerynet-6 Release pismoC · Agoric/agoric-sdk · GitHub
so it can be upgraded again with mainnet1B-rc1. Please join agoric-emerynet-6 with the pismoC release.

Ubuntu 22 will be supported, validators running Ubuntu 20 or similar will either need to upgrade their OS to Ubuntu 22+, or upgrade their C compiler to version gcc-10, NodeJS to version 16 LTS, and golang to version >= 1.20.2.

Emerynet validators please join the brand new agoric-emerynet-6 network from genesis with the pismoC release now (tags at Release pismoC · Agoric/agoric-sdk · GitHub and https://emerynet.agoric.net/).

Please note the following system requirements, and upgrade before proceeding: Ubuntu 22 will be supported, validators running Ubuntu 20 or similar will either need to upgrade their OS to Ubuntu 22+, or upgrade their C compiler to version gcc-10, NodeJS to version 16 LTS, and golang to version >= 1.20.2.

Genesis: curl https://emerynet.rpc.agoric.net/genesis | jq .result.genesis > $HOME/.agoric/config/genesis.json

Peers:

curl https://emerynet.agoric.net/network-config > chain.json
peers=$(jq '.peers | join(",")' < chain.json)
seeds=$(jq '.seeds | join(",")' < chain.json)
sed -i.bak -e "s/^seeds *=.*/seeds = $seeds/; s/^persistent_peers *=.*/persistent_peers = $peers/" $HOME/.agoric/config/config.toml

Faucet, network info, and more: https://emerynet.agoric.net/

Next Steps : There is a new mainnet1b-rc1 release available, and a testnet validator can submit an upgrade proposal and begin the process of upgrading Emerynet to agorictest-upgrade-10 . Refer to GitHub for full details: Release mainnet1B-rc1 · Agoric/agoric-sdk · GitHub

which afaict is a zip of the source.

Yes. The binaries.any field means a binary that can be used on any platform. When running https://github.com/agoric-labs/cosmos-sdk/tree/Agoric/cosmovisor , this zip file can be extracted by cosmovisor, which will invoke agoric-sdk/bin/agd. That is the entry shell script that rebuilds binaries if necessary, then invokes the built binaries within that extracted agoric-sdk.

We will be sure to stress in documentation that the running Agoric system used by validators relies on many different files provided by the agoric-sdk folder. So, the model we have for Cosmovisor is to have each complete agoric-sdk for a Git commit extracted in .agoric/cosmovisor/agoric-upgrade-XXX, with built binaries also kept in that directory.

For those who are familiar with Golang, it is the same as how you extract the Golang SDK to /usr/local/go and then adjust your PATH to include /usr/local/go/bin (or alternatively, create symlinks into that folder).

1 Like

Emerynet upgrade was a success and we have blocks! The network is now ready for testing of the new software.

Thanks to the Emerynet validators for their efforts and participation!

Update on milestones

0 – Choose a testnet coordinator to kick off the Emerynet upgrade. Traditionally, the testnet coordinator submits the on-chain proposal for mainnet software upgrade.
kjnodes were selected as testnet lead for an upcoming chain upgrade

1 – Ensure that you’re up to date on golang and node versions for this release, and that you’ve upgraded to the newest version of Cosmovisor that supports the new upgrade handler.
All dependencies and preparation steps were done before the upgrade.

2 – Evaluate core mainnet functionality. This could include:
:kiwi_fruit: 2.1. Exercising the new VM functionality of the release by participating in the upgrade
Upgraded the chain on upgrade block using Cosmovisor on 3 nodes without any issues
:kiwi_fruit: 2.2 Restarting your node after a successful upgrade
Restarted the node many times after upgrade with no problems
:kiwi_fruit: 2.3. Spinning up a node using a state-sync snapshot
Tested state-sync using our own RPC node.
Logs: Spinning up a node using a state-sync snapshot · GitHub
Instructions for state-sync: State sync - kjnodes | Chain services
:kiwi_fruit: 2.4. Making IBC transactions with testnet tokens
Created IBC channel between agoric and quicksilver testnets

  - Client: 07-tendermint-1
    * Connection: connection-1
      | State: OPEN
      | Counterparty state: OPEN
      + Channel: channel-1
        | Port: transfer
        | State: OPEN
        | Counterparty: channel-29
# Chain: rhye-1
  - Client: 07-tendermint-7
    * Connection: connection-6
      | State: OPEN
      | Counterparty state: OPEN
      + Channel: channel-29
        | Port: transfer
        | State: OPEN
        | Counterparty: channel-1

Tested IBC transfers to both sides:
transfer agoric -> quicksilver
tx hash: 8F66D523D2713DE3574ECDB9F7C64D6869ED3AAEC157CACCD2C19404D78A4E78
transfer quicksilver -> agoric
tx hash: 66317D99F76450F6923031EE276BCA09B89DA89869ED4A72F4B0BA9EC5E3CBA3
:kiwi_fruit: 2.5 Exercising on-chain governance parameters
Created new on chain proposal at #emerynet-governance to test governance module after upgrade

1 Like

Update for Emerynet testing of Mainnet 1B release:

While testing the mainnet1b/Vaults release, the Product and Engineering teams at Agoric OpCo identified a few issues that we will be resolving in a new release. At this time, we recommend that validators do not proceed with an upgrade governance proposal that would promote RC1 to mainnet. Core developers will be cutting a new RC2 release in the middle of next week, and will give an update on when it might land after the US holiday weekend.

Additional note: We believe that the RC2 release will improve mainnet block times.

1 Like

Testnet update:

Emerynet has been reset to pismoC in preparation of an RC2 rollout; agoric-emerynet-6 is replaced by agoric-emerynet-7.

Emerynet validators please join agoric-emerynet-7 with the pismoC release.

Emerynet Portal: https://emerynet.agoric.net/

1 Like

Update:

aqgoric-emerynet-7 has successfully been upgraded to the mainnet 1B RC2 release!

17:06:49 UTC upgrade started
17:46:34 UTC first block

Thanks to all the Emerynet validators for your efforts.

We did all the same testing on the agoric-emerynet-7. Here is our report.

Update report on milestones

0 – Choose a testnet coordinator to kick off the Emerynet upgrade. Traditionally, the testnet coordinator submits the on-chain proposal for mainnet software upgrade.
:kiwi_fruit: kjnodes were selected as testnet lead for an upcoming chain upgrade

1 – Ensure that you’re up to date on golang and node versions for this release, and that you’ve upgraded to the newest version of Cosmovisor that supports the new upgrade handler.
:kiwi_fruit: All dependencies and preparation steps were done before the upgrade.

2 – Evaluate core mainnet functionality. This could include:
2.1. Exercising the new VM functionality of the release by participating in the upgrade
:kiwi_fruit: Upgraded the chain on upgrade block using Cosmovisor on 3 nodes without any issues
2.2 Restarting your node after a successful upgrade
:kiwi_fruit: Restarted the node many times after upgrade with no problems
2.3. Spinning up a node using a state-sync snapshot
:kiwi_fruit: Tested state-sync using our own RPC node.
Logs: agoric-emerynet-7: Spinning up a node using a state-sync snapshot · GitHub
Instructions for state-sync: State sync - kjnodes | Chain services
2.4. Making IBC transactions with testnet tokens
:kiwi_fruit: Created IBC channel between agoric and quicksilver testnets

# Chain: agoric-emerynet-7
  - Client: 07-tendermint-0
    * Connection: connection-0
      | State: OPEN
      | Counterparty state: OPEN
      + Channel: channel-0
        | Port: transfer
        | State: OPEN
        | Counterparty: channel-30
# Chain: rhye-1
  - Client: 07-tendermint-8
    * Connection: connection-7
      | State: OPEN
      | Counterparty state: OPEN
      + Channel: channel-30
        | Port: transfer
        | State: OPEN
        | Counterparty: channel-0

Tested IBC transfers to both sides:
transfer agoric -> quicksilver
tx hash: DAAA7BEE8D7BD970D5A9CE50DF7B86A059E4DBD75E06B63E3BDE1D5811A0ED04
transfer quicksilver -> agoric
tx hash: 29CC31D63D7E76BB6E9CCD886C473307457312BE6DAAD33C9A4D086513A5FFB1
2.5 Exercising on-chain governance parameters
:kiwi_fruit: Created new on chain proposal at #emerynet-governance to test governance module after upgrade

1 Like

Update:

RC3 was released with a Barberry patch and Emerynet has been succesfully upgraded to the agorictest-upgrade-10!

Thanks Emerynet validators for your efforts!

Hi, validators!

The Mainnet1b/Vaults rc3is now live on Emerynet and contains fixes for several issues impacting mainnet, including improvements that should address the increased blocktimes that we have seen over the past few weeks.

As the only change between rc3 and the prior release is the patches included in the Barberry/PismoD release, Agoric OpCo suggests that validators adopt an abbreviated Emerynet qualification period as the release has undergone extensive testing. Though there have been apphash issues over the past few days, those issues are a product of the release process for Barberry and not the existing code.

If any member of the community were to raise an upgrade proposal on mainnet after Emerynet reached 24 hours of stability and they chose an upgrade blockheight that was within a few hours of the close of the voting period, mainnet could be upgraded by this Friday. The schedule decision is ultimately up to validators, and if adopted, this expedited schedule could see a faster, more performant mainnet that triggers fewer alerts just in time for the weekend. :sunny:

1 Like

:loudspeaker: Update for Agoric validators and BLD stakers :loudspeaker:

Proposal 34, upgrade proposal to introduce Mainnet 1B to Agoric-3, is now in the voting period!
See the proposal details on the explorer: Proposal Details | Agoric Block Explorer
Vote using Keplr wallet: Proposal #34 | Agoric | Keplr Dashboard

Validators please note note the following system requirements, and upgrade before proceeding: Ubuntu 22 will be supported, validators running Ubuntu 20 or similar will either need to upgrade their OS to Ubuntu 22+, or upgrade their C compiler to version gcc-10, NodeJS to version 16 LTS, and golang to version >= 1.20.2.

1 Like

Proposal 34 has passed! Passing of the proposal means that Agoric mainnet will be upgraded to Mainnet 1B today, June 19, at ~18:00 UTC.

The proposal had a 58.99% voter turnout, with 99.99% YES votes.

2 Likes

The network upgrade was successful and Agoric mainnet is now in the Mainnet 1B phase!!! :tada: :tada:

Huge thanks to all of the Agoric validators for your efforts making the upgrade a smooth process! :pray:

1 Like