小编fre*_*dry的帖子

从 Solana 交易数据中获取程序 ID/地址 (solana/web3.js)

我想确定事务是否与特定程序 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)

node.js solana solana-web3js

6
推荐指数
1
解决办法
2680
查看次数

标签 统计

node.js ×1

solana ×1

solana-web3js ×1