在以太坊上授权第三方动你的代币,靠的是 ERC-20 合约里的 approve 函数;而 Hedera 的 HBAR 和官方代币服务的资产根本不是你的合约管着的——额度只好做进网络协议本身。HIP-336 状态 Final,最早随 v0.25.0 发行落地,官方动机也写得直接:让交易所和钱包等受托方不必让用户为每笔转账预先签名,又不用把私钥交出去。它给三方定了名字:owner(币主)、spender(被授权花的账户)、recipient(最终收到币的人)。
三类额度,一个入口
授权走 CryptoApproveAllowance 交易,一次可以写进三样东西:HBAR 额度(owner、spender、amount 三元组)、同质化代币额度(再加一个 token id)、NFT 额度(带序列号列表,外加一个 approved_for_all 布尔和 delegating_spender 字段)。规则里有几处数字和语义值得背下:单笔交易所含授权条目总数不得超过 20,NFT 的每个序列号单独计数——一口气授权 20 个序列号就把额度用满;每个账户可持有的额度总数上限 100,这个上限横跨 HBAR、同质化代币和 NFT 的全量授权三类,NFT 序列号数量本身不设限。金额一律按代币的 decimals 字段计量,不是界面显示值。

覆盖、清零与“一次只认一个”
HBAR 和同质化代币的授权是覆盖语义:新值直接顶掉这位 spender 的旧额度,重复条目以最后一条为准;把 amount 填 0 就是删除额度、腾出名额,所以改额度不需要专门的删除交易。NFT 相反,是追加语义,并且有条铁律:一个序列号同一时刻只能授权给一个 spender——你把它批给 C,B 对这只的额度自动失效。approved_for_all 对应“我所有这类 NFT 全给你”,对同一只重复发 true 会被接受、照收费但等于没改;撤销它同样幂等。拿到全量授权的 spender 权力大到能替你把某只 NFT 再授权给第三方,与 ERC-721 的既有习惯对齐;规范同时设了防伪冒的门槛:用全量授权额度行权时,必须把 delegating_spender 填成自己并签名,否则直接 INVALID_SIGNATURE。
什么时候不报错、什么时候必然失败
一组“不报错”的边界容易让人高估额度:授权金额超过你账上余额,不算错,spender 真去转超了才失败;owner 或 spender 的账户被冻结、KYC 被吊销时,授权照发,spender 执行那笔转账才失败;代币处于暂停状态,授权提交也没问题。真正的失败清单规范逐条列了:spender 和 owner 是同一个账户、金额超过代币最大供应量、金额为负、owner 未与该代币建立关联、序列号不存在或不在 owner 手里、给同质化代币的 NFT 额度写错类型、以及什么都没授权。注意“未关联”那条——Hedera 收币先要关联,这条与 EVM 直接转的直觉不同,关联槽与空投的机制可看 Hedera 无摩擦空投:关联槽不够时会生成待领取,收件人可接受也可拒绝。
与 EVM 授权习惯的三条差别
用过 approve 的人,有三条习惯要更新。第一,额度不存在于“代币合约”里——HBAR 与官方代币服务的资产由网络本身托管,授权记录、核对与撤销都走网络层接口,去读代币参数是读不出谁有额度的。第二,调整语义不同:HBAR 与同质化代币的新值直接覆盖旧额度,想增减就发最终数字即可,NFT 则按序列号追加,两种方向恰好相反。第三,闲置额度不是零成本挂着:它会抬高账户的自动续期费,定期清掉用不完的授权是有真金白银价值的日常动作,而不只是卫生癖。
花额度的人,和查账的你
执行侧没有新方法:spender 直接发起普通的 CryptoTransfer,在转账明细上把 is_approval 标记置真,网络据此扣额度。授权要 owner 签名(spender 代付费用时还要加付款方签名)。一个容易忽略的成本提示:账户里挂着多少条额度,会体现在续期费上——设置额度抬高账户自动续期费,删额度则把它降回去。核对动线上,你作为 owner 应定期清点三样:谁持有你的额度(授权记录查询)、额度还剩多少(spender 侧余额视图)、以及那些“转走了为什么没找我”的交易是否带了 is_approval 标记。与以太坊习惯一致的授权排查思路,可对照 链上授权与取消授权:先查清单、再按需撤销的安全习惯 的查清单与按需撤销流程。涉及资产与费用的授权操作不构成投资建议,机制以 HIP-336 规范 2026-10 版本原文为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。