web3-wizzard-lib 0.0.2__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.
- core/__init__.py +1 -0
- core/contract/__init__.py +0 -0
- core/contract/aavecontract.py +36 -0
- core/contract/alienswap_contract.py +21 -0
- core/contract/arena_games_contract.py +16 -0
- core/contract/basiliskcontract.py +58 -0
- core/contract/bilinear_contract.py +22 -0
- core/contract/bungee.py +33 -0
- core/contract/coredao_contract.py +35 -0
- core/contract/coredao_from_contract.py +40 -0
- core/contract/dmail_send_mail.py +18 -0
- core/contract/empty_nft.py +18 -0
- core/contract/era_name.py +23 -0
- core/contract/eralendcontract.py +34 -0
- core/contract/eth_scroll_bridge_contract.py +25 -0
- core/contract/frog_war_contract.py +48 -0
- core/contract/horizondex_quoter.py +14 -0
- core/contract/horizondex_router.py +91 -0
- core/contract/imagine_contract.py +18 -0
- core/contract/izumi.py +63 -0
- core/contract/kreatorland_contract.py +21 -0
- core/contract/l0_claim.py +254 -0
- core/contract/l2_telegraph.py +21 -0
- core/contract/layerbank_price.py +18 -0
- core/contract/layerbank_token.py +29 -0
- core/contract/layerbankcontract.py +59 -0
- core/contract/linea_day_2_contract.py +19 -0
- core/contract/linea_day_3_contract.py +55 -0
- core/contract/linea_ens_names_contract.py +55 -0
- core/contract/lineaswaprouter.py +52 -0
- core/contract/maverick_multicall.py +52 -0
- core/contract/mendi_finance_contract.py +11 -0
- core/contract/mendi_token.py +25 -0
- core/contract/merkly_minter.py +47 -0
- core/contract/micro3_contract.py +18 -0
- core/contract/mute_router.py +93 -0
- core/contract/nidum_contract.py +44 -0
- core/contract/nile_contract.py +60 -0
- core/contract/nomis_attest_contract.py +40 -0
- core/contract/nomis_contract.py +40 -0
- core/contract/octomos.py +31 -0
- core/contract/odos.py +104 -0
- core/contract/omnisea.py +29 -0
- core/contract/orbiter_starknet.py +30 -0
- core/contract/pancake_pool.py +19 -0
- core/contract/pancake_quoter.py +20 -0
- core/contract/pancake_router.py +72 -0
- core/contract/rage_claim.py +24 -0
- core/contract/reactor_fusion_contract.py +78 -0
- core/contract/readon_contract.py +19 -0
- core/contract/rubyscore_contract.py +31 -0
- core/contract/satoshi_universe_contract.py +29 -0
- core/contract/scroll_bridge_contract.py +24 -0
- core/contract/scroll_canvas_mint_contract.py +26 -0
- core/contract/scroll_oracle.py +11 -0
- core/contract/snap_contract.py +16 -0
- core/contract/social_scan_contract.py +20 -0
- core/contract/stargate_farming.py +37 -0
- core/contract/stargate_router.py +84 -0
- core/contract/stargate_router_eth.py +41 -0
- core/contract/stargate_token_pool.py +46 -0
- core/contract/stargate_v2_contract.py +36 -0
- core/contract/syncswap_classic_pool.py +15 -0
- core/contract/syncswap_classic_pool_factory.py +15 -0
- core/contract/syncswap_pool.py +25 -0
- core/contract/syncswap_router.py +123 -0
- core/contract/tavaera_id.py +18 -0
- core/contract/tavaera_mint.py +17 -0
- core/contract/townstory_bonus_contract.py +19 -0
- core/contract/townstory_contract.py +21 -0
- core/contract/velocore_lens.py +44 -0
- core/contract/velocore_pool.py +198 -0
- core/contract/velocore_router.py +80 -0
- core/contract/woofi_swap.py +29 -0
- core/contract/xy_finance_contract.py +87 -0
- core/contract/yoddlo_contract.py +19 -0
- core/contract/yuliverse_contract.py +36 -0
- core/contract/zebra_contract.py +68 -0
- core/contract/zerolend_contract.py +34 -0
- core/contract/zerolend_liq_contract.py +20 -0
- core/contract/zkdx_contract.py +40 -0
- core/contract/zkdx_data.py +14 -0
- core/contract/zks.py +24 -0
- core/modules/__init__.py +0 -0
- core/modules/ads_import_proxy.py +52 -0
- core/modules/airdrop_printer.py +80 -0
- core/modules/bank/__init__.py +0 -0
- core/modules/bank/aave.py +25 -0
- core/modules/bank/bank.py +15 -0
- core/modules/bank/bank_module.py +99 -0
- core/modules/bank/basilisk.py +25 -0
- core/modules/bank/eralend.py +25 -0
- core/modules/bank/layerbank.py +116 -0
- core/modules/bank/mendi_finance.py +57 -0
- core/modules/bank/reactorfusion.py +25 -0
- core/modules/bank/zerolend.py +36 -0
- core/modules/bridge/__init__.py +0 -0
- core/modules/bridge/bridge.py +8 -0
- core/modules/bridge/coredao_bridge_sub.py +47 -0
- core/modules/bridge/orbiter_sub.py +112 -0
- core/modules/bridge/scroll_bridge_sub.py +42 -0
- core/modules/bridge/stargate_v2_sub.py +74 -0
- core/modules/bridge_module.py +47 -0
- core/modules/bungee.py +109 -0
- core/modules/cex_sender.py +60 -0
- core/modules/cex_subaccount_transfer.py +34 -0
- core/modules/cex_withdraw.py +91 -0
- core/modules/claimer.py +45 -0
- core/modules/claims/__init__.py +0 -0
- core/modules/claims/layerzero_claimer.py +64 -0
- core/modules/claims/rabby_claimer.py +81 -0
- core/modules/concrete_swap.py +97 -0
- core/modules/coredao_bridge.py +32 -0
- core/modules/coredao_bridge_auto.py +39 -0
- core/modules/debank_checker.py +90 -0
- core/modules/dmail.py +54 -0
- core/modules/erc20_balance.py +42 -0
- core/modules/intract/__init__.py +0 -0
- core/modules/intract/intract_api.py +212 -0
- core/modules/intract/utils.py +81 -0
- core/modules/intract_claim.py +104 -0
- core/modules/layer_2_20.py +65 -0
- core/modules/lending_module.py +134 -0
- core/modules/linea_appeal.py +70 -0
- core/modules/linea_poh_lxp.py +64 -0
- core/modules/liquidity/__init__.py +0 -0
- core/modules/liquidity/nile_pool.py +64 -0
- core/modules/liquidity/pool.py +16 -0
- core/modules/liquidity/syncswap_pool.py +61 -0
- core/modules/liquidity/velocore_pool.py +55 -0
- core/modules/liquidity/zerolend_liquidity.py +26 -0
- core/modules/liquidity_pool.py +60 -0
- core/modules/merkly_refuel.py +87 -0
- core/modules/modules.py +4 -0
- core/modules/nft/__init__.py +0 -0
- core/modules/nft/abbys_world.py +22 -0
- core/modules/nft/acg_worlds.py +25 -0
- core/modules/nft/alienswap_linea.py +22 -0
- core/modules/nft/arena_games.py +22 -0
- core/modules/nft/asmatch.py +22 -0
- core/modules/nft/battlemon.py +25 -0
- core/modules/nft/bilinear.py +22 -0
- core/modules/nft/bitavatar.py +25 -0
- core/modules/nft/culture_satoshi_universe.py +24 -0
- core/modules/nft/efrogs.py +26 -0
- core/modules/nft/empty_nft.py +22 -0
- core/modules/nft/era_domain.py +42 -0
- core/modules/nft/frog_war.py +22 -0
- core/modules/nft/frog_war_bonus.py +22 -0
- core/modules/nft/gamerboom.py +25 -0
- core/modules/nft/gamerboom_bonus.py +26 -0
- core/modules/nft/imagine.py +32 -0
- core/modules/nft/kreatorland_module.py +35 -0
- core/modules/nft/l2_telegraph_module.py +22 -0
- core/modules/nft/layer3_meta.py +25 -0
- core/modules/nft/linea_culture_2_2_linus.py +24 -0
- core/modules/nft/linea_culture_2_3_yooldo.py +24 -0
- core/modules/nft/linea_culture_2_4_frogwar.py +24 -0
- core/modules/nft/linea_culture_2_5_acg.py +25 -0
- core/modules/nft/linea_culture_2_6_ascend_the_end.py +25 -0
- core/modules/nft/linea_culture_3_1_ascend_the_end.py +25 -0
- core/modules/nft/linea_culture_3_2_sending_me.py +25 -0
- core/modules/nft/linea_culture_3_3_townstory.py +25 -0
- core/modules/nft/linea_culture_3_4_daniele.py +25 -0
- core/modules/nft/linea_culture_3_5_demmortal.py +25 -0
- core/modules/nft/linea_culture_3_6_foxy.py +25 -0
- core/modules/nft/linea_culture_4_1_coop_records.py +60 -0
- core/modules/nft/linea_culture_4_2_borja_moskv.py +65 -0
- core/modules/nft/linea_culture_4_2_borja_moskv_approve.py +27 -0
- core/modules/nft/linea_culture_4_3_fruit.py +66 -0
- core/modules/nft/linea_culture_4_4_fruit_crux.py +67 -0
- core/modules/nft/linea_culture_4_5_forbidden_fruit.py +67 -0
- core/modules/nft/linea_culture_4_6_laurent.py +67 -0
- core/modules/nft/linea_culture_day2.py +20 -0
- core/modules/nft/linea_culture_day3.py +20 -0
- core/modules/nft/linea_ens_names.py +107 -0
- core/modules/nft/lucky_cat.py +25 -0
- core/modules/nft/merkly_minter_module.py +22 -0
- core/modules/nft/micro3.py +23 -0
- core/modules/nft/mint_2048.py +28 -0
- core/modules/nft/nft_submodule.py +16 -0
- core/modules/nft/nidum.py +87 -0
- core/modules/nft/nidum_bonus.py +23 -0
- core/modules/nft/nomis.py +64 -0
- core/modules/nft/nomis_attest.py +66 -0
- core/modules/nft/nouns.py +27 -0
- core/modules/nft/octomos.py +32 -0
- core/modules/nft/omnisea.py +33 -0
- core/modules/nft/omnizone.py +25 -0
- core/modules/nft/orbiter_claim.py +87 -0
- core/modules/nft/readon.py +30 -0
- core/modules/nft/rubyscore.py +45 -0
- core/modules/nft/sarubol.py +22 -0
- core/modules/nft/satoshi_universe.py +22 -0
- core/modules/nft/scroll_canvas_attest_year_badge.py +35 -0
- core/modules/nft/scroll_canvas_mint.py +51 -0
- core/modules/nft/sign.py +32 -0
- core/modules/nft/snap.py +25 -0
- core/modules/nft/snap_bonus.py +31 -0
- core/modules/nft/social_scan.py +22 -0
- core/modules/nft/sub_module.py +8 -0
- core/modules/nft/tavaera.py +30 -0
- core/modules/nft/townstory.py +75 -0
- core/modules/nft/townstory_bonus.py +45 -0
- core/modules/nft/trusta_reputation.py +48 -0
- core/modules/nft/trustaa_poh.py +49 -0
- core/modules/nft/uber_poh.py +24 -0
- core/modules/nft/wizards_of_linea.py +26 -0
- core/modules/nft/yoddlo.py +22 -0
- core/modules/nft/yuliverse.py +22 -0
- core/modules/nft/zace.py +25 -0
- core/modules/nft/zks_domain.py +41 -0
- core/modules/nft_minter.py +107 -0
- core/modules/orbiter.py +39 -0
- core/modules/orbiter_checker.py +26 -0
- core/modules/rage.py +54 -0
- core/modules/scroll_bridge.py +45 -0
- core/modules/sell_all.py +51 -0
- core/modules/sleep_module.py +25 -0
- core/modules/smart_contract_deployment.py +37 -0
- core/modules/stargate/__init__.py +0 -0
- core/modules/stargate/auto_bridge.py +91 -0
- core/modules/stargate/bridge.py +38 -0
- core/modules/stargate/bridge_eth.py +59 -0
- core/modules/stargate/bridge_tokens.py +48 -0
- core/modules/stargate/classic_bridge.py +34 -0
- core/modules/stargate/farming.py +163 -0
- core/modules/stargate/l0_data.py +10 -0
- core/modules/stargate/pool.py +74 -0
- core/modules/stargate/stargate_balance_utils.py +25 -0
- core/modules/stargate/stargate_gas_checker.py +68 -0
- core/modules/swap/__init__.py +1 -0
- core/modules/swap/horizondex.py +38 -0
- core/modules/swap/izumi.py +41 -0
- core/modules/swap/lineaswap.py +34 -0
- core/modules/swap/maverick.py +66 -0
- core/modules/swap/mute.py +39 -0
- core/modules/swap/odos.py +58 -0
- core/modules/swap/one_inch.py +58 -0
- core/modules/swap/pancake.py +41 -0
- core/modules/swap/swap_facade.py +10 -0
- core/modules/swap/syncswap.py +62 -0
- core/modules/swap/velocore.py +40 -0
- core/modules/swap/woofi.py +38 -0
- core/modules/swap/xy_finance.py +43 -0
- core/modules/swap/zebra.py +32 -0
- core/modules/warm_up.py +98 -0
- core/modules/wrapping.py +74 -0
- core/modules/zkdx.py +63 -0
- data/__init__.py +0 -0
- data/config_default.py +52 -0
- data/module_config_default.py +209 -0
- tests/__init__.py +0 -0
- tests/core/__init__.py +0 -0
- tests/core/contracts/__init__.py +0 -0
- tests/core/contracts/test_horizondex_quoter.py +37 -0
- tests/core/contracts/test_uniswap_quoter.py +35 -0
- tests/core/contracts/test_velocore_lens.py +67 -0
- tests/core/contracts/test_velocore_pool.py +57 -0
- tests/core/modules/__init__.py +67 -0
- tests/core/modules/swap/__init__.py +0 -0
- tests/core/modules/swap/test_horizondex.py +37 -0
- tests/core/modules/swap/test_lineaswap.py +28 -0
- tests/core/modules/swap/test_maverick.py +31 -0
- tests/core/modules/swap/test_mute.py +29 -0
- tests/core/modules/swap/test_odos.py +36 -0
- tests/core/modules/swap/test_pancake.py +54 -0
- tests/core/modules/swap/test_syncswap.py +59 -0
- tests/core/modules/swap/test_velocore.py +33 -0
- tests/core/modules/swap/test_woofi.py +22 -0
- tests/core/modules/test_bungee.py +27 -0
- tests/core/modules/test_concrete_swap.py +62 -0
- tests/core/modules/test_dmail.py +41 -0
- tests/core/modules/test_lending.py +122 -0
- tests/core/modules/test_nft.py +32 -0
- tests/core/modules/test_nft_minter.py +30 -0
- tests/core/modules/test_orbiter.py +28 -0
- tests/core/modules/test_sellall.py +27 -0
- tests/core/modules/test_send_to_cex.py +27 -0
- tests/core/modules/test_stargate_auto_bridge.py +32 -0
- tests/core/modules/test_stargate_bridge.py +25 -0
- tests/core/modules/test_stargate_farming.py +108 -0
- tests/core/modules/test_warmup.py +78 -0
- tests/core/modules/test_wrapping.py +68 -0
- tests/core/scenario/__init__.py +0 -0
- tests/core/scenario/module_0_test_config.py +91 -0
- tests/core/test_app.py +19 -0
- tests/core/test_config.py +34 -0
- web3_wizzard_lib/__init__.py +0 -0
- web3_wizzard_lib/core/__init__.py +1 -0
- web3_wizzard_lib/core/contract/__init__.py +0 -0
- web3_wizzard_lib/core/contract/aavecontract.py +36 -0
- web3_wizzard_lib/core/contract/alienswap_contract.py +21 -0
- web3_wizzard_lib/core/contract/arena_games_contract.py +16 -0
- web3_wizzard_lib/core/contract/basiliskcontract.py +58 -0
- web3_wizzard_lib/core/contract/bilinear_contract.py +22 -0
- web3_wizzard_lib/core/contract/bungee.py +33 -0
- web3_wizzard_lib/core/contract/coredao_contract.py +35 -0
- web3_wizzard_lib/core/contract/coredao_from_contract.py +40 -0
- web3_wizzard_lib/core/contract/dmail_send_mail.py +18 -0
- web3_wizzard_lib/core/contract/empty_nft.py +18 -0
- web3_wizzard_lib/core/contract/era_name.py +23 -0
- web3_wizzard_lib/core/contract/eralendcontract.py +34 -0
- web3_wizzard_lib/core/contract/eth_scroll_bridge_contract.py +25 -0
- web3_wizzard_lib/core/contract/frog_war_contract.py +48 -0
- web3_wizzard_lib/core/contract/horizondex_quoter.py +14 -0
- web3_wizzard_lib/core/contract/horizondex_router.py +91 -0
- web3_wizzard_lib/core/contract/imagine_contract.py +18 -0
- web3_wizzard_lib/core/contract/izumi.py +63 -0
- web3_wizzard_lib/core/contract/kreatorland_contract.py +21 -0
- web3_wizzard_lib/core/contract/l0_claim.py +254 -0
- web3_wizzard_lib/core/contract/l2_telegraph.py +21 -0
- web3_wizzard_lib/core/contract/layerbank_price.py +18 -0
- web3_wizzard_lib/core/contract/layerbank_token.py +29 -0
- web3_wizzard_lib/core/contract/layerbankcontract.py +59 -0
- web3_wizzard_lib/core/contract/linea_day_2_contract.py +19 -0
- web3_wizzard_lib/core/contract/linea_day_3_contract.py +55 -0
- web3_wizzard_lib/core/contract/linea_ens_names_contract.py +55 -0
- web3_wizzard_lib/core/contract/lineaswaprouter.py +52 -0
- web3_wizzard_lib/core/contract/maverick_multicall.py +52 -0
- web3_wizzard_lib/core/contract/mendi_finance_contract.py +11 -0
- web3_wizzard_lib/core/contract/mendi_token.py +25 -0
- web3_wizzard_lib/core/contract/merkly_minter.py +47 -0
- web3_wizzard_lib/core/contract/micro3_contract.py +18 -0
- web3_wizzard_lib/core/contract/mute_router.py +93 -0
- web3_wizzard_lib/core/contract/nidum_contract.py +44 -0
- web3_wizzard_lib/core/contract/nile_contract.py +60 -0
- web3_wizzard_lib/core/contract/nomis_attest_contract.py +40 -0
- web3_wizzard_lib/core/contract/nomis_contract.py +40 -0
- web3_wizzard_lib/core/contract/octomos.py +31 -0
- web3_wizzard_lib/core/contract/odos.py +104 -0
- web3_wizzard_lib/core/contract/omnisea.py +29 -0
- web3_wizzard_lib/core/contract/orbiter_starknet.py +30 -0
- web3_wizzard_lib/core/contract/pancake_pool.py +19 -0
- web3_wizzard_lib/core/contract/pancake_quoter.py +20 -0
- web3_wizzard_lib/core/contract/pancake_router.py +72 -0
- web3_wizzard_lib/core/contract/rage_claim.py +24 -0
- web3_wizzard_lib/core/contract/reactor_fusion_contract.py +78 -0
- web3_wizzard_lib/core/contract/readon_contract.py +19 -0
- web3_wizzard_lib/core/contract/rubyscore_contract.py +31 -0
- web3_wizzard_lib/core/contract/satoshi_universe_contract.py +29 -0
- web3_wizzard_lib/core/contract/scroll_bridge_contract.py +24 -0
- web3_wizzard_lib/core/contract/scroll_canvas_mint_contract.py +26 -0
- web3_wizzard_lib/core/contract/scroll_oracle.py +11 -0
- web3_wizzard_lib/core/contract/snap_contract.py +16 -0
- web3_wizzard_lib/core/contract/social_scan_contract.py +20 -0
- web3_wizzard_lib/core/contract/stargate_farming.py +37 -0
- web3_wizzard_lib/core/contract/stargate_router.py +84 -0
- web3_wizzard_lib/core/contract/stargate_router_eth.py +41 -0
- web3_wizzard_lib/core/contract/stargate_token_pool.py +46 -0
- web3_wizzard_lib/core/contract/stargate_v2_contract.py +36 -0
- web3_wizzard_lib/core/contract/syncswap_classic_pool.py +15 -0
- web3_wizzard_lib/core/contract/syncswap_classic_pool_factory.py +15 -0
- web3_wizzard_lib/core/contract/syncswap_pool.py +25 -0
- web3_wizzard_lib/core/contract/syncswap_router.py +123 -0
- web3_wizzard_lib/core/contract/tavaera_id.py +18 -0
- web3_wizzard_lib/core/contract/tavaera_mint.py +17 -0
- web3_wizzard_lib/core/contract/townstory_bonus_contract.py +19 -0
- web3_wizzard_lib/core/contract/townstory_contract.py +21 -0
- web3_wizzard_lib/core/contract/velocore_lens.py +44 -0
- web3_wizzard_lib/core/contract/velocore_pool.py +198 -0
- web3_wizzard_lib/core/contract/velocore_router.py +80 -0
- web3_wizzard_lib/core/contract/woofi_swap.py +29 -0
- web3_wizzard_lib/core/contract/xy_finance_contract.py +87 -0
- web3_wizzard_lib/core/contract/yoddlo_contract.py +19 -0
- web3_wizzard_lib/core/contract/yuliverse_contract.py +36 -0
- web3_wizzard_lib/core/contract/zebra_contract.py +68 -0
- web3_wizzard_lib/core/contract/zerolend_contract.py +34 -0
- web3_wizzard_lib/core/contract/zerolend_liq_contract.py +20 -0
- web3_wizzard_lib/core/contract/zkdx_contract.py +40 -0
- web3_wizzard_lib/core/contract/zkdx_data.py +14 -0
- web3_wizzard_lib/core/contract/zks.py +24 -0
- web3_wizzard_lib/core/modules/__init__.py +0 -0
- web3_wizzard_lib/core/modules/ads_import_proxy.py +52 -0
- web3_wizzard_lib/core/modules/airdrop_printer.py +80 -0
- web3_wizzard_lib/core/modules/bank/__init__.py +0 -0
- web3_wizzard_lib/core/modules/bank/aave.py +25 -0
- web3_wizzard_lib/core/modules/bank/bank.py +15 -0
- web3_wizzard_lib/core/modules/bank/bank_module.py +99 -0
- web3_wizzard_lib/core/modules/bank/basilisk.py +25 -0
- web3_wizzard_lib/core/modules/bank/eralend.py +25 -0
- web3_wizzard_lib/core/modules/bank/layerbank.py +116 -0
- web3_wizzard_lib/core/modules/bank/mendi_finance.py +57 -0
- web3_wizzard_lib/core/modules/bank/reactorfusion.py +25 -0
- web3_wizzard_lib/core/modules/bank/zerolend.py +36 -0
- web3_wizzard_lib/core/modules/bridge/__init__.py +0 -0
- web3_wizzard_lib/core/modules/bridge/bridge.py +8 -0
- web3_wizzard_lib/core/modules/bridge/coredao_bridge_sub.py +47 -0
- web3_wizzard_lib/core/modules/bridge/orbiter_sub.py +112 -0
- web3_wizzard_lib/core/modules/bridge/scroll_bridge_sub.py +42 -0
- web3_wizzard_lib/core/modules/bridge/stargate_v2_sub.py +74 -0
- web3_wizzard_lib/core/modules/bridge_module.py +47 -0
- web3_wizzard_lib/core/modules/bungee.py +109 -0
- web3_wizzard_lib/core/modules/cex_sender.py +60 -0
- web3_wizzard_lib/core/modules/cex_subaccount_transfer.py +34 -0
- web3_wizzard_lib/core/modules/cex_withdraw.py +91 -0
- web3_wizzard_lib/core/modules/claimer.py +45 -0
- web3_wizzard_lib/core/modules/claims/__init__.py +0 -0
- web3_wizzard_lib/core/modules/claims/layerzero_claimer.py +64 -0
- web3_wizzard_lib/core/modules/claims/rabby_claimer.py +81 -0
- web3_wizzard_lib/core/modules/concrete_swap.py +97 -0
- web3_wizzard_lib/core/modules/coredao_bridge.py +32 -0
- web3_wizzard_lib/core/modules/coredao_bridge_auto.py +39 -0
- web3_wizzard_lib/core/modules/debank_checker.py +90 -0
- web3_wizzard_lib/core/modules/dmail.py +54 -0
- web3_wizzard_lib/core/modules/erc20_balance.py +42 -0
- web3_wizzard_lib/core/modules/intract/__init__.py +0 -0
- web3_wizzard_lib/core/modules/intract/intract_api.py +212 -0
- web3_wizzard_lib/core/modules/intract/utils.py +81 -0
- web3_wizzard_lib/core/modules/intract_claim.py +104 -0
- web3_wizzard_lib/core/modules/layer_2_20.py +65 -0
- web3_wizzard_lib/core/modules/lending_module.py +134 -0
- web3_wizzard_lib/core/modules/linea_appeal.py +70 -0
- web3_wizzard_lib/core/modules/linea_poh_lxp.py +64 -0
- web3_wizzard_lib/core/modules/liquidity/__init__.py +0 -0
- web3_wizzard_lib/core/modules/liquidity/nile_pool.py +64 -0
- web3_wizzard_lib/core/modules/liquidity/pool.py +16 -0
- web3_wizzard_lib/core/modules/liquidity/syncswap_pool.py +61 -0
- web3_wizzard_lib/core/modules/liquidity/velocore_pool.py +55 -0
- web3_wizzard_lib/core/modules/liquidity/zerolend_liquidity.py +26 -0
- web3_wizzard_lib/core/modules/liquidity_pool.py +60 -0
- web3_wizzard_lib/core/modules/merkly_refuel.py +87 -0
- web3_wizzard_lib/core/modules/modules.py +27 -0
- web3_wizzard_lib/core/modules/nft/__init__.py +0 -0
- web3_wizzard_lib/core/modules/nft/abbys_world.py +22 -0
- web3_wizzard_lib/core/modules/nft/acg_worlds.py +25 -0
- web3_wizzard_lib/core/modules/nft/alienswap_linea.py +22 -0
- web3_wizzard_lib/core/modules/nft/arena_games.py +22 -0
- web3_wizzard_lib/core/modules/nft/asmatch.py +22 -0
- web3_wizzard_lib/core/modules/nft/battlemon.py +25 -0
- web3_wizzard_lib/core/modules/nft/bilinear.py +22 -0
- web3_wizzard_lib/core/modules/nft/bitavatar.py +25 -0
- web3_wizzard_lib/core/modules/nft/culture_satoshi_universe.py +24 -0
- web3_wizzard_lib/core/modules/nft/efrogs.py +26 -0
- web3_wizzard_lib/core/modules/nft/empty_nft.py +22 -0
- web3_wizzard_lib/core/modules/nft/era_domain.py +42 -0
- web3_wizzard_lib/core/modules/nft/frog_war.py +22 -0
- web3_wizzard_lib/core/modules/nft/frog_war_bonus.py +22 -0
- web3_wizzard_lib/core/modules/nft/gamerboom.py +25 -0
- web3_wizzard_lib/core/modules/nft/gamerboom_bonus.py +26 -0
- web3_wizzard_lib/core/modules/nft/imagine.py +32 -0
- web3_wizzard_lib/core/modules/nft/kreatorland_module.py +35 -0
- web3_wizzard_lib/core/modules/nft/l2_telegraph_module.py +22 -0
- web3_wizzard_lib/core/modules/nft/layer3_meta.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_2_2_linus.py +24 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_2_3_yooldo.py +24 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_2_4_frogwar.py +24 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_2_5_acg.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_2_6_ascend_the_end.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_3_1_ascend_the_end.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_3_2_sending_me.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_3_3_townstory.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_3_4_daniele.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_3_5_demmortal.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_3_6_foxy.py +25 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_4_1_coop_records.py +60 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_4_2_borja_moskv.py +65 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_4_2_borja_moskv_approve.py +27 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_4_3_fruit.py +66 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_4_4_fruit_crux.py +67 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_4_5_forbidden_fruit.py +67 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_4_6_laurent.py +67 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_day2.py +20 -0
- web3_wizzard_lib/core/modules/nft/linea_culture_day3.py +20 -0
- web3_wizzard_lib/core/modules/nft/linea_ens_names.py +107 -0
- web3_wizzard_lib/core/modules/nft/lucky_cat.py +25 -0
- web3_wizzard_lib/core/modules/nft/merkly_minter_module.py +22 -0
- web3_wizzard_lib/core/modules/nft/micro3.py +23 -0
- web3_wizzard_lib/core/modules/nft/mint_2048.py +28 -0
- web3_wizzard_lib/core/modules/nft/nft_submodule.py +16 -0
- web3_wizzard_lib/core/modules/nft/nidum.py +87 -0
- web3_wizzard_lib/core/modules/nft/nidum_bonus.py +23 -0
- web3_wizzard_lib/core/modules/nft/nomis.py +64 -0
- web3_wizzard_lib/core/modules/nft/nomis_attest.py +66 -0
- web3_wizzard_lib/core/modules/nft/nouns.py +27 -0
- web3_wizzard_lib/core/modules/nft/octomos.py +32 -0
- web3_wizzard_lib/core/modules/nft/omnisea.py +33 -0
- web3_wizzard_lib/core/modules/nft/omnizone.py +25 -0
- web3_wizzard_lib/core/modules/nft/orbiter_claim.py +87 -0
- web3_wizzard_lib/core/modules/nft/readon.py +30 -0
- web3_wizzard_lib/core/modules/nft/rubyscore.py +45 -0
- web3_wizzard_lib/core/modules/nft/sarubol.py +22 -0
- web3_wizzard_lib/core/modules/nft/satoshi_universe.py +22 -0
- web3_wizzard_lib/core/modules/nft/scroll_canvas_attest_year_badge.py +35 -0
- web3_wizzard_lib/core/modules/nft/scroll_canvas_mint.py +51 -0
- web3_wizzard_lib/core/modules/nft/sign.py +32 -0
- web3_wizzard_lib/core/modules/nft/snap.py +25 -0
- web3_wizzard_lib/core/modules/nft/snap_bonus.py +31 -0
- web3_wizzard_lib/core/modules/nft/social_scan.py +22 -0
- web3_wizzard_lib/core/modules/nft/sub_module.py +8 -0
- web3_wizzard_lib/core/modules/nft/tavaera.py +30 -0
- web3_wizzard_lib/core/modules/nft/townstory.py +75 -0
- web3_wizzard_lib/core/modules/nft/townstory_bonus.py +45 -0
- web3_wizzard_lib/core/modules/nft/trusta_reputation.py +48 -0
- web3_wizzard_lib/core/modules/nft/trustaa_poh.py +49 -0
- web3_wizzard_lib/core/modules/nft/uber_poh.py +24 -0
- web3_wizzard_lib/core/modules/nft/wizards_of_linea.py +26 -0
- web3_wizzard_lib/core/modules/nft/yoddlo.py +22 -0
- web3_wizzard_lib/core/modules/nft/yuliverse.py +22 -0
- web3_wizzard_lib/core/modules/nft/zace.py +25 -0
- web3_wizzard_lib/core/modules/nft/zks_domain.py +41 -0
- web3_wizzard_lib/core/modules/nft_minter.py +107 -0
- web3_wizzard_lib/core/modules/orbiter.py +39 -0
- web3_wizzard_lib/core/modules/orbiter_checker.py +26 -0
- web3_wizzard_lib/core/modules/rage.py +54 -0
- web3_wizzard_lib/core/modules/scroll_bridge.py +45 -0
- web3_wizzard_lib/core/modules/sell_all.py +51 -0
- web3_wizzard_lib/core/modules/sleep_module.py +25 -0
- web3_wizzard_lib/core/modules/smart_contract_deployment.py +37 -0
- web3_wizzard_lib/core/modules/stargate/__init__.py +0 -0
- web3_wizzard_lib/core/modules/stargate/auto_bridge.py +91 -0
- web3_wizzard_lib/core/modules/stargate/bridge.py +38 -0
- web3_wizzard_lib/core/modules/stargate/bridge_eth.py +59 -0
- web3_wizzard_lib/core/modules/stargate/bridge_tokens.py +48 -0
- web3_wizzard_lib/core/modules/stargate/classic_bridge.py +34 -0
- web3_wizzard_lib/core/modules/stargate/farming.py +163 -0
- web3_wizzard_lib/core/modules/stargate/l0_data.py +10 -0
- web3_wizzard_lib/core/modules/stargate/pool.py +74 -0
- web3_wizzard_lib/core/modules/stargate/stargate_balance_utils.py +25 -0
- web3_wizzard_lib/core/modules/stargate/stargate_gas_checker.py +68 -0
- web3_wizzard_lib/core/modules/swap/__init__.py +1 -0
- web3_wizzard_lib/core/modules/swap/horizondex.py +38 -0
- web3_wizzard_lib/core/modules/swap/izumi.py +41 -0
- web3_wizzard_lib/core/modules/swap/lineaswap.py +34 -0
- web3_wizzard_lib/core/modules/swap/maverick.py +66 -0
- web3_wizzard_lib/core/modules/swap/mute.py +39 -0
- web3_wizzard_lib/core/modules/swap/odos.py +58 -0
- web3_wizzard_lib/core/modules/swap/one_inch.py +58 -0
- web3_wizzard_lib/core/modules/swap/pancake.py +41 -0
- web3_wizzard_lib/core/modules/swap/swap_facade.py +10 -0
- web3_wizzard_lib/core/modules/swap/swap_list.py +10 -0
- web3_wizzard_lib/core/modules/swap/syncswap.py +62 -0
- web3_wizzard_lib/core/modules/swap/velocore.py +40 -0
- web3_wizzard_lib/core/modules/swap/woofi.py +38 -0
- web3_wizzard_lib/core/modules/swap/xy_finance.py +43 -0
- web3_wizzard_lib/core/modules/swap/zebra.py +32 -0
- web3_wizzard_lib/core/modules/warm_up.py +98 -0
- web3_wizzard_lib/core/modules/wrapping.py +74 -0
- web3_wizzard_lib/core/modules/zkdx.py +63 -0
- web3_wizzard_lib/core/utils/__init__.py +0 -0
- web3_wizzard_lib/core/utils/sub_module.py +8 -0
- web3_wizzard_lib/launcher.py +39 -0
- web3_wizzard_lib-0.0.2.data/data/requirements.txt +1 -0
- web3_wizzard_lib-0.0.2.dist-info/METADATA +10 -0
- web3_wizzard_lib-0.0.2.dist-info/RECORD +547 -0
- web3_wizzard_lib-0.0.2.dist-info/WHEEL +5 -0
- web3_wizzard_lib-0.0.2.dist-info/top_level.txt +3 -0
@@ -0,0 +1,134 @@
|
|
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.domain.balance.balance import NativeBalance
|
7
|
+
from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance, from_eth_to_wei, verify_balance
|
8
|
+
from sybil_engine.module.module import Order, RepeatableModule
|
9
|
+
from sybil_engine.utils.app_account_utils import AppAccount
|
10
|
+
from sybil_engine.utils.utils import ConfigurationException, interval_to_round
|
11
|
+
from sybil_engine.utils.validation_utils import validate_amount_interval, validate_interval
|
12
|
+
from sybil_engine.utils.web3_utils import init_web3
|
13
|
+
|
14
|
+
from web3_wizzard_lib.core.contract.basiliskcontract import BasiliskContract
|
15
|
+
from web3_wizzard_lib.core.contract.eralendcontract import EraLendContract
|
16
|
+
from web3_wizzard_lib.core.contract.reactor_fusion_contract import ReactorFusionContract
|
17
|
+
from web3_wizzard_lib.core.modules.bank.layerbank import LayerBank
|
18
|
+
from web3_wizzard_lib.core.modules.bank.aave import Aave
|
19
|
+
|
20
|
+
|
21
|
+
class Lending(RepeatableModule):
|
22
|
+
module_name = 'LENDING'
|
23
|
+
module_config = 'lending_config'
|
24
|
+
random_order = Order.RANDOM
|
25
|
+
|
26
|
+
@RepeatableModule.repeatable_log
|
27
|
+
def execute(self, lending_apps, amount: float, action: str, withdraw_sleep_interval: dict, chain,
|
28
|
+
account: AppAccount):
|
29
|
+
chain_instance = get_chain_instance(chain)
|
30
|
+
web3 = init_web3(chain_instance, account.proxy)
|
31
|
+
|
32
|
+
lending_app_name = random.choice(lending_apps)
|
33
|
+
lending_app = self.get_lending_app(lending_app_name, chain, web3)
|
34
|
+
|
35
|
+
verify_balance(self.min_native_balance, chain_instance, account, web3)
|
36
|
+
|
37
|
+
if action == 'DEPOSIT':
|
38
|
+
self.deposit(account, amount, lending_app, lending_app_name, chain, web3)
|
39
|
+
elif action == 'WITHDRAW':
|
40
|
+
self.withdraw(account, amount, chain, lending_app, lending_app_name)
|
41
|
+
elif action == 'WITHDRAW_ALL':
|
42
|
+
for app_name, app in self.lending_apps_with_deposit(account, chain, web3):
|
43
|
+
self.withdraw(account, amount, chain, app, app_name)
|
44
|
+
else:
|
45
|
+
raise ConfigurationException("Unsupported action")
|
46
|
+
|
47
|
+
def deposit(self, account, amount, lending_app, lending_app_name, chain, web3):
|
48
|
+
amount_balance = interval_to_eth_balance(amount, account, chain, web3)
|
49
|
+
|
50
|
+
if amount == 'all_balance':
|
51
|
+
amount_balance = amount_balance.minus(self.min_native_balance)
|
52
|
+
|
53
|
+
logger.info(f"Make deposit on {lending_app_name} | {amount_balance}")
|
54
|
+
|
55
|
+
lending_app.mint(account, amount_balance.wei)
|
56
|
+
|
57
|
+
def withdraw(self, account, amount, chain, lending_app, lending_app_name):
|
58
|
+
deposit_balance = NativeBalance(lending_app.get_deposit_amount(account), chain, 'ETH')
|
59
|
+
|
60
|
+
if deposit_balance.wei < 1000000000000:
|
61
|
+
raise EmptyDepositException(f"[{account.address}] Deposit balance is 0, skip")
|
62
|
+
|
63
|
+
logger.info(f"Deposit balance: {deposit_balance}")
|
64
|
+
|
65
|
+
if amount == 'all_balance':
|
66
|
+
withdraw_wei = deposit_balance.wei
|
67
|
+
else:
|
68
|
+
balance = NativeBalance(from_eth_to_wei(interval_to_round(amount)), chain, 'ETH')
|
69
|
+
amount_balance = NativeBalance(int(balance.wei // 10000) * 10000, chain, balance.token)
|
70
|
+
withdraw_wei = amount_balance.wei
|
71
|
+
|
72
|
+
if deposit_balance.wei < withdraw_wei:
|
73
|
+
logger.info(
|
74
|
+
f"Deposit {deposit_balance} < withdraw amount {amount_balance}"
|
75
|
+
f", withdrawing all deposit")
|
76
|
+
withdraw_wei = deposit_balance.wei
|
77
|
+
|
78
|
+
logger.info(f"Withdraw from {lending_app_name} | {deposit_balance}")
|
79
|
+
|
80
|
+
lending_app.redeem_underlying(account, withdraw_wei)
|
81
|
+
|
82
|
+
def get_lending_app(self, lending_app, chain, web3):
|
83
|
+
lending_apps = self.get_lending_apps(chain, web3)
|
84
|
+
|
85
|
+
if lending_app not in lending_apps.keys():
|
86
|
+
raise ConfigurationException(f"{lending_app} not supported in {chain}. Supported lending: {list(lending_apps.keys())} supported")
|
87
|
+
|
88
|
+
return lending_apps[lending_app]
|
89
|
+
|
90
|
+
def get_lending_apps(self, chain, web3):
|
91
|
+
contracts = get_contracts_for_chain(chain)
|
92
|
+
|
93
|
+
apps = {
|
94
|
+
'BASILISK_LANDING': BasiliskContract,
|
95
|
+
'REACTORFUSION_LANDING': ReactorFusionContract,
|
96
|
+
'ERALEND': EraLendContract,
|
97
|
+
'AAVE': Aave,
|
98
|
+
'LAYERBANK': LayerBank
|
99
|
+
}
|
100
|
+
|
101
|
+
return {k: v(contracts[k], web3) for k, v in apps.items() if k in contracts}
|
102
|
+
|
103
|
+
def lending_apps_with_deposit(self, account, chain, web3):
|
104
|
+
with_deposit = []
|
105
|
+
|
106
|
+
for lending_app_name, lending_app in self.get_lending_apps(chain, web3).items():
|
107
|
+
if lending_app.get_deposit_amount(account) > 1000000000000:
|
108
|
+
with_deposit.append((lending_app_name, lending_app))
|
109
|
+
|
110
|
+
return with_deposit
|
111
|
+
|
112
|
+
def log(self):
|
113
|
+
return "LENDING"
|
114
|
+
|
115
|
+
def parse_params(self, module_params):
|
116
|
+
validate_amount_interval(module_params['amount'])
|
117
|
+
validate_interval(module_params['withdraw_sleep_interval'])
|
118
|
+
|
119
|
+
if 'chain' not in module_params:
|
120
|
+
module_params['chain'] = 'ZKSYNC'
|
121
|
+
|
122
|
+
return [
|
123
|
+
module_params['lending_apps'],
|
124
|
+
module_params['amount'],
|
125
|
+
module_params['action'],
|
126
|
+
module_params['withdraw_sleep_interval'],
|
127
|
+
module_params['chain']
|
128
|
+
]
|
129
|
+
|
130
|
+
|
131
|
+
class EmptyDepositException(Exception):
|
132
|
+
def __init__(self, message):
|
133
|
+
self.message = message
|
134
|
+
super().__init__(self.message)
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import webbrowser
|
2
|
+
|
3
|
+
from loguru import logger
|
4
|
+
from sybil_engine.module.module import Module
|
5
|
+
import requests
|
6
|
+
|
7
|
+
|
8
|
+
class LineaAppeal(Module):
|
9
|
+
module_name = 'LINEA_APPEAL'
|
10
|
+
module_config = None
|
11
|
+
|
12
|
+
# with open("resources/linea_appeal.txt") as f:
|
13
|
+
# linea_appeal_reason = f.read()
|
14
|
+
|
15
|
+
linea_appeal_reason = """
|
16
|
+
Меня проект Linea забанили акки и пометили как сибила. Планирую писать апелляции с указанием причин почему я не сибил.
|
17
|
+
Вот список аргументов:
|
18
|
+
1. Получал дроп LayerZero.
|
19
|
+
2. Получал дроп ZKsync
|
20
|
+
3. Получал дроп ODOS
|
21
|
+
4. Был активен в более чем 10 сетях
|
22
|
+
5. Потратил 60-100$ на кампании Линея начиная от Defi Voyage
|
23
|
+
6. Прошел POH
|
24
|
+
7. Получил дроп Scroll
|
25
|
+
8. Обьем торгов по аккаунту более 100 тыс$. Возьми составь аргументации для 10 аккаунтов,
|
26
|
+
выбрав рандомно от 5 до 8 из этих причин для разбана. Все на англ.
|
27
|
+
"""
|
28
|
+
|
29
|
+
def execute(self, account, chain="LINEA", statistic_write="GOOGLE"):
|
30
|
+
base_url = "https://docs.google.com/forms/d/e/1FAIpQLSfkbHzC1hZTy6u5R8S5i6wQ2xCyUZQjvucmlyChwg04fJIO5Q/viewform"
|
31
|
+
|
32
|
+
reason = self.get_reason()
|
33
|
+
|
34
|
+
logger.info(reason)
|
35
|
+
|
36
|
+
payload = {
|
37
|
+
"entry.1292139045": account.address,
|
38
|
+
"entry.1099559693": "",
|
39
|
+
"entry.1296389817": reason['choices'][0]['message']['content']
|
40
|
+
# Add other entries based on the form's structure
|
41
|
+
}
|
42
|
+
|
43
|
+
# Build the pre-filled URL
|
44
|
+
query_string = "&".join(f"{key}={value}" for key, value in payload.items())
|
45
|
+
pre_filled_url = f"{base_url}?{query_string}"
|
46
|
+
|
47
|
+
# Open the pre-filled form in the default web browser
|
48
|
+
print(f"Opening form: {pre_filled_url}")
|
49
|
+
webbrowser.open(pre_filled_url)
|
50
|
+
|
51
|
+
def get_reason(self):
|
52
|
+
# logger.info(self.linea_appeal_reason)
|
53
|
+
reason = self.get_chat_gpt(self.linea_appeal_reason)
|
54
|
+
return reason
|
55
|
+
|
56
|
+
def get_chat_gpt(self, linea_appeal_reason):
|
57
|
+
url = "https://api.openai.com/v1/chat/completions"
|
58
|
+
headers = {
|
59
|
+
"Content-Type": "application/json",
|
60
|
+
"Authorization": f"Bearer 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"
|
61
|
+
}
|
62
|
+
data = {
|
63
|
+
"model": "gpt-4o-mini",
|
64
|
+
"messages": [{"role": "user", "content": linea_appeal_reason}],
|
65
|
+
"temperature": 0.7
|
66
|
+
}
|
67
|
+
|
68
|
+
response = requests.post(url, headers=headers, json=data)
|
69
|
+
|
70
|
+
return response.json()
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import requests
|
2
|
+
from loguru import logger
|
3
|
+
from sybil_engine.data.networks import get_chain_instance
|
4
|
+
from sybil_engine.domain.balance.balance import Erc20Balance
|
5
|
+
from sybil_engine.domain.balance.tokens import Erc20Token
|
6
|
+
from sybil_engine.module.module import Module
|
7
|
+
from sybil_engine.utils.accumulator import add_accumulator_balance, add_accumulator, get_value
|
8
|
+
from sybil_engine.utils.statistic_utils import statistic_date_string, get_statistic_writer
|
9
|
+
from sybil_engine.utils.web3_utils import init_web3
|
10
|
+
|
11
|
+
|
12
|
+
class LineaPOHLXP(Module):
|
13
|
+
module_name = 'LINEA_POH_LXP'
|
14
|
+
module_config = None
|
15
|
+
|
16
|
+
lxp_contract = "0xd83af4fbD77f3AB65C3B1Dc4B38D7e67AEcf599A"
|
17
|
+
|
18
|
+
def execute(self, account, chain="LINEA", statistic_write="GOOGLE"):
|
19
|
+
poh = self.linea_poh_passed(account)
|
20
|
+
|
21
|
+
chain_instance = get_chain_instance(chain)
|
22
|
+
web3 = init_web3(chain_instance, account.proxy)
|
23
|
+
erc20_token = Erc20Token(chain, self.lxp_contract, web3)
|
24
|
+
balance = erc20_token.balance(account)
|
25
|
+
|
26
|
+
logger.info(f"{account.address} balance is {balance}")
|
27
|
+
job_name = f"lxp_{statistic_date_string}"
|
28
|
+
statistics_writer = get_statistic_writer()
|
29
|
+
|
30
|
+
statistics_writer.init_if_required(
|
31
|
+
job_name,
|
32
|
+
['#', 'Address', 'rLXP', 'POH', 'LXP', 'Remark']
|
33
|
+
)
|
34
|
+
|
35
|
+
if poh:
|
36
|
+
rLXP = balance
|
37
|
+
add_accumulator_balance("Total rLXP", rLXP.wei)
|
38
|
+
else:
|
39
|
+
rLXP = Erc20Balance(0, 'LINEA', "LXP")
|
40
|
+
|
41
|
+
add_accumulator_balance("Total LXP", balance.wei)
|
42
|
+
add_accumulator("Acc Num", 1)
|
43
|
+
|
44
|
+
row = [account.app_id, account.address, float(rLXP.readable()), poh, float(balance.readable()), ""]
|
45
|
+
statistics_writer.write_row(job_name, row)
|
46
|
+
|
47
|
+
if get_value("Acc Num") == get_value("Acc Amount"):
|
48
|
+
row = [
|
49
|
+
"TOTAL",
|
50
|
+
"",
|
51
|
+
float(get_value("Total rLXP").readable() / 10 ** 12),
|
52
|
+
"",
|
53
|
+
float(get_value("Total LXP").readable() / 10 ** 12),
|
54
|
+
""
|
55
|
+
]
|
56
|
+
|
57
|
+
statistics_writer.write_row(job_name, row)
|
58
|
+
|
59
|
+
def linea_poh_passed(self, account):
|
60
|
+
result = requests.get(f"https://linea-xp-poh-api.linea.build/poh/{account.address}").json()
|
61
|
+
return result["poh"]
|
62
|
+
|
63
|
+
def log(self):
|
64
|
+
return "LINEA POH LXP"
|
File without changes
|
@@ -0,0 +1,64 @@
|
|
1
|
+
from loguru import logger
|
2
|
+
from sybil_engine.data.tokens import get_tokens_for_chain
|
3
|
+
from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance
|
4
|
+
from sybil_engine.domain.balance.tokens import Erc20Token
|
5
|
+
from sybil_engine.utils.retry import retry
|
6
|
+
|
7
|
+
from web3_wizzard_lib.core.contract.nile_contract import NileContract
|
8
|
+
from web3_wizzard_lib.core.modules.liquidity.pool import Pool
|
9
|
+
|
10
|
+
|
11
|
+
class NilePool(Pool):
|
12
|
+
pool_contract = 'NILE_POOL'
|
13
|
+
|
14
|
+
def __init__(self, chain_instance, web3):
|
15
|
+
super().__init__(chain_instance, web3)
|
16
|
+
self.nile_contract = NileContract(self.velocore_pool_contract_address, self.web3)
|
17
|
+
|
18
|
+
@retry(max_attempts=10, retry_interval={'from': 10, 'to': 20})
|
19
|
+
def deposit(self, amount_interval, account, token, min_native_balance, chain):
|
20
|
+
amount = interval_to_eth_balance(amount_interval, account, chain, self.web3)
|
21
|
+
|
22
|
+
pool_amount = self.nile_contract.get_amount_out(
|
23
|
+
amount,
|
24
|
+
get_tokens_for_chain(chain)['WETH'],
|
25
|
+
get_tokens_for_chain(chain)[token]
|
26
|
+
)[0]
|
27
|
+
|
28
|
+
nile_token = Erc20Token(chain, token, self.web3)
|
29
|
+
|
30
|
+
if nile_token.allowance(account, self.nile_contract.contract_address) < nile_token.balance(account).wei:
|
31
|
+
nile_token.approve(account, self.nile_contract.contract_address)
|
32
|
+
|
33
|
+
logger.info(f"Deposit {amount} and {nile_token.balance(account)}")
|
34
|
+
self.nile_contract.add_liquidity_eth(account, nile_token.erc20_contract.contract_address, pool_amount, amount)
|
35
|
+
|
36
|
+
@retry(max_attempts=10, retry_interval={'from': 10, 'to': 20})
|
37
|
+
def withdraw(self, account, token, chain):
|
38
|
+
weth_zero_address = get_tokens_for_chain(chain)[f"WETH_{token}_LP"]
|
39
|
+
|
40
|
+
weth_zero = Erc20Token(chain, weth_zero_address, self.web3)
|
41
|
+
|
42
|
+
if weth_zero.balance(account).wei < 10000:
|
43
|
+
logger.info("NILE almost zero balance")
|
44
|
+
|
45
|
+
zero_token_address = get_tokens_for_chain(chain)[token]
|
46
|
+
|
47
|
+
amount = self.nile_contract.quote_remove_liquidity_eth(
|
48
|
+
get_tokens_for_chain(chain)['WETH'],
|
49
|
+
get_tokens_for_chain(chain)[token],
|
50
|
+
weth_zero.balance(account).wei
|
51
|
+
)
|
52
|
+
|
53
|
+
if weth_zero.allowance(account, self.nile_contract.contract_address) < weth_zero.balance(account).wei:
|
54
|
+
weth_zero.approve(account, self.nile_contract.contract_address)
|
55
|
+
|
56
|
+
logger.info(f"Withdraw {token} on NILE {weth_zero.balance(account)}")
|
57
|
+
|
58
|
+
self.nile_contract.remove_liquidity_eth(
|
59
|
+
account,
|
60
|
+
zero_token_address,
|
61
|
+
weth_zero.balance(account).wei,
|
62
|
+
amount[0],
|
63
|
+
amount[1]
|
64
|
+
)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
from sybil_engine.data.contracts import get_contracts_for_chain
|
2
|
+
|
3
|
+
|
4
|
+
class Pool:
|
5
|
+
pool_contract = ''
|
6
|
+
|
7
|
+
def __init__(self, chain_instance, web3):
|
8
|
+
self.chain_contracts = get_contracts_for_chain(chain_instance['chain'])
|
9
|
+
self.velocore_pool_contract_address = self.chain_contracts[self.pool_contract]
|
10
|
+
self.web3 = web3
|
11
|
+
|
12
|
+
def deposit(self, amount_interval, account, token, min_native_balance, chain):
|
13
|
+
pass
|
14
|
+
|
15
|
+
def withdraw(self, account, token, chain):
|
16
|
+
pass
|
@@ -0,0 +1,61 @@
|
|
1
|
+
from loguru import logger
|
2
|
+
from sybil_engine.data.contracts import get_contracts_for_chain
|
3
|
+
from sybil_engine.data.tokens import get_tokens_for_chain
|
4
|
+
from sybil_engine.domain.balance.balance import NativeBalance
|
5
|
+
from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance
|
6
|
+
from sybil_engine.domain.balance.tokens import Erc20Token
|
7
|
+
|
8
|
+
from web3_wizzard_lib.core.contract.syncswap_pool import SyncSwapPoolContract
|
9
|
+
from web3_wizzard_lib.core.contract.syncswap_classic_pool import SyncSwapClassicPool
|
10
|
+
from web3_wizzard_lib.core.contract.syncswap_router import SyncSwapRouter
|
11
|
+
from web3_wizzard_lib.core.modules.liquidity.pool import Pool
|
12
|
+
|
13
|
+
|
14
|
+
class SyncswapPool(Pool):
|
15
|
+
module_name = 'SYNCSWAP_LIQUIDITY'
|
16
|
+
pool_contract = 'SYNCSWAP'
|
17
|
+
|
18
|
+
def __init__(self, chain_instance, web3):
|
19
|
+
super().__init__(chain_instance, web3)
|
20
|
+
self.syncswap_router = SyncSwapRouter(self.velocore_pool_contract_address, self.web3)
|
21
|
+
|
22
|
+
def deposit(self, amount_interval, account, token, min_native_balance, chain):
|
23
|
+
amount = interval_to_eth_balance(amount_interval, account, chain, self.web3)
|
24
|
+
|
25
|
+
pool = self.get_pool(chain)
|
26
|
+
pool_amount = self.get_pool_amount(account, chain, pool)
|
27
|
+
|
28
|
+
if pool_amount.wei < 10000000000:
|
29
|
+
logger.info(f"Deposit {amount}")
|
30
|
+
self.syncswap_router.add_liquidity2(account, amount)
|
31
|
+
else:
|
32
|
+
logger.info("This account already has deposit, skip")
|
33
|
+
|
34
|
+
def withdraw(self, account, token, chain):
|
35
|
+
pool = self.get_pool(chain)
|
36
|
+
pool_amount = self.get_pool_amount(account, chain, pool)
|
37
|
+
|
38
|
+
if pool_amount.wei < 10000000000:
|
39
|
+
logger.info(f"Withdraw amount is to small")
|
40
|
+
return
|
41
|
+
|
42
|
+
erc20_token = Erc20Token(chain, pool, self.web3)
|
43
|
+
|
44
|
+
if erc20_token.allowance(account, self.syncswap_router.contract_address) < pool_amount.wei:
|
45
|
+
erc20_token.approve(account, self.syncswap_router.contract_address)
|
46
|
+
|
47
|
+
print(erc20_token.balance(account).wei)
|
48
|
+
|
49
|
+
logger.info(f"Withdraw {pool_amount}")
|
50
|
+
self.syncswap_router.burn_liquidity(account, pool, pool_amount)
|
51
|
+
|
52
|
+
def get_pool_amount(self, account, chain, pool):
|
53
|
+
return NativeBalance(
|
54
|
+
SyncSwapPoolContract(pool, self.web3).balanceOf(account),
|
55
|
+
chain,
|
56
|
+
'ETH'
|
57
|
+
)
|
58
|
+
|
59
|
+
def get_pool(self, chain):
|
60
|
+
syncswap_classic_pool = SyncSwapClassicPool(get_contracts_for_chain(chain)["SYNCSWAP_CLASSIC_POOL_FACTORY"], self.web3)
|
61
|
+
return syncswap_classic_pool.get_pool(get_tokens_for_chain(chain)['ETH'], get_tokens_for_chain(chain)['USDC'])
|
@@ -0,0 +1,55 @@
|
|
1
|
+
from loguru import logger
|
2
|
+
from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance, interval_to_erc20_balance
|
3
|
+
from sybil_engine.domain.balance.tokens import Erc20Token
|
4
|
+
|
5
|
+
from web3_wizzard_lib.core.contract.velocore_lens import VelocoreLensContract
|
6
|
+
from web3_wizzard_lib.core.contract.velocore_pool import VelocorePoolContract
|
7
|
+
from web3_wizzard_lib.core.modules.liquidity.pool import Pool
|
8
|
+
|
9
|
+
|
10
|
+
class VelocorePool(Pool):
|
11
|
+
module_name = 'VELOCORE_LIQUIDITY'
|
12
|
+
pool_contract = 'VELOCORE_POOL'
|
13
|
+
pool_lens_contract = 'VELOCORE_LENS'
|
14
|
+
|
15
|
+
def __init__(self, chain_instance, web3):
|
16
|
+
super().__init__(chain_instance, web3)
|
17
|
+
self.chain_instance = chain_instance
|
18
|
+
self.velocore_pool = VelocorePoolContract(self.velocore_pool_contract_address, self.web3)
|
19
|
+
self.velocore_lens = VelocoreLensContract('0xaA18cDb16a4DD88a59f4c2f45b5c91d009549e06', self.web3)
|
20
|
+
|
21
|
+
def deposit(self, amount_interval, account, token, min_native_balance, chain):
|
22
|
+
if token == 'ETH':
|
23
|
+
amount = interval_to_eth_balance(amount_interval, account, chain, self.web3)
|
24
|
+
|
25
|
+
if amount_interval == 'all_balance':
|
26
|
+
amount = amount.minus(min_native_balance)
|
27
|
+
else:
|
28
|
+
amount = interval_to_erc20_balance(amount_interval, account, token, chain, self.web3)
|
29
|
+
|
30
|
+
erc20_token = Erc20Token(self.chain_instance['chain'], "wstETH", self.web3)
|
31
|
+
|
32
|
+
if erc20_token.allowance(account, self.velocore_pool.contract_address) < amount.wei:
|
33
|
+
erc20_token.approve(account, self.velocore_pool.contract_address)
|
34
|
+
|
35
|
+
pool_address = '0x2BD146e7d95cea62C89fcCA8E529e06EEc1b053C'
|
36
|
+
|
37
|
+
logger.info(f"Deposit {amount}")
|
38
|
+
|
39
|
+
self.velocore_pool.deposit(account, int(amount.wei * 0.99), token, pool_address)
|
40
|
+
|
41
|
+
def withdraw(self, account, token, chain):
|
42
|
+
pool_address = '0x2BD146e7d95cea62C89fcCA8E529e06EEc1b053C'
|
43
|
+
|
44
|
+
gauge = self.velocore_lens.query_gauge(pool_address, account)
|
45
|
+
|
46
|
+
usdc_eth_vlp = gauge[14]
|
47
|
+
eth = gauge[9]
|
48
|
+
|
49
|
+
logger.info(f"Withdraw {eth / 10 ** 18} ETH")
|
50
|
+
|
51
|
+
if eth / 10 ** 18 < 0.0005:
|
52
|
+
logger.info("Withdraw amount less than 0.0005, skip")
|
53
|
+
return
|
54
|
+
|
55
|
+
self.velocore_pool.withdraw(account, eth, usdc_eth_vlp, pool_address)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from sybil_engine.data.contracts import get_contracts_for_chain
|
2
|
+
from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance
|
3
|
+
from sybil_engine.domain.balance.tokens import Erc20Token
|
4
|
+
from sybil_engine.utils.retry import retry
|
5
|
+
|
6
|
+
from web3_wizzard_lib.core.contract.zerolend_liq_contract import ZeroLendLiqContract
|
7
|
+
from web3_wizzard_lib.core.modules.liquidity.pool import Pool
|
8
|
+
|
9
|
+
|
10
|
+
class ZeroLendLiquidity(Pool):
|
11
|
+
module_name = 'ZEROLEND_LIQUIDITY'
|
12
|
+
pool_contract = 'ZEROLEND'
|
13
|
+
|
14
|
+
@retry(max_attempts=5, retry_interval={'from': 15 * 1, 'to': 30 * 1})
|
15
|
+
def deposit(self, amount_interval, account, deposit_token, min_native_balance, chain):
|
16
|
+
contract = ZeroLendLiqContract(get_contracts_for_chain(chain)['ZEROLEND'], self.web3)
|
17
|
+
|
18
|
+
zerolend_token = Erc20Token(chain, deposit_token, self.web3)
|
19
|
+
|
20
|
+
amount = interval_to_eth_balance(amount_interval, account, chain, self.web3)
|
21
|
+
|
22
|
+
if zerolend_token.allowance(account, contract.contract_address) < zerolend_token.balance(account).wei:
|
23
|
+
zerolend_token.approve(account, contract.contract_address)
|
24
|
+
|
25
|
+
contract.create_lock(account, amount)
|
26
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
from venv import logger
|
2
|
+
|
3
|
+
from sybil_engine.data.networks import get_chain_instance
|
4
|
+
from sybil_engine.module.module import Module
|
5
|
+
from sybil_engine.utils.app_account_utils import AppAccount
|
6
|
+
from sybil_engine.utils.validation_utils import validate_amount_interval
|
7
|
+
from sybil_engine.utils.web3_utils import init_web3
|
8
|
+
|
9
|
+
from web3_wizzard_lib.core.modules.liquidity.syncswap_pool import SyncswapPool
|
10
|
+
from web3_wizzard_lib.core.modules.liquidity.velocore_pool import VelocorePool
|
11
|
+
from web3_wizzard_lib.core.modules.liquidity.nile_pool import NilePool
|
12
|
+
from web3_wizzard_lib.core.modules.liquidity.zerolend_liquidity import ZeroLendLiquidity
|
13
|
+
|
14
|
+
|
15
|
+
class LiquidityPool(Module):
|
16
|
+
module_name = 'LIQUIDITY_POOL'
|
17
|
+
module_config = 'liquidity_pool'
|
18
|
+
|
19
|
+
def execute(self, action, amount_interval, token, dex, chain, account: AppAccount):
|
20
|
+
chain_instance = get_chain_instance(chain)
|
21
|
+
web3 = init_web3(chain_instance, account.proxy)
|
22
|
+
|
23
|
+
if dex == 'syncswap':
|
24
|
+
pool = SyncswapPool(chain_instance, web3)
|
25
|
+
elif dex == 'velocore':
|
26
|
+
pool = VelocorePool(chain_instance, web3)
|
27
|
+
elif dex == 'nile':
|
28
|
+
pool = NilePool(chain_instance, web3)
|
29
|
+
elif dex == 'zerolend':
|
30
|
+
pool = ZeroLendLiquidity(chain_instance, web3)
|
31
|
+
else:
|
32
|
+
raise Exception(f" {dex} Not supported")
|
33
|
+
|
34
|
+
if action == 'DEPOSIT':
|
35
|
+
logger.info(f"Deposit {token} to {dex}")
|
36
|
+
pool.deposit(amount_interval, account, token, self.min_native_balance, chain)
|
37
|
+
elif action == 'WITHDRAW':
|
38
|
+
pool.withdraw(account, token, chain)
|
39
|
+
else:
|
40
|
+
raise Exception(f"{action} action not supported")
|
41
|
+
|
42
|
+
def log(self):
|
43
|
+
return "LIQUIDITY_POOL"
|
44
|
+
|
45
|
+
def parse_params(self, module_params):
|
46
|
+
validate_amount_interval(module_params['amount'])
|
47
|
+
|
48
|
+
return [
|
49
|
+
module_params['action'],
|
50
|
+
module_params['amount'],
|
51
|
+
module_params['token'],
|
52
|
+
module_params['dex'],
|
53
|
+
module_params['chain']
|
54
|
+
]
|
55
|
+
|
56
|
+
|
57
|
+
class EmptyDepositException(Exception):
|
58
|
+
def __init__(self, message):
|
59
|
+
self.message = message
|
60
|
+
super().__init__(self.message)
|
@@ -0,0 +1,87 @@
|
|
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.domain.balance.balance_utils import interval_to_eth_balance, verify_balance, from_wei_to_eth
|
7
|
+
from sybil_engine.module.module import Module
|
8
|
+
from sybil_engine.utils.utils import ConfigurationException, randomized_sleeping, print_exception_chain
|
9
|
+
from sybil_engine.utils.validation_utils import validate_chain, validate_refuel_interval
|
10
|
+
from sybil_engine.utils.web3_utils import init_web3
|
11
|
+
|
12
|
+
from web3_wizzard_lib.core.contract.merkly_minter import MerklyMinter
|
13
|
+
from web3_wizzard_lib.core.modules.stargate.l0_data import l0_chain_ids
|
14
|
+
|
15
|
+
|
16
|
+
class MerklyRefuel(Module):
|
17
|
+
module_name = 'MERKLY_REFUEL'
|
18
|
+
module_config = 'merkly_refuel_config'
|
19
|
+
|
20
|
+
def execute(self, start_chain, end_chain, chains, refuel_amount_interval, sleeping_interval, account):
|
21
|
+
from_chain_instance = get_chain_instance(start_chain)
|
22
|
+
web3 = init_web3(from_chain_instance, account.proxy)
|
23
|
+
|
24
|
+
if start_chain not in chains or end_chain not in chains:
|
25
|
+
raise ConfigurationException(f"'end_chain' and 'start_start' should be in 'chains'. Actual:"
|
26
|
+
f"start_chain: {start_chain} end_chain: {end_chain} chains: {chains}"
|
27
|
+
)
|
28
|
+
|
29
|
+
merkly_contract = get_contracts_for_chain(start_chain)['MERKLY']
|
30
|
+
merkly = MerklyMinter(merkly_contract, web3)
|
31
|
+
|
32
|
+
self.shuffle_chain_sequence(start_chain, end_chain, chains)
|
33
|
+
|
34
|
+
logger.info(f"Refuel chain sequence: {chains}")
|
35
|
+
|
36
|
+
for current_chain, next_chain in zip(chains, chains[1:]):
|
37
|
+
native_without_min = verify_balance(self.min_native_balance, from_chain_instance, account, web3)
|
38
|
+
|
39
|
+
amount = interval_to_eth_balance(refuel_amount_interval, account, start_chain, web3)
|
40
|
+
|
41
|
+
if amount.wei > native_without_min.wei:
|
42
|
+
amount = native_without_min
|
43
|
+
|
44
|
+
logger.info(f"Refuel {current_chain} > {next_chain} | {amount}")
|
45
|
+
|
46
|
+
hex_amount = merkly.decimal_to_hex_padded(amount.wei)
|
47
|
+
|
48
|
+
try:
|
49
|
+
fee = merkly.estimate_send_fee(account, l0_chain_ids[next_chain], hex_amount)
|
50
|
+
logger.info(f"L0 Fee: {from_wei_to_eth(fee)} ETH")
|
51
|
+
|
52
|
+
merkly.refuel(account, l0_chain_ids[next_chain], amount.wei, fee)
|
53
|
+
randomized_sleeping(sleeping_interval)
|
54
|
+
except Exception as e:
|
55
|
+
print_exception_chain(e)
|
56
|
+
|
57
|
+
def shuffle_chain_sequence(self, start_chain, end_chain, chain_sequence):
|
58
|
+
if start_chain != '':
|
59
|
+
chain_sequence.remove(start_chain)
|
60
|
+
|
61
|
+
if end_chain != '' and end_chain in chain_sequence:
|
62
|
+
chain_sequence.remove(end_chain)
|
63
|
+
|
64
|
+
random.shuffle(chain_sequence)
|
65
|
+
|
66
|
+
if start_chain != '':
|
67
|
+
chain_sequence.insert(0, start_chain)
|
68
|
+
|
69
|
+
if end_chain != '':
|
70
|
+
chain_sequence.append(end_chain)
|
71
|
+
|
72
|
+
return chain_sequence
|
73
|
+
|
74
|
+
def log(self):
|
75
|
+
return "MERKLY REFUEL"
|
76
|
+
|
77
|
+
def parse_params(self, module_params):
|
78
|
+
validate_chain(module_params['end_chain'])
|
79
|
+
validate_refuel_interval(module_params['refuel_amount_interval'])
|
80
|
+
|
81
|
+
return (
|
82
|
+
module_params['start_chain'],
|
83
|
+
module_params['end_chain'],
|
84
|
+
module_params['chains'],
|
85
|
+
module_params['refuel_amount_interval'],
|
86
|
+
module_params['sleeping_interval']
|
87
|
+
)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import importlib
|
2
|
+
import pkgutil
|
3
|
+
|
4
|
+
from loguru import logger
|
5
|
+
from sybil_engine.app import launch_with_data
|
6
|
+
from sybil_engine.utils.configuration_loader import load_module_vars
|
7
|
+
|
8
|
+
import web3_wizzard_lib.core.modules
|
9
|
+
from web3_wizzard_lib.core.modules.swap.swap_list import swap_facade
|
10
|
+
|
11
|
+
|
12
|
+
def launch():
|
13
|
+
modules_package = "web3_wizzard_lib.core.modules"
|
14
|
+
|
15
|
+
# package = importlib.import_module(modules_package)
|
16
|
+
# for loader, module_name, is_pkg in pkgutil.walk_packages(path=package.__path__):
|
17
|
+
# if not is_pkg:
|
18
|
+
# try:
|
19
|
+
# importlib.import_module('.' + module_name, package=modules_package)
|
20
|
+
# except Exception as e:
|
21
|
+
# logger.error('Failed to import module "{}" from package "{}"'.format(module_name, modules_package))
|
22
|
+
|
23
|
+
#modules_data = load_module_vars(modules_package)['modules_data']
|
24
|
+
|
25
|
+
from sybil_engine.module.modules import Modules
|
26
|
+
modules_data = Modules(None, swap_facade)
|
27
|
+
launch_with_data(modules_data)
|
File without changes
|