首页 > 比特币(BitCoin) > 正文

比特币的交易方式解析——UTXO集

从0到1学透区块链和通证经济 2020-04-21 14:47
当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 青花 周传雄

  


     比特币交易是比特币系统中最重要的部分,根据比特币系统的设计原理,系统中任何其他部分都是为了确保比特币交易可以被生成,能在比特币网络中得以传播和通过验证,并最终添加到全球比特币交易总账本即比特币区块链.比特币交易的本质是数据结构,这些数据结构中含有比特币交易参与价者转移的相关信息.比特币区块链是一个全球复式记账总账本,每个比特币交易都是在比特币区块链上的一个公开记录.    比特币交易中的基础结构件单元是交易输出交易输出,是比特币不可分割的基本组合,记录在区块上,并被整个网络识别有效.比特币的完整节点跟踪所有可找到的和可使用的输出,称为:未花费的交易输出 Unspent Transaction Outputs即UTXO.所有UTXO的集合被称为UTXO集,目前有数百万个UTXO.当新的UTXO被创建,UTXO集就会变大,当UTXO被消耗时,UTXO集会随着缩小.每一个交易都代表UTXO集的变化即BTC的状态转换.
    当我们说用户的钱包已经“收到”比特币时,我们的意思是,钱包已经检测到了可用的UTXO.通过钱包所控制的密钥,我们可以把这些UTXO花出去.因此,用户的比特币余额是指用户钱包中可用的UTXO总和,他们可能分散在数百个交易和区块中.“一个用户的比特币”余额,这个概念是比特币钱包应用创建的派生之物,比特币钱包通过扫描区块链并聚集所有属于该用户的UTXO来计算该用户的余额.大多数钱包维护一个数据库或者使用数据库服务来储存所有的UTXO快速参考集,这些UTXO由用户的所有密钥来控制花费行为.    一个UTXO可以是1“聪”的任意倍数(整数倍).就像美元可以分割成表示两位小数的“分”一样,比特币可以分割成八位小数的聪尽管用UTXO是可以任意值,但一旦被创造出来,既不可分割.这是UTXO值得被强调的一个重要特性:UTXO是面值为"聪"的离散(不连续)且不分割的价值单元,一个UTXO只能在一次交易中,作为一个整体被消耗.    如果一个UTXO比一笔交易所需量大,它仍会被当做一个整体而消耗掉,但同时会在交易中生成零头.如,你有一个价值20比特币的UTXO并且想支付1比特币,那么你的交易必须消耗掉整个20比特币的UTXO并产生两个输出:一个输出支付了1比特币给接收人,另一个输出支付了19比特币的找零到你的钱包.这样,由于UTXO(或交易输出)的不可分割特性,大部分比特币交易都会产生找零.想象一下,一位顾客要买1.5元的饮料.她掏出钱包并试图从所有硬币和钞票中找出一种组合来凑齐她要支付的1.5元.如果有足够多的零钱,她会选择刚刚好的零钱(比如一张1元纸币和5个1毛硬币)或者是小面额的组合(比如3个5毛硬币).如果都不行,她会用一张大面额的钞票,比如5元纸币.如果她把5元给了商店老板,她会得到3.5元的找零,并把找零放回她的钱包以供未来的交易使用.类似的,一笔比特币交易可以是任意金额,但必须从用户可用的UTXO中创建出来.用户不能再把UTXO进一步细分,就像不能把一元纸币撕开而继续当货币使用一样.用户的钱包应用通常会从用户可用的UTXO中选取多个来拼湊出一个大于或等于一笔交易所需的比特币量.就像现实生活中一样,比特币应用可以使用一些策略来满足付款需求组合若干小额UTXO,并算出准确的找零:或者使用一个比交易额大的UTXO然后进行找零.所有这些复杂的、由可花费UTXO组成的集合,都是由用户的钱包自动完成的,并不为用户所见.只有当你以编程方式用UTXO来构建原始交易时,这些才与你有关.

  

一笔交易会消耗先前的已被记录(存在)的UTXO,并创建新的UTXO以备未来的交易消耗.通过这种方式,一定数量的比特币价值在不同所有者之间转移,并在交易链中消耗和创建UTXO.一笔比特币交易通过使用所有者的签名来解锁UTXO,并通过使用新的所有者的比特币地址来锁定并创建UTXO.从交易的输出与输入链角度来看,有一个例外,即存在一种被称为“币基交易”( Coinbase Transaction)的特殊交易,它是每个区块中的第一笔交易.这种交易存在的原因是,作为对控矿的奖励,创造出全新的可花费比特比用来支付“赢家”矿工.这就是比特币可以在挖矿过程中被创造出来的原因.    “挖矿”这个词有点误导.一般意义的挖矿类似于贵金属的提取,它将人们的注意力集中到创造每个区块获得的奖励.虽然挖矿能够获得这种奖励作为激励,但挖矿的主要目的不是这个奖励或者产生新币.如果你只是把挖矿视为创建新币的过程,则会将比特币系统中的这个手段(激励)作为挖矿过程的目标.挖矿最重要的作用是巩固了去中心化的清算交易机制,通过这种机制,交易得到验证和清算清除.挖矿是使得比特币与众不同的发明,它实现去中心化的安全机制,是P2P数字货币的基础.    比特币的区块平均每10分钟生成一个,这就是比特币的心跳,是货币发行速度和交易达成速度的基础.不仅在短期内,而且在几十年内它都必须保持恒定.在此期间,计算机性能将飞速提升.此外,参与挖矿的人和计算机也会不断变化.为了能让新区块保持10分钟一个的产生速度,挖矿的难度必须根据这些变化进行调整.事实上,难度是一个动态的参数,会定期调整以达到每10分钟一个新区块的目标.简单地说,难度在于无论挖矿能力如何,新区块的产生速度都要保持在10分钟一个.    每一笔比特币交易都会创造输出,并被比特币账簿记录下来.除特例外(见“数据输出操作符”( OP RETURN),几儿乎所有的输出都能创造定数量的可用于支付的比特币,也就是UTXO.这些UTXO被整个网络识别,所有者可在未来的交易中使用它们.UTXO在UTXO集( Utxoset)中被每一个全节点比特币客户端追踪.新的交易从UTXO集中消耗(花费)一个或多个输出交易输入将UTXO(通过引用)标记为将被消费,并通过解锁脚本提供所有权证明.要构建一个交易,一个钱包从它控制的UTXO中选择足够的价值来执行被请求的付款.有时一个UTXO就足够,其他时候不止一个.对于将用于进行此付款的每个UTXO,钱包将创建一个指向UTXO的输入,并使用解锁脚本对它进行解锁.

 比特币的交易方式解析——UTXO集 

阅读更多

上一篇:比特币超过黄金:风险资产是否超过了安全港?

下一篇:比特币:引发新一轮牛市反弹还是暴跌?

您可能喜欢:

关于我们联系我们作者投稿
Copyright © 2013 比特巴手机版
币圈人都爱上的网站,新闻行情教程人物测评资讯大全