naeural-client 2.6.39__tar.gz → 2.6.41__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.39 → naeural_client-2.6.41}/PKG-INFO +1 -1
  2. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/_ver.py +1 -1
  3. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/bc/base.py +68 -0
  4. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/bc/ec.py +23 -4
  5. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/base.py +45 -0
  6. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/utils/oracle_sync/oracle_tester.py +1 -1
  7. {naeural_client-2.6.39 → naeural_client-2.6.41}/pyproject.toml +1 -1
  8. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/_checks/auth_check.py +10 -1
  9. naeural_client-2.6.41/xperimental/dauth/is_node_allowed.py +69 -0
  10. {naeural_client-2.6.39 → naeural_client-2.6.41}/.devcontainer/Dockerfile +0 -0
  11. {naeural_client-2.6.39 → naeural_client-2.6.41}/.devcontainer/devcontainer.json +0 -0
  12. {naeural_client-2.6.39 → naeural_client-2.6.41}/.gitattributes +0 -0
  13. {naeural_client-2.6.39 → naeural_client-2.6.41}/.github/workflows/python-publish.yml +0 -0
  14. {naeural_client-2.6.39 → naeural_client-2.6.41}/.gitignore +0 -0
  15. {naeural_client-2.6.39 → naeural_client-2.6.41}/.vscode/launch.json +0 -0
  16. {naeural_client-2.6.39 → naeural_client-2.6.41}/LICENSE +0 -0
  17. {naeural_client-2.6.39 → naeural_client-2.6.41}/README.md +0 -0
  18. {naeural_client-2.6.39 → naeural_client-2.6.41}/TODOs.md +0 -0
  19. {naeural_client-2.6.39 → naeural_client-2.6.41}/__init__.py +0 -0
  20. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/__init__.py +0 -0
  21. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/__init__.py +0 -0
  22. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/distributed_custom_code_presets.py +0 -0
  23. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/generic_session.py +0 -0
  24. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/instance.py +0 -0
  25. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/payload/__init__.py +0 -0
  26. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/payload/payload.py +0 -0
  27. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/pipeline.py +0 -0
  28. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/plugin_template.py +0 -0
  29. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/responses.py +0 -0
  30. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/transaction.py +0 -0
  31. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base/webapp_pipeline.py +0 -0
  32. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/base_decentra_object.py +0 -0
  33. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/bc/__init__.py +0 -0
  34. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/bc/chain.py +0 -0
  35. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/certs/__init__.py +0 -0
  36. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
  37. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/cli/README.md +0 -0
  38. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/cli/cli.py +0 -0
  39. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/cli/cli_commands.py +0 -0
  40. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/cli/nodes.py +0 -0
  41. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/cli/oracles.py +0 -0
  42. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/code_cheker/__init__.py +0 -0
  43. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/code_cheker/base.py +0 -0
  44. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/code_cheker/checker.py +0 -0
  45. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/comm/__init__.py +0 -0
  46. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/comm/amqp_wrapper.py +0 -0
  47. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/comm/mqtt_wrapper.py +0 -0
  48. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/README.md +0 -0
  49. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/__init__.py +0 -0
  50. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/apps.py +0 -0
  51. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/comms.py +0 -0
  52. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/environment.py +0 -0
  53. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/formatter.py +0 -0
  54. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/heartbeat.py +0 -0
  55. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/misc.py +0 -0
  56. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/const/payload.py +0 -0
  57. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/__init__.py +0 -0
  58. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/instance/__init__.py +0 -0
  59. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
  60. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/instance/custom_webapi_01_plugin.py +0 -0
  61. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/instance/net_mon_01_plugin.py +0 -0
  62. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/instance/telegram_basic_bot_01_plugin.py +0 -0
  63. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
  64. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/instance/view_scene_01_plugin.py +0 -0
  65. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/default/session/mqtt_session.py +0 -0
  66. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/io_formatter/__init__.py +0 -0
  67. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/io_formatter/base/__init__.py +0 -0
  68. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/io_formatter/base/base_formatter.py +0 -0
  69. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/io_formatter/default/__init__.py +0 -0
  70. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/io_formatter/default/a_dummy.py +0 -0
  71. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/io_formatter/default/aixp1.py +0 -0
  72. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/io_formatter/default/default.py +0 -0
  73. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/io_formatter/io_formatter_manager.py +0 -0
  74. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/__init__.py +0 -0
  75. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/base_logger.py +0 -0
  76. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/__init__.py +0 -0
  77. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/class_instance_mixin.py +0 -0
  78. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/computer_vision_mixin.py +0 -0
  79. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/datetime_mixin.py +0 -0
  80. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/download_mixin.py +0 -0
  81. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/general_serialization_mixin.py +0 -0
  82. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/json_serialization_mixin.py +0 -0
  83. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
  84. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/process_mixin.py +0 -0
  85. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/resource_size_mixin.py +0 -0
  86. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/timers_mixin.py +0 -0
  87. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/upload_mixin.py +0 -0
  88. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/logger_mixins/utils_mixin.py +0 -0
  89. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/small_logger.py +0 -0
  90. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/tzlocal/__init__.py +0 -0
  91. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/tzlocal/unix.py +0 -0
  92. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/tzlocal/utils.py +0 -0
  93. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/tzlocal/win32.py +0 -0
  94. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/logging/tzlocal/windows_tz.py +0 -0
  95. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/plugins_manager_mixin.py +0 -0
  96. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/utils/__init__.py +0 -0
  97. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/utils/comm_utils.py +0 -0
  98. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/utils/config.py +0 -0
  99. {naeural_client-2.6.39 → naeural_client-2.6.41}/naeural_client/utils/dotenv.py +0 -0
  100. {naeural_client-2.6.39 → naeural_client-2.6.41}/nepctl.MD +0 -0
  101. {naeural_client-2.6.39 → naeural_client-2.6.41}/requirements.txt +0 -0
  102. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/.example_env +0 -0
  103. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
  104. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
  105. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/_example_pk_sdk.pem +0 -0
  106. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex01_part1_connect.py +0 -0
  107. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex01_part2_filter.py +0 -0
  108. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex01_part3_adv_filter.py +0 -0
  109. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex02_part1_deploy_webapi.py +0 -0
  110. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex02_part2_deploy_plugin.py +0 -0
  111. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
  112. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
  113. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
  114. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
  115. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
  116. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex08_custom_webapi.py +0 -0
  117. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
  118. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex10_telegram_echo_bot.py +0 -0
  119. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
  120. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex12_telegram_smart_bot.py +0 -0
  121. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/ex13_launch_repo_based_webapp.py +0 -0
  122. {naeural_client-2.6.39 → naeural_client-2.6.41}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
  123. {naeural_client-2.6.39 → naeural_client-2.6.41}/winrun.bat +0 -0
  124. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/README.md +0 -0
  125. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/_checks/cstore_check.py +0 -0
  126. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/_checks/keys_check.py +0 -0
  127. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/_checks/ora_check.py +0 -0
  128. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/_checks/payload_check.py +0 -0
  129. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/decentralized/chain_dist_example.py +0 -0
  130. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
  131. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
  132. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/enc_dec/enc_dec_test.py +0 -0
  133. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/eth/eth_sign.py +0 -0
  134. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/eth/info.md +0 -0
  135. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/eth/sign.py +0 -0
  136. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/multi-enc-dec/multi_test1.py +0 -0
  137. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/multi-enc-dec/multi_test2.py +0 -0
  138. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/sign/simple_payload_checker.py +0 -0
  139. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/sign/test_sign1.py +0 -0
  140. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/sign/test_sign2.py +0 -0
  141. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/test1.py +0 -0
  142. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/utils/get_documentation.py +0 -0
  143. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/various/attach_example.py +0 -0
  144. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/various/ex1.py +0 -0
  145. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/various/hello.py +0 -0
  146. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/various/remote_exec.py +0 -0
  147. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/various/save_images.py +0 -0
  148. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/wl/wl_add.py +0 -0
  149. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/xarchive/_tutorials/3. simple_real_time_custom_code.py +0 -0
  150. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/xarchive/_tutorials/4. real_time_custom_code_2.py +0 -0
  151. {naeural_client-2.6.39 → naeural_client-2.6.41}/xperimental/xarchive/_tutorials/8. chatbot.py +0 -0
  152. {naeural_client-2.6.39 → naeural_client-2.6.41}/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.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,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:
@@ -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
@@ -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
  )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "naeural_client"
7
- version = "2.6.39"
7
+ version = "2.6.41"
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