|
Server : LiteSpeed System : Linux srv104790275 5.15.0-161-generic #171-Ubuntu SMP Sat Oct 11 08:17:01 UTC 2025 x86_64 User : dewac4139 ( 1077) PHP Version : 8.0.30 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/local/CyberPanel/lib64/python3.10/site-packages/validators/crypto_addresses/ |
Upload File : |
"""TRX Address."""
# standard
import hashlib
import re
# local
from validators.utils import validator
def _base58_decode(addr: str) -> bytes:
"""Decode a base58 encoded address."""
alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
num = 0
for char in addr:
num = num * 58 + alphabet.index(char)
return num.to_bytes(25, byteorder="big")
def _validate_trx_checksum_address(addr: str) -> bool:
"""Validate TRX type checksum address."""
if len(addr) != 34:
return False
try:
address = _base58_decode(addr)
except ValueError:
return False
if len(address) != 25 or address[0] != 0x41:
return False
check_sum = hashlib.sha256(hashlib.sha256(address[:-4]).digest()).digest()[:4]
return address[-4:] == check_sum
@validator
def trx_address(value: str, /):
"""Return whether or not given value is a valid tron address.
Full validation is implemented for TRC20 tron addresses.
Examples:
>>> trx_address('TLjfbTbpZYDQ4EoA4N5CLNgGjfbF8ZWz38')
# Output: True
>>> trx_address('TR2G7Rm4vFqF8EpY4U5xdLdQ7XgJ2U8Vd')
# Output: ValidationError(func=trx_address, args=...)
Args:
value:
Tron address string to validate.
Returns:
(Literal[True]): If `value` is a valid tron address.
(ValidationError): If `value` is an invalid tron address.
"""
if not value:
return False
return re.compile(r"^[T][a-km-zA-HJ-NP-Z1-9]{33}$").match(
value
) and _validate_trx_checksum_address(value)