web3-wizzard-lib 1.6.12__py3-none-any.whl → 1.6.15__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.
Files changed (267) hide show
  1. web3_wizzard_lib/core/__init__.py +1 -0
  2. web3_wizzard_lib/core/contract/__init__.py +0 -0
  3. web3_wizzard_lib/core/contract/aavecontract.py +36 -0
  4. web3_wizzard_lib/core/contract/alienswap_contract.py +21 -0
  5. web3_wizzard_lib/core/contract/arena_games_contract.py +16 -0
  6. web3_wizzard_lib/core/contract/basiliskcontract.py +58 -0
  7. web3_wizzard_lib/core/contract/bilinear_contract.py +22 -0
  8. web3_wizzard_lib/core/contract/bungee.py +33 -0
  9. web3_wizzard_lib/core/contract/coredao_contract.py +34 -0
  10. web3_wizzard_lib/core/contract/coredao_from_contract.py +40 -0
  11. web3_wizzard_lib/core/contract/dmail_send_mail.py +18 -0
  12. web3_wizzard_lib/core/contract/empty_nft.py +18 -0
  13. web3_wizzard_lib/core/contract/era_name.py +23 -0
  14. web3_wizzard_lib/core/contract/eralendcontract.py +34 -0
  15. web3_wizzard_lib/core/contract/eth_scroll_bridge_contract.py +25 -0
  16. web3_wizzard_lib/core/contract/frog_war_contract.py +48 -0
  17. web3_wizzard_lib/core/contract/gmx_reward_router.py +22 -0
  18. web3_wizzard_lib/core/contract/horizondex_quoter.py +14 -0
  19. web3_wizzard_lib/core/contract/horizondex_router.py +91 -0
  20. web3_wizzard_lib/core/contract/imagine_contract.py +18 -0
  21. web3_wizzard_lib/core/contract/izumi.py +63 -0
  22. web3_wizzard_lib/core/contract/kreatorland_contract.py +21 -0
  23. web3_wizzard_lib/core/contract/l0_claim.py +254 -0
  24. web3_wizzard_lib/core/contract/l2_telegraph.py +21 -0
  25. web3_wizzard_lib/core/contract/layerbank_price.py +18 -0
  26. web3_wizzard_lib/core/contract/layerbank_token.py +29 -0
  27. web3_wizzard_lib/core/contract/layerbankcontract.py +59 -0
  28. web3_wizzard_lib/core/contract/linea_day_2_contract.py +19 -0
  29. web3_wizzard_lib/core/contract/linea_day_3_contract.py +55 -0
  30. web3_wizzard_lib/core/contract/linea_ens_names_contract.py +55 -0
  31. web3_wizzard_lib/core/contract/lineaswaprouter.py +52 -0
  32. web3_wizzard_lib/core/contract/maverick_multicall.py +52 -0
  33. web3_wizzard_lib/core/contract/mendi_finance_contract.py +11 -0
  34. web3_wizzard_lib/core/contract/mendi_token.py +25 -0
  35. web3_wizzard_lib/core/contract/merkly_minter.py +47 -0
  36. web3_wizzard_lib/core/contract/micro3_contract.py +18 -0
  37. web3_wizzard_lib/core/contract/mute_router.py +93 -0
  38. web3_wizzard_lib/core/contract/new_rage_contract.py +31 -0
  39. web3_wizzard_lib/core/contract/nidum_contract.py +44 -0
  40. web3_wizzard_lib/core/contract/nile_contract.py +60 -0
  41. web3_wizzard_lib/core/contract/nomis_attest_contract.py +40 -0
  42. web3_wizzard_lib/core/contract/nomis_contract.py +40 -0
  43. web3_wizzard_lib/core/contract/octomos.py +31 -0
  44. web3_wizzard_lib/core/contract/odos.py +104 -0
  45. web3_wizzard_lib/core/contract/omnisea.py +29 -0
  46. web3_wizzard_lib/core/contract/orbiter_starknet.py +30 -0
  47. web3_wizzard_lib/core/contract/pancake_pool.py +19 -0
  48. web3_wizzard_lib/core/contract/pancake_quoter.py +20 -0
  49. web3_wizzard_lib/core/contract/pancake_router.py +72 -0
  50. web3_wizzard_lib/core/contract/rage_claim.py +24 -0
  51. web3_wizzard_lib/core/contract/reactor_fusion_contract.py +78 -0
  52. web3_wizzard_lib/core/contract/readon_contract.py +19 -0
  53. web3_wizzard_lib/core/contract/rubyscore_contract.py +31 -0
  54. web3_wizzard_lib/core/contract/satoshi_universe_contract.py +29 -0
  55. web3_wizzard_lib/core/contract/scroll_bridge_contract.py +24 -0
  56. web3_wizzard_lib/core/contract/scroll_canvas_mint_contract.py +26 -0
  57. web3_wizzard_lib/core/contract/scroll_oracle.py +11 -0
  58. web3_wizzard_lib/core/contract/snap_contract.py +16 -0
  59. web3_wizzard_lib/core/contract/social_scan_contract.py +20 -0
  60. web3_wizzard_lib/core/contract/stargate_farming.py +37 -0
  61. web3_wizzard_lib/core/contract/stargate_router.py +84 -0
  62. web3_wizzard_lib/core/contract/stargate_router_eth.py +41 -0
  63. web3_wizzard_lib/core/contract/stargate_token_pool.py +45 -0
  64. web3_wizzard_lib/core/contract/stargate_v2_contract.py +36 -0
  65. web3_wizzard_lib/core/contract/syncswap_classic_pool.py +15 -0
  66. web3_wizzard_lib/core/contract/syncswap_classic_pool_factory.py +15 -0
  67. web3_wizzard_lib/core/contract/syncswap_pool.py +25 -0
  68. web3_wizzard_lib/core/contract/syncswap_router.py +123 -0
  69. web3_wizzard_lib/core/contract/tavaera_id.py +18 -0
  70. web3_wizzard_lib/core/contract/tavaera_mint.py +17 -0
  71. web3_wizzard_lib/core/contract/townstory_bonus_contract.py +19 -0
  72. web3_wizzard_lib/core/contract/townstory_contract.py +21 -0
  73. web3_wizzard_lib/core/contract/velocore_lens.py +44 -0
  74. web3_wizzard_lib/core/contract/velocore_pool.py +198 -0
  75. web3_wizzard_lib/core/contract/velocore_router.py +80 -0
  76. web3_wizzard_lib/core/contract/woofi_swap.py +29 -0
  77. web3_wizzard_lib/core/contract/xy_finance_contract.py +87 -0
  78. web3_wizzard_lib/core/contract/yoddlo_contract.py +19 -0
  79. web3_wizzard_lib/core/contract/yuliverse_contract.py +36 -0
  80. web3_wizzard_lib/core/contract/zebra_contract.py +68 -0
  81. web3_wizzard_lib/core/contract/zerolend_contract.py +34 -0
  82. web3_wizzard_lib/core/contract/zerolend_liq_contract.py +20 -0
  83. web3_wizzard_lib/core/contract/zkdx_contract.py +40 -0
  84. web3_wizzard_lib/core/contract/zkdx_data.py +14 -0
  85. web3_wizzard_lib/core/contract/zks.py +24 -0
  86. web3_wizzard_lib/core/modules/__init__.py +0 -0
  87. web3_wizzard_lib/core/modules/ads_import_proxy.py +52 -0
  88. web3_wizzard_lib/core/modules/airdrop_printer.py +81 -0
  89. web3_wizzard_lib/core/modules/bank/__init__.py +0 -0
  90. web3_wizzard_lib/core/modules/bank/aave.py +25 -0
  91. web3_wizzard_lib/core/modules/bank/bank.py +15 -0
  92. web3_wizzard_lib/core/modules/bank/basilisk.py +25 -0
  93. web3_wizzard_lib/core/modules/bank/eralend.py +25 -0
  94. web3_wizzard_lib/core/modules/bank/layerbank.py +116 -0
  95. web3_wizzard_lib/core/modules/bank/mendi_finance.py +57 -0
  96. web3_wizzard_lib/core/modules/bank/reactorfusion.py +25 -0
  97. web3_wizzard_lib/core/modules/bank/zerolend.py +36 -0
  98. web3_wizzard_lib/core/modules/bank_module.py +99 -0
  99. web3_wizzard_lib/core/modules/bridge/__init__.py +0 -0
  100. web3_wizzard_lib/core/modules/bridge/bridge.py +8 -0
  101. web3_wizzard_lib/core/modules/bridge/coredao_bridge_sub.py +47 -0
  102. web3_wizzard_lib/core/modules/bridge/orbiter_sub.py +112 -0
  103. web3_wizzard_lib/core/modules/bridge/scroll_bridge_sub.py +42 -0
  104. web3_wizzard_lib/core/modules/bridge/stargate_v2_sub.py +74 -0
  105. web3_wizzard_lib/core/modules/bridge_module.py +47 -0
  106. web3_wizzard_lib/core/modules/bungee.py +109 -0
  107. web3_wizzard_lib/core/modules/cex_sender.py +60 -0
  108. web3_wizzard_lib/core/modules/cex_subaccount_transfer.py +34 -0
  109. web3_wizzard_lib/core/modules/cex_withdraw.py +91 -0
  110. web3_wizzard_lib/core/modules/claimer.py +45 -0
  111. web3_wizzard_lib/core/modules/claims/__init__.py +0 -0
  112. web3_wizzard_lib/core/modules/claims/layerzero_claimer.py +64 -0
  113. web3_wizzard_lib/core/modules/claims/rabby_claimer.py +81 -0
  114. web3_wizzard_lib/core/modules/concrete_swap.py +108 -0
  115. web3_wizzard_lib/core/modules/coredao_bridge.py +32 -0
  116. web3_wizzard_lib/core/modules/coredao_bridge_auto.py +39 -0
  117. web3_wizzard_lib/core/modules/debank_checker.py +78 -0
  118. web3_wizzard_lib/core/modules/dmail.py +54 -0
  119. web3_wizzard_lib/core/modules/erc20_balance.py +42 -0
  120. web3_wizzard_lib/core/modules/gmx_reward.py +25 -0
  121. web3_wizzard_lib/core/modules/intract/__init__.py +0 -0
  122. web3_wizzard_lib/core/modules/intract/intract_api.py +212 -0
  123. web3_wizzard_lib/core/modules/intract/utils.py +81 -0
  124. web3_wizzard_lib/core/modules/intract_claim.py +101 -0
  125. web3_wizzard_lib/core/modules/layer_2_20.py +65 -0
  126. web3_wizzard_lib/core/modules/lending_module.py +134 -0
  127. web3_wizzard_lib/core/modules/linea_appeal.py +98 -0
  128. web3_wizzard_lib/core/modules/linea_poh_lxp.py +65 -0
  129. web3_wizzard_lib/core/modules/liquidity/__init__.py +0 -0
  130. web3_wizzard_lib/core/modules/liquidity/nile_pool.py +64 -0
  131. web3_wizzard_lib/core/modules/liquidity/pool.py +16 -0
  132. web3_wizzard_lib/core/modules/liquidity/syncswap_pool.py +61 -0
  133. web3_wizzard_lib/core/modules/liquidity/velocore_pool.py +55 -0
  134. web3_wizzard_lib/core/modules/liquidity/zerolend_liquidity.py +26 -0
  135. web3_wizzard_lib/core/modules/liquidity_pool.py +60 -0
  136. web3_wizzard_lib/core/modules/merkly_refuel.py +87 -0
  137. web3_wizzard_lib/core/modules/new_rage_withdraw.py +41 -0
  138. web3_wizzard_lib/core/modules/nft/__init__.py +0 -0
  139. web3_wizzard_lib/core/modules/nft/abbys_world.py +22 -0
  140. web3_wizzard_lib/core/modules/nft/acg_worlds.py +25 -0
  141. web3_wizzard_lib/core/modules/nft/alienswap_linea.py +22 -0
  142. web3_wizzard_lib/core/modules/nft/arena_games.py +22 -0
  143. web3_wizzard_lib/core/modules/nft/asmatch.py +22 -0
  144. web3_wizzard_lib/core/modules/nft/battlemon.py +25 -0
  145. web3_wizzard_lib/core/modules/nft/bilinear.py +22 -0
  146. web3_wizzard_lib/core/modules/nft/bitavatar.py +25 -0
  147. web3_wizzard_lib/core/modules/nft/culture_satoshi_universe.py +24 -0
  148. web3_wizzard_lib/core/modules/nft/efrogs.py +26 -0
  149. web3_wizzard_lib/core/modules/nft/empty_nft.py +22 -0
  150. web3_wizzard_lib/core/modules/nft/era_domain.py +42 -0
  151. web3_wizzard_lib/core/modules/nft/frog_war.py +22 -0
  152. web3_wizzard_lib/core/modules/nft/frog_war_bonus.py +22 -0
  153. web3_wizzard_lib/core/modules/nft/gamerboom.py +25 -0
  154. web3_wizzard_lib/core/modules/nft/gamerboom_bonus.py +26 -0
  155. web3_wizzard_lib/core/modules/nft/imagine.py +32 -0
  156. web3_wizzard_lib/core/modules/nft/kreatorland_module.py +35 -0
  157. web3_wizzard_lib/core/modules/nft/l2_telegraph_module.py +22 -0
  158. web3_wizzard_lib/core/modules/nft/layer3_meta.py +25 -0
  159. web3_wizzard_lib/core/modules/nft/linea_culture_2_2_linus.py +24 -0
  160. web3_wizzard_lib/core/modules/nft/linea_culture_2_3_yooldo.py +24 -0
  161. web3_wizzard_lib/core/modules/nft/linea_culture_2_4_frogwar.py +24 -0
  162. web3_wizzard_lib/core/modules/nft/linea_culture_2_5_acg.py +25 -0
  163. web3_wizzard_lib/core/modules/nft/linea_culture_2_6_ascend_the_end.py +25 -0
  164. web3_wizzard_lib/core/modules/nft/linea_culture_3_1_ascend_the_end.py +25 -0
  165. web3_wizzard_lib/core/modules/nft/linea_culture_3_2_sending_me.py +25 -0
  166. web3_wizzard_lib/core/modules/nft/linea_culture_3_3_townstory.py +25 -0
  167. web3_wizzard_lib/core/modules/nft/linea_culture_3_4_daniele.py +25 -0
  168. web3_wizzard_lib/core/modules/nft/linea_culture_3_5_demmortal.py +25 -0
  169. web3_wizzard_lib/core/modules/nft/linea_culture_3_6_foxy.py +25 -0
  170. web3_wizzard_lib/core/modules/nft/linea_culture_4_1_coop_records.py +60 -0
  171. web3_wizzard_lib/core/modules/nft/linea_culture_4_2_borja_moskv.py +65 -0
  172. web3_wizzard_lib/core/modules/nft/linea_culture_4_2_borja_moskv_approve.py +27 -0
  173. web3_wizzard_lib/core/modules/nft/linea_culture_4_3_fruit.py +66 -0
  174. web3_wizzard_lib/core/modules/nft/linea_culture_4_4_fruit_crux.py +67 -0
  175. web3_wizzard_lib/core/modules/nft/linea_culture_4_5_forbidden_fruit.py +67 -0
  176. web3_wizzard_lib/core/modules/nft/linea_culture_4_6_laurent.py +67 -0
  177. web3_wizzard_lib/core/modules/nft/linea_culture_day2.py +20 -0
  178. web3_wizzard_lib/core/modules/nft/linea_culture_day3.py +20 -0
  179. web3_wizzard_lib/core/modules/nft/linea_ens_names.py +107 -0
  180. web3_wizzard_lib/core/modules/nft/lucky_cat.py +25 -0
  181. web3_wizzard_lib/core/modules/nft/merkly_minter_module.py +22 -0
  182. web3_wizzard_lib/core/modules/nft/micro3.py +23 -0
  183. web3_wizzard_lib/core/modules/nft/mint_2048.py +28 -0
  184. web3_wizzard_lib/core/modules/nft/nft_submodule.py +16 -0
  185. web3_wizzard_lib/core/modules/nft/nidum.py +87 -0
  186. web3_wizzard_lib/core/modules/nft/nidum_bonus.py +23 -0
  187. web3_wizzard_lib/core/modules/nft/nomis.py +64 -0
  188. web3_wizzard_lib/core/modules/nft/nomis_attest.py +66 -0
  189. web3_wizzard_lib/core/modules/nft/nouns.py +27 -0
  190. web3_wizzard_lib/core/modules/nft/octomos.py +32 -0
  191. web3_wizzard_lib/core/modules/nft/omnisea.py +33 -0
  192. web3_wizzard_lib/core/modules/nft/omnizone.py +25 -0
  193. web3_wizzard_lib/core/modules/nft/orbiter_claim.py +87 -0
  194. web3_wizzard_lib/core/modules/nft/readon.py +30 -0
  195. web3_wizzard_lib/core/modules/nft/rubyscore.py +45 -0
  196. web3_wizzard_lib/core/modules/nft/sarubol.py +22 -0
  197. web3_wizzard_lib/core/modules/nft/satoshi_universe.py +22 -0
  198. web3_wizzard_lib/core/modules/nft/scroll_canvas_attest_year_badge.py +35 -0
  199. web3_wizzard_lib/core/modules/nft/scroll_canvas_mint.py +51 -0
  200. web3_wizzard_lib/core/modules/nft/sign.py +32 -0
  201. web3_wizzard_lib/core/modules/nft/snap.py +25 -0
  202. web3_wizzard_lib/core/modules/nft/snap_bonus.py +31 -0
  203. web3_wizzard_lib/core/modules/nft/social_scan.py +22 -0
  204. web3_wizzard_lib/core/modules/nft/tavaera.py +30 -0
  205. web3_wizzard_lib/core/modules/nft/townstory.py +75 -0
  206. web3_wizzard_lib/core/modules/nft/townstory_bonus.py +45 -0
  207. web3_wizzard_lib/core/modules/nft/trusta_reputation.py +48 -0
  208. web3_wizzard_lib/core/modules/nft/trustaa_poh.py +49 -0
  209. web3_wizzard_lib/core/modules/nft/uber_poh.py +24 -0
  210. web3_wizzard_lib/core/modules/nft/wizards_of_linea.py +26 -0
  211. web3_wizzard_lib/core/modules/nft/yoddlo.py +22 -0
  212. web3_wizzard_lib/core/modules/nft/yuliverse.py +22 -0
  213. web3_wizzard_lib/core/modules/nft/zace.py +25 -0
  214. web3_wizzard_lib/core/modules/nft/zks_domain.py +41 -0
  215. web3_wizzard_lib/core/modules/nft_minter.py +107 -0
  216. web3_wizzard_lib/core/modules/orbiter.py +39 -0
  217. web3_wizzard_lib/core/modules/orbiter_checker.py +26 -0
  218. web3_wizzard_lib/core/modules/rage.py +54 -0
  219. web3_wizzard_lib/core/modules/scroll_bridge.py +45 -0
  220. web3_wizzard_lib/core/modules/sell_all.py +51 -0
  221. web3_wizzard_lib/core/modules/sleep_module.py +25 -0
  222. web3_wizzard_lib/core/modules/smart_contract_deployment.py +37 -0
  223. web3_wizzard_lib/core/modules/stargate/__init__.py +0 -0
  224. web3_wizzard_lib/core/modules/stargate/auto_bridge.py +91 -0
  225. web3_wizzard_lib/core/modules/stargate/bridge.py +38 -0
  226. web3_wizzard_lib/core/modules/stargate/bridge_eth.py +59 -0
  227. web3_wizzard_lib/core/modules/stargate/bridge_tokens.py +48 -0
  228. web3_wizzard_lib/core/modules/stargate/classic_bridge.py +34 -0
  229. web3_wizzard_lib/core/modules/stargate/farming.py +163 -0
  230. web3_wizzard_lib/core/modules/stargate/l0_data.py +10 -0
  231. web3_wizzard_lib/core/modules/stargate/pool.py +74 -0
  232. web3_wizzard_lib/core/modules/stargate/stargate_balance_utils.py +25 -0
  233. web3_wizzard_lib/core/modules/stargate/stargate_gas_checker.py +68 -0
  234. web3_wizzard_lib/core/modules/swap/__init__.py +1 -0
  235. web3_wizzard_lib/core/modules/swap/horizondex.py +38 -0
  236. web3_wizzard_lib/core/modules/swap/izumi.py +41 -0
  237. web3_wizzard_lib/core/modules/swap/lineaswap.py +34 -0
  238. web3_wizzard_lib/core/modules/swap/maverick.py +66 -0
  239. web3_wizzard_lib/core/modules/swap/mute.py +39 -0
  240. web3_wizzard_lib/core/modules/swap/odos.py +58 -0
  241. web3_wizzard_lib/core/modules/swap/one_inch.py +58 -0
  242. web3_wizzard_lib/core/modules/swap/pancake.py +41 -0
  243. web3_wizzard_lib/core/modules/swap/swap_list.py +11 -0
  244. web3_wizzard_lib/core/modules/swap/syncswap.py +62 -0
  245. web3_wizzard_lib/core/modules/swap/velocore.py +40 -0
  246. web3_wizzard_lib/core/modules/swap/woofi.py +38 -0
  247. web3_wizzard_lib/core/modules/swap/xy_finance.py +43 -0
  248. web3_wizzard_lib/core/modules/swap/zebra.py +32 -0
  249. web3_wizzard_lib/core/modules/warm_up.py +98 -0
  250. web3_wizzard_lib/core/modules/wrapping.py +74 -0
  251. web3_wizzard_lib/core/modules/zkdx.py +63 -0
  252. web3_wizzard_lib/core/utils/__init__.py +0 -0
  253. web3_wizzard_lib/core/utils/ai_utils.py +45 -0
  254. web3_wizzard_lib/core/utils/benchmark_utils.py +12 -0
  255. web3_wizzard_lib/core/utils/module_memory.py +28 -0
  256. web3_wizzard_lib/core/utils/statistic_utils.py +150 -0
  257. web3_wizzard_lib/core/utils/sub_module.py +8 -0
  258. web3_wizzard_lib/data/__init__.py +0 -0
  259. web3_wizzard_lib/data/config_default.py +52 -0
  260. web3_wizzard_lib/data/module_config_default.py +209 -0
  261. web3_wizzard_lib/utils/__init__.py +0 -0
  262. web3_wizzard_lib/utils/debank_utils.py +19 -0
  263. {web3_wizzard_lib-1.6.12.dist-info → web3_wizzard_lib-1.6.15.dist-info}/METADATA +2 -2
  264. web3_wizzard_lib-1.6.15.dist-info/RECORD +369 -0
  265. web3_wizzard_lib-1.6.12.dist-info/RECORD +0 -107
  266. {web3_wizzard_lib-1.6.12.dist-info → web3_wizzard_lib-1.6.15.dist-info}/WHEEL +0 -0
  267. {web3_wizzard_lib-1.6.12.dist-info → web3_wizzard_lib-1.6.15.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,22 @@
1
+ from sybil_engine.data.contracts import get_contracts_for_chain
2
+ from sybil_engine.data.networks import get_chain_instance
3
+ from sybil_engine.utils.web3_utils import init_web3
4
+
5
+ from web3_wizzard_lib.core.contract.satoshi_universe_contract import SatoshiUniverseContract
6
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
7
+
8
+
9
+ class SatoshiUniverse(SubModule):
10
+ module_name = 'SATOSHI_UNIVERSE'
11
+
12
+ def execute(self, account, chain='LINEA'):
13
+ chain_instance = get_chain_instance(chain)
14
+ web3 = init_web3(chain_instance, account.proxy)
15
+
16
+ contract_address = get_contracts_for_chain(chain)['SATOSHI_UNIVERSE']
17
+ satoshi_universe = SatoshiUniverseContract(contract_address, web3)
18
+
19
+ satoshi_universe.mint(account, 1)
20
+
21
+ def log(self):
22
+ return "SATOSHI UNIVERSE NFT"
@@ -0,0 +1,35 @@
1
+ import requests
2
+ from sybil_engine.contract.send import Send
3
+ from sybil_engine.domain.balance.balance import NativeBalance
4
+ from sybil_engine.domain.balance.balance_utils import from_eth_to_wei
5
+ from sybil_engine.utils.app_account_utils import AppAccount
6
+
7
+ from web3_wizzard_lib.core.modules.nft.nft_submodule import NftSubmodule
8
+
9
+
10
+ class ScrollCanvas1YearBadge(NftSubmodule):
11
+ module_name = 'SCROLL_CANVAS_YEAR_BADGE'
12
+ nft_address = '0x3dacAd961e5e2de850F5E027c70b56b5Afa5DfeD'
13
+
14
+ def execute(self, account: AppAccount, chain='SCROLL', wei_cost=from_eth_to_wei(0)):
15
+ url = f"https://canvas.scroll.cat/badge/claim?badge={self.nft_address}&recipient={account.address}"
16
+
17
+ proxy = {
18
+ 'http': account.proxy,
19
+ 'https': account.proxy
20
+ }
21
+
22
+ result = requests.get(url, proxies=proxy).json()
23
+
24
+ Send(
25
+ None,
26
+ self.create_web3(account, chain)
27
+ ).send_to_wallet(
28
+ account,
29
+ result['tx']['to'],
30
+ NativeBalance(wei_cost, chain, "ETH"),
31
+ result['tx']['data']
32
+ )
33
+
34
+ def log(self):
35
+ return "SCROLL CANVAS (1 YEAR BADGE)"
@@ -0,0 +1,51 @@
1
+ import random
2
+ import string
3
+
4
+ import requests
5
+ from loguru import logger
6
+ from sybil_engine.domain.balance.balance_utils import from_eth_to_wei
7
+ from sybil_engine.utils.app_account_utils import AppAccount
8
+
9
+ from web3_wizzard_lib.core.contract.scroll_canvas_mint_contract import ScrollCanvasMintContract
10
+ from web3_wizzard_lib.core.modules.nft.nft_submodule import NftSubmodule
11
+
12
+
13
+ class ScrollCanvasMint(NftSubmodule):
14
+ module_name = 'SCROLL_CANVAS_MINT'
15
+ nft_address = '0xB23AF8707c442f59BDfC368612Bd8DbCca8a7a5a'
16
+
17
+ def execute(self, account: AppAccount, wei_cost=from_eth_to_wei(0.0005), chain='SCROLL'):
18
+ contract = ScrollCanvasMintContract(
19
+ '0xB23AF8707c442f59BDfC368612Bd8DbCca8a7a5a',
20
+ self.create_web3(account, chain)
21
+ )
22
+
23
+ username = self.generate_username(random.randint(8, 12))
24
+ referral = random.choice(self.get_referrals())
25
+
26
+ logger.info(f"Mint Scroll Canvas with username {username} using ref {referral}")
27
+
28
+ contract.mint(
29
+ account,
30
+ username,
31
+ requests.get(f'https://canvas.scroll.cat/code/{referral}/sig/{account.address}').json()['signature'],
32
+ wei_cost
33
+ )
34
+
35
+ def log(self):
36
+ return "SCROLL CANVAS MINT"
37
+
38
+ def generate_username(self, length):
39
+ # Combine uppercase, lowercase letters and digits
40
+ characters = string.ascii_letters + string.digits
41
+ # Generate random string
42
+ random_string = ''.join(random.choice(characters) for _ in range(length))
43
+ return random_string
44
+
45
+ def get_referrals(self):
46
+ return [
47
+ 'POPNK',
48
+ 'GTNPB',
49
+ 'KZFXI',
50
+ 'MFWQ7'
51
+ ]
@@ -0,0 +1,32 @@
1
+ from json import dumps
2
+
3
+ import requests
4
+ from eth_account.messages import encode_defunct
5
+
6
+
7
+ def sign_in_message(account, web3):
8
+ message_text = "Please sign this message to confirm you are the owner of this address and Sign in to TrustGo App"
9
+ signature = sign_msg(account, message_text, web3)
10
+ url = 'https://mp.trustalabs.ai/accounts/check_signed_message'
11
+ data = {
12
+ "mode": "evm", "address": account.address,
13
+ "message": message_text,
14
+ "signature": signature,
15
+ "invite_from": {"from": "0", "code": 'EPR0QD9W52I8'}}
16
+ headers = {'Authorization': f'TOKEN null', 'Accept': 'application/json'}
17
+ data_json = dumps(data)
18
+ r = requests.post(url, data=data_json, headers=headers)
19
+ if r.status_code == 200:
20
+ res = [r.json()]
21
+ if res[0]['code'] == 0:
22
+ token_auth = res[0]['data']['token']
23
+ return token_auth
24
+ return -1
25
+
26
+
27
+ def sign_msg(wallet, message_text, web3):
28
+ text_hex = "0x" + message_text.encode('utf-8').hex()
29
+ text_encoded = encode_defunct(hexstr=text_hex)
30
+ signed_message = web3.eth.account.sign_message(text_encoded, private_key=wallet.key)
31
+ signature = signed_message.signature
32
+ return signature.hex()
@@ -0,0 +1,25 @@
1
+ from sybil_engine.contract.send import Send
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.domain.balance.balance import NativeBalance
5
+ from sybil_engine.utils.web3_utils import init_web3
6
+
7
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
8
+
9
+
10
+ class Snap(SubModule):
11
+ module_name = 'SNAP'
12
+
13
+ def execute(self, account, chain='LINEA'):
14
+ chain_instance = get_chain_instance(chain)
15
+ web3 = init_web3(chain_instance, account.proxy)
16
+
17
+ contract_address = get_contracts_for_chain(chain)['SNAP']
18
+
19
+ send = Send(None, web3)
20
+ send.send_to_wallet(
21
+ account, contract_address, NativeBalance(0, chain, "ETH"), "0x14f710fe"
22
+ )
23
+
24
+ def log(self):
25
+ return "SNAP MINT NFT"
@@ -0,0 +1,31 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.utils.web3_utils import init_web3
5
+
6
+ from web3_wizzard_lib.core.contract.snap_contract import SnapContract
7
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
8
+
9
+
10
+ class SnapBonus(SubModule):
11
+ module_name = 'SNAP_BONUS'
12
+ allow_reuse_address = True
13
+
14
+ def execute(self, account, chain='LINEA'):
15
+ chain_instance = get_chain_instance(chain)
16
+ web3 = init_web3(chain_instance, account.proxy)
17
+
18
+ contract_address = get_contracts_for_chain(chain)['SNAP']
19
+ social_scan = SnapContract(contract_address, web3)
20
+
21
+ balance = social_scan.contract.functions.balanceOf(account.address).call()
22
+ token_id = social_scan.contract.functions.tokenOfOwnerByIndex(account.address, 0).call()
23
+
24
+ if balance == 0:
25
+ logger.error(f"[{account.app_id}][{account.address}] Not found NFT. Skip module")
26
+ return
27
+
28
+ social_scan.stake(account, token_id)
29
+
30
+ def log(self):
31
+ return "SNAP_BONUS MINT NFT"
@@ -0,0 +1,22 @@
1
+ from sybil_engine.data.contracts import get_contracts_for_chain
2
+ from sybil_engine.data.networks import get_chain_instance
3
+ from sybil_engine.utils.web3_utils import init_web3
4
+
5
+ from web3_wizzard_lib.core.contract.social_scan_contract import SocialScanContract
6
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
7
+
8
+
9
+ class SocialScan(SubModule):
10
+ module_name = 'SOCIAL_SCAN'
11
+
12
+ def execute(self, account, chain='LINEA'):
13
+ chain_instance = get_chain_instance(chain)
14
+ web3 = init_web3(chain_instance, account.proxy)
15
+
16
+ contract_address = get_contracts_for_chain(chain)['SOCIAL_SCAN']
17
+ social_scan = SocialScanContract(contract_address, web3)
18
+
19
+ social_scan.set_approval_for_all(account, '0x0caB6977a9c70E04458b740476B498B214019641', True)
20
+
21
+ def log(self):
22
+ return "SOCIAL SCAN NFT"
@@ -0,0 +1,30 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.utils.web3_utils import init_web3
5
+
6
+ from web3_wizzard_lib.core.contract.tavaera_id import TavaeraID
7
+ from web3_wizzard_lib.core.contract.tavaera_mint import Tavaera
8
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
9
+
10
+
11
+ class TavaeraModule(SubModule):
12
+ module_name = 'TAVAERA'
13
+
14
+ def execute(self, account, chain='ZKSYNC'):
15
+ chain_instance = get_chain_instance(chain)
16
+ web3 = init_web3(chain_instance, account.proxy)
17
+
18
+ chain_contracts = get_contracts_for_chain(chain)
19
+
20
+ tavaera_id = TavaeraID(chain_contracts['TAVAERA_ID'], web3)
21
+ tavaera = Tavaera(chain_contracts['TAVAERA_MINT'], web3)
22
+
23
+ logger.info("Mint Tavaera ID")
24
+ tavaera_id.mint_citizen_id(account)
25
+
26
+ logger.info("Mint Tavaera NFT")
27
+ tavaera.mint(account)
28
+
29
+ def log(self):
30
+ return "CREATE TAVAERA ACCOUNT"
@@ -0,0 +1,75 @@
1
+ from json import dumps
2
+ from time import time
3
+
4
+ import requests
5
+ from sybil_engine.data.contracts import get_contracts_for_chain
6
+ from sybil_engine.data.networks import get_chain_instance
7
+ from sybil_engine.utils.web3_utils import init_web3
8
+
9
+ from web3_wizzard_lib.core.contract.townstory_contract import TownstoryContract
10
+ from web3_wizzard_lib.core.modules.nft.sign import sign_msg
11
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
12
+
13
+
14
+ class Townstory(SubModule):
15
+ module_name = 'TOWNSTORY'
16
+
17
+ def execute(self, account, chain='LINEA'):
18
+ chain_instance = get_chain_instance(chain)
19
+ web3 = init_web3(chain_instance, account.proxy)
20
+
21
+ contract_address = get_contracts_for_chain(chain)['TOWNSTORY']
22
+
23
+ message_text = get_message(account)
24
+ message_signature = sign_msg(account, message_text, web3)
25
+ txn_signature, deadline = get_txn_signature(account, message_signature)
26
+
27
+ townstory_contract = TownstoryContract(contract_address, web3)
28
+
29
+ townstory_contract.create_account_sign(account, txn_signature, deadline)
30
+
31
+ def log(self):
32
+ return "CREATE TOWNSTORY ACOUNT"
33
+
34
+
35
+ def get_txn_signature(account, message_signature):
36
+ data = {"header": {"version": "1.0.1", "baseVersion": "1.0.0", "referer": ""},
37
+ "transaction": {"func": "register.loginByWallet",
38
+ "params": {"hall": 0, "wallet": "metamask", "chain": "linea",
39
+ "signature": message_signature, "address": account.address}}}
40
+ json_data = dumps(data)
41
+ headers = {'Content-Type': 'application/x-www-form-urlencoded'}
42
+ url1 = 'https://aws-login.townstory.io/town-login/handler.php'
43
+ r = requests.get(url1, data=json_data, headers=headers)
44
+ response = r.json()
45
+ if response['result'] != 'failed':
46
+ txn_signature = r.json()['response']['signature']
47
+ deadline = r.json()['response']['deadline']
48
+ return txn_signature, deadline
49
+
50
+
51
+ def get_time_nonce():
52
+ time_nonce = int(time() / 86400)
53
+ return time_nonce
54
+
55
+
56
+ def get_address_line(address):
57
+ address_line = (address[:19] + '...' + address[-18:]).lower()
58
+ return address_line
59
+
60
+
61
+ def get_message(wallet):
62
+ nonce = get_time_nonce()
63
+ address_line = get_address_line(wallet.address)
64
+ message = ('Welcome to Town Story! \n\n'
65
+ 'Click to sign in and accept the Town Story\n'
66
+ 'Terms of Service:\n'
67
+ 'https://townstory.io/\n\n'
68
+ 'This request will not trigger a blockchain\n'
69
+ 'transaction or cost any gas fees.\n\n'
70
+ 'Your authentication status will reset after\n'
71
+ 'each session.\n\n'
72
+ 'Wallet address:\n'
73
+ f'{address_line}\n\n'
74
+ f'Nonce: {nonce}')
75
+ return message
@@ -0,0 +1,45 @@
1
+ import requests
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.utils.web3_utils import init_web3
5
+
6
+ from web3_wizzard_lib.core.contract.townstory_bonus_contract import TownstoryBonusContract
7
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
8
+
9
+
10
+ class TownstoryBonus(SubModule):
11
+ module_name = 'TOWNSTORY_BONUS'
12
+
13
+ def execute(self, account, chain='LINEA'):
14
+ chain_instance = get_chain_instance(chain)
15
+ web3 = init_web3(chain_instance, account.proxy)
16
+
17
+ contract_address = get_contracts_for_chain(chain)['TOWNSTORY_BONUS']
18
+
19
+ townstory_bonus_contract = TownstoryBonusContract(contract_address, web3)
20
+
21
+ signature, deadline = get_travelbag_signature(account.address, account.proxy)
22
+
23
+ townstory_bonus_contract.claim_linea_travelbag(account, signature, deadline)
24
+
25
+ def log(self):
26
+ return "CREATE TOWNSTORY BONUS"
27
+
28
+
29
+ def get_travelbag_signature(wallet, proxy):
30
+ proxies = {'http': proxy,
31
+ 'https': proxy}
32
+ url = 'https://townstory.io//api'
33
+ headers = {
34
+ 'Content-Type': 'application/x-www-form-urlencoded',
35
+ "Content-Length": "70",
36
+ "Accept": "*/*",
37
+ "Origin": "https://townstory.io",
38
+ "Referer": "https://townstory.io/linea"
39
+
40
+ }
41
+ data = {"action": "getLineaSign", "address": f'{wallet.lower()}'}
42
+
43
+ r = requests.post(url, data=data, headers=headers, proxies=proxies)
44
+ res = r.json()
45
+ return res['signature'], res['deadline']
@@ -0,0 +1,48 @@
1
+ import requests
2
+ from sybil_engine.contract.send import Send
3
+ from sybil_engine.data.contracts import get_contracts_for_chain
4
+ from sybil_engine.data.networks import get_chain_instance
5
+ from sybil_engine.domain.balance.balance import NativeBalance
6
+ from sybil_engine.utils.web3_utils import init_web3
7
+
8
+ from web3_wizzard_lib.core.modules.nft.sign import sign_in_message
9
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
10
+
11
+
12
+ class TrustaReputation(SubModule):
13
+ module_name = 'TRUSTA_REPUTATION'
14
+
15
+ def execute(self, account, chain='LINEA'):
16
+ chain_instance = get_chain_instance(chain)
17
+ web3 = init_web3(chain_instance, account.proxy)
18
+
19
+ contract_address = get_contracts_for_chain(chain)['TRUSTA_POH']
20
+
21
+ token_auth = sign_in_message(account, web3)
22
+ txn_calldata = get_attest_data_media(token_auth)
23
+
24
+ score = txn_calldata['message']['score']
25
+ if score < 20:
26
+ raise Exception(f'Score кошелька менее 20: score = {score}, аттестация не выполняется')
27
+
28
+ send = Send(contract_address, web3)
29
+ send.send_to_wallet(
30
+ account,
31
+ contract_address,
32
+ NativeBalance(txn_calldata['calldata']['value'], chain, 'ETH'),
33
+ txn_calldata['calldata']['data']
34
+ )
35
+
36
+ def log(self):
37
+ return "TRUSTA REPUTATION (Group B)"
38
+
39
+
40
+ def get_attest_data_media(token_auth):
41
+ url = 'https://mp.trustalabs.ai/accounts/attest_calldata?attest_type=media'
42
+ headers = {'Authorization': f'TOKEN {token_auth}', 'Accept': 'application/json'}
43
+ r = requests.get(url, headers=headers)
44
+ if r.status_code == 200:
45
+ res = [r.json()]
46
+ if res[0]['code'] == 0:
47
+ txn_calldata = res[0]['data']
48
+ return txn_calldata
@@ -0,0 +1,49 @@
1
+ import requests
2
+ from sybil_engine.contract.send import Send
3
+ from sybil_engine.data.contracts import get_contracts_for_chain
4
+ from sybil_engine.data.networks import get_chain_instance
5
+ from sybil_engine.domain.balance.balance import NativeBalance
6
+ from sybil_engine.utils.web3_utils import init_web3
7
+
8
+ from web3_wizzard_lib.core.modules.nft.sign import sign_in_message
9
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
10
+
11
+
12
+ class TrustaPoh(SubModule):
13
+ module_name = 'TRUSTA_POH'
14
+
15
+ def execute(self, account, chain='LINEA'):
16
+ chain_instance = get_chain_instance(chain)
17
+ web3 = init_web3(chain_instance, account.proxy)
18
+
19
+ contract_address = get_contracts_for_chain(chain)['TRUSTA_POH']
20
+
21
+ token_auth = sign_in_message(account, web3)
22
+ txn_calldata = get_attest_data_humanity(token_auth)
23
+
24
+ score = txn_calldata['message']['score']
25
+ if score != -1:
26
+ raise Exception(f'Score кошелька равен {score}, аттестация не выполняется')
27
+
28
+ send = Send(contract_address, web3)
29
+ send.send_to_wallet(
30
+ account,
31
+ contract_address,
32
+ NativeBalance(txn_calldata['calldata']['value'], chain, 'ETH'),
33
+ txn_calldata['calldata']['data']
34
+ )
35
+
36
+ def log(self):
37
+ return "TRUSTA POH (Group A)"
38
+
39
+
40
+ def get_attest_data_humanity(token_auth):
41
+ url = 'https://mp.trustalabs.ai/accounts/attest_calldata?attest_type=humanity'
42
+ headers = {'Authorization': f'TOKEN {token_auth}', 'Accept': 'application/json'}
43
+ r = requests.get(url, headers=headers)
44
+ if r.status_code == 200:
45
+ res = [r.json()]
46
+ if res[0]['code'] == 0:
47
+ txn_calldata = res[0]['data']
48
+ return txn_calldata
49
+
@@ -0,0 +1,24 @@
1
+ from sybil_engine.contract.send import Send
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.domain.balance.balance import NativeBalance
5
+ from sybil_engine.utils.web3_utils import init_web3
6
+
7
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
8
+
9
+
10
+ class UberPoh(SubModule):
11
+ module_name = 'UBER_POH'
12
+
13
+ def execute(self, account, chain='LINEA'):
14
+ chain_instance = get_chain_instance(chain)
15
+ web3 = init_web3(chain_instance, account.proxy)
16
+
17
+ contract_address = get_contracts_for_chain(chain)['UBER_POH']
18
+
19
+ send = Send(None, web3)
20
+ send.send_to_wallet(
21
+ account, contract_address, NativeBalance(0, chain, "ETH"), account.notes)
22
+
23
+ def log(self):
24
+ return "UBER POH"
@@ -0,0 +1,26 @@
1
+ from sybil_engine.contract.send import Send
2
+ from sybil_engine.data.networks import get_chain_instance
3
+ from sybil_engine.domain.balance.balance import NativeBalance
4
+ from sybil_engine.utils.app_account_utils import AppAccount
5
+ from sybil_engine.utils.web3_utils import init_web3
6
+
7
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
8
+
9
+
10
+ class WizzardsOfLinea(SubModule):
11
+ module_name = 'LINEA_CULTURE_4'
12
+
13
+ def execute(self, account: AppAccount, chain='LINEA'):
14
+ chain_instance = get_chain_instance(chain)
15
+ web3 = init_web3(chain_instance, account.proxy)
16
+
17
+ send = Send(None, web3)
18
+ send.send_to_wallet(
19
+ account,
20
+ '0xD540038B0B427238984E0341bA49F69CD80DC139',
21
+ NativeBalance(0, chain, "ETH"),
22
+ "0x00000000"
23
+ )
24
+
25
+ def log(self):
26
+ return "WIZZARDS OF LINEA"
@@ -0,0 +1,22 @@
1
+ from sybil_engine.data.contracts import get_contracts_for_chain
2
+ from sybil_engine.data.networks import get_chain_instance
3
+ from sybil_engine.utils.web3_utils import init_web3
4
+
5
+ from web3_wizzard_lib.core.contract.yoddlo_contract import YoddloContract
6
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
7
+
8
+
9
+ class Yoddlo(SubModule):
10
+ module_name = 'YODDLO'
11
+
12
+ def execute(self, account, chain='LINEA'):
13
+ chain_instance = get_chain_instance(chain)
14
+ web3 = init_web3(chain_instance, account.proxy)
15
+
16
+ contract_address = get_contracts_for_chain(chain)['YODDLO']
17
+ yoddlo_nft = YoddloContract(contract_address, web3)
18
+
19
+ yoddlo_nft.purchase(account)
20
+
21
+ def log(self):
22
+ return "YODDLO NFT"
@@ -0,0 +1,22 @@
1
+ from sybil_engine.data.contracts import get_contracts_for_chain
2
+ from sybil_engine.data.networks import get_chain_instance
3
+ from sybil_engine.utils.web3_utils import init_web3
4
+
5
+ from web3_wizzard_lib.core.contract.yuliverse_contract import YuliverseContract
6
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
7
+
8
+
9
+ class Yuliverse(SubModule):
10
+ module_name = 'YULIVERSE'
11
+
12
+ def execute(self, account, chain='LINEA'):
13
+ chain_instance = get_chain_instance(chain)
14
+ web3 = init_web3(chain_instance, account.proxy)
15
+
16
+ contract_address = get_contracts_for_chain(chain)['YULIVERSE']
17
+ yuliverse_nft = YuliverseContract(contract_address, web3)
18
+
19
+ yuliverse_nft.purchase(account)
20
+
21
+ def log(self):
22
+ return "YULIVERSE NFT"
@@ -0,0 +1,25 @@
1
+ from sybil_engine.contract.send import Send
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.domain.balance.balance import NativeBalance
5
+ from sybil_engine.utils.web3_utils import init_web3
6
+
7
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
8
+
9
+
10
+ class Zace(SubModule):
11
+ module_name = 'ZACE'
12
+
13
+ def execute(self, account, chain='LINEA'):
14
+ chain_instance = get_chain_instance(chain)
15
+ web3 = init_web3(chain_instance, account.proxy)
16
+
17
+ contract_address = get_contracts_for_chain(chain)['ZACE']
18
+
19
+ send = Send(None, web3)
20
+ send.send_to_wallet(
21
+ account, contract_address, NativeBalance(50000000000000, chain, "ETH"), "0xbaeb0718"
22
+ )
23
+
24
+ def log(self):
25
+ return "zAce NFT"
@@ -0,0 +1,41 @@
1
+ import random
2
+
3
+ from loguru import logger
4
+ from sybil_engine.data.contracts import get_contracts_for_chain
5
+ from sybil_engine.data.networks import get_chain_instance
6
+ from sybil_engine.utils.web3_utils import init_web3
7
+
8
+ from web3_wizzard_lib.core.contract.zks import ZKS
9
+ from web3_wizzard_lib.core.utils.sub_module import SubModule
10
+
11
+
12
+ class ZksDomain(SubModule):
13
+ module_name = 'TAVAERA'
14
+
15
+ def execute(self, account, chain='ZKSYNC'):
16
+ chain_instance = get_chain_instance(chain)
17
+ web3 = init_web3(chain_instance, account.proxy)
18
+
19
+ contract_address = get_contracts_for_chain(chain)['ZKS']
20
+ zks = ZKS(contract_address, web3)
21
+
22
+ domain_name = self.get_random_name(zks)
23
+
24
+ zks.register(account, domain_name)
25
+
26
+ def get_random_name(self, zks):
27
+ domain_name = "".join(random.sample([chr(i) for i in range(97, 123)], random.randint(7, 15)))
28
+
29
+ logger.info(f"Mint {domain_name}.zks domain")
30
+
31
+ check_name = zks.available(domain_name)
32
+
33
+ if check_name:
34
+ return domain_name
35
+
36
+ logger.info(f"{domain_name}.zks is unavailable, try another domain")
37
+
38
+ return self.get_random_name(zks)
39
+
40
+ def log(self):
41
+ return "REGISTER RANDOM ZKS DOMAIN"