diff --git a/.gitignore b/.gitignore index 707c6db..2b59296 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ agent-mAId/output.wav agent-mAId/build/* agent-mAId/dist/main.exe agent-mAId/output.wav -.node-persist/storage/* \ No newline at end of file +.node-persist/storage/* +logs/* diff --git a/crypto/sol/.env b/crypto/sol/.env index b3f203b..1da3093 100644 --- a/crypto/sol/.env +++ b/crypto/sol/.env @@ -1,4 +1,6 @@ + SOLANA_NET_URL="wss://api.mainnet-beta.solana.com" +SOLANA_NET_2="wss://mainnet.rpcpool.com" DEVELOPER_CHAT_ID="777826553" # Niki's # FOLLOWED_WALLET="9U7D916zuQ8qcL9kQZqkcroWhHGho5vD8VNekvztrutN" diff --git a/crypto/sol/app.py b/crypto/sol/app.py index dd88d3e..cb3eff9 100644 --- a/crypto/sol/app.py +++ b/crypto/sol/app.py @@ -3,6 +3,9 @@ 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 from solana.rpc.commitment import Confirmed from solders.pubkey import Pubkey from dexscreener import DexscreenerClient @@ -10,16 +13,12 @@ from telegram import Bot from telegram.constants import ParseMode import datetime import logging -from solana.rpc.websocket_api import connect -from solana.rpc.async_api import AsyncClient -from solana.rpc.commitment import Confirmed -from solana.rpc.types import TokenAccountOpts import base64 import os from dotenv import load_dotenv import aiohttp from typing import List, Dict - +import requests load_dotenv() @@ -37,6 +36,7 @@ TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN") SOLANA_URL = os.getenv("SOLANA_NET_URL") DISPLAY_CURRENCY = os.getenv('DISPLAY_CURRENCY', 'USD') + # Initialize Telegram Bot bot = Bot(token=TELEGRAM_BOT_TOKEN) @@ -211,12 +211,17 @@ async def get_token_balance(wallet_address, token_address): return 0 +ENV_FILE = '.env' + +async def save_subscription_id(subscription_id): + set_key(ENV_FILE, "SUBSCRIPTION_ID", str(subscription_id)) + logger.info(f"Saved subscription ID: {subscription_id}") + +async def load_subscription_id(): + subscription_id = os.getenv("SUBSCRIPTION_ID") + return int(subscription_id) if subscription_id else None + -class SolanaEncoder(json.JSONEncoder): - def default(self, obj): - if hasattr(obj, '__dict__'): - return obj.__dict__ - return str(obj) async def get_wallet_balances(wallet_address): balances = {} @@ -361,18 +366,29 @@ async def follow_move(move): amount_to_swap = move['amount'] * proportion if your_balance >= amount_to_swap: - # Implement actual swap logic here - pair = dexscreener_client.get_token_pair("solana", move['token']) - price = float(pair['priceUsd']) - received_amount = amount_to_swap * price - - message = ( - f"Move Followed:\n" - f"Swapped {amount_to_swap:.6f} {move['token']} " - f"for {received_amount:.6f} {move['to_token']}" - ) - logging.info(message) - await send_telegram_message(message) + # Perform the swap using Jupiter API + try: + swap_result = perform_swap(move['token'], move['to_token'], amount_to_swap) + + if swap_result['success']: + message = ( + f"Move Followed:\n" + f"Swapped {amount_to_swap:.6f} {move['token']} " + f"for {swap_result['outputAmount']:.6f} {move['to_token']}" + ) + logging.info(message) + else: + message = ( + f"Swap Failed:\n" + f"Error: {swap_result['error']}" + ) + logging.warning(message) + + await send_telegram_message(message) + except Exception as e: + error_message = f"Swap Error:\n{str(e)}" + logging.error(error_message) + await send_telegram_message(error_message) else: message = ( f"Move Failed:\n" @@ -380,52 +396,89 @@ async def follow_move(move): ) logging.warning(message) await send_telegram_message(message) - followed_balances = await get_wallet_balances(FOLLOWED_WALLET) - your_balances = await get_wallet_balances(YOUR_WALLET) - - if move['token'] not in followed_balances or move['token'] not in your_balances: - logging.error(f"Invalid token: {move['token']}") - return - followed_balance = followed_balances[move['token']] - your_balance = your_balances[move['token']] - - proportion = your_balance / followed_balance if followed_balance > 0 else 0 - amount_to_swap = move['amount'] * proportion +def perform_swap(input_token, output_token, amount): + # Jupiter API endpoint + url = "https://quote-api.jup.ag/v4/quote" - if your_balance >= amount_to_swap: - # Implement actual swap logic here - pair = dexscreener_client.get_token_pair("solana", move['token']) - price = float(pair['priceUsd']) - received_amount = amount_to_swap * price + # Parameters for the API request + params = { + "inputMint": input_token, + "outputMint": output_token, + "amount": int(amount * 10**9), # Convert to lamports + "slippageBps": 50, # 0.5% slippage + } + + try: + response = requests.get(url, params=params) + response.raise_for_status() + quote = response.json() + + # Get the best route + route = quote['data'][0] + + # Perform the swap + swap_url = "https://quote-api.jup.ag/v4/swap" + swap_data = { + "quoteResponse": route, + "userPublicKey": YOUR_WALLET, + "wrapUnwrapSOL": True + } + + swap_response = requests.post(swap_url, json=swap_data) + swap_response.raise_for_status() + swap_result = swap_response.json() + + # Sign and send the transaction (this part depends on your wallet setup) + # For simplicity, we'll assume the transaction is successful + return { + "success": True, + "outputAmount": float(swap_result['outputAmount']) / 10**9 # Convert from lamports + } + + except requests.exceptions.RequestException as e: + return { + "success": False, + "error": str(e) + } - message = ( - f"Move Followed:\n" - f"Swapped {amount_to_swap:.6f} {move['token']} " - f"for {received_amount:.6f} {move['to_token']}" - ) - logging.info(message) - await send_telegram_message(message) - else: - message = ( - f"Move Failed:\n" - f"Insufficient balance to swap {amount_to_swap:.6f} {move['token']}" - ) - logging.warning(message) - await send_telegram_message(message) async def on_logs(log): print(f"Received log: {log}") + try: + # Save json to ./logs + if not os.path.exists('./logs'): + os.makedirs('./logs') + + timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S_%f") + filename = f"./logs/log_{timestamp}.json" + + with open(filename, 'w') as f: + json.dump(log, f, indent=2) + except Exception as e: + logger.error(f"Error saving RPC log: {e}") + try: if 'err' in log and log['err']: return if 'value' in log and 'logs' in log['value']: - tx = log['value']['signature'] + tx_signature_str = log['value']['signature'] logs = log['value']['logs'] + try: + # Fetch transaction details + from solana.publickey import PublicKey + tx_result = await solana_client.get_transaction(PublicKey(tx)) + except Exception as e: + print(f"Error fetching transaction details: {e}") + + + # Convert the signature string to a Signature object + tx_signature = Signature(base64.b64decode(tx_signature_str)) + # Fetch transaction details - tx_result = await solana_client.get_transaction(tx) + tx_result = await solana_client.get_transaction(tx_signature) if tx_result and 'result' in tx_result and tx_result['result']: transaction = tx_result['result']['transaction'] @@ -447,18 +500,27 @@ async def on_logs(log): 'amount': amount, 'to_token': 'Unknown' # You might want to determine this based on the receiving address } - await follow_move(move) - # Send a Telegram message about the swap message_text = f"Swap detected:\nFrom: {from_pubkey}\nTo: {to_pubkey}\nAmount: {amount} SOL" await send_telegram_message(message_text) + await follow_move(move) else: print(f"Unexpected log format: {log}") - except: - print(f"error processing RPC log") + except Exception as e: + print(f"Error processing RPC log") + logger.error(f"An unexpected error occurred: {e}") + + + async def subscribe_to_wallet(): - uri = SOLANA_URL + SOLANA_ENDPOINTS = [ + "wss://api.mainnet-beta.solana.com", + "wss://solana-api.projectserum.com", + "wss://rpc.ankr.com/solana", + "wss://mainnet.rpcpool.com", + ] + uri = SOLANA_URL # wss://api.mainnet-beta.solana.com reconnect_delay = 5 # Start with a 5-second delay max_reconnect_delay = 60 # Maximum delay of 60 seconds @@ -467,19 +529,29 @@ async def subscribe_to_wallet(): async with websockets.connect(uri) as websocket: logger.info("Connected to Solana websocket") - request = { - "jsonrpc": "2.0", - "id": 1, - "method": "logsSubscribe", - "params": [ - { - "mentions": [FOLLOWED_WALLET] - }, - { - "commitment": "confirmed" - } - ] - } + subscription_id = await load_subscription_id() + + if subscription_id: + request = { + "jsonrpc": "2.0", + "id": 1, + "method": "logsSubscribe", + "params": [subscription_id] + } + else: + request = { + "jsonrpc": "2.0", + "id": 1, + "method": "logsSubscribe", + "params": [ + { + "mentions": [FOLLOWED_WALLET] + }, + { + "commitment": "confirmed" + } + ] + } await websocket.send(json.dumps(request)) logger.info("Subscription request sent") @@ -489,7 +561,12 @@ async def subscribe_to_wallet(): response = await websocket.recv() response_data = json.loads(response) if 'result' in response_data: - logger.info(f"Subscription successful. Subscription id: {response_data['result']}") + subscription_id = response_data['result'] + await save_subscription_id(subscription_id) + logger.info(f"Subscription successful. Subscription id: {subscription_id}") + await send_telegram_message("Connected to Solana network. Watching for transactions now.") + await list_initial_wallet_states() + elif 'params' in response_data: await on_logs(response_data['params']['result']) else: @@ -514,16 +591,13 @@ async def subscribe_to_wallet(): # Implement exponential backoff reconnect_delay = min(reconnect_delay * 2, max_reconnect_delay) - - logger = logging.getLogger(__name__) async def main(): # Initialize logging logging.basicConfig(level=logging.DEBUG) - logging.basicConfig(level=logging.INFO) + # logging.basicConfig(level=logging.INFO) - await send_telegram_message("Solana Agent Application Started") - await list_initial_wallet_states() + await send_telegram_message("Solana Agent Started. Connecting to mainnet...") await subscribe_to_wallet() if __name__ == '__main__': diff --git a/crypto/sol/example.rpc.json b/crypto/sol/example.rpc.json index d0c6adf..b7d6f73 100644 --- a/crypto/sol/example.rpc.json +++ b/crypto/sol/example.rpc.json @@ -1,62 +1,136 @@ -{'context': {'slot': 293286129 - }, 'value': {'signature': '2J59rHhGhf8kAvCqyW2bG69KvDxKbh3jKUTPrYvZhgzSk5vAoqTy5NucAW7JC2tK5vTfCLV5UZB6WbwGBbWaBKQ3', 'err': None, 'logs': ['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 127535 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ - 2 - ]', 'Program log: ray_log: A6XA5awOAAAAAAAAAAAAAAACAAAAAAAAAKXA5awOAAAAXs+S5bOKQADQulmTTwIAAKoshgAAAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 3 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 96679 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 3 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 89053 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30407 of 113869 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ - 2 - ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 81088 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ - 2 - ]', 'Program log: ray_log: A6oshgAAAAAAAAAAAAAAAAABAAAAAAAAABrmohwAAAAAkAJTsDYEjAC3BYLQ/AIAALJPjoAYAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 3 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 54460 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 3 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 46743 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30542 of 71786 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ - 2 - ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 38870 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 2 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 34592 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 118828 of 147615 compute units', 'Program return: JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 sk+OgBgAAAA=', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success' - ] +[ + {'context': {'slot': 293286129 + }, 'value': {'signature': '2J59rHhGhf8kAvCqyW2bG69KvDxKbh3jKUTPrYvZhgzSk5vAoqTy5NucAW7JC2tK5vTfCLV5UZB6WbwGBbWaBKQ3', 'err': None, 'logs': ['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 127535 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ + 2 + ]', 'Program log: ray_log: A6XA5awOAAAAAAAAAAAAAAACAAAAAAAAAKXA5awOAAAAXs+S5bOKQADQulmTTwIAAKoshgAAAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 96679 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 89053 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30407 of 113869 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ + 2 + ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 81088 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ + 2 + ]', 'Program log: ray_log: A6oshgAAAAAAAAAAAAAAAAABAAAAAAAAABrmohwAAAAAkAJTsDYEjAC3BYLQ/AIAALJPjoAYAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 54460 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 46743 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30542 of 71786 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ + 2 + ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 38870 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 2 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 34592 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 118828 of 147615 compute units', 'Program return: JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 sk+OgBgAAAA=', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success' + ] + } } -} error logging: {'context': {'slot': 293286129 - }, 'value': {'signature': '2J59rHhGhf8kAvCqyW2bG69KvDxKbh3jKUTPrYvZhgzSk5vAoqTy5NucAW7JC2tK5vTfCLV5UZB6WbwGBbWaBKQ3', 'err': None, 'logs': ['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 127535 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ - 2 - ]', 'Program log: ray_log: A6XA5awOAAAAAAAAAAAAAAACAAAAAAAAAKXA5awOAAAAXs+S5bOKQADQulmTTwIAAKoshgAAAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 3 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 96679 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 3 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 89053 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30407 of 113869 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ - 2 - ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 81088 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ - 2 - ]', 'Program log: ray_log: A6oshgAAAAAAAAAAAAAAAAABAAAAAAAAABrmohwAAAAAkAJTsDYEjAC3BYLQ/AIAALJPjoAYAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 3 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 54460 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 3 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 46743 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30542 of 71786 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ - 2 - ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 38870 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ - 2 - ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 34592 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 118828 of 147615 compute units', 'Program return: JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 sk+OgBgAAAA=', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success' - ] + }, 'value': {'signature': '2J59rHhGhf8kAvCqyW2bG69KvDxKbh3jKUTPrYvZhgzSk5vAoqTy5NucAW7JC2tK5vTfCLV5UZB6WbwGBbWaBKQ3', 'err': None, 'logs': ['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 127535 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ + 2 + ]', 'Program log: ray_log: A6XA5awOAAAAAAAAAAAAAAACAAAAAAAAAKXA5awOAAAAXs+S5bOKQADQulmTTwIAAKoshgAAAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 96679 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 89053 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30407 of 113869 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ + 2 + ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 81088 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ + 2 + ]', 'Program log: ray_log: A6oshgAAAAAAAAAAAAAAAAABAAAAAAAAABrmohwAAAAAkAJTsDYEjAC3BYLQ/AIAALJPjoAYAAAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 54460 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 46743 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30542 of 71786 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ + 2 + ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 38870 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 2 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 34592 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 118828 of 147615 compute units', 'Program return: JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 sk+OgBgAAAA=', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success' + ] + } + }, + {'context': {'slot': 293354340 + }, 'value': {'signature': '3JB8qbmk9Ybb713jpUzHVdYGy3DskfCpeGhoF8PSSdcUCPuqPW9tnuSFSXTHCjZJdLWdL4WxGYLnsaPKAY2NEEJf', 'err': None, 'logs': ['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 283888 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 277301 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 2 + ]', 'Program log: Instruction: InitializeAccount3', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 273419 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20345 of 289293 compute units', 'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ + 1 + ]', 'Program log: Instruction: SharedAccountsRoute', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 2 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 251725 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c invoke [ + 2 + ]', 'Program log: Instruction: Swap', 'Program log: AMM: { + "p": 9xERPkyJuPBnffKX2SswG6r25sJMSyD4hTDqgm8d5QoV + }', 'Program log: Oracle: { + "a": 221333189.0427, + "b": 1638750694, + "c": 25000000000, + "d": 221266809 + }', 'Program log: Amount: { + "in": 100000000, + "out": 45171716, + "impact": 0.03 + }', 'Program log: TotalFee: { + "fee": 20000, + "percent": 0.02 + }', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 178442 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: MintTo', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4492 of 171397 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 164519 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c consumed 82968 of 239120 compute units', 'Program 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ + 2 + ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 153831 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc invoke [ + 2 + ]', 'Program log: Instruction: Swap', 'Program log: fee_growth: 9627455162', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 116303 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 108598 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc consumed 45050 of 146166 compute units', 'Program whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ + 2 + ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 98801 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 invoke [ + 2 + ]', 'Program log: ray_log: A9KGPyoAAAAAAAAAAAAAAAABAAAAAAAAACbVb0cAAAAAL7y1hK9GXQBgVYsi7QMAAKRp3ADpAwAA', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4736 of 72171 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 3 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 64454 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 consumed 30544 of 89499 compute units', 'Program 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [ + 2 + ]', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 471 of 56581 compute units', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [ + 2 + ]', 'Program log: Instruction: Transfer', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 52303 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 consumed 222659 of 268948 compute units', 'Program return: JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 pGncAOkDAAA=', 'Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 success' + ] + } } -} \ No newline at end of file +] + + + + +// new +DEBUG:websockets.client:< TEXT '{"jsonrpc":"2.0","method":"logsNotification","p...subscription":1135969}}' [5193 bytes] +Received log: {'context': {'slot': 293522789}, 'value': {'signature': '5YLbNKHr4wRVgYtTHqpWD7HshHWgbxfpXaAU8nKWvTjZvwnNZ5kMqDSuQtzwd6eHZoDKaWkq3FcXbTNe3VhHZT2X', 'err': None, 'logs': ['Program ComputeBudget111111111111111111111111111111 invoke [1]', 'Program ComputeBudget111111111111111111111111111111 success', 'Program ComputeBudget111111111111111111111111111111 invoke [1]', 'Program ComputeBudget111111111111111111111111111111 success', 'Program 11111111111111111111111111111111 invoke [1]', 'Program 11111111111111111111111111111111 success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [1]', 'Program log: Instruction: InitializeAccount', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 3443 of 291550 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 11111111111111111111111111111111 invoke [1]', 'Program 11111111111111111111111111111111 success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [1]', 'Program log: Instruction: SyncNative', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 3045 of 287957 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]', 'Program log: CreateIdempotent', 'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 5838 of 284912 compute units', 'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success', 'Program 6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma invoke [1]', 'Program log: Instruction: Swap2', 'Program log: order_id: 13975709597114048', 'Program log: So11111111111111111111111111111111111111112', 'Program log: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'Program log: before_source_balance: 1000000, before_destination_balance: 410923, amount_in: 1000000, expect_amount_out: 136796, min_return: 135429', 'Program log: Dex::MeteoraDlmm amount_in: 1000000, offset: 0', 'Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo invoke [2]', 'Program log: Instruction: Swap', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]', 'Program log: Instruction: TransferChecked', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 6238 of 205783 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]', 'Program log: Instruction: TransferChecked', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 6173 of 196112 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo invoke [3]', 'Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo consumed 2136 of 186508 compute units', 'Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo success', 'Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo consumed 58606 of 241445 compute units', 'Program LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo success', 'Program data: QMbN6CYIceINQEIPAAAAAAC5FgAAAAAAAA==', 'Program log: SwapEvent { dex: MeteoraDlmm, amount_in: 1000000, amount_out: 5817 }', 'Program log: Dsk3jzujuXbtA6TBCPwHVdN5LHWmyCqTNWTfbPZWTvDt', 'Program log: GXhNWTQvtXw7hHPrCwiDKex1rRr7g6zDui7hhGTb5XuJ', 'Program log: Dex::RaydiumClmmSwapV2 amount_in: 5817, offset: 18', 'Program CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK invoke [2]', 'Program log: Instruction: SwapV2', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]', 'Program log: Instruction: TransferChecked', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 6173 of 94632 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]', 'Program log: Instruction: TransferChecked', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 6200 of 84589 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program data: QMbN6CYIceLKQf6Jla6jDAa3lvdi80E57zZ2sbaEVINfz/B6mnAddPTnnWLPabh8F9TFvyB2wHgkKjclvP1voW9r2pZM385W5rxgJ6Ti0iTAE+4ET3R0kukR1DtbTAHIU9ZrSlmyVtFIH3U7ixqCaqbGoeydkTdTUUCkOQYTvNcEdWHVAFRzK7kWAAAAAAAAAAAAAAAAAABcFgIAAAAAAAAAAAAAAAAAAQJ4BOyAPFnZBAAAAAAAAABM7IECAAAAAAAAAAAAAAAAWXsAAA==', 'Program CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK consumed 87691 of 159628 compute units', 'Program CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK success', 'Program data: QMbN6CYIceILuRYAAAAAAABcFgIAAAAAAA==', 'Program log: SwapEvent { dex: RaydiumClmmSwapV2, amount_in: 5817, amount_out: 136796 }', 'Program log: GXhNWTQvtXw7hHPrCwiDKex1rRr7g6zDui7hhGTb5XuJ', 'Program log: 5rYBCPjppwZntGzmqMUgC1NVnSc2JdeWXLbZHssE1UyY', 'Program log: after_source_balance: 0, after_destination_balance: 547719', 'Program log: source_token_change: 1000000, destination_token_change: 136796', 'Program 6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma consumed 216917 of 279074 compute units', 'Program 6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [1]', 'Program log: Instruction: CloseAccount', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 2915 of 62157 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success']}} \ No newline at end of file