概要
位元幣誕生于 2009 年, 已經有 10 年多的歷史. 但是, 依然是知道的人多, 了解其運作原理的人少.
區塊鏈的概念是伴隨著位元幣的流行而興起的, 但是區塊鏈并僅僅是位元幣, 它是更廣泛的技術. 位元幣其實就是區塊鏈的一種應用形式, 也是目前最成功的形式.
位元幣中的概念其實并不復雜, 只是這種去中心化的形式和我們已經熟悉的方式大相徑庭, 才會覺得難于理解.
我根據自己的理解整理了位元幣中的相關概念, 并將自己對其中流程的理解整理如下, 希望能有所幫助.
位元幣中的一些概念
這些概念是理解位元幣整個運作的基礎, 不先理解這些概念, 是無法理解位元幣的運作機制的.
地址(Address)
用戶可以產生任意數量的私鑰, 并基于這些私鑰構建一個公鑰.
地址是基于一個公鑰得到的, 并且被用來標識位元幣系統中一筆金額的接收者 一個公/私鑰對被用來唯一地標識某個地址(以及相應的一筆金額)的擁有者
輸出(Output)
一個輸出是一個元組, 包含一定數額的位元幣以及一個使用條件.
絕大多數情況下, 使用條件需要一個和某地址對應私鑰相關聯的有效簽名
輸入(Input)
一個輸入是一個元組, 包含對前面一個已經創建的輸出的參考, 以及用于該輸出中使用條件的一組引數(簽名) 這些引數將證明交易創建者有權使用所參考的輸出
未花費的交易輸出(UTXO, Unspent Transaction Output)
UTXO 是位元幣中很重要的概念. 位元幣沒有賬戶余額的概念, 每個賬戶(地址)的余額就是這個地址相關的所有 UTXO 中輸出的值總和
交易(Transaction)
交易是一個資料結構, 描述了一次位元幣的轉移(使用者到接收者)的情況.
一個交易包含很多輸入和新創建的輸出, 這些輸入將導致所參考的輸出變為已使用(即: 從 UTXO 中洗掉), 此外, 新創建的輸出將被增加到 UTXO 中.
作業量證明(Proof-of-Work)
作業量證明機制使得一個參與者可以向其他參與者證明, 他已在一段時間內持續使用了一定數量的計算資源
區塊(Block)
一個區塊是一個資料結構, 在一個節點區域狀態之上累計的改變將打包在區塊中并傳遞給整個網路.
一個區塊包含了一組交易, 一個指向上一個節點的參考, 和一個亂數(即在作業量證明階段找到的亂數)
一個區塊包含了本區塊創建者(礦工)所接受并存放在自己記憶池中的所有交易, 這些交易都是在上一個區塊之后產生的.
一個節點在找到一個有效的亂數來滿足它的作業量證明函式后, 將廣播一個區塊
獎勵交易(Reward Transaction)
在一個區塊內的第一個交易被稱為獎勵交易, 發現該區塊的礦工將獲得一定數量的新位元幣以獎勵它確認了一組交易.
獎勵交易有一個名義上的輸入, 其輸出的總和包括一個定額的補貼加上被該區塊所確認的所有交易的交易費之和.
位元幣的交易有一個規則: 所有輸入之和必須大于或等于所有輸出之和. 只有獎勵交易是唯一的 例外
Blockchain
從創世區塊開始, 到某個葉節點為止的最長路徑, 被稱為區塊鏈.
區塊鏈的作用是維護一個一致的交易歷史, 而所有節點最終都將在唯一的區塊鏈(交易歷史)上達成一致
位元幣如何完成交易
位元幣說到底就是一種虛擬貨幣, 最終目的是為了完成交易.
所以, 理解了它是怎么交易的, 也就能對它放心使用.
下面用問答的形式來解釋虛擬幣的交易
交易的資訊包含哪些?
位元幣的一次交易包含可以同時包含多個買方和多個賣方, 因為是電子貨幣, 所謂一次交易其實就是一個描述交易的資料結構, 這個資料結構包含:
- 一個或者多個 輸入, 即買方
- 一個或者多個 輸出, 即賣方
- 其他一些資訊, 比如交易有效期等等
- 輸入的總金額一般都大于輸出的總金額
注 輸入和輸出的概念見上一節(位元幣中的一些概念)內容.
是不是輸入的總金額總是大于輸出的總金額?
因為位元幣是去中心化的, 所以交易需要交易參與者以外的人來確認.
所以, 一般的交易中, 輸入的總金額總是大于輸出的總金額, 多余的那部分位元幣用于獎勵給參與確認交易的客戶端(礦工)
但是, 有些交易是特殊的, 比如在每個區塊中的第一個交易, 這個交易中輸入的總金額為 0, 輸出的金額是獎勵給打包區塊礦工的位元幣數量.
目前是 50 個, 這個數量每 4 年減半一次, 這也確保了位元幣的數量是有限的, 不會無限增長下去.
什么是區塊, 區塊和交易有什么關系?
區塊是多個交易的打包, 打包進區塊的交易都是確認的交易, 不能再修改.
要獲取創建區塊的權利, 需要挖礦, 所謂挖礦, 就是完成作業量證明, 位元幣的作業量證明就是比誰先算出符合要求的 HASH 值.
算出這個值, 就有權利打包下一個區塊, 并獲得相應的位元幣獎勵.
位元幣現在的市值這么高, 所有才有那么多愿意去挖礦的礦工去嘗試不斷的計算符合要求的 HASH 值
不斷增長的區塊怎么存盤?
每次新創建的區塊都是接在上一個之后, 新的區塊除了保存自己的 HASH 值之外, 也保存著上一個區塊的 HASH 值.
所有的區塊都完整的存盤在所有使用位元幣的客戶端上, 所有的區塊是一個鏈式的結構, 這也是區塊鏈這個名字的由來.
由于每個人都有完整的區塊鏈記錄, 所有造假才會困難, 除非能修改 50% 以上的客戶端的區塊鏈記錄.
同時有 2 個區塊同時創建會怎么樣?
位元幣是分布式的, 挖礦也沒有限制, 誰都可以參與, 所以同時有 2 個或者多個區塊同時被創建也很正常.
但有多個區塊同時被創建時, 也就是區塊鏈出現分叉時, 位元幣是這么處理的: 如果出現分叉, 那么分叉之后, 先達到 6 個區塊的那個分支, 被認為是主鏈,
另一個分叉被廢棄. 被廢棄的分叉上的交易, 如果和主鏈上的交易沖突, 就廢棄, 不沖突就放在交易池, 等待下一次新的區塊打包時再確認.
位元幣的交易時間多長?
位元幣的區塊 10 分鐘打包一次, 一個交易最多 10 分鐘就能確認, 但是由于存在分叉的風險, 一般 6 個區塊之后基本就能完全確認交易.
也就是說, 位元幣的交易, 最多需要將近 1 個小時才能完全確認, 這個也是位元幣不適合快速交易的缺點.
接下來.....
位元幣是區塊鏈的一次成功嘗試, 雖然它有很多的缺點, 但是它首次讓去中心化的貨幣成為現實.
關于它的疑問, 可以留言在評論中, 我會力所能及的盡量回復, 如果誰能幫忙回答, 也請不吝賜教!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/5266.html
標籤:區塊鏈
