mm-strk 0.3.2__py3-none-any.whl → 0.3.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
mm_strk/account.py
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
from starknet_py.hash.address import is_checksum_address
|
|
4
|
+
|
|
5
|
+
# Maximum allowable value for a StarkNet address (251 bits)
|
|
6
|
+
MAX_STARKNET_ADDRESS = 2**251
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def is_valid_address(address: str) -> bool:
|
|
10
|
+
"""
|
|
11
|
+
Check if the address is a valid StarkNet address.
|
|
12
|
+
|
|
13
|
+
A valid address:
|
|
14
|
+
- Starts with '0x'
|
|
15
|
+
- Followed by 1 to 64 hex characters (0-9, a-f, A-F)
|
|
16
|
+
- Represents a number less than 2**251
|
|
17
|
+
- Uses either minimal hex form (no leading zeros) or full 64-char padded form with correct checksum
|
|
18
|
+
"""
|
|
19
|
+
# Basic checks
|
|
20
|
+
if not isinstance(address, str) or not address.startswith("0x"):
|
|
21
|
+
return False
|
|
22
|
+
|
|
23
|
+
hex_part = address[2:]
|
|
24
|
+
if len(hex_part) < 1 or len(hex_part) > 64:
|
|
25
|
+
return False
|
|
26
|
+
if not re.fullmatch(r"[0-9a-fA-F]+", hex_part):
|
|
27
|
+
return False
|
|
28
|
+
|
|
29
|
+
# Convert to integer
|
|
30
|
+
try:
|
|
31
|
+
value = int(hex_part, 16)
|
|
32
|
+
except ValueError:
|
|
33
|
+
return False
|
|
34
|
+
|
|
35
|
+
# Range check
|
|
36
|
+
if value >= MAX_STARKNET_ADDRESS:
|
|
37
|
+
return False
|
|
38
|
+
|
|
39
|
+
# Minimal hex form (e.g., '0x123')
|
|
40
|
+
minimal = hex(value)[2:]
|
|
41
|
+
if hex_part.lower() == minimal:
|
|
42
|
+
return True
|
|
43
|
+
|
|
44
|
+
# Full 64-char padded form with checksum (checksummed address)
|
|
45
|
+
return bool(len(hex_part) == 64 and is_checksum_address(address))
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mm-strk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Requires-Python: >=3.12
|
|
5
|
-
Requires-Dist: mm-crypto-utils
|
|
5
|
+
Requires-Dist: mm-crypto-utils~=0.3.7
|
|
6
6
|
Requires-Dist: starknet-py~=0.26.2
|
|
7
|
-
Requires-Dist: typer>=0.15.
|
|
7
|
+
Requires-Dist: typer>=0.15.3
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
mm_strk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
mm_strk/account.py,sha256=43aMZp_DQ-ZWLm5HubbYwN4nyYbVcMWY2SJcbfILXfI,1257
|
|
2
3
|
mm_strk/balance.py,sha256=pcZutM1ZHcLpmdYuCNfWhB7_NGjiSw3H5YG1qDCAIis,1676
|
|
3
4
|
mm_strk/domain.py,sha256=s_u3kRkZDmOEt5eX2O7v3bOw9H56Eyfj1m9tHzi4gOQ,692
|
|
4
5
|
mm_strk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -7,7 +8,7 @@ mm_strk/cli/cli.py,sha256=SvIfjDq83HcFsiK_4S7Oez3Z_7OpYDIJreKALzWVUVQ,796
|
|
|
7
8
|
mm_strk/cli/cli_utils.py,sha256=4_QLJ_rEotHK90PRQqsvCuFydDOXPrXrnMndBffMPIg,103
|
|
8
9
|
mm_strk/cli/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
10
|
mm_strk/cli/cmd/node_cmd.py,sha256=ApBpGXmkQ1cGp2NPqTdqlAYS1SGNBzy81da-quVEHNo,1282
|
|
10
|
-
mm_strk-0.3.
|
|
11
|
-
mm_strk-0.3.
|
|
12
|
-
mm_strk-0.3.
|
|
13
|
-
mm_strk-0.3.
|
|
11
|
+
mm_strk-0.3.3.dist-info/METADATA,sha256=56nc5fysobe3uStoZcOfp7DL3om1wGRb9uvowSFoW5o,177
|
|
12
|
+
mm_strk-0.3.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
13
|
+
mm_strk-0.3.3.dist-info/entry_points.txt,sha256=X6zWJaYaUkTgJrY4LAVpcov8O43PmUU4cQ1ue8prYqQ,48
|
|
14
|
+
mm_strk-0.3.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|