我想确定事务是否与特定程序 ID“cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ”(即糖果机程序地址)进行交互。
我使用@solana/web3.js 使用connection.getTransaction(txn.signature) 获取下面(帖子底部)Candy Machine mint 交易数据。
如何判断交易是否与糖果机程序交互?
我尝试深入研究 transaction.meta.innerInstructions,但我不知道如何将其转换为程序 id 地址。
[
{
'accounts': '2',
'data': '3Bxs4h24hBtQy9rw',
'programIdIndex': '8'
},{
'accounts': '2',
'data': '9krTDU2LzCSUJuVZ',
'programIdIndex': '8'
},{
'accounts': '2',
'data': 'SYXsBSQy3GeifSEQSGvTbrPNposbSAiSoh1YA85wcvGKSnYg',
'programIdIndex': '8'
},
...etc.
]
Run Code Online (Sandbox Code Playgroud)
注意:我意识到我可以只在“logMessages”字符串中搜索程序地址,但这有点作弊,我正在尝试了解这一切是如何工作的。
与 Candy Machine 程序交互的铸币交易数据示例:
{
blockTime: 1640299576,
meta: {
err: null,
fee: 10000,
innerInstructions: [ [Object], [Object] ],
logMessages: [
'Program 11111111111111111111111111111111 invoke [1]',
'Program 11111111111111111111111111111111 success',
'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [1]',
'Program log: Instruction: InitializeMint',
'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 2390 of 200000 …Run Code Online (Sandbox Code Playgroud)