Unique Address Patterns
For intuitive visual identification and differentiation.
Identicons have been around forever, at least since 2007. The idea is simple. You create a unique visual pattern based on some text. Different texts create different patterns, and the same text always creates the same pattern. Us humans can very quickly tell different visual patterns apart, much more quickly than long strings of letters and numbers.
There seem to be two general use cases. One is for creating fun placeholder avatars (GitHub Identicons, RoboHash, Jazzicons, MetaMask Polycons). The other is for unique identification and differentiation (Blockies, Jidenticons). The latter is more security critical and needs to be designed with that in mind.
It can be quite intimidating to send bitcoin, and ensuring that you have the right address can make you feel anxious. So the idea of using an Identicon as a second verification mechanism to the text-based address lends itself.
Robin Linus mentioned to me yesterday that it would be cool to have a standard for this in the bitcoin ecosystem, and I agree. I had implemented Blockies, a popular library, in Arké last week, but found it lacking in a few ways.
Looks outdated (retro pixel art is cool, but maybe not great for this use case)
Color combinations are jarring
No high-contrast mode for accessibility
No monochrome mode for lower-end displays
Since there isn’t a broadly established standard, I got together with my AI servants and came up with this:
Some features:
5x7 grid with 3 options each for 10.5 billion unique patterns, with 2.6 billion color pairs, makes for 2.7×10^19 unique patterns (approximately 64 bits of visual variations).
That means with 10 million addresses, the probability of two sharing the same pattern is approximately 1 in 2.7 trillion.
The monochrome styles uses shape instead of color. It still has ~10.5×10^9 unique patterns (with 10,000 addresses, collision probability is ~1 in 2 million).
Addresses are SHA256-hashed again, which means that even if one character is different between two addresses, they produce very different patterns. Great against address poisoning.
Uses the OKLCH color model, which is designed for how we actually perceive colors, has a wider gamut, is easier to create uniform color palettes, and more.
The pattern approach should work fairly well on smaller screens (like a SeedSigner), although this would need more testing and there is definitely a cut-off at some point.
The patterns are easy to distinguish, although this is something that I cannot just declare, but this should be really tested with lots of people, contexts, etc.
Looks nice. Obviously I’ll state that since I came up with it and would not put something out there I find ugly. What do you think?
That’s the logic in this first approach. The problem with adults is sometimes that we can rationalize anything and will believe it. In the end, it needs to be intuitive and practical IRL. So I implemented it in Arké and will keep it in there for a bit and give it a whirl. You can always turn it off in settings. My guess is that some people will find it comforting and others won’t care.
For now, with Arké being the only application that supports these patterns, you can only use it with other Arké users, of which there aren’t many with the app being in TestFlight still.
But it’s an idea that’s been around for a long time, and I don’t think we have a really great library for this yet that really nails it. Maybe this one does, maybe it doesn’t, but since Arké is for experimentation, it’s a good spot to try things out. And maybe we can find a great solution that the bitcoin ecosystem can be happy with. Let’s see.
Let me know what you think. Here’s the code (don’t just use it though, this is still a rough experiment).
✌️
Small addition on May 7 - how about a tiny version at 14x20 pixels?






