區塊鏈鼻祖比特幣之4:獨特交易設計
在上面的一個簡單的交易中,我們通過數字簽名解決了訊息是誰發出的。我們沒有考慮一個問題,那就是如果尹成是個屌絲,他根本就沒有5個BTC怎麼辦?也許你很容易就想到了,驗證一下他的賬戶中的餘額是不是大於5BTC不就可以了嗎?但是比特幣中其實沒有賬戶餘額的概念,而只有交易,每個人都有歷史的所有的交易。
某人的收入並且沒有的花費的所有交易:
抽象:
對於小鄭來說,我有尹成的所有歷史交易記錄,所以我會知道他曾經收到過兩筆款7.0BTC,並且沒有支付出去,這個時候,小鄭當然就知道,尹成的錢是夠的,我可以放心的把我的牛交換給他。
一筆特殊的交易,找零給自己,所以輸出的地址為自己的:
交易鏈:
比特幣交易的基本單位是未經使用的一個交易輸出,簡稱 UTXO。UTXO 是不能再分割、被所有者鎖住或記錄於區塊鏈中的並被整個網路識別成貨幣單位的一定量的比特幣貨幣。比特幣網路監測著以百萬為單位的所有可用的(未花費的)UTXO。當一個使用者接收比特幣時,金額被當作 UTXO 記錄到區塊鏈裡。這樣,一個使用者的比特幣會被當作 UTXO 分散到數百個交易和數百個區塊中。實際上,並不存在儲存比特幣地址或賬戶餘額的地點,只有被所有者鎖住的、分散的UTXO。“一個使用者的比特幣餘額”,這個概念是一個通過比特幣錢包應用建立的派生之物。比特幣錢包通過掃描區塊鏈並聚合所有屬於該使用者的 UTXO 來計算該使用者的餘額。在比特幣的世界裡既沒有賬戶,也沒有餘額,只有分散到區塊鏈裡的UTXO。一個 UTXO 可以是一“聰”的任意倍。就像美元可以被分割成表示兩位小數的“分”一樣,比特幣可以被分割成表示八位小數的“聰”。儘管 UTXO 可以是任意值,但只要它被創造出來了,就像不能被切成兩半的硬幣一樣不可再分了。如果一個 UTXO 比一筆交易所需量大,它仍會被當作一個整體而消耗掉,但同時會在交易中生成零頭。例如,你有20 比特幣的 UTXO 並且想支付 1 比特幣,那麼你的交易必須消耗掉整個20 比特幣的 UTXO 並且產生兩個輸出:一個是支付了 1 比特幣給接收人,另一個是支付 19 比特幣的找零到你的錢包。這樣的話,大部分比特幣交易都會產生找零。想象一下,一位顧客要買 1.5 元的飲料。她掏出她的錢包並努力從所有硬幣和鈔票中找出一種組合來湊齊她要支付的 1.5 元。如果可能的話,她會選剛剛好的零錢(比如一張 1 元紙幣和 5 個一毛硬幣)或者是小面額的組合(比如 3 個五毛硬幣)。如果都不行的話,她會用一張大面額的鈔票,比如 5 元紙幣。如果她把過多的錢,比如 5 元,給了商店老闆,她會拿到 3.5 元的找零,並把找零放回她的錢包以供未來使用。類似的,一筆比特幣交易可以有任意數值,但必須從使用者可用的 UTXO 中創建出來。使用者不能再把 UTXO 進一步細分,就像不能把一元紙幣撕開而繼續當貨幣使用一樣。使用者的錢包應用通常會從使用者可用的 UTXO 中選取多個可用的個體來拼湊出一個大於或等於一筆交易所需的比特幣量。就像現實生活中一樣,比特幣應用可以使用一些策略來滿足付款需要:組合若干小的個體,算出準確的找零;或者使用一個比交易值大的個體然後進行找零。所有這些複雜的、由可支付的 UTXO 完成的組合,都是由使用者的錢包自動完成,並不為使用者所見。只有當你以程式設計方式用 UTXO 來構建原始交易時,這些才與你有關。被交易消耗的 UTXO 被稱為交易輸入,由交易建立的 UTXO 被稱為交易輸出。通過這種方式,一定量的比特幣價值在不同所有者之間轉移,並在交易鏈中消耗和建立 UTXO。一筆比特幣交易通過使用所有者的簽名來解鎖 UTXO,並通過使用新的所有者的比特幣地址來鎖定並建立 UTXO。
對於輸出和輸入鏈來說,有一個例外,它是一種特殊的交易型別,稱為coinbase 交易。這是每個區塊中的首個交易。這種交易存在的原因是作為對挖礦的獎勵而產生全新的可用於支付的比特幣給“贏家”礦工。
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 加群註明CSDN
尹成學院微信:加群註明CSDN
相關文章
- 區塊鏈鼻祖比特幣之5:獨特交易模式的優勢與困境解決區塊鏈比特幣模式
- 區塊鏈鼻祖比特幣之7:區塊鏈在比特幣中的真正用意區塊鏈比特幣
- 區塊鏈鼻祖比特幣之11:比特幣困難度區塊鏈比特幣
- 區塊鏈鼻祖比特幣之2:可分割與去中心化區塊鏈比特幣中心化
- 區塊鏈鼻祖比特幣之1:比特幣的內涵與價值區塊鏈比特幣
- 區塊鏈鼻祖比特幣之13:比特幣原始碼編譯詳解區塊鏈比特幣原始碼編譯
- 區塊鏈鼻祖比特幣之10:merkle tree與spv節點區塊鏈比特幣
- 區塊鏈鼻祖比特幣之9:挖礦、礦池與比特幣的產生區塊鏈比特幣
- 區塊鏈鼻祖比特幣之12:(SPV) 節點與Bloom 過濾器區塊鏈比特幣OOM過濾器
- 區塊鏈程式設計go(四)-交易區塊鏈程式設計Go
- 區塊鏈鼻祖比特幣之3:驗證訊息真偽的數字簽名區塊鏈比特幣
- 資源 | 區塊鏈比特幣設計素材合集區塊鏈比特幣
- 區塊鏈鼻祖比特幣之6:詳解比特幣的密碼攻擊與分散式雙花攻擊區塊鏈比特幣密碼分散式
- 比特幣和區塊鏈(2):比特幣中區塊鏈的實現比特幣區塊鏈
- 比特幣與區塊鏈比特幣區塊鏈
- 1.8 區塊鏈交易流程區塊鏈
- 區塊鏈入門 ③ - 交易區塊鏈
- 區塊鏈數字資產交易所開發功能特點區塊鏈
- 區塊鏈鼻祖比特幣之8:分叉帶來的雙花支付、51%攻擊與解決辦法區塊鏈比特幣
- 什麼是區塊鏈的鏈外交易和鏈內交易區塊鏈
- 區塊鏈架構設計區塊鏈架構
- 區塊鏈程式設計(二)區塊鏈程式設計
- 1.4 區塊鏈架構特點區塊鏈架構
- 區塊鏈入門——比特幣科普區塊鏈比特幣
- 區塊鏈技術開發公司談區塊鏈保險的特點區塊鏈
- 關於區塊鏈技術的12個誤區 區塊鏈就是比特幣嗎?區塊鏈比特幣
- 區塊鏈去中心化等特點區塊鏈中心化
- 區塊鏈多幣種錢包開發區塊鏈交易平臺搭建區塊鏈
- 區塊鏈技術開發 區塊鏈錢包交易所開發區塊鏈
- 在Go中構建區塊鏈 第4部分:交易1Go區塊鏈
- 區塊鏈數字版權,區塊鏈數字藏品交易系統開發區塊鏈
- 上海區塊鏈系統開發/區塊鏈交易所繫統開發區塊鏈
- 區塊鏈資產交易所開發區塊鏈應用系統研發區塊鏈
- 區塊鏈交易所開發跨鏈交易系統開發公鏈搭建區塊鏈
- 走近比特幣:一個故事看懂“區塊鏈”比特幣區塊鏈
- 比特幣學習筆記——————7、區塊鏈比特幣筆記區塊鏈
- 比特幣區塊鏈的工作原理–資訊圖比特幣區塊鏈
- 區塊鏈落地應用開發,區塊鏈幣幣撮合交易系統開發區塊鏈