账户模型是什么?以太坊余额和比特币UTXO有什么区别?
账户模型是什么?以太坊余额和比特币UTXO有什么区别?
日期: 2026-06-20
来源: https://xiaoyinsi.com/wiki/crypto/account-based-model
账户模型是什么?以太坊余额和比特币UTXO有什么区别? – 投资百科 – 小隐寺
账户模型是什么?以太坊余额和比特币UTXO有什么区别?
账户模型直接记录地址余额、Nonce和合约状态,是以太坊常用的账本结构。
账户模型(Account-based Model)是一种直接维护账户余额与状态的账本结构。以太坊是最典型的例子:网络不会把每一枚币标成独立“纸钞”,而是记录每个账户当前有多少余额、已经发出多少笔交易,以及合约存储里有哪些数据。
可以把账户模型想成银行总账。若甲账户有 10 ETH,向乙转出 3 ETH 并支付 0.001 ETH 手续费,状态更新后甲约有 6.999 ETH,乙增加 3 ETH。账本关注更新前后的账户状态,而不是追踪“哪一张 3 ETH 的票据”被花掉。
最简余额关系是:
新余额 = 旧余额 + 收入 − 支出 − 手续费
真实链上状态不只有余额。以太坊账户还涉及 Nonce,合约账户还包括代码与存储。全网节点按照相同规则执行有效交易,并对执行后的状态形成一致结果。
UTXO 模型把可花费资产表示成一组未花费交易输出。花费时,用户引用一个或多个旧输出,并创建新的输出和找零。账户模型则直接更新账户状态。
例如持有 3 BTC 和 2 BTC 两个 UTXO,要支付 4 BTC,可以把两个输出作为输入,创建 4 BTC 给收款人、约 1 BTC 减去手续费作为找零。账户模型中,拥有 5 ETH 的账户支付 4 ETH,更像直接把余额改成约 1 ETH。
UTXO 模型
账户余额和合约存储
独立未花费输出
同一账户受 Nonce 顺序约束
不冲突的 UTXO 可独立花费
共享状态直观,便于复杂应用
\n",}],"定义:账户模型是什么?
账户模型和 UTXO 模型有什么区别?
以太坊是什么?为什么它和比特币不一样?
UTXO模型是什么?比特币为什么用未花费交易输出记账?
智能合约是什么?为什么它让区块链不只是转账系统?
一个人做交易,亏多赚少?不得方法?
快快加入小隐寺的Discord社区,跟多位高手交流美股当下主题板块,研究基本面、技术分析,还有专属分类频道
更强调输入输出与花费条件
地址余额与活动容易聚合
可通过找零地址等降低直接聚合,但并非匿名
共享读写可能冲突
不同 UTXO 的冲突更易识别
两种模型不是“先进”和“落后”的关系,而是不同设计取舍。有些链还采用扩展 UTXO、对象模型或其他状态结构。
原理:一笔转账如何改变状态?
假设账户 A 的 Nonce 为 12、余额为 5 ETH。A 签署一笔向 B 转 1 ETH 的交易,Gas 实际花费 0.002 ETH:
节点检查签名是否对应 A,交易 Nonce 是否为 12。
节点检查 A 是否有足够余额覆盖转账和最高可能费用。
执行时,A 减少 1.002 ETH,B 增加 1 ETH。
A 的 Nonce 从 12 增至 13,验证者获得相应费用。
所有节点用相同输入执行,得到相同的新状态。
若 A 同时签了 Nonce 12 和 13 两笔交易,第二笔通常要等第一笔被处理。如果 Nonce 12 长时间因费用过低未确认,后续交易也可能排队。这就是钱包里常见“加速”或“取消”功能与 Nonce 有关的原因。
合约交互为什么更复杂?
合约调用可以在一次交易中连续改变许多账户和存储。例如用户用 1 ETH 在去中心化交易所兑换代币,可能依次发生:路由合约收到调用、流动性池更新两种资产储备、代币合约更新用户余额、事件日志记录成交。任何一步触发回滚条件,整笔交易的状态变化通常都会撤销,但已经消耗的计算资源仍可能产生费用。
这种共享状态非常适合组合式应用。借贷协议可以读取抵押品状态,交易协议可以调用代币合约,聚合器可以在一笔交易里经过多个池子。代价是执行顺序很重要:前一笔交易改变池子储备后,后一笔面对的价格已经不同。
举例:借贷仓位的连续更新
假设用户存入价值 10,000 USDC 的 ETH 作为抵押,协议允许最高借款价值为抵押品的 75%。用户借出 6,000 USDC 后,合约会记录抵押数量、债务本金和累计利息指标。
若 ETH 下跌后抵押价值变为 8,400 USDC,债务因利息变为 6,100 USDC,债务占抵押价值约 72.6%。此时它仍低于示例中的 75%,但安全余量已经很小。再有一笔价格更新或利息累计,仓位可能进入清算条件。
账户模型让合约能读取并连续更新这组共享状态。但“钱包显示有抵押品”不代表资产可随时自由转出,是否可提取要由合约根据更新后的债务与抵押率计算。
两类账户记录什么?
以太坊语境中通常区分外部账户和合约账户:
能否主动发起普通交易
外部账户(EOA)
余额、Nonce
余额、代码、存储等
通常由调用触发
EOA 的 Nonce 可理解为该账户已发送交易的顺序计数。它能防止同一笔已签名交易被无限重放,也要求同一账户的交易按确定顺序处理。合约存储则可以记录代币余额、借贷仓位、治理票数等复杂状态。
所谓“地址里有某种 ERC-20 代币”,常常不是地址自身保存了一条代币余额记录,而是代币合约的映射中记录“这个地址对应多少单位”。钱包读取多个合约后,才把资产列表展示给用户。
账户模型的优势和挑战
优势是开发者容易围绕账户编写状态机,余额查询直观,复杂合约之间也能同步组合。挑战主要包括共享状态竞争、Nonce 管理和状态增长。大量合约不断写入存储,会增加节点保存和访问状态的负担;热门合约被许多交易同时调用,也会让排序影响成交结果。
并行执行时,系统必须识别哪些交易读写同一状态。如果两笔交易都试图花费同一账户余额,不能简单并行后各自成功。不同链会通过预声明访问列表、运行时冲突检测或不同状态架构改善吞吐。
状态、收据和事件日志的边界
区块浏览器展示的内容不全等于共识状态。账户余额、合约存储和 Nonce 会影响后续执行;交易收据记录成功状态、Gas 使用量和日志;事件日志便于应用索引,却不能单独决定代币归属。一个合约可以发出看似“转账”的事件但不真正修改标准余额,也可以修改余额却遗漏预期事件。判断资产时应读取可信合约的状态,并结合交易调用,而不是只看一条日志文字。
账户模型还要区分“待确认”和“最终状态”。用户广播 Nonce 20 的交易,并不意味着余额立即永久改变;交易可能留在内存池、被替换、进入后来重组的区块,或因执行失败只消耗 Gas。安全决策步骤是:先核对链和账户当前 Nonce,再阅读模拟结果与最大费用,广播后等待适合该链和金额的确认数,最后检查状态变化而非只看交易已发送。对高价值合约操作,还要确认内部调用、事件和资产余额彼此一致。
理解账户模型不能替代交易前检查。转错地址、授权恶意合约或设置错误 Nonce 都可能造成损失,链上状态更新通常不可逆。本文仅用于投资教育和技术知识解释,不构成投资建议。
误区 1:账户余额都存放在钱包软件里
钱包主要保存凭证并读取链上状态。原生资产余额记录在链的状态中,代币余额通常记录在对应代币合约里。
误区 2:Nonce 就是交易总数
对普通 EOA,它通常与发出交易的顺序有关,但不同链和账户抽象方案可能有不同规则,不能把它泛化成所有活动次数。
误区 3:账户模型天然比 UTXO 更快
性能取决于共识、执行、数据结构和实现。共享状态冲突反而可能限制并行度,不能只凭模型名称判断速度。
误区 4:交易失败就完全没有成本
合约执行失败通常会回滚状态变化,但验证者已经执行了计算,发送方可能仍需支付 Gas。
常见问题 FAQ
账户模型只用于以太坊吗?
不是。以太坊是常见例子,多条智能合约链也采用账户式状态,但具体字段和执行规则可能不同。
为什么同一账户的后续交易会卡住?
因为节点通常按 Nonce 顺序处理。较早 Nonce 的交易未确认时,更高 Nonce 的交易不能直接越过它。
代币余额和 ETH 余额有什么不同?
ETH 是协议原生状态的一部分;多数代币由智能合约记录余额与转账规则,风险也包括合约权限和代码缺陷。
账户模型会泄露隐私吗?
公开链上的地址状态和调用可被观察并聚合。地址不是实名,但交易关系、交易所出入金和重复使用可能建立身份关联。
状态膨胀为什么值得关注?
状态持续增长会提高节点存储和访问成本,长期可能影响运行节点的门槛,因此链会研究状态过期、租金或数据结构优化。
账户模型直接维护余额、Nonce 和合约存储,适合表达复杂共享状态;它与 UTXO 的输入输出思路各有取舍。理解状态由谁记录、按什么顺序更新,才能正确解释余额、交易排队和合约交互。