--- title: Oracle review tags: Oracle status: Draft --- # Oracle review ## Things to research - Gas estimation. - Gas amount depends on previous reports (contract state)? - Report structure - Static array length - Dynamic array length depends on gas amount - How extra data quorum works. - What if there are several parts of extra data with same type. - Separate modules into processes. - Версия Оракула прибита к версии контракта. Для апдейта - нужно выкатить мажорную верию и попросить Oracle Holders параллельно поднять её. ## Entrypoint same for all modules Responsobility: - Variables sainity checks. - Infinity cycle - All healthchecks ## Accounting Cycle: - Check contract and consensus version - Oracle state: - Ready for hash report - Build report. - Send hash to Contract - Ready for data to be reported - Build report. - Check hash with Oracle's contract if changed send new hash. - If consensus hash == oracle's hash - send report data - Ready for list of validators to be reported (WIP) - Oracle finalized and all data delivered. Wait for next epoch. ### Calculations - Bunker mode. - How to associate lido slashed validators to withdrawal requests, beacuse slashed epoch can't be calculated `withdraw = max(validator.withdrawable_epoch, Epoch(epoch + EPOCHS_PER_SLASHINGS_VECTOR))` ## Ejectior Cycle: - Check contract and consensus version - Oracle state: - Ready for hash report - Build report. - Send hash to Contract - Ready for data to be reported - Build report. - Check hash with Oracle's contract if changed send new hash. - If consensus hash == oracle's hash - send report data - Oracle finalized and all data delivered. Wait for next epoch. ## Price balancer Move to separate daemon. - Согласовать с протокольной командой - Write bot - Test bot - Deploy smart contracts on testnet - Deploy testnet - Ask devops for capacity - Deploy prod - Build dashboard and alerts Source: https://github.com/lidofinance/lido-oracle/blob/ae034e3dfe8c98c66d9fbfa88a097c6fe1a75b99/src/modules/steth_price_balancer.py