Pages:
Author

Topic: FirstBits.com - remember and share Bitcoin addresses (Read 26262 times)

legendary
Activity: 1400
Merit: 1005
I think this definitely has its uses, not dumb. It can of course cause trouble in some scenarios but I would still like to use it and have a simple address to tell someone.
But now the blockchain.info's API doesn't work and reading this thread I get is hasn't worked for a while. Is there a working firstbits lookup somewhere?
The blockchain.info one goes up and down often.  It seems there's some backend process that crashes/stops working.

And no, there are no other lookups available, so if blockchain.info's lookup isn't working, then there's no way to look up firstbits addresses.
sr. member
Activity: 770
Merit: 250
I think this definitely has its uses, not dumb. It can of course cause trouble in some scenarios but I would still like to use it and have a simple address to tell someone.
But now the blockchain.info's API doesn't work and reading this thread I get is hasn't worked for a while. Is there a working firstbits lookup somewhere?
legendary
Activity: 1176
Merit: 1280
May Bitcoin be touched by his Noodly Appendage
Faiza1990 is a known troll, don't feed him
legendary
Activity: 1400
Merit: 1005
Shortening a hash, especially a Bitcoin address is just asking for trouble
Please do tell why.
legendary
Activity: 1246
Merit: 1011
Shortening a hash, especially a Bitcoin address is just asking for trouble.

Shortening a hash, especially a Bitcoin address is just asking for trouble

Plagiarism.  Set to ignore faiza1990.
sr. member
Activity: 420
Merit: 250
★☆★777Coin★☆★
hero member
Activity: 812
Merit: 1000
Shortening a hash, especially a Bitcoin address is just asking for trouble

it's more like a 'shortcut'

just like we don't type c:\program files\bitcoin\bitcoin.exe -datadir=g:\data  every time we want to run bitcoin, we just use a shortcut that knows where to find it

sr. member
Activity: 420
Merit: 250
★☆★777Coin★☆★
Shortening a hash, especially a Bitcoin address is just asking for trouble
legendary
Activity: 1400
Merit: 1005
This looks like it'll make it possible to actually memorize an address.  Cool! Grin

It is very possible!  I have three of my addresses memorized so that I can easily send to any one of them any time.

Problem is, there's no way to look up firstbits right now, and piuk doesn't seem to care that it isn't working on blockchain.info.
sr. member
Activity: 420
Merit: 250
★☆★777Coin★☆★
You have to be always drunk. That's all there is it's the only way. So as not to feel the horrible burden of time that breaks your back Tongue
newbie
Activity: 14
Merit: 0
This looks like it'll make it possible to actually memorize an address.  Cool! Grin
hero member
Activity: 481
Merit: 529
Firstbits is still down on blockchain.info.  Is there a live example of ABE with firstbits lookup?
I don't know of any offhand.
legendary
Activity: 1400
Merit: 1005
Firstbits is still down on blockchain.info.  Is there a live example of ABE with firstbits lookup?
legendary
Activity: 1400
Merit: 1005
I don't think this is true or needed.  Some addresses have no firstbits base representation, because an address differing only by case appeared earlier.
The chance of two addresses only differing by case is something like 1 in 34^34 (or 34^27 if you're looking at the shortest possible Bitcoin address), is it not?  If so, I'd say we can safely assume no two addresses have been, or will ever have, the same address differing only by case.  Even 24^27 is such an impossibly high number as to conclude it will not happen within the life of the earth.

Nevertheless, if I recall correctly, examples do exist, presumably where one address is not generated in the usual way (and coins sent to it are therefore dead).
Ok, that make sense.  If a person purposefully tried to copy an address, all they'd have to do is worry about the checksum matching, and that's just a matter of a script running through combinations of various capitalized/uncapitalized letters and numbers until they find a checksum that matches the checksum of the original address.  I can see how this would be possible.
hero member
Activity: 481
Merit: 529
I don't think this is true or needed.  Some addresses have no firstbits base representation, because an address differing only by case appeared earlier.
The chance of two addresses only differing by case is something like 1 in 34^34 (or 34^27 if you're looking at the shortest possible Bitcoin address), is it not?  If so, I'd say we can safely assume no two addresses have been, or will ever have, the same address differing only by case.  Even 24^27 is such an impossibly high number as to conclude it will not happen within the life of the earth.

Nevertheless, if I recall correctly, examples do exist, presumably where one address is not generated in the usual way (and coins sent to it are therefore dead).
legendary
Activity: 1400
Merit: 1005
I don't think this is true or needed.  Some addresses have no firstbits base representation, because an address differing only by case appeared earlier.
The chance of two addresses only differing by case is something like 1 in 34^34 (or 34^27 if you're looking at the shortest possible Bitcoin address), is it not?  If so, I'd say we can safely assume no two addresses have been, or will ever have, the same address differing only by case.  Even 24^27 is such an impossibly high number as to conclude it will not happen within the life of the earth.

Quote
I don't have a strong preference.  Abe does use enough characters to distinguish from addresses later in the block.  I think the code was simpler before I did this.  I don't think conceptually either way is more complex; you choose between defining "order of appearance" and "same or earlier block".  I strongly suggest finding an example and checking blockchain.info's treatment of same-block collisions, since that site obviously has a lot of work put into it and may be unwilling to change.  And let's try to include piuk.
I agree.  Since all three of us seem to be willing to change, let's see what blockchain.info is doing and go from there.

EDIT:  As luck would have it, Firstbits doesn't appear to currently be working on blockchain.info at the moment.
hero member
Activity: 481
Merit: 529
I edited my last reply to ensure that "collision" includes collision with longer substrings.  For example, 1SgtspiQ... has a substring 1Sgtspi which collides not with 1SgTspiK's base representation, but with a firstbits address derived from it.  So the base representation of 1SgtspiQ... must include the Q.
hero member
Activity: 481
Merit: 529
Thank you, and sorry for the delay!

Firstbits Definition (Draft)

Firstbits Base Representation
All Bitcoin addresses that appear in the block chain using a well defined set of recognized transaction output formats have a unique firstbits base representation.

I don't think this is true or needed.  Some addresses have no firstbits base representation, because an address differing only by case appeared earlier.

The firstbits base representation of a bitcoin address is the shortest non-empty substring starting with the first character of the Bitcoin address and converted to lower-case, which does not collide with the firstbits base representation of another address appearing in a transaction output earlier in the block chain.

This is good but could be clearer.  How about:
Thus, a firstbits base representation is always in lower-case.

The order of appearance for addresses in transaction outputs in the same block follows the order of transaction outputs in the raw block data.

Firstbits Addresses
A Bitcoin address can several valid firstbits addresses. A firstbits address can be derived from a firstbits base representation by appending additional characters from the Bitcoin address up to and including the last character of the Bitcoin address. A firstbits address can have any combination of upper and lower case.

Example 1
Bitcoin address:               1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Firstbits base representation: 1
Firstbits address examples:    1, 1a, 1A, 1a1z, 1A1z, 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa


Example 2
Bitcoin address:               1SgTspiKe5HHkjdSeD72q9WsiJhRiaxf9
Firstbits base representation: 1sgtsp
Firstbits address examples:    1sgtsp, 1SgTsp, 1SgTspiKe5HHkjdSeD72q9WsiJhRiaxf9


Recognized Transaction Output Formats
An address is said to appear in a block when it appears in one of the block's transactions' pubkey, pubkey hash, or script hash outputs.

Pubkey Output
A pubkey output is a transaction output with a script of the form:
Code:
OP_CHECKSIG
An address is said to appear in a pubkey output when its version byte is 0 and its key hash equals the 160-bit hash of the output script's push operand (pubKey).

Pubkey Hash Output
A pubkey hash output is a transaction output with a script of the form:
Code:
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
An address is said to appear in a pubkey hash output when its version byte is 0 and its 160-bit key hash equals the output script's push operand (pubKeyHash).

Script Hash Output
A script hash output is a transaction output with a script of the form:
Code:
OP_HASH160 OP_EQUAL
An address is said to appear in a script hash output when its version byte is 5 and its 160-bit key hash equals the output script's push operand (scriptHash).

In particular, output scripts not matching the above three cases can not affect whether an address appears in a block, nor can input scripts.  For example, a script containing OP_DROP or OP_NOP can not match the cases, but the push operand in a pubkey output may have any length.

It is actually more complex to regard all transactions in a block in a holistic way rather than just handling them one at a time.

However, here is the definition we got so far for transactions in the same block (which is actually used today):
Quote
The order of appearance for addresses in transaction outputs in the same block follows the order of transaction outputs in the raw block data.
If you make a less complex description that unambiguously describes your way of handling collisions I'll agree with you.

I don't have a strong preference.  Abe does use enough characters to distinguish from addresses later in the block.  I think the code was simpler before I did this.  I don't think conceptually either way is more complex; you choose between defining "order of appearance" and "same or earlier block".  I strongly suggest finding an example and checking blockchain.info's treatment of same-block collisions, since that site obviously has a lot of work put into it and may be unwilling to change.  And let's try to include piuk.
Jan
legendary
Activity: 1043
Merit: 1002
Looks pretty good Jan.  My only comment is that the line "The order of appearance..." is largely irrelevant.  We have agreed that order in a block doesn't matter - all addresses with matching firstbits in the same block will have characters added until they each have unique firstbits.

As I wrote just above:
...
Regarding this:
...  If it is possible (is it?) for an earlier tx to spend the output of a later tx in the same block, we would have to be careful about whether the earlier one's input script triggers "appearance" of the address in case a competing address appears in a third transaction between those two.  The rule about "all addresses appearing in the same block" avoids that issue, while unfortunately making some address prefixes ineligible ever to become firstbits.
...

I am pretty sure that an earlier tx cannot spend outputs from a later output in the same block (the other way around happens all the time). I had the same worry when I did my block chain loader back in october last year and included some hefty logging in case it appeared. It never did. The specification and implementation will be cleaner without this corner case.
...

This adds unnecessary complexity, potentially invalidates old firstbits addresses, and is incompatible with what other implementations do today.
I really think it is a bad idea.
It would be interesting to find an example of such a case to compare how it is resolved on any services that work with firstbits.  I have a feeling they are not all resolved in the same manner.  I disagree regarding complexity - I think it actually makes implementation much simpler, which is why I like the change.  Yes, it will invalidate a few specific firstbits - perhaps we should run some sort of script to find out exactly which firstbits would be invalidated.

It is actually more complex to regard all transactions in a block in a holistic way rather than just handling them one at a time.

However, here is the definition we got so far for transactions in the same block (which is actually used today):
Quote
The order of appearance for addresses in transaction outputs in the same block follows the order of transaction outputs in the raw block data.
If you make a less complex description that unambiguously describes your way of handling collisions I'll agree with you.
legendary
Activity: 1400
Merit: 1005
Looks pretty good Jan.  My only comment is that the line "The order of appearance..." is largely irrelevant.  We have agreed that order in a block doesn't matter - all addresses with matching firstbits in the same block will have characters added until they each have unique firstbits.

As I wrote just above:
...
Regarding this:
...  If it is possible (is it?) for an earlier tx to spend the output of a later tx in the same block, we would have to be careful about whether the earlier one's input script triggers "appearance" of the address in case a competing address appears in a third transaction between those two.  The rule about "all addresses appearing in the same block" avoids that issue, while unfortunately making some address prefixes ineligible ever to become firstbits.
...

I am pretty sure that an earlier tx cannot spend outputs from a later output in the same block (the other way around happens all the time). I had the same worry when I did my block chain loader back in october last year and included some hefty logging in case it appeared. It never did. The specification and implementation will be cleaner without this corner case.
...

This adds unnecessary complexity, potentially invalidates old firstbits addresses, and is incompatible with what other implementations do today.
I really think it is a bad idea.
It would be interesting to find an example of such a case to compare how it is resolved on any services that work with firstbits.  I have a feeling they are not all resolved in the same manner.  I disagree regarding complexity - I think it actually makes implementation much simpler, which is why I like the change.  Yes, it will invalidate a few specific firstbits - perhaps we should run some sort of script to find out exactly which firstbits would be invalidated.
Pages:
Jump to: