文章閱讀頁通欄

比特幣交易的工作原理

來源: 區塊網 作者:
在本文中,我們將詳細討論比特幣交易的工作原理。我們將看到,比特幣交易與現實世界中的交易略有不同。 1. 交易通常如何工作?什么是帳戶/余額模型......
在本文中,我們將詳細討論比特幣交易的工作原理。我們將看到,比特幣交易與現實世界中的交易略有不同。

1. 交易通常如何工作?什么是帳戶/余額模型?

大多數時候,當我們談到交易時,我們習慣于想到帳戶/余額系統。這意味著系統中的每個用戶都有一個帳戶,每個帳戶都與一個余額相關聯,該余額決定帳戶擁有多少錢或數字。

當系統中的一個用戶通過向系統中的另一個用戶發送金錢來進行交易時,帳戶余額將被更新。例如,如果A最初有10個比特幣,B有5個比特幣,如果A向B發送2個比特幣進行交易,A最終得到10 - 2=8個比特幣,B最終得到5+2=7個比特幣。

交易如何在帳戶/余額系統中運作
2. 什么是UTXO(未使用的交易輸出)?

比特幣使用UTXO(未使用的交易輸出)模型,而不是賬戶/余額系統。這意味著區塊鏈并不直接跟蹤每個比特幣地址的比特幣余額。相反,區塊鏈存儲了比特幣交易數據的整個歷史,而比特幣網絡跟蹤網絡中所有UTXO的集合,稱為mempool或交易池。特定比特幣地址的余額是通過檢查和求和與該地址相關的所有UTXO來計算。當使用UTXO時,它將從交易池中刪除,這將在計算余額時反映出來。

一個可視化的演示如何在UTXO系統中計算平衡
在比特幣中,UTXO是一個離散的比特幣單元,它可以包含任何數量的固定不變值。一個UTXO可以代表0.1個比特幣,1個比特幣,甚至100個比特幣。無論該值本身的大小如何,該值都與惟一的UTXO關聯,UTXO可以通過其id來識別。根據定義,每個UTXO都是交易輸出的結果,并與一個特定的比特幣地址關聯。

UTXO的基本特性是它們不能被分解——如果不進行交易處理,就不能將一個UTXO轉換成兩個或更多更小的UTXO。例如,如果A希望支付B 0.5 BTC,但A只有一個包含1 BTC的UTXO,那么A就不能神奇地將他的UTXO轉換成值為0.5 BTC的兩個UTXO,并且只能通過將其中之一發送給B進行一次交易。相反,當A將他的UTXO分成兩個UTXO,每個0.5個BTC,A將需要在兩個獨立的交易中使用兩個UTXO:她將發送一個給B作為付款,另一個給她自己。這個問題將在下一個問題中得到更清楚的說明。

3.比特幣交易究竟是如何運作的?

比特幣的每一筆交易都有一些輸入和輸出。輸入是屬于交易發送方的UTXO,而交易的輸出是分配給接收方的新生成的UTXO。

每個UTXO都使用一個鎖定腳本ScriptPubKey鎖定。這個腳本確保只有交易的預期接收者才能訪問發送給他們的比特幣(UTXO)。ScriptPubKey由<PubKeyHash>組成,它是接收方公鑰的哈希值,與接收方的比特幣地址相關。

比特幣交易的鎖定和解鎖機制。
交易的接收者可以通過使用解鎖腳本ScriptSig訪問他們的UTXO,該腳本被UTXO的接收者用來證明他們擁有UTXO中的比特幣。ScriptSig由使用ECDSA生成的用戶比特幣簽名<Sig>和用戶公鑰<PubKey>組成。對<PubKey>進行哈希,并與ScriptPubKey中的<PubKeyHash>進行比較,以檢查試圖訪問UTXO的用戶是否確實擁有與比特幣地址關聯的公鑰。接下來,將<Sig>與<PubKey>進行比較,以驗證用于生成比特幣簽名的私鑰確實是生成(已正確驗證)公鑰的私鑰。

 只有使用ScriptSig才能解鎖UTXO并將其用作交易的輸入。在生成交易的輸出時,發送方再次使用接收方的ScriptPubKey鎖定UTXO。因此,比特幣交易是一個鎖定和解鎖UTXO的連續循環。

4. 我能舉個比特幣交易的例子嗎?

我們可以用一個例子來理解比特幣交易是如何進行的。蛋糕買家希望從蛋糕賣家那里購買一個價值5比特幣的蛋糕。由于買蛋糕的人沒有一個恰好是5 BTC的UTXO,她選擇了2個UTXO來覆蓋5 BTC的價格,生成了5 BTC的輸出發送給蛋糕賣家,0.5 BTC的變化返回給蛋糕買家。

演示如何在交易中創建和使用UTXOs的可視化程序。
在交易級別上,蛋糕購買者使用ScriptSig(作為輸入)解鎖UTXO_3和UTXO_5的ScriptPubKey。一旦這樣做,就會生成兩個輸出并使用自己的ScriptPubKey鎖定它們。當蛋糕銷售商想要使用這個UTXO時,他必須使用他的ScriptSig來解鎖它。

買蛋糕的人打開她以前的UTXO用于消費,并創建新的UTXO發送給蛋糕銷售者和她自己。
5. 如何向節點廣播交易?

對于大多數用戶,沒有必要這樣做。您只需使用一個比特幣walletclient,輸入您希望進行的交易的詳細信息,然后單擊send。客戶端將為您廣播交易。

由于比特幣是一個對等網絡,客戶端搜索發送交易的對等點(節點)。當它找不到任何對等點時,就回到硬編碼到客戶機的可靠備份對等點列表中。

6. 每個比特幣塊可以有多少交易?

每個比特幣塊可能擁有的交易數量取決于該塊中包含的單個交易的類型和大小。最初的塊大小限制是1兆字節。如果每筆交易都是任意小的,那么一個比特幣塊可以有任意多的交易。

實際上,到2019年1月,每個區塊的平均交易數量約為2100筆。這個數字可能比它應該的低,因為存在著正在開采的空塊。

(注:Segwit(隔離見證)是比特幣網絡中的一個軟分支,它允許將交易數據存儲在一個擴展塊中,允許大于2兆字節的塊存儲更多的交易數據。截至2019年2月,Segwit交易約占比特幣交易總額的40%。)

結束語

在本文中,我們研究了UTXO模型的細節以及比特幣交易的工作原理。在下一篇文章中,我們將解釋比特幣的最后一塊:采礦。我們將看看采礦是如何工作的,以及采礦在比特幣中扮演的角色。

關鍵詞: 比特幣  比特幣交易  
0/300
? 时时彩龙虎和计划app