链上存一兆字节数据有多贵?链上与链下的存储账本 图 1
链上存一兆字节数据有多贵?链上与链下的存储账本 · 图 1

有人第一次把一段文字或一张图直接写进交易数据域,账单跳出来时会怀疑按错了零。链上存储贵不是计费系统出了故障,而是这套账本的设计使然:你写入的每一字节,全网每台全节点都要永远保存并跟着备份。这一篇把这笔账拆开算——先算写入价签,再算谁在为永久性买单,最后看主流方案为什么都是链下放原稿、链上放指纹。

第一层价签:跟着交易走的字节费

交易带一段附加数据上链,协议按字节收费:非零字节每个收十六 Gas,零字节每个收四 Gas,这是写在协议规格里的常数。一兆字节约有一百零五万个字节,全按非零最坏情形折算是一千七百万 Gas 的纯数据费,这还只是一笔交易把数据发出去的费用;数据本身并不因此变成合约的持久存储,它只是历史账页里的一段记录——每个新节点同步历史时都得重新下载它。费用随 Gas 单价波动,字节费与 Gas 单价相乘才是法币数字,所以贵的时候与便宜的时候能差出数量级,但贵得离谱的相对感从不消失。

链上存一兆字节数据有多贵?链上与链下的存储账本 图 2
链上存一兆字节数据有多贵?链上与链下的存储账本 · 图 2

第二层价签:写进合约存储才是大头

如果目标是让数据留在当前状态里被合约继续读写,那走的是另一套价签:把一个原本为空的存储槽第一次写成非零值,协议要收两万左右 Gas 的写入费,修订已有值另有一档较低但同样可观的价格,而存储槽一次只装三十二字节。换算下来,把一个一兆文件原样塞进合约存储,写入费就足以顶上一笔普通转账的几百个来回,普通操作里的存储写入之所以是 Gas 账单大头,原因就在这张价签上。更关键的是永久性:协议至今按存入即永久来计费,没有到期自动清理的存储租金制度——这个话题被反复提案却始终未成为主网现实,你付的那笔写入费里,隐含的是对全网未来所有节点存储成本的预付摊派。

标准解法:指纹上链、原稿下链

于是行业收敛出一套固定动作:原文放服务器或内容寻址网络,取三十多字节的哈希写进合约。NFT 行业是最典型的教材——图片本身几乎都不在链上,链上只有一条指向元数据的地址与校验指纹;代价同样清楚:链下那半截可能失效,于是才有把元数据多镜像几份、把内容网络与中心化网关做冗余的各种补救。链上指纹的意义在于可验证:任何拿到原稿的人都能重算哈希对账,篡改会被当场逮住,但存在性担保不在链上——链只证明这个指纹被登记过,不证明那份文件今天还找得回来。

快速问答

问:把数据分成许多小笔交易写入,会不会便宜一点? 答:不会,字节价签是线性的,分笔只会额外增加每笔的基础费与状态处理开销。

问:二层网络写数据是不是就便宜到可以存文件了? 答:便宜一到几个数量级,但二层的成本优势来自批量压缩与数据可用性安排,逐字节原样存大文件依旧远逊于链下方案。

问:链上删数据能退钱吗? 答:协议对清空存储槽给过一次性的 Gas 返还,但返还额只是当年写入费的一部分,永久占用的隐含成本并不退还。

常见误区

第一种把链上存储类比云存储:云存储是运营商担成本、你按月付费、可以删;链上存储是你预付、全网镜像、默认永存,商业模型完全不同。第二种以为付了数据费数据就归你永久保管:交易记录会一直公开,但把它从海量历史里取出来讲给别人听的能力,并不包含在那笔费用里。第三种把哈希上链当成文件上链,反过来又用链上存在性为随时可关门的链下托管背书,两头都高估。

风险提示:本文价格结构以协议规格为据,Gas 单价为市场波动值,文中换算均为示例,不构成投资建议;具体字节与写入价格以当期协议文档为准。