naeural-client 2.6.40__tar.gz → 2.7.0__tar.gz

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 (152) hide show
  1. {naeural_client-2.6.40 → naeural_client-2.7.0}/PKG-INFO +1 -1
  2. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/_ver.py +1 -1
  3. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/bc/base.py +74 -0
  4. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/bc/ec.py +23 -4
  5. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/base.py +48 -0
  6. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/utils/config.py +3 -7
  7. {naeural_client-2.6.40 → naeural_client-2.7.0}/pyproject.toml +1 -1
  8. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/_checks/auth_check.py +10 -1
  9. naeural_client-2.7.0/xperimental/dauth/is_node_allowed.py +69 -0
  10. {naeural_client-2.6.40 → naeural_client-2.7.0}/.devcontainer/Dockerfile +0 -0
  11. {naeural_client-2.6.40 → naeural_client-2.7.0}/.devcontainer/devcontainer.json +0 -0
  12. {naeural_client-2.6.40 → naeural_client-2.7.0}/.gitattributes +0 -0
  13. {naeural_client-2.6.40 → naeural_client-2.7.0}/.github/workflows/python-publish.yml +0 -0
  14. {naeural_client-2.6.40 → naeural_client-2.7.0}/.gitignore +0 -0
  15. {naeural_client-2.6.40 → naeural_client-2.7.0}/.vscode/launch.json +0 -0
  16. {naeural_client-2.6.40 → naeural_client-2.7.0}/LICENSE +0 -0
  17. {naeural_client-2.6.40 → naeural_client-2.7.0}/README.md +0 -0
  18. {naeural_client-2.6.40 → naeural_client-2.7.0}/TODOs.md +0 -0
  19. {naeural_client-2.6.40 → naeural_client-2.7.0}/__init__.py +0 -0
  20. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/__init__.py +0 -0
  21. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/__init__.py +0 -0
  22. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/distributed_custom_code_presets.py +0 -0
  23. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/generic_session.py +0 -0
  24. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/instance.py +0 -0
  25. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/payload/__init__.py +0 -0
  26. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/payload/payload.py +0 -0
  27. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/pipeline.py +0 -0
  28. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/plugin_template.py +0 -0
  29. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/responses.py +0 -0
  30. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/transaction.py +0 -0
  31. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base/webapp_pipeline.py +0 -0
  32. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/base_decentra_object.py +0 -0
  33. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/bc/__init__.py +0 -0
  34. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/bc/chain.py +0 -0
  35. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/certs/__init__.py +0 -0
  36. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
  37. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/cli/README.md +0 -0
  38. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/cli/cli.py +0 -0
  39. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/cli/cli_commands.py +0 -0
  40. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/cli/nodes.py +0 -0
  41. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/cli/oracles.py +0 -0
  42. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/code_cheker/__init__.py +0 -0
  43. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/code_cheker/base.py +0 -0
  44. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/code_cheker/checker.py +0 -0
  45. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/comm/__init__.py +0 -0
  46. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/comm/amqp_wrapper.py +0 -0
  47. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/comm/mqtt_wrapper.py +0 -0
  48. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/README.md +0 -0
  49. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/__init__.py +0 -0
  50. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/apps.py +0 -0
  51. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/comms.py +0 -0
  52. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/environment.py +0 -0
  53. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/formatter.py +0 -0
  54. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/heartbeat.py +0 -0
  55. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/misc.py +0 -0
  56. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/const/payload.py +0 -0
  57. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/__init__.py +0 -0
  58. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/instance/__init__.py +0 -0
  59. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
  60. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/instance/custom_webapi_01_plugin.py +0 -0
  61. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/instance/net_mon_01_plugin.py +0 -0
  62. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/instance/telegram_basic_bot_01_plugin.py +0 -0
  63. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
  64. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/instance/view_scene_01_plugin.py +0 -0
  65. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/default/session/mqtt_session.py +0 -0
  66. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/io_formatter/__init__.py +0 -0
  67. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/io_formatter/base/__init__.py +0 -0
  68. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/io_formatter/base/base_formatter.py +0 -0
  69. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/io_formatter/default/__init__.py +0 -0
  70. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/io_formatter/default/a_dummy.py +0 -0
  71. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/io_formatter/default/aixp1.py +0 -0
  72. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/io_formatter/default/default.py +0 -0
  73. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/io_formatter/io_formatter_manager.py +0 -0
  74. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/__init__.py +0 -0
  75. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/base_logger.py +0 -0
  76. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/__init__.py +0 -0
  77. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/class_instance_mixin.py +0 -0
  78. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/computer_vision_mixin.py +0 -0
  79. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/datetime_mixin.py +0 -0
  80. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/download_mixin.py +0 -0
  81. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/general_serialization_mixin.py +0 -0
  82. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/json_serialization_mixin.py +0 -0
  83. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
  84. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/process_mixin.py +0 -0
  85. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/resource_size_mixin.py +0 -0
  86. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/timers_mixin.py +0 -0
  87. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/upload_mixin.py +0 -0
  88. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/logger_mixins/utils_mixin.py +0 -0
  89. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/small_logger.py +0 -0
  90. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/tzlocal/__init__.py +0 -0
  91. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/tzlocal/unix.py +0 -0
  92. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/tzlocal/utils.py +0 -0
  93. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/tzlocal/win32.py +0 -0
  94. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/logging/tzlocal/windows_tz.py +0 -0
  95. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/plugins_manager_mixin.py +0 -0
  96. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/utils/__init__.py +0 -0
  97. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/utils/comm_utils.py +0 -0
  98. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/utils/dotenv.py +0 -0
  99. {naeural_client-2.6.40 → naeural_client-2.7.0}/naeural_client/utils/oracle_sync/oracle_tester.py +0 -0
  100. {naeural_client-2.6.40 → naeural_client-2.7.0}/nepctl.MD +0 -0
  101. {naeural_client-2.6.40 → naeural_client-2.7.0}/requirements.txt +0 -0
  102. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/.example_env +0 -0
  103. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
  104. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
  105. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/_example_pk_sdk.pem +0 -0
  106. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex01_part1_connect.py +0 -0
  107. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex01_part2_filter.py +0 -0
  108. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex01_part3_adv_filter.py +0 -0
  109. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex02_part1_deploy_webapi.py +0 -0
  110. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex02_part2_deploy_plugin.py +0 -0
  111. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
  112. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
  113. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
  114. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
  115. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
  116. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex08_custom_webapi.py +0 -0
  117. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
  118. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex10_telegram_echo_bot.py +0 -0
  119. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
  120. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex12_telegram_smart_bot.py +0 -0
  121. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/ex13_launch_repo_based_webapp.py +0 -0
  122. {naeural_client-2.6.40 → naeural_client-2.7.0}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
  123. {naeural_client-2.6.40 → naeural_client-2.7.0}/winrun.bat +0 -0
  124. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/README.md +0 -0
  125. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/_checks/cstore_check.py +0 -0
  126. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/_checks/keys_check.py +0 -0
  127. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/_checks/ora_check.py +0 -0
  128. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/_checks/payload_check.py +0 -0
  129. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/decentralized/chain_dist_example.py +0 -0
  130. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
  131. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
  132. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/enc_dec/enc_dec_test.py +0 -0
  133. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/eth/eth_sign.py +0 -0
  134. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/eth/info.md +0 -0
  135. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/eth/sign.py +0 -0
  136. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/multi-enc-dec/multi_test1.py +0 -0
  137. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/multi-enc-dec/multi_test2.py +0 -0
  138. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/sign/simple_payload_checker.py +0 -0
  139. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/sign/test_sign1.py +0 -0
  140. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/sign/test_sign2.py +0 -0
  141. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/test1.py +0 -0
  142. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/utils/get_documentation.py +0 -0
  143. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/various/attach_example.py +0 -0
  144. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/various/ex1.py +0 -0
  145. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/various/hello.py +0 -0
  146. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/various/remote_exec.py +0 -0
  147. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/various/save_images.py +0 -0
  148. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/wl/wl_add.py +0 -0
  149. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/xarchive/_tutorials/3. simple_real_time_custom_code.py +0 -0
  150. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/xarchive/_tutorials/4. real_time_custom_code_2.py +0 -0
  151. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/xarchive/_tutorials/8. chatbot.py +0 -0
  152. {naeural_client-2.6.40 → naeural_client-2.7.0}/xperimental/xarchive/test.py +0 -0
@@ -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,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:
@@ -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
@@ -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):
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "naeural_client"
7
- version = "2.6.40"
7
+ version = "2.7.0"
8
8
  authors = [
9
9
  { name="Andrei Ionut Damian", email="andrei.damian@me.com" },
10
10
  { name="Cristan Bleotiu", email="cristibleotiu@gmail.com" },
@@ -15,9 +15,18 @@ if __name__ == '__main__' :
15
15
 
16
16
  }
17
17
  )
18
+
19
+ eng2 = DefaultBlockEngine(
20
+ log=l, name="default",
21
+ config={
22
+ "PEM_FILE": "r03.pem",
23
+ }
24
+ )
25
+
26
+ to_use = eng2
18
27
 
19
28
  for _ in range(4):
20
- d = eng1.dauth_autocomplete(
29
+ d = to_use.dauth_autocomplete(
21
30
  add_env=False,
22
31
  debug=True,
23
32
  max_tries=1,
@@ -0,0 +1,69 @@
1
+
2
+ import json
3
+
4
+
5
+ from naeural_client import Logger, const
6
+ from naeural_client.bc import DefaultBlockEngine
7
+
8
+
9
+
10
+ if __name__ == '__main__' :
11
+ l = Logger("ENC", base_folder=".", app_folder="_local_cache")
12
+ eng = DefaultBlockEngine(
13
+ log=l, name="default",
14
+ config={
15
+
16
+ }
17
+ )
18
+
19
+ network = 'testnet'
20
+ addresses = [
21
+ "0x93B04EF1152D81A0847C2272860a8a5C70280E14",
22
+ "0x1Fe3222f6a2844364E2BDc796e0Df547ea26B815",
23
+
24
+ "0x99Ac885B00a150cFc93EA1A51FcC035C17aCB02c",
25
+ "0x49943d72CF93B69AE22c7194093804635a99eF2B",
26
+ "0x64A4C148FDa4a0D900daB9417cd65968993d30b3",
27
+ "0x4B50d4ac46c3ba0F463603587d41c67213A0a091",
28
+
29
+
30
+ "0x1351504af17BFdb80491D9223d6Bcb6BB964DCeD",
31
+ "0x2539fDD57f93b267E58d5f2E6F77063C0230F6F4",
32
+
33
+ ]
34
+
35
+ for addr in addresses:
36
+ is_active = eng.web3_is_node_licensed(
37
+ address=addr, network=network
38
+ )
39
+ l.P("{} {}".format(
40
+ addr,
41
+ "has a license" if is_active else "does NOT have a license"
42
+ ),
43
+ color='g' if is_active else 'r'
44
+ )
45
+
46
+ oracles = eng.web3_get_oracles(network=network)
47
+ l.P("\nOracles:\n {}".format(json.dumps(oracles, indent=2)),
48
+ color='b'
49
+ )
50
+
51
+ supervisors = [
52
+ "0xai_Amfnbt3N-qg2-qGtywZIPQBTVlAnoADVRmSAsdDhlQ-6",
53
+ "0xai_AwxGtRVqRlUrUoZNvf827uOswFmCkFXXguRmkpnyJBhQ",
54
+ "0xai_A4cZdKZZdj9We5W7T-NJPdQuhH2c8-aMI3-r7XlT0jqn",
55
+ "0xai_AvuUcmXyn6U3z8XRagqG8_d2sKCDZ5FIDpkUlpUz3Iuh"
56
+ ]
57
+
58
+ for supervisor in supervisors:
59
+ is_supervisor_allowed = eng.is_node_address_in_eth_addresses(
60
+ node_address=supervisor, lst_eth_addrs=oracles
61
+ )
62
+ l.P("Node {} {}".format(
63
+ supervisor,
64
+ "is supervisor" if is_supervisor_allowed else "is NOT supervisor"
65
+ ),
66
+ color='g' if is_supervisor_allowed else 'r'
67
+ )
68
+
69
+
File without changes
File without changes