15-ETH-账户

学习视频来源:https://www.bilibili.com/video/BV1Vt411X7JF/?p=15
本博客除了包含自己的在学习过程中记录的笔记外,还包含少部分自己扩展的内容,如有错误,敬请指正。

文章目录

  • [1. 比特币是基于交易的账本模型](#1. 比特币是基于交易的账本模型)
  • [2. 以太坊是基于账户的账本模型](#2. 以太坊是基于账户的账本模型)
  • [3. 以太坊中的两类账户](#3. 以太坊中的两类账户)
    • [3.1 外部账户](#3.1 外部账户)
    • [3.2 合约账户](#3.2 合约账户)
  • [4. 以太坊为什么要设计一个新的模型?](#4. 以太坊为什么要设计一个新的模型?)
    • [4.1 不沿用比特币的原因](#4.1 不沿用比特币的原因)
    • [4.2 稳定身份的现实必要性](#4.2 稳定身份的现实必要性)
  • [5. 以太坊的设计取舍](#5. 以太坊的设计取舍)

1. 比特币是基于交易的账本模型

比特币系统中并没有显式地表示某个账户有多少钱。如果你想知道某个账户有多少钱,需要通过 UTXO(未花费交易输出)来计算。

  • 优点:对账号隐私有一定保护。
  • 缺点:使用不便,不符合日常金融体验。

1.1 不方便点

(1)转账时必须说明资金来源。

例如:A 转给 B 10 个比特币,需指明这 10 个 BTC 来自两个不同的交易(如 7 个 + 3 个)。这与银行完全不同,银行存钱无需说明来源,花钱时也不用追溯来源。

(2)UTXO 必须"全部花完":

  • 若A 转了10个比特币给B。B现在要转 3 个给 C。 若B不将剩余7个"转给自己"(通常用新地址), 则这 7 个会默认作为交易费送给矿工------"矿工狂喜"。现在很多钱包支持"每次交易换一个新地址",即"打一枪换一个地方",增强匿名性。

根本问题是 比特币系统没有显示的维护基于账户的交易的概念。


2. 以太坊是基于账户的账本模型

以太坊采用类似银行的账户模型,每个账户都有明确的余额记录。

2.1 基本操作更直观

  • A转给B 10个以太币,只需检查A的余额是否 ≥10,无需说明资金来源。
  • B后续转3个给C时,也不必处理"找零"------系统自动扣减余额。
  • 比特币中用于追踪来源的哈希指针在以太坊中不再需要。

2.2 安全机制设计

对双花攻击的天然防御

  • 只需检查余额:够就扣,重复花费就扣减2次。

新挑战:重放攻击

  • 攻击场景:A 转账给 B 的交易上链后,B 再次广播同一笔交易。
  • 重放攻击与双花攻击对称:
    • 双花:付款方不诚实;
    • 重放:收款方不诚实。

解决方案:Nonce 机制

  • 每个账户维护一个 nonce(计数器),表示该账户历史上已发出的交易总数。
  • 每笔交易必须包含当前 nonce,并由私钥签名。
  • 例如:第 21 笔交易必须写 nonce=21。签名保护确保 nonce 无法被篡改。
  • 节点维护状态树,其中包含: 账户余额(balance)和nonce 值
  • 执行规则:
    • 初始 nonce = 0;
    • 每成功执行一笔交易,nonce +1;
    • 若收到重复 nonce 的交易(如已执行过 nonce=21),直接拒绝。

注意:这里的 nonce 是 计数器(counter),不是比特币 PoW 中的随机数。


3. 以太坊中的两类账户

3.1 外部账户

  • 由公私钥对控制;
  • 拥有余额和 nonce;
  • 可主动发起交易。

3.2 合约账户

  • 不由私钥控制;
  • 包含4个核心要素:
    • nonce:记录该合约账户创建过的子合约数量;
    • code:部署后不可变的字节码;
    • storage:可读写的持久化存储,随执行而变化;
    • balance:该合约当前持有的 ETH 数量。可变(注意合约账户也是可以有余额的!)
  • 行为限制:
    • 不能主动发起交易(以太坊硬性规定);
    • 只能由外部账户触发;
    • 外部账户可以发起交易,交易中调用合约,合约在被调用时,可通过内部消息(message)调用其他合约。

合约创建时会返回一个固定地址,后续可通过该地址调用其功能。


4. 以太坊为什么要设计一个新的模型?

4.1 不沿用比特币的原因

  • 比特币已有成熟代码,但其 UTXO 模型不适合智能合约。
  • 比特币强调隐私(频繁换地址),但智能合约需要 稳定身份

4.2 稳定身份的现实必要性

  • 类比现实世界:
    若某人以身份 X 与你签合约,事后消失,或另一个人声称"我就是 X,只是换了身份",将导致信任崩溃。
  • 在智能合约场景中问题更严重:
    • 例如:用户投入资金参与价格预测(如期权/期货);
    • 若用户地址频繁变更,合约无法可靠返还收益给用户;
    • 如果资金投入合约中,若合约账户本身"变了"(如地址不固定),问题更严重。

5. 以太坊的设计取舍

综合权衡后,放弃 比特币基于交易的模型,采用基于账户的模型。目前来看比较适合的,因为以太坊是希望账户比较稳定。如果用户有隐私保护方面的需求,可手动创建多个账户,按不同用途或交易使用不同地址。

相关推荐
栗子~~1 小时前
以太坊-区块链 2.0 相关生态
区块链
公链开发2 小时前
2026年,可信数据空间 × 区块链:构建国家数据基础设施的核心技术底座与实体落地趋势
区块链·postman
DO_Community20 小时前
DigitalOcean携手Persistent达成战略合作,让 AI 更亲民、更易扩展
大数据·人工智能·ai·llm·区块链
AI_菲姐1 天前
未来的 Web3 组织,将从会议开始
大数据·经验分享·web3·去中心化·区块链
MQLYES1 天前
10-BTC-分叉
区块链
旺仔Sec1 天前
2026年中银杯湖北省职业院校技能大赛高职组区块链技术应用任务书
运维·区块链
MQLYES2 天前
09-BTC-比特币脚本
区块链
CryptoPP2 天前
主流国际股票行情API接口横向对比:如何选择适合你的数据源?
大数据·笔记·金融·区块链
公链开发2 天前
2026 GameFi开发实战:从“玩法优先”到香港合规落地,一套可持续链游技术方案
区块链