naeural-client 3.1.3__tar.gz → 3.1.5__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 (177) hide show
  1. {naeural_client-3.1.3 → naeural_client-3.1.5}/.gitignore +2 -0
  2. {naeural_client-3.1.3 → naeural_client-3.1.5}/PKG-INFO +1 -1
  3. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/_ver.py +1 -1
  4. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/bc/base.py +13 -8
  5. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/bc/evm.py +4 -0
  6. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/evm_net.py +1 -1
  7. {naeural_client-3.1.3 → naeural_client-3.1.5}/pyproject.toml +1 -1
  8. naeural_client-3.1.5/tutorials/ex14_wallets.py +93 -0
  9. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/eth/send_many.py +37 -0
  10. {naeural_client-3.1.3 → naeural_client-3.1.5}/.devcontainer/Dockerfile +0 -0
  11. {naeural_client-3.1.3 → naeural_client-3.1.5}/.devcontainer/devcontainer.json +0 -0
  12. {naeural_client-3.1.3 → naeural_client-3.1.5}/.gitattributes +0 -0
  13. {naeural_client-3.1.3 → naeural_client-3.1.5}/.github/workflows/python-publish.yml +0 -0
  14. {naeural_client-3.1.3 → naeural_client-3.1.5}/.vscode/launch.json +0 -0
  15. {naeural_client-3.1.3 → naeural_client-3.1.5}/LICENSE +0 -0
  16. {naeural_client-3.1.3 → naeural_client-3.1.5}/README.md +0 -0
  17. {naeural_client-3.1.3 → naeural_client-3.1.5}/TODOs.md +0 -0
  18. {naeural_client-3.1.3 → naeural_client-3.1.5}/__init__.py +0 -0
  19. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/__init__.py +0 -0
  20. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/__init__.py +0 -0
  21. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/distributed_custom_code_presets.py +0 -0
  22. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/generic_session.py +0 -0
  23. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/instance.py +0 -0
  24. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/payload/__init__.py +0 -0
  25. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/payload/payload.py +0 -0
  26. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/pipeline.py +0 -0
  27. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/plugin_template.py +0 -0
  28. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/responses.py +0 -0
  29. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/transaction.py +0 -0
  30. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base/webapp_pipeline.py +0 -0
  31. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/base_decentra_object.py +0 -0
  32. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/bc/__init__.py +0 -0
  33. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/bc/chain.py +0 -0
  34. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/bc/ec.py +0 -0
  35. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/certs/__init__.py +0 -0
  36. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/certs/a0d9818f.ala.eu-central-1.emqxsl.com.crt +0 -0
  37. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
  38. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/certs/s624dbd4.ala.us-east-1.emqxsl.com.crt +0 -0
  39. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/cli/README.md +0 -0
  40. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/cli/cli.py +0 -0
  41. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/cli/cli_commands.py +0 -0
  42. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/cli/nodes.py +0 -0
  43. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/cli/oracles.py +0 -0
  44. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/code_cheker/__init__.py +0 -0
  45. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/code_cheker/base.py +0 -0
  46. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/code_cheker/checker.py +0 -0
  47. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/comm/__init__.py +0 -0
  48. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/comm/amqp_wrapper.py +0 -0
  49. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/comm/mqtt_wrapper.py +0 -0
  50. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/README.md +0 -0
  51. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/__init__.py +0 -0
  52. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/apps.py +0 -0
  53. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/base.py +0 -0
  54. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/comms.py +0 -0
  55. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/environment.py +0 -0
  56. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/formatter.py +0 -0
  57. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/heartbeat.py +0 -0
  58. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/misc.py +0 -0
  59. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/const/payload.py +0 -0
  60. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/__init__.py +0 -0
  61. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/instance/__init__.py +0 -0
  62. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
  63. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/instance/custom_webapi_01_plugin.py +0 -0
  64. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/instance/net_mon_01_plugin.py +0 -0
  65. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/instance/telegram_basic_bot_01_plugin.py +0 -0
  66. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
  67. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/instance/view_scene_01_plugin.py +0 -0
  68. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/default/session/mqtt_session.py +0 -0
  69. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/io_formatter/__init__.py +0 -0
  70. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/io_formatter/base/__init__.py +0 -0
  71. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/io_formatter/base/base_formatter.py +0 -0
  72. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/io_formatter/default/__init__.py +0 -0
  73. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/io_formatter/default/a_dummy.py +0 -0
  74. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/io_formatter/default/aixp1.py +0 -0
  75. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/io_formatter/default/default.py +0 -0
  76. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/io_formatter/io_formatter_manager.py +0 -0
  77. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/__init__.py +0 -0
  78. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/ifps_keygen +0 -0
  79. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/ipfs_setup/ipfs.service +0 -0
  80. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/ipfs_setup/launch_service.sh +0 -0
  81. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/ipfs_setup/restart.sh +0 -0
  82. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/ipfs_setup/run.sh +0 -0
  83. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/ipfs_setup/setup.sh +0 -0
  84. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/ipfs_setup/show.sh +0 -0
  85. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/ipfs_setup/write_key.sh +0 -0
  86. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/ipfs/r1fs.py +0 -0
  87. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/__init__.py +0 -0
  88. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/base_logger.py +0 -0
  89. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/__init__.py +0 -0
  90. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/class_instance_mixin.py +0 -0
  91. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/computer_vision_mixin.py +0 -0
  92. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/datetime_mixin.py +0 -0
  93. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/download_mixin.py +0 -0
  94. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/general_serialization_mixin.py +0 -0
  95. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/json_serialization_mixin.py +0 -0
  96. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
  97. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/process_mixin.py +0 -0
  98. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/resource_size_mixin.py +0 -0
  99. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/timers_mixin.py +0 -0
  100. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/upload_mixin.py +0 -0
  101. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/logger_mixins/utils_mixin.py +0 -0
  102. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/small_logger.py +0 -0
  103. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/tzlocal/__init__.py +0 -0
  104. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/tzlocal/unix.py +0 -0
  105. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/tzlocal/utils.py +0 -0
  106. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/tzlocal/win32.py +0 -0
  107. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/logging/tzlocal/windows_tz.py +0 -0
  108. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/plugins_manager_mixin.py +0 -0
  109. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/utils/__init__.py +0 -0
  110. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/utils/comm_utils.py +0 -0
  111. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/utils/config.py +0 -0
  112. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/utils/dotenv.py +0 -0
  113. {naeural_client-3.1.3 → naeural_client-3.1.5}/naeural_client/utils/oracle_sync/oracle_tester.py +0 -0
  114. {naeural_client-3.1.3 → naeural_client-3.1.5}/nepctl.MD +0 -0
  115. {naeural_client-3.1.3 → naeural_client-3.1.5}/requirements.txt +0 -0
  116. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/.example_env +0 -0
  117. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
  118. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
  119. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/_example_pk_sdk.pem +0 -0
  120. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex01_part1_connect.py +0 -0
  121. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex01_part2_filter.py +0 -0
  122. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex01_part3_adv_filter.py +0 -0
  123. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex02_part1_deploy_webapi.py +0 -0
  124. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex02_part2_deploy_plugin.py +0 -0
  125. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex02_part3_deploy_r1fs_test.py +0 -0
  126. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
  127. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
  128. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
  129. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
  130. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
  131. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex08_custom_webapi.py +0 -0
  132. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
  133. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex10_telegram_echo_bot.py +0 -0
  134. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
  135. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex12_telegram_smart_bot.py +0 -0
  136. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/ex13_launch_repo_based_webapp.py +0 -0
  137. {naeural_client-3.1.3 → naeural_client-3.1.5}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
  138. {naeural_client-3.1.3 → naeural_client-3.1.5}/winrun.bat +0 -0
  139. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/README.md +0 -0
  140. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/cstore_check.py +0 -0
  141. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/dauth_check.py +0 -0
  142. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/keys_check.py +0 -0
  143. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/ora_check.py +0 -0
  144. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/ora_sign_check.py +0 -0
  145. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/payload_check.py +0 -0
  146. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/session_check.py +0 -0
  147. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/w3_auth_check.py +0 -0
  148. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/_checks/w3_oracles_check.py +0 -0
  149. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/dates/check_date.py +0 -0
  150. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/debug/close_pipeline.py +0 -0
  151. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/decentralized/chain_dist_example.py +0 -0
  152. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
  153. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
  154. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/enc_dec/enc_dec_test.py +0 -0
  155. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/eth/balance.py +0 -0
  156. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/eth/eth_sign.py +0 -0
  157. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/eth/info.md +0 -0
  158. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/eth/send.py +0 -0
  159. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/eth/sign.py +0 -0
  160. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/multi-enc-dec/multi_test1.py +0 -0
  161. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/multi-enc-dec/multi_test2.py +0 -0
  162. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/pipelines/start.py +0 -0
  163. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/pipelines/stop.py +0 -0
  164. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/sign/simple_payload_checker.py +0 -0
  165. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/sign/test_sign1.py +0 -0
  166. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/sign/test_sign2.py +0 -0
  167. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/utils/get_documentation.py +0 -0
  168. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/various/attach_example.py +0 -0
  169. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/various/ex1.py +0 -0
  170. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/various/hello.py +0 -0
  171. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/various/remote_exec.py +0 -0
  172. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/various/save_images.py +0 -0
  173. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/wl/wl_add.py +0 -0
  174. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/xarchive/_tutorials/3. simple_real_time_custom_code.py +0 -0
  175. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/xarchive/_tutorials/4. real_time_custom_code_2.py +0 -0
  176. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/xarchive/_tutorials/8. chatbot.py +0 -0
  177. {naeural_client-3.1.3 → naeural_client-3.1.5}/xperimental/xarchive/test.py +0 -0
@@ -180,3 +180,5 @@ xperimental/petrica/
180
180
  xperimental/_checks/dauth_check_aid.py
181
181
 
182
182
  xperimental/eth/*.txt
183
+
184
+ tutorials/mynodes.txt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: naeural_client
3
- Version: 3.1.3
3
+ Version: 3.1.5
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__ = "3.1.3"
1
+ __VER__ = "3.1.5"
2
2
 
3
3
  if __name__ == "__main__":
4
4
  with open("pyproject.toml", "rt") as fd:
@@ -7,7 +7,7 @@ import datetime
7
7
  import uuid
8
8
  import requests
9
9
 
10
-
10
+ from collections import defaultdict
11
11
  from hashlib import sha256, md5
12
12
  from threading import Lock
13
13
  from copy import deepcopy
@@ -17,6 +17,7 @@ from cryptography.hazmat.primitives import serialization
17
17
 
18
18
  from ..utils.config import get_user_folder
19
19
 
20
+
20
21
  from ..const.base import (
21
22
  BCctbase, BCct,
22
23
  DAUTH_SUBKEY, DAUTH_ENV_KEY,
@@ -305,9 +306,12 @@ class BaseBlockEngine(_EVMMixin):
305
306
  ):
306
307
 
307
308
  self.__name = name
308
- assert log is not None, "Logger object was not provided!"
309
+ assert log is not None, "Logger object was not provided!"
309
310
 
310
311
  self.log = log
312
+
313
+ self._first_checks_done = defaultdict(lambda: False) # used to store the first check results
314
+
311
315
  self.__private_key = None
312
316
  self.__verbosity = verbosity
313
317
  self.__public_key = None
@@ -378,7 +382,7 @@ class BaseBlockEngine(_EVMMixin):
378
382
 
379
383
  if True:
380
384
  self.P("Initializing private blockchain:\n{}".format(
381
- json.dumps(self.__config, indent=4)), verbosity=2
385
+ json.dumps(self.__config, indent=4)), verbosity=1
382
386
  )
383
387
  if self.__pem_file is not None:
384
388
  try:
@@ -1406,8 +1410,9 @@ class BaseBlockEngine(_EVMMixin):
1406
1410
  the status is still 200, an empty dictionary will be returned).
1407
1411
  """
1408
1412
  if EE_VPN_IMPL:
1409
- return {}
1413
+ return None # must return None not empty dict for VPNs
1410
1414
  #endif EE_VPN_IMPL
1415
+
1411
1416
  from naeural_client._ver import __VER__ as sdk_version
1412
1417
  try:
1413
1418
  from ver import __VER__ as app_version
@@ -1443,13 +1448,13 @@ class BaseBlockEngine(_EVMMixin):
1443
1448
  url = network_data[dAuth.EvmNetData.DAUTH_URL_KEY]
1444
1449
  #endif not in env
1445
1450
 
1446
- if isinstance(url, str) and len(url) > 0:
1451
+ if isinstance(url, str) and len(url) > MIN_LEN:
1447
1452
  # Valid URL
1448
1453
  if dauth_endp is None:
1449
1454
  if in_env:
1450
- self.P("Found dAuth URL in environment: '{}'".format(url), color='g')
1455
+ self.P("Found dAuth URL in environment: '{}'".format(url))
1451
1456
  else:
1452
- self.P("Using default dAuth URL: '{}'".format(url), color='g')
1457
+ self.P("Using default dAuth URL: '{}'".format(url))
1453
1458
  eth_short = self.eth_address[:6] + '...' + self.eth_address[-4:]
1454
1459
  while not done:
1455
1460
  self.P(f"<{eth_short}> ({network}) dAuth with `{url}`... (try {tries + 1} / {max_tries})")
@@ -1549,7 +1554,7 @@ class BaseBlockEngine(_EVMMixin):
1549
1554
  #end while
1550
1555
  else:
1551
1556
  # Invalid URL, thus dct_env will remain None
1552
- self.P(f"dAuth URL is not invalid: {url}", color='r')
1557
+ self.P(f"dAuth URL is not valid: {url}", color='r')
1553
1558
  #end if url is valid
1554
1559
  if return_full_data:
1555
1560
  return dct_response
@@ -190,6 +190,8 @@ class _EVMMixin:
190
190
  the network name.
191
191
 
192
192
  """
193
+ if EE_VPN_IMPL:
194
+ return "VPN"
193
195
  network = os.environ.get(dAuth.DAUTH_NET_ENV_KEY, dAuth.DAUTH_SDK_NET_DEFAULT)
194
196
  if not hasattr(self, "current_evm_network") or self.current_evm_network != network:
195
197
  self.current_evm_network = network
@@ -201,6 +203,8 @@ class _EVMMixin:
201
203
 
202
204
  @property
203
205
  def evm_network(self):
206
+ if EE_VPN_IMPL:
207
+ return "VPN"
204
208
  return self.get_evm_network()
205
209
 
206
210
 
@@ -41,7 +41,7 @@ EVM_NET_DATA = {
41
41
  'devnet' : {
42
42
  EvmNetData.DAUTH_URL_KEY : "https://devnet-dauth.ratio1.ai/get_auth_data",
43
43
  EvmNetData.DAUTH_ND_ADDR_KEY : "0x9f49fc29366F1C8285d42e7E82cA0bb668B32CeA",
44
- EvmNetData.DAUTH_R1_ADDR_KEY : "0xEF38a3d84D3E3111fb7b794Ba3240187b8B32825",
44
+ EvmNetData.DAUTH_R1_ADDR_KEY : "0xEF38a3d84D3E3111fb7b794Ba3240187b8B32825",
45
45
  EvmNetData.DAUTH_RPC_KEY : "https://base-sepolia.public.blastapi.io",
46
46
  EvmNetData.EE_GENESIS_EPOCH_DATE_KEY : "2025-02-12 16:00:00",
47
47
  EvmNetData.EE_EPOCH_INTERVALS_KEY : 1,
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "naeural_client"
7
- version = "3.1.3"
7
+ version = "3.1.5"
8
8
  authors = [
9
9
  { name="Andrei Ionut Damian", email="andrei.damian@me.com" },
10
10
  { name="Cristan Bleotiu", email="cristibleotiu@gmail.com" },
@@ -0,0 +1,93 @@
1
+ """
2
+ This demo showcases the SDK's ability to enable the sending and receiving of both ETH and $R1 tokens.
3
+ The script checks balances, waits until some ETH and $R1 are available for distribution, and then
4
+ proceeds to distribute randomized amounts of ETH and $R1 to multiple peers.
5
+
6
+ Along the way, it logs transaction details and updates the balances of both the client and the recipient
7
+ addresses, ensuring smooth interaction with the Ethereum network and $R1 token. for a few seconds
8
+ This demo showcases the SDK (and R1 Edge Node) ability for managing ETH and $R1 tokens in a live environment.
9
+
10
+ With just a few lines of code, the tutorial demonstrates how to:
11
+ - Monitor Balances: Continuously check and wait for the client's ETH and $R1 balances to become available.
12
+ - Automate Distribution: Randomly calculate and distribute tokens to multiple peer addresses.
13
+ - Transaction Handling: Seamlessly send transactions with built-in logging, gas fee checks, and receipt
14
+ verification on testnet or devnet networks.
15
+
16
+ Its a hands-on, real-world example of how you can effortlessly integrate token transfers into
17
+ your R1 applications.
18
+
19
+ """
20
+ import os
21
+ import time
22
+ import numpy as np
23
+
24
+ from naeural_client.bc import DefaultBlockEngine
25
+ from naeural_client import Logger
26
+
27
+
28
+
29
+ if __name__ == '__main__' :
30
+ eng = DefaultBlockEngine(
31
+ name="default",
32
+ log=Logger("BCTEST"),
33
+ user_config=True, # this is must to use the user config
34
+ verbosity=2
35
+ )
36
+
37
+ eng.reset_network('devnet')
38
+
39
+ file = os.path.join(os.path.dirname(__file__), "mynodes.txt")
40
+ with open(file, "rt") as fd:
41
+ lines = fd.readlines()
42
+ addresses = [line.strip() for line in lines]
43
+
44
+ assert eng.evm_network in ['testnet', 'devnet']
45
+ client_eth = eng.web3_get_balance_eth()
46
+ client_r1 = eng.web3_get_balance_r1()
47
+
48
+ timeout = 120
49
+ start = time.time()
50
+ while client_eth == 0 or client_r1 == 0:
51
+ remaining = 120 - (time.time() - start)
52
+ if remaining <= 0:
53
+ break
54
+ msg = f"Client has {client_eth:.4f} ETH and {client_r1:.4f} $R1"
55
+ msg += f"\nYou are supposed to have some ETH and $R1 in {eng.eth_address} to distribute to peers"
56
+ msg += f"\nPlease send some ETH and $R1 to {eng.eth_address} in max {remaining:.0f} seconds"
57
+ eng.P(msg, color='r')
58
+ time.sleep(10)
59
+ client_eth = eng.web3_get_balance_eth()
60
+ client_r1 = eng.web3_get_balance_r1()
61
+
62
+
63
+ assert client_eth > 0 and client_r1 > 0, "Client has not enough ETH or $R1 to distribute"
64
+
65
+ n_peers = len(addresses)
66
+ amount_eth = (client_eth / 2) / n_peers
67
+ amount_r1 = (client_r1 / 2) / n_peers
68
+ eng.P(
69
+ f"Client {eng.eth_address}:\n {client_eth:>10.4f} ETH\n {client_r1:>10.4f} $R1\n Will distribute (max) {amount_eth:.4f} ETH\n Will distribute (MAX) {amount_r1:.4f} $R1 \n to each of {n_peers} peers",
70
+ color='g'
71
+ )
72
+
73
+ for address in addresses:
74
+ random_amount_eth = np.random.uniform(0.7, 0.99) * amount_eth
75
+ random_amount_r1 = np.random.uniform(0.7, 1.1) * amount_r1
76
+ eng.P(f" Sending {random_amount_eth:.4f} ETH to {address}", color='b')
77
+ tx_hash = eng.web3_send_eth(address, random_amount_eth, wait_for_tx=True, return_receipt=False)
78
+ time.sleep(2) # bit of extra sleep time
79
+ eng.P(f" Executed tx: {tx_hash}", color='g')
80
+
81
+ eng.P(f" Sending {random_amount_r1:.4f} $R1 to {address}", color='b')
82
+ tx_hash = eng.web3_send_r1(address, random_amount_r1, wait_for_tx=True, return_receipt=False)
83
+ time.sleep(2) # bit of extra sleep time
84
+ eng.P(f" Executed tx: {tx_hash}", color='g')
85
+ eth_balance = eng.web3_get_balance_eth(address)
86
+ r1_balance = eng.web3_get_balance_r1(address)
87
+ eng.P(f" ETH Balance of {address} is {eth_balance:.4f} ETH")
88
+ eng.P(f" R1 Balance of {address} is {r1_balance:.4f} R1")
89
+
90
+ time.sleep(5)
91
+ client_eth = eng.web3_get_balance_eth()
92
+ client_r1 = eng.web3_get_balance_r1()
93
+ eng.P(f"Client has {client_eth:.4f} ETH and {client_r1:.4f} $R1")
@@ -1,3 +1,22 @@
1
+ """
2
+ This demo showcases the SDK's ability to enable the sending and receiving of both ETH and $R1 tokens.
3
+ The script checks balances, waits until some ETH and $R1 are available for distribution, and then
4
+ proceeds to distribute randomized amounts of ETH and $R1 to multiple peers.
5
+
6
+ Along the way, it logs transaction details and updates the balances of both the client and the recipient
7
+ addresses, ensuring smooth interaction with the Ethereum network and $R1 token. for a few seconds
8
+ This demo showcases the SDK (and R1 Edge Node) ability for managing ETH and $R1 tokens in a live environment.
9
+
10
+ With just a few lines of code, the tutorial demonstrates how to:
11
+ - Monitor Balances: Continuously check and wait for the client's ETH and $R1 balances to become available.
12
+ - Automate Distribution: Randomly calculate and distribute tokens to multiple peer addresses.
13
+ - Transaction Handling: Seamlessly send transactions with built-in logging, gas fee checks, and receipt
14
+ verification on testnet or devnet networks.
15
+
16
+ Its a hands-on, real-world example of how you can effortlessly integrate token transfers into
17
+ your R1 applications.
18
+
19
+ """
1
20
  import os
2
21
  import time
3
22
  from copy import deepcopy
@@ -21,6 +40,24 @@ if __name__ == '__main__' :
21
40
  assert eng.evm_network in ['testnet', 'devnet']
22
41
  client_eth = eng.web3_get_balance_eth()
23
42
  client_r1 = eng.web3_get_balance_r1()
43
+
44
+ timeout = 120
45
+ start = time.time()
46
+ while client_eth == 0 or client_r1 == 0:
47
+ remaining = 120 - (time.time() - start)
48
+ if remaining <= 0:
49
+ break
50
+ msg = f"Client has {client_eth:.4f} ETH and {client_r1:.4f} $R1"
51
+ msg += f"\nYou are supposed to have some ETH and $R1 in {eng.eth_address} to distribute to peers"
52
+ msg += f"\nPlease send some ETH and $R1 to {eng.eth_address} in max {remaining:.0f} seconds"
53
+ l.P(msg, color='r')
54
+ time.sleep(10)
55
+ client_eth = eng.web3_get_balance_eth()
56
+ client_r1 = eng.web3_get_balance_r1()
57
+
58
+
59
+ assert client_eth > 0 and client_r1 > 0, "Client has not enough ETH or $R1 to distribute"
60
+
24
61
  n_peers = len(addresses)
25
62
  amount_eth = (client_eth / 2) / n_peers
26
63
  amount_r1 = (client_r1 / 2) / n_peers
File without changes
File without changes
File without changes
File without changes