Title: Python code for validating bitcoin address Post by: Gavin Andresen on September 13, 2010, 12:38:24 PM This bitcoind address validator is a subclass of the Django forms.CharField class, but could easily be adapted to other frameworks or to be standalone code.
It does a "deep" validation, checking that the checksum built into every bitcoin address matches the address. It needs the PyCrypto library for the SHA256 function. I hereby release this code into the public domain, do with it what you will. And please let me know if you find any bugs in it. BCAddressField.py: Code: # Title: Re: Python code for validating bitcoin address Post by: davout on October 19, 2010, 10:55:32 PM Thanks for your code !
Contributing with a Ruby translation (more specifically a Rails drop-in validator) require 'digest' Passes unit tests (see http://github.com/davout/bitcoin-bank) Just a question, what's the use of your b58_encode method ? Title: Re: Python code for validating bitcoin address Post by: ByteCoin on October 19, 2010, 11:40:42 PM (address =~ /^[a-zA-Z1-9]{33,35}$/) I have mentioned this before in ByteCoin Title: Re: Python code for validating bitcoin address Post by: Gavin Andresen on October 20, 2010, 12:43:36 AM RE: what's the use of b58_encode? It is dead code for this use-- bitcointools (where I first implemented this stuff) uses it to translate from binary hash160 to human-readable bitcoin addresses.
RE: 27 character bitcoin addresses: I'm puzzled. There's a mismatch between the way bitcoin treats leading zeros (leading 1's when base58 encoded) and the way my python code treats them. ByteCoin: have you dissected the bitcoin code enough to explain how it decides how many leading zeros to add? According to my code, '14oLvT2' and '11111111111111111111111111114oLvT2' are the same bitcoin address (corresponding to the public key with a hash of all zero bytes). But bitcoin only likes the 27-character '1111111111111111111114oLvT2' version. I'll have to stare at the code some more tomorrow when I'm more awake. Title: Re: Python code for validating bitcoin address Post by: theymos on October 20, 2010, 01:50:10 AM For every leading 0x00 byte, add a leading 1 (encode). For every leading 1, add a 0x00 byte (decode). For encode, don't accept input that doesn't have an even number of bits (divisible by eight), as this doesn't make sense. For decode, pad leading zeros until you have an even number of bits.
I just check that the output immediately post-DecodeBase58 (including leading zeroes, checksum, versionNumber) is 25 bytes long. I think that Bitcoin does something similar to this. I made some web tools for dealing with addresses: http://theymos.ath.cx:64150/q/checkaddress http://theymos.ath.cx:64150/q/addresstohash http://theymos.ath.cx:64150/q/hashtoaddress http://theymos.ath.cx:64150/q/hashpubkey (Source not public yet.) Title: Re: Python code for validating bitcoin address Post by: Gavin Andresen on October 20, 2010, 03:18:17 PM Thanks theymos! I completely missed the leading-zero-bytes become leading-'1'-chars one-for-one.
I fixed the python code in the first message of this thread. Title: Re: Python code for validating bitcoin address Post by: ploum on October 25, 2010, 07:46:52 AM Are you working on a Django bitcoin project ? I'm highly interested, thinking about it myself too.
Title: Re: Python code for validating bitcoin address Post by: MagicalTux on November 15, 2010, 07:01:46 PM For those interested, I rewrote base58_encode/base58_decode in PHP, and added a "decode_btc" function (that will return an array containing "version" and "hash" for a given bitcoin address).
This code requires the following php extensions:
Here's the code, largely inspired from the code of the previous authors of this thread: Code: <?php This outputs: Quote array(2) { ["version"]=> int(0) ["hash"]=> string(40) "9955c1b44fa66688d27aaa06ba4ad02c6dd91088" } string(34) "1Eym7pyJcaambv8FG4ZoU8A4xsiL9us2zz" array(2) { ["version"]=> int(0) ["hash"]=> string(40) "0000000000000000000000000000000000000000" } string(27) "1111111111111111111114oLvT2" Title: Re: Python code for validating bitcoin address Post by: jerfelix on May 28, 2011, 10:44:52 PM default_error_messages = { 'invalid': 'Invalid Bitcoin address.', } def __init__(self, *args, **kwargs): super(BCAddressField, self).__init__(*args, **kwargs) def clean(self, value): value = value.strip() if re.match(r"[a-zA-Z1-9]{27,35}$", value) is None: raise ValidationError(self.error_messages['invalid']) Gavin, I'm trying to understand your usage of default.error_messages (first line in the snippet), vs. self.error_messages (last line in the snippet, above), in your code. Does Django somehow link those two together? Or is that a bug in the code? (I'm sure this code has been tested a lot since October!) Seems to me that you should be using the same dictionary in both places. Title: Re: Python code for validating bitcoin address Post by: grondilu on May 28, 2011, 11:05:22 PM It's kind of frustrating that nobody seems to want to use my bash functions to check bitcoin addresses. It only requires basic unix tools such as xxd, dc and openssl. Code: base58=({1..9} {A..H} {J..N} {P..Z} {a..k} {m..z}) Title: Re: Python code for validating bitcoin address Post by: beppu on May 29, 2011, 10:10:19 PM It's kind of frustrating that nobody seems to want to use my bash functions to check bitcoin addresses. It only requires basic unix tools such as xxd, dc and openssl. This is beautiful and concise shell scripting. Nice job. Title: Re: Python code for validating bitcoin address Post by: grondilu on May 29, 2011, 11:09:01 PM It's kind of frustrating that nobody seems to want to use my bash functions to check bitcoin addresses. It only requires basic unix tools such as xxd, dc and openssl. This is beautiful and concise shell scripting. Nice job. Ah, finally! Thanks! :D Title: Re: Python code for validating bitcoin address Post by: Yogafan00000 on November 15, 2012, 02:38:58 PM .NET 4.0 version of bitcoin address validation, Translated by YogaFan:
Code: Imports System.Security.Cryptography Title: Re: Python code for validating bitcoin address Post by: Xenland on November 17, 2012, 10:03:13 AM I too have PHP and Java code for validating and generating Bitcoin addresses that have been tested and known to work.
PHP Example Link: https://github.com/Xenland/Bitcoin-Pseudocode-Client/blob/gh-pages/examples/php/verify_bitcoin_address.php Java Example Source Link: https://github.com/Xenland/Bitcoin-Pseudocode-Client/blob/gh-pages/examples/java/Commandline%20Generate%20Bitcoin%20Address/src/commandline/CommandLine.java I Also have an English explanation of how to verify a Bitcoin address (Part of the Bitcoin Pseudocode client project) http://xenland.github.com/Bitcoin-Pseudocode-Client/verifyaddress.html Title: Re: Python code for validating bitcoin address Post by: matmar10 on November 27, 2012, 05:18:21 PM For those interested, I rewrote base58_encode/base58_decode in PHP, and added a "decode_btc" function (that will return an array containing "version" and "hash" for a given bitcoin address). This code requires the following php extensions:
Here's the code, largely inspired from the code of the previous authors of this thread: Code: <?php This outputs: Quote array(2) { ["version"]=> int(0) ["hash"]=> string(40) "9955c1b44fa66688d27aaa06ba4ad02c6dd91088" } string(34) "1Eym7pyJcaambv8FG4ZoU8A4xsiL9us2zz" array(2) { ["version"]=> int(0) ["hash"]=> string(40) "0000000000000000000000000000000000000000" } string(27) "1111111111111111111114oLvT2" Thanks for sharing this source! I've used your implementation, but I noticed some addresses don't validate. For example: 12HzMcHURwmAxAkfWgtktYsF3vRTkBz4F3 Any thoughts on why? Title: Re: Python code for validating bitcoin address Post by: grondilu on November 27, 2012, 07:23:50 PM Has anyone written a test-suite for key generation-validation? I mean, a text/json/whatever file where you'd have a couple of address/private key pairs? And in all possible formats (test network, compressed/uncompressed and so on...). That would be useful. Title: Re: Python code for validating bitcoin address Post by: jgarzik on November 27, 2012, 08:00:11 PM Has anyone written a test-suite for key generation-validation? I mean, a text/json/whatever file where you'd have a couple of address/private key pairs? And in all possible formats (test network, compressed/uncompressed and so on...). That would be useful. There is some JSON test data at https://github.com/bitcoin/bitcoin/tree/master/src/test/data I'm using this for a C-based "libccoin" bitcoin library testing https://github.com/jgarzik/picocoin/ Title: Re: Python code for validating bitcoin address Post by: grondilu on November 27, 2012, 11:59:25 PM By the way I've created a rosetta code (http://rosettacode.org) draft task for validating a bitcoin address:
http://rosettacode.org/wiki/Bitcoin/address_validation Don't hesitate to put your solution in your language. But please make it short. Title: Re: Python code for validating bitcoin address Post by: grondilu on November 28, 2012, 01:05:54 AM There is some JSON test data at https://github.com/bitcoin/bitcoin/tree/master/src/test/data Thanks! Title: Re: Python code for validating bitcoin address Post by: matmar10 on November 28, 2012, 09:02:58 AM I too have PHP and Java code for validating and generating Bitcoin addresses that have been tested and known to work. PHP Example Link: https://github.com/Xenland/Bitcoin-Pseudocode-Client/blob/gh-pages/examples/php/verify_bitcoin_address.php Java Example Source Link: https://github.com/Xenland/Bitcoin-Pseudocode-Client/blob/gh-pages/examples/java/Commandline%20Generate%20Bitcoin%20Address/src/commandline/CommandLine.java I Also have an English explanation of how to verify a Bitcoin address (Part of the Bitcoin Pseudocode client project) http://xenland.github.com/Bitcoin-Pseudocode-Client/verifyaddress.html Thanks for this contribution! I ran the test fixtures for valid and invalid public keys listed below, with a few of my own known keys added; I got the following result: There was 1 failure: 1) Lmh\BitcoinTransferBundle\Tests\BitcoinAddressValidatorTest::testInvalid Test invalid public key '37qgekLpCCHrQuSjvX3fs496FWTGsHFHizjJAs6NPcR47aefnnCWECAhHV6E3g4YN7u7Yuwod5Y' returns 1 error. Failed asserting that 0 matches expected 1. /Users/matmar10/Projects/bitcoinbymobile/src/Lmh/BitcoinTransferBundle/Tests/BitcoinAddressValidatorTest.php:69 FAILURES! Tests: 2, Assertions: 22, Failures: 1. By the way, your PHP code had an undefined variable throwing an error and also an unused variable; I'll send you a git push request. Title: Re: Python code for validating bitcoin address Post by: nima on December 09, 2012, 10:07:13 PM This bitcoind address validator is a subclass of the Django forms.CharField class, but could easily be adapted to other frameworks or to be standalone code. Hi Gavin,It does a "deep" validation, checking that the checksum built into every bitcoin address matches the address. It needs the PyCrypto library for the SHA256 function. I hereby release this code into the public domain, do with it what you will. And please let me know if you find any bugs in it. BCAddressField.py: Code: # Thanks for the code. I used it in a python script to validate a bunch of addresses. One invalid address managed to escape the validation (miwxGypTcHDXT3m4avmrMMC4co7XWqbG9r). Would you please confirm if the address says to be valid when you check it with your code? Thank you Title: Re: Python code for validating bitcoin address Post by: cande on February 17, 2013, 10:23:46 AM I too have PHP and Java code for validating and generating Bitcoin addresses that have been tested and known to work. PHP Example Link: https://github.com/Xenland/Bitcoin-Pseudocode-Client/blob/gh-pages/examples/php/verify_bitcoin_address.php Java Example Source Link: https://github.com/Xenland/Bitcoin-Pseudocode-Client/blob/gh-pages/examples/java/Commandline%20Generate%20Bitcoin%20Address/src/commandline/CommandLine.java I Also have an English explanation of how to verify a Bitcoin address (Part of the Bitcoin Pseudocode client project) http://xenland.github.com/Bitcoin-Pseudocode-Client/verifyaddress.html Thanks for this contribution! I ran the test fixtures for valid and invalid public keys listed below, with a few of my own known keys added; I got the following result: There was 1 failure: 1) Lmh\BitcoinTransferBundle\Tests\BitcoinAddressValidatorTest::testInvalid Test invalid public key '37qgekLpCCHrQuSjvX3fs496FWTGsHFHizjJAs6NPcR47aefnnCWECAhHV6E3g4YN7u7Yuwod5Y' returns 1 error. Failed asserting that 0 matches expected 1. /Users/matmar10/Projects/bitcoinbymobile/src/Lmh/BitcoinTransferBundle/Tests/BitcoinAddressValidatorTest.php:69 FAILURES! Tests: 2, Assertions: 22, Failures: 1. By the way, your PHP code had an undefined variable throwing an error and also an unused variable; I'll send you a git push request. Hi, using the PHP code I can see that there has been no update on that gitrepo for the past 8 months, what correction did you find? can you post it here? false negative address I found: 13saQdsv2XbkL9ef9FFT92m2zDaBGKwVGM Title: Re: Python code for validating bitcoin address Post by: Rotsor on May 03, 2013, 06:10:52 PM Haskell translation:
Code: module Main where Title: Re: Python code for validating bitcoin address Post by: grondilu on May 03, 2013, 06:15:42 PM BTW did I tell you guys that there is a rosetta code entry (http://rosettacode.org/wiki/Bitcoin/address_validation) for bitcoin address validation? Title: Re: Python code for validating bitcoin address Post by: Viceroy on May 07, 2013, 05:05:44 PM I REALLY did want to use your code, grondilu, but it lacks documentation. I tried to use the perl version and the bash version but couldn't get either to work. I'm sure it's a lack of understanding on my part.
Instead I grabbed Xenland's modification of MagicalTux's php script and made a couple changes: EDIT: THIS CODE GIVES FALSE NEGATIVES SHOWING PERFECTLY GOOD ADDRESSES AS BAD!!! [code retracted] working code a few posts down the thread that way | | | V Title: Re: Python code for validating bitcoin address Post by: grondilu on May 07, 2013, 10:22:33 PM I REALLY did want to use your code, grondilu, but it lacks documentation. I tried to use the perl version and the bash version but couldn't get either to work. I'm sure it's a lack of understanding on my part. Could you report your error message here or on the rosettacode talk page please? Title: Re: Python code for validating bitcoin address Post by: Viceroy on May 08, 2013, 11:25:37 PM I REALLY did want to use your code, grondilu, but it lacks documentation. I tried to use the perl version and the bash version but couldn't get either to work. I'm sure it's a lack of understanding on my part. Could you report your error message here or on the rosettacode talk page please? lol, it would look like this: I'm too dumb to figure out how to use a bash script and I forget what issue it was that caused me to not want to use the perl, oh yea... I had no idea how to"feed" the address into the program. So I gave up. No reason to noise up your page with that. now I'm looking at http://blockexplorer.com/q/checkaddress as I found the above php useless.... it just gives false negatives. why is there no simple tool like http://blockexplorer.com/q/checkaddress oh, wait, maybe there is over at http://blockexplorer.com/q/checkaddress.. I'll report back (unless I just get lost in smoke and code). Oh, I should probably start with my objective.... but finishing with it will suffice: I am trying to figure out how to check bitcoin addresses and make bitcoin addresses and valid data in an online php form. Title: Re: Python code for validating bitcoin address Post by: theymos on May 08, 2013, 11:48:35 PM why is there no simple tool like http://blockexplorer.com/q/checkaddress /q/checkaddress uses this (http://pastebin.com/vmRQC7ha) plus some extra checking. Note that the checkAddress function assumes that the input is valid base58. Do something like: Code: if(preg_match('/^[1-9A-HJ-NP-Za-km-z]+$/', $address) && strlen($address) <= 34 && checkAddress($address)) Title: Re: Python code for validating bitcoin address Post by: Viceroy on May 09, 2013, 12:24:48 AM thanks!
EDIT Shows Good Addresses as bad. [retracted code] working code a few posts down the thread that way | | | V Title: Re: Python code for validating bitcoin address Post by: jackjack on May 09, 2013, 02:21:08 PM Did you try pywallet's code?
Look for DecodeBase58Check or something like that Title: Re: Python code for validating bitcoin address Post by: Viceroy on May 09, 2013, 02:21:19 PM I'm not getting the same results I see from http://blockexplorer.com/q/checkaddress/ with the above php code. Checking further...
Are there any commercial use restrictions on grabbing data from blockexplore.com? ps. got a link for that, jack? Title: Re: Python code for validating bitcoin address Post by: jackjack on May 09, 2013, 02:36:15 PM https://github.com/joric/pywallet/blob/master/pywallet.py
Title: Re: Python code for validating bitcoin address Post by: Viceroy on May 09, 2013, 02:37:18 PM thank you thank you. dang dude, I can't dive into a 1700 line program right now. what's that do with all those lines?
fwiw my code is down to 7 lines, and two of those are comments. Code: <?php // use with validator.php?refund=btc-address-here Title: Re: Python code for validating bitcoin address Post by: jackjack on May 09, 2013, 03:45:08 PM That's why I told you to look for the definition of DecodeBase58Check in the code, that's the function to decode address to hash160
Title: Re: Python code for validating bitcoin address Post by: theymos on May 09, 2013, 08:15:36 PM I'm not getting the same results I see from http://blockexplorer.com/q/checkaddress/ with the above php code. Checking further... In what cases? It should be identical other than /q/checkaddress's additional info about why the address failed. Title: Re: Python code for validating bitcoin address Post by: Viceroy on May 09, 2013, 08:57:53 PM after further testing it appears to be working as expected. Here's the working code:
called with: http://yourdomain/btcvalidate.php?address="btc-address-here" btcvalidate.php: Code: <?php include("base58.php"); ?> base58.php: Code: <?php Title: Re: Python code for validating bitcoin address Post by: Eisenhower34 on May 27, 2013, 12:16:27 PM The code mentioned in the original post (http://"https://bitcointalk.org/index.php?topic=1026.msg12557#msg12557") returns true for BTC and LTC addresses, because
Code: get_bcaddress_version(address) returns 0 for BTC addresses and 48 for LTC addresses, so both is not None. I wouldnt call this a bug, more a feature that allowes to check other coin addresses. Title: Re: Python code for validating bitcoin address Post by: Melbustus on July 08, 2013, 08:29:18 AM why is there no simple tool like http://blockexplorer.com/q/checkaddress /q/checkaddress uses this (http://pastebin.com/vmRQC7ha) plus some extra checking. Note that the checkAddress function assumes that the input is valid base58. Do something like: Code: if(preg_match('/^[1-9A-HJ-NP-Za-km-z]+$/', $address) && strlen($address) <= 34 && checkAddress($address)) theymos - that pastebin-linked code is yours, right, from: http://code.gogulski.com/bitcoin-php/ Just want to make sure the public domain license applies before I integrate. Thanks! Title: Re: Python code for validating bitcoin address Post by: theymos on July 08, 2013, 01:37:29 PM The pastebin code is mine and public domain. That bitcoin-php library is a separate thing that I wasn't involved with.
Title: Re: Python code for validating bitcoin address Post by: Melbustus on July 08, 2013, 08:07:42 PM The pastebin code is mine and public domain. That bitcoin-php library is a separate thing that I wasn't involved with. Great, thanks. I just glanced at the function sigs and assumed they were by the same author. In any event, I just integrated your code from that pastebin link. That was easy - thanks very much! Title: Re: Python code for validating bitcoin address Post by: super3 on July 18, 2013, 11:17:25 PM Is there any standalone Python code floating around out there? This is what I am using right now:
Code: def validate_address(self, address): Title: Re: Python code for validating bitcoin address Post by: airborne305 on January 04, 2014, 10:43:39 PM This is regardless of whatever language you are trying to use and will require a bitcoind wallet running on your machine. basically take whatever text field that has the string you're trying to validate and turn it into a variable.
in your app or web page... textbox = $varAddress onclick or script... whatever, send this to the wallet. bitcoind validateaddress $varAddress monitor response from [isvalid]. if "true," execute code. if false, execute other code. Valid Address: [isvalid] = true [address] = submitted address Code: server:~$ bitcoind validateaddress mkZuF2onXAxyGuuvoALbPEesMg99uv6k7r Invalid Address: [isvalid] = false Code: server:~$ bitcoind validateaddress mkZuF2onXAxyGuuvoALbPEeIMg99uv6k7r Invalid Address: [isvalid] = false Code: server:~$ bitcoind validateaddress 7kZuF2onXAxyGuuvoALbPEeIMg99uv6k7r Title: Re: Python code for validating bitcoin address Post by: Podey on January 19, 2014, 03:18:20 PM I wrote an Ada version of the bitcoin address validation code and posted it at rosettacode.org.
The example address someone posted in this thread, "miwxGypTcHDXT3m4avmrMMC4co7XWqbG9r," gets reported as invalid, but it also gets reported as invalid by http://blockexplorer.com/q/checkaddress/miwxGypTcHDXT3m4avmrMMC4co7XWqbG9r Does someone have a quick answer to this puzzle? Ada is a good language to write reliable code, so I think it would be a good idea to have reference code for Ada for key functions like this. Title: Re: Python code for validating bitcoin address Post by: Podey on January 20, 2014, 12:34:07 PM OK, duh, the problem was with the version number. The address' version is 6F, which is bogus, but otherwise it is valid. Code which doesn't care about the version number will report the address as valid.
Title: Re: Python code for validating bitcoin address Post by: PyTis on February 25, 2014, 11:47:14 PM Special thanks to Gavin Anderson
So I re-worked Gavin's code just a little bit, so I could basically type cast a Bitcoin address. Below is my code. Please let me know if you find any issues. Code: #!/usr/bin/env python -- fixed Test output below: Quote -------------------------------------------------------------------------------- -- last fix was just a typo in a code's comment typeof test: <type 'str'> original value: 17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem test 0 17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem test 0.type <class '__main__.BTCaddress'> test 0.valid True test 0.version 0 -------------------------------------------------------------------------------- typeof test: <type 'unicode'> original value: 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX test 1 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX test 1.type <class '__main__.BTCaddress'> test 1.valid True test 1.version 5 -------------------------------------------------------------------------------- typeof test: <type 'str'> original value: LhK2kQwiaAvhjWY799cZvMyYwnQAcxkarr test 2 LhK2kQwiaAvhjWY799cZvMyYwnQAcxkarr test 2.type <class '__main__.BTCaddress'> test 2.valid True test 2.version 48 -------------------------------------------------------------------------------- typeof test: <type 'str'> original value: NATX6zEUNfxfvgVwz8qVnnw3hLhhYXhgQn test 3 NATX6zEUNfxfvgVwz8qVnnw3hLhhYXhgQn test 3.type <class '__main__.BTCaddress'> test 3.valid True test 3.version 52 -------------------------------------------------------------------------------- typeof test: <type 'str'> original value: mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn test 4 mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn test 4.type <class '__main__.BTCaddress'> test 4.valid True test 4.version 111 -------------------------------------------------------------------------------- typeof test: <type 'str'> original value: 5Hwgr3u458GLafKBgxtssHSPqJnYoGrSzgQsPwLFhLNYskDPyyA ValueError: Invalid Bitcoin address. Bad RE match r"[a-zA-Z1-9]{27,35}$". -------------------------------------------------------------------------------- typeof test: <type 'str'> original value: 92Pg46rUhgTT7romnV7iGW6W1gbGdeezqdbJCzShkCsYNzyyNcc ValueError: Invalid Bitcoin address. Bad RE match r"[a-zA-Z1-9]{27,35}$". -------------------------------------------------------------------------------- typeof test: <type 'NoneType'> original value: None test 7 None test 7.type <class '__main__.BTCaddress'> test 7.valid False test 7.version None -------------------------------------------------------------------------------- typeof test: <type 'str'> original value: 1111111111111111111114oLvT2 test 8 1111111111111111111114oLvT2 test 8.type <class '__main__.BTCaddress'> test 8.valid True test 8.version 0 -------------------------------------------------------------------------------- typeof test: <type 'float'> original value: 123456789.01 TypeError: Invalid Bitcoin address. Not a string. -------------------------------------------------------------------------------- typeof test: <type 'bool'> original value: True ValueError: Invalid Bitcoin address. Bad RE match r"[a-zA-Z1-9]{27,35}$". -------------------------------------------------------------------------------- typeof test: <type 'str'> original value: test 11 None test 11.type <class '__main__.BTCaddress'> test 11.valid False test 11.version None -------------------------------------------------------------------------------- typeof test: <type 'str'> original value: 1NnZEPLmBEK2HryY4heeJQhQPB8LLbNiPe test 12 1NnZEPLmBEK2HryY4heeJQhQPB8LLbNiPe test 12.type <class '__main__.BTCaddress'> test 12.valid True test 12.version 0 Title: Re: Python code for validating bitcoin address Post by: kadoban on March 18, 2014, 11:42:15 AM A few people mentioned a 27 character bitcoin address, but there's been no mention that 26 character addresses exist. 11111111111111111111ufYVpS is an example. The odds of it actually coming up in practice seem astronomical, but it is still valid (and a couple of the code examples here give a false negative for it).
|