1.7 KiB
1.7 KiB
The Solana FluxAggregator program is modeled after the FluxAggregator.sol contract in ChainLink.
Data submissions happen rounds. In each round minSubmissions
must be achieved to arrive at an answer.
- An oracle must wait restartDelay rounds before being allowed to initialize a round
- restarDelay should default to
oraclesCount/3
- restarDelay should default to
- Oracles should submit a new round when value deviates at least minDeviation
from the latest answer.
- minDeviation should default to 0.1%
- This is not enforced by the smart contract
latestAnswer
should return the median, as well as thelatestAnswerResolvedTime
timestamp- A round updates the latest answer when minSubmissions is reached, taking the median
- Each additional answer in the same round below maxSubmissions would recalculate the median, and update the latest answer
- If rounds stop updating (i.e. not enough oracles to reach
minSubmissions
), the latest answer is always the last round that had resolved - An oracle cannot submit to the previous round. The transaction will revert, and the oracle should retry
Wont implement:
- Oracle can start a new round only if the round fails to resolve an answer after
roundTimout
(while satisfyingrestartDelay
)- Reason: restartDelay is sufficient
- An authorized requester can start a new round at any time, limited by
requesterRestartDelay
- Reason: just ask oracle do it
- Feedback: Oracles can submit to the previous round if the current round has not reached minSubmissions
- Reason: This would complicate implementation, and doesn't provide much value, since on solana tx are really cheap. Reverted TXs are no big deal.