就像如图上,我发起一笔交易,metamask只能获取到一段data,是如何在短时间内解析出是一笔erc20的transfer请求呢? 难道是用data和erc20的函数签名去比对?
看 tx.data就行。 直接找前四个4符即前8个字节 是什么(叫 function selector)。可以从这里找到解码,都是硬编码的hash碰撞。 https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb
通过function的签名。
只是简单的 transfer 转账的话, tx.data 是没有数据的。可以判断这个
ABI编码检查:ERC20标准定义了一系列的函数和事件,包括transfer函数。 合约地址检查:检查要交互的合约地址是否在它的数据库中被标记为ERC20代币合约