My name is Zargham and I do math things. Today, I would like to offer this community a simple toy example of non-equilibrium dynamics. The reference case is a stylized version of the “Verifiers Dilemma.”
Verifiers spend resources to check transactions and get rewards when they find errors.
Cheaters can profit from cheating but incur losses when caught.
As cheaters know there are verifiers about, the do not cheat but verifiers only profit from verifying if there are cheaters to be caught!
So far I have described the system of rewards and the simple strategies being evaluated, but in order to implement a differential game one must also explicit encode the mechanisms. Mechanisms are the functions that map decisions to changes in the system state.
Unlike in static games, differential games uncouple the mechanisms through which agents change the state, and the rewards or incentives they receive as a function of the current system state. It is exactly this relaxation that allows temporal dynamics to be explored. For readers interested intuitive explanations of the kind of theoretical breakdowns that occur when temporal dynamics are inadequately accounted for, see the writings of NN Taleb.
For this example, these functions need to be properly mapped into a differential game using some custom scientific compilers built by the BlockScience team. Below one can see we need to set up our notion of time and otherwise use dictionaries to make sure all the functions are properly composed in the simulation engine.
Actually calling the simulation once configured is easy!
Our simple verifiers dilemma case is a discrete variant of a preditor-prey system which is known to have oscillations!
Having set up the system with parameters for rewards and penalties we can look at the financial health of the verifier and cheater populations, in light of this oscillation.
One can see that I set it up so that the rewards net out on average, funneling the cheater penalties to verifiers.
However, this is not the end of the story. The non-equilibrium dynamics in this system actually result in a steady state cheating rate.
This not wholly bad because that cheating is in fact the source of steady state ROI for verifiers.
By understanding the temporal dynamics of a game it is possible to get a much clearer understanding of what is going on and to make decisions about trade-offs. In this case, one can monitor and manage cheating rates but through proper routing of the penalties to verifiers to ensure cheating remains bounded and the system stays self-sustaining.
In practice, I prefer the solution like that of Truebit; the persistent cheating problem is solved by introducing forced errors. This creates a continuous incentive for verifiers to be present, driving out steady state error but this eliminates the net revenue balance by introducing an overhead cost for rewarding verifiers to catch the fake errors.
The point of developing scientific python toolkits for differential games was to lower the technical overhead of exploring non-equilibrium dynamics under a wide range of assumptions and conditions. While simple models are great to explore systems, richer models can be built up to handle heterogenous agent populations, adversarial behavior, and systems composed of multiple mechanisms interacting because they have mutual dependence on system state variables.
Thanks for reading.
Credit to Markus Buhatem Koch for coding the Verifier’s Dilemma example, to Joshua E. Jodesty for building the differential games compilers, and to the whole BlockScience team for the body of mathematical, economic and scientific research that made this so easy to demonstrate.