《精通比特幣》學習:通過場景案例來了解比特幣交易原理

今天先學習幾個基礎概念:比特幣系統由用戶、交易和礦工組成。

用戶:用戶通過密鑰控制錢包

交易:每一筆交易都會被廣播到整個比特幣網絡

礦工:通過競爭計算生成在每個節點達成共識的區塊鏈,區塊鏈是一個分佈式的公共權威賬簿,包含了比特幣網絡發生的所有的交易

消費:轉移一筆以前交易的比特幣 給 以比特幣地址所標識的新的所有者。

案例:買咖啡

上一篇筆記中提到用戶A剛剛獲得了第一筆比特幣:0.1個比特幣,現在A去咖啡店購買一杯咖啡,老闆說這杯咖啡要10塊錢,如果用比特幣支付的話需要0.1個比特幣,收銀臺屏幕上顯示了一個收款二維碼。A用他的手機比特幣軟件應用掃描這個二維碼後,顯示一筆給咖啡店0.1比特幣的支付請求,然後她按下發送鍵授權了這筆支付,幾秒鐘後收銀臺看到這筆交易,並完成交易。感覺和微信支付差不多哦,非常簡單,那這個交易再比特幣系統中到底發生了什麼?

1、每一筆比特幣交易都包含一個或多個輸入,也有一個或多個輸出,當輸入總和大於輸出總和,差額部分就是交易費。(延伸學習:比特幣網絡有兩種激勵方式,一個是挖礦獎勵,相當於發行貨幣,而比特幣總量只有2100萬個,總有一天會發行完畢。另一個激勵手段就是交易費,在中本聰的白皮書中有專門提到這兩種激勵方式)

舉例:A授權轉賬1.5個比特幣,其中1個比特幣給B。那麼輸入就是1.5個比特幣,輸出就是1個比特幣,交易費就是0.5個比特幣。

2、交易就是幣從交易輸入移至輸出,輸入是幣的來源,通常是前一筆交易的輸出,這樣隨著錢從一個地址轉移到另外一個地址,形成了一條所有權鏈條。

舉例:A輸入1.5個比特幣,輸出至B是1個比特幣,剩餘的0.5個比特幣是交易費。輸出至B的1個比特幣就是已消費的,因為幣已經從A轉移至B,被消費掉了。然後B再將上一筆交易輸出的這1個比特幣作為輸入,輸出至C是0.1個比特幣,再輸出給自己是0.8個比特幣,剩餘0.1個比特幣是交易費。也就是說輸入也可以像是給一張100的整錢,輸出給B一部分,剩下的再找零回自己的錢包。我這麼來理解:A的錢包的每一個比特幣都是由一筆筆交易輸出帶來的,這些交易輸出都可以成為A的交易輸入,比如原來有兩個交易輸出分別是1和2個比特幣,如果把兩個都作為一筆交易的輸入,那麼輸入總和就是3個比特幣,再輸出給B的時候,可以給一部分幣給B,比如1個幣,那麼3個幣扣掉交易費後,剩下的幣就是找零回到A的錢包。

3、其實A只需要指定目標地址和金額,其餘的細節錢包應用會在後臺自動完成。建立一筆交易就是生成一條數據記錄而已,包含“誰給誰轉賬多少幣”“這些幣原來是誰轉過來的”,當每一筆交易都知道每個幣的上一筆交易是誰轉過來的,這一筆交易是轉給誰了,這樣就能把每一筆交易串起來形成鏈條了,當每一筆交易再蓋上時間戳,就變成一個不可逆不可篡改的數據鏈。

4、什麼是已消費和未消費,理解:已經轉移至其他地址的幣就是已消費的,還剩餘在錢包中的幣就是未消費的。

5、儘管未消費輸出的記錄選擇由比特幣軟件自動完成,但問題是對於輕量級客戶端不保存完整的交易副本,那麼他就可能不會有所有的未消費輸出,所以當A的錢包在單個未消費輸出中不夠支付一杯咖啡的費用時,A的錢包應用就會去不同的服務者提供的API或完整索引節點去搜尋拿到A的所有未消費輸出記錄。

6、A的交易輸出是給B的,那麼是不是會被其他人攔截冒領呢,怎麼保證一定是支付給B了?所以A的交易輸出中會包含一個腳本,這個腳本說“這個輸出誰能拿出一個簽名與B的公開地址匹配上,就支付給誰”,因為只有B的錢包私鑰才能匹配B的公開地址,所以只有B才能兌換這筆輸出。

今天的學習到這裡,主要學習了區塊鏈的最小行為單元“交易”是怎麼回事,交易是怎麼構建的,交易的核心輸入輸出是什麼意思。下一次要學習交易是怎麼被加入到新區塊裡面的,以及區塊是如何被挖礦構建的,還有新的區塊被加緊區塊鏈以後,是如何歲更多區塊的添加而變成不可篡改、可信任的。


分享到:


相關文章: