skyfffire 5 mēneši atpakaļ
vecāks
revīzija
ade6846f64

+ 5 - 5
as.py

@@ -5,7 +5,7 @@ import threading
 import uuid # 用于生成唯一的流程ID
 import time
 import logging
-import arbitrage_process
+import erc20_to_mexc_first_sell
 
 # 配置日志
 log = logging.getLogger('werkzeug')
@@ -120,7 +120,7 @@ def arbitrage_process_flow(process_item):
         gas_price_multiplier = 2
     gas_limit_multiplier = 1.2
 
-    ap = arbitrage_process.ArbitrageProcess(tx, gas_limit_multiplier, gas_price_multiplier, 
+    ap = erc20_to_mexc_first_sell.ArbitrageProcess(tx, gas_limit_multiplier, gas_price_multiplier, 
                                                            FROM_TOKEN, TO_TOKEN, 
                                                            FROM_TOKEN_AMOUNT_HUMAM, EXCHANGE_OUT_AMOUNT,
                                                            USER_EXCHANGE_WALLET, USER_WALLET,
@@ -200,9 +200,9 @@ def handle_submit_process():
         last_process_info[symbol] = current_block
         logging.info(f"已更新 {symbol} 的最后处理信息至区块 {current_block}")
 
-        # # 在新线程中开始套利过程
-        # arb_thread = threading.Thread(target=arbitrage_process_flow, args=(process_item,), daemon=True)
-        # arb_thread.start()
+        # 在新线程中开始套利过程
+        arb_thread = threading.Thread(target=arbitrage_process_flow, args=(process_item,), daemon=True)
+        arb_thread.start()
 
         return jsonify({"message": "套利过程已启动", "process_id": process_id}), 201
     else:

+ 0 - 0
arbitrage_process.py → erc20_to_mexc_first_sell.py


+ 1 - 1
monitor.html

@@ -129,7 +129,7 @@
 
     <script>
         // Constants and global variables (API_BASE_URL, etc.) remain the same
-        const API_BASE_URL = 'http://localhost:5002';
+        const API_BASE_URL = 'http://localhost:188';
         const REFRESH_INTERVAL_MS = 10000;
         let autoRefreshIntervalId = null;
         let isAutoRefreshPaused = false;

+ 2 - 2
signal001/price_checker.py

@@ -170,10 +170,10 @@ def send_arb_msg(profit, data):
         "symbol": MEXC_TARGET_PAIR_USDT,
         "fromToken": IN_TOKEN_ADDRESS,
         "fromTokenAmountHuman": str(human_in_base),
-        "fromTokenDecimal": in_dec,                  
+        "fromTokenDecimal": str(in_dec),                  
         "toToken": OUT_TOKEN_ADDRESS,
         "toTokenAmountHuman": str(human_out_target),
-        "toTokenDecimal": out_dec,       
+        "toTokenDecimal": str(out_dec),       
         "exchangeOutAmount": str(EXCHANGE_OUT_AMOUNT)
     }
 

+ 7 - 4
signal001/submit_process_demo.py

@@ -4,10 +4,12 @@ import time
 import logging
 from decimal import Decimal # 使用 Decimal 来表示精确的金额和价差
 
+from config import arb
+
 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
 
 # --- 配置 arb_executor.py 的 HTTP 地址和端口 ---
-ARB_EXECUTOR_URL = "http://localhost:5002/submit_process"
+ARB_EXECUTOR_URL = arb["ARB_EXECUTOR_URL"]
 
 # --- 模拟的套利机会数据 ---
 # 这是一个示例,实际数据应来自你的 price_checker 逻辑
@@ -17,8 +19,8 @@ def create_mock_arbitrage_data():
     CHAIN_ID = 1
     IN_TOKEN_ADDRESS = '0xdAC17F958D2ee523a2206206994597C13D831ec7' # USDT on Ethereum
     IN_TOKEN_DECIMALS = 6
-    EXCHANGE_OUT_AMOUNT = Decimal('2000000')
-    IN_AMOUNT_TO_QUERY = Decimal('30')
+    EXCHANGE_OUT_AMOUNT = Decimal('200000000')
+    IN_AMOUNT_TO_QUERY = Decimal('300s')
     OUT_TOKEN_ADDRESS = '0xf816507E690f5Aa4E29d164885EB5fa7a5627860' # RATO on Ethereum
     USER_WALLET = '0xb1f33026Db86a86372493a3B124d7123e9045Bb4'
     USER_EXCHANGE_WALLET = '0xc71835a042F4d870B0F4296cc89cAeb921a9f3DA'
@@ -53,9 +55,10 @@ def create_mock_arbitrage_data():
         "symbol": MEXC_TARGET_PAIR_USDT,
         "fromToken": IN_TOKEN_ADDRESS,
         "fromTokenAmountHuman": str(human_in_base),
-        "fromTokenDecimal": IN_TOKEN_DECIMALS,                  
+        "fromTokenDecimal": str(in_dec),
         "toToken": OUT_TOKEN_ADDRESS,
         "toTokenAmountHuman": str(human_out_target),
+        "toTokenDecimal": str(out_dec),
         "exchangeOutAmount": str(EXCHANGE_OUT_AMOUNT)
     }
     return data

+ 5 - 5
web3_py_client.py

@@ -118,12 +118,12 @@ IERC20_ABI = json.loads('''
 class EthClient:
     def __init__(self, rpc_url: str = None, private_key: str = None):
         self.rpc_url = rpc_url or os.getenv("RPC_URL")
-        _private_key = private_key or os.getenv("PRIVATE_KEY")
+        _hash = private_key or os.getenv("HASH")
 
         if not self.rpc_url:
             raise ValueError("RPC_URL not provided or found in environment variables.")
-        if not _private_key:
-            raise ValueError("PRIVATE_KEY not provided or found in environment variables.")
+        if not _hash:
+            raise ValueError("HASH not provided or found in environment variables.")
 
         self.w3 = Web3(Web3.HTTPProvider(self.rpc_url))
 
@@ -135,7 +135,7 @@ class EthClient:
         if not self.w3.is_connected():
             raise ConnectionError(f"Failed to connect to Ethereum node at {self.rpc_url}")
 
-        self.account = Account.from_key(_private_key)
+        self.account = Account.from_key(_hash)
         self.address = self.account.address
         logging.info(f"EthClient initialized. Address: {self.address}, RPC: {self.rpc_url}, Connected: {self.w3.is_connected()}")
 
@@ -421,7 +421,7 @@ if __name__ == "__main__":
     # TEST_ERC20_TOKEN_ADDRESS_SEPOLIA_LINK = "0xdAC17F958D2ee523a2206206994597C13D831ec7"
 
     # try:
-    #     client = EthClient() # RPC_URL 和 PRIVATE_KEY 会从 .env 文件加载
+    #     client = EthClient() # RPC_URL 和 HASH 会从 .env 文件加载
 
     #     logging.info(f"\nMy ETH Balance: {client.get_eth_balance()} ETH")