There are some extremely large projects on the Ethereum blockchain, like Augur. These dapps aren't short 100-line smart contracts, and are not uploaded once to the blockchain and done.

Question: how are new features of a dapp iteratively released to the blockchain? One option is that contracts can be updated through a pointer-to-implementation idiom, where the contract owner can update the original contract to delegate its execution to newer contract addresses, but even then, that feels like it'd become spaghetti really quickly in large projects.

1 Answer 1


I'm not familiar with used architectural patterns to add new feature to an existing set of smart contracts. Contracts can be upgraded with certain architectural patterns, so perhaps that is used to add new functionality.

Another option is real versioning: for example in Uniswap. Uniswap created version V1 of its contracts, noticed that things work and found things to improve, and released a new version V2. V1 and V2 are not connected in any way, I believe.

I also feel like various "allow new functionality to be plugged in later" patterns would leave to quite a horrible codebase. Even if it worked without bugs, it might be difficult to onboard new developers when the codebase is that complicated. So, if at all possible, I would prefer the Uniswap approach.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.