Smart Contract Price Oracles - The Best Approach?



It’s nice to see research being dedicated to the price oracle problem. Yet, this proposed solution falls prey to the “epsilon noise window” problem that has often surfaced in discussions within Augur community. Since there is never an exact “real” price at any given moment there is an epsilon of noise. Any set of X honest participants will not report the same price (from simple penny discrepancies to dollars), yet a positive epsilon radius exists where the honest reports will fall somewhere in the 2epsilon window. Yet, when the median falls within the 2epsilon window of truth, honest reporters will disagree whether the “real value” is above/below the median and therefore when that happens honest reports will be unjustly penalized into a spiraling cycle that eventually leads to deviance and arbitrage.


Yeah, this issue is why I think it is important to have the precision of the output adapt to the size of the intervals people submit/particularly the sizes of intervals submitted by people that ultimately wind up being ruled coherent. (See my comments here: - the model in the more recent article has the same property.) This way, if you want to be conservative, you submit an interval that properly contains the 2epsilon window. This should generally guarantee that 1) you don’t lose your submitter deposit and 2) the oracle outputs some value in the 2epsilon window. So if you are some party that just has an interest in the oracle returning a correct output, you can adopt this strategy.

Then the question is what happens when people tempt fate and submit (unjustifiably) smaller intervals. For the submitters, they have a signficant likelihood of the final answer landing outside their interval and losing their deposit. On the other hand, if they are lucky and the answer winds up in their interval, they get a larger proportion of the deposits lost by incoherent submitters. Exactly what equilibrium you wind up falling in for rational submitters trying to maximize their return depends on how you model the juror voting patterns (i.e. once you get in the 2epsilon window, you should essentially model the output being drawn randomly, but it isn’t clear which distribution to use).

There is also of course the question of what happens to the jurors who get drawn for a dispute over whether the value is higher or lower than some value in the 2epsilon window, and whether this system is fair to them/would encourage them to participate. It is true that honest jurors will lose money in this situation sometimes as they are being asked to rule on something unknowable and essentially the best thing they can do is throw a weighted coin to choose. However, they are playing a positive sum game - they are trading PNK between each other and are getting fees from the submitters who are ruled wrong, so as long as the jurors have a positive return on average they should be encouraged to participate.