比特币转账未确认 科学:UTXO未使用的交易输出,比特币的核心概念之一

币种 2周前 (06-23) 11次浏览 0个评论

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

从我 (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 对比特币进行了分析,他认为,“比特币账本可以被认为是一个状态转换系统(m)”。以太坊也采用了这种状态转换系统的设计,但对其进行了改进。

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

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

加深你对UTXO的理解

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

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

你的比特币是 UXTO

比特币挖矿节点获得新区块的挖矿奖励,例如 12.5 个比特币。这时它的钱包地址得到一个UTXO比特币转账未确认,就是这个新区块的币基交易。 (也称为造币交易的输出)。 交易是一种特殊的交易,没有输入,只有输出。

当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。

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

比特币确认_比特币如何确认交易_比特币转账未确认

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

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

我的比特币是什么样的?他们在哪里?

一位刚接触比特币的人问:我的比特币是什么样的?它们存在于哪里?

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

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

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

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

比特币转账未确认_比特币确认_比特币如何确认交易

一方面,您的比特币具有“物理存在”——对应于数据文件。比特币以交易UTXO的形式存在,每一笔交易都可以看成一个数据文件。

另一方面,所有这些交易都被打包成区块链的区块,后一个区块与前一个区块相连,形成一条链,这是一个独特的账本。这样看,你的比特币就是这个账本上的记录。

为什么要用UTXO的形式

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

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

中本聪发明比特币的目标是创建点对点电子现金。 UTXO的设计可以看成是对现金思想的借鉴:我们可以把现金放在这个口袋里,把一些现金放在那个柜子的角落里,这样就没有账户了,你到处放的现金加起来就是你所有的钱。

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

如果使用账户和账户余额设计,Alice 想将钱转给 Bob。为了确保 Alice 确实有钱,我们需要验证她之前的所有交易。随着时间的推移,随着越来越多的比特币交易进行,这种验证的难度会不断上升。

使用UTXO设计,我们只需要一步步检查每笔交易的输入,直到找到比特币创建交易。随着时间的推移,这种验证也会变得更加困难,但速度比帐户和帐户余额设计要慢得多。

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

挖矿网Ethos中文站简单易用的挖矿系统,为挖矿产业提供教程软件以及矿机测评交易信息等,挖矿网各种数字货币挖矿收益对比计算,挖矿网介绍挖矿的工具,以及矿场的最新消息等。http://www.ethospool.com/

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址