This might seem obvious to some, but this article introduces a new conceptual model for examining DAOs: by looking at the context of the costs of cross-program invocation. Cross-program invocation is a Solana term to mean calling code external to the code that you’re currently using. In Ethereum, this is simply calling an external contract. The engineering externalities of web3 incentivise DAOs to exist to fight the constantly oncoming stream of code rot since this fixed cost exists. This article explores that this unfortunate reality has a positive side effect that strengthens the space at large.
Emergent complexity is when simple primitives (ie, building blocks like cells) become complex things (ie, a human body). In the animal world, mating begetted the concept of value and competition. Competition created simple devices to understand value, and the capacity for material achievement, which incentivised the creation of a shared measurement of value, currency, to simply understand value. Currency became a vehicle for the social organisation potential for a “culture”, a broader representation of the values and attitude to new ideas in a human organism at scale.
Scientists that study complex things observe that randomness, redunancy, and simplicity, are how complex things reorder and restructure themselves to better suit their environment. Reusing the biological context, when DNA is brought together to build a human being, first the vehicle for the delivery of information for the creation of the DNA competes with itself in a hostile environment to achieve the blurry goal of success. Evolutionary systems are always like this: the system randomly competes with itself in a competition to fit the structure at large. Machine learning is like this, and prediction markets, the most effective decision-making system, is like this. Programmers are aware that a complex system can be made more efficient and reliable by simply introducing randomness.
Web3 is like this at a macro view. On Ethereum we receive investment to build things for users whom we don’t understand. From the system’s (the web3 on-chain world) perspective, these users are random. Ethereum competes with itself to build the best on-chain ecosystem. In Ethereum owing to the culture, the best actors share information, strengthen each others understanding of reality, all the while competing with each other to be the best. At large Ethereum competes with Solana for cheapness and ease of use (this could include throughput, but the rollup-centric roadmap means they’re not competing directly on this front). Ethereum dapps remain simple in that we classify them according to well-understood nomenclature (is this a LST, a money market, a AMM, etc).
There is, however, a thorn in the backside of the space in the comparison to biological systems: the potential for DAOs to completely screw up the simplicity and natural competition of the space with upgrades. For example, on Blast, when the most recent hack (that I am aware of) happened, the team intervened and froze the chain. Obviously pausing it had the knock-on effect of liquidations that were avoidable, but it also introduced uncertainty in that the team protected a preferred player in the competition at large perspective on the chain. A hack might’ve incentivised a better organisation to come up with a better internal culture that would’ve prevented it from happening in the first place.
These DAOs exist for an obvious reason: new facts become knowledge, and they must be reacted to. But why do we need this? The actual reason, beneath it all, is that cross-program invocations are initially expensive. Calling a new contract is a fixed cost to warm up the external code, owing to the engineering realities of memory access. If that reality didn’t exist, and cross contract interaction did not have a fixed cost, we would have could have very simple (and abstract) tool of understanding reality: simply calling view functions on top of existing simple contracts. A view function is a tool to consolidate points of information in a simple way. Programmers intuitively understand that you learn information about users using a key value mapping of their address + the program’s intention (ie, do they LP on this position?). A million view functions would mean complex facts understood the same way. A million simple functions that do one thing each would mean a simpler security surface, which would deincentivise another element of DAOs: mitigating broken code.
A diasporic petri dish of views would mean more and more abstract ways of understanding facts about users. We could have millions of simple contracts deployed that perform the behaviour of various lenses on existing facts about users. Solana’s approach of shared memory that you pass around, declaring the intention of the scope of your use (and the environment enforcing this) is great in this respect: you could simply pass around the state and interrogate it how you please. It benefits from the natural evolution of the way that we interact with Unix, and the presumably shared learning that took place beforehand. Sui’s approach is similar, but presumably better supporting of parallelisation at the expense of the free cross-program invocation context we explore here: memory access is done purely with objects that suit primitives that we intend to use – records are supported excessively.
DAOs exist to rent-seek by need to fight the oncoming stream of code rot. Since things must be inherently complex owing to the cost of cross-program invocation, DAOs must be independently funding themselves to pay for maintenance. A piece of code with an upgrade path implies the need for human intervention. Which implies the need for a DAO. Which implies the need for someone to fund the DAO. Which implies the need for someone to seed the DAO with funding (or for someone to bootstrap). Which implies that someone might see an article of someone getting funded, and becoming interested in web3 for the first time. This loop of rent-seeking creates an opportunity for someone to naturally seek to compete with the existing system. They see the fees earned by the platform, they want to take a piece of it themselves, a fresh perspective to problems arises, which strengthens the resilience of the broader ecosystem.
This is one reason why Sui’s unique approach to upgrading might be an issue: upgrades version and release a new API over something existing, and the old path is still accessible. Will this simple approach that actually reduces the uncertainty of the upgrade path create problems for the ecosystem at large owing to less maintenance spend to build on-chain?
Who knows? Competition implies redundancy of offering. More DAO rent-seeking means more money flowing in, and more money flowing in means more competition. More opportunity for change and randomness makes the system at large safer and better. All because we have a fixed fee for calling cold contracts.