Replies: 3 comments 1 reply
-
To me there are a couple of distinct things to think about here. First, there are the onchain contracts that users (clients / webapps) interact with, that result in a new DAO being deployed. These contracts need scripts so that they can be deployed to any arbitrary EVM network. Next, there are the actual implementation contracts, which act as inputs to the above point. In the current code setup, an instance of DAO needs to exists, whose address is passed into DAOFactory, which creates a proxy to that DAO implementation. (side question: if that original DAO instance is upgraded, does that affect all DAOs? i think my mental model of how this works is still not correct). Finally, there is the concept of us (or third-party module creators) creating updates / new versions of their modules. How does that fit into the picture? (Should module code(bases) live in the |
Beta Was this translation helpful? Give feedback.
-
Yes, so I'm thinking one base level deploy script, that generally runs once and deploys the base contracts needed for the system to function (DAOFactory, DAO implementation contract, AccessControl implementation contract, and implementation contracts for any modules that have been built). These implementation contracts can be global and be the implementation contracts for all DAOs that use them. To answer your question regarding DAO instances being upgraded: I have envisioned module codebases that we build will live in the fractal-contracts repo. I also imagine third-party module creators creating PRs on this repo to add new modules and update deploy scripts accordingly. |
Beta Was this translation helpful? Give feedback.
-
Awesome, this sounds good
Is this going to work as new modules are developed in the future? If this "base level deploy script" is added to over time (to include new modules), will it skip over contracts that have already been deployed to the network? I believe it does, just want to be sure.
I'm still confused about this. Can you please write out an explanation detailing all of the (addressable) contracts that will exists on chain after the system is created on chain (factory + implementations are deployed), and then let's say, 2 individual DAOs are created. That would be super helpful for making sure there's a shared understanding of the architecture of everything at play here.
This is probably ok for now, but I really think we should move to a much more generic model. I don't think we should be responsible for, or hold the "keys" to (github merge authorization) this module ecosystem. Again, probably ok for now, but start thinking about what it would mean for the |
Beta Was this translation helpful? Give feedback.
-
My first focus for Fractal this work will be building out a deploy script for the repository that uses Hardhat Deploy:
https://www.npmjs.com/package/hardhat-deploy
My plan is for this script to take all the necessary parameters to fully deploy a DAO and any modules that the user selects through the script. So this script should be added to over time to support various modules as we add build modules and add them to the codebase.
Beta Was this translation helpful? Give feedback.
All reactions