# NNS Updates: May 12 - CMC Hotfix

**URL:** <https://forum.dfinity.org/t/nns-updates-may-12-cmc-hotfix/19943>\
**Category:** Developers\
**Tags:** nns\
**Created:** [May 12, 2023, 10:17pm UTC](https://forum.dfinity.org/t/nns-updates-may-12-cmc-hotfix/19943 "2023-05-12T22:17:03Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![DanielThurau](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/danielthurau/32/3879_2.png) [@DanielThurau](https://forum.dfinity.org/u/DanielThurau)\
**Post date:** [May 12, 2023, 10:17pm UTC](https://forum.dfinity.org/t/nns-updates-may-12-cmc-hotfix/19943/1 "2023-05-12T22:17:03Z")

</div>

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](https://forum.dfinity.org/t/new-exchange-rate-mechanism/14543). 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](https://wiki.internetcomputer.org/wiki/Node_Provider_Remuneration) and [maturity modulation](https://wiki.internetcomputer.org/wiki/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

````auto
## 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

````

---

<div class="post-metadata">

**Author:** ![DanielThurau](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/danielthurau/32/3879_2.png) [@DanielThurau](https://forum.dfinity.org/u/DanielThurau)\
**Post date:** [May 13, 2023, 1:24am UTC](https://forum.dfinity.org/t/nns-updates-may-12-cmc-hotfix/19943/2 "2023-05-13T01:24:04Z")

</div>

## Updated Hotfix Proposal

Proposal [122286](https://dashboard.internetcomputer.org/proposal/122286) was submitted with an empty upgrade argument in the proposal. This proposal will be rejected by Dfinity.

Proposal [122287](https://dashboard.internetcomputer.org/proposal/122287) was submitted with the following updated upgrade arg.

````auto
## 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

````
