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