交易是比特幣區塊鏈的基本要素,現在讓我們來看看比特幣中單筆交易的細節,比特幣採用的是Unspent Transaction Output(UTXO) 模型,每次發生交易時,新的交易紀錄會寫在區塊鏈網絡中,等交易被驗證確認後,才算是完成交易,每筆交易的輸入輸出被稱為未經使用的交易輸出Unspent Transaction Output(UTXO),並且交易會引用已存在的UTXO去生成新的輸入。
比特幣區塊鏈的各個區塊之間透過hash(你也可以叫它散列函數)連接,一個區塊中會有hash和previous hash,previous hash是前一個區塊的hash,前一個區塊的hash會作為下一個區塊的previous hash,形成區塊鏈的連接。
接著,我們探討比特幣區塊鏈中有哪些參與者,也就是所謂的節點(node),節點是提供、維護「共同總帳」的單位,因此在區塊鏈中參與者共分為兩個角色,第一個是創造交易或價值轉移的參與者,第二個是稱為礦工的參與者,區塊鏈中的每個節點都可以看到「共同總帳」中交易的紀錄,每當新增一筆新資料時,其他節點會立刻被告知,並同步更新帳本交易資料,因此大家看到的帳本內容會是相同的。
交易會經過驗證(Verify)和廣播(Broardcast),才會記錄到區塊鏈中。 許多交易會形成一個區塊,許多區塊再通過數據鏈(hash)形成區塊鏈,再形成區塊鏈的過程中,區塊會經歷一個所謂的 「共識過程」,選擇將要加入到區塊鏈中的下一個區塊,被選中的區塊會被驗證,並加入到現在的區塊鏈中,驗證和共識過程都是由礦工來執行的,大家可能跟比特幣不太熟,但多多少少也聽過挖礦。
交易的驗證由所有礦工獨立進行,驗證過程涉及超過20個標準,包括資料大小、語法等,其中還有一些標準像是:引用成為新輸入的UTXO是否有效或是輸入量和輸出量是否相符合等,通過驗證交易、廣播新建立的區塊來達成共識,礦工們會得到比特幣的獎勵,輸入UTXO跟輸出UTXO間的差額(也就是手續費)會歸礦工所有。
無效的交易會被拒絕,不會被廣播,所有有效的交易都會被加入到交易池中,礦工會從池中選擇一組交易來建立新區塊,但是,如果每個礦工都將自己建立的新區塊加入到區塊鏈中,會造成區塊鏈中存在許多的分支,從而導致狀態不一致。區塊鏈是一個個區塊透過連續的鏈連接,因此,我們需要一個解決方案,也就是讓所有礦工競爭解決難題,來決定誰有建立下一個區塊的權利。
我將在下一篇帶大家了解「工作量證明機制(Proof of Work,POW)」,那我們明天見~