越欠越多的代币:借款凭证余额增长的记账原理与还款额换算 图 1
越欠越多的代币:借款凭证余额增长的记账原理与还款额换算 · 图 1

在部分借贷协议里借了款之后,钱包里会多出一枚新代币,数量不减少反而自己一点点变大。很多人第一反应是自己被空投或者被攻击了,其实那是你的债,正在按链上的方式记账。债务代币是借贷协议两类记账路线中的一种,读懂它的会计学,才能看懂页面上那个悄悄增长的数字,并把它换算成准确的还款额。

先铺背景。借贷协议必须回答一个问题:每个人的债务怎么记。最直觉的方式是正余额账本——在合约里记一笔谁欠多少,像数据库字段。但链上合约为了节省每次读写的成本,主流协议普遍采用了凭证化的记账:存款记为一种凭证,借款同样记为一种凭证。存款凭证是正的,持有人对应池子里的资产份额;借款凭证是负的——它在钱包里显示为一枚独立代币,代表的却是这个地址欠协议多少。债务代币与存款凭证共享同一套记账骨架,区别只在它不兑换资产,而是兑换清偿义务:你烧掉多少债务代币,就把等值的债务从账上抹掉。

于是解释余额增长的逻辑就不神秘了。借款利息不是每次结算时往你账上加一笔记录,而是全体债务共享一个持续上调的换算系数:协议每秒都在更新债务相对于借款币种本位的汇率,你的债务代币数量不变,但每一枚此刻代表的债务越变越大。有两种等价的表述方式——一枚代表更多债务,或者同样的代表额对应更多枚——不同实现会选其一,效果相同。你从钱包界面看到的现象可能因实现不同而不同:要么显示数量固定而折算金额增长,要么显示数量直接增长。两种都只是记账视角,本质都是复利计提把债务随时间推高的过程,按秒摊销、按复利结算,与你在别处看到的借款利率是同一个利率模型。

理解记账之后,还款金额的换算链条就清楚了。正确的核对步骤是:先读出你地址持有的债务代币余额,再读出它当前代表的借款本位金额,这个金额就是此刻全额结清所需的数字;它由本金加上历次计提的利息构成,与名义本金的差完全来自这一系数累积。做部分还款时要注意,协议按同一汇率折算你烧掉的债务代币数量,因此不存在多付还是少付的模糊地带,但也不要在只读页面显示换算之后又间隔很久才提交——系数在动,长间隔提交永远差一点尾数。想结清时常见的稳妥做法是让钱包选择全部偿还选项,合约会自行读取最新系数,比手工凑数字准。

关于债务代币还有几个常见误读。第一个:它不能转账也不该转账——多数实现中债务代币的转账函数是被禁止的,债务不能被塞给别人,这与可自由转让的存款凭证恰成对照;个别协议实现了可转让债务或承接机制,那是另一套结构,不要从一般规则推导。第二个:它在钱包里的价值显示永远是零或一个负数,有钱包把它错标成资产,这是显示层的常识错误而非账务事实。第三个:余额为零不等于债务为零——债务代币被全部烧掉才是结清,有些用户从钱包看不到这枚代币(未添加显示)便以为没有债务,账上是否存在负余额只能从协议页面或合约查询确认,不能只看默认显示。第四个是精度问题,债务代币的数量往往带固定精度因子,链上原始数字与页面数字之间的换算与前面价格方向一节的精度处理同理,核对原始数值前先确认小数位数。

把视角拉高一层,债务代币的设计选择实际反映了协议的账本风格:它把每一笔债务变成一个独立的公开状态——谁欠多少在链上一目了然,代价是查询接口多一层汇率换算、用户界面上多一个反直觉的代币。两种路线的复杂度对比没有赢家,只提醒一个长期事实:DeFi 的账务概念常常以代币形态出现在钱包里,钱包只是显示,含义在协议;凡是钱包里冒出来路不明的新代币,第一反应该是先回到它对应的协议动作里找原因,而不是去处理那个显示出来的东西本身。

借贷债务按利率随时间增长,具体记账方式与换算系数因协议而异,操作前请以目标协议实时数据为准。本文只解释账务机制,不构成投资建议。

越欠越多的代币:借款凭证余额增长的记账原理与还款额换算 图 2
越欠越多的代币:借款凭证余额增长的记账原理与还款额换算 · 图 2