naeural-client 2.6.39__py3-none-any.whl → 2.6.41__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.
naeural_client/_ver.py CHANGED
@@ -1,4 +1,4 @@
1
- __VER__ = "2.6.39"
1
+ __VER__ = "2.6.41"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
naeural_client/bc/base.py CHANGED
@@ -7,6 +7,8 @@ import datetime
7
7
  import uuid
8
8
  import requests
9
9
 
10
+ from web3 import Web3
11
+
10
12
  from hashlib import sha256, md5
11
13
  from threading import Lock
12
14
  from copy import deepcopy
@@ -1404,6 +1406,72 @@ class BaseBlockEngine:
1404
1406
  True if `address` meets the basic criteria for an EVM address, False otherwise.
1405
1407
  """
1406
1408
  return BaseBlockEngine.is_valid_evm_address(address)
1409
+
1410
+
1411
+ @staticmethod
1412
+ def web3_is_node_licensed(address : str, network='mainnet') -> bool:
1413
+ """
1414
+ Check if the address is allowed to send commands to the node
1415
+
1416
+ Parameters
1417
+ ----------
1418
+ address : str
1419
+ the address to check.
1420
+ """
1421
+ assert network.lower() in ['mainnet', 'testnet'], f"Invalid network {network}"
1422
+
1423
+ assert BaseBlockEngine.is_valid_eth_address(address), "Invalid Ethereum address"
1424
+
1425
+ if network.lower() == 'mainnet':
1426
+ contract_address = dAuth.DAUTH_MAINNET_ND_ADDR
1427
+ rpc_url = dAuth.DAUTH_MAINNET_RPC
1428
+ else:
1429
+ contract_address = dAuth.DAUTH_TESTNET_ND_ADDR
1430
+ rpc_url = dAuth.DAUTH_TESTNET_RPC
1431
+
1432
+ w3 = Web3(Web3.HTTPProvider(rpc_url))
1433
+
1434
+ contract_abi = dAuth.DAUTH_ABI_IS_NODE_ACTIVE
1435
+
1436
+ contract = w3.eth.contract(address=contract_address, abi=contract_abi)
1437
+
1438
+ result = contract.functions.isNodeActive(address).call()
1439
+ return result
1440
+
1441
+
1442
+ def web3_get_oracles(self, network='mainnet') -> list:
1443
+ """
1444
+ Get the list of oracles from the contract
1445
+
1446
+ Parameters
1447
+ ----------
1448
+ network : str, optional
1449
+ the network to use. The default is 'mainnet'.
1450
+
1451
+ Returns
1452
+ -------
1453
+ list
1454
+ the list of oracles addresses.
1455
+
1456
+ """
1457
+ assert network.lower() in ['mainnet', 'testnet'], f"Invalid network {network}"
1458
+
1459
+ if network.lower() == 'mainnet':
1460
+ contract_address = dAuth.DAUTH_MAINNET_ND_ADDR
1461
+ rpc_url = dAuth.DAUTH_MAINNET_RPC
1462
+ else:
1463
+ contract_address = dAuth.DAUTH_TESTNET_ND_ADDR
1464
+ rpc_url = dAuth.DAUTH_TESTNET_RPC
1465
+
1466
+ w3 = Web3(Web3.HTTPProvider(rpc_url))
1467
+
1468
+ contract_abi = dAuth.DAUTH_ABI_GET_SIGNERS
1469
+
1470
+ contract = w3.eth.contract(address=contract_address, abi=contract_abi)
1471
+
1472
+ result = contract.functions.getSigners().call()
1473
+ return result
1474
+
1407
1475
 
1408
1476
 
1409
1477
  ### end Ethereum
naeural_client/bc/ec.py CHANGED
@@ -12,12 +12,11 @@ from cryptography.hazmat.backends import default_backend
12
12
  from cryptography.hazmat.primitives.ciphers.aead import AESGCM
13
13
  from cryptography.hazmat.primitives.kdf.hkdf import HKDF
14
14
 
15
- from web3 import Web3
16
15
  from eth_account import Account
17
16
  from eth_utils import keccak, to_checksum_address
18
17
  from eth_account.messages import encode_defunct
19
18
 
20
- from .base import BaseBlockEngine, VerifyMessage, BCct
19
+ from .base import BaseBlockEngine, VerifyMessage, BCct, Web3
21
20
 
22
21
 
23
22
 
@@ -708,9 +707,29 @@ class BaseBCEllipticCurveEngine(BaseBlockEngine):
708
707
  """
709
708
  public_key = self._address_to_pk(address)
710
709
  return self._get_eth_address(pk=public_key)
711
-
712
-
713
710
 
711
+ def is_node_address_in_eth_addresses(self, node_address: str, lst_eth_addrs) -> bool:
712
+ """
713
+ Check if the node address is in the list of Ethereum addresses
714
+
715
+ Parameters
716
+ ----------
717
+ node_address : str
718
+ the node address.
719
+
720
+ lst_eth_addrs : list
721
+ list of Ethereum addresses.
722
+
723
+ Returns
724
+ -------
725
+ bool
726
+ True if the node address is in the list of Ethereum addresses.
727
+
728
+ """
729
+ eth_addr = self.node_address_to_eth_address(node_address)
730
+ return eth_addr in lst_eth_addrs
731
+
732
+
714
733
  def eth_hash_message(self, types, values, as_hex=False):
715
734
  """
716
735
  Hashes a message using the keccak256 algorithm.
@@ -16,7 +16,49 @@ DAUTH_ENV_KEY = 'EE_DAUTH_URL'
16
16
  DAUTH_NONCE = 'nonce'
17
17
  DAUTH_VARS = [DAUTH_NONCE, BCctbase.SIGN, BCctbase.SENDER, BCctbase.HASH]
18
18
 
19
+ _DAUTH_ABI_IS_NODE_ACTIVE = [{
20
+ "inputs": [
21
+ {
22
+ "internalType": "address",
23
+ "name": "nodeAddress",
24
+ "type": "address"
25
+ }
26
+ ],
27
+ "name": "isNodeActive",
28
+ "outputs": [
29
+ {
30
+ "internalType": "bool",
31
+ "name": "",
32
+ "type": "bool"
33
+ }
34
+ ],
35
+ "stateMutability": "view",
36
+ "type": "function"
37
+ }]
38
+
39
+ _DAUTH_ABI_GET_SIGNERS = [{
40
+ "inputs": [],
41
+ "name": "getSigners",
42
+ "outputs": [
43
+ {
44
+ "internalType": "address[]",
45
+ "name": "",
46
+ "type": "address[]"
47
+ }
48
+ ],
49
+ "stateMutability": "view",
50
+ "type": "function"
51
+ }]
52
+
53
+
54
+
19
55
  class dAuth:
56
+ DAUTH_TESTNET_ND_ADDR = '0x9aB4e425c7dFFC7Aa1A7a262727b0b663e047571'
57
+ DAUTH_MAINNET_ND_ADDR = ''
58
+
59
+ DAUTH_MAINNET_RPC = 'https://base-mainnet.public.blastapi.io'
60
+ DAUTH_TESTNET_RPC = 'https://base-sepolia.public.blastapi.io'
61
+
20
62
  DAUTH_SENDER_ALIAS = 'sender_alias'
21
63
  DAUTH_SENDER_ALIAS_DEFAULT = 'direct-call'
22
64
  DAUTH_SENDER_CORE_VER = 'sender_core_ver'
@@ -44,6 +86,9 @@ class dAuth:
44
86
  DAUTH_SENDER_TYPE_SDK = 'sdk'
45
87
  DAUTH_SENDER_TYPE_NODE = 'node'
46
88
  DAUTH_SENDER_ETH = 'sender_eth_addr'
89
+ DAUTH_ABI_IS_NODE_ACTIVE = _DAUTH_ABI_IS_NODE_ACTIVE
90
+ DAUTH_ABI_GET_SIGNERS = _DAUTH_ABI_GET_SIGNERS
91
+ # end class dAuth
47
92
 
48
93
  ETH_ENABLED_ENV_KEY = 'EE_ETH_ENABLED'
49
94
 
@@ -575,7 +575,7 @@ def handle_command_results(res):
575
575
  def oracle_tester_init(silent=True, **kwargs):
576
576
  log = Logger(
577
577
  "R1CTL",
578
- base_folder=get_user_folder(),
578
+ base_folder=str(get_user_folder()),
579
579
  app_folder="_local_cache",
580
580
  silent=silent
581
581
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: naeural_client
3
- Version: 2.6.39
3
+ Version: 2.6.41
4
4
  Summary: `naeural_client` is the Python SDK required for client app development for the Naeural Edge Protocol Edge Protocol framework
5
5
  Project-URL: Homepage, https://github.com/NaeuralEdgeProtocol/naeural_client
6
6
  Project-URL: Bug Tracker, https://github.com/NaeuralEdgeProtocol/naeural_client/issues
@@ -1,5 +1,5 @@
1
1
  naeural_client/__init__.py,sha256=YimqgDbjLuywsf8zCWE0EaUXH4MBUrqLxt0TDV558hQ,632
2
- naeural_client/_ver.py,sha256=LKmpmF9zipVxTAWBLJnSORTzUky-UsiIPtU_RbkZbB8,331
2
+ naeural_client/_ver.py,sha256=jRx8rmVlh1pdQJHh66Tj_JEqEPJMYnWRsbTGdwt9cEA,331
3
3
  naeural_client/base_decentra_object.py,sha256=C4iwZTkhKNBS4VHlJs5DfElRYLo4Q9l1V1DNVSk1fyQ,4412
4
4
  naeural_client/plugins_manager_mixin.py,sha256=X1JdGLDz0gN1rPnTN_5mJXR8JmqoBFQISJXmPR9yvCo,11106
5
5
  naeural_client/base/__init__.py,sha256=hACh83_cIv7-PwYMM3bQm2IBmNqiHw-3PAfDfAEKz9A,259
@@ -14,9 +14,9 @@ naeural_client/base/webapp_pipeline.py,sha256=ZNGqZ36DY076XVDfGu2Q61kCt3kxIJ4Mi4
14
14
  naeural_client/base/payload/__init__.py,sha256=y8fBI8tG2ObNfaXFWjyWZXwu878FRYj_I8GIbHT4GKE,29
15
15
  naeural_client/base/payload/payload.py,sha256=x-au7l67Z_vfn_4R2C_pjZCaFuUVXHngJiGOfIAYVdE,2690
16
16
  naeural_client/bc/__init__.py,sha256=FQj23D1PrY06NUOARiKQi4cdj0-VxnoYgYDEht8lpr8,158
17
- naeural_client/bc/base.py,sha256=64hbp866n2DBCc7xxzEniszr4dQ-0rLKJPKIQsST0Ig,42950
17
+ naeural_client/bc/base.py,sha256=rrzhpcymcQBaxfo-fLgG8a5DqkdN_W75Ud9naEHvzy0,44759
18
18
  naeural_client/bc/chain.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- naeural_client/bc/ec.py,sha256=qI8l7YqiS4MNftlx-tF7IZUswrSeQc7KMn5OZ0fEaJs,23370
19
+ naeural_client/bc/ec.py,sha256=-HPfKpYAqy_eZpiJf3gWR2L4ZDDP7fZY2uwdNYYmS80,23868
20
20
  naeural_client/certs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt,sha256=y-6io0tseyx9-a4Pmde1z1gPULtJNSYUpG_YFkYaMKU,1337
22
22
  naeural_client/cli/README.md,sha256=WPdI_EjzAbUW1aPyj1sSR8rLydcJKZtoiaEtklQrjHo,74
@@ -33,7 +33,7 @@ naeural_client/comm/mqtt_wrapper.py,sha256=Ig3bFZkCbWd4y_Whn2PPa91Z3aLgNbNPau6Tn
33
33
  naeural_client/const/README.md,sha256=6OHesr-f5NBuuJGryEoi_TCu2XdlhfQYlDKx_IJoXeg,177
34
34
  naeural_client/const/__init__.py,sha256=MM6Zib6i7M2qWcMkLtLx14zqU-lE-u2uPHjNvbh2jAM,478
35
35
  naeural_client/const/apps.py,sha256=ePBiJXLuPfFOKuw-LJrT9OWbaodU7QApfDurIPNDoB4,655
36
- naeural_client/const/base.py,sha256=Tof_as5JT_NgD9xI8OiJm328eB7SyGAOkfLQSt2jvC0,5340
36
+ naeural_client/const/base.py,sha256=4VNZdm3Bzigure1SqkZ94buEdwVnQhb5cI3KBYlJgFs,6260
37
37
  naeural_client/const/comms.py,sha256=La6JXWHexH8CfcBCKyT4fCIoeaoZlcm7KtZ57ab4ZgU,2201
38
38
  naeural_client/const/environment.py,sha256=iytmTDgbOjvORPwHQmc0K0r-xJx7dnnzNnqAJJiFCDA,870
39
39
  naeural_client/const/formatter.py,sha256=AW3bWlqf39uaqV4BBUuW95qKYfF2OkkU4f9hy3kSVhM,200
@@ -82,9 +82,9 @@ naeural_client/utils/__init__.py,sha256=mAnke3-MeRzz3nhQvhuHqLnpaaCSmDxicd7Ck9uw
82
82
  naeural_client/utils/comm_utils.py,sha256=4cS9llRr_pK_3rNgDcRMCQwYPO0kcNU7AdWy_LtMyCY,1072
83
83
  naeural_client/utils/config.py,sha256=Ub5sw3NG6wskAF5C4s0WU0rzXHVLy70ZTRU0W8HUGTM,6403
84
84
  naeural_client/utils/dotenv.py,sha256=_AgSo35n7EnQv5yDyu7C7i0kHragLJoCGydHjvOkrYY,2008
85
- naeural_client/utils/oracle_sync/oracle_tester.py,sha256=wBetjbJ8Z6VjTn0y7aqxL59Z9Qy1sukJ4bGlykNf0vA,25307
86
- naeural_client-2.6.39.dist-info/METADATA,sha256=CS5uWfA_sKzkNFWHmh4N-iv22ym-wyL5NiEZVez-6Ys,12354
87
- naeural_client-2.6.39.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
88
- naeural_client-2.6.39.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
89
- naeural_client-2.6.39.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
90
- naeural_client-2.6.39.dist-info/RECORD,,
85
+ naeural_client/utils/oracle_sync/oracle_tester.py,sha256=GmZwu2JM9_UB2K-4rKB3o0RgWLqM-7Im6HwBnQLXmHI,25312
86
+ naeural_client-2.6.41.dist-info/METADATA,sha256=rGgli3LSZXZyouXMJAQajOd_TIRRNC8-I3Z9bVB-EA0,12354
87
+ naeural_client-2.6.41.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
88
+ naeural_client-2.6.41.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
89
+ naeural_client-2.6.41.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
90
+ naeural_client-2.6.41.dist-info/RECORD,,