An impossibility theorem on truth-telling in fully decentralised systems

BIS Working Papers  |  No 1117  | 
11 August 2023



Smart contracts are self-executing programmable contracts between two or more parties. Smart contracts do not require a vetting authority because their legitimacy relies on decentralised ledger technologies. However, the implementation of many potentially useful smart contract applications depends upon verifying that some real-world event has taken place. This is a problem. Given its fully decentralised nature, how does a smart contract select what the true state of the world is?


This paper considers a situation where multiple individuals seek to enter into agreements based on the outcome of a real-world event, but where there is no trusted party (ie contractible source) that can be used to determine payoffs. In this case, payoffs must be based on some form of collective agreement on the true state of the world. A truth-telling problem arises in this environment, as agents report the state of the world that is most beneficial for them.


Our general result, which applies to simultaneous voting games, is that the only way that individuals are willing to vote according to the true state is if they are completely indifferent as to what the true state should be. That is, their payoffs cannot depend on their actions or their individual reports. This general result suggests that, in the absence of some additional motivation (eg an inherent preference toward truth-telling) which links individual payoffs to the truth, there is no way to implement contracts that pay out based on an observed state without a trusted source.


We show that truthful reporting about the realization of a publicly observed event cannot be implemented as a unique equilibrium in a completely decentralized environment. Our work provides a theoretical underpinning of the need for oracles and the related "oracle problem".

JEL classification:  C72, D72, D86, O33

Keywords: decentralized systems, smart contracts, truth-telling, oracle problem