astreum 0.3.1__py3-none-any.whl → 0.3.16__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.
Files changed (38) hide show
  1. astreum/__init__.py +4 -2
  2. astreum/communication/handlers/handshake.py +62 -83
  3. astreum/communication/handlers/object_request.py +176 -0
  4. astreum/communication/handlers/object_response.py +115 -0
  5. astreum/communication/handlers/ping.py +6 -20
  6. astreum/communication/handlers/route_request.py +76 -0
  7. astreum/communication/handlers/route_response.py +53 -0
  8. astreum/communication/models/message.py +81 -58
  9. astreum/communication/models/peer.py +42 -14
  10. astreum/communication/models/route.py +2 -7
  11. astreum/communication/processors/__init__.py +0 -0
  12. astreum/communication/processors/incoming.py +98 -0
  13. astreum/communication/processors/outgoing.py +20 -0
  14. astreum/communication/processors/peer.py +59 -0
  15. astreum/communication/setup.py +39 -76
  16. astreum/communication/start.py +9 -10
  17. astreum/communication/util.py +7 -0
  18. astreum/consensus/start.py +9 -10
  19. astreum/consensus/validator.py +17 -8
  20. astreum/consensus/workers/discovery.py +6 -7
  21. astreum/consensus/workers/validation.py +334 -291
  22. astreum/consensus/workers/verify.py +8 -10
  23. astreum/crypto/chacha20poly1305.py +74 -0
  24. astreum/machine/evaluations/high_evaluation.py +237 -237
  25. astreum/machine/evaluations/low_evaluation.py +18 -18
  26. astreum/node.py +29 -7
  27. astreum/storage/actions/get.py +183 -69
  28. astreum/storage/actions/set.py +66 -20
  29. astreum/storage/requests.py +28 -0
  30. astreum/storage/setup.py +3 -25
  31. astreum/utils/config.py +76 -0
  32. {astreum-0.3.1.dist-info → astreum-0.3.16.dist-info}/METADATA +3 -3
  33. astreum-0.3.16.dist-info/RECORD +72 -0
  34. astreum/communication/handlers/storage_request.py +0 -81
  35. astreum-0.3.1.dist-info/RECORD +0 -62
  36. {astreum-0.3.1.dist-info → astreum-0.3.16.dist-info}/WHEEL +0 -0
  37. {astreum-0.3.1.dist-info → astreum-0.3.16.dist-info}/licenses/LICENSE +0 -0
  38. {astreum-0.3.1.dist-info → astreum-0.3.16.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,76 @@
1
+
2
+ from pathlib import Path
3
+ from typing import Dict
4
+
5
+ DEFAULT_HOT_STORAGE_LIMIT = 1 << 30 # 1 GiB
6
+ DEFAULT_COLD_STORAGE_LIMIT = 10 << 30 # 10 GiB
7
+ DEFAULT_PEER_TIMEOUT_SECONDS = 15 * 60 # 15 minutes
8
+ DEFAULT_PEER_TIMEOUT_INTERVAL_SECONDS = 10 # 10 seconds
9
+
10
+
11
+ def config_setup(config: Dict = {}):
12
+ """
13
+ Normalize configuration values before the node starts.
14
+ """
15
+ chain_str = config.get("chain", "test")
16
+ if chain_str not in {"main", "test"}:
17
+ chain_str = "test"
18
+ config["chain"] = chain_str
19
+ config["chain_id"] = 1 if chain_str == "main" else 0
20
+
21
+ hot_limit_raw = config.get(
22
+ "hot_storage_limit", config.get("hot_storage_default_limit", DEFAULT_HOT_STORAGE_LIMIT)
23
+ )
24
+ try:
25
+ config["hot_storage_default_limit"] = int(hot_limit_raw)
26
+ except (TypeError, ValueError) as exc:
27
+ raise ValueError(
28
+ f"hot_storage_limit must be an integer: {hot_limit_raw!r}"
29
+ ) from exc
30
+
31
+ cold_limit_raw = config.get("cold_storage_limit", DEFAULT_COLD_STORAGE_LIMIT)
32
+ try:
33
+ config["cold_storage_limit"] = int(cold_limit_raw)
34
+ except (TypeError, ValueError) as exc:
35
+ raise ValueError(
36
+ f"cold_storage_limit must be an integer: {cold_limit_raw!r}"
37
+ ) from exc
38
+
39
+ cold_path_raw = config.get("cold_storage_path")
40
+ if cold_path_raw:
41
+ try:
42
+ path_obj = Path(cold_path_raw)
43
+ path_obj.mkdir(parents=True, exist_ok=True)
44
+ config["cold_storage_path"] = str(path_obj)
45
+ except OSError:
46
+ config["cold_storage_path"] = None
47
+ else:
48
+ config["cold_storage_path"] = None
49
+
50
+ peer_timeout_raw = config.get("peer_timeout", DEFAULT_PEER_TIMEOUT_SECONDS)
51
+ try:
52
+ peer_timeout = int(peer_timeout_raw)
53
+ except (TypeError, ValueError) as exc:
54
+ raise ValueError(
55
+ f"peer_timeout must be an integer: {peer_timeout_raw!r}"
56
+ ) from exc
57
+
58
+ if peer_timeout <= 0:
59
+ raise ValueError("peer_timeout must be a positive integer")
60
+
61
+ config["peer_timeout"] = peer_timeout
62
+
63
+ interval_raw = config.get("peer_timeout_interval", DEFAULT_PEER_TIMEOUT_INTERVAL_SECONDS)
64
+ try:
65
+ interval = int(interval_raw)
66
+ except (TypeError, ValueError) as exc:
67
+ raise ValueError(
68
+ f"peer_timeout_interval must be an integer: {interval_raw!r}"
69
+ ) from exc
70
+
71
+ if interval <= 0:
72
+ raise ValueError("peer_timeout_interval must be a positive integer")
73
+
74
+ config["peer_timeout_interval"] = interval
75
+
76
+ return config
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: astreum
3
- Version: 0.3.1
3
+ Version: 0.3.16
4
4
  Summary: Python library to interact with the Astreum blockchain and its virtual machine.
5
5
  Author-email: "Roy R. O. Okello" <roy@stelar.xyz>
6
6
  Project-URL: Homepage, https://github.com/astreum/lib-py
@@ -113,11 +113,11 @@ node.env_set(env_id, "int.add", int_add_fn)
113
113
 
114
114
  # 5) Retrieve the function and call it with bytes 1 and 2
115
115
  bound = node.env_get(env_id, "int.add")
116
- call = Expr.ListExpr([Expr.Byte(1), Expr.Byte(2), bound])
116
+ call = Expr.ListExpr([Expr.Bytes(b"\x01"), Expr.Bytes(b"\x02"), bound])
117
117
  res = node.high_eval(env_id, call)
118
118
 
119
119
  # sk returns a list of bytes; for 1+2 expect a single byte with value 3
120
- print([b.value for b in res.elements]) # [3]
120
+ print([int.from_bytes(b.value, 'big', signed=True) for b in res.elements]) # [3]
121
121
  ```
122
122
 
123
123
  ### Handling errors
@@ -0,0 +1,72 @@
1
+ astreum/__init__.py,sha256=ohPOPq9IdKln63LvbLR6HwWjMnvInelwlW-FXRFXa2M,370
2
+ astreum/node.py,sha256=Rl4SdsA5olkgY33Q_d8XpKQfECKvqfTN_Y2FkCx6uE0,2852
3
+ astreum/communication/__init__.py,sha256=wNxzsAk8Fol9cGMPuVvY4etrrMqn3SjZq1dE82kFrxw,228
4
+ astreum/communication/setup.py,sha256=tDf4koYu04u_iOCeuvYyTaJaxQm6-yIGkedXCoWjT8w,5876
5
+ astreum/communication/start.py,sha256=wxL1cgChebhnaeEaY9flS6qybo_cFW2-tcRvjLxC8Hw,1823
6
+ astreum/communication/util.py,sha256=fS3u3giOOXmvN0_reb0oIaXsFESHAWz-bbAuzdzdGQ4,1575
7
+ astreum/communication/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ astreum/communication/handlers/handshake.py,sha256=LZLW06tufhiLAW0k1yC8n6wvTPT5VaUAvncHl8fm5n8,1910
9
+ astreum/communication/handlers/object_request.py,sha256=n_ThJomdYXm6HPfkLMmCqRxO58xPCUOHXf1ddmG-OC8,7163
10
+ astreum/communication/handlers/object_response.py,sha256=X5MfYxd_b4SfKq3129Fi29ZfLynWNRyhGuoISiMHy20,3959
11
+ astreum/communication/handlers/ping.py,sha256=2fVynfVIsbWHtf7lpM6fTYWmeG0I1WSU3tmgCh9di7A,916
12
+ astreum/communication/handlers/route_request.py,sha256=KrucRgiM_oFNmwt93bRzNpeVHFATq3uhlNjGJIvzu-c,2477
13
+ astreum/communication/handlers/route_response.py,sha256=ZUKyXPpZzpVYKBgygMIlPjcmjrxi0s8M3COFfY5aO4A,1744
14
+ astreum/communication/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ astreum/communication/models/message.py,sha256=2qln_PpKkVEoPdSGeQxUWAFxcEsHB-lz7dzTAsO94HU,4485
16
+ astreum/communication/models/peer.py,sha256=834UyyErBGbZs4dxe_SWz3gnRGnvFyc-7XQPrdNvDFE,1669
17
+ astreum/communication/models/ping.py,sha256=u_DQTZJsbMdYiDDqjdZDsLaN5na2m9WZjVeEM3zq9_Y,955
18
+ astreum/communication/models/route.py,sha256=NdmnI1J1wFs2pkm6W0Kv-29JeqGiHcKlw4-esT5ZFLA,3797
19
+ astreum/communication/processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ astreum/communication/processors/incoming.py,sha256=10l6Az-Ul_2BvYpTXgPiL9bL0te1q3GB3aET0JednKE,3325
21
+ astreum/communication/processors/outgoing.py,sha256=09nAeTzvo3jGWl3SLgIQr8vfmO_IvdDqSG7_ZKThYPk,593
22
+ astreum/communication/processors/peer.py,sha256=1P_-F1stJtXCPI3vlDtLcsQpQRTQQl1dNyJBDeFRGP4,2129
23
+ astreum/consensus/__init__.py,sha256=VZR_NyGSD5VvZp3toD2zpdYwFDLBIcckeVZXFPlruuU,425
24
+ astreum/consensus/genesis.py,sha256=RI9AzQFmDTgNFuiiTmW2dDiGcURIUGmThdRpxWrUOBk,1962
25
+ astreum/consensus/setup.py,sha256=lrEapfpJXKqw4iwST11-tqPAI2VW2h3H6Ue4JDAtrP4,3142
26
+ astreum/consensus/start.py,sha256=DM45Pw6JL5rew-KpcspINguH43ZUHr4v99tXjYqaEkE,2551
27
+ astreum/consensus/validator.py,sha256=Jj9_ndZ358yAqVzQpLyjr4lkBjdCscAYoqAi-Ja3Qoo,3871
28
+ astreum/consensus/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ astreum/consensus/models/account.py,sha256=3QcT59QUZynysLSbiywidFYVzYJ3LR6qia7JwXOwn4I,2690
30
+ astreum/consensus/models/accounts.py,sha256=iUMs6LvmMea-gxd6-ujkFjqhWmuW1cl9XTWGXQkpLys,2388
31
+ astreum/consensus/models/block.py,sha256=nNtw9TbEAF1mIEfgJr1fuswcZ0B63SVnuBANqJ5Zaac,13531
32
+ astreum/consensus/models/chain.py,sha256=SIIDFSYbag76kTUNwnuJ2_zyuhFsvT7n5HgrVTxBrvE,2797
33
+ astreum/consensus/models/fork.py,sha256=IbXRB93bUg2k3q3oQ9dOPzozV-rY-TEDFjYrw-WBymE,3859
34
+ astreum/consensus/models/receipt.py,sha256=KjKKjYp_LnP2zkX1FLIwD_4hqKV1b2TPfp43tY701q4,3336
35
+ astreum/consensus/models/transaction.py,sha256=AYa1Q-BaYW3mkOv1e3WbvDFEsYamKMiFrja-eO2zU_Y,7475
36
+ astreum/consensus/workers/__init__.py,sha256=bS5FjbevbIR5FHbVGnT4Jli17VIld_5auemRw4CaHFU,278
37
+ astreum/consensus/workers/discovery.py,sha256=u6HyxamMVJjYnPFPa_U95I2pN9UzHRQ-LOa7YYZT808,2453
38
+ astreum/consensus/workers/validation.py,sha256=geHcKaTUIbCnYvAHj9xTbiSMQTpvH6kJ4O5b5sCFUwk,14540
39
+ astreum/consensus/workers/verify.py,sha256=tBBrAHH8Xcg3uopmQSjT6iuZd1s-9FkLnJ_JgeW5HdU,3423
40
+ astreum/crypto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ astreum/crypto/chacha20poly1305.py,sha256=01VtLx_bdJC86ifQeTA494ZdKbPM2MswDTLmAs9bl8c,2479
42
+ astreum/crypto/ed25519.py,sha256=FRnvlN0kZlxn4j-sJKl-C9tqiz_0z4LZyXLj3KIj1TQ,1760
43
+ astreum/crypto/quadratic_form.py,sha256=pJgbORey2NTWbQNhdyvrjy_6yjORudQ67jBz2ScHptg,4037
44
+ astreum/crypto/wesolowski.py,sha256=SUgGXW3Id07dJtWzDcs4dluIhjqbRWQ8YWjn_mK78AQ,4092
45
+ astreum/crypto/x25519.py,sha256=i29v4BmwKRcbz9E7NKqFDQyxzFtJUqN0St9jd7GS1uA,1137
46
+ astreum/machine/__init__.py,sha256=TjWf9RlGuOGbCqdjJKidh8W4pCzUoLpi3FgutssEGoQ,479
47
+ astreum/machine/parser.py,sha256=Z_Y0Sax0rPh8JcIo19-iNDQoc5GTdGQkmfFyLpCB4bw,1757
48
+ astreum/machine/tokenizer.py,sha256=6wPqR_D3h5BEvR78XKtD45ouy77RZBbz4Yh4jHSmN4o,2394
49
+ astreum/machine/evaluations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ astreum/machine/evaluations/high_evaluation.py,sha256=cqYudR9WAdVz9dURDyuQhZsuhWbmjbdw9x3UxDEYpPI,9971
51
+ astreum/machine/evaluations/low_evaluation.py,sha256=_93r6DKkCwnaOKmVGSp8JBlUPZpKrA1GECqVnwLb9es,10370
52
+ astreum/machine/evaluations/script_evaluation.py,sha256=eWouYUwTYzaqUyXqEe-lAJFIluW0gMeCDdXqle88oWw,864
53
+ astreum/machine/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
+ astreum/machine/models/environment.py,sha256=WjP6GRX_8e0-BAhzRLvQ6fYtKQEVR0LZi7DZNZS0TSE,1019
55
+ astreum/machine/models/expression.py,sha256=yYr9ktk-NWPL4EXwHz7ePvr9eNvfSBQe3yzRUz06yas,7675
56
+ astreum/machine/models/meter.py,sha256=5q2PFW7_jmgKVM1-vwE4RRjMfPEthUA4iu1CwR-Axws,505
57
+ astreum/storage/__init__.py,sha256=Flk6WXT2xGFHWWJiZHK3O5OpjoLTOFMqqIiJTtD58kY,111
58
+ astreum/storage/requests.py,sha256=q_rxG_k7POth93HmsUTCLSyNw-4EdFqqNExhIwm7Q0g,818
59
+ astreum/storage/setup.py,sha256=fnDZCxVskOAPDl-oTwq-iLiRCD3CKHOEgI4LALNJQWI,612
60
+ astreum/storage/actions/get.py,sha256=yf1HMYPMxRXTbZbSoe8JI6C4eWkcbScFQj-nGozBsCQ,6845
61
+ astreum/storage/actions/set.py,sha256=8MvlZS3MFvLc-apDb6mucxt1JBxw82lxMVoa0sTvdo8,5751
62
+ astreum/storage/models/atom.py,sha256=FY_bgtoju59Yo7TL1DTFTr9_pRMNBuH6-u59D6bz2fc,3163
63
+ astreum/storage/models/trie.py,sha256=Bn3ssPGI7YGS4iUH5ESvpG1NE6Ljx2Xo7wkEpQhjKUY,17587
64
+ astreum/utils/bytes.py,sha256=9QTWC2JCdwWLB5R2mPtmjPro0IUzE58DL3uEul4AheE,846
65
+ astreum/utils/config.py,sha256=MASHeLYzaPHG8Z6vLUd14vRH9JByfAL05tvgZWKrhNM,2517
66
+ astreum/utils/integer.py,sha256=iQt-klWOYVghu_NOT341MmHbOle4FDT3by4PNKNXscg,736
67
+ astreum/utils/logging.py,sha256=mRDtWSCj8vKt58WGKLNSkK9Oa0graNVSoS8URby4Q9g,6684
68
+ astreum-0.3.16.dist-info/licenses/LICENSE,sha256=gYBvRDP-cPLmTyJhvZ346QkrYW_eleke4Z2Yyyu43eQ,1089
69
+ astreum-0.3.16.dist-info/METADATA,sha256=X6_Ea1a8-C-7At3YvK1OjeUsuqh0zmE1SoeUjJaB7qk,7767
70
+ astreum-0.3.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
+ astreum-0.3.16.dist-info/top_level.txt,sha256=1EG1GmkOk3NPmUA98FZNdKouhRyget-KiFiMk0i2Uz0,8
72
+ astreum-0.3.16.dist-info/RECORD,,
@@ -1,81 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import TYPE_CHECKING, Sequence
4
-
5
- from cryptography.hazmat.primitives import serialization
6
-
7
- if TYPE_CHECKING:
8
- from .... import Node
9
- from ..models.message import Message
10
-
11
-
12
- def handle_storage_request(node: "Node", addr: Sequence[object], message: "Message") -> None:
13
- """Process incoming storage request payloads, forwarding if needed."""
14
- logger = node.logger
15
- payload = message.content
16
- if len(payload) < 32:
17
- return
18
-
19
- atom_id = payload[:32]
20
- provider_bytes = payload[32:]
21
- if not provider_bytes:
22
- return
23
-
24
- try:
25
- provider_str = provider_bytes.decode("utf-8")
26
- except UnicodeDecodeError:
27
- return
28
-
29
- try:
30
- host, port = addr[0], int(addr[1])
31
- except Exception:
32
- return
33
- address_key = (host, port)
34
- sender_key_bytes = node.addresses.get(address_key)
35
- if sender_key_bytes is None:
36
- return
37
-
38
- try:
39
- local_key_bytes = node.relay_public_key.public_bytes(
40
- encoding=serialization.Encoding.Raw,
41
- format=serialization.PublicFormat.Raw,
42
- )
43
- except Exception:
44
- return
45
-
46
- def xor_distance(target: bytes, key: bytes) -> int:
47
- return int.from_bytes(
48
- bytes(a ^ b for a, b in zip(target, key)),
49
- byteorder="big",
50
- signed=False,
51
- )
52
-
53
- self_distance = xor_distance(atom_id, local_key_bytes)
54
-
55
- try:
56
- closest_peer = node.peer_route.closest_peer_for_hash(atom_id)
57
- except Exception:
58
- closest_peer = None
59
-
60
- if closest_peer is not None and closest_peer.public_key_bytes != sender_key_bytes:
61
- closest_distance = xor_distance(atom_id, closest_peer.public_key_bytes)
62
- if closest_distance < self_distance:
63
- target_addr = closest_peer.address
64
- if target_addr is not None and target_addr != addr:
65
- try:
66
- node.outgoing_queue.put((message.to_bytes(), target_addr))
67
- except Exception:
68
- return
69
- logger.debug(
70
- "Forwarded storage request for %s to %s",
71
- atom_id.hex(),
72
- target_addr,
73
- )
74
- return
75
-
76
- node.storage_index[atom_id] = provider_str.strip()
77
- logger.debug(
78
- "Stored provider %s for atom %s",
79
- provider_str.strip(),
80
- atom_id.hex(),
81
- )
@@ -1,62 +0,0 @@
1
- astreum/__init__.py,sha256=GkEW_ReYore8_0nEOvPnZLUa3lO7CgMWu6LeEjrGXEk,325
2
- astreum/node.py,sha256=cHZyq9ImhCB9PSROKR5lFsUau6VLCjRIfiJSZhCPFzI,2103
3
- astreum/communication/__init__.py,sha256=wNxzsAk8Fol9cGMPuVvY4etrrMqn3SjZq1dE82kFrxw,228
4
- astreum/communication/setup.py,sha256=qliXCj2uHvzullCPSVtUuEG9zdqHewKgYfQLfsM8tao,7236
5
- astreum/communication/start.py,sha256=lfud8VvLeKFbkF_TwHFODg20RVpClUa4a_zsHB7ynxk,1853
6
- astreum/communication/util.py,sha256=bJ3td3naDzmCelAJQpLwiDMoRBkijQl9YLROjsWyOrI,1256
7
- astreum/communication/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- astreum/communication/handlers/handshake.py,sha256=twd18nnfYcyC8hLXZ0EDwUw-2mPQGRf1RYdW21x9CHM,2378
9
- astreum/communication/handlers/ping.py,sha256=xY-QT0IoeNPKR1hyruRwJa2N8_op7aPOCZUk9X-kZWk,1258
10
- astreum/communication/handlers/storage_request.py,sha256=rUWhoeOxVZHcvEMxi74hN9XF9SFHe9Uw-9q4pBP-KwE,2406
11
- astreum/communication/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- astreum/communication/models/message.py,sha256=Wl1IITj7eY9_q0IOT4J7c5gsjS1bF51CH7GcSSuu5OM,3327
13
- astreum/communication/models/peer.py,sha256=CbqkyCwhFCiC2spd1-KjNdeVGNjjt2ECVs8uHot-ETI,875
14
- astreum/communication/models/ping.py,sha256=u_DQTZJsbMdYiDDqjdZDsLaN5na2m9WZjVeEM3zq9_Y,955
15
- astreum/communication/models/route.py,sha256=LRHx0R1MSIln92GQbyDrZpE_hfiHDiSG_3z1Ssq_1n4,4032
16
- astreum/consensus/__init__.py,sha256=VZR_NyGSD5VvZp3toD2zpdYwFDLBIcckeVZXFPlruuU,425
17
- astreum/consensus/genesis.py,sha256=RI9AzQFmDTgNFuiiTmW2dDiGcURIUGmThdRpxWrUOBk,1962
18
- astreum/consensus/setup.py,sha256=lrEapfpJXKqw4iwST11-tqPAI2VW2h3H6Ue4JDAtrP4,3142
19
- astreum/consensus/start.py,sha256=ZUa77cINmj5AzGR8dnZ1KS0OeDIyesSmrEOx0zo4HBI,2581
20
- astreum/consensus/validator.py,sha256=cqcmw1WEB8DkznNX_Mn8tmE956rVSNCPv1FicdL8EAQ,3647
21
- astreum/consensus/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- astreum/consensus/models/account.py,sha256=3QcT59QUZynysLSbiywidFYVzYJ3LR6qia7JwXOwn4I,2690
23
- astreum/consensus/models/accounts.py,sha256=iUMs6LvmMea-gxd6-ujkFjqhWmuW1cl9XTWGXQkpLys,2388
24
- astreum/consensus/models/block.py,sha256=nNtw9TbEAF1mIEfgJr1fuswcZ0B63SVnuBANqJ5Zaac,13531
25
- astreum/consensus/models/chain.py,sha256=SIIDFSYbag76kTUNwnuJ2_zyuhFsvT7n5HgrVTxBrvE,2797
26
- astreum/consensus/models/fork.py,sha256=IbXRB93bUg2k3q3oQ9dOPzozV-rY-TEDFjYrw-WBymE,3859
27
- astreum/consensus/models/receipt.py,sha256=KjKKjYp_LnP2zkX1FLIwD_4hqKV1b2TPfp43tY701q4,3336
28
- astreum/consensus/models/transaction.py,sha256=AYa1Q-BaYW3mkOv1e3WbvDFEsYamKMiFrja-eO2zU_Y,7475
29
- astreum/consensus/workers/__init__.py,sha256=bS5FjbevbIR5FHbVGnT4Jli17VIld_5auemRw4CaHFU,278
30
- astreum/consensus/workers/discovery.py,sha256=ckko9286WaK0qAaUpk_pHmQe_N3F87iGZu67OhCdtY8,2487
31
- astreum/consensus/workers/validation.py,sha256=1jwFUL1zztuzLiYAmi92-KTUq97yraFAhuvhNhFJeLs,12223
32
- astreum/consensus/workers/verify.py,sha256=eadF27iXOnMife_Pwz65lVwUyTEU8LGIcdGkCT_nzo0,3487
33
- astreum/crypto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- astreum/crypto/ed25519.py,sha256=FRnvlN0kZlxn4j-sJKl-C9tqiz_0z4LZyXLj3KIj1TQ,1760
35
- astreum/crypto/quadratic_form.py,sha256=pJgbORey2NTWbQNhdyvrjy_6yjORudQ67jBz2ScHptg,4037
36
- astreum/crypto/wesolowski.py,sha256=SUgGXW3Id07dJtWzDcs4dluIhjqbRWQ8YWjn_mK78AQ,4092
37
- astreum/crypto/x25519.py,sha256=i29v4BmwKRcbz9E7NKqFDQyxzFtJUqN0St9jd7GS1uA,1137
38
- astreum/machine/__init__.py,sha256=TjWf9RlGuOGbCqdjJKidh8W4pCzUoLpi3FgutssEGoQ,479
39
- astreum/machine/parser.py,sha256=Z_Y0Sax0rPh8JcIo19-iNDQoc5GTdGQkmfFyLpCB4bw,1757
40
- astreum/machine/tokenizer.py,sha256=6wPqR_D3h5BEvR78XKtD45ouy77RZBbz4Yh4jHSmN4o,2394
41
- astreum/machine/evaluations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
- astreum/machine/evaluations/high_evaluation.py,sha256=0tKOvW8T7EEHrL5pZtMUSnUszYTPWSP2xnEocr1eIOk,9778
43
- astreum/machine/evaluations/low_evaluation.py,sha256=n3LwHDD889PAoj1XW7D2Eu4WCalx5nl0mKoLrgdoLpo,10337
44
- astreum/machine/evaluations/script_evaluation.py,sha256=eWouYUwTYzaqUyXqEe-lAJFIluW0gMeCDdXqle88oWw,864
45
- astreum/machine/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
- astreum/machine/models/environment.py,sha256=WjP6GRX_8e0-BAhzRLvQ6fYtKQEVR0LZi7DZNZS0TSE,1019
47
- astreum/machine/models/expression.py,sha256=yYr9ktk-NWPL4EXwHz7ePvr9eNvfSBQe3yzRUz06yas,7675
48
- astreum/machine/models/meter.py,sha256=5q2PFW7_jmgKVM1-vwE4RRjMfPEthUA4iu1CwR-Axws,505
49
- astreum/storage/__init__.py,sha256=Flk6WXT2xGFHWWJiZHK3O5OpjoLTOFMqqIiJTtD58kY,111
50
- astreum/storage/setup.py,sha256=udwLpSCFpneKH9DlxUB40EVjmhjqQQ2hS4dePwQKkL8,1508
51
- astreum/storage/actions/get.py,sha256=XRNOUzD3OjMpfFPyhQQt2rE5dpS_Hdp9Yf5SYELjm30,2572
52
- astreum/storage/actions/set.py,sha256=-eyHJW5xPRbkDV8YvPQsp_SEFkCt4HEQ0VK2soYRXvg,4210
53
- astreum/storage/models/atom.py,sha256=FY_bgtoju59Yo7TL1DTFTr9_pRMNBuH6-u59D6bz2fc,3163
54
- astreum/storage/models/trie.py,sha256=Bn3ssPGI7YGS4iUH5ESvpG1NE6Ljx2Xo7wkEpQhjKUY,17587
55
- astreum/utils/bytes.py,sha256=9QTWC2JCdwWLB5R2mPtmjPro0IUzE58DL3uEul4AheE,846
56
- astreum/utils/integer.py,sha256=iQt-klWOYVghu_NOT341MmHbOle4FDT3by4PNKNXscg,736
57
- astreum/utils/logging.py,sha256=mRDtWSCj8vKt58WGKLNSkK9Oa0graNVSoS8URby4Q9g,6684
58
- astreum-0.3.1.dist-info/licenses/LICENSE,sha256=gYBvRDP-cPLmTyJhvZ346QkrYW_eleke4Z2Yyyu43eQ,1089
59
- astreum-0.3.1.dist-info/METADATA,sha256=_fPZGHAf0_YTfkErbQwTEovrBE0x_MbUPp8uXJ04JUE,7716
60
- astreum-0.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
61
- astreum-0.3.1.dist-info/top_level.txt,sha256=1EG1GmkOk3NPmUA98FZNdKouhRyget-KiFiMk0i2Uz0,8
62
- astreum-0.3.1.dist-info/RECORD,,