This is very interesting! I agree with @davehrlichman, the sewing meme is great.
I have a couple thoughts.
First, one of the really beneficial properties that we get from ERC1155 is that a single hat can have multiple wearers. This is valuable for the purposes of granting authorities to those wearers via the hat, since all you have to do is set up the token gating once and then it works for everybody wearing that hat.
Similarly, I think there’s a lot of value in ensuring that the same role — as I’ll define here as a unique permutation of responsibilities, authorities, and accountabilities — is manifested as the same hat. The primary benefit is that we can identify — eg via the hat id — that role without ambiguity.
Meanwhile, I think @punterored.eth’s point is a really good one. There’s something very interesting about infusing a personal expression of identity into one’s own hat, even if that hat is also worn by multiple other people.
So we have a challenge: how might we enable personal expression by wearers of the same hat?
@punterored.eth suggests two potential approaches:
-
Change the metadata of each person’s hat. Unfortunately, this is not feasible since changing the metadata of one person’s hat will change the metadata for everybody’s hat of the same id. It’s the same hat.
-
Mint separate hats. This can work, but we want to be careful that we don’t ruin the beneficial properties I described above. Fortunately, the protocol gives us some helpful tools.
The primary idea is to take advantage of the protocol’s semantic id system. Every hat id provides a lot of information about the hat, including its exact location within its tree, which level its at, as well as the id of all of its admins. Another way to say this is that every child of a given hat is in the namespace of that hat.
Let’s take our Hats Community Member hat as an example. It has id 1.2.1.1
. Any hat that has id 1.2.1.1.x
is guaranteed to be a direct child of — in the namespace of — the Hats Community Member hat. There can be up to 65,500+ of these direct children.
Any wearer of the Hats Community Member hat can create a child hat. This is already the case today; it’s how the protocol works. But this could be made easier and standardized by creating a utility that enables wearers of the Hats Community Member hat to create a new personalized child hat, complete with custom details and image. Everybody would then know that a given community member x
’s hat 1.2.1.1.x
is the “sewn” version of their Hats Community Member hat.
We would want to ensure that such hats took the following form:
- immutable — to ensure that no other Hats Community Member hat wearers could change somebody else’s sewn hat, or transfer anybody else’s sewn hat to somebody else.
- maxSupply = 1 — to ensure that each sewn hat is unique and personalized to the community member
- eligibility tied to continuing to wear the Hats Community Member hat — to ensure that if you lose or renounce your community hat, for whatever reason, you also lose your personalized sewn hat
We may also want to establish a registry to create a clear 1-1 mapping between individual community members and their sewn hats, primarily to ensure that if they temporarily lose and then regain their Hats Community Member hat, they can regain their sewn hat.