本文转载自 TechFlow,作者 Echo、BiHelix(Satoshi Labs),指导洪蜀宁,原文链接:https://www.techflowpost.com/article/detail_15632.html 

UTXO 区块链奠定了当今区块链行业的基础和无可争议的根基。UTXO 技术反映了中本聪对金融终极自由的核心愿景。" UTXO 模型保证了金融活动核心的安全,数据隐私和可扩展性,是对比以太坊账户模型一个更安全的替代品。

区块链原理:UTXO 模型的基础

区块链是一种数字化、去中心化、分布式的账本。区块链利用 P2P(点对点)网络,网络上的参与者称为节点。分类账存储有关交易的数据。区块链,最重要的特征是区块通过加密方式链接在一起。


区块链:以密码方式链接在一起

除了第一个块(称为创世块)之外,区块链中的每个块都包含一个称为 “前一个哈希” 的字段。它是区块链中前一个块的哈希值,也是区块链安全的基础。

决定区块哈希值的因素。如果这四个因素中的任何一个发生变化,即使是 1  位,哈希也会完全改变,这是由于雪崩效应。交易存储在块内,也是改变块哈希的四个因素之一。这意味着如果矿工选择不同的交易并保持其他 4 个因素相同,则哈希值将会不同。

1. 时间戳

2. 区块号:链中当前区块的序号。

3. 数据:存储在区块上的交易。

4. 随机数

如果攻击者试图更改块的数据,则该块的哈希值将发生变化。如前所述,下一个块将保存当前块的哈希值,如果哈希值发生变化,那么链将被破坏。或者,攻击者必须从该点开始再次挖掘所有区块。这是 51% 攻击中的一种可能性。

什么是 “区块”?


区块链中的块存储交易。就比特币而言,区块每 10 分钟就会添加到区块链中,根据目标哈希的复杂性,挖掘新区块的时间可能会有所不同。

  • 当矿工成功开采该区块时,它就会被添加到区块链中。当区块被添加到链上时,区块内所有交易的状态都会从未确认变为已确认。

  • 就比特币而言,一个块内可以存储的交易数量并不固定,但块的平均大小是 1 MB。

  • 空块是有效的,这意味着空块可以被挖掘并添加到链中。

区块链交易结构

剥离单个交易会发现交易中具有不同语义的几种不同结构。以下是交易中存在的不同结构:

交易版本号:它是向网络指定交易类型的版本号。通过交易编号,节点可以确定用于验证该特定交易的规则集。

  1. 输出:交易输出由密码锁和时间组成。

  2. 输入:交易输入由指针和解锁密钥组成。指针指向之前的交易输出。解锁密钥用于解锁输入指向的先前输出。每次通过输入解锁输出时,都会在区块链数据库中将其标记为已用。

  3. 锁定时间:指定交易是否可以立即或在指定时间后包含在区块链中。


UTXO 是所有尚未被输入解锁的输出。

一旦输出被解锁,它们就会从循环供应中移除。新的输出取代了它们。因此,解锁输出的总和将始终等于新创建的输出值的总和。

什么是 UTXO 模型?

UTXO 不是加密货币面额,例如比特币(BTC)的 satoshi 或以太坊(ETH) 的 gwei;然而,UTXO 可以用这些面额来衡量。UTXO 代表未花费的交易输出。在比特币中,交易一直存在,直到它被执行,直到另一笔交易从该 UTXO 完成为止。当交易完成时,未使用的输出将作为输入存回数据库,稍后可用于另一笔交易。

当用户通过钱包发起交易时,包含交易信息的 UTXO 会被定位、解锁,并且新所有者的信息会与转移给他们的 UTXO 相关联。并且该用户可以通过相同的过程在交易中使用它们。随着交易的继续,数据库中将填充所有权变更的记录。输出是用户发送给某人但未花费的加密货币的一部分。它们作为加密货币分数的输入记录到数据库中。

当用户通过钱包发起交易时,包含交易信息的 UTXO 会被定位、解锁,并且新所有者的信息会与转移给他们的 UTXO 相关联。并且该用户可以通过相同的过程在交易中使用它们。随着交易的继续,数据库中将填充所有权变更的记录。输出是用户发送给某人但未花费的加密货币的一部分。它们作为加密货币分数的输入记录到数据库中。


UTXO 是如何创建的?

UTXO 是通过消耗现有 UTXO 创建的。每一笔比特币交易都由输入和输出组成。输入消耗现有的 UTXO,而输出创建新的 UTXO。当决定花费比特币时,我们只能看到已扣除的金额以及钱包中剩余的金额。对于用户来说,这类似于用 1 美元的钞票购买 0.50 美元的商品 — 得到零钱,将其放入口袋中。


UTXO 模型的优势

UTXO 模型不包含协议级别的钱包。它基于分组在块中的单个交易。UTXO 模型是许多加密货币(尤其是比特币)常见的设计。

  • 使用 UTXO 模型的加密货币不使用账户或余额。相反,UTXO 在用户之间转移,就像实物现金一样。

  • UTXO 模型中的每笔交易都可以将系统转变到一个新的状态,但是每笔交易都转变到一个新的状态是不可行的。

  • 网络参与者必须与当前状态保持同步。

区块链中存在的总 UTXO 代表一个集合,并且由每个比特币节点不断维护。

  • 每个事务都会消耗该集合中的元素并创建添加到该集合中的新元素。每次区块链中接受新块时,UTXO 集都会更新,网络中的每个比特币节点都将在其本地存储中设置 UTXO 的精确副本。

  • 完整的 UTXO 集可以相加来计算给定时间点的加密货币的总供应量,在有效的区块链交易的情况下,只有未花费的输出才能用于为进一步的交易提供资金。为了防止双重支出和欺诈,只有未花费的输出才能用于进一步交易的条件是必要的。


UTXO 模型与以太坊账户模型的区别

未使用的交易输出是比特币和其他加密货币背后的分布式数据库技术的一部分。比特币使用 UTXO,但它不是 UTXO。此外,以太坊使用基于账户的方法和账户余额,因此以太坊虚拟机中没有 UTXO。


UTXO 的技术重要性

  • 与语言无关的智能合约:基于 UTXO 的智能合约独立于语言,允许 UTXO 开发独特的共识机制。

  • 支持去中心化交易所和原子交换:UTXO 模型可以支持原子交换,从而无需第三方参与即可实现点对点加密交易。UTXO 的原子交换功能为用户钱包之间的直接加密货币交易提供了更好的便利。

  • 可扩展性优势:设施或并行事务处理减少了区块链网络上的计算负载。

  • 隐私和安全:每笔 UTXO 交易都使用新地址,因此无法跟踪交易。

  • 防止双重支出:UTXO 只能使用一次,这是区块链技术运行的基础,可保证货币不会被多次使用。

  • 更灵活:它比法定货币提供更大的灵活性。

  • 简单并行化:它允许智能合约中交易的更简单并行化。

UTXO 模型用于许多加密货币,因为它允许用户跟踪该加密货币所有部分的所有权。由于加密货币在创建时考虑了匿名性,因此 UTXO 与整个网络可见的公共地址相关联。

除非用户公布其地址,否则无法通过其所有权来识别用户,但该模型允许通过地址实现透明度。

UTXO 用例:RGB 的链下转移方案

RGB 协议的核心理念是,仅在必要时调用比特币区块链,也就是利用工作量证明和网络的去中心化来实现重复花费保护和抗审查性。所有代币转移的验证工作从全局共识层中移除,放在链下,仅由接收支付的一方客户端验证。


工作原理

在 RGB 的某个合约中,创世代币都归属于一个比特币的 UTXO(无论是已经存在的,还是临时创建的),而为了转移代币,你需要花费此 UTXO。在花费这个 UTXO 的时候,比特币交易必须额外添加一个输出,该输出包含对一条消息的承诺,这条消息的内容就是 RGB 的支付信息,它定义了输入,这些代币将被发送到哪个 UTXO,资产的 id,数量,花费的交易以及它需要附加的数据。

注:比特币一层资产发行协议 RGB++ 也利用了 UTXO 作为一次性密封,且已于 4 月初上线主网,点此了解 RGB++ 的更多知识。

总结

UTXO 的本质其实是一种流水记账:通过 UTXO 模型检验交易资金存不存在,然后追溯这笔交易的源头,确定无误后通过共识机制进行全网广播,记录到链上。整个过程中,UTXO 会把牵扯到的账户资金、交易地址,转账资金、资金来源等信息全部记下,从而能够追踪到每一笔交易的最初来源,也正是基于这个特点,UTXO 可以和共识机制一起解决双花问题。

总的来说,UTXO 不仅可以协助共识机制,解决区块链双花问题,赋予了区块链可追溯的特点,区块链也能以此为基础,保证每笔交易的真实与可靠。