Yes
Discussion
Make PoW fun and you have a game 🤙
I was going to call it "the three witnesses" because you have to verify that they are the same on both devices as witness to your friendship. If they were cartoon and funny with odd expressions, people would have some fun checking what weirdos stood witness to their relationship. If the key derivation function is deterministic it would always remain the same three witnesses.
I like that idea. Deterministic seeding to facial image 🤔 encoding a face shouldn't be too difficult.
I've had trouble thinking up 32 bytes of determinism. But I am sure there is research on facial parameters.
I don't think we need a 256-bit face generator. Too many variables with too much resolution may make false-positive matches. Three faces that add up to greater than 128-bits should be sufficient.
Generating an image could be done by creating a standard svg with all individual elements as `
Sex (1)
Face shape (3) and color (3)
Eye shape (2) and color (3)
Hair shape (4) and color (3 or 2x3 for base/highlight)
Accessory type (3) and colors (2x3) // Like a hat, scarf, etc.
Shirt shape (3, vee/collar/sleeve) and colors (2x3)
Facial hair or earrings (depends on sex bit?) shape (3) and color (3) // Some more thinking needed to balance counts, etc.
Background pattern (3) and colors (2x3)
This adds up to 55 bits. I'm sure we could squeeze out some more bits by adding another bit of option here or there, probably in color. Probably able to get to 64-bit per face.
Limiting the colors and shapes will result in more discrete images, and spotting a match should prove easier. Too many possible colors will result in some colors looking too similar, like "is this chartreuse or lime?" It also allows for more art in the creation of the faces, IMHO.
There is also background, expression, and pose. You don't need to determine if it is the same person only if it is the same picture. I imagined something like mii avatars only much more realistic. Start with a standard mesh and change things like forehead width/height, width at eyes, cheeks, chin, then features like eyes (size, shape, color, placement) and all the things you mentioned. Then because it is a mesh, pose it and render with a patterned background to add a few more bits.
One could map the bits to the parameters of a FOSS parametric human 3D model, but to render in a lightweight way would be the real trick, I think.
An SVG cartoon might be a lot easier, especially because rendering would be handled by the client device.