区块链鼻祖比特币之4:独特交易设计

Posted 尹成

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链鼻祖比特币之4:独特交易设计相关的知识,希望对你有一定的参考价值。

 

在上面的一个简单的交易中,我们通过数字签名解决了消息是谁发出的。我们没有考虑一个问题,那就是如果尹成是个屌丝,他根本就没有5个BTC怎么办?也许你很容易就想到了,验证一下他的账户中的余额是不是大于5BTC不就可以了吗?但是比特币中其实没有账户余额的概念,而只有交易,每个人都有历史的所有的交易。

 

某人的收入并且没有的花费的所有交易:

抽象:

 

对于小郑来说,我有尹成的所有历史交易记录,所以我会知道他曾经收到过两笔款7.0BTC,并且没有支付出去,这个时候,小郑当然就知道,尹成的钱是够的,我可以放心的把我的牛交换给他。

一笔特殊的交易,找零给自己,所以输出的地址为自己的:

交易链:

比特币交易的基本单位是未经使用的一个交易输出,简称 UTXOUTXO 不能再分割、被所有者锁住或记录于区块链中的并被整个网络识别成货币单位的一定量的比特币货币。比特币网络监测着以百万为单位的所有可用的(未花费的)UTXO。当一个用户接收比特币时,金额被当作 UTXO 记录到区块链里。这样,一个用户的比特币会被当作 UTXO 分散到数百个交易和数百个区块中。实际上,并不存在储存比特币地址或账户余额的地点,只有被所有者锁住的、分散的UTXO一个用户的比特币余额,这个概念是一个通过比特币钱包应用创建的派生之物。比特币钱包通过扫描区块链并聚合所有属于该用户的 UTXO 来计算该用户的余额。在比特币的世界里既没有账户,也没有余额,只有分散到区块链里的UTXO。一个 UTXO 可以是一的任意倍。就像美元可以被分割成表示两位小数的一样,比特币可以被分割成表示八位小数的尽管 UTXO 可以是任意值,但只要它被创造出来了,就像不能被切成两半的硬币一样不可再分了。如果一个 UTXO 比一笔交易所需量大,它仍会被当作一个整体而消耗掉,但同时会在交易中生成零头。例如,你有20 比特币的 UTXO 并且想支付 1 比特币,那么你的交易必须消耗掉整个20 比特币的 UTXO 并且产生两个输出:一个是支付了 1 比特币给接收人,另一个是支付 19 比特币的找零到你的钱包。这样的话,大部分比特币交易都会产生找零。想象一下,一位顾客要买 1.5 元的饮料。她掏出她的钱包并努力从所有硬币和钞票中找出一种组合来凑齐她要支付的 1.5 元。如果可能的话,她会选刚刚好的零钱(比如一张 1 元纸币和 5 个一毛硬币)或者是小面额的组合(比如 3 五毛硬币)。如果都不行的话,她会用一张大面额的钞票,比如 5 元纸币。如果她把过多的钱,比如 5 元,给了商店老板,她会拿到 3.5 元的找零,并把找零放回她的钱包以供未来使用。类似的,一笔比特币交易可以有任意数值,但必须从用户可用的 UTXO 中创建出来。用户不能再把 UTXO 进一步细分,就像不能把一元纸币撕开而继续当货币使用一样。用户的钱包应用通常会从用户可用的 UTXO 中选取多个可用的个体来拼凑出一个大于或等于一笔交易所需的比特币量。就像现实生活中一样,比特币应用可以使用一些策略来满足付款需要:组合若干小的个体,算出准确的找零;或者使用一个比交易值大的个体然后进行找零。所有这些复杂的、由可支付的 UTXO 完成的组合,都是由用户的钱包自动完成,并不为用户所见。只有当你以编程方式用 UTXO 来构建原始交易时,这些才与你有关。被交易消耗的 UTXO 被称为交易输入,由交易创建的 UTXO 被称为交易输出。通过这种方式,一定量的比特币价值在不同所有者之间转移,并在交易链中消耗和创建 UTXO。一笔比特币交易通过使用所有者的签名来解锁 UTXO,并通过使用新的所有者的比特币地址来锁定并创建 UTXO

对于输出和输入链来说,有一个例外,它是一种特殊的交易类型,称为coinbase 交易。这是每个区块中的首个交易。这种交易存在的原因是作为对挖矿的奖励而产生全新的可用于支付的比特币给赢家矿工。

 

 

 

网址:http://www.1cxy.net

欲领取造币技术与全套虚拟机资料

区块链技术交流QQ群:254416566

 

以上是关于区块链鼻祖比特币之4:独特交易设计的主要内容,如果未能解决你的问题,请参考以下文章

区块链鼻祖比特币之12:(SPV) 节点与Bloom 过滤器

区块链鼻祖比特币之6:详解比特币的密码攻击与分布式双花攻击

比特币之隔离见证

区块链比特币之周期概念

区块链比特币学习 - 1 - 交易

比特币如何挖矿(挖矿原理)-工作量证明