主页 > imtoken钱包华为手机安装不了 > UTXO:未使用的交易输出,比特币的核心概念之一

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

比特币系统没有“账户”,只有“地址”。你可以在比特币区块链上打开任意数量的钱包地址,你拥有的比特币数量是你所有钱包地址中比特币的总和。比特币系统不会帮助您将这些地址汇总到您的帐户中。

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

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

让我们看一下两个人之间的转账交易的过程,以更深入地了解UTXO:

假设我有 8 个比特币,这实际上意味着之前有一笔交易把这些比特币转移到我的地址,这笔交易的输出(即 8 个比特币)是未使用的,而我拥有这 8 个比特币。

现在,我将启动一个转账交易,其中该交易的输入是允许我拥有这些比特币的最后一笔交易。

我想给你转账,我要做的是,签署让我拥有这8个比特币的最后一笔交易,并将这笔新转账交易的输出地址设置为你的钱包地址。

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

交易签名中涉及的比特币公钥和私钥的非对称加密机制将在后面讨论。为了便于理解和类比,钱包地址相当于房间号和锁,私钥相当于钥匙,可以打开对应的锁。

以上两人的转账交易流程为:我使用私钥(从输出为我地址的一笔交易中)提取比特币,并使用私钥对从我的地址转账到你的地址新的交易是签。交易完成后,比特币会转到您的钱包地址。您钱包中只有您的私钥才能打开的新交易的未使用交易输出。

从上面的讨论我们可以看出,真的没有比特币,只有未使用的交易输出(UTXO)。每个比特币都源自之前的交易,并且可以一直追溯。一路回溯,在每一个比特币的源头,都有一个特殊的交易,就是比特币矿工挖矿得到奖励,每一个比特币都是通过挖矿创造出来的。假设我作为比特币矿工成功挖了 25 个比特币,那么这个特定的交易就是它的输入是 0,输出是 25 个比特币到矿工的钱包地址。

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

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

如果我使用传统的账户设计比特币的概念,当我想转出8个比特币时,为了完全避免欺诈,我们需要一一回过头来确认之前的每一笔交易,以证明我确实有8个比特币。

使用当前的 UTXO 设计,要确认我拥有 8 个比特币,只需确认我确实在最后一笔交易中获得了它们。通常,只要最后一笔交易是真实的,我就拥有这些比特币。而且我们都知道,一个区块经过6次确认后,里面的交易就可以认为是真实无误的。

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

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

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

几乎所有的区块链都使用这种设计,每个新区块与之前的所有区块形成一个新状态,以此类推。确认后,之前的状态不可篡改,即不可随意更改。 UTXO(未使用的交易输出)被设计为对应这种状态。

加深对UTXO的理解

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

参考文献:《区块链:技术驱动金融》中的对应讨论,以及文章《比特币与以太坊的记账方法——UTXO与账户余额》(黄士良/文)。

你的比特币是 UXTO

比特币的挖矿节点获得一个新区块的挖矿奖励,比如12.5个比特币,此时,它获得的钱包地址是一个UTXO,是币基交易的输出这个新区块的(也称为硬币创建交易)。 coinbase 交易是一种特殊的交易,没有输入,只有输出。

当A想将比特币转给B时,过程是用私钥对A钱包地址中的前一个UTXO进行签名,然后发送到B地址。这个过程是一个新的交易,B得到的是一个新的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。

比特币转账的三个阶段

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

这些存储在 Bob 钱包地址中的比特币只能用 Bob 的私钥签名并转移给其他人。

如果 Bob 想将这些比特币转给其他人,如果你是个人,重复上述过程。

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

我的比特币是什么样的?它们存储在哪里

第一次使用比特币的人问:我的比特币是什么样的?它们存储在哪里?

如果您的参考是在现实世界中购买金币比特币的概念,那么这里就大不相同了,您的比特币没有存储在您的家中或保险库中,没有代表“您的比特币”的数字文件。

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

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

我们也可以换个角度来看,你的比特币在哪里?如前所述,比特币是UTXO,那么比特币可以看作是物理世界金币和银行存款这两个概念的混合体:

为什么使用 UTXO

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

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

中本聪发明比特币的目标是创建点对点电子现金。 UTXO的设计可以看作是对现金理念的参考:我们可以在这个口袋里装饰现金,在那个柜子的角落里放一些现金,在这种情况下没有账户,你放的现金到处都是你所有的钱。

使用 UTXO 设计还有一个技术原因,这种特殊的数据结构使得双花更容易验证。对比:

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