Making oracles for Uqbar on Urbit
This plan is adapted from Chainlink OCR described here: https://research.chain.link/ocr.pdf
Oracle contract is simple: it takes in a result value, and a bundle of attestations. The contract checks these signatures and updates the stored information only if the signatures are all valid, recent enough (some number of ETH blocks) and the total reaches the consensus threshold for this data feed. Defined inside the contract is some formula for taking many data observations and averaging them into a final value. This formula can be a simple median, or have mechanisms for removing outliers, etc. The contract provides a scry path for the stored information. This scry path contains options regarding how recent the last update to the stored information must have been, with recency measured in ETH block height.
With this contract deployed on Uqbar, an off-chain coordination protocol is required to generate these "attestation bundles". The attestations should be limited to planets and