First up, thanks to FreeMoney and SgtSpike.This is awesome.
Then I would like to make two suggestions. The first relates to the checksum discussion. It is important to note that simply extending the firstbits name beyond the minimum required characters is NOT the same as a traditional checksum. Where a standard 1 character checksum is sufficient to detect any single character typo, this does not hold for extended firstbits adressess. The 1 character extended 1kk5k address is 1kk5kf. If this is mistyped as 1kk5kg it may well point to another valid address. It doesn't today, but it could. In this case the typo was actually in the "checksum" meaning that you end up worse off than you would have been had you just quoted 1kk5k as your address.
A simple way to add a (still optional) checksum would be to use a separator followed by a traditional checksum i.e. 1kk5k-A or something similar. One simple implementation would be to ensure that the sum of the characters (when interpreted as digits in a base 36 system) adds to 0 modulo 36, But you could also have multi-character checksums that can detect more elaborate typos.
Once something like this is in place, I see no reason why this shouldn't be in the mainline client. It may initially refuse to accept firstbits adresses without checksums and later allow one to bypass this rule if you click through enough "are you SURE SURE SURE" dialogs.
Oh! Some brat already took 1Linux. Grrr.
I can hardly believe that this hasn't been discussed more. If the discussion is elsewhere please point me to it.
Vanity addresses and the firstbits algorithm make for a potent combination. If you think 1kk5k was easy to remember, try 1spike (or even 1spike-AX since you don't really have to "remember" spike the "additional" load of remembering the checksum suddenly seems even more trivial).
The only hassle today is that there is currently no way to transfer ownership of such an address. I don't own 1Linux, but if I did, I might be willing to sell said address to BkkCoins if the price was right
. Today the only mechanism to do that is to send him the private key, but he would be a fool to accept such a deal since I may well have kept a copy of the key and be in a position to steal any funds he subsequently receives.
I am pretty sure that this can be added to the existing algorithm without any breaking changes (i.e. if 1linux or 1kk5k or whatever belonged to you before it is guaranteed to still belong to you unless you choose to dispose of it). One way of doing this would be to do the lookup as before, but once the address is found to check all subsequent transactions from that address for one that matches a to be determined arbitrary pattern. If such a match is found then the destination of that address becomes the new owner of the firstbits address in question. Rinse and repeat. This is slightly more computationally expensive than the existing algo, but no one is doing millons of firstbits lookups per second are they?
One example of a pattern that may signify a transfer of ownership is a payment from 1linuxdhfgf... to 1linuxtrsyudas.. of EXACTLY 123 satoshis. The amount should be very small and chosen in such a way that no such payments allready exists in the blockchain (so no-one has accidentally transferred ownership of their firstbits alias while trying to buy coffee
).
This is just an example to clarify the concept and not suitable for actual use because it leaves open the possibility that someone may in future transfer a firstbits alias without intending to, either due to an incredible coincidence or because they were actively tricked. A better solution would be to use the pubsig script as an indicator. An otherwise nonsensical script can be used as an indicator that 1stbits ownership is being transferred. It has the downside that some BTC is being burnt (since it would be impossible to claim that output of the tx) but I don't think anyone is going to miss a few satoshis
. On the upside, one would need a special client to transfer alias ownership so no aliases would be transferred by accident.
If this was implemented we would suddenly have a market for firstbits aliases and hopefully I can sell 1Hannes to one of the many billionares out there with Hannes as a first name
. The only downsides that I can see is the slight increase in computational complexity of a lookup (as mentioned before) and the fact that if one does a firstbits lookup under the new standard one really needs to be online and up to date with the blockchain (allthough you would be able to get away with an offline lookup 99.9999% of the time).
In my original example I showed transfer of ownership of the 1linux alias from 1linuxdhfgf... to 1linuxtrsyudas.. but one could debate whether the second address needs to start with 1linux at all. If it didn't then we would have a marketplace even for firstbits aliases that have not yet been claimed. I would like 1HannesNaude but don't have access to the ridiculous amounts of hashpower I would need to generate it myself. But for anyone that is already running vanitygen the cost of adding it to their patterns list is close to zero. If it was in everyone's pattern lists because everyone knew that I would pay a million BTC for it
, it would almost certainly be generated within a day.
Obviously anyone can introduce either of these suggestions, but I really believe it would be best if the firstbits originators did it. Then there would be no confusion or competing standards. Also this is much easier to do now while there is really only a single implementation to adapt than later when many clients and e-wallets have implemented firstbits and lots of code needs to be updated.