NNS Updates: May 12 - CMC Hotfix

The DFINITY NNS Team has submitted a proposal to upgrade the CMC Canister on Friday, 2023-05-12.

Hotfix

This hotfix fixes a bug introduced in the last CMC upgrade. Before the last upgrade of the Cycles-Minting Canister, an exchange rate proposal was required to update the ICP/XDR rate as well as the 30-day average ICP/XDR rate (accessible through the endpoints get_icp_xdr_conversion_rate and get_average_icp_xdr_conversion_rate, respectively).

After the upgrade, the CMC started requesting the ICP/XDR rate periodically from the exchange rate canister. While the ICP/XDR rate has been updated successfully using this new mechanism ever since the upgrade, a bug prevented an update of the average ICP/XDR rate. The fix is simple: The code to update the average ICP/XDR rate is now called whenever a new, valid ICP/XDR rate is received, regardless of the source of the rate.

What is the impact of this bug? The average ICP/XDR rate is used to determine node provider remuneration and maturity modulation. Since only the rates for three days (May 9 - May 11) are not considered in the 30-day average rate, a back-of-the-envelope calculation (using the start-of-day rates on these days) reveals that the reported 30-day average ICP/XDR rate is, in fact, slightly too high, with a relative error of less than 1%, so the impact on node provider remuneration and maturity modulation is small.

Submitted Proposal

## Proposal to Upgrade the Cycles-minting Canister
### Proposer: DFINITY Foundation
### Git Hash: e813c43a337a26c026c2f2ec19099bd2036e7280
### New Wasm Hash: fc1655302a81cd1b7148a6f66479b2830bd0d567d04780720e7bdd6c5b124fb5
### Upgrade Args Hash: 0fee102bd16b053022b69f2c65fd5e2f41d150ce9c214ac8731cfaf496ebda4e
### Target canister: rkp4c-7iaaa-aaaaa-aaaca-cai
---
## Features
- Fix a bug in the Cycles-Minting Canister where the average ICP/XDR rate was not updated.
## Release Notes
```
$ git log --format="%C(auto) %h %s" 2ef275ecee0b8e2e6eba06d13ff4585ba8957f2e..e813c43a337a26c026c2f2ec19099bd2036e7280 --  ./rs/nns/cmc
 6f1ce5e472 bugfix: Moving update_recent_icp_xdr_rates into set_icp_xdr_conversion_rate
```
## Candid Post Upgrade Args
```candid
()
```
### Validating Candid Args
Verify that the hash of the args matches proposal contents.
`didc encode '()' | xxd -r -p | sha256sum`
## Wasm Verification
Verify that the hash of the gzipped WASM matches the proposed hash.
```
git fetch
git checkout e813c43a337a26c026c2f2ec19099bd2036e7280
./gitlab-ci/container/build-ic.sh -c
sha256sum ./artifacts/canisters/cycles-minting-canister.wasm.gz
```
## Current Version
- Current Git Hash: 2ef275ecee0b8e2e6eba06d13ff4585ba8957f2e
- Current Wasm Hash: 3ff03b40f1c49b06e91a3c31879a21f6cead42be71d194d4d7e7becb8c60bd42
5 Likes

Updated Hotfix Proposal

Proposal 122286 was submitted with an empty upgrade argument in the proposal. This proposal will be rejected by Dfinity.

Proposal 122287 was submitted with the following updated upgrade arg.

## Proposal to Upgrade the Cycles-minting Canister
### Proposer: DFINITY Foundation
### Git Hash: e813c43a337a26c026c2f2ec19099bd2036e7280
### New Wasm Hash: fc1655302a81cd1b7148a6f66479b2830bd0d567d04780720e7bdd6c5b124fb5
### Upgrade Args Hash: 5349c151a3353dd72f924409229c28f2ab1d9d70f8f8c7e81842ab5e18757803
### Target canister: rkp4c-7iaaa-aaaaa-aaaca-cai
---
## Features
- Fix a bug in the Cycles-Minting Canister where the average ICP/XDR rate was not updated.
## Release Notes
```
$ git log --format="%C(auto) %h %s" 2ef275ecee0b8e2e6eba06d13ff4585ba8957f2e..e813c43a337a26c026c2f2ec19099bd2036e7280 --  ./rs/nns/cmc
 6f1ce5e472 bugfix: Moving update_recent_icp_xdr_rates into set_icp_xdr_conversion_rate
```
## Candid Post Upgrade Args
```candid
(record { governance_canister_id = principal "rrkah-fqaaa-aaaaa-aaaaq-cai"; ledger_canister_id = principal "ryjl3-tyaaa-aaaaa-aaaba-cai"; exchange_rate_canister = opt variant { Set = principal "uf6dk-hyaaa-aaaaq-qaaaq-cai" } })
```
### Validating Candid Args
Verify that the hash of the args matches proposal contents.
`didc encode '(record { governance_canister_id = principal "rrkah-fqaaa-aaaaa-aaaaq-cai"; ledger_canister_id = principal "ryjl3-tyaaa-aaaaa-aaaba-cai"; exchange_rate_canister = opt variant { Set = principal "uf6dk-hyaaa-aaaaq-qaaaq-cai" } })' | xxd -r -p | sha256sum`
## Wasm Verification
Verify that the hash of the gzipped WASM matches the proposed hash.
```
git fetch
git checkout e813c43a337a26c026c2f2ec19099bd2036e7280
./gitlab-ci/container/build-ic.sh -c
sha256sum ./artifacts/canisters/cycles-minting-canister.wasm.gz
```
## Current Version
- Current Git Hash: 2ef275ecee0b8e2e6eba06d13ff4585ba8957f2e
- Current Wasm Hash: 3ff03b40f1c49b06e91a3c31879a21f6cead42be71d194d4d7e7becb8c60bd42
3 Likes