你在哪里判断?链上合约还是链下。
链上合约不存在这个问题, 使用 msg.value 拿到是链的原生币(如:ETH), 其他的erc20 则需要你知道合约地址才能使用 transferFrom。
交易信息里面的 value 肯定是 ETH,ERC20转账首先要判断 to地址是否是代币合约的地址,然后解析 input 获取接收地址和转账金额。
value
to
input