Skip to content

EVM合约交易中ERC20 Transfer的 log.address 返回错误的地址 #1344

@andyYuanFZM

Description

@andyYuanFZM

示例交易:
https://mainnet.bityuan.com/tx/0xca9bd0f00faa5417402022506d34d983fe1e79c76b70d85551986702aecf3d77

其中:receiver:0xf7f7b487c0e0afdbe5681c1d2f4cec7c6e0daa8f --> 该地址为 Swap Router 合约地址。

问题描述
该交易是一笔 Swap 交易,交易内部包含多笔 ERC20 Token 转账,例如:

From 0x089c475b50...1c5a To 0x5b8bd8cee7...8b5d For 5.2e+21 UNKNOWN
From 0x5b8bd8cee7...8b5d To 0x86ca93605e...e820 For 4731843023367716000 UNKNOWN
From 0x86ca93605e...e820 To 0x089c475b50...1c5a For 4731843023367716000 UNKNOWN
From 0x089c475b50...1c5a To 0x5b8bd8cee7...8b5d For 400000000000000000000 UNKNOWN
From 0x5b8bd8cee7...8b5d To 0x86ca93605e...e820 For 363323148170107500 UNKNOWN
From 0x86ca93605e...e820 To 0x089c475b50...1c5a For 363323148170107500 UNKNOWN
From 0x089c475b50...1c5a To 0x5b8bd8cee7...8b5d For 399252091865857800000 UNKNOWN
From 0x089c475b50...1c5a To 0x5b8bd8cee7...8b5d For 363323148170107500 UNKNOWN
From 0x0000000000...0000 To 0xd2c1e89a89...f51b For 12576928784586473000 UNKNOWN
From 0x5b8bd8cee7...8b5d To 0x0000000000...dead For 6e+21 UNKNOWN
From 0x5b8bd8cee7...8b5d To 0x089c475b50...1c5a For 4e+21 UNKNOWN
From 0xc9c4f3213a...1259 To 0x089c475b50...1c5a For 6e+21 UNKNOWN
From 0xc9c4f3213a...1259 To 0x5b8bd8cee7...8b5d For 1.4e+22 UNKNOWN
From 0x5b8bd8cee7...8b5d To 0xf7f7b487c0...aa8f For 12698201356755235000 UNKNOWN

区块链浏览器在解析这些转账时,Token 类型全部显示为:UNKNOWN
原因是无法识别出对应的 ERC20 Token 合约地址, 浏览器服务通过 RPC 获取交易 logs 时,发现所有 log 的 address 字段都被设置为:0xf7f7b487c0e0afdbe5681c1d2f4cec7c6e0daa8f, 即 Router 合约地址。
而不是实际触发 Transfer 事件的 ERC20 Token 合约地址。

浏览器是通过:log.address 来识别 Token 合约地址,并进一步读取:symbol,name,decimals
因此当 log.address 错误时,就无法识别 Token,只能显示为 UNKNOWN。

期望的ERC20 转账事件:
Transfer(address indexed from, address indexed to, uint256 value)
生成的 log 应该为:log.address = 触发该事件的 ERC20 Token 合约地址

例如:
TokenA 合约 → Transfer
TokenB 合约 → Transfer
LP Token 合约 → Transfer
每个事件的 log.address 都应该是对应的 Token 合约地址。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions