# 区块链应试笔记 第四 UTXO与以太坊account

By [InfinitePlus](https://paragraph.com/@infiniteplus) · 2022-10-25

---

### 一、UTXO

比特币的单位是一聪（Satoshi），为10的8次方，UTXO必须为它的整数倍

coinbase交易为挖矿交易，它没有输入

比特币有两种节点：全节点和轻节点

在点对点的网络中，节点的角色既是交易者，也是消费者

**1.定义**

UTXO（Unspentransaction outputs）未花费交易输出

**2.交易过程**

每次交易，完全消耗之前交易生成的UTXO，生成新的UTXO；

在交易前后，UTXO的数量可能增多可能减少；

UTXO是无法被分割的，只能够被消耗；

可以通过UTXO一直向前追溯，直到挖矿（coinbase交易）

UTXO的账户余额=所有属于该地址的未花费UTXO集合

**3.UTXO结构**

交易输入包含：UTXO的来源+解锁脚本

交易输出包含：UTXO的币值+锁定脚本

交易包含：交易输入+交易输出+哈希（数字签名）

**4.UTXO的优点**

匿名性

UTXO是独立的数据结构，利于并行处理，交易本身是无状态的

交易易于验证无法被重放

**5.UTXO缺点**

可编程性差，无法实现复杂的逻辑

当输入Input较多时，见证脚本也会增多，消耗CPU和存储空间

### 二、以太坊的Account模型

链的状态在区块中以StateRoot和 ReceiptRoot等形式进行共识

账户分为外部账户（EOA）和合约账户

**1.优点**

账户自身拥有状态，更利于编程

批量交易的成本较低

**2.缺点**

账户的状态与交易没有依赖性，需要解决重放问题

Account模型的重放问题，ETH引入 nounce来解决，每笔交易对应一个 nounce，随着交易依次递增

ETH用户发送多笔交易，如果第一笔交易打包失败，将引起后续多笔交易都打包不成功

### 三、两者比较

1.Bitcoin本身的交易多为**P2SH**，且Witness Script是**非图灵完备的，不存在循环语句，计算简单**

ETH则为图灵完备，计算复杂

2.UTXO中，只能在**交易中**保存状态

ETH中，状态保存在**节点中**

3.UTXO计算在链外

ETH计算多在链上

习题

1.比特币交易中，任何一笔交易的交易输入总量与交易输出总量的关系是？

A 等于

B 大于

C 小于

D 无关

2.“双花”指的是在数字货币系统中由于数据的（），使得系统可能存在同一笔数字资产因不当操作而被重复使用的情况

A 多样性

B 可复制性

C 差异性

D 随机性

3.Bitcoin本身的交易多为P2SH，且Witness Script是（），不存在循环语句

A 非图灵完备的

B 图灵完备的

C 跳转脚本

D 单循环脚本

4.Account模型每一笔交易都只需要（），交易的输入和输出都是地址，能够节省存储空间

A 一个私钥

B 一个公钥

C 一个签名

D 一个网址

5.在Ethereum中，用户发送多笔交易如果第一笔交易打包失败，将引起（）

A 没有影响

B 后续多笔交易都打包不成功

C 后续一笔交易打包不成功

D 系统崩溃

6.UTXO模型中，只能在（）保存状态

A 交易中

B 交易前

C 交易后

D 节点

7.Account模型的状态是在（）保存

A 交易中

B 交易前

C 交易后

D 节点

8.UTXO是（）的，只能被消耗掉

A 不能减少

B 不能增加

C 不能生成

D 不能分割

9.每笔交易的输入和输出都是有关系的，可以通过（）不停往前追溯，直到挖矿

A Account

B UTXO

C HASH

D SIGNATURE

参考：

[https://wiki.mbalib.com/wiki/%E5%8F%8C%E8%8A%B1%E9%97%AE%E9%A2%98](https://wiki.mbalib.com/wiki/%E5%8F%8C%E8%8A%B1%E9%97%AE%E9%A2%98)

[https://codeantenna.com/a/HOxalU76mm](https://codeantenna.com/a/HOxalU76mm)

[https://zhuanlan.zhihu.com/p/57272282](https://zhuanlan.zhihu.com/p/57272282)

---

*Originally published on [InfinitePlus](https://paragraph.com/@infiniteplus/utxo-account)*
