跳到正文
← 使用教程

SuperToken 包装后币数不符:核对底层精度、Native路线与收款人

链小知 · 进阶 · 核验 · 依官方文档整理

用已有upgrade/downgrade记录分清SuperToken与底层资产单位、授权对象、舍入和to地址,不把包装或解包触发当到账。

开始前准备

  • 已有去敏token与underlying地址/decimals、方法/ABI版本、allowance与upgrade/downgrade原结果、目标to及交易回执。
  • 不授权、不运行SDK/合约、不wrap/unwrap或支付;未知wrapper类型/底层资产先停在识别,不输入私钥或新转账试错。

1. 先分ERC20 Wrapper、Native与Pure

对照同链SuperToken地址、原getUnderlyingToken/getUnderlyingDecimals结果与资产官方说明。ERC20 wrapper有底层代币;Pure本来就无底层,不能保证可兑换某币。

Native wrapper以原生币为底层并使用ISETH类接口。getUnderlyingToken为空只能说明没有该ERC20底层,不足以独立识别Native;别凭符号带x或ETH字样给任意合约归类。

检查结果:资产类型、合约和底层证据明确,零地址未被过度解释。

2. 把18位包装金额与底层allowance分开

固定SuperToken amount按18位,getUnderlyingDecimals另给底层精度;已有toUnderlyingAmount(amount)可列underlyingAmount与adjustedAmount。底层精度低于18时向下取整/调整,不能把6位底层整数直接传成18位数量解释。

示例代码复用一个amount不保证任意底层精度正确。保留所有原整数,用对应decimals展示,舍入差异不自动当平台扣费。

检查结果:SuperToken原量、底层原量、调整量及单位可对照。

3. 核ERC20升级的payer、授权和实际mint对象

原ERC20包装路线核底层token、spender为目标SuperToken、底层allowance与所需underlyingAmount。授权成功只是可花额度,不能代替upgrade成功。

upgrade默认mint给付款者,upgradeTo的to可不同;fixed _upgrade比较真实底层转入与预期,转账扣费等导致不相等会拒绝。保留NO_UNDERLYING_TOKEN或INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED等原错误,不建议追加授权/金额绕过。

检查结果:付款者、spender、to与实际底层/铸造记录各自一致。

4. 对Native升级核msg.value而非ERC20approve

已有ISETH upgradeByETH()或upgradeByETHTo(to)是payable,数量取msg.value;没有普通upgrade(amount)的同参数结构。固定SETHProxy给sender或指定to selfMint,原生币来源与Gas分别保留。

这条实现不为任意x资产保证同接口,也不把无底层Pure当Native。函数名ETH只是该接口名称,实际链/部署资产必须对应原证明。

检查结果:Native方法、msg.value、接收人和部署范围有证据。

5. 检查解包类型、可用额和实际底层接收方

ERC20 downgrade/downgradeTo烧毁SuperToken再向caller或to转底层,原amount仍18位并可能调整;Native downgradeToETH在所读实现转原生币给caller,不套downgradeTo的收款规则。

可见余额要结合动态available与现存出流/buffer;余额不足或无底层会失败,不能用历史累计流收入作当前可烧毁额。TokenDowngraded中的account可能是烧毁账户,不一定等于downgradeTo底层收款to。

检查结果:解包方法、烧毁账户、可用量和实际底层接收人分列。

6. 用成功回执与资产变化完成核对

核原交易成功、TokenUpgraded/TokenDowngraded、对应SuperToken铸造/烧毁及底层或原生币转移。目标to不同于payer时分别核各账户,不能只看事件名/数量宣布自己的底层钱包已到账。

包装余额与尚未包装底层分别计算,别重复计资产。网络Gas、App费用未知和可能舍入分列;wrapper解包并不自动停止已存在CFA流,权限撤销和流取消仍需独立记录。

检查结果:资产变化绑定正确链、方法、单位、接收方和成功回执,缺证列未完成。

怎样确认完成

  • 按原记录明确包装类型、双精度、payer/to、实际资产变化与失败层。
  • 未执行任何包装/解包或确认真实余额、资产兑换资格和收费服务。

常见错误与边界

  • x符号或underlying零地址当Native证明;Pure资产擅自承诺可解包。
  • 18位SuperToken和底层6位allowance混算,舍入当手续费。
  • 批准/事件名当包装完成,或将downgradeTo的account事件字段当底层to。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据