# 2.1交易,區塊,挖礦和區塊鏈
比特幣系統與傳統的銀行和支付系統不同,是基于去中心化的信任。在比特幣中,信任不是通過中央權威機構授權而來,而是通過比特幣系統中不同用戶相互交互自發達成,這是比特幣的一個顯著特性。 在本章中,我們將通過較高層面跟蹤比特幣系統中的一筆交易,觀察交易如何通過比特幣分布式共識機制變得“可信”,被接受,并且最終記錄在區塊鏈,這個區塊鏈就是所有交易的分布式賬簿。
隨后的章節將深入探討交易,網絡和挖礦背后的技術。
## 2.1.1比特幣概述
如圖2-1所示的概覽圖中,我們可以看到比特幣系統由用戶、交易和礦工組成,其中用戶主要使用密鑰控制錢包,交易會被廣播到整個比特幣網絡,礦工通過算力競爭生產出具備所有節點共識的區塊鏈,這個區塊鏈是一個分布式的公開權威賬簿, 包含了比特幣網絡發生的所有的交易。
本章中的每個示例都基于在比特幣網絡上進行的實際交易,通過將資金從一個錢包發送到另一個錢包來模擬用戶(Joe,Alice,Bob和Gopesh)之間的交互。 我們將使用一個區塊鏈瀏覽器來顯示比特幣網絡中交易進入區塊鏈的每個步驟。 區塊鏈瀏覽器是一個類似比特幣搜索引擎的Web應用程序,它允許您搜索地址,交易和區塊,并查看它們之間的關系和流程。

圖2-1比特幣網絡概覽
常見的區塊鏈數據查詢網站包括:
?[Bitcoin Block Explorer](https://blockexplorer.com/)
?[BlockCypher Explorer](https://live.blockcypher.com/)
?[blockchain.info](https://blockchain.info/)
?[BitPay Insight](https://insight.bitpay.com/)
以上每一個查詢網站都有搜索功能,可以在比特幣網絡和區塊鏈中通過地址,交易哈希值或區塊號,搜索到對應的數據。針對每個交易和區塊都會提供一個URL鏈接,方便做深入研究。
## 2.1.2買一杯咖啡
在之前章節里,Alice是一名剛剛獲得第一枚比特幣的新用戶。在“1.4.2 獲取你的第一枚比特幣 ”一節中,Alice和她的朋友Joe會面時,用現金換取了比特幣。由Joe產生的這筆交易使得Alice的錢包擁有了0.10比特幣。現在Alice將第一次使用比特幣在加利福尼亞州帕羅奧圖的Bob咖啡店買一杯咖啡。
Bob咖啡店剛開始接受比特幣支付,銷售系統新增加了一個比特幣支付選項,價格單上列的是當地貨幣(美元)的售價,在收銀臺,顧客可以選擇用美元或比特幣支付。此時,Alice點了杯咖啡,然后Bob將交易輸入到收銀機,銷售系統按照當前市場匯率把美元總價轉換為比特幣,然后同時顯示兩種貨幣的價格:
總價:
$1.50 USD
0.015 BTC
Bob說,“總共1.50美元,或0.015 BTC比特幣”
Bob的銷售系統還自動創建一個包含付款請求的二維碼。
與簡單包含目的比特幣地址的二維碼不同,當前支付請求是一個包含URL的二維碼,它包含有收款地址,付款金額,和像“Bob咖啡”這樣的交易描述。這使比特幣錢包應用可以預先填好一些特定信息,方便用戶識別。你可以用比特幣錢包掃描這個二維碼來看Alice看到的信息。

圖2-2支付請求二維碼
**提示** 嘗試用你的錢包掃描這個,看看地址和金額,但不要發送貨幣。
根據BIP0021的定義,這個付款二維碼包括的URL的意思是:
> ```
> bitcoin:1GdK9UzpHBzqzX2A9JFP3Di4weBwqgmoQA?
>
> amount=0.015&
> label=Bob%27s%20Cafe&
> message=Purchase%20at%20Bob%27s%20Cafe
>
> Components of the URL
>
> A bitcoin address: "1GdK9UzpHBzqzX2A9JFP3Di4weBwqgmoQA"
> The payment amount: "0.015"
> A label for the recipient address: "Bob's Cafe"
> A description for the payment: "Purchase at Bob's Cafe"
> ```
Alice用她的智能手機掃描了這個二維碼,顯示有一筆給Bob咖啡店的0.0150比特幣的支付請求,然后她按下發送鍵授權了這筆支付。在幾秒鐘時間內(大約與信用卡授權所需時間相同)Bob將會在收銀臺看到這筆交易,并完成交易。在接下來的章節中,我們將更詳細地觀察這筆交易,觀察Alice的錢包是怎樣構建交易,交易又是怎樣在網絡中廣播、怎樣被驗證,以及Bob在后續交易中怎樣消費那筆錢。
**注意** 從千分之一比特幣\(1毫比特幣)到一億分之一比特幣(1聰比特幣),比特幣網絡可以處理任意小額交易。在本書中,我們將用“比特幣”這個術語來表示任意數量的比特幣貨幣,從最小單元(1聰)到可被挖出的所有比特幣總數 (21,000,000)。
你可以像下面例1那樣使用區塊鏈瀏覽器站點來檢查Alice與Bob's Cafe的交易:
例1. 查看Alice的交易
[點擊查看Alice的交易](https://blockexplorer.com/tx/0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2)
# 2.2 比特幣交易
簡單來說,一筆交易就是告知全網:比特幣的持有者已授權把它轉帳給其他人。而新持有者可以通過產生另一筆交易,轉賬給另外的人,依此類推形成一條所有權的鏈。
## 2.2.1交易輸入輸出
交易就像復式記賬法賬簿中的行。簡單來說,每一筆交易包含一個或多個“輸入”,就像比特幣賬戶的借方。這筆交易的另一面,有一個或多個“輸出”,就像比特幣賬戶的貸方。這些輸入和輸出的總額(借方和貸方)不需要相等。相反,當輸出加起來略少于輸入數量時,兩者的差額就代表了一筆隱含的“礦工費”,這筆礦工費由成功打包交易到區塊鏈賬簿的礦工收取。如圖2-3描述的是一筆比特幣交易作為賬簿中的一個條目。
交易也包含了每一筆被轉賬的比特幣(輸入)的所有權證明,它以所有者的數字簽名形式存在,并可以被任何人獨立驗證。在比特幣術語中,“消費”指的是簽名一筆交易:將以前交易的比特幣轉賬給比特幣地址所標識的新所有者。

圖2-3交易就像復式記賬
## 2.2.2交易鏈
Alice支付Bob咖啡時使用一筆之前的交易作為輸入。在以前的章節中,Alice從她朋友Joe那里用現金換了點比特幣。那筆交易創建了被Alice的密鑰鎖定的比特幣。在她支付Bob咖啡店的新交易中使用了之前的交易作為輸入,輸出是支付咖啡的金額和多余部分的找零。交易形成了一條鏈,最近交易的輸入對應以前交易的輸出。Alice用密鑰簽名解鎖了之前交易的輸出,從而向比特幣網絡證明她擁有這筆錢。她將買咖啡的這筆支付到Bob的地址上,明確指明要求是Bob簽名才能消費這筆錢,否則就“阻止”那筆輸出。這就實現了在Alice和Bob之間價值轉移。下圖展示了從Joe到Alice再到Bob的交易鏈。

圖2-4交易鏈中,一筆交易輸出就是另一筆交易的輸入。
## 2.2.3找零
許多比特幣交易都會包括新所有者的地址(買方地址)和當前所有者的地址(稱為找零地址)的輸出。這是因為交易輸入,就像紙幣那樣能夠不能被再分割。如果您在商店購買了5美元的商品,但是使用20美元的美金來支付商品,會收到15美元的找零。相同的概念適用于比特幣交易輸入。如果您購買了一個價格為5比特幣的商品,但是你的輸入中只有20比特幣這一項,那么您需要產生兩個輸出:一個5個比特幣的輸出發送給店主,另一個15比特幣的輸出返回自己作為找零(減去任何適用的交易費用)。重要的是,出于隱私的原因,找零地址不必與輸入時提供的地址相同,通常是所有者錢包中的新地址。
不同的錢包可以在合并所有輸入,用來匹配自己的付款金額時使用不同的策略。它們可能會聚合許多小輸入,或者使用等于或大于所需付款的輸入。除非錢包中的輸入,剛好匯總起來與所需付款(加上交易費用)完全相等,否則錢包一定會產生一些找零。這與人們如何處理現金非常相似。如果你總是用錢包中的最大面額支付時,那么錢包中的零錢就會越來越多。如果你只使用零錢,整錢就會越來越多。人們總是無意識地在這兩個極端之間找到平衡,而比特幣錢包開發商也力圖實現這種平衡。
總的來講,交易是將錢從交易輸入移至輸出。輸入通常是前一筆交易的輸出的引用,表示價值從何而來。交易輸出將約定金額發送到新的所有者的比特幣地址,并將找零輸出返回原來所有者的地址。 一筆交易的輸出可以被當做另一筆新交易的輸入,這樣隨著錢從一個地址被移動到另一個地址,就形成了一條所有權鏈(如圖2-4)。
## 2.2.4 常見的交易形式
最常見的交易形式是從一個地址到另一個地址的簡單支付,還包含給支付者的“找零”。這類交易有一個輸入和兩個輸出,如圖2-5所示:

圖2-5最常見的交易
另一種常見的交易形式是歸集多個輸入到一個輸出(如圖2-6)的模式。這相當于現實生活中將很多硬幣和紙幣零錢兌換為一個大額面鈔。像這樣的交易由錢包應用產生,來整理在支付過程收到的許多小額的找零。

圖2-6歸集資金的交易
最后,另一種在比特幣賬簿中常見的交易形式是將一個輸入分配給多個輸出,即多個接收者(如圖2-7)的交易。這類交易有時被商業機構用作分配資金,例如給多個雇員發工資的情形。

圖2-7分散資金的交易
# 2.3 交易的構建
Alice的錢包應用知道如何選取合適的輸入匹配Alice所創建的交易金額。Alice只需要指定目標地址和金額,其余的細節錢包應用會在后臺自動完成。很重要的一點是,錢包應用甚至可以在完全離線時建立交易。就像在家里寫張支票, 之后放到信封發給銀行一樣,比特幣交易建立和簽名時不用連接比特幣網絡。只有在執行交易時才需要將交易發送到網絡。
## 2.3.1 獲取正確的輸入
Alice的錢包應用首先會找到一些足夠支付給Bob所需金額的輸入。大多數錢包應用都會跟蹤著的屬于錢包的地址的所有可用輸出。因此Alice的錢包會包含她用現金從Joe那里購買的比特幣的交易輸出副本(參見 在“獲取你的第一枚比特幣 ”一節)。全節點客戶端含有整個區塊鏈中所有交易的所有未消費輸出副本。這使得錢包既能拿這些輸出構建交易,又能在收到新交易時很快地驗證其輸入是否正確。但是,全節點客戶端占太大的硬盤空間,所以大多數錢包使用輕量級客戶端,只保存用戶自己的未消費輸出。
如果錢包客戶端沒有未花費交易輸出的副本,它可以使用不同的服務商提供的各種API從比特幣網絡中拿到這一交易信息,或者通過全節點的API調用查詢這些信息。例2-1展示了一個API的請求,對特定URL發起HTTP GET命令。這個URL會返回一個地址的所有未花費交易輸出,提供給需要這些信息的任何應用。 我們用簡單的HTTP命令行客戶端 cURL來獲得這個響應數據。
例2-1 查找Alice的比特幣地址所有的未消費的輸出
```
$ curl https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK
{
"unspent_outputs":[
{
"tx_hash":"186f9f998a5...2836dd734d2804fe65fa35779",
"tx_index":104810202,
"tx_output_n": 0,
"script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac",
"value": 10000000,
"value_hex": "00989680",
"confirmations":0
}
]
}
```
例2-2的響應數據顯示了Alice的地址 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK 上面有一個未花費輸出(還未被消費)。這個響應包含對這筆交易的引用,從Joe那里轉過來的未消費輸出就包含在這個交易里面,它的價值是一千萬聰 (satoshi),即 0.10比特幣。有了這個信息,Alice的錢包應用就可以創建新的交易將錢轉賬到新地址。
**提示** [點擊這里 查看Joe和Alice間的交易信息](http://bit.ly/1tAeeGr)。
如你所見,Alice的錢包中的未花費交易輸出中有足夠的比特幣支付一杯咖啡。假如不夠的話,Alice的錢包應用就不得不搜尋一些小的未花費輸出,像是從一個存錢罐里找硬幣一樣,直到找到足夠支付咖啡的金額。在兩種情境下,可能都需要找回零錢,而這些找零也會是錢包所創建的交易的輸出的組成部分。會在下一節有所描述。
## 2.3.2 創建交易輸出
交易的輸出是以腳本的形式創建的,這個腳本設置了對兌換金額的“產權限制”,只能引入這個腳本的一個解后才能解除預置實現提款。簡單點說就是,Alice的交易輸出會包含一個腳本,這個腳本說 “誰能出示一個輸出中的對應的公開地址對應的私鑰簽名,就支付給誰”。因為只有Bob的錢包的私鑰可以匹配這個地址,所以只有Bob的錢包可以提供這個簽名以兌換這筆輸出。因此Alice 會需要Bob的簽名來限制輸出的使用。
這個交易還會包含第二個輸出。因為Alice的未花費交易輸出金額是0.10比特幣,對0.015 比特幣一杯的咖啡來說太多了,需要找零給Alice 0.085比特幣。Alice錢包創建給她的找零與付給Bob的支付在同一個交易里面。可以說,Alice的錢包將她的金額分成了兩個支付:一個給Bob,一個給自己。她可以在以后的交易里繼續消費這筆找零輸出。
最后,為了讓這筆交易盡快地被網絡處理,Alice的錢包會多付一小筆費用。這個不是明顯地包含在交易中的;而是通過輸入和輸出的差值所隱含的。如果Alice創建找零時只找 0.0845比特幣,而不是 0.085比特幣的話,就會有 0.0005比特幣(50萬聰) 。兩筆輸出加起來小于 0.10,所以這個 0.10 比特幣的輸入就沒有被完整的消費了。這個差值會就被礦工收取當作交易費,作為礦工將交易放到區塊里,最終打包到區塊鏈帳薄中的費用。
這個交易的結果信息可以用區塊鏈數據查詢站點看到,如圖2-8所示。

圖2-8 Alice和Bob咖啡店的交易
提示[點擊這里查看Alice支付Bob咖啡的交易的信息](http://bit.ly/1u0FIGs)
## 2.3.3 將交易加入到總賬簿
這個被Alice錢包應用創建的交易大小為258字節,包含了確認資金所有權和分配給新所有者所需要的全部信息。現在,這個交易必須要被傳送到比特幣網絡中,最終成為分布式賬簿(區塊鏈)的一部分。在下一節里,我們來看下一個交易如何成為新區塊的一部分, 以及區塊是如何被挖礦構建的。最后,我們會看看新區塊被加進區塊鏈后,隨著更多區塊的添加,信任度如何也隨之增加的。
### 2.3.3.1 交易的傳送
因為這個交易包含處理所需的所有信息,所以這個交易傳送到比特幣網絡的位置和方式就無關緊要了。比特幣網絡是由參與的比特幣客戶端聯接其他更多比特幣客戶端組成的P2P網絡。比特幣網絡的目的是將交易和區塊傳播給所有參與者。
### 2.3.3.2 如何傳播
任何遵守比特幣協議,參與比特幣網絡的任何系統(例如服務器,桌面應用程序或錢包)都稱為比特幣節點。Alice的錢包應用可以發送新的交易給任意一個已聯接到互聯網的比特幣客戶端,不論其是由有線網絡、WiFi、還是通過手機聯接的。她的錢包不必直接連著Bob的比特幣錢包,她也不必使用咖啡廳提供的網絡,雖然這兩者都是可能的。任何比特幣網絡節點(其它客戶端)收到一個之前沒見過的有效交易時會立刻將它轉發給它連接的其它節點。 因此,這個交易迅速地從P2P網絡中傳播開來,幾秒內就能到達大多數節點。
### 2.3.3.3 Bob的視角
如果Bob的比特幣錢包應用是直接連接Alice的錢包應用的話,Bob的錢包應用也許就是第一個收到這個交易的節點。然而,即使Alice的交易是從通過其它節點發過來的,一樣可以在幾秒鐘內到達Bob錢包應用。Bob的錢包會立即確認 Alice的交易是一筆收入,因為它包含能用Bob的私鑰兌換的輸出。Bob的錢包應用也能夠獨立地用之前未消費輸入來確認這個交易是正確構建的,并且由于包含足夠交易費,因此會被下一個區塊包含進去。這時Bob風險非常小,因為這個交易會很快被加到區塊且被確認。
**提示** 一個對比特幣交易的常見誤解是它們必須要等10分鐘后新區塊產生才被確認,或等60分鐘以得到六次確認后才是有效的。雖然這些確認可以確保交易已被整個網絡接受,但對于像一杯咖啡這樣的小額商品來說就沒有必要等待那么長時間了。一個商家可以免確認來接受比特幣小額支付。這樣做的風險不比沒有身份證或簽名的信用卡付款的風險更大,而后者是現在商家常做的事情。
# 2.4 比特幣挖礦
Alice的這筆交易現在已經在比特幣網絡上傳播開來。但只有被挖礦節點驗證且加到一個區塊中之后,這個交易才會成為這個共享賬簿(區塊鏈)的一部分。關于挖礦的詳細描述請見第10章。比特幣系統的信任是建立在計算的基礎上的。交易被打包在一起放進區塊中時需要極大的計算量來證明,但是驗證這個證明只需少量計算就可以。
挖礦在比特幣系統中有兩個重要作用:
? 挖礦節點依據比特幣的共識規則驗證所有交易。 因此,挖礦過程會拒絕無效或不合規交易,以此保障比特幣交易的安全性。
? 挖礦在構建區塊時會創造新的比特幣,就像中央銀行發行新的紙幣一樣。每個區塊創造的比特幣數量是固定的,并且會逐漸減少。
挖礦在成本和報酬之間取得了良好的平衡。 挖礦耗費電力來解決數學問題。 礦工挖礦成功將會獲得新的比特幣和交易費作為獎勵。 但是,只有其他礦工正確驗證了所有的交易,符合共識規則的要求,才能拿到獎勵。 這種微妙的平衡為沒有中央權威機構的比特幣提供安全保障。
描述挖礦最好將其類比為一個巨大的多人數獨游戲。一旦有人發現正解之后,這個數獨游戲會自動重置,并調整難度,使得游戲每次都需要大約10分鐘才能解決。想象一個有好幾千行和列的大型數獨游戲。如果給你一個已經完成的數獨謎底, 你可以很快地驗證它。然而,如果這個數獨只有幾個方格里有數字其余方格都為空,就會花費非常長的時間才能解決。這個數獨游戲的困難度可以通過改變其大小(更多或更少行列)來調整,但即使非常大時驗證結果也是相當容易的。比特幣中的 "謎題" 是基于哈希加密算法的,有類似的特點:不對稱,解起來困難而驗證很容易,而且它的困難度可以調整。
在 “比特幣的應用、用戶和他們的故事”一節中,我們提到了一個叫Jing的上海企業家。Jing在比特幣網絡中扮演了一個礦工的角色。大概每10分鐘,Jing和其他上千個礦工一起開始一場全球競賽,目的就是對一個區塊的交易尋找正解。尋找這個解,也被稱為工作量證明,整個網絡需要進行每秒億萬次哈希計算。這個工作量證明算法指的用SHA256加密算法重復不斷對區塊頭和一個隨機數字進行哈希計算,直到出現一個和預設目標值相匹配的解。第一個找到這個解的礦工就是贏得這局競賽,并會將此區塊發布到區塊鏈中。
Jing從2010年開始挖礦,當時他使用一個非常快的桌面電腦來為新區塊尋找正解。隨著更多的礦工加入比特幣網絡中, 尋找謎題正解的難度迅速增大。不久,Jing和其他礦工升級成更專業的硬件,比如游戲桌面電腦或更專業的高端獨立圖像處理單元芯片(即顯卡GPU)。在寫這本書的時候,解題已經變得極其困難,只有使用專用集成電路(ASIC),就是幾百種挖礦算法集成在一個單硅芯片上并行計算進行挖礦才會盈利。Jing的公司同時加入了一個礦池,這類似彩票獎池,能夠讓多個礦工共享算力和回報。Jing現在運行一個礦場,有幾千個ASIC礦機每天24小時不間斷地挖礦。他賣掉一些挖礦得到的比特幣來支付電費,賺取利潤獲得收益。
# 2.5 區塊中的挖礦交易記錄
新交易不斷地從用戶錢包和其他應用流入比特幣網絡。當比特幣網絡上的節點看到這些交易時,會先將它們放到節點自行維護的一個臨時的未經驗證的交易池中。當礦工構建一個新區塊時, 會將這些交易從這個交易池中拿出來放到一個新區塊中,然后通過嘗試解決一個難題(也叫工作量證明)以證明這個新區塊的有效性。挖礦過程的細節會在“挖礦簡介”一節中詳加描述。
這些交易被加進新區塊時,以交易費用和其它的一些規則進行排序。礦工一旦從網絡上收到一個新區塊, 就知道自己在這個區塊上的解題競賽已經輸掉了,然后馬上開始下一個新區塊的挖礦。它會立刻將一些交易和最新那個區塊的數字指紋放在一起開始構建下一個新區塊,并開始工作量證明計算。每個礦工會在他的區塊中包含一個特殊的交易,將新生成的比特幣(當前每區塊為12.5比特幣)作為礦工費支付到他自己的比特幣地址,再加上塊中所有交易的交易費用的總和作為自己的報酬。如果他找到了使得新區塊有效的解法,他就會得到這筆報酬,因為這個新區塊被加入到了區塊鏈總賬中,他添加的這筆報酬交易也會變成可消費的。 參與礦池挖礦的Jing設置了他的軟件,構建新區塊時會將報酬地址設為整個礦池的地址。然后根據各自上一輪貢獻的工作量將所得的報酬分給Jing和其他參與礦池挖礦的礦工。
Alice的交易被網絡拿到后放進未驗證交易池中。一旦被挖礦軟件驗證,它就被包含在由Jing的礦池生成的新區塊(稱為候選塊)中。 參與該礦池的所有礦工立即開始計算候選塊的工作證明。大約在Alice的錢包將這個交易發送出來五分鐘后,Jing的ASIC礦機發現了新區塊的正解并將這個新區塊發布到網絡上,一旦結果被其它礦機驗證成功,它們就會立即開始下一個新區塊的競賽。
Jing的ASIC礦機發現了新區塊的正解并將之發布為第277,316號區塊,包含420個交易,包括Alice的交易。將Alice交易包含在區塊中就算做對該交易的一次"確認"。
**提示** 你可以查看包含[Alice交易記錄](https://blockchain.info/block-height/277316)的這個區塊的信息。
大約19分鐘后,第277,317號新區塊誕生在另一個挖礦節點中。因為這個新區塊是在包含Alice交易的第277,316號區塊的上層(棧),在這個區塊的基礎上增加了更多的計算,因此就加強了這些交易的可信度。基于這個區塊每產生一個新區塊,對Alice這個交易來說就會增加了一次"確認"。當區塊一個個堆上來時,這個交易被推翻的難度就會指數級增加,因此它在網絡中越來越被信任。
在圖2-9中,我們可以看到包含Alice的交易的第277,316號區塊。在它之下有277,316個區塊(包括0號區塊),像鏈子 一樣一個連著一個(區塊鏈),一直連到0號區塊,即創世區塊。隨著時間變長,這個區塊鏈的高度也隨之增長,每個區塊和整個區塊鏈的計算難度也隨之增加。包含Alice的交易的區塊后面形成的新區塊使得信任度進一步增加,因為他們疊加了更多的計算在這個越來越長的鏈上。按慣例來說,一個區塊獲得六次以上“確認”時就被認為是不可撤銷的了,因為要撤銷和重建六個區塊需要巨量的計算。在第10章我們會詳細描述挖礦和信任建立的過程。

圖2-9Alice的交易包括在區塊277316
# 2.6 消費這筆交易
既然Alice的這筆交易已經成為區塊的一部分被嵌入到了區塊鏈中,它就成為了整個分布式比特幣賬簿的一部分,并對所有比特幣客戶端應用可見。每個比特幣客戶端都能獨立地驗證這筆交易是有效且可消費的。全節點客戶端可以追溯錢款的來源,從第一次有比特幣在區塊里生成的那一刻開始,按交易與交易間的關系順藤摸瓜,直到Bob的交易地址。輕量級客戶端通過確認一個交易在區塊鏈中,且在它后面有幾個新區塊來判定一個支付是否有效。這種方式叫做簡易支付驗證(參 見“簡易支付驗證(SPV)節點”)。
Bob現在可以將此交易和其它交易的結果信息作為輸入,創建新的所有權為其他人的交易。這樣就實現了對此交易的消費。舉個例子,Bob可以用Alice支付咖啡的比特幣轉賬給承包商或供應商以支付相應費用。大多數情況下,Bob用的比特幣客戶端會將多個小額支付聚合成一個大的支付,也許會將一整天的比特幣收入歸集成一個交易。這樣會將多個支付合成到咖啡店財務賬戶的一個單獨地址。圖2-10為歸集交易示例。
當Bob花費從Alice和其他顧客那里賺得的比特幣時,他就擴展了比特幣的交易鏈條。而這個鏈條會被加到整個區塊鏈賬簿,使所有人知曉并信任。我們假定Bob向在邦加羅爾的網站設計師Gopesh支付一個新網頁的設計費用。那么區塊交易鏈如圖2-10所示。

圖2-10Alice的交易成為 Joe 和 Gopesh交易的一部分
在本章中,我們看到了交易如何被構建為一個鏈,并將價值從一個所有者轉移到另一個所有者。 我們還追蹤了Alice的交易,從她的錢包中創建交易,通過比特幣網絡被傳輸,以及最終被礦工記錄在區塊鏈。 在本書的其余部分,我們將研究錢包,地址,簽名,交易,網絡和挖礦等背后的具體技術。