共读《精通比特币》第15天——第5章5.3 交易结构5.4.1 交易输出

做你认为对的事,然后坚持,我相信积累,是笨拙的智慧。只有不敢去的前方,没有到不了的远方。——《明日之子》

共读《精通比特币》第15天——第5章5.3 交易结构5.4.1 交易输出_第1张图片

有人说:比特币底层技术区块链,是最伟大的发明,堪比互联网。
也有人说:比特币白给我都不要。
到底比特币是什么?如何判断?难道我们能做的就是人云亦云?
如何能有自己的独立判断?

让我们一起《精通比特币》,走向数字货币新旅程,这本书就能帮助您全面了解比特币,而且有助于理解其他数字货币。

正如书中前言所说:

无论你是正在构建下一个杀手级应用、投资创业,还是单纯对技术好奇,这本实用的书都是你不可或缺的阅读材料。
《精通比特币》这本书会让每位读者深刻理解比特币的工作原理,还会帮助读者为写出下一代神奇加密货币的应用程序做好充分准备。”

每天早上10:24发文,欢迎关注支持,一起加油!

《精通比特币》一书,英文原名为Mastering Bitcoin ,国内译做《精通比特币》。本书第五章中英文电子版链接如下,点击蓝色字可跳转阅读:

  1. 英文原版:Mastering Bitcoin
  2. 知笔墨中文版,第5章 交易

今天我们一起来读《精通比特币》一书的 第5章 交易5.3 交易结构5.4 交易的输出和输入。

共读《精通比特币》第15天——第5章5.3 交易结构5.4.1 交易输出_第2张图片

5.3 交易结构

一笔比特币交易,是一个含有输入值和输出值的数据结构,该数据结构植入了将一笔资金从初始点,转移至目标地址的代码信息。

一笔比特币交易,包含以下数据字段:

共读《精通比特币》第15天——第5章5.3 交易结构5.4.1 交易输出_第3张图片

5.4 交易的输出和输入

共读《精通比特币》第15天——第5章5.3 交易结构5.4.1 交易输出_第4张图片

请注意:在比特币的世界里既没有账户,也没有余额,只有分散到区块链里的UTXO。

比特币交易的输入值和输出值,与账号或者身份信息无关。

我们可以将它们理解成一种,被特定秘密信息锁定的一定数量的比特币,这些比特币,有且仅有拥有者或知晓这个秘密信息的人可以解锁。

比特币交易的基本单位,是未经使用的一个交易输出,简称UTXO。

实际上,并不存在储存比特币地址或账户余额的地点,只有被所有者锁住的、分散的UTXO。

UTXO,是不能再分割、被所有者锁住,或记录于区块链中的一定量的比特币货币,这些比特币货币,被整个网络识别成货币单位。

比特币网络,监测着以百万为单位的所有可用的UTXO。这些可用的UTXO,也就是未花费的UTXO。

当一个用户接收比特币时,金额被当作UTXO数据,而记录到区块链里。

这样,一个用户的比特币会被当作UTXO,分散到数百个交易和数百个区块中。

“一个用户的比特币余额”,这个概念,是一个通过比特币钱包应用创建的派生之物。

比特币钱包。通过扫描区块链,并聚合所有属于该用户的UTXO,来计算该用户的余额。


就像美元可以被分割成表示两位小数的“分”一样,比特币可以被分割成表示八位小数的“聪”。一个UTXO,可以是一“聪”的任意倍。

尽管UTXO可以是任意值,但只要它被创造出来了,就不可再分。

打个不恰当的比喻,这就像最小面额的硬币不可再分一样,在现实生活中我们不能把最小面额的硬币切成两半来使用。UTXO,只要它被创造出来了,也不可再分。

为方便大家理解,我又思考了一个更为恰当的比喻:一个UTXO,只要它被创造出来了,就象一张纸币一样被创造出来了,只不过他是千奇百怪的不同的面额。

那么,有可能你的一个UTXO,包含着20比特币。你在一次交易过程中,你的这个UTXO,比你将要产生的一笔交易所需的量要大很多,但它仍会被当作一个整体而消耗掉,同时会在交易中生成零头。就象纸币不能撕成十份使用,只能一次性的付出,然后收回找零。

用户的钱包应用,通常会从用户可用的UTXO中,选取多个可用的个体,来拼凑出一个大于或等于一笔交易所需的比特币量。

想象一下,我们在现实生活中要买一瓶饮料,要花掉1.5元。我们会掏出钱包,并努力从所有硬币和钞票中,找出一种组合来凑齐要支付的1.5元。

如果可能的话,我们会选刚刚好的零钱(比如一张1元纸币和5个一毛硬币)或者是小面额的组合(比如3个五毛硬币)。

如果都不行的话,我们就会用一张大面额的钞票,比如5元纸币,给商店老板,这样我们会拿到3.5元的找零,并把找零放回钱包,以供未来使用。

类似的,一笔比特币交易,可以有任意数值,但必须从用户可用的UTXO中创建出来。

由于用户不能再把UTXO进一步细分,就像不能把一元纸币撕开而继续当货币使用一样。

用户的钱包应用,通常会从用户可用的UTXO中,选取多个可用的个体来拼凑出一个大于或等于一笔交易所需的比特币量。

就像现实生活中一样,比特币应用,可以使用一些策略来满足付款需要:
组合若干小的个体,算出准确的找零;
或者使用一个比交易值大的个体然后进行找零。
所有这些复杂的、由可支付的UTXO完成的组合,都是由用户的钱包自动完成,并不为用户所见。
只有当你以编程方式用UTXO来构建原始交易时,这些才与你有关。

被交易消耗的UTXO被称为交易输入,由交易创建的UTXO被称为交易输出。通过这种方式,一定量的比特币价值在不同所有者之间转移,并在交易链中消耗和创建UTXO。一笔比特币交易通过使用所有者的签名来解锁UTXO,并通过使用新的所有者的比特币地址来锁定并创建UTXO。

对于输出和输入链来说,有一个例外,它是一种特殊的交易类型,称为Coinbase交易。
Coinbase交易,是每个区块中的首个交易。
这种交易存在的原因,是作为对挖矿的奖励而产生全新的可用于支付的比特币给“赢家”矿工。
这也就是为什么比特币可以在挖矿过程中被创造出来,我们将在第8章中进行详述。

5.4.1 交易输出

每一笔比特币交易创造输出,输出都会被比特币账簿记录下来。除特例之外,几乎所有的输出,都能创造一定数量的可用于支付的比特币,也就是UTXO。
这些UTXO被整个网络识别,并且所有者可在未来的交易中使用它们。
给某人发送比特币,实际上是创造新的UTXO,注册到那个人的地址,并且能被他用于新的支付。

交易输出包含两部分:

  1. 一定量的比特币,被命名为“聪”,是最小的比特币单位;
  2. 一个锁定脚本,也被当作是“障碍”,提出支付输出所必须被满足的条件以“锁住”这笔总额。

我们使用blockchain.info应用程序接口,来查找特定地址的UTXO,书中给出了相应的程序代码。

  • 例5-1 一个调用blockchain.info应用程序接口来查找与一个地址有关的UTXO的脚本(程序代码省略)

  • 例5-2 运行 get-utxo.py脚本(程序代码省略)

  • 支付条件(障碍)

当Alice在Bob的咖啡店为一杯咖啡付款时,Alice的交易创造了0.015比特币的输出。
这个0.015比特币的输出,被锁在了咖啡店的比特币地址上。
0.015比特币输出,会被记录到区块链中,并且成为UTXO的一部分,也就是作为可用余额,出现在Bob的钱包里。
当Bob选择使用这笔款项进行支付时,他的交易会释放障碍,通过提供一个包含Bob私钥的解锁脚本来解锁输出。


第五章全部内容思维导图如下:

共读《精通比特币》第15天——第5章5.3 交易结构5.4.1 交易输出_第5张图片

《第5章交易》第5章5.3 交易结构、5.4.1 交易输出,这两节内容到此结束,明天我们开始《5.4.2 交易输入》的学习。

今天就到这里吧,明天我们继续,祝大家夏天快乐!

282/365
20180812首发


参考文献:

1、 知笔墨《精通比特币》中文版——第5章 交易

2、爱莉莎:【区块链科普——课表放这里】

3、比特币白皮书原版:Bitcoin: A Peer-to-Peer Electronic Cash System

4、比特币白皮书——巴比特网站中译版

5、Scalers:《比特币白皮书解析 | 从零开始区块链》a

照搬的信念,无法抵御波动的冲击,只有行动铸就的思想体系,并在行进中不断修正,才能让我们不断变得更好。——Scalers《投资赚钱就是信念变现》

你可能感兴趣的:(共读《精通比特币》第15天——第5章5.3 交易结构5.4.1 交易输出)