### Oracle [draft notes]
* Checkpoint every **50400** blocks = 1 week (we can set every 50000 blocks to have an exact number, it would be necessary to decide in which block to start)
* It is necessary to procress blocks secuentialy from the last checkpoint since we must apply the rewards or penalties as they have occurred
* For **every block**:
- Check the **validator ID** of the block:
- **if** the validator **doesn't belongs** to the pool -> **do nothing**
- **if** the block's has been **missed** (the validator is not banned but loses his accumulated reward)
- increase score = 15
- strike system
- at the moment that you miss two consecutive blocks (score > 15):
- divide the **pending** value of this validator by **all active validators** and add it to each one's pending.
- **pending = 0**
- **else** check **the block's fee recipient**
- if it **has not** sent the ether to the pool
- the fee has been sent to another address -> **Ban validator**:
- we **divide** the **pending** value of this validator by all **active validators** and we **add** it to each one's pending.
- **we set pending = 0**
- **Unbann balance = missing amount**
(the fee recipient may have kept it or the MEV may have sent it to an address other than the pool, he needs to return this amount to the pool in order to re-enter the pool)
- if the **fee has been sent** to the pool
- we divide the fee received by all active validators and we add it to each one's pending
- we consolidate the outstanding balance of the validator ID:
- available balance += pending
- pending = 0
- set score = -5 ( only score > 0)
- check if **ether has been sent** to the pool and does not come from a block fee:
- if it comes from the **unban method** (the amount has to be exact and correspond to the negative value of validator)
- divide this **amount by all active validators** and add it to each one's pending
- **unband the validatorID**
- if the ether comes "anonymously"
- divide this amount by all active validators and add it to each one's pending.