
把三个数字分开记录
理解 ERC-20 授权,先区分持有余额、允许指定地址代为使用的额度,以及已经转出的数量。余额描述当前持有情况;授权额度描述特定使用者可以动用多少;实际转移则需要查看相应执行结果。三者可能同时出现在一个页面。
假设教学账本中甲有十枚代币,允许乙代为使用三枚。这个设定描述的是权限关系,不能直接写成甲已经向乙转了三枚。用不同颜色分别标余额和额度,初学者就能直观看到,增加一条允许关系不等于完成对应数量的移动。
授权需要明确对象和范围
标准中的授权接口以使用者地址和额度为参数,额度查询也需要给出持有人与使用者两个地址。授权不是一个没有对象的总开关。查询时遗漏任意一方,或者查错代币合约,都可能得到与所讨论操作无关的结果。
做资料整理时,可以用一句完整的话复述:在哪个网络的哪个合约中,哪个持有人允许哪个使用者使用多少。金额单位也要注明。这种复述能揭示截图省略的信息,比仅抄下已授权三个字更接近原始接口的含义。
用状态与事件核对动作
ERC-20 区分授权事件与转移事件,并提供代为转移的调用方式。阅读一次交互时,应先识别调用动作,再检查成功执行后记录了什么。看到授权相关记录,可以据此讨论授权变化,不能把它自动解释为后续操作也已完成。
继续前面的例子,若想知道乙后来是否实际使用了额度,需要查后续记录,而不是只看甲先前的确认页面。保留合约地址、双方地址、查询区块和相关交易标识,可以让授权关系与使用过程各自有据可查。本文例子只用于理解数据结构。