- 區塊鏈應用開發指南:業務場景剖析與實戰
- 熊麗兵 董一凡等
- 695字
- 2022-07-28 20:17:55
1.15.3 比特幣中的交易
我們每個人的銀行賬戶都有一個賬戶余額的概念,可以直接知道賬戶中有多少錢。發生轉賬的時候,轉出則導致賬戶余額變少,轉入則導致賬戶余額變多。比特幣網絡和傳統的銀行記賬不太一樣,比特幣的每一筆交易記錄的是轉賬數量,具體來說,是從一個或多個賬戶轉賬到一個或多個賬戶。比特幣的區塊鏈數據庫中存儲的就是這樣的一筆一筆的轉賬記錄。如果需要知道一個賬戶的余額,那么就把所有轉入這個賬戶的比特幣數量減去所有轉出的比特幣數量即可。
在比特幣轉賬的時候,有一個傳統的銀行賬戶余額系統沒有出現過的問題。由于一個賬戶里沒有余額,所以一個賬戶發起轉賬的時候,區塊鏈數據中只記錄有這個賬戶的轉入記錄。我們沒辦法像傳統銀行一樣,直接基于一個余額扣掉轉出數量即可。這時候我們只能說要把這個賬戶中的某幾條轉入記錄一起轉出去。這就遇到一個問題,幾個轉入記錄的數量不會正好等于轉出數量,通常都是多于轉出數量。比特幣解決這個問題的辦法非常巧妙,由于比特幣支持一筆轉賬中轉給多個賬戶,所以可以在轉出賬戶中加上自己的這個地址,把多余的部分再轉回來。等于自己給自己發起了一筆轉賬。
舉個例子,A賬戶歷史上一共收到過三筆轉賬,分別是2枚、2枚、3枚比特幣。這時候賬戶A需要轉賬給B賬戶6枚比特幣。處理方法就是以這三筆轉賬記錄為依據,生成一個新的轉賬記錄,這個轉賬記錄中有兩條信息,一條是給B賬戶6枚比特幣,一條是給A賬戶也就是是自己1枚比特幣。
由于轉賬記錄不是簡單的一對一,所以比特幣的轉賬記錄使用了一個類似Foth編程語言的腳本語言,可以寫簡單的邏輯。Foth語言是查爾斯·H.摩爾(Charles H. Moore)在1970年發明的,比特幣在這里借用了這種語言的語法。