存数据要先交押金、删数据能退钱:NEAR 存储质押的计费与回收路径 图 1
存数据要先交押金、删数据能退钱:NEAR 存储质押的计费与回收路径 · 图 1

区块链常被形容成”不可篡改的永久账本”,但 NEAR 给出了一个容易被忽略的反面:账本里的状态数据是可以被删除的,删掉之后,当初为存放这些数据而锁定的代币还会退给你。这套机制叫存储质押,也叫状态质押。它把”占地方”这件事标出了明确价格,也把”腾地方”变成了一件有回报的事。本文按官方文档拆解它的计费规则、退款路径与边界。

为什么状态要收押金而不是收手续费

每多存一个字节,全网验证节点的数据库就永久性地重一分。如果写入状态只收一次性手续费,攻击者花小钱就能把所有人的存储撑爆,这是典型的非对称攻击。NEAR 的选择是押金制:谁写入状态,谁就按字节数锁定一笔 NEAR;锁定的不是烧掉,而是从余额里冻结。账户要执行别的操作时,可用余额必须先覆盖已存数据对应的质押额。这样”撑爆存储”的成本从一次性小额变成了真金白银的大额占用,而正常用户将来删数据时又能把押金拿回来。

价格怎么算:每字节的官方定价

机制示意

官方文档给出的存储价格是每字节 10000000000000000000 yoctoNEAR,即一千万亿亿分之一 NEAR 的粒度下,每 100KB 对应 1 个 NEAR。这个比率是网络参数,理论上可由协议升级调整,正文数字以官方页面为准。合约部署后,其状态体积按字节计费,占用合约账户的余额。一个常被引用的例子:某个映射累计写入 3500 万字节,就需要锁定 350 个 NEAR。

还有一层免租额度:新创建的账户自带 770 字节的免费空间,这部分由创建账户时收取的固定 0.007 NEAR 一次性覆盖,不需要额外质押。日常的小额状态写入往往就落在这 770 字节里,这也是很多用户感觉”存数据不花钱”的原因——成本被前置到了开户费里。

删除数据为什么能退钱

与”区块链数据不可删”的直觉相反,NEAR 的验证节点并不永久保留全部状态。合约可以提供删除数据的接口,被删掉的字节对应的质押额会解锁回账户余额,节点上的旧数据会在几个纪元内被清理。索引节点是例外:它们自愿长期保存历史状态,为全链提供查询服务,不承担也不回收这份质押。

删除操作本身要付 gas,而区块有 gas 上限,所以一次交易能删除的数据量存在天花板。合约若想批量回收押金,往往需要分多次交易执行。对开发者来说,这意味着”可回收”不等于”随时全额回收”,写入时就要设计好清理路径。

与一次性销毁、租金回收的路线差异

同样是给状态定价,各链的选择谱系很宽:以太坊把状态费藏在 gas 与月度增量费用提案里,写进去就长期存在;Sui 的存储基金走”先付一部分永久费、删数据拿回大部分”的返还路线;NEAR 则接近全额押金制——锁定的本金原则上都能随删除回来,只是期间不能挪作他用。三种路线对用户的体感差异在于:你的钱是”花掉了""部分花掉”还是”存管着”,以及删除数据时账户里到账多少。对开发者来说,押金制还改变了一个细节:向用户合约转账时附带存款来覆盖其数据空间的模式,在 NEAR 生态的合约里相当常见,附款的性质是质押而非消费。

普通用户核对什么

第一,理解”余额有一部分动不了”:如果合约账户质押了大量资金,它的可用余额会比显示余额小,交互前遇到合约报余额不足时,可以先查它的状态体积。第二,理解免租额度的位置:770 字节的免费空间在开户时已被固定费用覆盖,超过的部分才逐字节锁质押。第三,对承诺”删数据退押金”的合约,确认删除函数是否真的存在、是否限频限次——机制提供的是退款的通道,不是自动退款。

需要提醒的边界:存储价格是网络参数,可能随协议调整,正文数字核对时以官方文档当前值为准;押金锁定期间不产生收益,也不受任何平台兑付承诺保护;本文仅为机制说明,不构成任何投资或项目使用建议。