主页 > 最新imtoken官网下载地址 > 04. UTXO:未使用的交易输出,比特币的核心概念之一

04. UTXO:未使用的交易输出,比特币的核心概念之一

最新imtoken官网下载地址 2023-08-16 05:12:27

在比特币系统中,其实没有“账户”,只有“地址”。 只要你愿意,你可以在比特币区块链上开无限个钱包地址,你拥有的比特币数量是你所有钱包地址中比特币的总和。 比特币系统不会帮助你聚合这些地址来形成你的账户。

从我 (A) 到你 (B) 的比特币转账是从我的一个钱包地址到你的一个钱包地址。

下面的讨论涉及比特币系统的一个关键技术细节:UTXO(未花费的交易输出)。 代币经济专家孟岩曾写过一篇题为《其实没有比特币,只有UTXO》的文章。 这个标题指出了比特币对于计算机的意义——比特币是区块链账本输出上的交易。

让我们看一下两人之间一笔转账交易的过程,深入理解UTXO:

假设我有8个比特币,这实际上意味着之前有一笔交易将这些比特币转入我的地址,这次交易的输出(即8个比特币)没有被使用,我拥有这8个比特币。

现在,我要发起一个转账交易,输入是之前给我这些比特币的交易。

我要转账给你,我做的是,我在之前给了我这8个比特币的交易上签名,并将这个新的转账交易的输出地址设置为你的钱包地址。

就这样,我发起了一笔转账支付交易。 当矿工将这笔交易打包成一个新的区块,转账交易完成后,这8个比特币就属于你了。 你拥有的是你我这笔交易未花费的交易输出。

比特币UTXO模型特点_比特币区块和比特币的区别_比特币之父能不能随意制造比特币

比特币的公钥和私钥参与交易签名的非对称加密机制,后面会讲到。 为了便于理解,可以类比来看。 钱包地址相当于房号和锁,私钥相当于钥匙。 钥匙可以打开相应的锁。

上面两个人的转账交易过程是:我用私钥(从一个输出是我地址的交易中)取出比特币,用私钥从我的地址到你的地址签署一笔新的交易。 交易完成后,这些比特币将转移到您的钱包地址。 您钱包中新交易未花费的交易输出,只有您的私钥才能打开。

从上面的讨论我们可以看出,确实没有比特币,只有未花费的交易输出(UTXO)。 每一个比特币都起源于之前的交易,并且可以一路向上追溯。 而一路往上追溯,在每一枚比特币的源头,都有一个特殊的交易,即比特币矿工挖矿获得奖励的造币交易,每一枚比特币都是通过挖矿创造出来的。 假设我作为比特币矿工成功开采了 25 个比特币,那么这个特定交易的输入为 0,输出为 25 个比特币到矿工的钱包地址。

未花费的交易输出(UTXO)与我们熟悉的银行账户有很大的不同。 为什么要这样设计? 对比银行账户的UTXO和比特币,我们可以看出UTXO的优势。

1)UTXO设计易于确认比特币的所有权

如果采用传统的账户设计比特币UTXO模型特点,当我要转8个比特币时,为了彻底避免欺诈,我们需要一个一个地回溯确认之前的每一笔交易,从而证明我确实有8个比特币。

按照目前的 UTXO 设计,要确认我拥有 8 个比特币,我只需要确认我在上次交易中确实得到了它们。 通常只要最后一笔交易是真实的,我就拥有那些比特币。 而我们都知道,一个区块经过6次确认后,里面的交易才算真实无误。

2)UTXO设计和区块链账本完全集成

比特币之父能不能随意制造比特币_比特币区块和比特币的区别_比特币UTXO模型特点

区块链分类帐存储状态。 以太坊是对比特币区块链的改进。 在白皮书中,以太坊创始人Vitalik对比特币进行了分析。 他认为“比特币账本可以被视为一种状态转换系统”。 以太坊也采用了这种状态转换系统的设计,但对其进行了改进。

从微观上看,区块链中的每一笔交易都是一个状态转换函数。 以太坊白皮书使用“以太坊状态转换函数”来讨论区块链上一笔交易的过程。

几乎所有的区块链都采用这种设计,每一个新的区块与它之前的所有区块形成一个新的状态,并不断重复和继续。 确认后,之前的状态是不可篡改的,即不能随意改变。 UTXO(unspent transaction output)对应这个状态的设计。

加深对UTXO的理解

UTXO是unspent transaction outputs(未使用的交易输出)的缩写。 每一个比特币其实都是UTXO,这是比特币的核心概念之一。

参考资料:《区块链:技术驱动金融》中的相应论述,以及《比特币和以太坊记账方法——UTXO和账户余额》一文(黄世亮/文)。 你的比特币是 UXTO

比特币挖矿节点获得新区块的挖矿奖励,如12.5个比特币。 这时它的钱包地址得到一个UTXO,就是这个新区块的基于币的交易(也叫造币交易)的输出。 . Coinbase交易是一种特殊的交易,它没有输入,只有输出。

当A要转一笔比特币给B时,流程是用私钥在A的钱包地址中签名一个UTXO,然后发送到B的地址。 这个过程是一笔新的交易,B拿到的是一个新的UTXO。

比特币区块和比特币的区别_比特币UTXO模型特点_比特币之父能不能随意制造比特币

这就是为什么有人说这个世界上没有比特币,只有UTXO,而你地址中的比特币指的是未花费的交易输出。

详细看A转账到B的流程

假设A(Alice)向B(Bob)转账,转账过程可以分为三个阶段(见图1):

1)假设Alice之前通过挖矿获得了12.5个比特币,在她的地址中,这些比特币是一个币本位交易的UTXO。

2)Alice发起一笔交易,输入是她的最后一笔交易,输出是Bob的地址,金额是12.5个比特币,Alice用她的私钥对交易进行签名。

这里简化了交易流程,只讨论转移上一笔交易的所有输出的情况。 如果你试图转移之前交易的一部分输出,你需要做一个稍微复杂的过程。

根据比特币系统的设计,比特币交易必须遵循一个原则:每笔交易的输入值必须全部花掉,不能只花掉一部分。 比如我要转比特币到你的钱包地址,只有8个比特币,所以很简单,我发起一个交易,把这8个比特币转入你的钱包地址,我签字确认交易。 但是如果我的钱包地址里有25个比特币,那么我发起的交易不是给你转8个比特币,然后我的钱包地址里还剩下17个比特币。 此时我发起的交易是:从我的钱包地址转8个比特币给你,同时转17个比特币到我的同一个地址。

3) 当交易被区块链确认后,Alice 的 UTXO 变为 0。Bob 的地址中,多了一个 UTXO,数量为 12.5。

比特币UTXO模型特点_比特币之父能不能随意制造比特币_比特币区块和比特币的区别

比特币UTXO模型特点_比特币区块和比特币的区别_比特币之父能不能随意制造比特币

图 1:比特币转账的三个阶段

存放在 Bob 钱包地址中的比特币,只能用 Bob 的私钥签名并转给他人。

如果 Bob 要将这些比特币转给其他人,则重复上述过程。

简单来说,比特币从一个地址转移到另一个地址的过程就是用这个地址对应的私钥打开,然后加密到另一个地址。 这个私钥的开启和加密就是签名的过程。 在这个过程中比特币UTXO模型特点,接收比特币的一方不需要使用自己的私钥。

我的比特币是什么样的?它们存在于何处

刚接触比特币的人会问:我的比特币长什么样? 它们存在于何处?

如果你的心理参考是在现实世界中购买金币,那么这里就很不一样了,你的比特币不存储在你的家里或金库中,没有代表“你的比特币”的数字文件。

比特币区块和比特币的区别_比特币之父能不能随意制造比特币_比特币UTXO模型特点

如果您在脑海中指的是银行存款,那么您可以假设您的比特币“存在”在账本上。 我们已经知道,在数字世界中,价值是账本中的“记录”。

不同的是,对于比特币来说,这个账本不是银行的中央数据库。 比特币的账本是存在于去中心化网络上的分布式账本。 任何人都可以访问这个网络并下载这个分类账。 但是,您地址中的比特币只能使用您的私钥进行消费。

我们也可以换个角度来看,你的比特币呢? 上面说了比特币是UTXO,那么比特币可以看成是以上物理世界金币和银行存款两个概念的混合体:

为什么采用UTXO的形式

UTXO 与我们熟悉的账户概念有很大的不同。 我们每天接触最多的就是账号。 比如我在银行开户,账户里的余额就是我的钱。

但是比特币网络没有账户的概念,你可以有多个钱包地址,每个钱包地址有多个UTXO,你的钱就是所有这些地址中UTXO的总和。

中本聪发明比特币的目的是创造一种点对点的电子现金。 UTXO的设计可以看成是参考了现金的思路:我们可能会把现金放在这个口袋里,在柜子的角落放一些现金。 在这种情况下,没有账户,你到处都有的现金加起来就是你所有的钱。

采用 UTXO 设计还有一个技术原因。 这种特殊的数据结构可以让双花更容易验证。 相比:

这种设计使得比特币系统作为电子现金系统具有很强的可扩展性。 当然,我们很快就会看到,被普遍认为是区块链2.0的以太坊并没有继续采用UTXO设计,而是考虑到其他因素,采用了账户余额设计,而中本聪可能为此付出的代价考虑到复杂性。