You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何分析Solana网络交易发现新代币及识别新代币创建?

Solana新代币发现与创建识别指南

一、如何通过分析Solana交易发现新代币?

  • 追踪**Token Program(TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA)**的交易:新代币创建必然调用该程序的InitializeMint指令
  • 过滤交易中的新创建账户:代币的mint账户是创建交易中新生成的账户,特征是交易前余额为0,由本次交易创建并分配初始lamports
  • 关联代币元数据:多数新代币会同步创建Metadata账户(调用Metaplex的Token Metadata Program),通过关联该账户可更精准识别有完整信息的新代币

二、如何识别Solana上新代币的创建?标准log_messages与问题解决

关于标准log_messages

Solana创建代币的核心指令是Token Program的InitializeMint,对应的程序日志确实包含Program log: InitializeMint,但这条日志不区分新老代币——技术上允许重新初始化已存在的mint账户(虽不符合规范),这就是你抓取到旧代币的原因。

解决办法(基于solana-python库)

  1. 过滤新创建的mint账户
    解析交易时,找到InitializeMint指令对应的mint账户,判断它是否为本次交易创建的新账户:

    from solana.rpc.api import Client
    
    client = Client("https://api.mainnet-beta.solana.com")
    
    def is_new_mint_account(tx_response, mint_pubkey):
        # 遍历交易账户列表,匹配mint公钥
        for idx, account in enumerate(tx_response["result"]["transaction"]["message"]["accountKeys"]):
            if account["pubkey"] == mint_pubkey:
                # 新账户交易前余额为0
                pre_balance = tx_response["result"]["meta"]["preBalances"][idx]
                return pre_balance == 0
        return False
    

    核心逻辑:新创建的mint账户在交易前无任何余额,交易后才会被分配用于存储数据的lamports。

  2. 结合指令数据验证
    解码InitializeMint指令参数,确认是初始化操作,配合新账户判断精准筛选:

    from spl.token.instructions import decode_initialize_mint_instruction
    
    def validate_init_mint_instruction(instruction):
        try:
            # 解码指令,确认是InitializeMint操作
            decode_initialize_mint_instruction(instruction)
            return True
        except:
            return False
    
  3. 限定区块高度范围
    若仅关注近期新代币,可限定拉取最新区块区间内的交易,避免抓取历史上的旧代币初始化日志。


内容的提问来源于stack exchange,提问作者Gabriel novais

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:33:12