Realpra (OP)
|
|
September 29, 2013, 05:28:25 PM |
|
So for those who thinks this is a stupid question: The normal address format for Bitcoin addresses puts a hash/checksum of the hashed public key at the end - this means you can tell if someone say mistyped their address as the checksum will not fit.
My question is can you send money to an address with an invalid checksum? (as in will the main Bitcoin clients allow such blocks, relay the TXs and so on)
If it IS possible my second question is why? .. and my third is which clients and online exchanges are known to check the checksum?
|
|
|
|
|
|
|
|
The forum strives to allow free discussion of any ideas. All policies are built around this principle. This doesn't mean you can post garbage, though: posts should actually contain ideas, and these ideas should be argued reasonably.
|
|
|
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
|
|
|
eb3full
VIP
Full Member
Offline
Activity: 198
Merit: 101
|
|
September 29, 2013, 05:37:36 PM |
|
Only the hash of the public key is included in the scriptPubKey of the transaction. Addresses are wrappers around this hash with an additional checksum for usability/compatibility purposes. The checksum is not included in the transaction at all.
Clients are the only things which interact with addresses as you perceive them, and are the only things that deal with checksums of public keys.
|
"With four parameters I can fit an elephant, and with five I can make him wiggle his trunk." John von Neumann buy me beer: 1HG9cBBYME4HUVhfAqQvW9Vqwh3PLioHcU
|
|
|
Stephen Gornick
Legendary
Offline
Activity: 2506
Merit: 1010
|
|
September 29, 2013, 06:09:12 PM Last edit: September 30, 2013, 09:04:22 PM by Stephen Gornick |
|
My question is can you send money to an address with an invalid checksum? (as in will the main Bitcoin clients allow such blocks, relay the TXs and so on) Software following the Bitcoin protocol would not recognize that payment transaction to an address that fails the checksum verification.
So if there was some client that didn't follow the protocol and you happened to use it and also have established a peer connection to another node running that same flawed client, then your node will show the transaction as having been sent successfully and that other node will show the payment as having been received. But the transaction will almost never get a confirmation (unless enough miners are using the flawed client as well and a blockchain fork happens). And no other nodes (other than those using the flawed client) will use or relay that transaction. [Edit, from another thread: There is no way to recognize "wrong" address at the protocol level, at that level it is no longer a string with checksum but just uninterpreted data, therefore the transaction will be relayed and coins lost.
] I'm not aware, offhand, of any reports of a client that doesn't implement the checksum. [Edit: As far as exchanges and E-Wallets, that is handled internally by that vendor's infrastructure. If an invalid address is given by a user, that E-Wallet provider's internal software might accept the transaction and subtract that amount from the E-Wallet user's account balance. But that doesn't mean the transaction got sent by that E-Wallet vendor's node.]
|
|
|
|
Realpra (OP)
|
|
September 29, 2013, 07:12:31 PM |
|
Thanks for the replies. For the record I just tested this with with Bitstamp (0.01 BTC to a purposely wrong address) and the withdrawal request simply "failed", but you get no warning or other information as to why.
Anyway nice to know.
|
|
|
|
jackjack
Legendary
Offline
Activity: 1176
Merit: 1233
May Bitcoin be touched by his Noodly Appendage
|
|
September 29, 2013, 08:17:08 PM |
|
|
Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2 Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
|
|
|
DannyHamilton
Legendary
Offline
Activity: 3388
Merit: 4653
|
|
September 30, 2013, 02:21:44 PM |
|
Software following the Bitcoin protocol would not recognize that payment transaction to an address that fails the checksum verification.
So if there was some client that didn't follow the protocol and you happened to use it and also have established a peer connection to another node running that same flawed client, then your node will show the transaction as having been sent successfully and that other node will show the payment as having been received. But the transaction will almost never get a confirmation (unless enough miners are using the flawed client as well and a blockchain fork happens). And no other nodes (other than those using the flawed client) will use or relay that transaction.
Stephen, Are you sure? You and jackjack appear to be saying the opposite of each other. It appears that only one of you are likely to be correct in this matter. See jackjack's post here for additional details: https://bitcointalk.org/index.php?topic=299961.msg3219105#msg3219105jackjack seems to say that, when using a hypothetical poorly written client that doesn't check the checksum, it depends on where the typo is made. If it is made in the checksum portion of the address then it won't matter, since the bitcoin protocol doesn't make use of that at all in the actual transaction. If the typo is made in the non-checksum portion, then the result will be the same as sending to a vaild address that is different than the intended address.
|
|
|
|
jl2012
Legendary
Offline
Activity: 1792
Merit: 1097
|
|
September 30, 2013, 03:33:31 PM |
|
The checksum is not part of the bitcoin protocol and is not relayed nor recorded in the blockchain
|
Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY) LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC) PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
|
|
|
jackjack
Legendary
Offline
Activity: 1176
Merit: 1233
May Bitcoin be touched by his Noodly Appendage
|
|
September 30, 2013, 05:03:26 PM |
|
Actually it's not a network byte, it's an address version byte A client that can handle version n addresses can send coins to all versions inferior to n (if it can handle version n, that means it came after versions <n, so it knows how to handle them) But it can't send to versions >n (if version n+1 doesn't exist when it was released then it obviously can't know how to handle it)
That's how bitcoins were sent to namecoin or testnet-bitcoin addresses
|
Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2 Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
|
|
|
|