diff --git a/.gitignore b/.gitignore index b1db323..625d168 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,7 @@ crypto/sol/secret.pk crypto/sol/logs/* logs/* crypto/sol/cache/* -cache/* \ No newline at end of file +cache/* +crypto/sol/logs/error.log +crypto/sol/logs/token_info.json +crypto/sol/logs/transation_details.json diff --git a/.vscode/launch.json b/.vscode/launch.json index 8906574..b7e847f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -39,8 +39,8 @@ "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "env": { - "NODE_ENV": "demo" - "OPENAI_API_KEY": + "NODE_ENV": "demo", + "OPENAI_API_KEY":"" }, "skipFiles": [ "/**" @@ -69,7 +69,13 @@ "program": "${file}" }, { - "name": "Python Debugger: Python File with Conda", + "name": "py: Sol app.py", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/crypto/sol/app.py", + }, + { + "name": "Python Debugger: Python File with Conda (py)", "type": "debugpy", "request": "launch", "program": "${file}", diff --git a/app_data.db b/app_data.db new file mode 100644 index 0000000..1d388bb Binary files /dev/null and b/app_data.db differ diff --git a/crypto/sol/.env b/crypto/sol/.env index 8f0f868..a0ddf33 100644 --- a/crypto/sol/.env +++ b/crypto/sol/.env @@ -1,19 +1,26 @@ - -SOLANA_WS_URL="wss://api.mainnet-beta.solana.com" -SOLANA_WS_URL2="wss://mainnet.rpcpool.com" -SOLANA_HTTP_URL="https://api.mainnet-beta.solana.com" - -DEVELOPER_CHAT_ID="777826553" -TELEGRAM_BOT_TOKEN="6805059978:AAHNJKuOeazMSJHc3-BXRCsFfEVyFHeFnjw" - -DISPLAY_CURRENCY=USD - -# Niki's to Sync: [PROD] -FOLLOWED_WALLET="7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH" -YOUR_WALLET="7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV" -PK=3FxXjNrtEqwAKYj4BpkuLAJPzuKRWykkvjeBYQEVuFqRFWRm9eVcWrrYKbns2M31ESMoASG2WV39w9Dpx532sPUH - -# Sync to main [DEV] -#FOLLOWED_WALLET="7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV" -#YOUR_WALLET="65nzyZXTLC81MthTo52a2gRJjqryTizWVqpK2fDKLye5" + +SOLANA_WS_URL="wss://api.mainnet-beta.solana.com" +SOLANA_WS_URL2="wss://mainnet.rpcpool.com" +SOLANA_HTTP_URL="https://api.mainnet-beta.solana.com" + +# prod, @kevin_ai_robot: +BOT_NAME="Solower" +DEVELOPER_CHAT_ID="777826553" # https://api.telegram.org/bot{token}/getUpdates +TELEGRAM_BOT_TOKEN="6805059978:AAHNJKuOeazMSJHc3-BXRCsFfEVyFHeFnjw" + +# dev, @artitherobot: +BOT_NAME="DEV" +DEVELOPER_CHAT_ID="777826553" +TELEGRAM_BOT_TOKEN="6749075936:AAHUHiPTDEIu6JH7S2fQdibwsu6JVG3FNG0" + +DISPLAY_CURRENCY=USD + +# Niki's to Sync: [PROD] +FOLLOWED_WALLET="7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH" +YOUR_WALLET="7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV" +PK=3FxXjNrtEqwAKYj4BpkuLAJPzuKRWykkvjeBYQEVuFqRFWRm9eVcWrrYKbns2M31ESMoASG2WV39w9Dpx532sPUH + +# Sync to main [DEV] +#FOLLOWED_WALLET="7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV" +#YOUR_WALLET="65nzyZXTLC81MthTo52a2gRJjqryTizWVqpK2fDKLye5" #PK=5ccrMf3BFFE1HMsXt17btK1tMSNay7aBoY27saPHrqg2JEjxKBmBbxUABD9Jh7Gisf1bhM51oGzWdyLUgHdrUJPw \ No newline at end of file diff --git a/crypto/sol/.env.example b/crypto/sol/.env.example deleted file mode 100644 index e949837..0000000 --- a/crypto/sol/.env.example +++ /dev/null @@ -1,15 +0,0 @@ - -SOLANA_WS_URL="wss://api.mainnet-beta.solana.com" -SOLANA_WS_URL2="wss://mainnet.rpcpool.com" -SOLANA_HTTP_URL="https://api.mainnet-beta.solana.com" -DEVELOPER_CHAT_ID="777826553" -# Niki's -# FOLLOWED_WALLET="9U7D916zuQ8qcL9kQZqkcroWhHGho5vD8VNekvztrutN" -# My test Brave sync wallet -FOLLOWED_WALLET="7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV" - -TELEGRAM_BOT_TOKEN="6805059978:AAHNJKuOeazMSJHc3-BXRCsFfEVyFHeFnjw" -DISPLAY_CURRENCY=USD - -YOUR_WALLET="65nzyZXTLC81MthTo52a2gRJjqryTizWVqpK2fDKLye5" -PK={} \ No newline at end of file diff --git a/crypto/sol/app.py b/crypto/sol/app.py index da4c578..6cb9b79 100644 --- a/crypto/sol/app.py +++ b/crypto/sol/app.py @@ -1,11 +1,12 @@ import asyncio +import uvicorn +from asgiref.wsgi import WsgiToAsgi import websockets import json from flask import Flask, render_template, request, jsonify from solana.rpc.async_api import AsyncClient from solana.transaction import Signature from solana.rpc.websocket_api import connect -from solana.rpc.types import TokenAccountOpts, TxOpts from solana.rpc.commitment import Confirmed, Processed from solana.transaction import Transaction from spl.token.client import Token @@ -24,8 +25,8 @@ from solders.instruction import CompiledInstruction from solders import message from jupiter_python_sdk.jupiter import Jupiter, Jupiter_DCA from dexscreener import DexscreenerClient -from telegram import Bot -from telegram.constants import ParseMode +from solana.rpc.types import TokenAccountOpts, TxOpts + import datetime import logging from logging.handlers import RotatingFileHandler @@ -35,7 +36,6 @@ from dotenv import load_dotenv,set_key import aiohttp from typing import List, Dict import requests -import threading import re from typing import List, Dict, Any, Tuple import random @@ -131,6 +131,7 @@ def get_latest_log_file(): return None # Flask route to retry processing the last log +@app.route('/retry', methods=['GET']) @app.route('/retry-last-log', methods=['GET']) async def retry_last_log(): latest_log_file = get_latest_log_file() @@ -155,9 +156,42 @@ async def retry_last_log(): return jsonify({"error": "Failed to process log"}), 500 +#const webhookPath = `/tr/${followedWallet.toBase58()}/${logs.signature}`; +@app.route('/tr//', methods=['GET', 'POST']) +async def transaction_notified(wallet, tx_signature): + try: + logger.info(f"Processing transaction notification for wallet: {wallet}, tx: {tx_signature}") + # Process the transaction + # tr = await get_swap_transaction_details(tx_signature) + tr = await get_transaction_details_info(tx_signature, []) + # ToDo - probably optimize + await get_token_metadata_symbol(tr['token_in']) + await get_token_metadata_symbol(tr['token_out']) + await follow_move(tr) + await save_token_info() + return jsonify(tr), 200 + except Exception as e: + logging.error(f"Error processing transaction: {e}") + return jsonify({"error": "Failed to process transaction"}), 500 + + + +# Configuration +DEVELOPER_CHAT_ID = os.getenv("DEVELOPER_CHAT_ID") +FOLLOWED_WALLET = os.getenv("FOLLOWED_WALLET") +YOUR_WALLET = os.getenv("YOUR_WALLET") +TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN") +SOLANA_WS_URL = os.getenv("SOLANA_WS_URL") +SOLANA_HTTP_URL = os.getenv("SOLANA_HTTP_URL") +DISPLAY_CURRENCY = os.getenv('DISPLAY_CURRENCY', 'USD') + + +# Use the production Solana RPC endpoint +solana_client = AsyncClient(SOLANA_HTTP_URL) +dexscreener_client = DexscreenerClient() + + -# Create the bot with the custom connection pool -bot = None # Token addresses (initialize with some known tokens) TOKEN_ADDRESSES = { "SOL": "So11111111111111111111111111111111111111112", @@ -173,208 +207,27 @@ except Exception as e: logging.error(f"Error loading token info: {str(e)}") # # # # # # # # # # TELEGRAM # # # # # # # # # # -async def send_telegram_message(message): +if not telegram_utils.bot: try: - await bot.send_message(chat_id=DEVELOPER_CHAT_ID, text=message, parse_mode=ParseMode.HTML) - logging.info(f"Telegram message sent: {message}") - # logging.info(f"Telegram message dummy sent: {message}") + asyncio.run(telegram_utils.initialize()) except Exception as e: - logging.error(f"Error sending Telegram message: {str(e)}") + logging.error(f"Error initializing Telegram bot: {str(e)}") +# async def telegram_utils.send_telegram_message(message): +# try: +# await bot.send_message(chat_id=DEVELOPER_CHAT_ID, text=f"[{BOT_NAME}] {message}", parse_mode=ParseMode.HTML) +# logging.info(f"Telegram message sent: {message}") +# # logging.info(f"Telegram message dummy sent: {message}") +# except Exception as e: +# logging.error(f"Error sending Telegram message: {str(e)}") +# # # # # # # # # # DATABASE # # # # # # # # # # + + + # # # # # # # # # # CRYPTO PUBLIC # # # # # # # # # # -async def get_token_prices(token_addresses: List[str]) -> Dict[str, float]: - global TOKENS_INFO - - # Skip for USD - prices = {addr: 1.0 for addr in token_addresses if addr == "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"} - remaining_tokens = [addr for addr in token_addresses if addr not in prices] - - # Try CoinGecko - coingecko_prices = await get_prices_from_coingecko(remaining_tokens) - prices.update(coingecko_prices) - - - # For remaining missing tokens, try Jupiter - missing_tokens = set(remaining_tokens) - set(prices.keys()) - if missing_tokens: - jupiter_prices = await get_prices_from_jupiter(list(missing_tokens)) - prices.update(jupiter_prices) - - - # For tokens not found in CoinGecko, use DexScreener - missing_tokens = set(remaining_tokens) - set(coingecko_prices.keys()) - if missing_tokens: - dexscreener_prices = await get_prices_from_dexscreener(list(missing_tokens)) - prices.update(dexscreener_prices) - - # For remaining missing tokens, try Raydium - missing_tokens = set(remaining_tokens) - set(prices.keys()) - if missing_tokens: - raydium_prices = await get_prices_from_raydium(list(missing_tokens)) - prices.update(raydium_prices) - - # For remaining missing tokens, try Orca - missing_tokens = set(remaining_tokens) - set(prices.keys()) - if missing_tokens: - orca_prices = await get_prices_from_orca(list(missing_tokens)) - prices.update(orca_prices) - - # If any tokens are still missing, set their prices to 0 - for token in set(token_addresses) - set(prices.keys()): - prices[token] = 0.0 - logging.warning(f"Price not found for token {token}. Setting to 0.") - - for token, price in prices.items(): - token_info = TOKENS_INFO.setdefault(token, {}) - if 'symbol' not in token_info: - token_info['symbol'] = await get_token_metadata_symbol(token) - token_info['price'] = price - - return prices - - -async def get_prices_from_coingecko(token_addresses: List[str]) -> Dict[str, float]: - base_url = "https://api.coingecko.com/api/v3/simple/token_price/solana" - prices = {} - - async def fetch_single_price(session, address): - params = { - "contract_addresses": address, - "vs_currencies": DISPLAY_CURRENCY.lower() - } - try: - async with session.get(base_url, params=params) as response: - if response.status == 200: - data = await response.json() - if address in data and DISPLAY_CURRENCY.lower() in data[address]: - return address, data[address][DISPLAY_CURRENCY.lower()] - else: - logging.warning(f"Failed to get price for {address} from CoinGecko. Status: {response.status}") - except Exception as e: - logging.error(f"Error fetching price for {address} from CoinGecko: {str(e)}") - return address, None - - async with aiohttp.ClientSession() as session: - tasks = [fetch_single_price(session, address) for address in token_addresses] - results = await asyncio.gather(*tasks) - - for address, price in results: - if price is not None: - prices[address] = price - - return prices - -async def get_prices_from_dexscreener(token_addresses: List[str]) -> Dict[str, float]: - base_url = "https://api.dexscreener.com/latest/dex/tokens/" - prices = {} - - try: - async with aiohttp.ClientSession() as session: - tasks = [fetch_token_data(session, f"{base_url}{address}") for address in token_addresses] - results = await asyncio.gather(*tasks) - - for address, result in zip(token_addresses, results): - if result and 'pairs' in result and result['pairs']: - pair = result['pairs'][0] # Use the first pair (usually the most liquid) - prices[address] = float(pair['priceUsd']) - else: - logging.warning(f"No price data found on DexScreener for token {address}") - except Exception as e: - logging.error(f"Error fetching token prices from DexScreener: {str(e)}") - - return prices - -async def get_prices_from_jupiter(token_addresses: List[str]) -> Dict[str, float]: - url = "https://price.jup.ag/v4/price" - params = { - "ids": ",".join(token_addresses) - } - prices = {} - - try: - async with aiohttp.ClientSession() as session: - async with session.get(url, params=params) as response: - if response.status == 200: - data = await response.json() - for address, price_info in data.get('data', {}).items(): - if 'price' in price_info: - prices[address] = float(price_info['price']) - else: - logging.error(f"Failed to get token prices from Jupiter. Status: {response.status}") - except Exception as e: - logging.error(f"Error fetching token prices from Jupiter: {str(e)}") - return prices - -# New function for Raydium -async def get_prices_from_raydium(token_addresses: List[str]) -> Dict[str, float]: - url = "https://api.raydium.io/v2/main/price" - prices = {} - - try: - async with aiohttp.ClientSession() as session: - async with session.get(url) as response: - if response.status == 200: - data = await response.json() - for address in token_addresses: - if address in data: - prices[address] = float(data[address]) - else: - logging.error(f"Failed to get token prices from Raydium. Status: {response.status}") - except Exception as e: - logging.error(f"Error fetching token prices from Raydium: {str(e)}") - return prices - -# New function for Orca -async def get_prices_from_orca(token_addresses: List[str]) -> Dict[str, float]: - url = "https://api.orca.so/allTokens" - prices = {} - - try: - async with aiohttp.ClientSession() as session: - async with session.get(url) as response: - if response.status == 200: - data = await response.json() - for token_info in data: - if token_info['mint'] in token_addresses: - prices[token_info['mint']] = float(token_info['price']) - else: - logging.error(f"Failed to get token prices from Orca. Status: {response.status}") - except Exception as e: - logging.error(f"Error fetching token prices from Orca: {str(e)}") - return prices - - -async def fetch_token_data(session, url): - try: - async with session.get(url) as response: - if response.status == 200: - return await response.json() - else: - logging.error(f"Failed to fetch data from {url}. Status: {response.status}") - return None - except Exception as e: - logging.error(f"Error fetching data from {url}: {str(e)}") - return None - -async def get_sol_price() -> float: - url = f"https://api.coingecko.com/api/v3/simple/price?ids=solana&vs_currencies={DISPLAY_CURRENCY.lower()}" - async with aiohttp.ClientSession() as session: - async with session.get(url) as response: - if response.status == 200: - data = await response.json() - return data['solana'][DISPLAY_CURRENCY.lower()] - else: - logging.error(f"Failed to get SOL price from CoinGecko. Status: {response.status}") - return await get_sol_price_from_dexscreener() - -async def get_sol_price_from_dexscreener() -> float: - sol_address = "So11111111111111111111111111111111111111112" # Solana's wrapped SOL address - prices = await get_prices_from_dexscreener([sol_address]) - return prices.get(sol_address, 0.0) - # # # # # # # # # # SOLANA BLOCKCHAIN # # # # # # # # # # @@ -439,44 +292,9 @@ from spl.token.async_client import AsyncToken from spl.token.constants import TOKEN_PROGRAM_ID from borsh_construct import String, CStruct -async def get_token_metadata_symbol(mint_address): - global TOKENS_INFO + + - if mint_address in TOKENS_INFO and 'symbol' in TOKENS_INFO[mint_address]: - return TOKENS_INFO[mint_address].get('symbol') - - try: - account_data_result = await solana_jsonrpc("getAccountInfo", mint_address) - if 'value' in account_data_result and 'data' in account_data_result['value']: - account_data_data = account_data_result['value']['data'] - if 'parsed' in account_data_data and 'info' in account_data_data['parsed']: - account_data_info = account_data_data['parsed']['info'] - if 'decimals' in account_data_info: - if mint_address in TOKENS_INFO: - TOKENS_INFO[mint_address]['decimals'] = account_data_info['decimals'] - else: - TOKENS_INFO[mint_address] = {'decimals': account_data_info['decimals']} - if 'tokenName' in account_data_info: - if mint_address in TOKENS_INFO: - TOKENS_INFO[mint_address]['name'] = account_data_info['tokenName'] - else: - TOKENS_INFO[mint_address] = {'name': account_data_info['tokenName']} - - metadata = await get_token_metadata(mint_address) - if metadata: - if mint_address in TOKENS_INFO: - TOKENS_INFO[mint_address].update(metadata) - else: - TOKENS_INFO[mint_address] = metadata - await save_token_info() - # TOKENS_INFO[mint_address] = metadata - # return metadata.get('symbol') or metadata.get('name') - return TOKENS_INFO[mint_address].get('symbol') - except Exception as e: - logging.error(f"Error fetching token name for {mint_address}: {str(e)}") - return None - - METADATA_STRUCT = CStruct( "update_authority" / String, "mint" / String, @@ -610,7 +428,7 @@ async def get_wallet_balances(wallet_address, doGetTokenName=True): # sleep for 1 second to avoid rate limiting await asyncio.sleep(2) - TOKENS_INFO[mint]['holdedAmount'] = round(amount,decimals) + TOKENS_INFO[mint]['holdedAmount'] = round(amount, decimals) TOKENS_INFO[mint]['decimals'] = decimals balances[mint] = { 'name': token_name or 'N/A', @@ -697,244 +515,10 @@ async def get_swap_transaction_details(tx_signature_str): return None - -# # # RAW Solana API RPC # # # - -#this is the meat of the application -async def get_transaction_details_rpc(tx_signature, readfromDump=False): - global FOLLOWED_WALLET_VALUE, YOUR_WALLET_VALUE, TOKEN_PRICES, TOKENS_INFO - try: - if readfromDump and os.path.exists('./logs/transation_details.json'): - with open('./logs/transation_details.json', 'r') as f: # trump_swap_tr_details - transaction_details = json.load(f) - return transaction_details - else: - transaction_details = await solana_jsonrpc("getTransaction", tx_signature) - with open('./logs/transation_details.json', 'w') as f: - json.dump(transaction_details, f, indent=2) - - if transaction_details is None: - logging.error(f"Error fetching transaction details for {tx_signature}") - return None - - # Initialize default result structure - parsed_result = { - "order_id": None, - "token_in": None, - "token_out": None, - "amount_in": 0, - "amount_out": 0, - "amount_in_USD": 0, - "amount_out_USD": 0, - "percentage_swapped": 0 - } - - # Extract order_id from logs - log_messages = transaction_details.get("meta", {}).get("logMessages", []) - for log in log_messages: - if "order_id" in log: - parsed_result["order_id"] = log.split(":")[2].strip() - break - - # Extract token transfers from innerInstructions - inner_instructions = transaction_details.get('meta', {}).get('innerInstructions', []) - for instruction_set in inner_instructions: - for instruction in instruction_set.get('instructions', []): - if instruction.get('program') == 'spl-token' and instruction.get('parsed', {}).get('type') == 'transferChecked': - info = instruction['parsed']['info'] - mint = info['mint'] - amount = float(info['tokenAmount']['amount']) / 10 ** info['tokenAmount']['decimals'] # Adjust for decimals - - # Determine which token is being swapped in and out based on zero balances - if parsed_result["token_in"] is None and amount > 0: - parsed_result["token_in"] = mint - parsed_result["amount_in"] = amount - - - if parsed_result["token_in"] is None or parsed_result["token_out"] is None: - # if we've failed to extract token_in and token_out from the transaction details, try a second method - inner_instructions = transaction_details.get('meta', {}).get('innerInstructions', []) - transfers = [] - - for instruction_set in inner_instructions: - for instruction in instruction_set.get('instructions', []): - if instruction.get('program') == 'spl-token' and instruction.get('parsed', {}).get('type') in ['transfer', 'transferChecked']: - info = instruction['parsed']['info'] - amount = float(info['amount']) if 'amount' in info else float(info['tokenAmount']['amount']) - decimals = info['tokenAmount']['decimals'] if 'tokenAmount' in info else 0 - adjusted_amount = amount / (10 ** decimals) - # adjusted_amount = float(info["amount"]) / (10 ** (info["tokenAmount"]["decimals"] if 'tokenAmount' in info else 0)) - transfers.append({ - 'mint': info.get('mint'), - 'amount': adjusted_amount, - 'source': info['source'], - 'destination': info['destination'] - }) - - # Identify token_in and token_out - if len(transfers) >= 2: - parsed_result["token_in"] = transfers[0]['mint'] - parsed_result["amount_in"] = transfers[0]['amount'] - parsed_result["token_out"] = transfers[-1]['mint'] - parsed_result["amount_out"] = transfers[-1]['amount'] - - # If mint is not provided, query the Solana network for the account data - if parsed_result["token_in"] is None or parsed_result["token_out"] is None: - #for transfer in transfers: - # do only first and last transfer - for transfer in [transfers[0], transfers[-1]]: - if transfer['mint'] is None: - # Query the Solana network for the account data - account_data_result = await solana_jsonrpc("getAccountInfo", transfer['source']) - - if 'value' in account_data_result and 'data' in account_data_result['value']: - account_data_value = account_data_result['value'] - account_data_data = account_data_value['data'] - if 'parsed' in account_data_data and 'info' in account_data_data['parsed']: - account_data_info = account_data_data['parsed']['info'] - if 'mint' in account_data_info: - transfer['mint'] = account_data_info['mint'] - if transfer['mint'] in TOKENS_INFO or 'decimals' not in TOKENS_INFO[transfer['mint']]: - await get_token_metadata_symbol(transfer['mint']) - # get actual prices - current_price = await get_token_prices([transfer['mint']]) - - if parsed_result["token_in"] is None: - parsed_result["token_in"] = transfer['mint'] - parsed_result["symbol_in"] = TOKENS_INFO[transfer['mint']]['symbol'] - parsed_result["amount_in"] = transfer['amount']/10**TOKENS_INFO[transfer['mint']]['decimals'] - parsed_result["amount_in_USD"] = parsed_result["amount_in"] * TOKENS_INFO[transfer['mint']].get('price', current_price[transfer['mint']]) - elif parsed_result["token_out"] is None: - parsed_result["token_out"] = transfer['mint'] - parsed_result["symbol_out"] = TOKENS_INFO[transfer['mint']]['symbol'] - parsed_result["amount_out"] = transfer['amount']/10**TOKENS_INFO[transfer['mint']]['decimals'] - parsed_result["amount_out_USD"] = parsed_result["amount_out"] * TOKENS_INFO[transfer['mint']]['price'] - - pre_balalnces = transaction_details.get('meta', {}).get('preTokenBalances', []) - for balance in pre_balalnces: - if balance['mint'] == parsed_result["token_in"] and balance['owner'] == FOLLOWED_WALLET: - parsed_result["before_source_balance"] = float(balance['uiTokenAmount']['amount']) / 10 ** balance['uiTokenAmount']['decimals'] - break - - - # Calculate percentage swapped - try: - if parsed_result["amount_in"] > 0 and 'before_source_balance' in parsed_result and parsed_result["before_source_balance"] > 0: - parsed_result["percentage_swapped"] = (parsed_result["amount_in"] / parsed_result["before_source_balance"]) * 100 - else: - # calculate based on total wallet value: FOLLOWED_WALLET_VALUE - parsed_result["percentage_swapped"] = (parsed_result["amount_in_USD"] / FOLLOWED_WALLET_VALUE) * 100 - except Exception as e: - logging.error(f"Error calculating percentage swapped: {e}") - - return parsed_result - - except requests.exceptions.RequestException as e: - print("Error fetching transaction details:", e) - - -async def solana_jsonrpc(method, params = None, jsonParsed = True): - # target json example: - # data = { - # "jsonrpc": "2.0", - # "id": 1, - # "method": "getTransaction", - # "params": [ - # tx_signature, - # { - # "encoding": "jsonParsed", - # "maxSupportedTransactionVersion": 0 - # } - # ] - # } - # if param is not array, make it array - if not isinstance(params, list): - params = [params] - - data = { - "jsonrpc": "2.0", - "id": 1, - "method": method, - "params": params or [] - } - data["params"].append({"maxSupportedTransactionVersion": 0}) - if jsonParsed: - data["params"][1]["encoding"] = "jsonParsed" - - - try: - # url = 'https://solana.drpc.org' - response = requests.post(SOLANA_HTTP_URL, headers={"Content-Type": "application/json"}, data=json.dumps(data)) - response.raise_for_status() # Raises an error for bad responses - result = response.json() - if not 'result' in result or 'error' in result: - print("Error fetching data from Solana RPC:", result) - return None - return result['result'] - except Exception as e: - logging.error(f"Error fetching data from Solana RPC: {e}") - return None - - # # # # # # # # # # Functionality # # # # # # # # # # -async def list_initial_wallet_states(): - global TOKEN_ADDRESSES, FOLLOWED_WALLET_VALUE, YOUR_WALLET_VALUE, TOKEN_PRICES - global TOKENS_INFO # new - - followed_wallet_balances = await get_wallet_balances(FOLLOWED_WALLET) - your_wallet_balances = await get_wallet_balances(YOUR_WALLET) - - all_token_addresses = list(set(followed_wallet_balances.keys()) | - set(your_wallet_balances.keys()) | - set(TOKEN_ADDRESSES.values())) - - TOKEN_PRICES = await get_token_prices(all_token_addresses) - sol_price = await get_sol_price() - - followed_converted_balances = await convert_balances_to_currency(followed_wallet_balances, sol_price) - your_converted_balances = await convert_balances_to_currency(your_wallet_balances, sol_price) - - - TOKEN_ADDRESSES = { - address: info for address, - info in {**followed_converted_balances, **your_converted_balances}.items() if info['value'] is not None and info['value'] > 0 - } - logging.info(f"Monitoring balances for tokens: {[info['name'] for info in TOKEN_ADDRESSES.values()]}") - - followed_wallet_state = [] - FOLLOWED_WALLET_VALUE = 0 - for address, info in followed_converted_balances.items(): - if info['value'] is not None and info['value'] > 0: - followed_wallet_state.append(f"{info['name']}: {info['value']:.2f} {DISPLAY_CURRENCY} ({info['address']})") - FOLLOWED_WALLET_VALUE += info['value'] - - your_wallet_state = [] - YOUR_WALLET_VALUE = 0 - for address, info in your_converted_balances.items(): - if info['value'] is not None and info['value'] > 0: - your_wallet_state.append(f"{info['name']}: {info['value']:.2f} {DISPLAY_CURRENCY}") - YOUR_WALLET_VALUE += info['value'] - - message = ( - f"Initial Wallet States (All balances in {DISPLAY_CURRENCY}):\n\n" - f"Followed Wallet ({FOLLOWED_WALLET}):\n" - f"{chr(10).join(followed_wallet_state)}\n" - f"Total Value: {FOLLOWED_WALLET_VALUE:.2f} {DISPLAY_CURRENCY}\n\n" - f"Your Wallet ({YOUR_WALLET}):\n" - f"{chr(10).join(your_wallet_state)}\n" - f"Total Value: {YOUR_WALLET_VALUE:.2f} {DISPLAY_CURRENCY}\n\n" - f"Monitored Tokens:\n" - f"{', '.join([safe_get_property(info, 'name') for info in TOKEN_ADDRESSES.values()])}" - ) - - logging.info(message) - await send_telegram_message(message) - - # save token info to file - await save_token_info() def safe_get_property(info, property_name, default='Unknown'): if not isinstance(info, dict): @@ -952,12 +536,13 @@ async def get_transaction_details_with_retry(transaction_id, retry_delay = 5, ma # query every 5 seconds for the transaction details until not None or 30 seconds for _ in range(max_retries): try: - tx_details = await get_transaction_details_rpc(transaction_id) + tx_details = await solanaAPI.get_transaction_details_rpc(transaction_id) if tx_details is not None: break except Exception as e: - logging.error(f"Error fetching transaction details for '{transaction_id}': {e}") - logging.info(f"({_} of {max_retries}) Waiting for transaction details for {transaction_id}") + logging.error(f"Error fetching transaction details: {e}") + retry_delay = retry_delay * 1.2 + logging.info(f"({_} of {max_retries}) Waiting for transaction details for {transaction_id}. retry in {retry_delay} s.") await asyncio.sleep(retry_delay) retry_delay *= 1.2 return tx_details @@ -1006,7 +591,7 @@ async def process_log(log_result): before_source_balance = 0 source_token_change = 0 - + i = 0 while i < len(logs): log_entry = logs[i] @@ -1029,7 +614,7 @@ async def process_log(log_result): i += 1 - # calculatte percentage swapped by digging before_source_balance, source_token_change and after_source_balance + # calculate percentage swapped by digging before_source_balance, source_token_change and after_source_balance # "Program log: before_source_balance: 19471871, before_destination_balance: 0, amount_in: 19471871, expect_amount_out: 770877527, min_return: 763168752", # "Program log: after_source_balance: 0, after_destination_balance: 770570049", @@ -1080,14 +665,15 @@ async def process_log(log_result): f"{tr_details['amount_in_USD']:.2f} worth of {tr_details['symbol_in']} ({tr_details['percentage_swapped']:.2f}% ) swapped for " # ({tr_details['token_in']}) ({tr_details['token_out']}) f"{tr_details['symbol_out']} \n" ) - await send_telegram_message(message_text) + await telegram_utils.send_telegram_message(message_text) await follow_move(tr_details) await save_token_info() except Exception as e: logging.error(f"Error aquiring log details and following: {e}") - error_logger.info(f"Error aquiring log details and following:\n {tr_details}") await send_telegram_message(f"Not followed! Error following move.") + + except Exception as e: logging.error(f"Error processing log: {e}") @@ -1095,6 +681,7 @@ async def process_log(log_result): PROCESSING_LOG = False return tr_details + # "Program log: Instruction: Swap2", # "Program log: order_id: 13985890735038016", # "Program log: AbrMJWfDVRZ2EWCQ1xSCpoVeVgZNpq1U2AoYG98oRXfn", source @@ -1136,14 +723,13 @@ def _get_pre_balance(transaction_details: Dict[str, Any], token: str) -> float: async def follow_move(move): - tx_details = None your_balances = await get_wallet_balances(YOUR_WALLET, doGetTokenName=False) your_balance_info = next((balance for balance in your_balances.values() if balance['address'] == move['token_in']), None) if your_balance_info is not None: # Use the balance print(f"Your balance: {your_balance_info['amount']} {move['symbol_in']}") else: - print("No ballance found for {move['symbol_in']}. Skipping move.") + print(f"No ballance found for {move['symbol_in']}. Skipping move.") await send_telegram_message(f"No ballance found for {move['symbol_in']}. Skipping move.") return @@ -1152,12 +738,12 @@ async def follow_move(move): token_info = TOKENS_INFO.get(move['token_in']) token_name_in = token_info.get('symbol') or await get_token_metadata(move['token_in']) - token_name_out = TOKENS_INFO[move['token_out']].get('symbol') or await get_token_metadata_symbol(move['token_out']) + token_name_out = TOKENS_INFO[move['token_out']].get('symbol') or await solanaAPI.get_token_metadata_symbol(move['token_out']) if not your_balance: msg = f"Move not followed:\nNo balance found for token {move['symbol_in']}. Cannot follow move." logging.warning(msg) - await send_telegram_message(msg) + await telegram_utils.send_telegram_message(msg) return if FOLLOW_AMOUNT == 'percentage': @@ -1176,15 +762,13 @@ async def follow_move(move): return amount_to_swap = min(amount_to_swap, your_balance) # Ensure we're not trying to swap more than we have - - amount = int(amount) - logging.debug(f"Calculated amount in lamports: {amount}") decimals = token_info.get('decimals') # Convert to lamports # if decimals is 6, then amount = amount * 1e6; if 9, then amount = amount * 1e9 amount = int(amount_to_swap * 10**decimals) - + amount = int(amount) + logging.debug(f"Calculated amount in lamports: {amount}") if your_balance < amount_to_swap: # should not happen msg = ( @@ -1192,7 +776,7 @@ async def follow_move(move): f"Insufficient balance: {your_balance:.6f} {token_name_in}. We want to swap {amount_to_swap:.6f}\n({move['symbol_in']}, decimals {token_info.get('decimals')} amount {amount}).\n This will probably fail. But we will try anyway." ) logging.warning(msg) - await send_telegram_message(msg) + await telegram_utils.send_telegram_message(msg) try: try: @@ -1202,7 +786,7 @@ async def follow_move(move): ) # logging.info(notification) # error_logger.info(notification) - # await send_telegram_message(notification) + # await telegram_utils.send_telegram_message(notification) except Exception as e: logging.error(f"Error sending notification: {e}") @@ -1215,7 +799,7 @@ async def follow_move(move): input_mint=move['token_in'], output_mint=move['token_out'], amount=amount, - slippage_bps=100, # Increased to 1% + slippage_bps=300, # Increased to 3% ) logging.info(f"Initiating move. Transaction data:\n {transaction_data}") error_logger.info(f"Initiating move. Transaction data:\n {transaction_data}") @@ -1232,7 +816,7 @@ async def follow_move(move): # append to notification notification += f"\n\nTransaction: {transaction_id}" - await send_telegram_message(f"Follow Transaction Sent: {transaction_id}") + await telegram_utils.send_telegram_message(f"Follow Transaction Sent: {transaction_id}") tx_details = await get_transaction_details_with_retry(transaction_id) if tx_details is not None: @@ -1246,7 +830,7 @@ async def follow_move(move): # log the errors to /logs/errors.log error_logger.error(error_message) error_logger.exception(e) - await send_telegram_message(error_message) + await telegram_utils.send_telegram_message(error_message) amount = amount * 0.75 await get_wallet_balances(YOUR_WALLET, doGetTokenName=False) @@ -1273,11 +857,6 @@ async def follow_move(move): ) logging.info(notification) await send_telegram_message(notification) - - # Log successful swap details - success_logger_accounting_csv.info( - f"{move['symbol_in']},{move['symbol_out']},{amount_to_swap:.6f},{tx_details['amount_out']:.6f},{move['amount_in_USD']:.2f},{tx_details['amount_out_USD']:.2f},{move['percentage_swapped']:.2f}" - ) except Exception as e: logging.error(f"Error sending notification: {e}") @@ -1289,9 +868,9 @@ async def follow_move(move): error_logger.exception(e) \ # if error_message contains 'Program log: Error: insufficient funds' if 'insufficient funds' in error_message: - await send_telegram_message("Insufficient funds. Cannot follow move. Please check your balance.") + await telegram_utils.send_telegram_message("Insufficient funds. Cannot follow move. Please check your balance.") else: - await send_telegram_message(error_message) + await telegram_utils.send_telegram_message(error_message) # Helper functions @@ -1302,7 +881,7 @@ SOLANA_ENDPOINTS = [ # "wss://mainnet.rpcpool.com", ] PING_INTERVAL = 30 -SUBSCRIBE_INTERVAL = 1*60 # Resubscribe every 10 minutes +SUBSCRIBE_INTERVAL = 10*60 # Resubscribe every 10 minutes # async def heartbeat(websocket): @@ -1335,11 +914,11 @@ async def wallet_watch_loop(): subscription_id = await subscribe(websocket) if subscription_id is not None: - await send_telegram_message(f"Solana mainnet connected ({subscription_id})...") + # await send_telegram_message(f"Solana mainnet connected ({subscription_id})...") if _first_subscription: asyncio.create_task( list_initial_wallet_states()) _first_subscription = False - _process_task = asyncio.create_task(process_messages(websocket, subscription_id)) + _process_task = asyncio.create_task(process_messages(websocket)) while True: try:# drop subscription now await process_messages(websocket, subscription_id) @@ -1363,7 +942,7 @@ async def wallet_watch_loop(): # Already subscribed logger.info("Already subscribed, continuing with existing subscription") if subscription_id: - process_task = asyncio.create_task(process_messages(websocket, subscription_id)) + process_task = asyncio.create_task(process_messages(websocket)) else: # process_messages completed (shouldn't happen unless there's an error) @@ -1379,9 +958,9 @@ async def wallet_watch_loop(): logger.error(f"An unexpected error occurred: {e}") await unsubscribe(websocket, subscription_id) - # await send_telegram_message("reconnecting...") + await send_telegram_message("reconnecting...") logger.info(f"Attempting to reconnect in {reconnect_delay} seconds...") - websocket.close() + await websocket.close() except Exception as e: logger.error(f"An unexpected error occurred - breaking watch loop: {e}") @@ -1401,22 +980,7 @@ async def subscribe(websocket): try: await websocket.send(json.dumps(request)) logger.info("Subscription request sent") - - response = await websocket.recv() - response_data = json.loads(response) - - if 'result' in response_data: - subscription_id = response_data['result'] - logger.info(f"Subscription successful. Subscription id: {subscription_id}") - return subscription_id - else: - logger.warning(f"Unexpected response: {response_data}") - return None - except websockets.exceptions.ConnectionClosedError as e: - logger.error(f"Connection closed unexpectedly: {e}") - # await send_telegram_message("Connection to Solana network was closed. Not listening for transactions right now. Attempting to reconnect...") - await websocket.close() - return None + return await process_messages(websocket) except Exception as e: logger.error(f"An unexpected error occurred: {e}") return None @@ -1433,14 +997,23 @@ async def unsubscribe(websocket, subscription_id): logger.info(f"Unsubscribed from subscription id: {subscription_id}") subscription_id = None -async def process_messages(websocket, subscription_id): +async def process_messages(websocket): try: while True: response = await websocket.recv() response_data = json.loads(response) logger.debug(f"Received response: {response_data}") - if 'params' in response_data: + if 'result' in response_data: + new_sub_id = response_data['result'] + if int(new_sub_id) > 1: + subscription_id = new_sub_id + logger.info(f"Subscription successful. New id: {subscription_id}") + elif new_sub_id: + logger.info(f"Existing subscription confirmed: {subscription_id}") + else: return None + return subscription_id + elif 'params' in response_data: log = response_data['params']['result'] logger.debug(f"Received transaction log: {log}") asyncio.create_task(process_log(log)) @@ -1449,7 +1022,7 @@ async def process_messages(websocket, subscription_id): except websockets.exceptions.ConnectionClosedError as e: logger.error(f"Connection closed unexpectedly: {e}") - await send_telegram_message("Connection to Solana network was closed. Not listening for transactions right now. Attempting to reconnect...") + # await send_telegram_message("Connection to Solana network was closed. Not listening for transactions right now. Attempting to reconnect...") pass except json.JSONDecodeError as e: logger.error(f"Failed to decode JSON: {e}") @@ -1476,56 +1049,77 @@ async def check_PK(): if not pk: logging.error("Private key not found in environment variables. Will not be able to sign transactions.") # send TG warning message - await send_telegram_message("Warning: Private key not found in environment variables. Will not be able to sign transactions.") + await telegram_utils.send_telegram_message("Warning: Private key not found in environment variables. Will not be able to sign transactions.") - +# Convert Flask app to ASGI +asgi_app = WsgiToAsgi(app) +solanaAPI = SolanaAPI() async def main(): - global bot, PROCESSING_LOG - # Initialize Telegram Bot - # Create a custom connection pool - conn_pool = aiohttp.TCPConnector(limit=100) # Increase the connection limit - timeout = aiohttp.ClientTimeout(total=30) # Set a longer timeout + global solanaAPI, bot, PROCESSING_LOG - bot = Bot(TELEGRAM_BOT_TOKEN) # , request=aiohttp.ClientSession(connector=conn_pool, timeout=timeout).request) - - await send_telegram_message("Solana Agent Started. Connecting to mainnet...") + telegram_utils.initialize() + await telegram_utils.send_telegram_message("Solana Agent Started. Connecting to mainnet...") await check_PK() # new: restart wallet_watch_loop every hour - while True: - wallet_watch_task = asyncio.create_task(wallet_watch_loop()) + await solanaAPI.wallet_watch_loop() + + # while True: + # wallet_watch_task = asyncio.create_task(solanaAPI.wallet_watch_loop()) - try: - # Wait for an hour or until the task completes, whichever comes first - await asyncio.wait_for(wallet_watch_task, timeout=3600) - except asyncio.TimeoutError: - # If an hour has passed, cancel the task if not PROCESSING - if PROCESSING_LOG: - logging.info("wallet_watch_loop is processing logs. Will not restart.") - await send_telegram_message("wallet_watch_loop is processing logs. Will not restart.") - else: - wallet_watch_task.cancel() - try: - await wallet_watch_task - except asyncio.CancelledError: - logging.info("wallet_watch_loop was cancelled after running for an hour") - except Exception as e: - logging.error(f"Error in wallet_watch_loop: {str(e)}") - await send_telegram_message(f"Error in wallet_watch_loop: {str(e)}") + # try: + # # Wait for an hour or until the task completes, whichever comes first + # await asyncio.wait_for(wallet_watch_task, timeout=3600) + # except asyncio.TimeoutError: + # # If an hour has passed, cancel the task if not PROCESSING + # if PROCESSING_LOG: + # logging.info("wallet_watch_loop is processing logs. Will not restart.") + # await telegram_utils.send_telegram_message("wallet_watch_loop is processing logs. Will not restart.") + # else: + # wallet_watch_task.cancel() + # try: + # await wallet_watch_task + # except asyncio.CancelledError: + # logging.info("wallet_watch_loop was cancelled after running for an hour") + # except Exception as e: + # logging.error(f"Error in wallet_watch_loop: {str(e)}") + # await telegram_utils.send_telegram_message(f"Error in wallet_watch_loop: {str(e)}") - logging.info("Restarting wallet_watch_loop") - await send_telegram_message("Restarting wallet_watch_loop") + # logging.info("Restarting wallet_watch_loop") + # await telegram_utils.send_telegram_message("Restarting wallet_watch_loop") -async def run_flask(): - loop = asyncio.get_running_loop() - await loop.run_in_executor(None, lambda: app.run(debug=False, port=3001, use_reloader=False)) + + +def run_asyncio_loop(loop): + asyncio.set_event_loop(loop) + loop.run_forever() async def run_all(): - await asyncio.gather( - main(), - run_flask() - ) + main_task = asyncio.create_task(main()) + await main_task if __name__ == '__main__': - asyncio.run(run_all()) + # Create a new event loop + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + + # Start the asyncio loop in a separate thread + thread = Thread(target=run_asyncio_loop, args=(loop,)) + thread.start() + + # Schedule the run_all coroutine in the event loop + asyncio.run_coroutine_threadsafe(run_all(), loop) + + # Run Uvicorn in the main thread + uvicorn.run( + "app:asgi_app", # Replace 'app' with the actual name of this Python file if different + host="127.0.0.1", + port=3001, + log_level="debug", + reload=True + ) + + # When Uvicorn exits, stop the asyncio loop + loop.call_soon_threadsafe(loop.stop) + thread.join() \ No newline at end of file diff --git a/crypto/sol/config.py b/crypto/sol/config.py new file mode 100644 index 0000000..e708df8 --- /dev/null +++ b/crypto/sol/config.py @@ -0,0 +1,59 @@ +# config.py + +import os +import logging +from dotenv import load_dotenv +from logging.handlers import RotatingFileHandler + +# Load environment variables +load_dotenv() +load_dotenv('.env.secret') + +# Configuration +DEVELOPER_CHAT_ID = os.getenv("DEVELOPER_CHAT_ID") +FOLLOWED_WALLET = os.getenv("FOLLOWED_WALLET") +YOUR_WALLET = os.getenv("YOUR_WALLET") +TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN") +SOLANA_WS_URL = os.getenv("SOLANA_WS_URL") +SOLANA_HTTP_URL = os.getenv("SOLANA_HTTP_URL") +DISPLAY_CURRENCY = os.getenv('DISPLAY_CURRENCY', 'USD') +BOT_NAME = os.getenv("BOT_NAME") + +# Token addresses (initialize with some known tokens) +TOKEN_ADDRESSES = { + "SOL": "So11111111111111111111111111111111111111112", + "USDC": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "TARD": "4nfn86ssbv7wiqcsw7bpvn46k24jhe334fudtyxhp1og", +} + +# Logging configuration +logging.basicConfig(level=logging.DEBUG) +logger = logging.getLogger(__name__) + +# Set up error logger +log_dir = './logs' +log_file = os.path.join(log_dir, 'error.log') +os.makedirs(log_dir, exist_ok=True) +error_file_handler = RotatingFileHandler( + log_file, + maxBytes=10*1024*1024, + backupCount=5 +) +error_file_handler.setLevel(logging.ERROR) +error_file_handler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S')) +error_logger = logging.getLogger('error_logger') +error_logger.setLevel(logging.ERROR) +error_logger.addHandler(error_file_handler) + +# Function to get all configuration +def get_config(): + return { + "DEVELOPER_CHAT_ID": DEVELOPER_CHAT_ID, + "FOLLOWED_WALLET": FOLLOWED_WALLET, + "YOUR_WALLET": YOUR_WALLET, + "TELEGRAM_BOT_TOKEN": TELEGRAM_BOT_TOKEN, + "SOLANA_WS_URL": SOLANA_WS_URL, + "SOLANA_HTTP_URL": SOLANA_HTTP_URL, + "DISPLAY_CURRENCY": DISPLAY_CURRENCY, + "BOT_NAME": BOT_NAME, + } \ No newline at end of file diff --git a/crypto/sol/logs/error.log b/crypto/sol/logs/error.log deleted file mode 100644 index 64f52a2..0000000 --- a/crypto/sol/logs/error.log +++ /dev/null @@ -1,740 +0,0 @@ -2024-10-09 07:59:16 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 07:59:16 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1014, in follow_move - private_key = Keypair.from_bytes(base58.b58decode(pk)) - ^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 08:02:14 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 08:02:14 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1014, in follow_move - private_key = Keypair.from_bytes(base58.b58decode(pk)) - ^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 08:48:26 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 08:48:26 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1021, in follow_move - private_key = Keypair.from_bytes(base58.b58decode(pk)) - ^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 09:08:18 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 09:08:18 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1007, in follow_move - private_key = Keypair.from_bytes(base58.b58decode(pk)) - ^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 09:15:19 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 09:15:19 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1007, in follow_move - private_key = Keypair.from_bytes(base58.b58decode(pk)) - ^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 09:17:10 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 09:17:10 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1007, in follow_move - private_key = Keypair.from_bytes(base58.b58decode(pk)) - ^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 09:23:01 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 09:23:01 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1007, in follow_move - private_key = Keypair.from_bytes(base58.b58decode(pk)) - ^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 09:38:53 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 09:38:53 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1007, in follow_move - private_key = Keypair.from_bytes(base58.b58decode(pk)) - ^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 10:40:35 [ERROR] Swap Follow Error: -'NoneType' object has no attribute 'rstrip' -2024-10-09 10:40:35 [ERROR] 'NoneType' object has no attribute 'rstrip' -Traceback (most recent call last): - File "/app/app.py", line 1007, in follow_move - logging.error(f"Error sending notification: {e}") - ^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/base58/__init__.py", line 117, in b58decode - v = v.rstrip() - ^^^^^^^^ -AttributeError: 'NoneType' object has no attribute 'rstrip' -2024-10-09 10:46:28 [ERROR] Swap Follow Error: - -2024-10-09 10:46:28 [ERROR] -Traceback (most recent call last): - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 59, in make_request - raw = await self.make_request_unparsed(body) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 66, in make_request_unparsed - return _after_request_unparsed(raw_response) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 137, in _after_request_unparsed - raw_response.raise_for_status() - File "/usr/local/lib/python3.12/site-packages/httpx/_models.py", line 763, in raise_for_status - raise HTTPStatusError(message, request=request, response=self) -httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'wss://api.mainnet-beta.solana.com' -For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/app/app.py", line 1026, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 62, in argument_decorator - raise internal_exception_cls(exc, func, *args, **kwargs) from exc -solana.exceptions.SolanaRpcException -2024-10-09 11:03:02 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1362911 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20744 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(41389), return_data: None, inner_instructions: None }) } -2024-10-09 11:03:02 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1362911 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20744 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(41389), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1026, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1362911 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20744 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(41389), return_data: None, inner_instructions: None }) } -2024-10-09 11:03:58 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1358884 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(45416), return_data: None, inner_instructions: None }) } -2024-10-09 11:03:58 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1358884 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(45416), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1026, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1358884 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(45416), return_data: None, inner_instructions: None }) } -2024-10-09 11:08:15 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1391445 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384858 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1380976 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23345 of 1399850 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: Route", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 815311374053", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1326322 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 42021 of 1364043 compute units", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 54483 of 1376505 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(77978), return_data: None, inner_instructions: None }) } -2024-10-09 11:08:15 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1391445 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384858 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1380976 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23345 of 1399850 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: Route", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 815311374053", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1326322 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 42021 of 1364043 compute units", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 54483 of 1376505 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(77978), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1026, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1391445 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384858 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1380976 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23345 of 1399850 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: Route", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 815311374053", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1326322 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 42021 of 1364043 compute units", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 54483 of 1376505 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(77978), return_data: None, inner_instructions: None }) } -2024-10-09 13:46:47 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1383977 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20023 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(20323), return_data: None, inner_instructions: None }) } -2024-10-09 13:46:47 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1383977 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20023 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(20323), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1383977 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20023 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(20323), return_data: None, inner_instructions: None }) } -2024-10-09 13:57:11 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1366470 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17185 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(37830), return_data: None, inner_instructions: None }) } -2024-10-09 13:57:11 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1366470 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17185 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(37830), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1366470 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17185 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(37830), return_data: None, inner_instructions: None }) } -2024-10-09 15:03:06 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1386815 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17185 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(17485), return_data: None, inner_instructions: None }) } -2024-10-09 15:03:06 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1386815 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17185 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(17485), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - f"Initiating move:\n (decimals: {token_info.get('decimals')})\n" - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1386815 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17185 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(17485), return_data: None, inner_instructions: None }) } -2024-10-09 15:08:30 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 13251 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(13551), return_data: None, inner_instructions: None }) } -2024-10-09 15:08:30 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 13251 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(13551), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - f"Initiating move:\n (decimals: {token_info.get('decimals')})\n" - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 13251 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(13551), return_data: None, inner_instructions: None }) } -2024-10-09 15:14:20 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382246 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21754 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(22054), return_data: None, inner_instructions: None }) } -2024-10-09 15:14:20 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382246 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21754 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(22054), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - f"Initiating move:\n (decimals: {token_info.get('decimals')})\n" - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382246 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21754 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(22054), return_data: None, inner_instructions: None }) } -2024-10-09 15:16:20 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1392795 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1386208 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1382326 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 21845 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1361725 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20430 of 1377855 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(42575), return_data: None, inner_instructions: None }) } -2024-10-09 15:16:20 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1392795 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1386208 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1382326 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 21845 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1361725 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20430 of 1377855 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(42575), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - f"Initiating move:\n (decimals: {token_info.get('decimals')})\n" - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1392795 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1386208 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1382326 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 21845 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1361725 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20430 of 1377855 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(42575), return_data: None, inner_instructions: None }) } -2024-10-09 15:19:07 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1392795 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1386208 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1382326 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 21845 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1357384 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1377855 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(46916), return_data: None, inner_instructions: None }) } -2024-10-09 15:19:07 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1392795 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1386208 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1382326 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 21845 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1357384 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1377855 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(46916), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - f"Initiating move:\n (decimals: {token_info.get('decimals')})\n" - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1392795 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1386208 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1382326 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 21845 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1357384 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1377855 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(46916), return_data: None, inner_instructions: None }) } -2024-10-09 15:20:44 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1595 of 1391295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384682 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4214 of 1380800 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23397 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1363114 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17489 of 1376303 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(41186), return_data: None, inner_instructions: None }) } -2024-10-09 15:20:44 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1595 of 1391295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384682 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4214 of 1380800 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23397 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1363114 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17489 of 1376303 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(41186), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - f"Initiating move:\n (decimals: {token_info.get('decimals')})\n" - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1595 of 1391295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384682 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4214 of 1380800 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23397 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1363114 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17489 of 1376303 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(41186), return_data: None, inner_instructions: None }) } -2024-10-09 15:22:24 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1595 of 1391295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384682 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4214 of 1380800 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23397 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1358283 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 22320 of 1376303 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(46017), return_data: None, inner_instructions: None }) } -2024-10-09 15:22:24 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1595 of 1391295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384682 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4214 of 1380800 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23397 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1358283 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 22320 of 1376303 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(46017), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1031, in follow_move - f"Initiating move:\n (decimals: {token_info.get('decimals')})\n" - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1595 of 1391295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1384682 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4214 of 1380800 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23397 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1358283 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 22320 of 1376303 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(46017), return_data: None, inner_instructions: None }) } -2024-10-09 16:13:48 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1379229 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(25071), return_data: None, inner_instructions: None }) } -2024-10-09 16:13:48 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1379229 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(25071), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1061, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1379229 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 24771 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(25071), return_data: None, inner_instructions: None }) } -2024-10-09 16:37:40 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1386729 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17271 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(17571), return_data: None, inner_instructions: None }) } -2024-10-09 16:37:40 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1386729 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17271 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(17571), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1061, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1386729 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 17271 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(17571), return_data: None, inner_instructions: None }) } -2024-10-10 12:17:44 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 16186 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(16486), return_data: None, inner_instructions: None }) } -2024-10-10 12:17:44 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 16186 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(16486), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1064, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 16186 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(16486), return_data: None, inner_instructions: None }) } -2024-10-10 12:38:57 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382010 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21990 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(22290), return_data: None, inner_instructions: None }) } -2024-10-10 12:38:57 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382010 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21990 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(22290), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1064, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382010 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21990 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(22290), return_data: None, inner_instructions: None }) } -2024-10-10 12:41:59 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382864 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21136 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(21436), return_data: None, inner_instructions: None }) } -2024-10-10 12:41:59 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382864 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21136 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(21436), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1064, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1382864 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21136 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(21436), return_data: None, inner_instructions: None }) } -2024-10-10 13:01:13 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1361916 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21739 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(42384), return_data: None, inner_instructions: None }) } -2024-10-10 13:01:13 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1361916 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21739 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(42384), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1065, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 3: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(3, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]", "Program log: CreateIdempotent", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: GetAccountDataSize", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 1394295 compute units", "Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 11111111111111111111111111111111 invoke [2]", "Program 11111111111111111111111111111111 success", "Program log: Initialize the associated token account", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeImmutableOwner", "Program log: Please upgrade to SPL Token 2022 for immutable owner support", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 1387708 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: InitializeAccount3", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 1383826 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 1399700 compute units", "Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1361916 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 21739 of 1379355 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(42384), return_data: None, inner_instructions: None }) } -2024-10-10 13:01:16 [ERROR] Swap Follow Error: - -2024-10-10 13:01:16 [ERROR] -Traceback (most recent call last): - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 59, in make_request - raw = await self.make_request_unparsed(body) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 66, in make_request_unparsed - return _after_request_unparsed(raw_response) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 137, in _after_request_unparsed - raw_response.raise_for_status() - File "/usr/local/lib/python3.12/site-packages/httpx/_models.py", line 763, in raise_for_status - raise HTTPStatusError(message, request=request, response=self) -httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'wss://api.mainnet-beta.solana.com' -For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/app/app.py", line 1065, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 62, in argument_decorator - raise internal_exception_cls(exc, func, *args, **kwargs) from exc -solana.exceptions.SolanaRpcException -2024-10-10 13:17:33 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 15768 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(16068), return_data: None, inner_instructions: None }) } -2024-10-10 13:17:33 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 15768 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(16068), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1065, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: Program failed to complete", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, ProgramFailedToComplete)), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program log: panicked at src/token.rs:539:43:\nrange end index 64 out of range for slice of length 0", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 15768 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: SBF program panicked"]), accounts: None, units_consumed: Some(16068), return_data: None, inner_instructions: None }) } -2024-10-10 13:25:04 [ERROR] Swap Follow Error: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1383021 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20979 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(21279), return_data: None, inner_instructions: None }) } -2024-10-10 13:25:04 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1383021 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20979 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(21279), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1065, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(1))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program log: Error: insufficient funds", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4300 of 1383021 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA failed: custom program error: 0x1", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 20979 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1"]), accounts: None, units_consumed: Some(21279), return_data: None, inner_instructions: None }) } -2024-10-20 21:57:29 [ERROR] Move Failed: -The read operation timed out -2024-10-20 21:57:29 [ERROR] The read operation timed out -Traceback (most recent call last): - File "/usr/local/lib/python3.12/site-packages/httpx/_transports/default.py", line 72, in map_httpcore_exceptions - yield - File "/usr/local/lib/python3.12/site-packages/httpx/_transports/default.py", line 236, in handle_request - resp = self._pool.handle_request(req) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py", line 216, in handle_request - raise exc from None - File "/usr/local/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py", line 196, in handle_request - response = connection.handle_request( - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpcore/_sync/connection.py", line 101, in handle_request - return self._connection.handle_request(request) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpcore/_sync/http11.py", line 143, in handle_request - raise exc - File "/usr/local/lib/python3.12/site-packages/httpcore/_sync/http11.py", line 113, in handle_request - ) = self._receive_response_headers(**kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpcore/_sync/http11.py", line 186, in _receive_response_headers - event = self._receive_event(timeout=timeout) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpcore/_sync/http11.py", line 224, in _receive_event - data = self._network_stream.read( - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpcore/_backends/sync.py", line 124, in read - with map_exceptions(exc_map): - ^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__ - self.gen.throw(value) - File "/usr/local/lib/python3.12/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions - raise to_exc(exc) from exc -httpcore.ReadTimeout: The read operation timed out - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/app/app.py", line 1166, in follow_move - async_client = AsyncClient(SOLANA_WS_URL) - ^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 679, in swap - quoteResponse = await self.quote( - ^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 627, in quote - quote_response = httpx.get(url=quote_url).json() - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpx/_api.py", line 210, in get - return request( - ^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpx/_api.py", line 118, in request - return client.request( - ^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 837, in request - return self.send(request, auth=auth, follow_redirects=follow_redirects) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 926, in send - response = self._send_handling_auth( - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 954, in _send_handling_auth - response = self._send_handling_redirects( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 991, in _send_handling_redirects - response = self._send_single_request(request) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1027, in _send_single_request - response = transport.handle_request(request) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/httpx/_transports/default.py", line 235, in handle_request - with map_httpcore_exceptions(): - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__ - self.gen.throw(value) - File "/usr/local/lib/python3.12/site-packages/httpx/_transports/default.py", line 89, in map_httpcore_exceptions - raise mapped_exc(message) from exc -httpx.ReadTimeout: The read operation timed out -2024-10-20 21:57:30 [ERROR] Move Failed: -Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -2024-10-20 21:57:30 [ERROR] Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -Traceback (most recent call last): - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 629, in quote - quote_response['routePlan'] - ~~~~~~~~~~~~~~^^^^^^^^^^^^^ -KeyError: 'routePlan' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app.py", line 1166, in follow_move - async_client = AsyncClient(SOLANA_WS_URL) - ^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 679, in swap - quoteResponse = await self.quote( - ^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 632, in quote - raise Exception(quote_response['error']) -Exception: Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -2024-10-20 21:57:33 [ERROR] Move Failed: -Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -2024-10-20 21:57:33 [ERROR] Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -Traceback (most recent call last): - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 629, in quote - quote_response['routePlan'] - ~~~~~~~~~~~~~~^^^^^^^^^^^^^ -KeyError: 'routePlan' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app.py", line 1166, in follow_move - async_client = AsyncClient(SOLANA_WS_URL) - ^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 679, in swap - quoteResponse = await self.quote( - ^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 632, in quote - raise Exception(quote_response['error']) -Exception: Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -2024-10-20 21:57:33 [ERROR] Swap Follow Error: -cannot access local variable 'response' where it is not associated with a value -2024-10-20 21:57:33 [ERROR] cannot access local variable 'response' where it is not associated with a value -Traceback (most recent call last): - File "/app/app.py", line 1204, in follow_move - amount = amount * 0.75 - File "/app/app.py", line 599, in get_wallet_balances - logging.error(f"Error getting wallet balances: {str(e)}") - ^^^^^^^^ -UnboundLocalError: cannot access local variable 'response' where it is not associated with a value -2024-10-21 07:26:41 [ERROR] Move Failed: -SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1771", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(6001))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1382793 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 7413317027569", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1333603 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1325901 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 52246 of 1370756 compute units", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1316195 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [2]", "Program log: ray_log: A16OGBUAAAAAAAAAAAAAAAABAAAAAAAAABtgGxUAAAAAcFGzMhIGAABUUQ3EYwgAAGccOg8AAAAA", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1289657 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 1282031 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30451 of 1306892 compute units", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1274067 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 673018345630", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 1225740 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1218087 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt consumed 56495 of 1266396 compute units", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1207586 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program log: AnchorError thrown in programs/jupiter/src/lib.rs:585. Error Code: SlippageToleranceExceeded. Error Number: 6001. Error Message: Slippage tolerance exceeded.", "Program log: Left: 43339729", "Program log: Right: 43362050", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 199316 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1771"]), accounts: None, units_consumed: Some(199616), return_data: None, inner_instructions: None }) } -AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAFEF8ss0Ijtep7x/QSQpelS9R/BLJJV8nYbkzHEgl6DWzmOFd2n25tuM+O/1eD2ihdf9x3I0z28Sq/iT8zbzEp8G1IH3U7ixqCaqbGoeydkTdTUUCkOQYTvNcEdWHVAFRzK0lvQkeFrHOnH/VIZV2eHsP0MRaqDX7AAqfqmHnGeMCOZn/LU4VSNrEZJg9hJjEvfwMjmNLCvJDpEyG0zH7Y1yRxM32R3yvnX/HBzojB9fApPOfuRWL27j4EX6B/qtMR3ZZQr5cDjeIUDo36Z8fIYs5w5bQtIw7N8HaurmKKk51Dsq78ybAhS/z3pI+NLtAmg7awmWSpft2HqsztqRU8ax3Mj/r/oP5ATGc5hI7qeU5QuiWjtLinKPbfRqPX7fjmctCBOG4edSvPLw1jCYM6gSsw50WSxwTyJCwZwPgQ5L2823zDUsxqG5ijrqPCB6f2lyFhze9/3f+5F5Y5m+Bc+cwDBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAR51VvyMcBu7nTFbs5oFQf9sbLeo/SOUQKxzaJWvBOPmoAL/0yHNoiWwg/BQHPr8ctao3X+gf5NvcgrpN+3XniyIKaZBLbu2IoL6YkUKYD80agehUczMoMmMcu2LhFij7Q/+if11/ZKdMCbHylYed5LCas238ndUUsyGqezjOXoEd8rjajwoFmY8jrhaBvsDL5Zahs5Z/FF0O6SMfd1QaoDCwAFAsBcFQALAAkDBBcBAAAAAAAMNxsNAAcBBAIOIQwMDwwcGw0YARYJGhkXCCIeGxMdExUUExMTExMTExMJBQ0gGw0QBREEEgYDCh8uwSCbM0HWnIECAwAAABEBZAABB2QBAhEBZAID2h5mBwAAAADyVZwCAAAAAGQAAAPvQyb1eS9sOzNqJRRfI95OXS0XoerHLNQS97NH9b7hxQMShg8GDUUEDBQRUjCdc1ZN5rgbYDY4PCgOqwZ3z8ZhitSJO/hZ8YdkSRwDn56cAQSklxFTCCj5aaUf2LjhOBzA/gejCiAKOXuMbjkdddnfkAUDAgABhAGF -{'order_id': None, 'token_in': 'CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump', 'token_out': 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'amount_in': 3000.0, 'amount_out': 1055.732395, 'amount_in_USD': 1045.452, 'amount_out_USD': 1055.732395, 'percentage_swapped': 28.03275520023629, 'symbol_in': 'GOAT', 'symbol_out': 'USDC', 'before_source_balance': 10701.766482} -2024-10-21 07:26:41 [ERROR] SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1771", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(6001))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1382793 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 7413317027569", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1333603 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1325901 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 52246 of 1370756 compute units", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1316195 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [2]", "Program log: ray_log: A16OGBUAAAAAAAAAAAAAAAABAAAAAAAAABtgGxUAAAAAcFGzMhIGAABUUQ3EYwgAAGccOg8AAAAA", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1289657 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 1282031 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30451 of 1306892 compute units", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1274067 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 673018345630", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 1225740 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1218087 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt consumed 56495 of 1266396 compute units", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1207586 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program log: AnchorError thrown in programs/jupiter/src/lib.rs:585. Error Code: SlippageToleranceExceeded. Error Number: 6001. Error Message: Slippage tolerance exceeded.", "Program log: Left: 43339729", "Program log: Right: 43362050", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 199316 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1771"]), accounts: None, units_consumed: Some(199616), return_data: None, inner_instructions: None }) } -Traceback (most recent call last): - File "/app/app.py", line 1222, in follow_move - result = await async_client.send_raw_transaction(txn=bytes(signed_txn), opts=opts) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/async_api.py", line 1002, in send_raw_transaction - resp = await self._provider.make_request(body, SendTransactionResp) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/exceptions.py", line 60, in argument_decorator - return await func(*args, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/async_http.py", line 60, in make_request - return _parse_raw(raw, parser=parser) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/solana/rpc/providers/core.py", line 98, in _parse_raw - raise RPCException(parsed) -solana.rpc.core.RPCException: SendTransactionPreflightFailureMessage { message: "Transaction simulation failed: Error processing Instruction 2: custom program error: 0x1771", data: RpcSimulateTransactionResult(RpcSimulateTransactionResult { err: Some(InstructionError(2, Custom(6001))), logs: Some(["Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program ComputeBudget111111111111111111111111111111 invoke [1]", "Program ComputeBudget111111111111111111111111111111 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", "Program log: Instruction: SharedAccountsRoute", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1382793 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 7413317027569", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1333603 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1325901 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 52246 of 1370756 compute units", "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1316195 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [2]", "Program log: ray_log: A16OGBUAAAAAAAAAAAAAAAABAAAAAAAAABtgGxUAAAAAcFGzMhIGAABUUQ3EYwgAAGccOg8AAAAA", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1289657 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 1282031 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30451 of 1306892 compute units", "Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1274067 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt invoke [2]", "Program log: Instruction: Swap", "Program log: fee_growth: 673018345630", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 1225740 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", "Program log: Instruction: Transfer", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 1218087 compute units", "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt consumed 56495 of 1266396 compute units", "Program H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt success", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 1207586 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", "Program log: AnchorError thrown in programs/jupiter/src/lib.rs:585. Error Code: SlippageToleranceExceeded. Error Number: 6001. Error Message: Slippage tolerance exceeded.", "Program log: Left: 43339729", "Program log: Right: 43362050", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 199316 of 1399700 compute units", "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 failed: custom program error: 0x1771"]), accounts: None, units_consumed: Some(199616), return_data: None, inner_instructions: None }) } -2024-10-21 07:26:43 [ERROR] Move Failed: -Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAFEF8ss0Ijtep7x/QSQpelS9R/BLJJV8nYbkzHEgl6DWzmOFd2n25tuM+O/1eD2ihdf9x3I0z28Sq/iT8zbzEp8G1IH3U7ixqCaqbGoeydkTdTUUCkOQYTvNcEdWHVAFRzK0lvQkeFrHOnH/VIZV2eHsP0MRaqDX7AAqfqmHnGeMCOZn/LU4VSNrEZJg9hJjEvfwMjmNLCvJDpEyG0zH7Y1yRxM32R3yvnX/HBzojB9fApPOfuRWL27j4EX6B/qtMR3ZZQr5cDjeIUDo36Z8fIYs5w5bQtIw7N8HaurmKKk51Dsq78ybAhS/z3pI+NLtAmg7awmWSpft2HqsztqRU8ax3Mj/r/oP5ATGc5hI7qeU5QuiWjtLinKPbfRqPX7fjmctCBOG4edSvPLw1jCYM6gSsw50WSxwTyJCwZwPgQ5L2823zDUsxqG5ijrqPCB6f2lyFhze9/3f+5F5Y5m+Bc+cwDBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAR51VvyMcBu7nTFbs5oFQf9sbLeo/SOUQKxzaJWvBOPmoAL/0yHNoiWwg/BQHPr8ctao3X+gf5NvcgrpN+3XniyIKaZBLbu2IoL6YkUKYD80agehUczMoMmMcu2LhFij7Q/+if11/ZKdMCbHylYed5LCas238ndUUsyGqezjOXoEd8rjajwoFmY8jrhaBvsDL5Zahs5Z/FF0O6SMfd1QaoDCwAFAsBcFQALAAkDBBcBAAAAAAAMNxsNAAcBBAIOIQwMDwwcGw0YARYJGhkXCCIeGxMdExUUExMTExMTExMJBQ0gGw0QBREEEgYDCh8uwSCbM0HWnIECAwAAABEBZAABB2QBAhEBZAID2h5mBwAAAADyVZwCAAAAAGQAAAPvQyb1eS9sOzNqJRRfI95OXS0XoerHLNQS97NH9b7hxQMShg8GDUUEDBQRUjCdc1ZN5rgbYDY4PCgOqwZ3z8ZhitSJO/hZ8YdkSRwDn56cAQSklxFTCCj5aaUf2LjhOBzA/gejCiAKOXuMbjkdddnfkAUDAgABhAGF -{'order_id': None, 'token_in': 'CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump', 'token_out': 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'amount_in': 3000.0, 'amount_out': 1055.732395, 'amount_in_USD': 1045.452, 'amount_out_USD': 1055.732395, 'percentage_swapped': 28.03275520023629, 'symbol_in': 'GOAT', 'symbol_out': 'USDC', 'before_source_balance': 10701.766482} -2024-10-21 07:26:43 [ERROR] Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -Traceback (most recent call last): - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 629, in quote - quote_response['routePlan'] - ~~~~~~~~~~~~~~^^^^^^^^^^^^^ -KeyError: 'routePlan' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app.py", line 1208, in follow_move - transaction_data = await jupiter.swap( - ^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 679, in swap - quoteResponse = await self.quote( - ^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 632, in quote - raise Exception(quote_response['error']) -Exception: Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -2024-10-21 07:26:44 [ERROR] Move Failed: -Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAFEF8ss0Ijtep7x/QSQpelS9R/BLJJV8nYbkzHEgl6DWzmOFd2n25tuM+O/1eD2ihdf9x3I0z28Sq/iT8zbzEp8G1IH3U7ixqCaqbGoeydkTdTUUCkOQYTvNcEdWHVAFRzK0lvQkeFrHOnH/VIZV2eHsP0MRaqDX7AAqfqmHnGeMCOZn/LU4VSNrEZJg9hJjEvfwMjmNLCvJDpEyG0zH7Y1yRxM32R3yvnX/HBzojB9fApPOfuRWL27j4EX6B/qtMR3ZZQr5cDjeIUDo36Z8fIYs5w5bQtIw7N8HaurmKKk51Dsq78ybAhS/z3pI+NLtAmg7awmWSpft2HqsztqRU8ax3Mj/r/oP5ATGc5hI7qeU5QuiWjtLinKPbfRqPX7fjmctCBOG4edSvPLw1jCYM6gSsw50WSxwTyJCwZwPgQ5L2823zDUsxqG5ijrqPCB6f2lyFhze9/3f+5F5Y5m+Bc+cwDBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAR51VvyMcBu7nTFbs5oFQf9sbLeo/SOUQKxzaJWvBOPmoAL/0yHNoiWwg/BQHPr8ctao3X+gf5NvcgrpN+3XniyIKaZBLbu2IoL6YkUKYD80agehUczMoMmMcu2LhFij7Q/+if11/ZKdMCbHylYed5LCas238ndUUsyGqezjOXoEd8rjajwoFmY8jrhaBvsDL5Zahs5Z/FF0O6SMfd1QaoDCwAFAsBcFQALAAkDBBcBAAAAAAAMNxsNAAcBBAIOIQwMDwwcGw0YARYJGhkXCCIeGxMdExUUExMTExMTExMJBQ0gGw0QBREEEgYDCh8uwSCbM0HWnIECAwAAABEBZAABB2QBAhEBZAID2h5mBwAAAADyVZwCAAAAAGQAAAPvQyb1eS9sOzNqJRRfI95OXS0XoerHLNQS97NH9b7hxQMShg8GDUUEDBQRUjCdc1ZN5rgbYDY4PCgOqwZ3z8ZhitSJO/hZ8YdkSRwDn56cAQSklxFTCCj5aaUf2LjhOBzA/gejCiAKOXuMbjkdddnfkAUDAgABhAGF -{'order_id': None, 'token_in': 'CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump', 'token_out': 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'amount_in': 3000.0, 'amount_out': 1055.732395, 'amount_in_USD': 1045.452, 'amount_out_USD': 1055.732395, 'percentage_swapped': 28.03275520023629, 'symbol_in': 'GOAT', 'symbol_out': 'USDC', 'before_source_balance': 10701.766482} -2024-10-21 07:26:44 [ERROR] Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } -Traceback (most recent call last): - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 629, in quote - quote_response['routePlan'] - ~~~~~~~~~~~~~~^^^^^^^^^^^^^ -KeyError: 'routePlan' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "/app/app.py", line 1208, in follow_move - transaction_data = await jupiter.swap( - ^^^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 679, in swap - quoteResponse = await self.quote( - ^^^^^^^^^^^^^^^^^ - File "/usr/local/lib/python3.12/site-packages/jupiter_python_sdk/jupiter.py", line 632, in quote - raise Exception(quote_response['error']) -Exception: Query parameter amount cannot be parsed: ParseIntError { kind: InvalidDigit } diff --git a/crypto/sol/logs/token_info.json b/crypto/sol/logs/token_info.json deleted file mode 100644 index bf28f68..0000000 --- a/crypto/sol/logs/token_info.json +++ /dev/null @@ -1,544 +0,0 @@ -{ - "HnKkzR1YtFbUUxM6g3iVRS2RY68KHhGV7bNdfF1GCsJB": { - "price": 0.007885, - "decimals": 9, - "name": "Kamala Horris", - "symbol": "KAMA", - "address": "HnKkzR1YtFbUUxM6g3iVRS2RY68KHhGV7bNdfF1GCsJB", - "holdedAmount": 33500.0, - "priice": 0.007923 - }, - "HUdqc5MR5h3FssESabPnQ1GTgTcPvnNudAuLj5J6a9sU": { - "price": 0.004041, - "decimals": 9, - "name": "BONGO CAT", - "symbol": "BONGO", - "address": "HUdqc5MR5h3FssESabPnQ1GTgTcPvnNudAuLj5J6a9sU" - }, - "4y9E3tJpGNzRr1592oWTPECgyp2VDSc1Bf3DqAm5FZsK": { - "decimals": 6, - "name": "FATGF", - "symbol": "FATGF", - "address": "4y9E3tJpGNzRr1592oWTPECgyp2VDSc1Bf3DqAm5FZsK", - "holdedAmount": 30000.0, - "priice": 0.001662, - "price": 0.001539 - }, - "4GniFbshqU6VtWCLJnKadswa8QCk2cFg8cgBZrhe9dam": { - "price": 0.005201, - "decimals": 6, - "name": "GOOFY", - "symbol": "GOOFY", - "address": "4GniFbshqU6VtWCLJnKadswa8QCk2cFg8cgBZrhe9dam", - "holdedAmount": 4500.0, - "priice": 0.004851 - }, - "3psH1Mj1f7yUfaD5gh6Zj7epE8hhrMkMETgv5TshQA4o": { - "price": 0.008097, - "decimals": 9, - "name": "jeo boden", - "symbol": "boden", - "address": "3psH1Mj1f7yUfaD5gh6Zj7epE8hhrMkMETgv5TshQA4o", - "holdedAmount": 6400.0 - }, - "8NNXWrWVctNw1UFeaBypffimTdcLCcD8XJzHvYsmgwpF": { - "price": 0.02584, - "decimals": 6, - "name": "Brainlet", - "symbol": "BRAINLET", - "address": "8NNXWrWVctNw1UFeaBypffimTdcLCcD8XJzHvYsmgwpF", - "holdedAmount": 7380.54934 - }, - "6D7NaB2xsLd7cauWu1wKk6KBsJohJmP2qZH9GEfVi5Ui": { - "price": 0.02995, - "decimals": 6, - "name": "Shark Cat", - "symbol": "SC", - "address": "6D7NaB2xsLd7cauWu1wKk6KBsJohJmP2qZH9GEfVi5Ui", - "holdedAmount": 5000.0 - }, - "Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw": { - "price": 0.002301, - "decimals": 8, - "name": "LandWolf", - "symbol": "WOLF", - "address": "Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw", - "holdedAmount": 108000.0 - }, - "3W52uCb8NW8ruMF9mmJX3oKiYAjdPai4633srsZFQCS6": { - "decimals": 6, - "name": "Biao Coin", - "symbol": "$BIAO", - "address": "3W52uCb8NW8ruMF9mmJX3oKiYAjdPai4633srsZFQCS6", - "holdedAmount": 1650000.0 - }, - "5xNLcLCaXfJJiHKzzPuEqFBLJMETaPKcnEfCNL5SB2cT": { - "decimals": 9, - "name": "Dallino", - "symbol": "Dall", - "address": "5xNLcLCaXfJJiHKzzPuEqFBLJMETaPKcnEfCNL5SB2cT", - "holdedAmount": 708677.532051592, - "priice": 4.026e-06, - "price": 4.026e-06 - }, - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v": { - "price": 1.0, - "decimals": 6, - "name": "USD Coin", - "symbol": "USDC", - "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "holdedAmount": 11.528114, - "priice": 1.00073 - }, - "Akev8YDBQfuCv33M1tjDcaUFAsY4Q5izMSfhbozL1Q6j": { - "decimals": 9, - "name": "Ceiling Cat", - "symbol": "CEILINGCAT", - "address": "Akev8YDBQfuCv33M1tjDcaUFAsY4Q5izMSfhbozL1Q6j", - "holdedAmount": 511117.33566278, - "priice": 3.585e-06, - "price": 0.000102038145 - }, - "BkVeSP2GsXV3AYoRJBSZTpFE8sXmcuGnRQcFgoWspump": { - "price": 0.001581, - "decimals": 6, - "name": "autism", - "symbol": "autism", - "address": "BkVeSP2GsXV3AYoRJBSZTpFE8sXmcuGnRQcFgoWspump", - "holdedAmount": 71123.480231 - }, - "6cvrZWgEUkr82yKAmxp5cQu7wgYYBPULf16EUBp4pump": { - "price": 0.01385, - "decimals": 6, - "name": "Manifest", - "symbol": "MANIFEST", - "address": "6cvrZWgEUkr82yKAmxp5cQu7wgYYBPULf16EUBp4pump", - "holdedAmount": 12940.81255 - }, - "D8r8XTuCrUhLheWeGXSwC3G92RhASficV3YA7B2XWcLv": { - "price": 0.002363, - "holdedAmount": 66511.860358533, - "decimals": 9, - "name": "catwifbag", - "symbol": "BAG", - "address": "D8r8XTuCrUhLheWeGXSwC3G92RhASficV3YA7B2XWcLv" - }, - "2GPJhV9jNrj7TaLYMRgWkcy6sTKLcwntv7nZ7qDyMRGM": { - "price": 0.006397, - "decimals": 6, - "name": "Believe In Something", - "symbol": "bis", - "address": "2GPJhV9jNrj7TaLYMRgWkcy6sTKLcwntv7nZ7qDyMRGM", - "holdedAmount": 21000.0 - }, - "8mtVH6ZKf3c8zYMHKdgRyXPKJoSR6d56FPDQDUdSQxdA": { - "decimals": 6, - "name": "Fart Coin", - "symbol": "Fart", - "address": "8mtVH6ZKf3c8zYMHKdgRyXPKJoSR6d56FPDQDUdSQxdA", - "holdedAmount": 672875.569584, - "price": 0.0 - }, - "r8kCxSyaKCQBgs5v1dSTqheUU2ur8bLiYgBThMpAVyb": { - "decimals": 6, - "name": "Retardigrade", - "symbol": "TARD", - "address": "r8kCxSyaKCQBgs5v1dSTqheUU2ur8bLiYgBThMpAVyb", - "holdedAmount": 176920.153819 - }, - "8Ki8DpuWNxu9VsS3kQbarsCWMcFGWkzzA8pUPto9zBd5": { - "price": 0.06036, - "decimals": 9, - "name": "LOCK IN", - "symbol": "LOCKIN", - "address": "8Ki8DpuWNxu9VsS3kQbarsCWMcFGWkzzA8pUPto9zBd5", - "holdedAmount": 562.91513794 - }, - "fESbUKjuMY6jzDH9VP8cy4p3pu2q5W2rK2XghVfNseP": { - "price": 0.0004163, - "decimals": 6, - "name": "CatFrogDogShark", - "symbol": "SOLANA", - "address": "fESbUKjuMY6jzDH9VP8cy4p3pu2q5W2rK2XghVfNseP", - "holdedAmount": 211284.151827, - "priice": 0.0005751 - }, - "Av6qVigkb7USQyPXJkUvAEm4f599WTRvd75PUWBA9eNm": { - "price": 0.0107, - "decimals": 9, - "name": "Costco Hot Dog", - "symbol": "COST", - "address": "Av6qVigkb7USQyPXJkUvAEm4f599WTRvd75PUWBA9eNm", - "holdedAmount": 22669.168723884, - "priice": 0.008802 - }, - "69kdRLyP5DTRkpHraaSZAQbWmAwzF9guKjZfzMXzcbAs": { - "price": 2.147e-06, - "decimals": 6, - "name": "American Coin", - "symbol": "USA", - "address": "69kdRLyP5DTRkpHraaSZAQbWmAwzF9guKjZfzMXzcbAs", - "holdedAmount": 936370585.712574 - }, - "DEJiPKx5GActUtB6qUssreUxkhXtL4hTQAAJZ7Ccw8se": { - "price": 0.01023, - "decimals": 6, - "name": "Rawr", - "symbol": "XD", - "address": "DEJiPKx5GActUtB6qUssreUxkhXtL4hTQAAJZ7Ccw8se", - "holdedAmount": 31264.506258 - }, - "DPaQfq5sFnoqw2Sh9WMmmASFL9LNu6RdtDqwE1tab2tB": { - "price": 0.5156, - "decimals": 9, - "name": "Skibidi Toilet", - "symbol": "SKBDI", - "address": "DPaQfq5sFnoqw2Sh9WMmmASFL9LNu6RdtDqwE1tab2tB", - "holdedAmount": 1e-09, - "priice": 0.3638 - }, - "dekNoN3D8mXa4JHLwTbVXz8aPAyJUkk443UjcSpJKi4": { - "price": 0.004308, - "decimals": 6, - "name": "peanie", - "symbol": "peanie", - "address": "dekNoN3D8mXa4JHLwTbVXz8aPAyJUkk443UjcSpJKi4", - "holdedAmount": 29097.22112, - "priice": 0.004563 - }, - "PzuaVAUH2tfxGZcbBR6kMxeJsBngnsPLFotGJNCtcsd": { - "price": 0.04829, - "decimals": 8, - "name": "ZynCoin (Wormhole)", - "symbol": "ZYN", - "address": "PzuaVAUH2tfxGZcbBR6kMxeJsBngnsPLFotGJNCtcsd", - "holdedAmount": 2424.00722783, - "priice": 0.0591 - }, - "So11111111111111111111111111111111111111112": { - "decimals": 9, - "name": "Wrapped SOL", - "symbol": "SOL", - "address": "So11111111111111111111111111111111111111112", - "priice": 142.85, - "price": 170.71 - }, - "4nfn86ssbv7wiqcsw7bpvn46k24jhe334fudtyxhp1og": { - "symbol": null, - "price": 0.0 - }, - "SOL": { - "symbol": null, - "price": 170.668067692 - }, - "UwU8RVXB69Y6Dcju6cN2Qef6fykkq6UUNpB15rZku6Z": { - "decimals": 6, - "name": "Unicorn", - "symbol": "UWU", - "address": "UwU8RVXB69Y6Dcju6cN2Qef6fykkq6UUNpB15rZku6Z", - "holdedAmount": 238181.964433, - "price": 0.001013 - }, - "GtDZKAqvMZMnti46ZewMiXCa4oXF4bZxwQPoKzXPFxZn": { - "decimals": 9, - "name": "nubcat", - "symbol": "nub", - "address": "GtDZKAqvMZMnti46ZewMiXCa4oXF4bZxwQPoKzXPFxZn", - "holdedAmount": 62626.296625781, - "price": 0.03326 - }, - "DtR4D9FtVoTX2569gaL837ZgrB6wNjj6tkmnX9Rdk9B2": { - "decimals": 6, - "name": "aura", - "symbol": "aura", - "address": "DtR4D9FtVoTX2569gaL837ZgrB6wNjj6tkmnX9Rdk9B2", - "holdedAmount": 9919.76735, - "price": 0.02653 - }, - "24gG4br5xFBRmxdqpgirtxgcr7BaWoErQfc2uyDp2Qhh": { - "decimals": 6, - "name": "NOSTALGIA", - "symbol": "NOS", - "address": "24gG4br5xFBRmxdqpgirtxgcr7BaWoErQfc2uyDp2Qhh", - "holdedAmount": 24367.98915, - "price": 0.00271846 - }, - "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm": { - "decimals": 6, - "name": "dogwifhat", - "symbol": "$WIF", - "address": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", - "holdedAmount": 0.00935, - "price": 2.39 - }, - "26KMQVgDUoB6rEfnJ51yAABWWJND8uMtpnQgsHQ64Udr": { - "decimals": 6, - "name": "SAD HAMSTER", - "symbol": "HAMMY", - "address": "26KMQVgDUoB6rEfnJ51yAABWWJND8uMtpnQgsHQ64Udr", - "holdedAmount": 1610.696945, - "price": 0.02781 - }, - "6yjNqPzTSanBWSa6dxVEgTjePXBrZ2FoHLDQwYwEsyM6": { - "decimals": 6, - "name": "Chudjak", - "symbol": "Chud", - "address": "6yjNqPzTSanBWSa6dxVEgTjePXBrZ2FoHLDQwYwEsyM6", - "holdedAmount": 4124.745134, - "price": 0.02795 - }, - "4ytpZgVoNB66bFs6NRCUaAVsLdtYk2fHq4U92Jnjpump": { - "decimals": 6, - "name": "Banana Tape Wall", - "symbol": "BTW", - "address": "4ytpZgVoNB66bFs6NRCUaAVsLdtYk2fHq4U92Jnjpump", - "holdedAmount": 0.996778, - "price": 0.00360963 - }, - "2JcXacFwt9mVAwBQ5nZkYwCyXQkRcdsYrDXn6hj22SbP": { - "decimals": 6, - "name": "mini", - "symbol": "mini", - "address": "2JcXacFwt9mVAwBQ5nZkYwCyXQkRcdsYrDXn6hj22SbP", - "holdedAmount": 3633.845994, - "price": 0.06975 - }, - "5Wd2ALxQfnpgQKCyH4WL9giBiiuuLuJs84CJxfQccvmN": { - "decimals": 6, - "name": "real fast", - "symbol": "speed", - "address": "5Wd2ALxQfnpgQKCyH4WL9giBiiuuLuJs84CJxfQccvmN", - "holdedAmount": 1.000531, - "price": 0.002678 - }, - "BsTRFEVZhXbBuy5fhxbttuim8iwzXqMdRCfFftDAkkeu": { - "decimals": 6, - "name": "mao", - "symbol": "mao", - "address": "BsTRFEVZhXbBuy5fhxbttuim8iwzXqMdRCfFftDAkkeu", - "holdedAmount": 1313337.849751, - "price": 0.001587 - }, - "7EYnhQoR9YM3N7UoaKRoA44Uy8JeaZV3qyouov87awMs": { - "decimals": 9, - "name": "Silly Dragon", - "symbol": "SILLY", - "address": "7EYnhQoR9YM3N7UoaKRoA44Uy8JeaZV3qyouov87awMs", - "holdedAmount": 125575.793823971, - "price": 0.01472 - }, - "3ag1Mj9AKz9FAkCQ6gAEhpLSX8B2pUbPdkb9iBsDLZNB": { - "decimals": 9, - "name": "Honk", - "symbol": "HONK", - "address": "3ag1Mj9AKz9FAkCQ6gAEhpLSX8B2pUbPdkb9iBsDLZNB", - "holdedAmount": 70780.323867533, - "price": 0.00369 - }, - "7M9KJcPNC65ShLDmJmTNhVFcuY95Y1VMeYngKgt67D1t": { - "decimals": 6, - "name": "reddit dog", - "symbol": "r/snoofi", - "address": "7M9KJcPNC65ShLDmJmTNhVFcuY95Y1VMeYngKgt67D1t", - "holdedAmount": 118734.201549, - "price": 0.01307 - }, - "Bde151hvHepcj3DnkbdrXVBrTSTdeWj8kUEGU464V3Gm": { - "decimals": 0, - "name": "Raydium Concentrated Liquidity", - "symbol": "RCL", - "address": "Bde151hvHepcj3DnkbdrXVBrTSTdeWj8kUEGU464V3Gm", - "holdedAmount": 1.0, - "price": 0.0 - }, - "67PDPxcgJo6tCrfb8oStAEfqdSNWh5RoCun3frYtg4my": { - "decimals": 9, - "holdedAmount": 2.062218393, - "symbol": null, - "price": 0.0 - }, - "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump": { - "decimals": 6, - "name": "Goatseus Maximus", - "symbol": "GOAT", - "address": "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "holdedAmount": 442.814421, - "price": 0.348484 - }, - "HfmWWtL3a6ZQAvM74nirtTkXJyjedLRj7Ljp3YMdVVBK": { - "decimals": 0, - "name": "Raydium Concentrated Liquidity", - "symbol": "RCL", - "address": "HfmWWtL3a6ZQAvM74nirtTkXJyjedLRj7Ljp3YMdVVBK", - "holdedAmount": 1.0, - "price": 0.0 - }, - "F6E9Wpxgi5DjoqEMJQNTCgsXYUcuQfnsTJpqYZ1i71se": { - "decimals": 0, - "name": "Raydium Concentrated Liquidity", - "symbol": "RCL", - "address": "F6E9Wpxgi5DjoqEMJQNTCgsXYUcuQfnsTJpqYZ1i71se", - "holdedAmount": 1.0, - "price": 0.0 - }, - "6Fb84TUdMNAVgwRinLeTgLov8dJnk5yhNt41Xq2a6s4c": { - "decimals": 9, - "holdedAmount": 56106.968899379, - "name": "RIZZ", - "symbol": "RIZZ", - "address": "6Fb84TUdMNAVgwRinLeTgLov8dJnk5yhNt41Xq2a6s4c", - "price": 0.002393 - }, - "BSqMUYb6ePwKsby85zrXaDa4SNf6AgZ9YfA2c4mZpump": { - "decimals": 6, - "holdedAmount": 57821.753872, - "name": "Look bro...", - "symbol": "LOOK", - "address": "BSqMUYb6ePwKsby85zrXaDa4SNf6AgZ9YfA2c4mZpump", - "price": 0.00247115 - }, - "CemfE7uJXwtcYRPNeiYYA8Qb1zi9BcosKKGYpnUxJe2C": { - "decimals": 0, - "name": "Raydium Concentrated Liquidity", - "symbol": "RCL", - "address": "CemfE7uJXwtcYRPNeiYYA8Qb1zi9BcosKKGYpnUxJe2C", - "holdedAmount": 1.0, - "price": 0.0 - }, - "CFyaDC9yjmE71wYw633HavRN3VQ3aq37sYujARR1pump": { - "decimals": 6, - "name": "Cafe", - "symbol": "CAFE", - "address": "CFyaDC9yjmE71wYw633HavRN3VQ3aq37sYujARR1pump", - "holdedAmount": 30501.416679, - "price": 0.006098 - }, - "AMjzRn1TBQwQfNAjHFeBb7uGbbqbJB7FzXAnGgdFPk6K": { - "decimals": 6, - "name": "SolCex ", - "symbol": "SOLCEX", - "address": "AMjzRn1TBQwQfNAjHFeBb7uGbbqbJB7FzXAnGgdFPk6K", - "holdedAmount": 92.918643, - "price": 0.01439 - }, - "HyxPoEjAggia3ZjkZWNPhChaBUZxxLt61UDxfeqkfqVE": { - "decimals": 0, - "name": "Raydium Concentrated Liquidity", - "symbol": "RCL", - "address": "HyxPoEjAggia3ZjkZWNPhChaBUZxxLt61UDxfeqkfqVE", - "holdedAmount": 1.0, - "price": 0.0 - }, - "AtTUzJVrPkBTXwiMZivVRKvWmCnVpRfnKq3cc5fopump": { - "decimals": 6, - "name": "Flying Spaghetti Monster", - "symbol": "CFSM", - "address": "AtTUzJVrPkBTXwiMZivVRKvWmCnVpRfnKq3cc5fopump", - "holdedAmount": 985305.676094, - "price": 0.0005911 - }, - "GQxrVxTHRvJ85gW9VpQdxURvD1NbkWkAVqa93CEMJYrC": { - "decimals": 0, - "name": "Raydium Concentrated Liquidity", - "symbol": "RCL", - "address": "GQxrVxTHRvJ85gW9VpQdxURvD1NbkWkAVqa93CEMJYrC", - "holdedAmount": 1.0, - "price": 0.0 - }, - "J7tYmq2JnQPvxyhcXpCDrvJnc9R5ts8rv7tgVHDPsw7U": { - "decimals": 6, - "name": "George Droyd", - "symbol": "FLOYDAI", - "address": "J7tYmq2JnQPvxyhcXpCDrvJnc9R5ts8rv7tgVHDPsw7U", - "holdedAmount": 126823.452121, - "price": 0.005168 - }, - "H7ed7UgcLp3ax4X1CQ5WuWDn6d1pprfMMYiv5ejwLWWU": { - "decimals": 6, - "name": "CHONKY", - "symbol": "CHONKY", - "address": "H7ed7UgcLp3ax4X1CQ5WuWDn6d1pprfMMYiv5ejwLWWU", - "holdedAmount": 4571249.855977, - "price": 3.409e-05 - }, - "4JZppS73qUrwaUfrgAjTvAxrBTNWECsZAoPQT6YysXV1": { - "decimals": 0, - "name": "Raydium Concentrated Liquidity", - "symbol": "RCL", - "address": "4JZppS73qUrwaUfrgAjTvAxrBTNWECsZAoPQT6YysXV1", - "holdedAmount": 1.0, - "price": 0.0 - }, - "7NQSHjuEGENZDWfSvPZz7oP2D6c5Jc3LjFC6uh179ufr": { - "decimals": 9, - "name": "\ud83d\uddff", - "symbol": "MOAI", - "address": "7NQSHjuEGENZDWfSvPZz7oP2D6c5Jc3LjFC6uh179ufr", - "holdedAmount": 1e-09, - "price": 0.1547 - }, - "ermX4zfUwUh5gcFbhWxpH4YSphZtaKHkxfX3GMRkoRu": { - "decimals": 9, - "name": "what the sigma?", - "symbol": "erm", - "address": "ermX4zfUwUh5gcFbhWxpH4YSphZtaKHkxfX3GMRkoRu", - "holdedAmount": 100.0, - "price": 0.0003534 - }, - "EKEWAk7hfnwfR8DBb1cTayPPambqyC7pwNiYkaYQKQHp": { - "decimals": 6, - "name": "Roaring Kitty", - "symbol": "KITTY", - "address": "EKEWAk7hfnwfR8DBb1cTayPPambqyC7pwNiYkaYQKQHp", - "holdedAmount": 0.284553, - "price": 0.002791 - }, - "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr": { - "decimals": 9, - "name": "POPCAT", - "symbol": "POPCAT", - "address": "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr", - "holdedAmount": 0.000847952, - "price": 1.4 - }, - "ENKS64JiF1zqUoDK8co94H56jyeSLk7reCL9JMgb9kvN": { - "decimals": 9, - "name": "KODOG", - "symbol": "KODOG", - "address": "ENKS64JiF1zqUoDK8co94H56jyeSLk7reCL9JMgb9kvN", - "holdedAmount": 99.0, - "price": 0.00290011857 - }, - "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB": { - "decimals": 6, - "name": "USDT", - "symbol": "USDT", - "address": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", - "holdedAmount": 0.060209, - "price": 0.9996 - }, - "3XxvmED354933DwSPJuzB7SE9uiWpD1ErydDuhmbFRMk": { - "decimals": 6, - "name": "doginthpool", - "symbol": "DIP", - "address": "3XxvmED354933DwSPJuzB7SE9uiWpD1ErydDuhmbFRMk", - "holdedAmount": 754903.229049, - "price": 0.00323517 - }, - "ukHH6c7mMyiWCf1b9pnWe25TSpkDDt3H5pQZgZ74J82": { - "decimals": 6, - "name": "BOOK OF MEME", - "symbol": "BOME", - "address": "ukHH6c7mMyiWCf1b9pnWe25TSpkDDt3H5pQZgZ74J82", - "holdedAmount": 0.790596, - "price": 0.009356 - }, - "FkBF9u1upwEMUPxnXjcydxxVSxgr8f3k1YXbz7G7bmtA": { - "decimals": 6, - "holdedAmount": 331150.293776, - "name": "glorp", - "symbol": "glorp", - "address": "FkBF9u1upwEMUPxnXjcydxxVSxgr8f3k1YXbz7G7bmtA", - "price": 0.0101 - } -} \ No newline at end of file diff --git a/crypto/sol/logs/token_info.json.bak b/crypto/sol/logs/token_info.json.bak deleted file mode 100644 index 5a9d110..0000000 --- a/crypto/sol/logs/token_info.json.bak +++ /dev/null @@ -1,179 +0,0 @@ -{ - "9jca8QgA8b95FTSSANzp54LPmsSoqPijnhMsqgghAQTP": { - "decimals": 6, - "name": "Throne PePe", - "symbol": "TEPE", - "address": "9jca8QgA8b95FTSSANzp54LPmsSoqPijnhMsqgghAQTP", - "holdedAmount": 2000.0 - }, - "TyHkZNXAvRCLfNrXp83zMYTSe4V3fkX2ZE1jNX2sjV1": { - "decimals": 9, - "name": "ICECAT", - "symbol": "ICECAT", - "address": "TyHkZNXAvRCLfNrXp83zMYTSe4V3fkX2ZE1jNX2sjV1", - "holdedAmount": 555.0 - }, - "GoRnxWR5h4HMYAbCWhfPxsTF6N27jTRkBDFpAsvLpump": { - "decimals": 6, - "name": "KING SUGAR GLIDER", - "symbol": "KSG", - "address": "GoRnxWR5h4HMYAbCWhfPxsTF6N27jTRkBDFpAsvLpump", - "holdedAmount": 2000.0 - }, - "AcV2T3mwLUqMiiqcsafVm35zwPQkmLrfRtaW3716Fzvi": { - "decimals": 6, - "name": "rexwifhat", - "symbol": "REXHAT", - "address": "AcV2T3mwLUqMiiqcsafVm35zwPQkmLrfRtaW3716Fzvi", - "holdedAmount": 1000.0 - }, - "jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL": { - "decimals": 9, - "name": "JITO", - "symbol": "JTO", - "address": "jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL", - "holdedAmount": 0.002967742 - }, - "BuNthH8oEupwa3HUHNiTgfvvdSMgk3uAHyJMmMuGUAEK": { - "decimals": 6, - "holdedAmount": 85000.0 - }, - "DTEqTxxGFn3SZ4C8tNP35X8iegCCgCBrX974WFSuYVZh": { - "decimals": 9, - "holdedAmount": 136.0 - }, - "5qd7F8VLHiLWwx13UbxU5v5hPKCSSXYEE5pSjkYr7ytp": { - "decimals": 9, - "name": "KEVO", - "symbol": "KEVO", - "address": "5qd7F8VLHiLWwx13UbxU5v5hPKCSSXYEE5pSjkYr7ytp", - "holdedAmount": 297.0 - }, - "BrMXXZ5PkyAQpyWNT8AGjK8s3EVUQkGjS5rsCAXQQHVj": { - "decimals": 9, - "name": "BONANO", - "symbol": "BONANO", - "address": "BrMXXZ5PkyAQpyWNT8AGjK8s3EVUQkGjS5rsCAXQQHVj", - "holdedAmount": 333.0 - }, - "C2DbRWaoDJKMgegEKQuYCnViM9VdhrVR6FptPLm6stY7": { - "decimals": 9, - "name": "Trump PePe", - "symbol": "TRUPE", - "address": "C2DbRWaoDJKMgegEKQuYCnViM9VdhrVR6FptPLm6stY7", - "holdedAmount": 32000.0 - }, - "9HvM3nS2eDKWxNvi8vSFXRhHA1xhDW33rt4ZA1bE1DbV": { - "decimals": 9, - "name": "Relend", - "symbol": "REL", - "address": "9HvM3nS2eDKWxNvi8vSFXRhHA1xhDW33rt4ZA1bE1DbV", - "holdedAmount": 100.0 - }, - "3UfknvCm4No13GHBPwNvXqJt9kroZcPv3psWswqpzixt": { - "decimals": 6, - "name": "Turtle Pepe", - "symbol": "TUPE", - "address": "3UfknvCm4No13GHBPwNvXqJt9kroZcPv3psWswqpzixt", - "holdedAmount": 2000.0 - }, - "217onbknQpFVEpyTCknieq3KVE8a9o4R7WhQGN4opQck": { - "decimals": 9, - "name": "MOCHO", - "symbol": "MOCHO", - "address": "217onbknQpFVEpyTCknieq3KVE8a9o4R7WhQGN4opQck", - "holdedAmount": 198.0 - }, - "3psH1Mj1f7yUfaD5gh6Zj7epE8hhrMkMETgv5TshQA4o": { - "decimals": 9, - "name": "jeo boden", - "symbol": "boden", - "address": "3psH1Mj1f7yUfaD5gh6Zj7epE8hhrMkMETgv5TshQA4o", - "holdedAmount": 1000.0 - }, - "3W52uCb8NW8ruMF9mmJX3oKiYAjdPai4633srsZFQCS6": { - "decimals": 6, - "name": "Biao Coin", - "symbol": "$BIAO", - "address": "3W52uCb8NW8ruMF9mmJX3oKiYAjdPai4633srsZFQCS6", - "holdedAmount": 1061644.458127 - }, - "Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw": { - "decimals": 8, - "name": "LandWolf", - "symbol": "WOLF", - "address": "Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw", - "holdedAmount": 5000.0 - }, - "5xNLcLCaXfJJiHKzzPuEqFBLJMETaPKcnEfCNL5SB2cT": { - "decimals": 9, - "name": "Dallino", - "symbol": "Dall", - "address": "5xNLcLCaXfJJiHKzzPuEqFBLJMETaPKcnEfCNL5SB2cT", - "holdedAmount": 708677.532051592 - }, - "6D7NaB2xsLd7cauWu1wKk6KBsJohJmP2qZH9GEfVi5Ui": { - "decimals": 6, - "name": "Shark Cat", - "symbol": "SC", - "address": "6D7NaB2xsLd7cauWu1wKk6KBsJohJmP2qZH9GEfVi5Ui", - "holdedAmount": 5000.0 - }, - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v": { - "price": 1.00058, - "decimals": 6, - "name": "USD Coin", - "symbol": "USDC", - "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "holdedAmount": 21.023377 - }, - "4GniFbshqU6VtWCLJnKadswa8QCk2cFg8cgBZrhe9dam": { - "decimals": 6, - "name": "GOOFY", - "symbol": "GOOFY", - "address": "4GniFbshqU6VtWCLJnKadswa8QCk2cFg8cgBZrhe9dam", - "holdedAmount": 1936.132216 - }, - "4y9E3tJpGNzRr1592oWTPECgyp2VDSc1Bf3DqAm5FZsK": { - "decimals": 6, - "name": "FATGF", - "symbol": "FATGF", - "address": "4y9E3tJpGNzRr1592oWTPECgyp2VDSc1Bf3DqAm5FZsK", - "holdedAmount": 138268.428197 - }, - "Akev8YDBQfuCv33M1tjDcaUFAsY4Q5izMSfhbozL1Q6j": { - "decimals": 9, - "name": "Ceiling Cat", - "symbol": "CEILINGCAT", - "address": "Akev8YDBQfuCv33M1tjDcaUFAsY4Q5izMSfhbozL1Q6j", - "holdedAmount": 398526.085798546 - }, - "HnKkzR1YtFbUUxM6g3iVRS2RY68KHhGV7bNdfF1GCsJB": { - "decimals": 9, - "name": "Kamala Horris", - "symbol": "KAMA", - "address": "HnKkzR1YtFbUUxM6g3iVRS2RY68KHhGV7bNdfF1GCsJB", - "holdedAmount": 33733.684394767 - }, - "r8kCxSyaKCQBgs5v1dSTqheUU2ur8bLiYgBThMpAVyb": { - "decimals": 6, - "name": "Retardigrade", - "symbol": "TARD", - "address": "r8kCxSyaKCQBgs5v1dSTqheUU2ur8bLiYgBThMpAVyb", - "holdedAmount": 176920.153819 - }, - "8mtVH6ZKf3c8zYMHKdgRyXPKJoSR6d56FPDQDUdSQxdA": { - "decimals": 6, - "name": "Fart Coin", - "symbol": "Fart", - "address": "8mtVH6ZKf3c8zYMHKdgRyXPKJoSR6d56FPDQDUdSQxdA", - "holdedAmount": 672875.569584 - }, - "HUdqc5MR5h3FssESabPnQ1GTgTcPvnNudAuLj5J6a9sU": { - "price": 0.003448, - "decimals": 9, - "name": "BONGO CAT", - "symbol": "BONGO", - "address": "HUdqc5MR5h3FssESabPnQ1GTgTcPvnNudAuLj5J6a9sU" - } -} \ No newline at end of file diff --git a/crypto/sol/logs/transation_details.json b/crypto/sol/logs/transation_details.json deleted file mode 100644 index 5d19bc6..0000000 --- a/crypto/sol/logs/transation_details.json +++ /dev/null @@ -1,1334 +0,0 @@ -{ - "blockTime": 1729495580, - "meta": { - "computeUnitsConsumed": 320645, - "err": null, - "fee": 494096, - "innerInstructions": [ - { - "index": 2, - "instructions": [ - { - "parsed": { - "info": { - "amount": "3000000000", - "authority": "7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH", - "destination": "88Rzuj5DVJE2Co3XdRY6hMyu8YJ1eRVoZu72hMiyagUE", - "source": "DpobFr6hiD6541cQxqgmDvqXy7N875tujq2M1ji5VJy8" - }, - "type": "transfer" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 2 - }, - { - "accounts": [ - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "4kKFykZkVqE5wbBgj6o8ddnj5TmA6UQgXJLYzAasgKdD", - "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "F4J8oNpnqi6ij8PSym1koEVtRo6pSMo7GHy3tUrfrbPF", - "88Rzuj5DVJE2Co3XdRY6hMyu8YJ1eRVoZu72hMiyagUE", - "HP27oouQpPx2EYQXwfhgHrKhqUdr7eP8DSQvCVhCryDy", - "FXwwP2gWf9mCtA1mSsYpkQfwL4nRQadBtBDtMDC4KYBT", - "7uhX4oUPekqvSGaEqBUJ8q55VS3Bw7nKifSDycL82YzK", - "AiwJVCYynpy8pihTTDtdtF56NfZX92aXQbMhG956je8g", - "D1vc7vhdT8EdVDjqKbSJ6QCKQJKEpJVDQYGKUDhwBZMF" - ], - "data": "59p8WydnSZtRpXV1s67NWaXUkTafXmq4HUP7PxcuiybgG1Aw7d6McrnDHy", - "programId": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc", - "stackHeight": 2 - }, - { - "parsed": { - "info": { - "amount": "3000000000", - "authority": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "destination": "HP27oouQpPx2EYQXwfhgHrKhqUdr7eP8DSQvCVhCryDy", - "source": "88Rzuj5DVJE2Co3XdRY6hMyu8YJ1eRVoZu72hMiyagUE" - }, - "type": "transfer" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "parsed": { - "info": { - "amount": "6221214481", - "authority": "4kKFykZkVqE5wbBgj6o8ddnj5TmA6UQgXJLYzAasgKdD", - "destination": "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "source": "F4J8oNpnqi6ij8PSym1koEVtRo6pSMo7GHy3tUrfrbPF" - }, - "type": "transfer" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "accounts": [ - "D8cy77BBepLMngZx6ZukaTff5hCt1HrWyKk3Hnd9oitf" - ], - "data": "QMqFu4fYGGeUEysFnenhAvDWgqp1W7DbrMv3z8JcyrP4Bu3Yyyj7irLW76wEzMiFqk8MH9ANyt99XHnGeGf78NVqFu11G3MNejjKgwWbzANP9zcnJwN8bWU8VZGZwcJK1PQ9p7sktat1X8BY7LAaW3Zpz5Ay2Epi4KYfujJm3Xhktnj", - "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "stackHeight": 2 - }, - { - "accounts": [ - "8ZBbyDGErfqvY65fRZnm6dtQBe3REuAPqzRN7819fzeW", - "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "CMtXWvw1CNrtApwDmsxSQmVBBvMS6Ck7ToyPWKEJbR6a", - "HuB7yEUXeTzWPLBHF73gnvQo67nzRfChecvPfrR8HRwp", - "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "6j6sqrqmZUKZ8NRQzH9S9fH6WWA5DqDQLHVqDcMPNgRP", - "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "So11111111111111111111111111111111111111112", - "AW1Gbb7Px5JT7xgdTYgdkBujvdYz5qZ2rsgxHXVdmmw7", - "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "D1ZN9Wj1fRSUQfCjhvnu1hqDMT7hzjzBBpi12nVniYD6", - "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "C4zEohuAoahgAjZD7FNP1SveLcR3NMzawK97ePFrvyD6", - "72tbG2wp8Kf5z5GQZP8N1tuPipFjUT76NSfWXeKGU8Yc", - "J3EqRvxHVMXVLZJvzXKdyWNSPbPzynvJuCo4WJ5sToow" - ], - "data": "PgQWtn8ozixDTA8zLMoNXDcFiBbJkWghV", - "programId": "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "stackHeight": 2 - }, - { - "parsed": { - "info": { - "authority": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "destination": "HuB7yEUXeTzWPLBHF73gnvQo67nzRfChecvPfrR8HRwp", - "mint": "So11111111111111111111111111111111111111112", - "source": "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "tokenAmount": { - "amount": "559909303", - "decimals": 9, - "uiAmount": 0.559909303, - "uiAmountString": "0.559909303" - } - }, - "type": "transferChecked" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "parsed": { - "info": { - "authority": "8ZBbyDGErfqvY65fRZnm6dtQBe3REuAPqzRN7819fzeW", - "destination": "6j6sqrqmZUKZ8NRQzH9S9fH6WWA5DqDQLHVqDcMPNgRP", - "mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "source": "CMtXWvw1CNrtApwDmsxSQmVBBvMS6Ck7ToyPWKEJbR6a", - "tokenAmount": { - "amount": "95034426", - "decimals": 6, - "uiAmount": 95.034426, - "uiAmountString": "95.034426" - } - }, - "type": "transferChecked" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "accounts": [ - "D1ZN9Wj1fRSUQfCjhvnu1hqDMT7hzjzBBpi12nVniYD6" - ], - "data": "yCGxBopjnVNQkNP5usq1PoTc758RZWiEpPbsRp1vxtvnAtuxnsocszqigkfYRpSKNGrVegA3gs6Y7JgMM9N8r1M8zYcYsWk65wwxpi86h3UgkwQBLCNbJJXZ6bF6bWXznSB9RH6Hq3ZDXh14ZQ81mR5HsgA5KS7wd8TWzGRgQQdv5T9QaumEM7szBn2XkXSDrfX5hq", - "programId": "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "stackHeight": 3 - }, - { - "accounts": [ - "D8cy77BBepLMngZx6ZukaTff5hCt1HrWyKk3Hnd9oitf" - ], - "data": "QMqFu4fYGGeUEysFnenhAvBobXTzswhLdvQq6s8axxcbKUPRksm2543pJNNNHVd1VJ58FCg7NVh9cMuPYiMKNyfUpUXSDci9arMkqVwgC1zp95Np4MugtuEpi8DzBNVmSssduXtvFv8xDgEEnzH8AoKgupi1Fsf6TBXmTYzMN2ss8hd", - "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "stackHeight": 2 - }, - { - "accounts": [ - "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU", - "5TLrkh8HW9jGkyRkamFLTYDTi6fMpioLZStPYTFxEPnX", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "6j6sqrqmZUKZ8NRQzH9S9fH6WWA5DqDQLHVqDcMPNgRP", - "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ", - "4Ep5XNqaDYbFAQHHdhtFXgaPuhDH6uajSG8ZfwxHzwBQ", - "5ZyzUvTKsv4rjN3CL4vToBpT3Y2votfP8DZPHfgEb5qZ", - "BABMfKMpMcAQLC6QR8gUm1W43U91puGYQt2p9UG8xunb", - "FG4cPYdHykGEoYq2PxFvy3KjuF24ZFxM2QDoyVVtjkMN", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "JCQZijF7jLWqUCrA5bp3wfUfy5WKsoSvYT5BuQUKWRr1", - "JCQZijF7jLWqUCrA5bp3wfUfy5WKsoSvYT5BuQUKWRr1", - "8Wn7WsvK4Vnuxjmq8fsVbSFsGzeCmmtH9noepDUCeiQ8" - ], - "data": "PgQWtn8oziwwxrcNE1vGLudKA3Yau9ynF", - "programId": "2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c", - "stackHeight": 2 - }, - { - "parsed": { - "info": { - "amount": "95034426", - "authority": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "destination": "4Ep5XNqaDYbFAQHHdhtFXgaPuhDH6uajSG8ZfwxHzwBQ", - "source": "6j6sqrqmZUKZ8NRQzH9S9fH6WWA5DqDQLHVqDcMPNgRP" - }, - "type": "transfer" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "parsed": { - "info": { - "account": "FG4cPYdHykGEoYq2PxFvy3KjuF24ZFxM2QDoyVVtjkMN", - "amount": "210", - "mint": "BABMfKMpMcAQLC6QR8gUm1W43U91puGYQt2p9UG8xunb", - "mintAuthority": "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU" - }, - "type": "mintTo" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "parsed": { - "info": { - "amount": "94941178", - "authority": "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU", - "destination": "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ", - "source": "5ZyzUvTKsv4rjN3CL4vToBpT3Y2votfP8DZPHfgEb5qZ" - }, - "type": "transfer" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "accounts": [ - "D8cy77BBepLMngZx6ZukaTff5hCt1HrWyKk3Hnd9oitf" - ], - "data": "QMqFu4fYGGeUEysFnenhAvGHnSPFLovkZXi46MfLjsSzqJhm6XkVGqWpaXx8STNjEgnEXP76foZz1zfY3rpzKyFCQ2scox52Ce3am7qX5RvGysCe1y8LwyiM6wkCJRXu24Az9mLwY53pgUE7s3RKb7iwxs3cESNo2JmbeSf68TxVQ31", - "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "stackHeight": 2 - }, - { - "accounts": [ - "ha6ob9camZC1cPrwzrpc4H5JBaEapQDsS9nmavVCEUU", - "So11111111111111111111111111111111111111112", - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "AATZXBUMKgpvpDvjQZdPRvjeYNyEdxFeKyWZ3zJzfVqW", - "FKiQUwNvjfm8a1noBeeCnqC1ASp4dkkvcM3iGzKvPgon", - "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ", - "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q", - "39cWjvHrpHNz2SbXv6ME4NPhqBDBd4KsjUYv5JkHEAJU", - "A28T5pKtscnhDo6C1Sz786Tup88aTjt8uyKewjVvPrGk", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - ], - "data": "2j6vnwYDURn8zfJpjT3LFWoHAiuGFmdxi9M", - "programId": "obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y", - "stackHeight": 2 - }, - { - "parsed": { - "info": { - "amount": "5661305178", - "authority": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "destination": "AATZXBUMKgpvpDvjQZdPRvjeYNyEdxFeKyWZ3zJzfVqW", - "source": "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo" - }, - "type": "transfer" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "parsed": { - "info": { - "amount": "960791217", - "authority": "ha6ob9camZC1cPrwzrpc4H5JBaEapQDsS9nmavVCEUU", - "destination": "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ", - "source": "FKiQUwNvjfm8a1noBeeCnqC1ASp4dkkvcM3iGzKvPgon" - }, - "type": "transfer" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 3 - }, - { - "accounts": [ - "D8cy77BBepLMngZx6ZukaTff5hCt1HrWyKk3Hnd9oitf" - ], - "data": "QMqFu4fYGGeUEysFnenhAvD866YwW6jMndC6NeFLmgrgSsQrYzqQkLQZLriiyYAHU47xKZ9Dcp6oHcAMxjdC9NFJecmNYi1Ua1ZLQMxJVTMdjEW4NGDy3JNQjjgfEo3KPyaQWJqvdacwCWHGGfEBt8q85pXQTpmTTRCyBuHrrW7J3DR", - "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "stackHeight": 2 - }, - { - "parsed": { - "info": { - "amount": "1055732395", - "authority": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "destination": "HfsugpFeYex1reWFUH3LGDXMx16hHioZ9UpKVkuiENp9", - "source": "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ" - }, - "type": "transfer" - }, - "program": "spl-token", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "stackHeight": 2 - } - ] - } - ], - "logMessages": [ - "Program ComputeBudget111111111111111111111111111111 invoke [1]", - "Program ComputeBudget111111111111111111111111111111 success", - "Program ComputeBudget111111111111111111111111111111 invoke [1]", - "Program ComputeBudget111111111111111111111111111111 success", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]", - "Program log: Instruction: SharedAccountsRoute", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", - "Program log: Instruction: Transfer", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 380901 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [2]", - "Program log: Instruction: Swap", - "Program log: fee_growth: 8705178021098", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: Transfer", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 338542 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: Transfer", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 330837 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 45501 of 368856 compute units", - "Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc success", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 321040 compute units", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", - "Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo invoke [2]", - "Program log: Instruction: Swap", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: TransferChecked", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 6238 of 274092 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: TransferChecked", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 6147 of 264420 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo invoke [3]", - "Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo consumed 2136 of 254839 compute units", - "Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo success", - "Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo consumed 59366 of 310502 compute units", - "Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo success", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 248691 compute units", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", - "Program 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c invoke [2]", - "Program log: Instruction: Swap", - "Program log: AMM: {\"p\":5TLrkh8HW9jGkyRkamFLTYDTi6fMpioLZStPYTFxEPnX}", - "Program log: Oracle: {\"a\":99921864.02993196,\"b\":1638750694,\"c\":20000000000,\"d\":100044337}", - "Program log: Amount: {\"in\":95034426,\"out\":94941178,\"impact\":0.1}", - "Program log: TotalFee: {\"fee\":19006,\"percent\":0.02}", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: Transfer", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 179465 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: MintTo", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4492 of 172420 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: Transfer", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 165542 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c consumed 83538 of 240458 compute units", - "Program 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c success", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 154599 compute units", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", - "Program obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y invoke [2]", - "Program log: Instruction: Swap", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: Transfer", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 109777 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]", - "Program log: Instruction: Transfer", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 102165 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y consumed 54327 of 146933 compute units", - "Program obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y success", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [2]", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 90264 compute units", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]", - "Program log: Instruction: Transfer", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 85978 compute units", - "Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 320345 of 400023 compute units", - "Program return: JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 qzLtPgAAAAA=", - "Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success" - ], - "postBalances": [ - 130112372, - 2039480, - 2039280, - 71437440, - 2039280, - 70407360, - 71437440, - 2039280, - 1660405579, - 2039280, - 71437440, - 1, - 1141440, - 231713521, - 0, - 5526240, - 1877340994233, - 2039280, - 7735877, - 2039280, - 7231440, - 2039280, - 1461600, - 2039280, - 7182720, - 23385600, - 2039280, - 314719952181, - 5435760, - 70407360, - 6821886877909, - 70407360, - 2039280, - 626519187493, - 934087680, - 1141440, - 2862060, - 2860560, - 319181599414, - 1141440, - 1141440, - 0, - 23942400, - 23942400, - 58471733419, - 1141440, - 0, - 129376682602, - 0 - ], - "postTokenBalances": [ - { - "accountIndex": 1, - "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "owner": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "18057767", - "decimals": 6, - "uiAmount": 18.057767, - "uiAmountString": "18.057767" - } - }, - { - "accountIndex": 2, - "mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "owner": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "16768396", - "decimals": 6, - "uiAmount": 16.768396, - "uiAmountString": "16.768396" - } - }, - { - "accountIndex": 4, - "mint": "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "owner": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "51296", - "decimals": 6, - "uiAmount": 0.051296, - "uiAmountString": "0.051296" - } - }, - { - "accountIndex": 7, - "mint": "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "owner": "7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "7701766482", - "decimals": 6, - "uiAmount": 7701.766482, - "uiAmountString": "7701.766482" - } - }, - { - "accountIndex": 8, - "mint": "So11111111111111111111111111111111111111112", - "owner": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "1657866099", - "decimals": 9, - "uiAmount": 1.657866099, - "uiAmountString": "1.657866099" - } - }, - { - "accountIndex": 9, - "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "owner": "7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "8684481855", - "decimals": 6, - "uiAmount": 8684.481855, - "uiAmountString": "8684.481855" - } - }, - { - "accountIndex": 16, - "mint": "So11111111111111111111111111111111111111112", - "owner": "ha6ob9camZC1cPrwzrpc4H5JBaEapQDsS9nmavVCEUU", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "1877338954953", - "decimals": 9, - "uiAmount": 1877.338954953, - "uiAmountString": "1877.338954953" - } - }, - { - "accountIndex": 17, - "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "owner": "ha6ob9camZC1cPrwzrpc4H5JBaEapQDsS9nmavVCEUU", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "176401990536", - "decimals": 6, - "uiAmount": 176401.990536, - "uiAmountString": "176401.990536" - } - }, - { - "accountIndex": 19, - "mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "owner": "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "22903818262", - "decimals": 6, - "uiAmount": 22903.818262, - "uiAmountString": "22903.818262" - } - }, - { - "accountIndex": 21, - "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "owner": "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "179765205811", - "decimals": 6, - "uiAmount": 179765.205811, - "uiAmountString": "179765.205811" - } - }, - { - "accountIndex": 23, - "mint": "BABMfKMpMcAQLC6QR8gUm1W43U91puGYQt2p9UG8xunb", - "owner": "CbYf9QNrkVgNRCMTDiVdvzMqSzXh8AAgnrKAoTfEACdh", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "2240537203", - "decimals": 9, - "uiAmount": 2.240537203, - "uiAmountString": "2.240537203" - } - }, - { - "accountIndex": 26, - "mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "owner": "8ZBbyDGErfqvY65fRZnm6dtQBe3REuAPqzRN7819fzeW", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "25048699406", - "decimals": 6, - "uiAmount": 25048.699406, - "uiAmountString": "25048.699406" - } - }, - { - "accountIndex": 27, - "mint": "So11111111111111111111111111111111111111112", - "owner": "8ZBbyDGErfqvY65fRZnm6dtQBe3REuAPqzRN7819fzeW", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "314717912901", - "decimals": 9, - "uiAmount": 314.717912901, - "uiAmountString": "314.717912901" - } - }, - { - "accountIndex": 30, - "mint": "So11111111111111111111111111111111111111112", - "owner": "4kKFykZkVqE5wbBgj6o8ddnj5TmA6UQgXJLYzAasgKdD", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "6821884838629", - "decimals": 9, - "uiAmount": 6821.884838629, - "uiAmountString": "6821.884838629" - } - }, - { - "accountIndex": 32, - "mint": "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "owner": "4kKFykZkVqE5wbBgj6o8ddnj5TmA6UQgXJLYzAasgKdD", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "2585512851791", - "decimals": 6, - "uiAmount": 2585512.851791, - "uiAmountString": "2585512.851791" - } - } - ], - "preBalances": [ - 130606468, - 2039480, - 2039280, - 71437440, - 2039280, - 70407360, - 71437440, - 2039280, - 1660405579, - 2039280, - 71437440, - 1, - 1141440, - 231713521, - 0, - 5526240, - 1871679689055, - 2039280, - 7735877, - 2039280, - 7231440, - 2039280, - 1461600, - 2039280, - 7182720, - 23385600, - 2039280, - 314160042878, - 5435760, - 70407360, - 6828108092390, - 70407360, - 2039280, - 626519187493, - 934087680, - 1141440, - 2862060, - 2860560, - 319181599414, - 1141440, - 1141440, - 0, - 23942400, - 23942400, - 58471733419, - 1141440, - 0, - 129376682602, - 0 - ], - "preTokenBalances": [ - { - "accountIndex": 1, - "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "owner": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "18057767", - "decimals": 6, - "uiAmount": 18.057767, - "uiAmountString": "18.057767" - } - }, - { - "accountIndex": 2, - "mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "owner": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "16768396", - "decimals": 6, - "uiAmount": 16.768396, - "uiAmountString": "16.768396" - } - }, - { - "accountIndex": 4, - "mint": "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "owner": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "51296", - "decimals": 6, - "uiAmount": 0.051296, - "uiAmountString": "0.051296" - } - }, - { - "accountIndex": 7, - "mint": "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "owner": "7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "10701766482", - "decimals": 6, - "uiAmount": 10701.766482, - "uiAmountString": "10701.766482" - } - }, - { - "accountIndex": 8, - "mint": "So11111111111111111111111111111111111111112", - "owner": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "1657866099", - "decimals": 9, - "uiAmount": 1.657866099, - "uiAmountString": "1.657866099" - } - }, - { - "accountIndex": 9, - "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "owner": "7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "7628749460", - "decimals": 6, - "uiAmount": 7628.74946, - "uiAmountString": "7628.74946" - } - }, - { - "accountIndex": 16, - "mint": "So11111111111111111111111111111111111111112", - "owner": "ha6ob9camZC1cPrwzrpc4H5JBaEapQDsS9nmavVCEUU", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "1871677649775", - "decimals": 9, - "uiAmount": 1871.677649775, - "uiAmountString": "1871.677649775" - } - }, - { - "accountIndex": 17, - "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "owner": "ha6ob9camZC1cPrwzrpc4H5JBaEapQDsS9nmavVCEUU", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "177362781753", - "decimals": 6, - "uiAmount": 177362.781753, - "uiAmountString": "177362.781753" - } - }, - { - "accountIndex": 19, - "mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "owner": "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "22808783836", - "decimals": 6, - "uiAmount": 22808.783836, - "uiAmountString": "22808.783836" - } - }, - { - "accountIndex": 21, - "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "owner": "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "179860146989", - "decimals": 6, - "uiAmount": 179860.146989, - "uiAmountString": "179860.146989" - } - }, - { - "accountIndex": 23, - "mint": "BABMfKMpMcAQLC6QR8gUm1W43U91puGYQt2p9UG8xunb", - "owner": "CbYf9QNrkVgNRCMTDiVdvzMqSzXh8AAgnrKAoTfEACdh", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "2240536993", - "decimals": 9, - "uiAmount": 2.240536993, - "uiAmountString": "2.240536993" - } - }, - { - "accountIndex": 26, - "mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "owner": "8ZBbyDGErfqvY65fRZnm6dtQBe3REuAPqzRN7819fzeW", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "25143733832", - "decimals": 6, - "uiAmount": 25143.733832, - "uiAmountString": "25143.733832" - } - }, - { - "accountIndex": 27, - "mint": "So11111111111111111111111111111111111111112", - "owner": "8ZBbyDGErfqvY65fRZnm6dtQBe3REuAPqzRN7819fzeW", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "314158003598", - "decimals": 9, - "uiAmount": 314.158003598, - "uiAmountString": "314.158003598" - } - }, - { - "accountIndex": 30, - "mint": "So11111111111111111111111111111111111111112", - "owner": "4kKFykZkVqE5wbBgj6o8ddnj5TmA6UQgXJLYzAasgKdD", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "6828106053110", - "decimals": 9, - "uiAmount": 6828.10605311, - "uiAmountString": "6828.10605311" - } - }, - { - "accountIndex": 32, - "mint": "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "owner": "4kKFykZkVqE5wbBgj6o8ddnj5TmA6UQgXJLYzAasgKdD", - "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "uiTokenAmount": { - "amount": "2582512851791", - "decimals": 6, - "uiAmount": 2582512.851791, - "uiAmountString": "2582512.851791" - } - } - ], - "returnData": { - "data": [ - "qzLtPgAAAAA=", - "base64" - ], - "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" - }, - "rewards": [], - "status": { - "Ok": null - } - }, - "slot": 296828606, - "transaction": { - "message": { - "accountKeys": [ - { - "pubkey": "7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH", - "signer": true, - "source": "transaction", - "writable": true - }, - { - "pubkey": "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "6j6sqrqmZUKZ8NRQzH9S9fH6WWA5DqDQLHVqDcMPNgRP", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "72tbG2wp8Kf5z5GQZP8N1tuPipFjUT76NSfWXeKGU8Yc", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "88Rzuj5DVJE2Co3XdRY6hMyu8YJ1eRVoZu72hMiyagUE", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "AiwJVCYynpy8pihTTDtdtF56NfZX92aXQbMhG956je8g", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "C4zEohuAoahgAjZD7FNP1SveLcR3NMzawK97ePFrvyD6", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "DpobFr6hiD6541cQxqgmDvqXy7N875tujq2M1ji5VJy8", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "HfsugpFeYex1reWFUH3LGDXMx16hHioZ9UpKVkuiENp9", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "J3EqRvxHVMXVLZJvzXKdyWNSPbPzynvJuCo4WJ5sToow", - "signer": false, - "source": "transaction", - "writable": true - }, - { - "pubkey": "ComputeBudget111111111111111111111111111111", - "signer": false, - "source": "transaction", - "writable": false - }, - { - "pubkey": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "signer": false, - "source": "transaction", - "writable": false - }, - { - "pubkey": "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "signer": false, - "source": "transaction", - "writable": false - }, - { - "pubkey": "D8cy77BBepLMngZx6ZukaTff5hCt1HrWyKk3Hnd9oitf", - "signer": false, - "source": "transaction", - "writable": false - }, - { - "pubkey": "ha6ob9camZC1cPrwzrpc4H5JBaEapQDsS9nmavVCEUU", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "AATZXBUMKgpvpDvjQZdPRvjeYNyEdxFeKyWZ3zJzfVqW", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "FKiQUwNvjfm8a1noBeeCnqC1ASp4dkkvcM3iGzKvPgon", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "4Ep5XNqaDYbFAQHHdhtFXgaPuhDH6uajSG8ZfwxHzwBQ", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "5TLrkh8HW9jGkyRkamFLTYDTi6fMpioLZStPYTFxEPnX", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "5ZyzUvTKsv4rjN3CL4vToBpT3Y2votfP8DZPHfgEb5qZ", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "BABMfKMpMcAQLC6QR8gUm1W43U91puGYQt2p9UG8xunb", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "FG4cPYdHykGEoYq2PxFvy3KjuF24ZFxM2QDoyVVtjkMN", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "8ZBbyDGErfqvY65fRZnm6dtQBe3REuAPqzRN7819fzeW", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "AW1Gbb7Px5JT7xgdTYgdkBujvdYz5qZ2rsgxHXVdmmw7", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "CMtXWvw1CNrtApwDmsxSQmVBBvMS6Ck7ToyPWKEJbR6a", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "HuB7yEUXeTzWPLBHF73gnvQo67nzRfChecvPfrR8HRwp", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "4kKFykZkVqE5wbBgj6o8ddnj5TmA6UQgXJLYzAasgKdD", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "7uhX4oUPekqvSGaEqBUJ8q55VS3Bw7nKifSDycL82YzK", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "F4J8oNpnqi6ij8PSym1koEVtRo6pSMo7GHy3tUrfrbPF", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "FXwwP2gWf9mCtA1mSsYpkQfwL4nRQadBtBDtMDC4KYBT", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "HP27oouQpPx2EYQXwfhgHrKhqUdr7eP8DSQvCVhCryDy", - "signer": false, - "source": "lookupTable", - "writable": true - }, - { - "pubkey": "So11111111111111111111111111111111111111112", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "39cWjvHrpHNz2SbXv6ME4NPhqBDBd4KsjUYv5JkHEAJU", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "A28T5pKtscnhDo6C1Sz786Tup88aTjt8uyKewjVvPrGk", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "8Wn7WsvK4Vnuxjmq8fsVbSFsGzeCmmtH9noepDUCeiQ8", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "JCQZijF7jLWqUCrA5bp3wfUfy5WKsoSvYT5BuQUKWRr1", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "D1ZN9Wj1fRSUQfCjhvnu1hqDMT7hzjzBBpi12nVniYD6", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "signer": false, - "source": "lookupTable", - "writable": false - }, - { - "pubkey": "D1vc7vhdT8EdVDjqKbSJ6QCKQJKEpJVDQYGKUDhwBZMF", - "signer": false, - "source": "lookupTable", - "writable": false - } - ], - "addressTableLookups": [ - { - "accountKey": "GYAbhyck2h31kJfpMRGW7jQZ96NyF4q9LSrGiGZRBwSX", - "readonlyIndexes": [ - 28, - 1, - 113, - 109, - 110, - 115 - ], - "writableIndexes": [ - 108, - 112, - 106, - 111 - ] - }, - { - "accountKey": "HSGvDUXpsitvzxwKfFGuUXDqkwwmHKuKFefKZrihWwXs", - "readonlyIndexes": [ - 24, - 97, - 99, - 95, - 93 - ], - "writableIndexes": [ - 96, - 90, - 94, - 98, - 91 - ] - }, - { - "accountKey": "4AxrbpNKXuE1ptZ7Pb5qm5YNKSiPp9BwWmwrcH876vk4", - "readonlyIndexes": [ - 26, - 23, - 24 - ], - "writableIndexes": [ - 28, - 198, - 25, - 27 - ] - }, - { - "accountKey": "CjS9bsXQwTdyuFSnFgtkV5JkUGmGMmGcidcjUDJiRJMD", - "readonlyIndexes": [ - 56, - 144 - ], - "writableIndexes": [ - 141, - 148, - 140, - 145, - 143 - ] - } - ], - "instructions": [ - { - "accounts": [], - "data": "K5KKhR", - "programId": "ComputeBudget111111111111111111111111111111", - "stackHeight": null - }, - { - "accounts": [], - "data": "3ZUEG7d8PVy1", - "programId": "ComputeBudget111111111111111111111111111111", - "stackHeight": null - }, - { - "accounts": [ - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "7keSmTZozjmuX66gd9GBSJYEHnMqsyutWpvuuKtXZKDH", - "DpobFr6hiD6541cQxqgmDvqXy7N875tujq2M1ji5VJy8", - "88Rzuj5DVJE2Co3XdRY6hMyu8YJ1eRVoZu72hMiyagUE", - "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ", - "HfsugpFeYex1reWFUH3LGDXMx16hHioZ9UpKVkuiENp9", - "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "D8cy77BBepLMngZx6ZukaTff5hCt1HrWyKk3Hnd9oitf", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "4kKFykZkVqE5wbBgj6o8ddnj5TmA6UQgXJLYzAasgKdD", - "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "F4J8oNpnqi6ij8PSym1koEVtRo6pSMo7GHy3tUrfrbPF", - "88Rzuj5DVJE2Co3XdRY6hMyu8YJ1eRVoZu72hMiyagUE", - "HP27oouQpPx2EYQXwfhgHrKhqUdr7eP8DSQvCVhCryDy", - "FXwwP2gWf9mCtA1mSsYpkQfwL4nRQadBtBDtMDC4KYBT", - "7uhX4oUPekqvSGaEqBUJ8q55VS3Bw7nKifSDycL82YzK", - "AiwJVCYynpy8pihTTDtdtF56NfZX92aXQbMhG956je8g", - "D1vc7vhdT8EdVDjqKbSJ6QCKQJKEpJVDQYGKUDhwBZMF", - "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "8ZBbyDGErfqvY65fRZnm6dtQBe3REuAPqzRN7819fzeW", - "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "CMtXWvw1CNrtApwDmsxSQmVBBvMS6Ck7ToyPWKEJbR6a", - "HuB7yEUXeTzWPLBHF73gnvQo67nzRfChecvPfrR8HRwp", - "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "6j6sqrqmZUKZ8NRQzH9S9fH6WWA5DqDQLHVqDcMPNgRP", - "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - "So11111111111111111111111111111111111111112", - "AW1Gbb7Px5JT7xgdTYgdkBujvdYz5qZ2rsgxHXVdmmw7", - "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "D1ZN9Wj1fRSUQfCjhvnu1hqDMT7hzjzBBpi12nVniYD6", - "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", - "C4zEohuAoahgAjZD7FNP1SveLcR3NMzawK97ePFrvyD6", - "72tbG2wp8Kf5z5GQZP8N1tuPipFjUT76NSfWXeKGU8Yc", - "J3EqRvxHVMXVLZJvzXKdyWNSPbPzynvJuCo4WJ5sToow", - "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c", - "696G1hvrC9NyJsHsDCVZhHLBMVXHajjGyLb3NBavadUU", - "5TLrkh8HW9jGkyRkamFLTYDTi6fMpioLZStPYTFxEPnX", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "6j6sqrqmZUKZ8NRQzH9S9fH6WWA5DqDQLHVqDcMPNgRP", - "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ", - "4Ep5XNqaDYbFAQHHdhtFXgaPuhDH6uajSG8ZfwxHzwBQ", - "5ZyzUvTKsv4rjN3CL4vToBpT3Y2votfP8DZPHfgEb5qZ", - "BABMfKMpMcAQLC6QR8gUm1W43U91puGYQt2p9UG8xunb", - "FG4cPYdHykGEoYq2PxFvy3KjuF24ZFxM2QDoyVVtjkMN", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - "JCQZijF7jLWqUCrA5bp3wfUfy5WKsoSvYT5BuQUKWRr1", - "JCQZijF7jLWqUCrA5bp3wfUfy5WKsoSvYT5BuQUKWRr1", - "8Wn7WsvK4Vnuxjmq8fsVbSFsGzeCmmtH9noepDUCeiQ8", - "obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y", - "ha6ob9camZC1cPrwzrpc4H5JBaEapQDsS9nmavVCEUU", - "So11111111111111111111111111111111111111112", - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - "AATZXBUMKgpvpDvjQZdPRvjeYNyEdxFeKyWZ3zJzfVqW", - "FKiQUwNvjfm8a1noBeeCnqC1ASp4dkkvcM3iGzKvPgon", - "H1qQ6Hent1C5wa4Hc3GK2V1sgg4grvDBbmKd5H8dsTmo", - "JSvtokJbtGsYhneKomFBjnJh4djEQLdHV2kAeS43bBZ", - "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q", - "39cWjvHrpHNz2SbXv6ME4NPhqBDBd4KsjUYv5JkHEAJU", - "A28T5pKtscnhDo6C1Sz786Tup88aTjt8uyKewjVvPrGk", - "2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h", - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - ], - "data": "3P1sk3v7iWSLdUaRZXiDPWns4GinrBicWfVhy4QPH7Zhk18iGxE3dKtidypU3c3FV51Dh", - "programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", - "stackHeight": null - } - ], - "recentBlockhash": "9xrgdcMXwWFdxFT7rUCEWrafpKziDpgtSTmy4fGLx1dd" - }, - "signatures": [ - "2uLW7Ezd4DL8pxCEY21VrKA3sboune8Vw3xq1u1NcWSq3FKF6fsLPf4MeqU1gR9yP19TzQvG7fGA7bHNiFzQg89Q" - ] - }, - "version": 0 -} \ No newline at end of file diff --git a/crypto/sol/modules/SolanaAPI.py b/crypto/sol/modules/SolanaAPI.py new file mode 100644 index 0000000..7f5cda2 --- /dev/null +++ b/crypto/sol/modules/SolanaAPI.py @@ -0,0 +1,747 @@ +import sys +import os + +import aiohttp +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +import asyncio +import json +import logging +import random +import websockets +from typing import Dict, List, Optional +import requests +from datetime import datetime +from solana.rpc.types import TokenAccountOpts, TxOpts + +logger = logging.getLogger(__name__) + +SOLANA_ENDPOINTS = [ + "wss://api.mainnet-beta.solana.com", +] +PING_INTERVAL = 30 +SUBSCRIBE_INTERVAL = 1*60 # Resubscribe every 1 minute + +from config import ( + FOLLOWED_WALLET, SOLANA_HTTP_URL, DISPLAY_CURRENCY +) + +from modules.utils import telegram_utils + +class SolanaWS: + def __init__(self, on_message: Optional[callable] = None): + self.websocket = None + self.subscription_id = None + self.message_queue = asyncio.Queue() + self.on_message = on_message + self.websocket = None + + async def connect(self): + while True: + try: + current_url = random.choice(SOLANA_ENDPOINTS) + self.websocket = await websockets.connect(current_url, ping_interval=30, ping_timeout=20) + logger.info(f"Connected to Solana websocket: {current_url}") + return + except Exception as e: + logger.error(f"Failed to connect to {current_url}: {e}") + await asyncio.sleep(5) + + async def ws_jsonrpc(self, ws, method, params=None, doProcessResponse = True): + if not isinstance(params, list): + params = [params] if params is not None else [] + + request = { + "jsonrpc": "2.0", + "id": 1, + "method": method, + "params": params + } + + await ws.send(json.dumps(request)) + if not doProcessResponse: + return None + else: + response = await self.websocket.recv() + response_data = json.loads(response) + + if 'result' in response_data: + return response_data['result'] + elif 'error' in response_data: + logger.error(f"Error in WebSocket RPC call: {response_data['error']}") + return None + else: + logger.warning(f"Unexpected response: {response_data}") + return None + + async def subscribe(self): + params = [ + {"mentions": [FOLLOWED_WALLET]}, + {"commitment": "confirmed"} + ] + result = await self.ws_jsonrpc("logsSubscribe", params, doProcessResponse=False) + response = process_messages(self.websocket) + if result is not None: + self.subscription_id = result + logger.info(f"Subscription successful. Subscription id: {self.subscription_id}") + else: + logger.error("Failed to subscribe") + + async def unsubscribe(self): + if self.subscription_id: + result = await self.ws_jsonrpc("logsUnsubscribe", [self.subscription_id]) + if result: + logger.info(f"Unsubscribed from subscription id: {self.subscription_id}") + self.subscription_id = None + else: + logger.error(f"Failed to unsubscribe from subscription id: {self.subscription_id}") + + async def receive_messages(self): + while True: + try: + message = await self.websocket.recv() + await self.message_queue.put(message) + except websockets.exceptions.ConnectionClosedError: + logger.error("WebSocket connection closed") + break + except Exception as e: + logger.error(f"Error receiving message: {e}") + break + + async def process_messages(self): + while True: + message = await self.message_queue.get() + if self.on_message: + await self.on_message(message) + logger.info(f"Received message: {message}") + + async def close(self): + if self.websocket: + await self.websocket.close() + logger.info("WebSocket connection closed") + + async def solana_jsonrpc(method, params=None, jsonParsed=True): + if not isinstance(params, list): + params = [params] if params is not None else [] + + data = { + "jsonrpc": "2.0", + "id": 1, + "method": method, + "params": params + } + + if jsonParsed: + data["params"].append({"encoding": "jsonParsed", "maxSupportedTransactionVersion": 0}) + else: + data["params"].append({"maxSupportedTransactionVersion": 0}) + + try: + response = requests.post(SOLANA_HTTP_URL, headers={"Content-Type": "application/json"}, data=json.dumps(data)) + response.raise_for_status() + result = response.json() + if 'result' not in result or 'error' in result: + logger.error("Error fetching data from Solana RPC:", result) + return None + return result['result'] + except Exception as e: + logger.error(f"Error fetching data from Solana RPC: {e}") + return None + +class SolanaAPI: + def __init__(self, process_transaction_callback, on_initial_subscription_callback = None, on_bot_message=None): + self.process_transaction = process_transaction_callback + self.on_initial_subscription = on_initial_subscription_callback + self.on_bot_message = on_bot_message, + + self.dex = SolanaDEX(DISPLAY_CURRENCY) + self.solana_ws = SolanaWS(on_message=self.process_transaction) + + async def process_messages(self, solana_ws): + while True: + message = await solana_ws.message_queue.get() + await self.process_transaction(message) + + async def wallet_watch_loop(self): + + solana_ws = SolanaWS(on_message=self.process_transaction) + first_subscription = True + + while True: + try: + await solana_ws.connect() + await solana_ws.subscribe() + + if first_subscription: + asyncio.create_task(self.on_initial_subscription()) + first_subscription = False + + await self.on_bot_message(f"Solana mainnet connected ({solana_ws.subscription_id})...") + + receive_task = asyncio.create_task(solana_ws.receive_messages()) + process_task = asyncio.create_task(solana_ws.process_messages()) + + try: + await asyncio.gather(receive_task, process_task) + except asyncio.CancelledError: + pass + finally: + receive_task.cancel() + process_task.cancel() + + except Exception as e: + logger.error(f"An unexpected error occurred: {e}") + finally: + await solana_ws.unsubscribe() + if solana_ws.websocket: + await solana_ws.close() + await self.on_bot_message("Reconnecting...") + await asyncio.sleep(5) + + async def process_transaction(self, signature): + print(f"Processing transaction: {signature['signature']}") + # Add your transaction processing logic here + + async def get_last_transactions(self, account_address, check_interval=300, limit=1000): + last_check_time = None + last_signature = None + + while True: + current_time = datetime.now() + + if last_check_time is None or (current_time - last_check_time).total_seconds() >= check_interval: + params = [ + account_address, + { + "limit": limit + } + ] + + if last_signature: + params[1]["before"] = last_signature + + result = await solana_jsonrpc("getSignaturesForAddress", params) + + if result: + for signature in result: + if last_signature and signature['signature'] == last_signature: + break + + await self.process_transaction(signature) + + if result: + last_signature = result[0]['signature'] + + last_check_time = current_time + + await asyncio.sleep(1) + + async def get_token_metadata_symbol(mint_address): + global TOKENS_INFO + + if mint_address in TOKENS_INFO and 'symbol' in TOKENS_INFO[mint_address]: + return TOKENS_INFO[mint_address].get('symbol') + + try: + account_data_result = await self.solana_ws.solana_jsonrpc("getAccountInfo", mint_address) + if 'value' in account_data_result and 'data' in account_data_result['value']: + account_data_data = account_data_result['value']['data'] + if 'parsed' in account_data_data and 'info' in account_data_data['parsed']: + account_data_info = account_data_data['parsed']['info'] + if 'decimals' in account_data_info: + if mint_address in TOKENS_INFO: + TOKENS_INFO[mint_address]['decimals'] = account_data_info['decimals'] + else: + TOKENS_INFO[mint_address] = {'decimals': account_data_info['decimals']} + if 'tokenName' in account_data_info: + if mint_address in TOKENS_INFO: + TOKENS_INFO[mint_address]['name'] = account_data_info['tokenName'] + else: + TOKENS_INFO[mint_address] = {'name': account_data_info['tokenName']} + + metadata = await get_token_metadata(mint_address) + if metadata: + if mint_address in TOKENS_INFO: + TOKENS_INFO[mint_address].update(metadata) + else: + TOKENS_INFO[mint_address] = metadata + await save_token_info() + # TOKENS_INFO[mint_address] = metadata + # return metadata.get('symbol') or metadata.get('name') + return TOKENS_INFO[mint_address].get('symbol') + except Exception as e: + logging.error(f"Error fetching token name for {mint_address}: {str(e)}") + return None + + async def get_transaction_details_rpc(tx_signature, readfromDump=False): + global FOLLOWED_WALLET_VALUE, YOUR_WALLET_VALUE, TOKEN_PRICES, TOKENS_INFO + try: + if readfromDump and os.path.exists('./logs/transation_details.json'): + with open('./logs/transation_details.json', 'r') as f: # trump_swap_tr_details + transaction_details = json.load(f) + return transaction_details + else: + transaction_details = await solana_jsonrpc("getTransaction", tx_signature) + with open('./logs/transation_details.json', 'w') as f: + json.dump(transaction_details, f, indent=2) + + if transaction_details is None: + logging.error(f"Error fetching transaction details for {tx_signature}") + return None + + # Initialize default result structure + parsed_result = { + "order_id": None, + "token_in": None, + "token_out": None, + "amount_in": 0, + "amount_out": 0, + "amount_in_USD": 0, + "amount_out_USD": 0, + "percentage_swapped": 0 + } + + # Extract order_id from logs + log_messages = transaction_details.get("meta", {}).get("logMessages", []) + for log in log_messages: + if "order_id" in log: + parsed_result["order_id"] = log.split(":")[2].strip() + break + + # Extract token transfers from innerInstructions + inner_instructions = transaction_details.get('meta', {}).get('innerInstructions', []) + for instruction_set in inner_instructions: + for instruction in instruction_set.get('instructions', []): + if instruction.get('program') == 'spl-token' and instruction.get('parsed', {}).get('type') == 'transferChecked': + info = instruction['parsed']['info'] + mint = info['mint'] + amount = float(info['tokenAmount']['amount']) / 10 ** info['tokenAmount']['decimals'] # Adjust for decimals + + # Determine which token is being swapped in and out based on zero balances + if parsed_result["token_in"] is None and amount > 0: + parsed_result["token_in"] = mint + parsed_result["amount_in"] = amount + + + if parsed_result["token_in"] is None or parsed_result["token_out"] is None: + # if we've failed to extract token_in and token_out from the transaction details, try a second method + inner_instructions = transaction_details.get('meta', {}).get('innerInstructions', []) + transfers = [] + + for instruction_set in inner_instructions: + for instruction in instruction_set.get('instructions', []): + if instruction.get('program') == 'spl-token' and instruction.get('parsed', {}).get('type') in ['transfer', 'transferChecked']: + info = instruction['parsed']['info'] + amount = float(info['amount']) if 'amount' in info else float(info['tokenAmount']['amount']) + decimals = info['tokenAmount']['decimals'] if 'tokenAmount' in info else 0 + adjusted_amount = amount / (10 ** decimals) + # adjusted_amount = float(info["amount"]) / (10 ** (info["tokenAmount"]["decimals"] if 'tokenAmount' in info else 0)) + transfers.append({ + 'mint': info.get('mint'), + 'amount': adjusted_amount, + 'source': info['source'], + 'destination': info['destination'] + }) + + # Identify token_in and token_out + if len(transfers) >= 2: + parsed_result["token_in"] = transfers[0]['mint'] + parsed_result["amount_in"] = transfers[0]['amount'] + parsed_result["token_out"] = transfers[-1]['mint'] + parsed_result["amount_out"] = transfers[-1]['amount'] + + # If mint is not provided, query the Solana network for the account data + if parsed_result["token_in"] is None or parsed_result["token_out"] is None: + #for transfer in transfers: + # do only first and last transfer + for transfer in [transfers[0], transfers[-1]]: + if transfer['mint'] is None: + # Query the Solana network for the account data + account_data_result = await solana_jsonrpc("getAccountInfo", transfer['source']) + + if 'value' in account_data_result and 'data' in account_data_result['value']: + account_data_value = account_data_result['value'] + account_data_data = account_data_value['data'] + if 'parsed' in account_data_data and 'info' in account_data_data['parsed']: + account_data_info = account_data_data['parsed']['info'] + if 'mint' in account_data_info: + transfer['mint'] = account_data_info['mint'] + if transfer['mint'] in TOKENS_INFO or 'decimals' not in TOKENS_INFO[transfer['mint']]: + await get_token_metadata_symbol(transfer['mint']) + # get actual prices + current_price = await get_token_prices([transfer['mint']]) + + if parsed_result["token_in"] is None: + parsed_result["token_in"] = transfer['mint'] + parsed_result["symbol_in"] = TOKENS_INFO[transfer['mint']]['symbol'] + parsed_result["amount_in"] = transfer['amount']/10**TOKENS_INFO[transfer['mint']]['decimals'] + parsed_result["amount_in_USD"] = parsed_result["amount_in"] * TOKENS_INFO[transfer['mint']].get('price', current_price[transfer['mint']]) + elif parsed_result["token_out"] is None: + parsed_result["token_out"] = transfer['mint'] + parsed_result["symbol_out"] = TOKENS_INFO[transfer['mint']]['symbol'] + parsed_result["amount_out"] = transfer['amount']/10**TOKENS_INFO[transfer['mint']]['decimals'] + parsed_result["amount_out_USD"] = parsed_result["amount_out"] * TOKENS_INFO[transfer['mint']]['price'] + + pre_balalnces = transaction_details.get('meta', {}).get('preTokenBalances', []) + for balance in pre_balalnces: + if balance['mint'] == parsed_result["token_in"] and balance['owner'] == FOLLOWED_WALLET: + parsed_result["before_source_balance"] = float(balance['uiTokenAmount']['amount']) / 10 ** balance['uiTokenAmount']['decimals'] + break + + + # Calculate percentage swapped + try: + if parsed_result["amount_in"] > 0 and 'before_source_balance' in parsed_result and parsed_result["before_source_balance"] > 0: + parsed_result["percentage_swapped"] = (parsed_result["amount_in"] / parsed_result["before_source_balance"]) * 100 + else: + # calculate based on total wallet value: FOLLOWED_WALLET_VALUE + parsed_result["percentage_swapped"] = (parsed_result["amount_in_USD"] / FOLLOWED_WALLET_VALUE) * 100 + except Exception as e: + logging.error(f"Error calculating percentage swapped: {e}") + + return parsed_result + + except requests.exceptions.RequestException as e: + print("Error fetching transaction details:", e) + + + + + +class SolanaDEX: + def __init__(self, DISPLAY_CURRENCY): + self.DISPLAY_CURRENCY = DISPLAY_CURRENCY + pass + + async def get_token_prices(token_addresses: List[str]) -> Dict[str, float]: + global TOKENS_INFO + + # Skip for USD + prices = {addr: 1.0 for addr in token_addresses if addr == "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"} + remaining_tokens = [addr for addr in token_addresses if addr not in prices] + + # Try CoinGecko + coingecko_prices = await self.get_prices_from_coingecko(remaining_tokens) + prices.update(coingecko_prices) + + + # For remaining missing tokens, try Jupiter + missing_tokens = set(remaining_tokens) - set(prices.keys()) + if missing_tokens: + jupiter_prices = await get_prices_from_jupiter(list(missing_tokens)) + prices.update(jupiter_prices) + + + # For tokens not found in CoinGecko, use DexScreener + missing_tokens = set(remaining_tokens) - set(coingecko_prices.keys()) + if missing_tokens: + dexscreener_prices = await get_prices_from_dexscreener(list(missing_tokens)) + prices.update(dexscreener_prices) + + # For remaining missing tokens, try Raydium + missing_tokens = set(remaining_tokens) - set(prices.keys()) + if missing_tokens: + raydium_prices = await get_prices_from_raydium(list(missing_tokens)) + prices.update(raydium_prices) + + # For remaining missing tokens, try Orca + missing_tokens = set(remaining_tokens) - set(prices.keys()) + if missing_tokens: + orca_prices = await get_prices_from_orca(list(missing_tokens)) + prices.update(orca_prices) + + # If any tokens are still missing, set their prices to 0 + for token in set(token_addresses) - set(prices.keys()): + prices[token] = 0.0 + logging.warning(f"Price not found for token {token}. Setting to 0.") + + for token, price in prices.items(): + token_info = TOKENS_INFO.setdefault(token, {}) + if 'symbol' not in token_info: + token_info['symbol'] = await get_token_metadata_symbol(token) + token_info['price'] = price + + return prices + + async def get_prices_from_coingecko(token_addresses: List[str]) -> Dict[str, float]: + base_url = "https://api.coingecko.com/api/v3/simple/token_price/solana" + prices = {} + + async def fetch_single_price(session, address): + params = { + "contract_addresses": address, + "vs_currencies": DISPLAY_CURRENCY.lower() + } + try: + async with session.get(base_url, params=params) as response: + if response.status == 200: + data = await response.json() + if address in data and DISPLAY_CURRENCY.lower() in data[address]: + return address, data[address][DISPLAY_CURRENCY.lower()] + else: + logging.warning(f"Failed to get price for {address} from CoinGecko. Status: {response.status}") + except Exception as e: + logging.error(f"Error fetching price for {address} from CoinGecko: {str(e)}") + return address, None + + async with aiohttp.ClientSession() as session: + tasks = [fetch_single_price(session, address) for address in token_addresses] + results = await asyncio.gather(*tasks) + + for address, price in results: + if price is not None: + prices[address] = price + + return prices + + async def get_prices_from_dexscreener(token_addresses: List[str]) -> Dict[str, float]: + base_url = "https://api.dexscreener.com/latest/dex/tokens/" + prices = {} + + try: + async with aiohttp.ClientSession() as session: + tasks = [fetch_token_data(session, f"{base_url}{address}") for address in token_addresses] + results = await asyncio.gather(*tasks) + + for address, result in zip(token_addresses, results): + if result and 'pairs' in result and result['pairs']: + pair = result['pairs'][0] # Use the first pair (usually the most liquid) + prices[address] = float(pair['priceUsd']) + else: + logging.warning(f"No price data found on DexScreener for token {address}") + except Exception as e: + logging.error(f"Error fetching token prices from DexScreener: {str(e)}") + + return prices + + async def get_prices_from_jupiter(token_addresses: List[str]) -> Dict[str, float]: + url = "https://price.jup.ag/v4/price" + params = { + "ids": ",".join(token_addresses) + } + prices = {} + + try: + async with aiohttp.ClientSession() as session: + async with session.get(url, params=params) as response: + if response.status == 200: + data = await response.json() + for address, price_info in data.get('data', {}).items(): + if 'price' in price_info: + prices[address] = float(price_info['price']) + else: + logging.error(f"Failed to get token prices from Jupiter. Status: {response.status}") + except Exception as e: + logging.error(f"Error fetching token prices from Jupiter: {str(e)}") + return prices + + # New function for Raydium + async def get_prices_from_raydium(token_addresses: List[str]) -> Dict[str, float]: + url = "https://api.raydium.io/v2/main/price" + prices = {} + + try: + async with aiohttp.ClientSession() as session: + async with session.get(url) as response: + if response.status == 200: + data = await response.json() + for address in token_addresses: + if address in data: + prices[address] = float(data[address]) + else: + logging.error(f"Failed to get token prices from Raydium. Status: {response.status}") + except Exception as e: + logging.error(f"Error fetching token prices from Raydium: {str(e)}") + return prices + + # New function for Orca + async def get_prices_from_orca(token_addresses: List[str]) -> Dict[str, float]: + url = "https://api.orca.so/allTokens" + prices = {} + + try: + async with aiohttp.ClientSession() as session: + async with session.get(url) as response: + if response.status == 200: + data = await response.json() + for token_info in data: + if token_info['mint'] in token_addresses: + prices[token_info['mint']] = float(token_info['price']) + else: + logging.error(f"Failed to get token prices from Orca. Status: {response.status}") + except Exception as e: + logging.error(f"Error fetching token prices from Orca: {str(e)}") + return prices + + async def fetch_token_data(session, url): + try: + async with session.get(url) as response: + if response.status == 200: + return await response.json() + else: + logging.error(f"Failed to fetch data from {url}. Status: {response.status}") + return None + except Exception as e: + logging.error(f"Error fetching data from {url}: {str(e)}") + return None + + async def get_sol_price() -> float: + sol_address = "So11111111111111111111111111111111111111112" # Solana's wrapped SOL address + return await get_token_prices([sol_address]).get(sol_address, 0.0) + + async def get_wallet_balances(wallet_address, doGetTokenName=True): + balances = {} + logging.info(f"Getting balances for wallet: {wallet_address}") + global TOKENS_INFO + try: + response = await solana_client.get_token_accounts_by_owner_json_parsed( + Pubkey.from_string(wallet_address), + opts=TokenAccountOpts( + program_id=Pubkey.from_string("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA") + ), + commitment=Confirmed + ) + + if response.value: + for account in response.value: + try: + parsed_data = account.account.data.parsed + if isinstance(parsed_data, dict) and 'info' in parsed_data: + info = parsed_data['info'] + if isinstance(info, dict) and 'mint' in info and 'tokenAmount' in info: + mint = info['mint'] + decimals = info['tokenAmount']['decimals'] + amount = float(info['tokenAmount']['amount'])/10**decimals + if amount > 0: + if mint in TOKENS_INFO: + token_name = TOKENS_INFO[mint].get('symbol') + elif doGetTokenName: + token_name = await get_token_metadata_symbol(mint) or 'N/A' + # sleep for 1 second to avoid rate limiting + await asyncio.sleep(2) + + TOKENS_INFO[mint]['holdedAmount'] = round(amount,decimals) + TOKENS_INFO[mint]['decimals'] = decimals + balances[mint] = { + 'name': token_name or 'N/A', + 'address': mint, + 'amount': amount, + 'decimals': decimals + } + # sleep for 1 second to avoid rate limiting + logging.debug(f"Account balance for {token_name} ({mint}): {amount}") + else: + logging.warning(f"Unexpected data format for account: {account}") + except Exception as e: + logging.error(f"Error parsing account data: {str(e)}") + + sol_balance = await solana_client.get_balance(Pubkey.from_string(wallet_address)) + if sol_balance.value is not None: + balances['SOL'] = { + 'name': 'SOL', + 'address': 'SOL', + 'amount': sol_balance.value / 1e9 + } + else: + logging.warning(f"SOL balance response missing for wallet: {wallet_address}") + + except Exception as e: + logging.error(f"Error getting wallet balances: {str(e)}") + logging.info(f"Found {len(response.value)} ({len(balances)} non zero) token accounts for wallet: {wallet_address}") + return balances + + async def convert_balances_to_currency(balances , sol_price): + converted_balances = {} + for address, info in balances.items(): + converted_balance = info.copy() # Create a copy of the original info + if info['name'] == 'SOL': + converted_balance['value'] = info['amount'] * sol_price + elif address in TOKEN_PRICES: + converted_balance['value'] = info['amount'] * TOKEN_PRICES[address] + else: + converted_balance['value'] = None # Price not available + logging.warning(f"Price not available for token {info['name']} ({address})") + converted_balances[address] = converted_balance + return converted_balances + + + async def list_initial_wallet_states(): + global TOKEN_ADDRESSES, FOLLOWED_WALLET_VALUE, YOUR_WALLET_VALUE, TOKEN_PRICES + global TOKENS_INFO # new + + followed_wallet_balances = await get_wallet_balances(FOLLOWED_WALLET) + your_wallet_balances = await get_wallet_balances(YOUR_WALLET) + + all_token_addresses = list(set(followed_wallet_balances.keys()) | + set(your_wallet_balances.keys()) | + set(TOKEN_ADDRESSES.values())) + + TOKEN_PRICES = await get_token_prices(all_token_addresses) + sol_price = await get_sol_price() + + followed_converted_balances = await convert_balances_to_currency(followed_wallet_balances, sol_price) + your_converted_balances = await convert_balances_to_currency(your_wallet_balances, sol_price) + + + TOKEN_ADDRESSES = { + address: info for address, + info in {**followed_converted_balances, **your_converted_balances}.items() if info['value'] is not None and info['value'] > 0 + } + logging.info(f"Monitoring balances for tokens: {[info['name'] for info in TOKEN_ADDRESSES.values()]}") + + followed_wallet_state = [] + FOLLOWED_WALLET_VALUE = 0 + for address, info in followed_converted_balances.items(): + if info['value'] is not None and info['value'] > 0: + followed_wallet_state.append(f"{info['name']}: {info['value']:.2f} {DISPLAY_CURRENCY} ({info['address']})") + FOLLOWED_WALLET_VALUE += info['value'] + + your_wallet_state = [] + YOUR_WALLET_VALUE = 0 + for address, info in your_converted_balances.items(): + if info['value'] is not None and info['value'] > 0: + your_wallet_state.append(f"{info['name']}: {info['value']:.2f} {DISPLAY_CURRENCY}") + YOUR_WALLET_VALUE += info['value'] + + message = ( + f"Initial Wallet States (All balances in {DISPLAY_CURRENCY}):\n\n" + f"Followed Wallet ({FOLLOWED_WALLET}):\n" + f"{chr(10).join(followed_wallet_state)}\n" + f"Total Value: {FOLLOWED_WALLET_VALUE:.2f} {DISPLAY_CURRENCY}\n\n" + f"Your Wallet ({YOUR_WALLET}):\n" + f"{chr(10).join(your_wallet_state)}\n" + f"Total Value: {YOUR_WALLET_VALUE:.2f} {DISPLAY_CURRENCY}\n\n" + f"Monitored Tokens:\n" + f"{', '.join([safe_get_property(info, 'name') for info in TOKEN_ADDRESSES.values()])}" + ) + + logging.info(message) + await telegram_utils.send_telegram_message(message) + + # save token info to file + await save_token_info() + + + +#example +# async def main(): +# await telegram_utils.initialize() + +# async def process_log(log): +# print(f"Processing log: {log}") + +# async def list_initial_wallet_states(): +# print("Listing initial wallet states") + + +# wallet_watch_task = asyncio.create_task(solana_api.wallet_watch_loop()) + +# try: +# await asyncio.gather(wallet_watch_task) +# except asyncio.CancelledError: +# pass +# finally: +# await telegram_utils.close() + +# if __name__ == "__main__": +# asyncio.run(main()) \ No newline at end of file diff --git a/crypto/sol/modules/__init__.py b/crypto/sol/modules/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/crypto/sol/modules/storage.py b/crypto/sol/modules/storage.py new file mode 100644 index 0000000..26ea7e2 --- /dev/null +++ b/crypto/sol/modules/storage.py @@ -0,0 +1,328 @@ +import sys +import os +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +import aiosqlite +import json +from datetime import datetime + +DATABASE_FILE = "./app_data.db" + +async def init_db(): + async with aiosqlite.connect(DATABASE_FILE) as db: + await db.executescript(""" + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password_hash TEXT NOT NULL, + email TEXT UNIQUE NOT NULL, + api_key TEXT UNIQUE, + plan TEXT DEFAULT 'free' + ); + + CREATE TABLE IF NOT EXISTS wallets ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER, + address TEXT NOT NULL, + name TEXT, + FOREIGN KEY (user_id) REFERENCES users(id) + ); + + CREATE TABLE IF NOT EXISTS transactions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + wallet_id INTEGER, + timestamp TEXT, + type TEXT, + sell_currency TEXT, + sell_amount REAL, + sell_value REAL, + buy_currency TEXT, + buy_amount REAL, + buy_value REAL, + closed BOOLEAN DEFAULT 0, + details TEXT, + solana_signature TEXT UNIQUE, + FOREIGN KEY (wallet_id) REFERENCES wallets(id) + ); + + CREATE TABLE IF NOT EXISTS holdings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + wallet_id INTEGER, + currency TEXT, + amount REAL, + last_updated TEXT, + FOREIGN KEY (wallet_id) REFERENCES wallets(id) + ); + + CREATE TABLE IF NOT EXISTS price_alerts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER, + currency TEXT, + target_price REAL, + alert_type TEXT, + FOREIGN KEY (user_id) REFERENCES users(id) + ); + + CREATE TABLE IF NOT EXISTS followed_accounts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER, + address TEXT, + followed_address TEXT, + name TEXT, + FOREIGN KEY (address) REFERENCES wallets(address), + FOREIGN KEY (followed_address) REFERENCES wallets(address), + FOREIGN KEY (user_id) REFERENCES users(id) + ); + """) + await db.commit() + +async def store_transaction(wallet_id, transaction_type, sell_currency, sell_amount, sell_value, buy_currency, buy_amount, buy_value, solana_signature, details=None): + async with aiosqlite.connect(DATABASE_FILE) as db: + await db.execute(""" + INSERT INTO transactions (wallet_id, timestamp, type, sell_currency, sell_amount, sell_value, buy_currency, buy_amount, buy_value, solana_signature, details) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, (wallet_id, datetime.now().isoformat(), transaction_type, sell_currency, sell_amount, sell_value, buy_currency, buy_amount, buy_value, solana_signature, json.dumps(details or {}))) + await db.commit() + + +async def update_holdings(wallet_id, currency, amount_change): + async with aiosqlite.connect(DATABASE_FILE) as db: + cursor = await db.execute("SELECT amount FROM holdings WHERE wallet_id = ? AND currency = ?", (wallet_id, currency)) + result = await cursor.fetchone() + if result: + new_amount = result[0] + amount_change + await db.execute("UPDATE holdings SET amount = ?, last_updated = ? WHERE wallet_id = ? AND currency = ?", + (new_amount, datetime.now().isoformat(), wallet_id, currency)) + else: + await db.execute("INSERT INTO holdings (wallet_id, currency, amount, last_updated) VALUES (?, ?, ?, ?)", + (wallet_id, currency, amount_change, datetime.now().isoformat())) + await db.commit() + +async def get_wallet_holdings(wallet_id): + async with aiosqlite.connect(DATABASE_FILE) as db: + cursor = await db.execute("SELECT currency, amount FROM holdings WHERE wallet_id = ?", (wallet_id,)) + return await cursor.fetchall() + +async def get_transaction_history(wallet_id, start_date=None, end_date=None, include_closed=False): + async with aiosqlite.connect(DATABASE_FILE) as db: + query = "SELECT * FROM transactions WHERE wallet_id = ?" + params = [wallet_id] + if not include_closed: + query += " AND closed = 0" + if start_date: + query += " AND timestamp >= ?" + params.append(start_date) + if end_date: + query += " AND timestamp <= ?" + params.append(end_date) + query += " ORDER BY timestamp DESC" + cursor = await db.execute(query, params) + return await cursor.fetchall() + +# New utility functions + +async def close_transaction(transaction_id): + async with aiosqlite.connect(DATABASE_FILE) as db: + await db.execute("UPDATE transactions SET closed = 1 WHERE id = ?", (transaction_id,)) + await db.commit() + +async def get_open_transactions(wallet_id, currency): + async with aiosqlite.connect(DATABASE_FILE) as db: + cursor = await db.execute(""" + SELECT * FROM transactions + WHERE wallet_id = ? AND buy_currency = ? AND closed = 0 + ORDER BY timestamp ASC + """, (wallet_id, currency)) + return await cursor.fetchall() + +async def calculate_current_holdings(wallet_id): + async with aiosqlite.connect(DATABASE_FILE) as db: + cursor = await db.execute(""" + SELECT + buy_currency AS currency, + SUM(buy_amount) - COALESCE( + (SELECT SUM(sell_amount) + FROM transactions t2 + WHERE t2.wallet_id = t1.wallet_id + AND t2.sell_currency = t1.buy_currency + AND t2.closed = 0), + 0 + ) AS amount + FROM transactions t1 + WHERE wallet_id = ? AND closed = 0 + GROUP BY buy_currency + HAVING amount > 0 + """, (wallet_id,)) + return await cursor.fetchall() + +STABLECOINS = ['USDC', 'USDT', 'SOL'] + +async def is_transaction_closed(wallet_id, transaction_id): + async with aiosqlite.connect(DATABASE_FILE) as db: + cursor = await db.execute(""" + SELECT t1.buy_currency, t1.buy_amount, + (SELECT SUM(sell_amount) + FROM transactions t2 + WHERE t2.wallet_id = t1.wallet_id + AND t2.sell_currency = t1.buy_currency + AND t2.timestamp > t1.timestamp) AS sold_amount + FROM transactions t1 + WHERE t1.id = ? AND t1.wallet_id = ? + """, (transaction_id, wallet_id)) + result = await cursor.fetchone() + + if result: + buy_currency, buy_amount, sold_amount = result + return sold_amount is not None and sold_amount >= buy_amount + return False + +async def close_completed_transactions(wallet_id): + async with aiosqlite.connect(DATABASE_FILE) as db: + cursor = await db.execute(""" + SELECT id FROM transactions + WHERE wallet_id = ? AND closed = 0 AND buy_currency NOT IN (?) + """, (wallet_id, ','.join(STABLECOINS))) + transactions = await cursor.fetchall() + + for (transaction_id,) in transactions: + if await is_transaction_closed(wallet_id, transaction_id): + await close_transaction(transaction_id) + +async def get_profit_loss(wallet_id, currency, start_date=None, end_date=None): + async with aiosqlite.connect(DATABASE_FILE) as db: + query = """ + SELECT + SUM(CASE WHEN sell_currency = ? THEN sell_value ELSE -buy_value END) as profit_loss + FROM transactions + WHERE wallet_id = ? AND (sell_currency = ? OR buy_currency = ?) + """ + params = [currency, wallet_id, currency, currency] + + if start_date: + query += " AND timestamp >= ?" + params.append(start_date) + if end_date: + query += " AND timestamp <= ?" + params.append(end_date) + + cursor = await db.execute(query, params) + result = await cursor.fetchone() + return result[0] if result else 0 + +# # # # # # USERS + +# For this example, we'll use a simple dictionary to store users +users = { + "db": {"id": 1, "username": "db", "email": "user1@example.com", "password": "db"}, + "popov": {"id": 2, "username": "popov", "email": "user2@example.com", "password": "popov"} +} + +def get_or_create_user(email, google_id): + user = next((u for u in users.values() if u['email'] == email), None) + if not user: + user_id = max(u['id'] for u in users.values()) + 1 + username = email.split('@')[0] # Use the part before @ as username + user = { + 'id': user_id, + 'username': username, + 'email': email, + 'google_id': google_id + } + users[username] = user + return user + +def authenticate_user(username, password): + """ + Authenticate a user based on username and password. + Returns user data if authentication is successful, None otherwise. + """ + user = users.get(username) + if user and user['password'] == password: + return {"id": user['id'], "username": user['username'], "email": user['email']} + return None + +def get_user_by_id(user_id): + """ + Retrieve a user by their ID. + """ + for user in users.values(): + if user['id'] == int(user_id): + return {"id": user['id'], "username": user['username'], "email": user['email']} + return None + +def store_api_key(user_id, api_key): + """ + Store the generated API key for a user. + """ + # In a real application, you would store this in a database + # For this example, we'll just print it + print(f"Storing API key {api_key} for user {user_id}") + + + + + +# async def get_new_transactions(wallet_address, rpc_url): +# async with AsyncClient(rpc_url) as client: +# last_tx = await get_last_stored_transaction(wallet_address) + +# if last_tx: +# last_signature, last_timestamp = last_tx +# else: +# # If no transactions are stored, we'll fetch all transactions +# last_signature = None +# last_timestamp = None + +# new_transactions = [] + +# # Get the transaction history for the wallet +# tx_history = await client.get_signatures_for_address(wallet_address, before=last_signature) + +# for tx in tx_history.value: +# # Check if the transaction is newer than the last stored one +# if not last_timestamp or tx.block_time > datetime.fromisoformat(last_timestamp).timestamp(): +# # Fetch the full transaction details +# tx_details = await client.get_transaction(tx.signature, commitment=Confirmed) +# new_transactions.append(tx_details) + +# return new_transactions + +# async def process_new_transactions(wallet_id, wallet_address, rpc_url): +# new_transactions = await get_new_transactions(wallet_address, rpc_url) + +# for tx in new_transactions: +# # Process the transaction and extract relevant information +# # This is a placeholder - you'll need to implement the actual logic based on your requirements +# transaction_type = "swap" # Determine the type based on the transaction data +# sell_currency = "SOL" # Extract from transaction data +# sell_amount = 1.0 # Extract from transaction data +# sell_value = 100.0 # Extract from transaction data +# buy_currency = "USDC" # Extract from transaction data +# buy_amount = 100.0 # Extract from transaction data +# buy_value = 100.0 # Extract from transaction data +# solana_signature = tx.transaction.signatures[0] + +# # Store the transaction in the database +# await store_transaction( +# wallet_id, transaction_type, sell_currency, sell_amount, sell_value, +# buy_currency, buy_amount, buy_value, solana_signature +# ) + +# # Update holdings +# await update_holdings(wallet_id, sell_currency, -sell_amount) +# await update_holdings(wallet_id, buy_currency, buy_amount) + +# # After processing all new transactions, close completed transactions +# await close_completed_transactions(wallet_id) + + + +# Example usage +if __name__ == "__main__": + import asyncio + + async def main(): + await init_db() + # Add more test functions here + + asyncio.run(main()) \ No newline at end of file diff --git a/crypto/sol/modules/utils.py b/crypto/sol/modules/utils.py new file mode 100644 index 0000000..6ed7ab7 --- /dev/null +++ b/crypto/sol/modules/utils.py @@ -0,0 +1,43 @@ +# telegram_utils.py +import sys +import os +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +import aiohttp +import logging +from telegram import Bot +from telegram.constants import ParseMode +from config import TELEGRAM_BOT_TOKEN, DEVELOPER_CHAT_ID, BOT_NAME + +class TelegramUtils: + def __init__(self): + self.bot = None + self.conn_pool = None + self.timeout = None + + async def initialize(self): + # Create a custom connection pool + self.conn_pool = aiohttp.TCPConnector(limit=100) # Increase the connection limit + self.timeout = aiohttp.ClientTimeout(total=30) # Set a longer timeout + + # Initialize Telegram Bot + self.bot = Bot(token=TELEGRAM_BOT_TOKEN) + + async def send_telegram_message(self, message): + if not self.bot: + await self.initialize() + + try: + # await self.bot.send_message(chat_id=DEVELOPER_CHAT_ID, text=f"[{BOT_NAME}] {message}", parse_mode=ParseMode.HTML) + logging.info(f"Telegram message sent: {message}") + except Exception as e: + logging.error(f"Error sending Telegram message: {str(e)}") + + async def close(self): + if self.conn_pool: + await self.conn_pool.close() + +# Create a global instance of TelegramUtils +telegram_utils = TelegramUtils() + +# You can add more Telegram-related methods to the TelegramUtils class if needed \ No newline at end of file diff --git a/crypto/sol/modules/webui.py b/crypto/sol/modules/webui.py new file mode 100644 index 0000000..4dee698 --- /dev/null +++ b/crypto/sol/modules/webui.py @@ -0,0 +1,112 @@ +from flask import Flask, jsonify, request, render_template, redirect, url_for +# from flask_oauthlib.client import OAuth +from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user +import secrets +from modules import storage +import os + +def init_app(): + app = Flask(__name__, template_folder='../templates', static_folder='../static') + app.config['SECRET_KEY'] = 'your-secret-key' + login_manager = LoginManager(app) + login_manager.login_view = 'login' + + # oauth = OAuth(app) + # google = oauth.remote_app( + # 'google', + # consumer_key='YOUR_GOOGLE_CLIENT_ID', + # consumer_secret='YOUR_GOOGLE_CLIENT_SECRET', + # request_token_params={ + # 'scope': 'email' + # }, + # base_url='https://www.googleapis.com/oauth2/v1/', + # request_token_url=None, + # access_token_method='POST', + # access_token_url='https://accounts.google.com/o/oauth2/token', + # authorize_url='https://accounts.google.com/o/oauth2/auth', + # ) + + + login_manager = LoginManager() + login_manager.init_app(app) + + @app.route('/login/google/authorized') + def authorized(): + # resp = google.authorized_response() + # if resp is None or resp.get('access_token') is None: + # return 'Access denied: reason={} error={}'.format( + # request.args['error_reason'], + # request.args['error_description'] + # ) + # session['google_token'] = (resp['access_token'], '') + # user_info = google.get('userinfo') + # user = storage.get_or_create_user(user_info.data['email'], user_info.data['id']) + # login_user(user) + return redirect(url_for('index')) + + + class User(UserMixin): + def __init__(self, id, username, email): + self.id = id + self.username = username + self.email = email + + @login_manager.user_loader + def load_user(user_id): + user_data = storage.get_user_by_id(user_id) + if user_data: + return User(id=user_data['id'], username=user_data['username'], email=user_data['email']) + return None + + @app.route('/') + def index(): + return render_template('index.html') + + @app.route('/login', methods=['GET', 'POST']) + def login(): + if request.method == 'POST': + username = request.form.get('username') + password = request.form.get('password') + user = storage.authenticate_user(username, password) + if user: + login_user(User(id=user['id'], username=user['username'], email=user['email'])) + return redirect(url_for('dashboard')) + else: + return render_template('login.html', error='Invalid credentials') + elif request.args.get('google'): + return google.authorize(callback=url_for('authorized', _external=True)) + return render_template('login.html') + + @app.route('/logout') + @login_required + def logout(): + logout_user() + return redirect(url_for('index')) + + @app.route('/dashboard') + @login_required + def dashboard(): + return render_template('dashboard.html') + + @app.route('/generate_api_key', methods=['POST']) + @login_required + def generate_api_key(): + api_key = secrets.token_urlsafe(32) + storage.store_api_key(current_user.id, api_key) + return jsonify({'api_key': api_key}) + + @app.route('/wallet//transactions', methods=['GET']) + @login_required + def get_transactions(wallet_id): + transactions = storage.get_transactions(wallet_id) + return jsonify(transactions) + + @app.route('/wallet//holdings', methods=['GET']) + @login_required + def get_holdings(wallet_id): + holdings = storage.get_holdings(wallet_id) + return jsonify(holdings) + +# Implement other routes for reports, price alerts, following accounts, etc. + + return app \ No newline at end of file diff --git a/crypto/sol/requirements.in b/crypto/sol/requirements.in deleted file mode 100644 index 284d70d..0000000 --- a/crypto/sol/requirements.in +++ /dev/null @@ -1,12 +0,0 @@ -aiohttp==3.10.9 -aiohttp==3.10.5 -base58==2.1.1 -dexscreener==1.1 -Flask==3.0.3 -jupiter_python_sdk==0.0.2.0 -python-dotenv==1.0.1 -python-telegram-bot==21.6 -Requests==2.32.3 -solana==0.34.3 -solders==0.21.0 -websockets==10.4 diff --git a/crypto/sol/requirements.txt b/crypto/sol/requirements.txt index afc1b11..7d2e9ed 100644 --- a/crypto/sol/requirements.txt +++ b/crypto/sol/requirements.txt @@ -1,7 +1,10 @@ aiohttp==3.10.9 +aiosqlite base58==2.1.1 dexscreener==1.1 Flask==3.0.3 +flask-login +flask-oauthlib jupiter_python_sdk==0.0.2.0 python-dotenv==1.0.1 python-telegram-bot==21.6 diff --git a/crypto/sol/static/app.js b/crypto/sol/static/app.js deleted file mode 100644 index 32143e6..0000000 --- a/crypto/sol/static/app.js +++ /dev/null @@ -1,28 +0,0 @@ -document.getElementById('connectWallet').addEventListener('click', async () => { - try { - const { solana } is window; - if (solana && solana.isPhantom) { - const response = await solana.connect({ onlyIfTrusted: true }); - console.log('Connected with Public Key:', response.publicKey.toString()); - } else { - alert('Phantom wallet not found. Please install it.'); - } - } catch (error) { - console.error(error); - alert('Connection to Phantom Wallet failed'); - } -}); - -document.getElementById('swapToken').addEventListener('click', () => { - const tokenName = document.getElementById('tokenName').value; - const amount = document.getElementById('amount').value; - fetch('/swap', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({token_name: tokenName, amount: amount}) - }) - .then(response => response.json()) - .then(data => alert(data.message)); -}); diff --git a/crypto/sol/static/css/styles.css b/crypto/sol/static/css/styles.css new file mode 100644 index 0000000..d2db183 --- /dev/null +++ b/crypto/sol/static/css/styles.css @@ -0,0 +1,46 @@ +/* Add your custom styles here */ +body { + font-family: Arial, sans-serif; + line-height: 1.6; + margin: 0; + padding: 0; +} + +header { + background-color: #4A90E2; + color: white; + padding: 1rem; +} + +nav ul { + list-style-type: none; + padding: 0; +} + +nav ul li { + display: inline; + margin-right: 1rem; +} + +nav ul li a { + color: white; + text-decoration: none; +} + +main { + padding: 2rem; +} + +footer { + background-color: #333; + color: white; + text-align: center; + padding: 1rem; + position: fixed; + bottom: 0; + width: 100%; +} + +@media (max-width: 768px) { + /* Add responsive styles for mobile devices */ +} \ No newline at end of file diff --git a/crypto/sol/static/images/logo.png b/crypto/sol/static/images/logo.png new file mode 100644 index 0000000..e69de29 diff --git a/crypto/sol/static/js/app.js b/crypto/sol/static/js/app.js new file mode 100644 index 0000000..80885c5 --- /dev/null +++ b/crypto/sol/static/js/app.js @@ -0,0 +1,49 @@ +document.addEventListener('DOMContentLoaded', () => { + const connectWalletButton = document.getElementById('connectWallet'); + const swapTokenButton = document.getElementById('swapToken'); + const generateApiKeyButton = document.getElementById('generate-api-key'); + const apiKeyDisplay = document.getElementById('api-key-display'); + + if (connectWalletButton) { + connectWalletButton.addEventListener('click', async () => { + try { + const { solana } = window; + if (solana && solana.isPhantom) { + const response = await solana.connect({ onlyIfTrusted: true }); + console.log('Connected with Public Key:', response.publicKey.toString()); + } else { + alert('Phantom wallet not found. Please install it.'); + } + } catch (error) { + console.error(error); + alert('Connection to Phantom Wallet failed'); + } + }); + } + + if (swapTokenButton) { + swapTokenButton.addEventListener('click', () => { + const tokenName = document.getElementById('tokenName').value; + const amount = document.getElementById('amount').value; + fetch('/swap', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({token_name: tokenName, amount: amount}) + }) + .then(response => response.json()) + .then(data => alert(data.message)); + }); + } + + if (generateApiKeyButton) { + generateApiKeyButton.addEventListener('click', async () => { + const response = await fetch('/generate_api_key', { method: 'POST' }); + const data = await response.json(); + apiKeyDisplay.textContent = `Your API Key: ${data.api_key}`; + }); + } + + // Add more JavaScript for fetching and displaying wallet data, transactions, and holdings +}); \ No newline at end of file diff --git a/crypto/sol/static/manifest.json b/crypto/sol/static/manifest.json new file mode 100644 index 0000000..4ea8f8c --- /dev/null +++ b/crypto/sol/static/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "Crypto Portfolio Tracker", + "short_name": "CryptoTracker", + "start_url": "/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#4A90E2", + "icons": [ + { + "src": "/static/images/logo-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/static/images/logo-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] + } \ No newline at end of file diff --git a/crypto/sol/static/service-worker.js b/crypto/sol/static/service-worker.js new file mode 100644 index 0000000..0559efc --- /dev/null +++ b/crypto/sol/static/service-worker.js @@ -0,0 +1,8 @@ +// Add service worker code for offline functionality and caching +self.addEventListener('install', (event) => { + // Perform install steps + }); + + self.addEventListener('fetch', (event) => { + // Handle fetch events + }); \ No newline at end of file diff --git a/crypto/sol/templates/base.html b/crypto/sol/templates/base.html new file mode 100644 index 0000000..cdd2ba2 --- /dev/null +++ b/crypto/sol/templates/base.html @@ -0,0 +1,36 @@ + + + + + + {% block title %}Crypto Portfolio Tracker{% endblock %} + + + + + +
+ +
+ +
+ {% block content %}{% endblock %} +
+ +
+

© 2023 Crypto Portfolio Tracker

+
+ + + + \ No newline at end of file diff --git a/crypto/sol/templates/dashboard.html b/crypto/sol/templates/dashboard.html new file mode 100644 index 0000000..7733d1f --- /dev/null +++ b/crypto/sol/templates/dashboard.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} + +{% block content %} +

Dashboard

+

Welcome, {{ current_user.username }}!

+ +

Your Wallets

+
+ +

Recent Transactions

+
+ +

Holdings

+
+ + +

+ + +{% endblock %} \ No newline at end of file diff --git a/crypto/sol/templates/index.html b/crypto/sol/templates/index.html index 0de89fe..5ebd64a 100644 --- a/crypto/sol/templates/index.html +++ b/crypto/sol/templates/index.html @@ -1,21 +1,6 @@ - - - - - - Token Swapper - - -

Token Swapper

-
- -
-
- - - -
- - - - +{% extends "base.html" %} + +{% block content %} +

Welcome to Crypto Portfolio Tracker

+

Track your cryptocurrency investments with ease.

+{% endblock %} \ No newline at end of file diff --git a/crypto/sol/templates/login.html b/crypto/sol/templates/login.html new file mode 100644 index 0000000..49d940c --- /dev/null +++ b/crypto/sol/templates/login.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} + +{% block content %} +

Login

+{% if error %} +

{{ error }}

+{% endif %} +
+ +

+ +

+ +
+
+Login with Google + +{% endblock %} \ No newline at end of file diff --git a/crypto/sol/templates/swap.html b/crypto/sol/templates/swap.html new file mode 100644 index 0000000..0de89fe --- /dev/null +++ b/crypto/sol/templates/swap.html @@ -0,0 +1,21 @@ + + + + + + Token Swapper + + +

Token Swapper

+
+ +
+
+ + + +
+ + + +