如何获取NEAR协议上代币交易的详细信息(如发送金额)
要统一获取NEAR上代币的交易金额等核心详情,核心逻辑是基于NEP-141标准代币合约的规范解析——这也是区块浏览器的通用实现方式,具体操作如下:
解析交易
actions数组提取核心参数
NEAR上合规的代币都实现了NEP-141标准,转账交易必然会调用代币合约的ft_transfer或ft_transfer_call方法。通过JSON RPC的tx接口获取交易详情后,在transaction.actions数组中找到对应FunctionCall类型的动作,其中的args字段是Base64编码的参数,解码后就能直接拿到amount(代币最小单位数值)。示例解析:
假设交易详情中某动作的FunctionCall结构如下:{ "FunctionCall": { "method_name": "ft_transfer", "args": "eyJ0byI6ImtlbHZpbi5uZWFyIiwiYW1vdW50IjoiMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIn0=", "gas": "30000000000000", "deposit": "0" } }解码
args后得到:{"to":"kelvin.near","amount":"100000000000000000000000"}这里的
amount就是代币的最小单位数量。结合代币元数据转换为可读金额
拿到最小单位的amount后,调用代币合约的ft_metadata方法获取decimals字段(比如SWEAT的decimals为18),将amount除以10^decimals,就能得到用户可读的代币金额。补充验证:解析交易执行结果日志
虽然日志格式没有强制统一,但合规NEP-141代币通常会输出标准化日志(比如Transfer {from: "xxx", to: "xxx", amount: "xxx"}),可以作为参数解析的补充验证,但核心依赖还是actions中的参数——因为日志可能被合约自定义修改。处理多动作交易
如果一笔交易包含多个动作(比如同时转账NEAR和代币),只需遍历actions数组,筛选出调用非原生near合约地址的FunctionCall动作,按上述方式解析即可。
内容的提问来源于stack exchange,提问作者KelvinIOT

