# Offset CSM Performance Oracle report weekday

**URL:** https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077
**Category:** Proposals
**Created:** [January 5, 2026, 3:08pm UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077 "2026-01-05T15:08:09Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![dgusakov](https://dub1.discourse-cdn.com/flex013/user_avatar/research.lido.fi/dgusakov/32/1238_2.png) [@dgusakov](https://research.lido.fi/u/dgusakov)
#### Post date: [January 5, 2026, 3:08pm UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077/1 "2026-01-05T15:08:09Z")

</div>

## Problem

Currently, CSM Performance Oracle (CSM Oracle) reports are due on Fridays after the Accounting Oracle (AO) report. Combined with the fast-lane delay of 6 hours, we frequently end up waiting for the report until OOO hours for EU contributors. This makes it hard to resolve any report issues, both for Lido contributors and Oracle runners.

## Solution

**Offset the CSM Oracle report due day from Friday to Monday and set the fast lane delay to 1 hour to make the cadence more manageable for support.**

## Implementation

### General plan

Changing Oracle report cadence is a bit tricky due to the design of the `HashConsensus.sol` contract. Since `HashConsensus.sol` does not allow a simple change of the report date, it is proposed to do the change in 2 steps:

- Temporarily change CSM Oracle frame from 28 days (6300 CL epochs) to 31 days (6975 CL epochs) and set fast-lane slots to 0 (temporarily disabled).
- Wait for the finalization of one report with the extended frame.
- Change CSM Oracle frame from 31 days (6975 CL epochs) back to 28 days (6300 CL epochs) and keep fast-lane slots equal to 300 (1 hour).

Once the process is finalized, CSM Oracle report due day will be adjusted from Friday to Monday, and the fast lane will be shortened. The only unavoidable consequence is an extended frame in one CSM Oracle report, from 28 days to 31 days. This consequence should not have a significant impact on CSM Operators’ rewards or user experience.

### Execution

By default, changes to the CSM Oracle frame config require an on-chain vote. Since the process is two-phased, corresponding on-chain votes have to be precisely timed. To overcome this inconvenience, we propose using a temporary contract with one-time-use operations to facilitate execution.

- We deploy a contract with pre-set params to execute both phases of the transition.
- We grant `MANAGE_FRAME_CONFIG_ROLE` on CSM’s HashConsensus: [`0x71093efF8D8599b5fA340D665Ad60fA7C80688e4`](https://etherscan.io/address/0x71093efF8D8599b5fA340D665Ad60fA7C80688e4) to the deployed contract within an on-chain vote.
- Once the vote is executed, we monitor the blockchain and invoke the Phase 1 method once the following CSM Oracle report is finalized to set the frame size to 31 days and set the fast lane to 0.
- Once the CSM Oracle report with the extended frame is finalized, we invoke the Phase 2 method to reset the frame size to 28 days and revoke a role from the temporary contract.

### Contract description

It is proposed to have a temporary contract to facilitate the operations. The contract code can be found [here](https://github.com/lidofinance/community-staking-module/blob/develop/src/utils/TwoPhaseFrameConfigUpdate.sol). The general idea of the contract is as follows:

- Contract params and safety limits are set upon contract deployment.
- Once the role is granted to the contract, Phase 1 can be invoked:
  - Check that Phase 1 was not invoked before.
  - Check that the report for the expected `refSlot` is finalized.
  - Check that the expected `refSlot` has not passed (otherwise, we will end up with the delayed report).
  - Change frame config to the one set for Phase 1.
  - Mark Phase 1 as executed.

- Once the first report with the new frame config is finalized, we invoke Phase 2:
  - Check that Phase 1 was invoked before.
  - Check that Phase 2 was not invoked before.
  - Check that the report for the expected `refSlot` is finalized.
  - Change frame config to the one set for Phase 2.
  - Renounce the role from the contract.
  - Mark Phase 2 as executed.  
Invocation of both phases is permissionless. Internal limits ensure that the methods can not be called twice or called at an inappropriate moment in time.

### Contingency plans

#### Phase 1 can not be executed due to a delay in the on-chain vote execution

We renounce the role from the contract using the fallback method, abandon the contract, and deploy a new one. In the next on-chain vote, we grant the role to the new contract and restart the process.

#### Phase 1 can not be executed due to a missed report for the expected `refSlot`

We renounce the role from the contract using the fallback method, abandon the contract, and deploy a new one. In the next on-chain vote, we grant the role to the new contract and restart the process.

#### Phase 2 can not be executed due to a missed report for the expected `refSlot`

We abandon the contract and apply the new frame config in the next on-chain vote or restart the process with the new contract to ensure that the desired cadence for the CSM Oracle report can be reached upon successful execution of both phases of the new contract.

## Audits

The contract code is currently undergoing a security audit by [MixBytes](https://mixbytes.io/) as a part of the [GRAPPA](https://research.lido.fi/t/establishment-of-the-guild-for-review-and-assessment-of-protocols-and-applications-grappa/8997) initiative. The audit report, along with the deployment verification, will be published before the corresponding on-chain vote.

---

<div class="post-metadata">

### Author: ![dgusakov](https://dub1.discourse-cdn.com/flex013/user_avatar/research.lido.fi/dgusakov/32/1238_2.png) [@dgusakov](https://research.lido.fi/u/dgusakov)
#### Post date: [January 7, 2026, 3:48pm UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077/2 "2026-01-07T15:48:01Z")

</div>

The contract described has been deployed on mainnet - [Address: 0xb2B4DB14...239f110C1 | Etherscan](https://etherscan.io/address/0xb2B4DB1491cbe949ae85EfF01E0d3ee239f110C1). More information about deployment can be found in this PR - [chore: CSM Two-phased Frame Config Update artifacts on mainnet by dgusakov · Pull Request #656 · lidofinance/community-staking-module · GitHub](https://github.com/lidofinance/community-staking-module/pull/656)

Security audit report with the deployment verification will follow soon.

---

<div class="post-metadata">

### Author: ![dgusakov](https://dub1.discourse-cdn.com/flex013/user_avatar/research.lido.fi/dgusakov/32/1238_2.png) [@dgusakov](https://research.lido.fi/u/dgusakov)
#### Post date: [January 14, 2026, 9:25am UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077/3 "2026-01-14T09:25:23Z")

</div>

The audit by MixBytes is finalized and published:

- MixBytes GitHub - [audits\_public/Lido/Utility contract for CSM Oracle report day offset at master · mixbytes/audits\_public · GitHub](https://github.com/mixbytes/audits_public/tree/master/Lido/Utility%20contract%20for%20CSM%20Oracle%20report%20day%20offset)
- Lido Audits GitHub - [audits/MixBytes CSM Performance Oracle Security Audit Report 01-26.pdf at main · lidofinance/audits · GitHub](https://github.com/lidofinance/audits/blob/main/MixBytes%20CSM%20Performance%20Oracle%20Security%20Audit%20Report%2001-26.pdf)

---

<div class="post-metadata">

### Author: ![Kate\_Alekseeva](https://dub1.discourse-cdn.com/flex013/user_avatar/research.lido.fi/kate_alekseeva/32/4891_2.png) [@Kate\_Alekseeva](https://research.lido.fi/u/Kate_Alekseeva)
#### Post date: [January 20, 2026, 11:21am UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077/4 "2026-01-20T11:21:16Z")

</div>

**The [Vote #198](https://vote.lido.fi/vote/198) has started!** ✨

The vote will remain open for your “For” or “Against” input until the end of the main phase on **January 23 at 11:09 UTC.**

For instructions on how to verify the vote items, please follow [this guide](https://enchanted-direction-844.notion.site/How-to-check-the-Lido-DAO-on-chain-vote-198-2ecbf633d0c9805685e8efe0281330f0).

---

<div class="post-metadata">

### Author: ![nikita.p](https://dub1.discourse-cdn.com/flex013/user_avatar/research.lido.fi/nikita.p/32/5751_2.png) [@nikita.p](https://research.lido.fi/u/nikita.p)
#### Post date: [January 29, 2026, 1:52pm UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077/5 "2026-01-29T13:52:09Z")

</div>

**[Dual Governance proposal #8](https://dg.lido.fi/proposals/8), submitted in [Vote #198](https://vote.lido.fi/vote/198), has passed and been enacted!**

The following on-chain change has been applied:

- Grant `MANAGE_FRAME_CONFIG_ROLE` on [CS HashConsensus](https://etherscan.io/address/0x71093efF8D8599b5fA340D665Ad60fA7C80688e4) to TwoPhaseFrameConfigUpdate contract [0xb2B4DB1491cbe949ae85EfF01E0d3ee239f110C1](https://etherscan.io/address/0xb2B4DB1491cbe949ae85EfF01E0d3ee239f110C1)

---

<div class="post-metadata">

### Author: ![vgorkavenko](https://dub1.discourse-cdn.com/flex013/user_avatar/research.lido.fi/vgorkavenko/32/3168_2.png) [@vgorkavenko](https://research.lido.fi/u/vgorkavenko)
#### Post date: [February 17, 2026, 9:26am UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077/6 "2026-02-17T09:26:01Z")

</div>

The first phase is executed - [Ethereum Transaction Hash: 0x325ac09d51... | Etherscan](https://etherscan.io/tx/0x325ac09d51e9287fde81cb936e47ea99eb4ad0c28aed7450c1b864db45e69ba1)

---

<div class="post-metadata">

### Author: ![dgusakov](https://dub1.discourse-cdn.com/flex013/user_avatar/research.lido.fi/dgusakov/32/1238_2.png) [@dgusakov](https://research.lido.fi/u/dgusakov)
#### Post date: [March 16, 2026, 3:04pm UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077/7 "2026-03-16T15:04:58Z")

</div>

Restore phase has been executed - [Ethereum Transaction Hash: 0x08db582ae9... | Etherscan](https://etherscan.io/tx/0x08db582ae9eee85b31432cd7f8e68716e4b0f6ba5e7ff0a7146cf5a73476a7a6/)

CSM Performance Oracle frame config was successfully restored to 28 days, with 1 hour fast lane delay.

The contract [Address: 0xb2b4db14...239f110c1 | Etherscan](https://etherscan.io/address/0xb2b4db1491cbe949ae85eff01e0d3ee239f110c1) is now fully bricked and corresponding role has been revoked from it.

---

<div class="post-metadata">

### Author: ![Kate\_Alekseeva](https://dub1.discourse-cdn.com/flex013/user_avatar/research.lido.fi/kate_alekseeva/32/4891_2.png) [@Kate\_Alekseeva](https://research.lido.fi/u/Kate_Alekseeva)
#### Post date: [March 16, 2026, 3:14pm UTC](https://research.lido.fi/t/offset-csm-performance-oracle-report-weekday/11077/8 "2026-03-16T15:14:06Z")

</div>


