Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: remotemass on January 19, 2013, 07:51:34 PM



Title: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: remotemass on January 19, 2013, 07:51:34 PM
Maybe it would get very visual to have a code to represent bitcoin addresses in a more visual way.
Uppercase letters would be squares.
Lowercase letters would be circles.
Numbers an equilateral triangle with horizontal base.
Colours would be used to distinguish them.

Who comes up with the better code?
Please post your artwork showing how would your code result.
We could also use 99designs.com to achieve great proposals!


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: franky1 on January 19, 2013, 07:56:32 PM
Maybe it would get very visual to have a code to represent bitcoin addresses in a more visual way.
Uppercase letters would be squares.
Lowercase letters would be circles.
Numbers an equilateral triangle with horizontal base.
Colours would be used to distinguish them.

Who comes up with the better code?
Please post your artwork showing how would your code result.
We could also use 99designs.com to achieve great proposals!

not an actual submission. just food for thought
edit: google image search doctor who gallifrey

use of colours can be tricky due to light exposure making cameras not pick up colours that easily EG yellow street lghts can make yellow look white (missing transparent/white like the paper its printed on)

with 10 numerics 26 lowercase and 26 uppercase letters = 62 variations of shapes.

so heres a idea
http://i46.tinypic.com/x24awh.jpg
Hexagon grey = 1
hexagon white=2
Square grey=3
Square white=4
Circle grey=5
Circle white=6
Triangle grey=7
Triangle white=8
basically multiply the outer shape by the inner shape and then add on the number of the centre shape
EG top shape is 1 4 7 so 1x4+7=11
EG bottom shape 6 7 5 so 6x7+5=47

now using the 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
top shape=a (lowercase a)
bottom shape=K (uppercase k)


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: remotemass on January 19, 2013, 08:31:47 PM
very rough draft:
http://i45.tinypic.com/2ighpwx.jpg


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: greyhawk on January 19, 2013, 08:37:16 PM
I'm sure that's awesome for synesthetes, but how many of them are there even?


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: remotemass on January 19, 2013, 08:43:16 PM
Also for showing on television seems much better and less prone to human error.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: remotemass on January 19, 2013, 08:49:52 PM
Very rough, but just to give an idea. What about having both, with the alphanumerics overlayed on top?
http://i46.tinypic.com/2mnq6i9.png


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: franky1 on January 19, 2013, 09:34:25 PM
for geniune legit businesses a service that has registered bitcoin addresses linked to a user. kind of like tinyurl would work better

eg tinybitcoinaddress yet to be made.com/franky1
would take you to 1FrankZ7t5Wbf5uTMxMtCiQy9eKDsj1fUn

heck, even blockchain.info is already tagging known addresses so using their service to find the lengthy address is better. such as satoshi dice
http://blockchain.info/fb/1dice8 (http://blockchain.info/fb/1dice8)


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: BlackLilac Jordan on January 19, 2013, 09:42:11 PM
for geniune legit businesses a service that has registered bitcoin addresses linked to a user. kind of like tinyurl would work better

eg tinybitcoinaddress yet to be made.com/franky1
would take you to 1FrankZ7t5Wbf5uTMxMtCiQy9eKDsj1fUn

heck, even blockchain.info is already tagging known addresses so using their service to find the lengthy address is better. such as satoshi dice
http://blockchain.info/fb/1dice8 (http://blockchain.info/fb/1dice8)

I think what you're asking for already exists: https://btc.to/


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: franky1 on January 20, 2013, 12:01:31 AM
BLFC Jordan, yes  ;D thats what im talking about
great idea


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: runeks on January 23, 2013, 02:50:39 AM
I've thought about this too.

An often cited problem with verifying a bitcoin address is that the long string of letters and numbers is very hard to compare for a human being. This is relevant in the case of "hacker proof" hardware wallets where the user has to confirm that the address he copy/pasted from a site really is the address he wants to send the funds to.

I've considered simple color-coding, where the 25 byte address is converted into an image, which is experienced more as a whole instead of the letters, deciphered one-by-one when reading.

I just made a little script that encodes an address into a 12 by 12 pixel image. Each pixel is either red, green or blue. It basically just converts the address into a number, then converts this number into a base-3 number, and each pixel gets its color from the digit in the base three number (0 for red, 1 for green, 2 for blue). Here are some examples of random addresses converted into this image format:

https://i.imgur.com/uxMctJz.png1FbyYynZwHukrQZeAzPYb91KvbFkgp1kgN
https://i.imgur.com/DgssIrw.png1LQxi4tDHca5ZAZW3HuBxof7Uxh54rTd9t
https://i.imgur.com/4WTo885.png1AdN2my8NxvGcisPGYeQTAKdWJuUzNkQxG
https://i.imgur.com/5zIpX4g.png124GJ3HCtYvaD2zDwJPKJLMTurWU1PdLic
https://i.imgur.com/xPsxWVJ.png14jMgd1vQ8Pi9H3eKjsxwnb2xo8DZLiezf
https://i.imgur.com/xrBnpC0.png13xQfLkQ2q7xLDsEZfgv6weoZP98rmZnLx
https://i.imgur.com/An7izRl.png14cZMQk89mRYQkDEj8Rn25AnGoBi5H6uer

When uploading these pictures to imgur.com, their file names were lost (the filename had the address in it), but it was pretty quick just looking at the picture to see which were which. They are all distinct in various ways.

I'm sure there are ways to improve this algorithm though, so different patterns become more distinct.

Here's the script used to generate these images. By default the script will show the image encoding of the address contained in the address variable.

Code:
#!/usr/bin/python

import Image

#base58 magic borrowed from Gavin Andresen's bitcointools (and modified slightly)

__b58chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
__b58base = len(__b58chars)

def b58decode(v):
   """ return the number representation of the base58-encoded string v
   """
   long_value = 0
   for (i, c) in enumerate(v[::-1]):
      long_value += __b58chars.find(c) * (__b58base**i)

   return long_value

def b3decode(num):
   """ return the base 3 encoding of num as an array of numbers from 0 to 2
   """
   array = []
   base = 3
   remainder = num
   while remainder >= 2:
      div, mod = divmod(remainder, base)
      array.insert(0, mod)
      remainder = div
   return array

address = "1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v"

addresses = ["14cZMQk89mRYQkDEj8Rn25AnGoBi5H6uer", "13xQfLkQ2q7xLDsEZfgv6weoZP98rmZnLx", "14jMgd1vQ8Pi9H3eKjsxwnb2xo8DZLiezf", "124GJ3HCtYvaD2zDwJPKJLMTurWU1PdLic", "1AdN2my8NxvGcisPGYeQTAKdWJuUzNkQxG", "1LQxi4tDHca5ZAZW3HuBxof7Uxh54rTd9t", "1FbyYynZwHukrQZeAzPYb91KvbFkgp1kgN"]

width = 12
height = 11
image = Image.new("RGBA", (width, height))
pixels = image.load()

for (index, num) in enumerate(b3decode(b58decode(address))):
   colors = [(255, 0, 0, 255), (0, 255, 0, 255), (0, 0, 255, 255)]
   pixels[index % width, index / width] = colors[num]

image.resize((width*5, height*5), Image.NEAREST).show()

if False: #if this is run, it will save the image representation of the addresses contained in the "addresses" list to the current folder, using the file name "<address>.png"
   for addr in addresses:
      for (index, num) in enumerate(b3decode(b58decode(addr))):
         colors = [(255, 0, 0, 255), (0, 255, 0, 255), (0, 0, 255, 255)]
         pixels[index % width, index / height] = colors[num]

      image.resize((width*5, height*5), Image.NEAREST).save(addr+".png")

The resulting images are 12x11 pixels. Though the above images are 12x12 (with an empty bottom row since I didn't realize this until I had made these images).


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: phelix on January 23, 2013, 07:23:47 AM
http://en.wikipedia.org/wiki/Identicon

http://www.imafulltimemummy.com/image.axd?picture=2010%2F7%2Fsomeidenticons_inline.png

generator: http://finalboss.org/g/


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: runeks on January 23, 2013, 07:34:07 AM
Oh, my three-color images feel so primitive now.

But seriously, that might be useful if they really can encode 160 bits of entropy, and the changes aren't too subtle.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: Lethn on January 23, 2013, 08:35:36 AM
I like that idea a lot, in case you didn't gather from my rants about math I'm not a mathematical thinker, shapes etc. are generally how I see the world not only that, if these could be turned into QR codes or even our usernames etc, that would be fucking badass!

They remind me a lot of the Japanese clan mons ( emblems ) in Shogun 2, maybe we could have our own unique symbols for Bitcoin addresses ;) I bet this would get quite a bit of attention from normal people too.

Edit: I like this a lot lol! :D I put my username in and it popped out the avatar I put up :P


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: Ente on January 23, 2013, 11:51:05 AM
I like where this is going!
Exactly, this will be very important for visually comparing adresses on my computer and a dedicated wallet hardware with display.
Identicon: So, how many bits would fit into one of those? Wikipedia didn't help with technical details..
Runeks, your system is nice too! 12x12? Champion!

Ente


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: runeks on January 23, 2013, 12:18:32 PM
Check out this paper: https://sparrow.ece.cmu.edu/group/pub/old-pubs/validation.pdf

Looks like they're taking the task seriously (defining the image-producing function to have the same properties as a hash function). The images look nice and distinct. But I'm not sure it can produce 2^160 sufficiently visually distinct images. Interesting none the less.

EDIT: This looks cool too, and it's open source: http://www.thevash.com/


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: paybitcoin on January 25, 2013, 05:43:41 AM
Don't forget about randomart used with ssh keys:

http://superuser.com/questions/22535/what-is-randomart-produced-by-ssh-keygen

sample:
Code:
Your identification has been saved in test.
Your public key has been saved in test.pub.
The key fingerprint is:
20:e9:b0:5b:5a:2b:ad:e8:4d:e4:b3:a0:32:49:2d:97 evan
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|     .           |
|  . o .          |
|   + . .         |
|  o.=   S        |
| ooE .           |
|.o*+o            |
|=.+oo            |
|=o.o             |
+-----------------+


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: theymos on January 25, 2013, 05:53:10 AM
very rough draft:

Straight substitution isn't very creative/interesting IMO. I do like the idea of representing addresses as cool-looking images, though.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: Matthew N. Wright on January 25, 2013, 06:00:42 AM
http://en.wikipedia.org/wiki/Identicon

http://www.imafulltimemummy.com/image.axd?picture=2010%2F7%2Fsomeidenticons_inline.png

generator: http://finalboss.org/g/

Is there a way to read these in reverse and get the string from the image?


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: Red Emerald on January 25, 2013, 06:33:31 AM
http://en.wikipedia.org/wiki/Identicon

http://www.imafulltimemummy.com/image.axd?picture=2010%2F7%2Fsomeidenticons_inline.png

generator: http://finalboss.org/g/

Is there a way to read these in reverse and get the string from the image?
Nope. Thats by design since they were originally meant to identify IPs without revealing the IP.

If the input fields for addresses in the client had a small identicon next to them, and whatever people were manually copying from also had an identicon, it would be a quick way to check for typos in addition to bitcoin's built in checksum.  If you are copy/pasting from the same computer, or using a QR scanner, there isn't really a need.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: phelix on January 25, 2013, 09:27:53 AM
one could use hash-colored qr codes as identicons...

http://blockchained.com/stuff/identiqr.png    http://blockchained.com/stuff/identiqr2.png

if your client calculates the same code from the address you can be pretty sure you copy/pasted the right one.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: arklan on January 25, 2013, 01:50:33 PM
one word: colorblind. i promise you all this looks quite different to my screwy eyes then to others.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: mskwik on January 25, 2013, 02:57:36 PM
http://en.wikipedia.org/wiki/Identicon

http://www.imafulltimemummy.com/image.axd?picture=2010%2F7%2Fsomeidenticons_inline.png

generator: http://finalboss.org/g/

Identicons for bitcoin addresses have been discussed before:

https://bitcointalk.org/index.php?topic=122240.0 (https://bitcointalk.org/index.php?topic=122240.0)

In short it works fairly well as an extra checksum but it has much less entropy than the full address so matching the first few address characters and the icon is not that hard.  It depends on your use case how useful it really is, it can help with easily identifying mistyping of addresses (but so can the built-in checksum), but doesn't necessarily prevent spoofing one address with another similar one.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: rini17 on January 25, 2013, 11:12:45 PM
I prefer unicorns (http://unicornify.appspot.com/use-it)! Bitcoin addresses are supported too, not just email (but not whole address fits the input).


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: K1773R on January 25, 2013, 11:37:49 PM
I prefer unicorns (http://unicornify.appspot.com/use-it)! Bitcoin addresses are supported too, not just email (but not whole address fits the input).
u can pass it to the API (just read trough it), so it fits


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: constitution on January 25, 2013, 11:54:41 PM
Interesting Idea, but I honestly dont see this being accepted by the community.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: jl2012 on January 26, 2013, 01:35:43 PM
How about people with color blindness?


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: Ente on January 27, 2013, 08:08:31 PM
How about people with color blindness?
one word: colorblind. i promise you all this looks quite different to my screwy eyes then to others.

Thank you for reminding us.
I would suggest a two-fold way:

Display some graphical representation of the address, any of the ones posted will do (as long as it works offline too!). As this has both color and symbol/pattern in it, even "colorblind" people would see a difference in many cases.

Display the first 4 and last 4 letters of the address too. This both helps "colorblind" folks as well as make (close) collisions of the graphic less likely. Depending on the graphical keyspace it could be too easy to generate the whole set once for addresses the attacker controls, and then replace the valid one with one which has the same or similar symbol. This might not be possible with 8 additional digits per symbol, but I didn't calculate through it..

Ente


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: Red Emerald on January 27, 2013, 08:46:12 PM
I don't see inventing a new alphabet doing much to make copying addresses easier.

I like the idea of identicons as an additional checksum. I'm color blind too and think that they still work plenty well for that.


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: Ente on January 28, 2013, 08:09:55 AM
I don't see inventing a new alphabet doing much to make copying addresses easier.

I like the idea of identicons as an additional checksum. I'm color blind too and think that they still work plenty well for that.

..for copying addresses? Nah, we still need nfc/usb/qr for that!
These *icons are for visual, human-readable checksum only!

Ente


Title: Re: Using squares, circles and triangles with colours to represent bitcoin addresses
Post by: herzmeister on January 28, 2013, 08:30:12 AM
How about people with color blindness?
one word: colorblind. i promise you all this looks quite different to my screwy eyes then to others.

Thank you for reminding us.

Maybe use black, darker blue, dark green, normal red, light yellow so that also the colorblind easily can identify the difference.