get transactionInfo RPC call works

This commit is contained in:
Dobromir Popov 2024-10-04 18:12:52 +03:00
parent c952edb363
commit 2d92dc6340
3 changed files with 279 additions and 33 deletions

View File

@ -1,6 +1,7 @@
SOLANA_NET_URL="wss://api.mainnet-beta.solana.com" SOLANA_WS_URL="wss://api.mainnet-beta.solana.com"
SOLANA_NET_2="wss://mainnet.rpcpool.com" SOLANA_WS_URL2="wss://mainnet.rpcpool.com"
SOLANA_HTTP_URL="https://api.mainnet-beta.solana.com"
DEVELOPER_CHAT_ID="777826553" DEVELOPER_CHAT_ID="777826553"
# Niki's # Niki's
# FOLLOWED_WALLET="9U7D916zuQ8qcL9kQZqkcroWhHGho5vD8VNekvztrutN" # FOLLOWED_WALLET="9U7D916zuQ8qcL9kQZqkcroWhHGho5vD8VNekvztrutN"

View File

@ -5,7 +5,7 @@ from flask import Flask, render_template, request, jsonify
from solana.rpc.async_api import AsyncClient from solana.rpc.async_api import AsyncClient
from solana.transaction import Signature from solana.transaction import Signature
from solana.rpc.websocket_api import connect from solana.rpc.websocket_api import connect
from solana.rpc.types import TokenAccountOpts from solana.rpc.types import TokenAccountOpts, TxOpts
from solana.rpc.commitment import Confirmed from solana.rpc.commitment import Confirmed
from solders.pubkey import Pubkey from solders.pubkey import Pubkey
from dexscreener import DexscreenerClient from dexscreener import DexscreenerClient
@ -56,19 +56,22 @@ def retry_last_log():
# Use the production Solana RPC endpoint
solana_client = AsyncClient("https://api.mainnet-beta.solana.com")
dexscreener_client = DexscreenerClient()
# Configuration # Configuration
DEVELOPER_CHAT_ID = os.getenv("DEVELOPER_CHAT_ID") DEVELOPER_CHAT_ID = os.getenv("DEVELOPER_CHAT_ID")
FOLLOWED_WALLET = os.getenv("FOLLOWED_WALLET") FOLLOWED_WALLET = os.getenv("FOLLOWED_WALLET")
YOUR_WALLET = os.getenv("YOUR_WALLET") YOUR_WALLET = os.getenv("YOUR_WALLET")
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN") TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
SOLANA_URL = os.getenv("SOLANA_NET_URL") SOLANA_WS_URL = os.getenv("SOLANA_WS_URL")
SOLANA_HTTP_URL = os.getenv("SOLANA_HTTP_URL")
DISPLAY_CURRENCY = os.getenv('DISPLAY_CURRENCY', 'USD') DISPLAY_CURRENCY = os.getenv('DISPLAY_CURRENCY', 'USD')
# Use the production Solana RPC endpoint
solana_client = AsyncClient(SOLANA_HTTP_URL)
dexscreener_client = DexscreenerClient()
# Initialize Telegram Bot # Initialize Telegram Bot
bot = Bot(token=TELEGRAM_BOT_TOKEN) bot = Bot(token=TELEGRAM_BOT_TOKEN)
@ -474,10 +477,48 @@ def perform_swap(input_token, output_token, amount):
"error": str(e) "error": str(e)
} }
from base58 import b58decode
from solders.pubkey import Pubkey from solders.pubkey import Pubkey
from solders.transaction import Transaction from solders.transaction import Transaction
from solders.signature import Signature from solders.signature import Signature
async def get_transaction_details_rpc(tx_signature):
url = SOLANA_HTTP_URL
# url = 'https://solana.drpc.org'
headers = {"Content-Type": "application/json"}
data = {
"jsonrpc": "2.0",
"id": 1,
"method": "getTransaction",
"params": [
tx_signature,
{
"encoding": "jsonParsed",
"maxSupportedTransactionVersion": 0
}
]
}
# request = {
# "jsonrpc": "2.0",
# "id": 1,
# "method": "getConfirmedTransaction",
# "params": [
# tx_signature,
# "json"
# ]
# }
try:
response = requests.post(url, headers=headers, data=json.dumps(data))
response.raise_for_status() # Raises an error for bad responses
transaction_details = response.json()
if 'result' in transaction_details:
print(transaction_details['result'])
return transaction_details['result']
else:
print("Unexpected response:", transaction_details)
except requests.exceptions.RequestException as e:
print("Error fetching transaction details:", e)
async def save_log(log): async def save_log(log):
@ -491,6 +532,7 @@ async def save_log(log):
except Exception as e: except Exception as e:
logging.error(f"Error saving RPC log: {e}") logging.error(f"Error saving RPC log: {e}")
async def process_log(log_result): async def process_log(log_result):
if log_result['value']['err']: if log_result['value']['err']:
return return
@ -499,32 +541,42 @@ async def process_log(log_result):
logs = log_result['value']['logs'] logs = log_result['value']['logs']
try: try:
try:
transaction = await get_transaction_details_rpc(tx_signature_str)
except Exception as e:
logging.error(f"Error fetching transaction details: {e}")
return
# Convert the base58 signature string to bytes # Convert the base58 signature string to bytes
tx_signature = Signature(b58decode(tx_signature_str)) tx_signature = Signature(b58decode(tx_signature_str))
# Fetch transaction details # Fetch transaction details
tx_result = await solana_client.get_transaction(tx_signature) tx_result = await solana_client.get_transaction(tx_signature, max_supported_transaction_version=0)
if tx_result and tx_result.value: #tx_result = await get_transaction_details(tx_signature_str)
transaction = Transaction.from_json(tx_result.value) if tx_result.value is None:
message = transaction.message logging.error(f"Transaction not found: {tx_signature_str}")
return
transaction = tx_result.value.transaction
for log_entry in logs: for log_entry in logs:
if 'Program log: Instruction: Swap' in log_entry: if 'Program log: Instruction: Swap' in log_entry:
for instruction in message.instructions: for instruction in message.instructions:
if instruction.program_id == TOKEN_ADDRESSES['SOL']: if instruction.program_id == TOKEN_ADDRESSES['SOL']:
from_pubkey = instruction.accounts[0] from_pubkey = instruction.accounts[0]
to_pubkey = instruction.accounts[1] to_pubkey = instruction.accounts[1]
amount = int(instruction.data, 16) / 1e9 amount = int(instruction.data, 16) / 1e9
if from_pubkey == FOLLOWED_WALLET: if from_pubkey == FOLLOWED_WALLET:
move = { move = {
'token': 'SOL', 'token': 'SOL',
'amount': amount, 'amount': amount,
'to_token': 'Unknown' 'to_token': 'Unknown'
} }
message_text = f"Swap detected:\nFrom: {from_pubkey}\nTo: {to_pubkey}\nAmount: {amount} SOL" message_text = f"Swap detected:\nFrom: {from_pubkey}\nTo: {to_pubkey}\nAmount: {amount} SOL"
await send_telegram_message(message_text) await send_telegram_message(message_text)
await follow_move(move) await follow_move(move)
except Exception as e: except Exception as e:
logging.error(f"Error processing log: {e}") logging.error(f"Error processing log: {e}")
@ -541,7 +593,7 @@ async def subscribe_to_wallet():
"wss://rpc.ankr.com/solana", "wss://rpc.ankr.com/solana",
"wss://mainnet.rpcpool.com", "wss://mainnet.rpcpool.com",
] ]
uri = SOLANA_URL # wss://api.mainnet-beta.solana.com uri = SOLANA_WS_URL # wss://api.mainnet-beta.solana.com
reconnect_delay = 5 # Start with a 5-second delay reconnect_delay = 5 # Start with a 5-second delay
max_reconnect_delay = 60 # Maximum delay of 60 seconds max_reconnect_delay = 60 # Maximum delay of 60 seconds
@ -606,14 +658,17 @@ async def subscribe_to_wallet():
# Implement exponential backoff # Implement exponential backoff
reconnect_delay = min(reconnect_delay * 2, max_reconnect_delay) reconnect_delay = min(reconnect_delay * 2, max_reconnect_delay)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
async def main(): async def main():
# Initialize logging # Initialize logging
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
# logging.basicConfig(level=logging.INFO) # logging.basicConfig(level=logging.INFO)
await send_telegram_message("Solana Agent Started. Connecting to mainnet...") await send_telegram_message("Solana Agent Started. Connecting to mainnet...")
await subscribe_to_wallet() #await subscribe_to_wallet()
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -0,0 +1,190 @@
{'blockTime': 1728035375, 'meta': {'computeUnitsConsumed': 128099, 'err': None, 'fee': 97127, 'innerInstructions': [
{'index': 4, 'instructions': [
{'accounts': ['7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'A1BBtTYJd4i3xU8D6Tc2FzU6ZN4oXZWXKZnCxwbHXr8x', '7LVHkVPVosXoWgH1PykWa5PjsfnyBviCdxC8ZUHJDy5U', '8Ggb8th8pZv7eJbRmwkoyrDbSvwLPvMQN7QuHwjm113z', 'icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'BAxX7eMuSoxF8E4s1Xz5ukcLPHjvfC8Wv9JjSZci7tZ7', 'Gvjgjv63zcQxLbcG2iYF3vcJ2nudRLEffN6hoo8p6Ewy', 'HtsJ5S6K4NM2vXaWZ8k49JAggBgPGrryJ21ezdPBoUC6', 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr', 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'So11111111111111111111111111111111111111112', 'DeRo9XMsizey3KWBWS3LHomFC7ZDny1NkFMZUEHgyX8a', 'E6ef1fYRvZ8ejtbdwaK1CDNAgpJxkWZ2pQsL4jaShjNU', '423toqoYT7obTRx8qmwVAeYZfMFRxkwwDzRAwJBd86K3'
], 'data': 'ASCsAbe1UnDmvdhmjnwFdPMzcfkrayiNaFZ61j7FiXYFR5MbydQDnzNL', 'programId': 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK', 'stackHeight': 2
},
{'parsed': {'info': {'authority': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'destination': 'BAxX7eMuSoxF8E4s1Xz5ukcLPHjvfC8Wv9JjSZci7tZ7', 'mint': 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'source': '8Ggb8th8pZv7eJbRmwkoyrDbSvwLPvMQN7QuHwjm113z', 'tokenAmount': {'amount': '200000000000', 'decimals': 8, 'uiAmount': 2000.0, 'uiAmountString': '2000'
}
}, 'type': 'transferChecked'
}, 'program': 'spl-token', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'stackHeight': 3
},
{'parsed': {'info': {'authority': '7LVHkVPVosXoWgH1PykWa5PjsfnyBviCdxC8ZUHJDy5U', 'destination': 'icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'mint': 'So11111111111111111111111111111111111111112', 'source': 'Gvjgjv63zcQxLbcG2iYF3vcJ2nudRLEffN6hoo8p6Ewy', 'tokenAmount': {'amount': '32677742', 'decimals': 9, 'uiAmount': 0.032677742, 'uiAmountString': '0.032677742'
}
}, 'type': 'transferChecked'
}, 'program': 'spl-token', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'stackHeight': 3
}
]
}
], 'logMessages': ['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 216550 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program 6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma invoke [
1
]', 'Program log: Instruction: Swap2', 'Program log: order_id: 13978787684884160', 'Program log: Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'Program log: So11111111111111111111111111111111111111112', 'Program log: before_source_balance: 4000000000000, before_destination_balance: 0, amount_in: 200000000000, expect_amount_out: 32677742, min_return: 32350965', 'Program log: Dex: :RaydiumClmmSwapV2 amount_in: 200000000000, offset: 0', 'Program CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK invoke [
2
]', 'Program log: Instruction: SwapV2', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
3
]', 'Program log: Instruction: TransferChecked', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 6147 of 124210 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
3
]', 'Program log: Instruction: TransferChecked', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 6238 of 114194 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success', 'Program data: QMbN6CYIceJeJCSmnTHyq+UhngUSm2ZraA736ls33e54BtTmtKTck18ss0Ijtep7x/QSQpelS9R/BLJJV8nYbkzHEgl6DWzmCqjvYwJou4+wNqo6UT4zu+LS3la0rmchxYO/qAt1QCxsBkiWENlC+V3iQ+9YxPA6ubSXncmJFhG2+Ianct8/LW6f8gEAAAAAAAAAAAAAAAAA0O2QLgAAAAAAAAAAAAAAAKdp93ci1pDdTQAAAAAAAAC1GvfaoAMAAAAAAAAAAAAAQFQBAA==', 'Program CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK consumed 77136 of 178600 compute units', 'Program CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK success', 'Program data: QMbN6CYIceILANDtkC4AAABun/IBAAAAAA==', 'Program log: SwapEvent { dex: RaydiumClmmSwapV2, amount_in: 200000000000, amount_out: 32677742
}', 'Program log: 8Ggb8th8pZv7eJbRmwkoyrDbSvwLPvMQN7QuHwjm113z', 'Program log: icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'Program log: after_source_balance: 3800000000000, after_destination_balance: 32677742', 'Program log: source_token_change: 200000000000, destination_token_change: 32677742', 'Program 6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma consumed 121291 of 213107 compute units', 'Program 6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma success', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [
1
]', 'Program log: Instruction: CloseAccount', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 2915 of 91816 compute units', 'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success'
], 'postBalances': [
93712473,
0,
2039280,
72161280,
72161280,
1,
255325042163,
934087680,
1,
1141440,
1705200,
32092560,
13641600,
11637120,
9935565889,
2039280,
1009200,
1141440,
521498880,
617888496398,
1141440
], 'postTokenBalances': [
{'accountIndex': 2, 'mint': 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'owner': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'uiTokenAmount': {'amount': '3800000000000', 'decimals': 8, 'uiAmount': 38000.0, 'uiAmountString': '38000'
}
},
{'accountIndex': 14, 'mint': 'So11111111111111111111111111111111111111112', 'owner': '7LVHkVPVosXoWgH1PykWa5PjsfnyBviCdxC8ZUHJDy5U', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'uiTokenAmount': {'amount': '9933526609', 'decimals': 9, 'uiAmount': 9.933526609, 'uiAmountString': '9.933526609'
}
},
{'accountIndex': 15, 'mint': 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'owner': '7LVHkVPVosXoWgH1PykWa5PjsfnyBviCdxC8ZUHJDy5U', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'uiTokenAmount': {'amount': '2460142552127709', 'decimals': 8, 'uiAmount': 24601425.52127709, 'uiAmountString': '24601425.52127709'
}
}
], 'preBalances': [
61131858,
0,
2039280,
72161280,
72161280,
1,
255325042163,
934087680,
1,
1141440,
1705200,
32092560,
13641600,
11637120,
9968243631,
2039280,
1009200,
1141440,
521498880,
617888496398,
1141440
], 'preTokenBalances': [
{'accountIndex': 2, 'mint': 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'owner': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'uiTokenAmount': {'amount': '4000000000000', 'decimals': 8, 'uiAmount': 40000.0, 'uiAmountString': '40000'
}
},
{'accountIndex': 14, 'mint': 'So11111111111111111111111111111111111111112', 'owner': '7LVHkVPVosXoWgH1PykWa5PjsfnyBviCdxC8ZUHJDy5U', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'uiTokenAmount': {'amount': '9966204351', 'decimals': 9, 'uiAmount': 9.966204351, 'uiAmountString': '9.966204351'
}
},
{'accountIndex': 15, 'mint': 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'owner': '7LVHkVPVosXoWgH1PykWa5PjsfnyBviCdxC8ZUHJDy5U', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'uiTokenAmount': {'amount': '2459942552127709', 'decimals': 8, 'uiAmount': 24599425.52127709, 'uiAmountString': '24599425.52127709'
}
}
], 'rewards': [], 'status': {'Ok': None
}
}, 'slot': 293628136, 'transaction': {'message': {'accountKeys': [
{'pubkey': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'signer': True, 'source': 'transaction', 'writable': True
},
{'pubkey': 'icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'signer': False, 'source': 'transaction', 'writable': True
},
{'pubkey': '8Ggb8th8pZv7eJbRmwkoyrDbSvwLPvMQN7QuHwjm113z', 'signer': False, 'source': 'transaction', 'writable': True
},
{'pubkey': 'DeRo9XMsizey3KWBWS3LHomFC7ZDny1NkFMZUEHgyX8a', 'signer': False, 'source': 'transaction', 'writable': True
},
{'pubkey': '423toqoYT7obTRx8qmwVAeYZfMFRxkwwDzRAwJBd86K3', 'signer': False, 'source': 'transaction', 'writable': True
},
{'pubkey': '11111111111111111111111111111111', 'signer': False, 'source': 'transaction', 'writable': False
},
{'pubkey': 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'signer': False, 'source': 'transaction', 'writable': False
},
{'pubkey': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'signer': False, 'source': 'transaction', 'writable': False
},
{'pubkey': 'ComputeBudget111111111111111111111111111111', 'signer': False, 'source': 'transaction', 'writable': False
},
{'pubkey': '6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma', 'signer': False, 'source': 'transaction', 'writable': False
},
{'pubkey': 'A1BBtTYJd4i3xU8D6Tc2FzU6ZN4oXZWXKZnCxwbHXr8x', 'signer': False, 'source': 'lookupTable', 'writable': True
},
{'pubkey': 'HtsJ5S6K4NM2vXaWZ8k49JAggBgPGrryJ21ezdPBoUC6', 'signer': False, 'source': 'lookupTable', 'writable': True
},
{'pubkey': 'E6ef1fYRvZ8ejtbdwaK1CDNAgpJxkWZ2pQsL4jaShjNU', 'signer': False, 'source': 'lookupTable', 'writable': True
},
{'pubkey': '7LVHkVPVosXoWgH1PykWa5PjsfnyBviCdxC8ZUHJDy5U', 'signer': False, 'source': 'lookupTable', 'writable': True
},
{'pubkey': 'Gvjgjv63zcQxLbcG2iYF3vcJ2nudRLEffN6hoo8p6Ewy', 'signer': False, 'source': 'lookupTable', 'writable': True
},
{'pubkey': 'BAxX7eMuSoxF8E4s1Xz5ukcLPHjvfC8Wv9JjSZci7tZ7', 'signer': False, 'source': 'lookupTable', 'writable': True
},
{'pubkey': 'SysvarRent111111111111111111111111111111111', 'signer': False, 'source': 'lookupTable', 'writable': False
},
{'pubkey': 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', 'signer': False, 'source': 'lookupTable', 'writable': False
},
{'pubkey': 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr', 'signer': False, 'source': 'lookupTable', 'writable': False
},
{'pubkey': 'So11111111111111111111111111111111111111112', 'signer': False, 'source': 'lookupTable', 'writable': False
},
{'pubkey': 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK', 'signer': False, 'source': 'lookupTable', 'writable': False
}
], 'addressTableLookups': [
{'accountKey': '6ggEfUA8Y2BPkrg6yP2yjjEZRhnF6TyBG8q5tHQvdb2C', 'readonlyIndexes': [
1,
4,
5,
41,
13
], 'writableIndexes': [
27
]
},
{'accountKey': '9kvMXWLiSBfbGxxrripJP4qZzHatdSbadYCAbwTexN28', 'readonlyIndexes': [], 'writableIndexes': [
17,
18,
12,
13,
15
]
}
], 'instructions': [
{'accounts': [], 'data': 'JPb7uH', 'programId': 'ComputeBudget111111111111111111111111111111', 'stackHeight': None
},
{'accounts': [], 'data': '3VbWNdv4R831', 'programId': 'ComputeBudget111111111111111111111111111111', 'stackHeight': None
},
{'parsed': {'info': {'base': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'lamports': 2039280, 'newAccount': 'icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'owner': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'seed': '1728035372645', 'source': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'space': 165
}, 'type': 'createAccountWithSeed'
}, 'program': 'system', 'programId': '11111111111111111111111111111111', 'stackHeight': None
},
{'parsed': {'info': {'account': 'icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'mint': 'So11111111111111111111111111111111111111112', 'owner': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'rentSysvar': 'SysvarRent111111111111111111111111111111111'
}, 'type': 'initializeAccount'
}, 'program': 'spl-token', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'stackHeight': None
},
{'accounts': ['7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', '8Ggb8th8pZv7eJbRmwkoyrDbSvwLPvMQN7QuHwjm113z', 'icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'So11111111111111111111111111111111111111112', 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK', '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', '8Ggb8th8pZv7eJbRmwkoyrDbSvwLPvMQN7QuHwjm113z', 'icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'A1BBtTYJd4i3xU8D6Tc2FzU6ZN4oXZWXKZnCxwbHXr8x', '7LVHkVPVosXoWgH1PykWa5PjsfnyBviCdxC8ZUHJDy5U', 'BAxX7eMuSoxF8E4s1Xz5ukcLPHjvfC8Wv9JjSZci7tZ7', 'Gvjgjv63zcQxLbcG2iYF3vcJ2nudRLEffN6hoo8p6Ewy', 'HtsJ5S6K4NM2vXaWZ8k49JAggBgPGrryJ21ezdPBoUC6', 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb', 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr', 'Faf89929Ni9fbg4gmVZTca7eW6NFg877Jqn6MizT3Gvw', 'So11111111111111111111111111111111111111112', 'DeRo9XMsizey3KWBWS3LHomFC7ZDny1NkFMZUEHgyX8a', 'E6ef1fYRvZ8ejtbdwaK1CDNAgpJxkWZ2pQsL4jaShjNU', '423toqoYT7obTRx8qmwVAeYZfMFRxkwwDzRAwJBd86K3', '11111111111111111111111111111111'
], 'data': '3sRDYcTeC9Apf4dwtR12F5tp2Pc4P5tDNYNtKqVRGjUmVJ4pEyVYZdwph4vkfkgyChXffRuiYRUXchviqNRXfd5ok6ub9PQK', 'programId': '6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma', 'stackHeight': None
},
{'parsed': {'info': {'account': 'icV5K6iC8J7yyeP9YnJLH2jPRJYT7dBmzm844STxHkP', 'destination': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV', 'owner': '7QXGLRjvyFAmxdRaP9Wk18KwWTMfspF4Na2sr3o3PzxV'
}, 'type': 'closeAccount'
}, 'program': 'spl-token', 'programId': 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 'stackHeight': None
}
], 'recentBlockhash': 'C2H99uuxKQRWeTngCRZoNHbQ2nDBAA2Uhk2USp7tDX9Z'
}, 'signatures': ['3PZLedLDQTb7ddor3XmwbQQycBCgFfMDXHWBRd9rK7gekWTHWetnEGEGpZb6XFep7EbMZFrJweM3q1tkGygZDthB'
]
}, 'version': 0
}