Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions allways/chain_providers/subtensor.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import re
from hashlib import blake2b
from typing import Any, Dict, Optional, Tuple

import bittensor as bt
from bittensor import Keypair
from bittensor.utils import ss58_encode
from bittensor.utils import is_valid_ss58_address, ss58_encode

from allways.chain_providers.base import ChainProvider, ProviderUnreachableError, TransactionInfo
from allways.chains import CHAIN_TAO, ChainDefinition
Expand Down Expand Up @@ -276,9 +275,9 @@ def get_balance(self, address: str) -> int:
def is_valid_address(self, address: str) -> bool:
"""Validate an SS58 address."""
try:
if not address or len(address) != 48:
if not isinstance(address, str) or len(address) != 48:
return False
return bool(re.match(r'^[1-9A-HJ-NP-Za-km-z]{48}$', address))
return is_valid_ss58_address(address)
except Exception:
return False

Expand Down
8 changes: 8 additions & 0 deletions tests/test_scale.py
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,14 @@ def test_invalid_chars(self):
# Contains 0, O, I, l — invalid in base58
assert p.is_valid_address('0' * 48) is False

def test_invalid_checksum(self):
p = self.provider()
assert p.is_valid_address('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQZ') is False

def test_base58_shape_without_valid_ss58_payload(self):
p = self.provider()
assert p.is_valid_address('1' * 48) is False

def test_empty(self):
p = self.provider()
assert p.is_valid_address('') is False
Expand Down
Loading