摘要:電子貨幣比特幣白皮書中對電子貨幣進行了定義將一枚電子貨幣定義為數字簽名鏈。電子貨幣從所有者轉移給下一個人是通過,所有者使用私鑰,對交易和下一個人的公鑰進行數字簽名,并將數字簽名附在這枚電子貨幣數字簽名鏈的后面。
在上篇文章中,著重介紹了數字簽名,在這篇文章中,深入到比特幣交易源碼的部分進行探究,并回答以下問題:
如何給電子貨幣一個單位。
如何將一個電子貨幣進行分割成多個電子貨幣。
如何將多個電子貨幣進行整合成一個電子貨幣。
如何表示一個沒有被花費電子貨幣。
電子貨幣的交易流程是什么。
定義有一些關鍵詞,翻譯成中文后,完全失去了原來的意思了。本文約定關鍵詞如下:
inputs: 交易輸入的集合,由一個或多個 input 組成
input: 一個交易輸入。一個交易輸入通常是由一個 UTXO 和數字簽名等信息組成
outputs: 交易輸出的集合
output: 交易輸出的新的電子貨幣。通常是由電子貨幣的值和驗證數字簽名的腳本組成
double-spend: 雙花。一枚電子貨幣可能被兩次或多次
UTXO: Unspent Transaction Output 的縮寫。通常引用一個 output
tx: Bitcoin transaction 的縮寫。交易。
txid: Transaction id 的縮寫。指的是交易的 hash 值。
satoshi: 1 BTC = 100,000,000 satoshi
電子貨幣比特幣白皮書中對電子貨幣進行了定義:
將一枚電子貨幣定義為**數字簽名鏈**( a chain of digital signatures)。電子貨幣從所有者轉移給下一個人是通過,所有者使用私鑰,對交易 Transactions 和下一個人的公鑰進行數字簽名,并將數字簽名附在這枚電子貨幣(數字簽名鏈)的后面。收款人對數字簽名進行檢驗,就能校驗自己是否收到了電子貨幣。
一枚電子貨幣,從被創造出來開始,在不斷地被交易,被附上數字簽名。我們可以等價的認為一枚電子貨幣,就是一條數字簽名鏈。如:
Owner 0"s 將他的數字簽名和 Owner 1"s 的公鑰附在了第一筆交易的尾端(從左到右)
比特幣系統驗證無誤后,這枚電子貨幣就屬于了 Owner 1"s。
Owner 1"s 將他的數字簽名和 Owner 2"s 的公鑰附在了第二筆交易的尾端
比特幣系統驗證無誤后,這枚電子貨幣就屬于了 Owner 2"s。
第三筆交易也是類似...
使用電子貨幣進行交易在比特幣中,一枚電子貨幣的價值由 value 來衡量,單位是 satoshi。1 BTC = 100,000,000 satoshi。一筆交易本質就是價值的轉移,即所有者對他的一枚或多枚電子貨幣進行數字簽名,即 inputs。比特幣系統驗證后,創建一枚或多枚屬于收款人的電子貨幣,即 outputs。注意一枚電子貨幣,就像一張人民幣一樣,不能撕開成兩半用,但是可以將其兌換成若干個等值的電子貨幣。
舉個例子:Alice 支付 Bob 價值 0.2 BTC 的電子貨幣,Bob 收到一個 0.15 BTC 的電子貨幣,并且找零給 Alice 一個 0.05 BTC 的電子貨幣。
Alice 創建一次交易。
Alice 選擇一枚價值 0.2 BTC 的電子貨幣作為本次交易的 inputs。
Alice 付給 Bob 一枚價值 0.15 BTC 的電子貨幣,并找零給自己 0.05 BTC 的電子貨幣,這部分是本次交易的 outputs。
比特幣系統驗證通過后,Bob 就收到了一枚 0.15 BTC 的電子貨幣。
當這筆交易結束后,Alice 那一枚 0.2 BTC 的電子貨幣,就被比特幣系統這個“造幣廠”作廢了,而“造幣廠”同時發行兩枚新的電子貨幣,一枚 0.15 BTC 的電子貨幣給了 Bob,一枚 0.05 BTC 的電子貨幣找零給了 Alice。只有不被“造幣廠”作廢的電子貨幣,才能用于交易,這樣就能夠防止 double-spend。“造幣廠”發行的電子貨幣稱為 output,其中,沒有作廢的電子貨幣稱為 Unspent Transaction Output,縮寫為 UTXO。
交易的數據格式下圖這是一筆早期比特幣交易。
主要包含四個獨立的部分:
黃色部分表示的是:hash - txid(Transaction ID)
藍色大括號表示的是:交易的描述信息和元數據
粉紅色部分表示的是:inputs
綠色部分表示的是:outputs
transaction 的一般格式
名稱 | 描述 |
---|---|
version | 比特幣系統的版本號 |
hash | 本次交易的 hash 值 |
inputs | 由 input 組成的數組 |
outputs | 由 output 組成的數組 |
lockTime | 值為 0,立刻執行交易;值不為 0,在指定區塊高度或時間戳執行交易。 |
output 的數據格式
名稱 | 描述 |
---|---|
value | 電子貨幣的價值,單位 BTC |
scriptPubKey | 通常是收款人公鑰等組成的鎖定腳本 |
input 的數據格式
名稱 | 描述 |
---|---|
prevTxId | 上一筆交易的 hash 值 |
outputIndex | 上一筆交易 outputs 的 index |
scriptSig | 通常由付款人的數字簽名和收款人的公鑰等組成的解鎖腳本。 |
注意,input 實際上是一個引用。在計算交易時,是通過 prevTxId 和 outputIndex 屬性,找到上次交易的 output 作為本次交易實際的 input。
參考文章:
Bitcoin: A Peer-to-Peer Electronic Cash System
Transaction
How a Bitcoin Transaction Works
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/23953.html
摘要:比特幣作為一個點對點電子現金系統,卻需要一個中心化的交易所來撮合交易。具有比特幣精神的交易所具有比特幣精神的交易所應該不需要注冊不需要充值到交易所指定的錢包訂單撮合成功后資金應該回到用戶自己的錢包里面,而不是需要審批才能提走。 比特幣作為一個點對點電子現金系統,卻需要一個中心化的交易所來撮合交易。這雖然不符合點對點的精神。但是依然被客戶迅速的接受了。 中心化交易所的風險 資產安全 封閉...
摘要:書接上回區塊鏈筆記基礎概念掃盲,我們討論了關于比特幣以及區塊鏈的許多基礎概念,可能通過我略帶類比的描述,讓你初步有了一些概念,但是對于一個比特幣到底長什么樣以及如何使用比特幣進行交易可能還不是很清楚,說的直白點就是聽過豬叫,但沒吃過豬肉。 解惑是每個人都在走的一條路,可誰又能解這漫漫無期呢?路上總是麻醉的人多,釋懷的人少。 書接上回區塊鏈筆記(1)基礎概念掃盲,我們討論了關于比特幣以及...
摘要:文章前部分適合想了解比特幣和區塊鏈的非開發人員,整篇文章適合想轉入比特幣與區塊鏈相關開發的技術人員。張三和李四均可通過查詢區塊鏈網絡確認轉賬成功。 ??常見的比特幣與區塊鏈入門文章大約分為兩類,一類是面向非開發人員的科普讀物;另一類是面向開發人員的技術指南。前者易流于淺表,讓讀者接觸了一堆名詞和概念,卻無法對比特幣與區塊鏈有個直觀的認識;而后者又往往直接進入細節,使開發人員一葉障目不能...
摘要:比特幣主網絡現在已經有數百大小。加密錢包密碼應該包括位以上,且不要使用生日名字證件號碼等易被猜測的密碼。警告遺忘密碼等于丟失所有比特幣。例如比特幣免費領取測試比特幣。 showImg(https://upload-images.jianshu.io/upload_images/4834364-4db38e8ae57ed028.png?imageMogr2/auto-orient/str...
閱讀 980·2023-04-25 23:55
閱讀 2702·2023-04-25 14:13
閱讀 3295·2019-08-26 13:47
閱讀 2968·2019-08-23 18:16
閱讀 625·2019-08-23 17:20
閱讀 3227·2019-08-23 16:55
閱讀 3144·2019-08-22 15:39
閱讀 3192·2019-08-20 18:10