naeural-client 2.6.40__py3-none-any.whl → 2.7.0__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.40"
1
+ __VER__ = "2.7.0"
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,78 @@ 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=None) -> 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
+ if network is None:
1422
+ network = os.environ.get(dAuth.DAUTH_NET_ENV_KEY, dAuth.DAUTH_SDK_NET_DEFAULT)
1423
+
1424
+ assert network.lower() in ['mainnet', 'testnet'], f"Invalid network {network}"
1425
+
1426
+ assert BaseBlockEngine.is_valid_eth_address(address), "Invalid Ethereum address"
1427
+
1428
+ if network.lower() == 'mainnet':
1429
+ contract_address = dAuth.DAUTH_MAINNET_ND_ADDR
1430
+ rpc_url = dAuth.DAUTH_MAINNET_RPC
1431
+ else:
1432
+ contract_address = dAuth.DAUTH_TESTNET_ND_ADDR
1433
+ rpc_url = dAuth.DAUTH_TESTNET_RPC
1434
+
1435
+ w3 = Web3(Web3.HTTPProvider(rpc_url))
1436
+
1437
+ contract_abi = dAuth.DAUTH_ABI_IS_NODE_ACTIVE
1438
+
1439
+ contract = w3.eth.contract(address=contract_address, abi=contract_abi)
1440
+
1441
+ result = contract.functions.isNodeActive(address).call()
1442
+ return result
1443
+
1444
+
1445
+ def web3_get_oracles(self, network=None) -> list:
1446
+ """
1447
+ Get the list of oracles from the contract
1448
+
1449
+ Parameters
1450
+ ----------
1451
+ network : str, optional
1452
+ the network to use. The default is None.
1453
+
1454
+ Returns
1455
+ -------
1456
+ list
1457
+ the list of oracles addresses.
1458
+
1459
+ """
1460
+ if network is None:
1461
+ network = os.environ.get(dAuth.DAUTH_NET_ENV_KEY, dAuth.DAUTH_SDK_NET_DEFAULT)
1462
+
1463
+ assert network.lower() in ['mainnet', 'testnet'], f"Invalid network {network}"
1464
+
1465
+ if network.lower() == 'mainnet':
1466
+ contract_address = dAuth.DAUTH_MAINNET_ND_ADDR
1467
+ rpc_url = dAuth.DAUTH_MAINNET_RPC
1468
+ else:
1469
+ contract_address = dAuth.DAUTH_TESTNET_ND_ADDR
1470
+ rpc_url = dAuth.DAUTH_TESTNET_RPC
1471
+
1472
+ w3 = Web3(Web3.HTTPProvider(rpc_url))
1473
+
1474
+ contract_abi = dAuth.DAUTH_ABI_GET_SIGNERS
1475
+
1476
+ contract = w3.eth.contract(address=contract_address, abi=contract_abi)
1477
+
1478
+ result = contract.functions.getSigners().call()
1479
+ return result
1480
+
1407
1481
 
1408
1482
 
1409
1483
  ### 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,52 @@ 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 = '0xE20198EE2B76eED916A568a47cdea9681f7c79BF'
57
+ DAUTH_MAINNET_ND_ADDR = ''
58
+
59
+ DAUTH_NET_ENV_KEY = 'EE_EVM_NET'
60
+ DAUTH_SDK_NET_DEFAULT = 'testnet'
61
+
62
+ DAUTH_MAINNET_RPC = 'https://base-mainnet.public.blastapi.io'
63
+ DAUTH_TESTNET_RPC = 'https://base-sepolia.public.blastapi.io'
64
+
20
65
  DAUTH_SENDER_ALIAS = 'sender_alias'
21
66
  DAUTH_SENDER_ALIAS_DEFAULT = 'direct-call'
22
67
  DAUTH_SENDER_CORE_VER = 'sender_core_ver'
@@ -44,6 +89,9 @@ class dAuth:
44
89
  DAUTH_SENDER_TYPE_SDK = 'sdk'
45
90
  DAUTH_SENDER_TYPE_NODE = 'node'
46
91
  DAUTH_SENDER_ETH = 'sender_eth_addr'
92
+ DAUTH_ABI_IS_NODE_ACTIVE = _DAUTH_ABI_IS_NODE_ACTIVE
93
+ DAUTH_ABI_GET_SIGNERS = _DAUTH_ABI_GET_SIGNERS
94
+ # end class dAuth
47
95
 
48
96
  ETH_ENABLED_ENV_KEY = 'EE_ETH_ENABLED'
49
97
 
@@ -11,15 +11,11 @@ SDK_HOME = ".naeural"
11
11
  LOCAL_PEM_PATH = "./_local_cache/_data/" + BCct.DEFAULT_PEM_FILE
12
12
 
13
13
  ENV_TEMPLATE = """
14
+ # Configuration file for the Ratio1 SDK
14
15
 
15
- EE_MQTT_HOST=r9092118.ala.eu-central-1.emqxsl.com
16
- EE_MQTT_PORT=8883
17
- EE_MQTT_USER=
18
- EE_MQTT=
19
-
20
- EE_SECURED=true
21
-
16
+ EE_EVM_NET=testnet
22
17
  TARGET_NODE=
18
+
23
19
  """
24
20
 
25
21
  def seconds_to_short_format(seconds):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: naeural_client
3
- Version: 2.6.40
3
+ Version: 2.7.0
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=BsLwq9KhhYa4LuBzlHNId1R0Tft7PvwZ67rctp-8ATo,331
2
+ naeural_client/_ver.py,sha256=nfltH8r5uusxZpl2LJRARfkdeeDNO2O50Jfy5fKIaQo,330
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=XyFPSIR5fKQ9iIErDpUDNYtacusTaJieH8D47dGVAD0,44964
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=l54zSoPY0wp_tmDsRVwpESlMxn8HrVtQqnskVNXkaQg,6334
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
@@ -80,11 +80,11 @@ naeural_client/logging/tzlocal/win32.py,sha256=zBoj0vFVrGhnCm_f7xmYzGym4-fV-4Ij2
80
80
  naeural_client/logging/tzlocal/windows_tz.py,sha256=Sv9okktjZJfRGGUOOppsvQuX_eXyXUxkSKCAFmWT9Hw,34203
81
81
  naeural_client/utils/__init__.py,sha256=mAnke3-MeRzz3nhQvhuHqLnpaaCSmDxicd7Ck9uwpmI,77
82
82
  naeural_client/utils/comm_utils.py,sha256=4cS9llRr_pK_3rNgDcRMCQwYPO0kcNU7AdWy_LtMyCY,1072
83
- naeural_client/utils/config.py,sha256=Ub5sw3NG6wskAF5C4s0WU0rzXHVLy70ZTRU0W8HUGTM,6403
83
+ naeural_client/utils/config.py,sha256=oLCalBgMpgh5PUskK8EG3O4X40yW5ptnR91HV_gWJug,6354
84
84
  naeural_client/utils/dotenv.py,sha256=_AgSo35n7EnQv5yDyu7C7i0kHragLJoCGydHjvOkrYY,2008
85
85
  naeural_client/utils/oracle_sync/oracle_tester.py,sha256=GmZwu2JM9_UB2K-4rKB3o0RgWLqM-7Im6HwBnQLXmHI,25312
86
- naeural_client-2.6.40.dist-info/METADATA,sha256=Lj-kpYsRFCpJYBTgqsiXVj4vRUvh1J5R2M4og2N6yQk,12354
87
- naeural_client-2.6.40.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
88
- naeural_client-2.6.40.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
89
- naeural_client-2.6.40.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
90
- naeural_client-2.6.40.dist-info/RECORD,,
86
+ naeural_client-2.7.0.dist-info/METADATA,sha256=G3zvArkG0it73ESOcIzU4rEjuNdi0xnRGqwC0s_Rugs,12353
87
+ naeural_client-2.7.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
88
+ naeural_client-2.7.0.dist-info/entry_points.txt,sha256=CTua17GUrRa4aXeafezGC9TiWKGKQzwTjQmB2jyj22g,91
89
+ naeural_client-2.7.0.dist-info/licenses/LICENSE,sha256=cvOsJVslde4oIaTCadabXnPqZmzcBO2f2zwXZRmJEbE,11311
90
+ naeural_client-2.7.0.dist-info/RECORD,,