您好,登錄后才能下訂單哦!
本篇內容主要講解“比特幣UTXO模型是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“比特幣UTXO模型是什么”吧!
以太坊所使用的賬戶模型比較容易理解,就好像我們每個人都擁有一個銀行帳戶一樣。在以太坊的世界中,每個地址就像是一個帳戶,每一次的扣款,交易過后,都會將帳戶的余額紀錄在區塊鏈當中。因此在認證交易時只要檢查帳戶是否有足夠的余額就可以了。這個方法簡單,直觀,較利于智能合約的開發。如果你曾經上過Etherscan觀察你的交易紀錄,也會發現一切都簡單易懂輸入你的交易ID之后你會看到這種畫面:
簡單的從A到B,這只要看得懂英文應該就可以理解了。
UTXO全名是Unspent Transaction Outputs
,未花費交易輸出,相比于賬戶模型來說沒那么直觀。
在比特幣的世界里,并沒有一個紀錄所有帳戶余額的帳本。那么要怎么確定一個地址現在有多少余額呢?簡單的說,你要回顧以前所有的交易,并且找到所有寄給你的比特幣,再把他們全都加起來,才會知道。
比特幣中的一筆「交易」也較為復雜。假設今天,Fred給了Alice 2個BTC,Ted給了Alice 3個BTC,我們把這兩筆寄給Alice,總和為5的BTC稱為Unspent Transaction Outputs
即未花費交易輸出:也就是說現在Alice擁有了兩筆Unspent Transcation Outputs,可以當作他未來轉錢給別人的input
。
如果現在Alice想要轉5 BTC給Bob,他要將前面兩筆總和剛好為5的UTXO當作這筆交易的輸入。而礦工要驗證的就是并沒有其他交易在先前的區塊當中,已經使用過這筆Unspent Output
。如果同一筆輸出已經被發送過,那它就不是Unspent
了,這就是比特幣預防Double Spending
的方法。
還有一個條件就是,output
跟input
總數要吻合。實際上在交易的時候,并不可能剛剛好總是找到兩筆加起來等于你要轉出金額的output
,就好像上圖中,如果愛麗絲Alice只想轉4.5個BTC給鮑勃Bob,那么他就要多加一欄的output
,把多出來的0.5個BTC轉給自己,這樣的交易才是平衡的。
我們可以實際來看看比特幣的交易長什么樣子,我們現在如果想要觀察BlockExplorer上自己的交易紀錄,會發現它長的是這付德性:
一筆交易包含了大量的input
與output
,這很有可能是一筆交易所轉出金額的紀錄,所以含有很多的output
。而左邊的input
則可能是大量轉入金額交易所錢包的交易output
。
有趣的是,我們實際上在一筆交易之中無法「確定」真正的交易金額。例如下面這一筆紀錄中,右邊包含了三個output
,我們無法確定究竟0.2,0.03以及56.38三個output
究竟哪一個才是真正的目的地。搞不好Alice只有一筆Unspent Transaction Output
未花費交易輸出56.61 BTC,因此他在這筆交易中雖然他只想要轉0.2BTC,卻必須要動用他唯一一筆UTXO,而剩下的56.38再轉回給自己。
當然,現在的比特幣錢包已經幫我們照顧這些事情了,所以在使用的時候就好像銀行帳戶一樣,我們只要輸出目的地址,錢包就會幫我們找出合適的未花費輸出(UTXO)當作輸入來完成交易 。但如果你很閑,或是要干一些不想讓你知道的事,就可以自己來打包奇怪的輸入輸出來增加匿名性。
UTXO因為沒有帳戶的存在,因此容許平行進行多筆交易。假如你有許多的UTXOs,你可以同時進行多筆交易而不會被阻擋。再來就是匿名性,如上面提過得,你可以輕易的隱藏自己的交易目的。除此之外,UTXO也被認為比較安全且有效率,可以透過Simple Payment Verification(SPV)來快速驗證檢驗交易。
但UTXO最大的缺點就在于他是Stateless
無狀態的,這對于在其上開發應用程序非常的不利。就像有名的Qtum雖然底子是UTXO的交易模式,但是仍然會設計Account Abstraction Layer
賬戶抽象層來讓應用程序的開發變得容易。
到此,相信大家對“比特幣UTXO模型是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。