钱包里有 1,000 USDT,想拿其中 20 换一点 TRX。打开兑换页面,按钮上写的却是“授权”。点下去,钱包弹窗里的额度是一个长得数不清位数的数字,远远超过 20。
这有点像去买一杯咖啡,收银员先问你,能不能以后直接从你卡里扣款,扣多少都行。多数人会犹豫一下,然后因为后面排着队,还是点了同意。
这一下同意,就是标题那个问题的答案。在 TRON 上,钱能在你没发起转账的情况下离开钱包,常见的路基本只有两条。一条是你以前给某个地址开过代币的花费额度,它随时可以按额度来取。另一条是账户本身的控制权被人改了,或者私钥、助记词已经泄露。前一条最常见,也最容易在毫无察觉时发生,因为它看起来只是兑换前的一个普通步骤。
下面就顺着这笔 20 USDT 的兑换,先看授权到底写下了什么,再看对方怎样凭它把钱拿走,最后看怎么收回、哪些情况收不回。
一笔兑换,其实要你同意三次
第一次是连接钱包。网站借此知道你的公开地址,之后可以向钱包发出各种请求。它像在柜台报上自己的账号,对方知道钱该从哪个户头算,但还碰不到钱。
第二次是授权。你在 USDT 的合约里留下一条记录,大意是“允许某个地址从我这里最多拿走多少 USDT”。被允许的这个地址叫 spender,也就是花费者。正规兑换里它通常是协议的路由合约,负责替你把币送进交易池。被允许的数量叫 allowance,就是这次给出的额度。
第三次才是兑换。路由合约按你的指令,从你钱包里拿走 20 USDT,换成 TRX 给你。

所以授权成功之后,钱包余额通常还是 1,000 USDT,一分没少。很多人在这里松了口气,甚至直接关掉页面。可这时候扣款许可已经办好了,东西却还没买。余额没变,只说明钱还没被拿,不说明没人能拿。
授权和兑换往往是两笔独立的链上操作,各自要消耗资源。授权本质上是调用一次 USDT 合约,钱包里能量不够时会烧 TRX 来补,这和第二篇讲的转账手续费是同一套规则。也有些应用把步骤合并或换了别的授权方式,弹窗次数并不固定。判断依据只有一个,钱包显示的操作内容,能不能解释你此刻想做的那件事。
对方拿钱时,不需要你再点一次
授权之所以危险,在于后面那一步完全不经过你。
USDT 在 TRON 上是一份 TRC-20 合约,可以把它想成一本总账。每个地址有多少 USDT 记在里面,谁允许谁花多少也记在里面。按照TRC-20 接口说明,你调用 approve,总账上就多出一行“我的地址、spender、额度”。之后 spender 调用 transferFrom,要求从你的地址转一笔钱出去。按常见的实现,合约主要核对两件事,你的余额够不够,这一行额度够不够。都够,钱就转走,额度相应减少。allowance 查到的,就是这个 spender 还剩多少可以拿。这是标准接口规定的用法,具体细节由每个代币合约自己实现,个别合约会有出入。
整个过程里,发起交易、签名、付手续费的都是 spender。你的钱包不会弹窗,手机也不会响。你当初那次点击,已经被合约当作对后面每一笔的同意。
拿生活里的银行代扣来比,很多地方是对得上的。你签一次协议,之后水电公司每月自己来扣,不用你逐笔确认。不同之处在于,代扣对象通常是登记过的机构,扣错了可以找银行。链上的 spender 可以是任何地址,包括骗子随手生成的一个,扣走了也没有柜台可找。
把数字走一遍会更直观。只批准 20,兑换用了 20,额度归零,这个 spender 再来拿什么也拿不到。批准 100,兑换用了 20,按常见实现会剩下 80,它日后还能从你钱包里拿 80。批准的是那个最大数字,有些合约实现会把它当成无限额度,干脆不扣减,用多少次都还是满的。具体剩多少,以链上查询到的当前 allowance 为准,别靠自己心算。
额度还跟具体的 spender 绑定。给合约甲的授权,不会因为你后来连了网站乙就挪过去。反过来,同一个网站换了新的路由合约,也可能要求重新授权,旧的那条并不会因此消失。网站名字一样,背后的 spender 可能已经是两个地址,每一条都要单独看。
无限额度,把以后的钱也算了进去
开头那个数不清位数的额度,就是常说的无限授权。合约里额度是个整数,最大能写到 2 的 256 次方减 1,十进制有 78 位,没有人的余额能碰到这个数,所以等于不设上限。应用这样做是图省事,你以后每次兑换都不用再授权一次,也少付一次授权的资源费。
代价在时间上。常见的 approve 授权没有有效期,关网页、换浏览器、隔上一年,它都还在。今天钱包里只有 20 USDT,无限授权今天最多影响这 20。下个月有人给你打了 5,000 USDT,只要那条授权还有效,这 5,000 也在它够得着的范围里。空钱包上的旧授权看着无害,其实是在等下一笔入账。
按需授权能缩小这块暴露面,但它管不了对方是谁。授权对象本来就是骗子,你给 20,它就拿 20。限额像只把门开一条缝,缝小了损失小,却证明不了门外站的是好人。
对天天用的正规应用,给大一点的额度换方便,是可以自己权衡的事。它的风险在于这个合约日后出漏洞或被人控制,你预先给出的额度会一起暴露,这一点再好的使用习惯也替你挡不住。第一次见的站点,尤其是从私信、群聊或广告点进来的,就没什么可权衡的,听到“授权大一点能免手续费”这种说法,更不该放宽。
没交助记词,钱也没了
这条路被骗子用得很熟。区块链分析公司 Chainalysis 在 2024 年 7 月发布的Operation Spincaster 介绍里,专门针对这类手法,称为授权钓鱼。骗子诱导受害者签下一笔交易,把某种代币的花费权限交给骗子的地址,之后就能随时把这种代币清空。Chainalysis 在这篇文章里说,按它追踪到的数据,从 2021 年 5 月到发文时,因授权钓鱼损失的资金已超过 27 亿美元,比它同年早些时候估计的约 10 亿美元多出不少。这是 Chainalysis 统计的整体数字,并没有限定在 TRON 上。
同一篇介绍里提到,这类骗局常和假的加密应用、“杀猪盘”式的感情诈骗绑在一起。受害者往往觉得钱一直放在自己钱包里,从没“交给平台”,所以很放心。可是余额还显示在钱包,和别人手里有没有一条可调用的授权,是两件互不相干的事。
包装的说法很多,参加活动、验证账户、开通收益、领取空投都有。页面讲的是故事,钱包要你签的是操作。两边对不上的时候,以钱包里的操作为准。正常的函数名也会被拿来干坏事,弹窗里不会写“把钱送给骗子”。
Chainalysis 在文中给了一条很实用的观察。正当的授权几乎都是给去中心化应用的合约,授权给一个个人或公司的情况极少。照这个思路,如果 spender 看起来是一个普通钱包地址,而不是某个协议公布过的合约,就已经足够让你停手。
断开连接,不等于撤销授权
发现不对劲,很多人第一反应是关网页,再去钱包里断开连接。这能结束网站和钱包之间的会话,网站没法再弹新请求。但授权写在 USDT 合约的总账上,跟浏览器窗口没有关系,断开连接动不了它。这就像把对方从通讯录删掉,他手里那把备用钥匙还是能开门。

真正的撤销,是针对那个代币和那个 spender,再发一笔链上交易,把额度改成零。按标准接口,就是对同一个 spender 再调用一次 approve,额度填 0,钱包和浏览器里的“撤销”按钮做的通常也是这件事。既然是交易,就要消耗能量和带宽,钱包里得留一点 TRX。提交之后,等交易显示成功,再查一次 allowance,看到零才算数。界面提示“已发送”,还不是完成。
查授权、撤销授权,从自己收藏的官方区块浏览器或钱包入口进去。别搜到一个“一键撤销”的网站就连上,撤销站本身也可能是钓鱼站,为了解毒又喝下一杯来历不明的水,就太亏了。
撤销管的是以后,已经转走的钱不会因此回来。它还有时间上的竞争。你的撤销交易和对方的转账交易都在等着上链,谁先被打包谁算数。Spincaster 的介绍里就有一个赶上了的例子,参与行动的人员联系到一名正在被骗的受害者,对方抢在骗子动手之前撤销了授权,保住了一笔六位数美元的资金。能赶上是因为有人提前发现,换个时间点,结果可能完全不同。
如果泄露的是助记词或私钥,撤销授权就不够用了。对方可以直接用你的身份签任何交易,重新授权,甚至把你为了撤销刚充进去的 TRX 先转走。这时该做的是停止往这个地址放钱,在可信的设备上新建钱包,把还能动的资产迁过去。
TRON 账户还有另一扇门
代币授权只管某一种代币能被谁花多少。TRON 的账户本身还有一层权限设置,管的是这个账户能被谁操作。
按TronLink 的多签说明,每个账户有一个 Owner 权限组,可以执行所有操作,另外最多可以设 8 个 Active 权限组,各管一部分操作。每个组里可以放多个地址,每个地址有自己的权重,签名的权重加起来达到门槛,交易才能执行。这套机制本来是给多人共管资产用的,比如两个合伙人约定大额转账要两人都签字。
新建的钱包默认只有自己一个地址掌握 Owner 权限,门槛是 1,自己签就能转。坏就坏在,权限本身也能被改。imKey 2026 年 1 月发布的多签骗局提醒描述过一种做法。骗子先用假冒的钱包 App 骗到用户的助记词,但不急着转钱,而是把账户的 Owner 权限改成需要骗子的地址一起签,门槛提到 2。之后用户自己发起转账,钱包会报 SIGERROR 一类的签名错误,因为缺了骗子那一份签名。账户照样能收钱,却转不出去。用户如果只拿它收款、从不看权限,就会一直往里存,骗子等的就是这个。
这一层和代币授权是两个问题。把 USDT 的额度清零,恢复不了被改掉的 Owner 权限,撤销授权的页面也处理不了它。正常兑换 USDT,没有任何理由要求你修改账户权限。弹窗里出现权限更新,页面却说是领一张优惠券,到这里就该关掉了。“反正转账金额是零”这种念头,恰好是这类操作最好的掩护。
imKey 的那篇提醒也给了自查办法,在 TRONSCAN 上搜自己的地址,翻到账户权限那一栏,Owner 权限里只有你自己的地址,才算账户还在你手里。
群里公开的助记词,是收费景点
同一套权限机制,还被反过来做成诱饵。有人在 Telegram、WhatsApp 之类的地方公开一组助记词,说自己不会操作,或者说送给有缘人。导入一看,钱包里真有一笔 USDT,就是没有 TRX 付手续费。顺手的想法是先往里打一点 TRX,把 USDT 转出来。

imKey 的提醒里把这一招也列了出来。这个钱包的 Owner 权限早就交给了骗子的地址,公开的助记词只能让你看见余额,签出来的转账不够门槛。你打进去的 TRX,骗子可以用自己的权限随时转走,最后全部落进他手里。那笔 USDT 是摆在橱窗里的样品,真正要收的,是你一次次补进去的手续费。
这里能顺手记住一件事,能导入、能看到余额,都不是控制权的证明。控制权要看当前的权限规则。想练手,自己建一个空钱包就够了,用不着和骗子共用一个账户。
弹窗出现时,按这个顺序看
先想清楚自己刚才要干什么。要兑换 20 USDT,弹窗里的代币应该是 USDT,数量和对象应该能解释这次兑换。冒出来的是另一种不相干的代币,或者是修改账户权限,就不用往下看了,直接取消。
再看请求从哪个网站来。域名拼写、你是从哪里点进来的,要和协议官方公布的入口对得上。浏览器地址栏的小锁只说明你和这个域名之间的通信是加密的,骗子的网站一样能申请到证书,办证这件事并不考人品。
然后看 spender 和额度。spender 应该是协议公布过的合约地址,应用的名字代替不了地址。额度和网络费用是两个数字,手续费低不代表授权风险小,这次没有转出金额,也不代表没有权限变化。
还有一类请求是链下签名,不上链,当场也不花手续费。它可能只是登录,也可能被对方拿去提交,在某些协议里变成授权或者挂单。在以太坊等链上有一种叫 Permit 的做法,就是靠一个签名完成授权,再由别人代为提交上链。各条链、各个应用的签名格式不一样,别把别处的教程原样套到 TRON 上。能记住的只有一条,签名代表你同意了一段内容,那段内容写了什么、给谁、多久有效,要看清楚。对方催你“别看了,直接签”,就更该停下。
钱包只能显示一串看不懂的数据时,先取消,回去找协议的说明,或者换一个能把内容解析清楚的流程。没有哪次确认必须当场完成。取消一次,代价是多花几分钟。签错一次,可能就得学着去追踪资金了。
常试新应用的话,可以单独开一个只放少量资金的钱包专门干这个,长期存钱的地址少连陌生网站,授权记录也更容易记清。这能把损失限制在小钱包里。不过两个钱包要是用同一组助记词派生、或者备份放在一处,一旦泄露就一起完蛋,隔离也就失效了。
回到那笔 20 USDT
现在再看开头那个兑换页面。连接,是让网站知道你的地址。授权,是在 USDT 合约里写下“谁能从我这里拿多少”。兑换,才是真正的买卖。兑换成功的提示弹出来,只说明第三件事做完了,第二件事留下的那行记录还在。
如果当时批的是无限额度,又不打算常用这个应用,换完之后顺手去查一下,把额度改回零,花一点能量,比留着一条永远有效的扣款许可踏实。隔一段时间翻一翻旧授权,把不再用的清掉,也比出事后对着几十条记录一条条排查轻松。清理的时候照样核对代币、对象和交易结果,别把清理本身变成另一轮闭眼连点。
链上的合约分不清你点同意时是认真的还是随手的,它只认那行记录。钱在你没转账时被转走,几乎都能追到某一次你给出去的同意,或者某一把交出去的钥匙。好习惯能挡掉大部分骗局,挡不住的是你信任过的合约日后出事,或者助记词在别处泄露。前者靠少给、勤清理来缩小损失,后者就只能靠备份和保管那一关了。