-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hat mutability research #3
Comments
Properties that could be changed after hat creation:
The main design question is who is authorized to change it. Since the entire branch of admins of a given hat have admin control over the hat, this introduces a lot of questions about whether there should be additional parameters determining which of those admins have updating rights. For example, in theory we could give hat creators the ability to restrict who can change the hat
This could get quite messy, so we need to figure out what makes most sense via discovery. My recommendation is to start with the simplest option and potentially expand from there as we discover use cases. |
Another dimension to play with could be the number of times that a property could be changed. Allowing only 1 change following creation, for example, could give DAOs the flexibility they need while limiting the governance / attack surface. |
If we do want to enable configuration of this stuff, we do theoretically have room to store up to 96 bits of config in the hat struct without needing to add an extra storage slot: struct Hat {
// 1st storage slot
address eligibility; // can revoke Hat based on ruling; 20 bytes (+20)
uint32 maxSupply; // the max number of identical hats that can exist; 24 bytes (+4)
bool active; // can be altered by toggle, via setHatStatus(); 25 bytes (+1)
uint8 lastHatId; // indexes how many different hats an admin is holding; 26 bytes (+1)
// 2nd storage slot
address toggle; // controls when Hat is active; 20 bytes (+20)
uint96 config; // --- NEW
// 3rd+ storage slot
string details;
// optional
string imageURI;
} What could we do with those 96 bits? A few ideas:
|
A few other ideas:
|
Mutating a hat's If there isn't a clear use case for enabling this custom control, I recommend against the feature for the sake of maintaining complexity of the system. That being said, having a That being said, is mutability of hats relevant to any use case(s) that currently have traction? Seems simple to include this feature in a V1+N when there's a clear demand for it. |
simple mutability addressed in #66 |
Currently, hats are immutable in the sense that their properties -- ie max supply, details, imageURI, toggle, and eligibility -- cannot by changed once the hat is created.
This has the benefit of limiting the governance / attack surface for hats, but at the cost of flexibility for DAOs. For example, a DAO may want to add mechanistic eligibility logic to an existing hat after experimenting manually with several candidate approaches. Currently, this would require creating and minting a brand new hat.
This is a research issue, with the goal of exploring the following questions:
The text was updated successfully, but these errors were encountered: