Mechanism & system design
Specifying how a protocol's incentives, issuance, and constraints fit together — and writing that specification down precisely enough to be simulated, tested, and argued with.
We design, simulate, and stress-test cryptoeconomic systems — turning parameter choices that would otherwise be argued from intuition into evidence a protocol team can act on.
Protocol parameters get chosen in forum threads and governance calls, often on the strength of whoever argues most confidently. Our work is the alternative: model the system, calibrate it to real data, sweep the choices, and hand the decision-makers a defensible answer with its uncertainty attached.
Specifying how a protocol's incentives, issuance, and constraints fit together — and writing that specification down precisely enough to be simulated, tested, and argued with.
Building executable models of live systems in cadCAD, so a proposed change can be run against years of synthetic history before it is run against real value.
No single forecast survives contact with a market. We sweep the parameter space, score every candidate against explicit goals, and report which choices hold up across the scenarios that could plausibly happen.
On-chain and market data, ingested and reconciled, then used to calibrate models against what actually happened rather than what a whitepaper assumed would.
Every engagement runs the same pipeline. It is deliberately boring: the value is that each stage produces an artefact the next stage — and any reviewer — can check.
State the goals the system has to meet, and the invariants it must never violate, as testable propositions.
Encode the mechanism and the agents that respond to it as an executable cadCAD model.
Fit behavioural parameters against historical on-chain and market data, not against assumption.
Run the model across a cartesian grid of candidate parameters and plausible market scenarios.
Put every run through automated gates that fail loudly when the model quietly stops meaning anything.
Report which choices are robust, which are fragile, and where the evidence runs out.
Every run must clear all four
Asserts every swept parameter actually reaches the state-transition math. Catches the parameter that is being varied and silently ignored.
Asserts every swept axis moves at least one target metric. A parameter that changes nothing is either inert or misconnected.
Asserts the physical invariants hold at every step — supply is conserved, stake cannot exceed it, nothing is created by an accounting slip.
Recomputes every number quoted in a memo directly from the result data. A claim that cannot be reproduced does not ship.
We work with protocol foundations and teams whose parameter choices carry real consequences. The current flagship is a multi-phase engagement with the Avalanche Foundation.
Parameter Selection Under Uncertainty for staking robustness
A digital twin of the Avalanche staking subsystem, built to answer a governance question with evidence instead of argument: which validator and delegator yield parameters keep the network secure and the token sound across the market conditions that could plausibly occur — not just the one that was assumed.
Optimisation goals
Specification
The published research base for the Avalanche engagement: systems architecture, the Phase II proposal, and the supporting notes, kept as a linked knowledge graph rather than a stack of PDFs.
Mechanism design and simulation for continuous funding that releases against thresholds rather than in lump-sum grant rounds.
A simulator for curve designs that damp volatility shocks instead of transmitting them straight through to the token price.
Empirical comparison of public-goods token designs and their realised distribution outcomes, from on-chain data.
Our models, libraries, and analysis code are open. If we claim a parameter choice is robust, the code that produced that claim should be sitting where you can run it yourself.
Reference library
Methodology, worked examples, and the reasoning behind the tooling — written to be usable by someone building their own model, not only by someone reading ours.
pip install condingOpen the library