摘要:比特幣與模型全名是,未花費交易輸出,相比于賬戶模型來說沒那么直觀。在比特幣的世界里,并沒有一個紀錄所有帳戶余額的帳本。
如果你曾上過BlockExplorer觀察自己的比特幣收入狀況,你是否曾經(jīng)被搞的一頭霧水呢?這正是因為比特幣所使用的交易模型并非我們直覺上以賬戶為基礎(chǔ)的,而是一種叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特幣所使用UTXO模型與乙太坊使用的賬戶模型在功能上的一些差異,但究竟這兩個模型到底差在哪兒?
ETH與賬戶模型以太坊所使用的賬戶模型比較容易理解,就好像我們每個人都擁有一個銀行帳戶一樣。在以太坊的世界中,每個地址就像是一個帳戶,每一次的扣款,交易過后,都會將帳戶的余額紀錄在區(qū)塊鏈當中。因此在認證交易時只要檢查帳戶是否有足夠的余額就可以了。這個方法簡單,直觀,較利于智能合約的開發(fā)。如果你曾經(jīng)上過Etherscan觀察你的交易紀錄,也會發(fā)現(xiàn)一切都簡單易懂輸入你的交易ID之后你會看到這種畫面:
簡單的從A到B,這只要看得懂英文應該就可以理解了。
比特幣與UTXO模型UTXO全名是Unspent Transaction Outputs,未花費交易輸出,相比于賬戶模型來說沒那么直觀。
在比特幣的世界里,并沒有一個紀錄所有帳戶余額的帳本。那么要怎么確定一個地址現(xiàn)在有多少余額呢?簡單的說,你要回顧以前所有的交易,并且找到所有寄給你的比特幣,再把他們?nèi)技悠饋恚艜馈?/p> 交易中的輸入與輸出
比特幣中的一筆「交易」也較為復雜。假設(shè)今天,F(xiàn)red給了Alice 2個BTC,Ted給了Alice 3個BTC,我們把這兩筆寄給Alice,總和為5的BTC稱為Unspent Transaction Outputs即未花費交易輸出:也就是說現(xiàn)在Alice擁有了兩筆Unspent Transcation Outputs,可以當作他未來轉(zhuǎn)錢給別人的input。
如果現(xiàn)在Alice想要轉(zhuǎn)5 BTC給Bob,他要將前面兩筆總和剛好為5的UTXO當作這筆交易的輸入。而礦工要驗證的就是并沒有其他交易在先前的區(qū)塊當中,已經(jīng)使用過這筆Unspent Output。如果同一筆輸出已經(jīng)被發(fā)送過,那它就不是Unspent了,這就是比特幣預防Double Spending的方法。
還有一個條件就是,output跟input總數(shù)要吻合。實際上在交易的時候,并不可能剛剛好總是找到兩筆加起來等于你要轉(zhuǎn)出金額的output,就好像上圖中,如果愛麗絲Alice只想轉(zhuǎn)4.5個BTC給鮑勃Bob,那么他就要多加一欄的output,把多出來的0.5個BTC轉(zhuǎn)給自己,這樣的交易才是平衡的。
我們可以實際來看看比特幣的交易長什么樣子,我們現(xiàn)在如果想要觀察BlockExplorer上自己的交易紀錄,會發(fā)現(xiàn)它長的是這付德性:
一筆交易包含了大量的input與output,這很有可能是一筆交易所轉(zhuǎn)出金額的紀錄,所以含有很多的output。而左邊的input則可能是大量轉(zhuǎn)入金額交易所錢包的交易output。
有趣的是,我們實際上在一筆交易之中無法「確定」真正的交易金額。例如下面這一筆紀錄中,右邊包含了三個output,我們無法確定究竟0.2,0.03以及56.38三個output究竟哪一個才是真正的目的地。搞不好Alice只有一筆Unspent Transaction Output未花費交易輸出56.61 BTC,因此他在這筆交易中雖然他只想要轉(zhuǎn)0.2BTC,卻必須要動用他唯一一筆UTXO,而剩下的56.38再轉(zhuǎn)回給自己。
當然,現(xiàn)在的比特幣錢包已經(jīng)幫我們照顧這些事情了,所以在使用的時候就好像銀行帳戶一樣,我們只要輸出目的地址,錢包就會幫我們找出合適的未花費輸出(UTXO)當作輸入來完成交易 。但如果你很閑,或是要干一些不想讓你知道的事,就可以自己來打包奇怪的輸入輸出來增加匿名性。
UTXO的優(yōu)勢與劣勢UTXO因為沒有帳戶的存在,因此容許平行進行多筆交易。假如你有許多的UTXOs,你可以同時進行多筆交易而不會被阻擋。再來就是匿名性,如上面提過得,你可以輕易的隱藏自己的交易目的。除此之外,UTXO也被認為比較安全且有效率,可以透過Simple Payment Verification(SPV)來快速驗證檢驗交易。
但UTXO最大的缺點就在于他是Stateless無狀態(tài)的,這對于在其上開發(fā)應用程序非常的不利。就像有名的Qtum雖然底子是UTXO的交易模式,但是仍然會設(shè)計Account Abstraction Layer賬戶抽象層來讓應用程序的開發(fā)變得容易。
小結(jié)現(xiàn)在區(qū)塊鏈應用開發(fā)當?shù)溃琔TXO傾向被大家視為一種只能簡單處理交易的模型,我覺得一定程度上算是時代的產(chǎn)物吧!畢竟離比特幣的發(fā)明也已經(jīng)十年了,盡管有一些特性是無可取代,但是大家仍是偏好朝向Account Model或是混合式的架構(gòu)前進。
但不論怎么說,比特幣永遠都是區(qū)塊鏈世界的老大!而且現(xiàn)在大家免不了還是要用到BTC交易,所以我們還是有必要了解UTXO運作方式的!
總之,希望這篇文章可以對大家對比特幣有深一點的理解啦!
java比特幣開發(fā)教程,本課程面向初學者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Java工程師不可多得的比特幣開發(fā)學習課程。
php比特幣開發(fā)教程,本課程面向初學者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Php工程師不可多得的比特幣開發(fā)學習課程。
php以太坊,主要是介紹使用php進行智能合約開發(fā)交互,進行賬號創(chuàng)建、交易、轉(zhuǎn)賬、代幣開發(fā)以及過濾器和交易等內(nèi)容。
java以太坊開發(fā)教程,主要是針對java和android程序員進行區(qū)塊鏈以太坊開發(fā)的web3j詳解。
以太坊入門教程,主要介紹智能合約與dapp應用開發(fā),適合入門。
以太坊開發(fā)進階教程,主要是介紹使用node.js、mongodb、區(qū)塊鏈、ipfs實現(xiàn)去中心化電商DApp實戰(zhàn),適合進階。
python以太坊,主要是針對python工程師使用web3.py進行區(qū)塊鏈以太坊開發(fā)的詳解。
C#以太坊,主要講解如何使用C#開發(fā)基于.Net的以太坊應用,包括賬戶管理、狀態(tài)與交易、智能合約開發(fā)與交互、過濾器和交易等。
EOS入門教程,本課程幫助你快速入門EOS區(qū)塊鏈去中心化應用的開發(fā),內(nèi)容涵蓋EOS工具鏈、賬戶與錢包、發(fā)行代幣、智能合約開發(fā)與部署、使用代碼與智能合約交互等核心知識點,最后綜合運用各知識點完成一個便簽DApp的開發(fā)。
這里是原文
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/24361.html
摘要:比特幣與模型全名是,未花費交易輸出,相比于賬戶模型來說沒那么直觀。在比特幣的世界里,并沒有一個紀錄所有帳戶余額的帳本。 如果你曾上過BlockExplorer觀察自己的比特幣收入狀況,你是否曾經(jīng)被搞的一頭霧水呢?這正是因為比特幣所使用的交易模型并非我們直覺上以賬戶為基礎(chǔ)的,而是一種叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特幣所...
摘要:比特幣與模型全名是,未花費交易輸出,相比于賬戶模型來說沒那么直觀。在比特幣的世界里,并沒有一個紀錄所有帳戶余額的帳本。 如果你曾上過BlockExplorer觀察自己的比特幣收入狀況,你是否曾經(jīng)被搞的一頭霧水呢?這正是因為比特幣所使用的交易模型并非我們直覺上以賬戶為基礎(chǔ)的,而是一種叫做UTXO的模型 。在我的前一篇文章:《深入了解NEX:Neon Exchange》中,也提到了比特幣所...
摘要:加密經(jīng)濟網(wǎng)絡(luò)中的底層公鏈是比比特幣更像比特幣的價值存儲平臺。這一點將會在經(jīng)濟模型設(shè)計中講到,敬請期待在技術(shù)實現(xiàn)上,我們也充分對比了比特幣模型和以太坊模型的優(yōu)劣,從中繼承了比特幣協(xié)議對狀態(tài)為核心的優(yōu)秀架構(gòu)。 Nervos 加密經(jīng)濟網(wǎng)絡(luò)中的底層公鏈 CKB 是比比特幣更像比特幣的價值存儲平臺。(這一點將會在經(jīng)濟模型設(shè)計中講到,敬請期待~)在技術(shù)實現(xiàn)上,我們也充分對比了比特幣 UTXO 模型...
摘要:在交易發(fā)生時有獲取賬戶余額的需求,都是通過統(tǒng)計整個區(qū)塊鏈上,該錢包地址關(guān)聯(lián)的所有未花費交易輸出上的比特幣數(shù)量來完成的。 區(qū)塊鏈技術(shù)只能用來做關(guān)于金融交易的應用么?或許先去了解它有關(guān)交易的細節(jié),才能看到是否有其它應用的可能。 1 交易的數(shù)據(jù)模型 1.1 起因 在此之前,我們關(guān)于Bitcoin Core介紹了許多,以及把它當作工具如何使用,現(xiàn)在我們將進一步來研究下區(qū)塊鏈中的數(shù)據(jù)模型。 為什...
摘要:區(qū)塊鏈上的底層模型設(shè)計,實際上就是分別以比特幣和以太坊為代表的兩種模型比特幣的模型以太坊的模型而實際上二者的差異千差萬別,代表了兩種思路。以太坊的模型和銀行賬戶類似,在賬戶中記錄用戶的余額。 showImg(https://segmentfault.com/img/bVbt7zb?w=2779&h=1179); 6 月 18 日,F(xiàn)acebook 加密貨幣項目 Libra 發(fā)布的白皮書...
閱讀 2270·2021-11-16 11:51
閱讀 3500·2021-09-26 10:14
閱讀 1787·2021-09-22 15:58
閱讀 1094·2019-08-30 15:52
閱讀 2011·2019-08-30 15:43
閱讀 2611·2019-08-30 13:46
閱讀 906·2019-08-30 13:10
閱讀 1020·2019-08-29 18:32