据了解,在漏洞代码片段中会涉及一些(xiē)UTXO的相关知识(shí)、概念,所(suǒ)以对该漏洞进行(háng)理论分析之前需要先了解一下这些知识点,已经了解的可以直接跳过。
1、账户模型与(yǔ)UTXO模型
我们在看UTXO模型之前先说(shuō)说常见的账户模(mó)型,什么是账户模型?账(zhàng)户模型的(de)数据结构简单可以理解(jiě)为“账(zhàng)号=>余额”,每个账号都对应一个余额。举(jǔ)个(gè)例子:若账(zhàng)号(hào)A向账(zhàng)号B转账200,在账(zhàng)户模型中完成这(zhè)个转账操(cāo)作(zuò)只需要A-200然后B+200;目前大部分(fèn)软件都采用的(de)是账户模型,比(bǐ)如银行系统、
以太坊等等(děng)。
而
比(bǐ)特币却使用了自行研发的UTXO模型,UTXO中是没有“账号=>余(yú)额”这样的(de)数据结构的,那怎么进行转账?
2、比特币如何操作转账
以上面A向B转账为例(lì),在UTXO中完成这个转账需(xū)要以下操作:
(1). 找到A账号下200余(yú)额的来源(yuán),也就是意(yì)味着(zhe)要找(zhǎo)到A收款200的这(zhè)笔交易x
(2). 以x交易为输入,以向B转(zhuǎn)账(zhàng)200的交易y为(wéi)输出,x与y对应且x与y的转账金额必须相等(děng)
(3). x交(jiāo)易被标记为(wéi)已花费,y交易被标记(jì)为(wéi)未花费
两笔交(jiāo)易(yì)的转账金额必须相(xiàng)等,简单解(jiě)释就是收(shōu)到多少就只能转出多少,实际上确实是这样(yàng)。
但是又必须(xū)只(zhī)给别人转一部(bù)分的时(shí)候怎么办?答案是只向他人(rén)转一部分,然(rán)后剩下的一部分转(zhuǎn)给自己(jǐ)另外一(yī)个号(hào)。
3、引用两张(zhāng)来(lái)自网络(luò)的图文:
账(zhàng)户(hù)模型
UTXO模型
在本文当中比特币为什么采用UTXO模型不是(shì)重点,我们了解UTXO的(de)原理即(jí)可。
版(bǎn)权申明:本内容(róng)来自于互联网,属(shǔ)第三(sān)方汇集推(tuī)荐平(píng)台。本文(wén)的版权(quán)归原作者所有,文章言论不代表(biǎo)链门户的观点,链门户不承担任何(hé)法律(lǜ)责任。如(rú)有侵权请联系QQ:3341927519进行反馈。