A rate passes three sets of checks on chain before a contract settles on it. This page lists every one, and what happens when a check fails.
1. When the oracle contract receives a submission
| Rule | If it fails |
|---|
| The operator is registered | Rejected |
| The contract has reached its expiry | Rejected as too early |
| The rate is above zero | Rejected |
| At least 5 minutes since this operator's last submission for this contract | Rejected (cooldown) |
| The contract has no agreed rate yet | Rejected: an agreed rate is final |
2. When the oracle looks for agreement
| Rule | If it fails |
|---|
| Only submissions under 15 minutes old count | Older ones are ignored |
| Only submissions from operators still registered count | Removed operators' submissions are ignored |
| At least 2 (the quorum) submissions within 1% of each other | No rate is agreed yet; see Agreement and averaging |
3. When the pool settles
| Rule | If it fails |
|---|
| The rate was agreed for this contract's exact expiry | Settlement is refused |
| The rate is between 0.5 and 2 times the rate at purchase | Settlement is refused and the contract waits for a valid rate |
| The oracle requires at least 2 operators, at most 1% spread, submissions under 15 minutes old and at least 5 minutes between an operator's submissions | The pool will not use that oracle at all |
A refused rate never pays anyone. The contract stays active, its reserve stays locked, and it settles once a valid rate is agreed. See Data failures.