EVM 执行
兼容执行模型不等于同一条链
EVM 是一套智能合约执行环境。多个区块链网络可以采用兼容的账户、合约和执行模型,因此用户会看到相似的地址格式、Token 标准和 DApp 交互方式,但这些网络仍然是彼此独立的链。
每个网络都有自己的链 ID、区块状态、Gas 资产和合约部署。某个地址在两个 EVM 网络上外观相同,并不意味着资产自动跨链,也不意味着同名合约在两条链上具有相同地址或状态。
使用 imtoken 进行 EVM 网络操作时,应把“当前网络”作为首要上下文,再理解地址、Gas、Token 与合约请求。只核对地址而不核对网络,是多链环境中常见的误区。 在“EVM 网络”中,可把这一原则与“EVM 执行”的核对步骤一起执行。
- 确认链 ID 对应的网络
- 核对当前网络的 Gas 资产
- 同名 Token 还要核对合约地址
地址与网络
相同地址格式下仍要明确网络
EVM 账户地址通常由公钥相关信息派生,不少兼容网络会复用相同的地址表示方式。这种兼容性方便用户管理账户,却也容易让人误以为地址相同就代表资产处在同一网络。
接收资产时,应同时向发送方确认地址和网络;发送到交易平台或第三方服务时,还要确认对方明确支持对应网络。目标只展示一个地址而没有网络信息时,不应凭经验猜测。
在 DApp 场景中,网页可能请求切换网络。切换前需要确认该网络是否是当前任务所需,并重新检查后续签名和授权,因为网络变化会改变实际交互的合约与 Gas 资产。 在“EVM 网络”中,可把这一原则与“地址与网络”的核对步骤一起执行。
Gas 资产
网络费用与合约执行成本
EVM 交易需要 Gas 来衡量执行资源。不同网络使用不同的原生资产支付费用,费用计算还可能受到基础费、优先费、网络拥堵和合约复杂度影响。
钱包给出的费用是基于当前网络状态和交易参数的估算。提交前应确认账户有足够的对应 Gas 资产,同时判断交易对象和金额是否正确;不能因为费用较低就忽略合约和授权风险。
交易失败时仍可能消耗部分 Gas,因为网络已经执行了相应计算。发生失败应先查看交易回执、错误信息和调用对象,再决定是否重试。 在“EVM 网络”中,可把这一原则与“Gas 资产”的核对步骤一起执行。
- 确认支付 Gas 的原生资产
- 提交前阅读费用估算与交易对象
- 失败后先查交易回执
Token 合约
资产名称之外还要核对合约地址
EVM 网络中的 Token 通常由智能合约记录余额和转移规则。名称、符号和图标都可以被重复使用,因此合约地址才是区分同一网络上不同 Token 的关键公开信息之一。
添加或核对资产时,应先确认网络,再从可信来源取得 Token 合约地址。跨网络时,即使项目名称相同,部署地址也可能不同,不能把某条链上的合约地址直接套用到另一条链。
与 Token 合约交互还可能涉及 transfer、approve 等方法。钱包显示请求时,应区分普通转账与授权,因为授权可能让另一个合约在后续操作中使用一定范围的代币。 在“EVM 网络”中,可把这一原则与“Token 合约”的核对步骤一起执行。
Approval 权限
检查 spender、额度与持续时间
Approval 用于授予某个 spender 合约使用指定 Token 的权限。它本身可能不是资产立即转出的动作,但会改变之后可由该合约调用的权限边界,因此需要单独检查。
确认授权时,应查看网络、Token 合约、spender 地址和额度,并判断是否与当前 DApp 操作相匹配。对来源不明或额度明显超过任务需要的请求,应拒绝并重新核对入口。
授权完成后可以定期查看仍然有效的权限,并考虑取消已经不再使用的授权。取消授权本身也是链上交易,仍需要在正确网络执行并支付相应 Gas。 在“EVM 网络”中,可把这一原则与“Approval 权限”的核对步骤一起执行。
- 核对被授权合约地址
- 判断授权额度是否符合本次任务
- 定期检查不再需要的权限
