Pre:
What is Unspent Transaction Output (UTXO)?,学习记录。
-
区块链是一种数字化、去中心化的分布式账本。
-
区块链利用 P2P(点对点)网络,网络上的参与者被称为节点。
-
账本中存储有关交易的数据。
-
它是一个由区块组成的链,其中最显着的特征是区块以密码学的方式链接在一起。
以密码学的方式链接在一起:
-
除了第一个块(称为创世块)之外,区块链中的每个块都包含一个称为前一个哈希的字段。它是链中前一个块的哈希。这使得区块链非常安全。
-
如果攻击者试图改变一个区块的数据,该区块的哈希值将会改变,如前所述,下一个区块将持有当前区块的哈希值,如果哈希值改变,则链将被破坏。或者,攻击者必须从那时起再次挖掘所有块。这是 51% 攻击的可能性。
什么是块?
区块链中的块存储着交易信息。
例如比特币,区块每 10 分钟添加到区块链中,根据目标哈希的复杂性,这可能会随着挖掘新块的时间而变化。
-
当矿工成功开采区块时,它会被添加到区块链中。
-
当区块被添加到链上时,区块内所有交易的状态都会从未确认变为已确认。
-
例如比特币,可以存储在一个块内的交易数量不是固定的,但是块的最大大小设置为大约 1 MB,块大小可以略小于1 MB。
-
空块是有效的,这意味着可以挖掘空块并将其添加到链中。
交易:
分解交易中存在的不同结构:
-
交易版本号:它是指定网络交易类型的版本号。通过交易编号,节点可以确定用于验证该特定交易的规则集。
-
输出:交易输出由密码锁和时间组成。
-
输入:交易输入由指针和解锁密钥组成。指针指向前一个交易输出。解锁密钥用于解锁输入指向的先前输出。每次输出被输入解锁时,它都会在区块链数据库中标记为已用。
-
锁定时间:它指定交易是可以立即包含在区块链中还是在某个指定时间后包含在区块链中。
UTXO is all those outputs that are yet to be unlocked by an input.
UTXO 是所有尚未被输入解锁的输出。
一旦一个输出被解锁,它们就会从循环供应中移除。新的输出取而代之。
因此,未锁定输出的总和将始终等于新创建的输出的值的总和。
什么是UTXO?
在比特币中,交易一直存在,直到它被执行:另一笔交易消费掉其UTXO。
UTXO 代表未使用的交易输出
-
它是某人在执行交易后剩余的数字货币数量。
-
交易完成后,未使用的输出将作为输入存回数据库,稍后可用于另一笔交易。
UTXO 是如何创建的?
UTXO
是通过使用现有的 UTXO 创建的。
每笔比特币交易都由输入和输出组成。
输入消耗一个现有的UTXO
,而输出创建一个新的 UTXO
。
UTXO 模型
它基于由block组成的一个个交易。
UTXO 模型是许多加密货币通用的设计,最引人注目的是比特币。
-
使用 UTXO 模型的加密货币不使用账户或余额。相反,UTXO 就像实物现金一样在用户之间转移。
-
UTXO 模型中的每个事务都可以将系统转换到一个新状态,但是每个事务都转换到一个新状态是不可行的。
-
网络参与者必须与当前状态保持同步。
举个栗子:
-
假设从交易中收到以下比特币。这些交易中的每一个都是一个 UTXO。
-
现在我想买一辆
0.5 BTC
的车。 -
为了转移
0.5 BTC
,需要选择一笔或多笔交易作为输入。 -
这就是为什么比特币交易不同于银行,在银行的情况下,一个人会输入
0.5 BTC
的金额,按下转账,它会转到卖方,但比特币的情况并非如此,这里需要选择一个或多个UTXO作为输入。 -
对于加密货币,您的账户中不存在金额。
-
让我们选择 Sarah 的
0.7 BTC
作为购买汽车的输入。
-
在UTXO的情况下,输入的金额不能闲置,不能说剩下的
0.2 BTC
什么都不做。 -
剩余的
0.2 BTC
,必须以下列 3 种方式之一使用-
-
就像我们在上图中所做的那样,将剩余的金额发送回您的帐户。
-
使用剩余金额作为交易费用。请记住,应该有一些交易费用,否则没有矿工将您的交易添加到阻止,并且它将保持未确认状态。
-
将剩余金额发送给其他人。
-
0.5 BTC
已发送至卖家但未添加任何费用,交易未确认,72 小时后退回0.7 BTC
。 -
所以为了给卖家汇款,让我们把这
0.2 BTC
作为这笔交易的费用。 -
提供交易手续费,无需提及,如果您没有将剩余金额发送给任何人,则视为交易手续费。
-
现在已经添加了交易费用,矿工将这笔交易包含在区块中,随后获得了 0.2 BTC 作为交易费用。
-
让我们再看看我们原来的 UTXO。
-
Sarah 的 UTXO 已经不存在了,UTXO 只存在到没有从它那里完成另一笔交易,但现在它已经用于另一笔交易,即购买汽车。
-
交易存储在一个区块内,也是改变区块哈希的四个因素之一。这意味着如果矿工选择不同的交易保持其他 4 个因素相同,则哈希将不同。
-
决定区块哈希的因素
-
时间戳
-
区块号:是当前区块在链中的序号。
-
数据:存储在区块上的交易。
-
随机数
-
如果这四个因素中的任何一个发生了变化,则哈希完全改变,这是由于雪崩效应。
UTXO集合
区块链中存在的总 UTXO 代表一个集合,并且由每个比特币节点不断维护。
-
每个交易都使用该集合中的元素并创建添加到该集合中的新元素。
-
因此,该集合代表特定加密货币系统中的所有硬币。
-
每次在区块链中接受新块时,都会更新 UTXO 集合。
-
网络中的每个比特币节点都将在其本地存储中设置 UTXO 的精确副本。
-
可以对完整的 UTXO 集合求和,以计算给定时间点加密货币的总供应量。
-
在有效的区块链交易的情况下,只有未使用的输出可用于资助进一步的交易。
-
只有未使用的输出可以用于进一步交易的条件是防止双重支出和欺诈的必要条件。
UTXO 模型的重要性
-
与语言无关的智能合约
:基于 UTXO 的智能合约独立于语言,允许 UTXO 开发独特的共识机制。 -
支持去中心化交易所和原子交换
: UTXO 模型可以支持原子交换,因此无需第三方参与即可实现点对点加密交易。UTXO 的原子交换功能为用户钱包之间的直接加密货币交易提供了更好的便利。 -
可扩展性优势
:设施或并行事务处理减少了区块链网络上的计算负载。 -
隐私和安全
:每笔 UTXO 交易都使用新地址,因此无法跟踪交易。 -
防止双重支出
:一个 UTXO 只能使用一次,这是区块链技术运行的基础,保证货币不会被多次使用。 -
更灵活
:它提供比法定货币更大的灵活性。 -
简单并行化
:它允许智能合约中更简单的交易并行化。