以这个事务为例:https://solscan.io/tx/4oQceeLgtDyHcrhStHsSKXGbC3QAF7CHrtUpeJTuthxuX1uTz3M3NYLsv3RiJ5caJ3yfneAYQ5VqAdQ3ebc8wH1A
Solscan能够对指令(例如#11〃(进行解码;侧面";。在EVM链中,这并不困难,因为每个合同都有一个ABI,可以帮助解码数据、事件等。
但我一直没能想出如何在索拉纳身上做到这一点。我们如何才能采取";指令数据";,例如000a000000010000005483000000000000fa4700000000000020b3666c0e000000020000000200000005aed06b1a84fb8fffff
并将其解码为详细说明,就像Solscan.io这样的服务能够做到的那样?
不幸的是,部分答案是"你必须知道";用于不发布IDL的程序。
例如,solana-py为系统程序和spl令牌程序提供指令解码器。以下是其中一条系统程序指令的解码器:https://github.com/michaelhly/solana-py/blob/f41f020938d1fb257142f18608bcb884adb54479/src/solana/system_program.py#L196
对于具有IDL的程序,您可以查看AnchorPy!它应该能够为任何具有IDL的Anchor程序生成可用的客户端:https://kevinheavey.github.io/anchorpy/