403Webshell
Server IP : 46.17.175.229  /  Your IP : 216.73.216.82
Web Server : LiteSpeed
System : Linux lt-bnk-web1163.main-hosting.eu 4.18.0-553.157.1.lve.el8.x86_64 #1 SMP Mon Aug 24 17:05:39 UTC 2026 x86_64
User : u528038015 ( 528038015)
PHP Version : 8.2.33
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python37/lib/python3.7/site-packages/validators/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python37/lib/python3.7/site-packages/validators/btc_address.py
import re
from hashlib import sha256

from .utils import validator

segwit_pattern = re.compile(
    r'^(bc|tc)[0-3][02-9ac-hj-np-z]{14,74}$')


def validate_segwit_address(addr):
    return segwit_pattern.match(addr)


def decode_base58(addr):
    alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
    return sum([
        (58 ** e) * alphabet.index(i)
        for e, i in enumerate(addr[::-1])
    ])


def validate_old_btc_address(addr):
    "Validate P2PKH and P2SH type address"
    if not len(addr) in range(25, 35):
        return False
    decoded_bytes = decode_base58(addr).to_bytes(25, "big")
    header = decoded_bytes[:-4]
    checksum = decoded_bytes[-4:]
    return checksum == sha256(sha256(header).digest()).digest()[:4]


@validator
def btc_address(value):
    """
    Return whether or not given value is a valid bitcoin address.

    If the value is valid bitcoin address this function returns ``True``,
    otherwise :class:`~validators.utils.ValidationFailure`.

    Full validation is implemented for P2PKH and P2SH addresses.
    For segwit addresses a regexp is used to provide a reasonable estimate
    on whether the address is valid.

    Examples::

        >>> btc_address('3Cwgr2g7vsi1bXDUkpEnVoRLA9w4FZfC69')
        True

    :param value: Bitcoin address string to validate
    """
    if not value or not isinstance(value, str):
        return False
    if value[:2] in ("bc", "tb"):
        return validate_segwit_address(value)
    return validate_old_btc_address(value)

Youez - 2016 - github.com/yon3zu
LinuXploit