惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
C
Cybersecurity and Infrastructure Security Agency CISA
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
T
Threat Research - Cisco Blogs
C
Cisco Blogs
Recent Announcements
Recent Announcements
S
Securelist
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
P
Privacy & Cybersecurity Law Blog
宝玉的分享
宝玉的分享
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
月光博客
月光博客
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
博客园 - 司徒正美
L
LINUX DO - 最新话题
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
H
Help Net Security
Spread Privacy
Spread Privacy
PCI Perspectives
PCI Perspectives
Project Zero
Project Zero
I
Intezer
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
Recorded Future
Recorded Future
T
Tenable Blog
Jina AI
Jina AI
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志

smallyu的博客

为什么买的加密货币一定要去中心化 RISC-V 虚拟机无法代替 EVM 虚拟机 利息,套利,交易策略,金融市场 LayerZero 从来不挑战比特币的地位 默认参数引起的以太坊节点运行错误 硬件钱包与资产安全 预测市场比币圈更赌场 为什么去中心化的跨链桥不可能实现 我对于 AI 时代的答案 不要投资任何隐私币 区块链技术世界的三大真理 以太坊 AA 钱包的致命问题是什么 基于 AI 语义执行的 MCP 区块链的设计 一个集成 Geth 和 CometBFT 的兼容层 我的加密货币定投策略(二) DeFi 基础: 理解 AMM 定价机制 Go 语言 GMP 调度器的原理是什么 Web3 项目分析计划 对 Psyche Network 项目的分析 continuation 教程: 理解 CPS 如何开发一个比特币符文(Runes)协议 比特币脚本开发教程 我从王垠的计算机科学视频班学到了什么 区块链技术面试题(2025年版) Rust 语言容易让新手困惑的一个“过度优化” Solana 智能合约开发教程 (1) 尝试开发一个最小 EVM 虚拟机 基于 ZK 的链上身份系统设计 一个 Web3 打赏系统的设计 鼓吹 Cursor 的人技术能力都差 关于 Code Review 的礼节 假如启动一个新的以太坊 PoS 网络 发行加密货币的最好方式 所有 BFT 共识的区块链都是中心化的 对 2025 年区块链行业的预测 Restaking 项目的经济难题 如何看懂任意区块链项目的技术架构 为什么不要做以太坊的二次开发 为什么不要做智能合约开发和 DeFi 开发 我的加密货币定投策略(一) PoS 类型的区块链如何处理分叉 Ethereum Casper 为什么需要 EIP-7251 区块链中的 PBFT 不需要第二次投票 开发者的思维方式 发币的核心要点 炒币投资的小 tips 为什么说 PoW 比 PoS 更加去中心化 牛市对普通人来说意味着什么 如何健康地远程工作 为什么比特币不用概率加密函数 程序员的 “服从权威” 心理 区块链技术面试题 如何区分公有链和联盟链 对 Layer 2 项目创业想法的回复 对区块链共识机制的理解 Pebbling Game 鹅卵石游戏 PDP 文件证明的局限性 不要小瞧 ChatGPT 为什么炒币不是一个好主意 一种在区块链上生成随机数的机制 为什么以太坊的私钥计算不可逆 关于以太坊的私钥碰撞 “猜均值的2/3” dApp 游戏设计 Proof of Storage/Space/Replication 的区别 Proofs of Retrievability 文件证明的含义 对 S-PDP 文件证明的示例和解释 我的加密货币交易机器人 对区块链行业的见闻 随机确认块的共识机制 VRF + BFT 共识引起交易失败的问题 为什么要重视编程思想 对 Web 3.0 的理解 GitBook 好用吗? 一种区块链节点存储扩容的方式 一种基于“自我中心主义”的共识机制 链表常见算法题及解析 基于 Multi-Linked List 的区块链设想 理解哈希函数与序列化 联盟链比公有链差在哪儿 在 Dijkstra 算法中保存路径 为什么数字货币使用区块链是政治问题 区块链:下一代数字身份认证体系的基石 网页技术能实现 3D 建模吗? 给区块链一个定义 从 Erlang 开始了解 Actor 模型 一种侧边导航栏的交互方式 Rust 的 ownership 是什么? Haskell 中的 Monad 是什么? 浅析 Libra 背后的区块链技术 对区块链的理性认识 Rust 基础语法概述 基于 Java 的爬虫框架 WebCollector Kotlin:简化版的 Scala JavaScript 有关联数组吗? 主流编程语言的异常处理机制 Go 语言基本语法 Scala 语法基础 用 Scala 改写 Java 浅度实践 Python 获取海贼王更新信息 HTML5 音乐可视化
Polkadot 的 Existential Deposit 机制错在哪里
2026-04-22 · via smallyu的博客

2026-04-22

Polkadot 有一个叫 Existential Deposit (ED) 的机制,含义是如果你的账户余额小于 1 DOT,区块链网络会直接删除你的账户以及余额。删除的意思是指,你的地址信息将不存在于链上,其他地址无法转账小于 1 DOT 给你,你的余额以及 Nonce 值会被直接抹除,整个网络的代币总供应量也会因此减少。

问题背景

我们先来理解一下为什么 ED 这样的设计会存在。Vitalik 要说代码和工程水平可能远不及他拥有的名气,Gavin Wood 是以太坊的实际开发者。Gavin 因为实际设计了以太坊的节点,所以很清楚以太坊存在状态数据会无限膨胀的问题。

以太坊节点会把整条链上所有有过交易记录的地址信息,都维护到世界状态中,用的是一种叫 MPT 的树结构,每个地址信息都是树上的一个叶子节点。那么就存在一个问题,我们平时使用以太坊钱包也会有体会,如果地址里有 0.00001 ETH 的余额,这种非常小额的余额,是永远无法被转出的,因为以太坊对于普通转账交易,固定要求 21000 Gas,无论 Gas Price 多低,以太坊账户的余额都不可能彻底清零。这种非常小的余额被称为粉尘余额,对于强迫症来说会是一种灾难。

对于以太坊节点来说,这些地址以及余额,就不仅只是视觉上强迫症的问题,而是意味着,节点需要维护的状态数据,永远都会只增加、不减少。每多一个新的地址有余额,服务器上的节点就需要多储存一份地址的键值对信息,哪怕对内存的占用量很小,也会持续累积和增加,给服务器持续带来压力。这种设计在工程上是很暴力、不负责也不合理的。

针对粉尘余额,存在两个问题,我们分别来对比:

  1. 用户视角的粉尘余额是否可以消除、让余额彻底清零
  2. 节点视角的粉尘余额是否会持续给服务器增加压力

用户视角

比特币是如何解决粉尘余额问题的?假如有一个 UTXO 地址里的余额非常小只有 1 sats,那么自己发起转账肯定是不行的,因为 1 sats 不够付矿工费。但是比特币的交易允许有多个 input,只要把小额的 UTXO 作为其中一个 input,再让其他有大额余额的 UTXO 作为另外的 input 来支付矿工费,整笔交易就可以成功,拥有 1 sats 的 UTXO 余额也会清零。所以是 UTXO 账户模型让比特币天然没有粉尘余额的问题。

以太坊是粉尘余额的起源地,所以目前始终无法解决。

Polkadot 为了解决粉尘余额的问题,把 Existential Deposit 作为 Day Zero 的核心设计写到了协议里。余额小于 1 DOT 就会被自动清除,自然不存在粉尘余额的问题。这种清除余额并不是指余额会转给矿工或者转给黑洞地址,而是凭空消失一样地清除。

节点视角

比特币节点也是需要 chainstate 的,会把所有有余额信息的地址信息都维护在节点的内存中。不过相比以太坊,由于比特币地址的粉尘余额是可以被清零的,而节点方面对于余额是 0 的地址不需要维护一份状态数据,如果一个地址的余额是 0,节点就可以把地址从状态数据中删掉,内存占用就可以减少一点点。所以对于比特币节点来说,状态数据并不会只增不减,而是可以根据实际情况有增有减。

以太坊节点呢,一方面因为用户余额本身就无法清零,余额再小节点也得维护状态。另一方面在于,以太坊其实有清理状态数据的机制,只是地址可以被清理的要求很苛刻,需要余额为 0,并且 Nonce 值为 0。Nonce 值这个东西,也是比特币没有的概念,以太坊为了账户-余额模型加的。也就是说,哪怕余额为 0 了,只要发出过交易,Nonce 值就不可能是 0。两方面原因叠加下来,以太坊的状态数据会只增不减,持续膨胀。

Polkadot 呢,同样是利用 Existential Deposit 的设计,会直接清理掉小于阈值的地址以及相关信息,相应的,链上节点维护状态数据的压力就会变小。

小结

所以 Polkadot 利用 Existential Deposit 这种机制,同时解决了粉尘余额对于用户以及对于节点的影响,在工程上是一种比较纯粹和现代化的设计。

错在哪里

回到标题,Polkadot 的这种设计有错吗?

  1. 太过纯粹的工程思维

程序员群体在解决现实问题的时候,往往会偏好工程化的解决方式,而忽略现实用户的体验。Polkadot 给人的感觉就是,小钱不是钱,我没钱就不配用。

加密货币作为一种资产,一种货币,一种钱,链上节点像是在回收垃圾一样,把我的余额给回收掉。是不是等同于在说,小的金额就是垃圾?用编程语言的垃圾回收机制,来针对加密资产做回收,这是比较错配的行为。内存中的无效资源、悬空对象可以是垃圾,但是用户的资金不是。在比特币网络,哪怕只有 1 sats,也会安安静静躺在那里。

  1. 违背了加密货币的原则

Polkadot 的 Existential Deposit,直接违背了加密货币的根本原则:只有持有私钥的人,才有资产的控制权。

我们常说 “Not your keys, not your coins”,但是到了 Polkadot 这里,只有你自己持有私钥对吧,但是链上的节点可以直接抹掉你的余额,在没有私钥的情况下让地址内的余额发生了变化。这是一种非常违背原则的做法。

在区块链中,唯一有效的、对余额产生影响的,应该来自于账本数据,以太坊尚且没有做得这么过分,但是 Polkadot 做了,直接改了状态数据里的余额,在没有交易行为的情况下,引入了节点层面的收割机制。

  1. 账户模型的原罪

如果说 AA 钱包 是以太坊为了解决账户模型而打出的一个补丁,那么 Existential Deposit 就是 Polkadot 为了填补账户模型打出的另外一个补丁,试图在以太坊的基础上向前多走一步,而做出的激进设计。