文章專區

2017-11-01顛覆金融業的區塊鏈 575 期

Author 作者 作者∕曲建仲
由於比特幣不適合即時、大量的小額交易,而且在法規上存有疑義、難以被主管機關接受,因此有人將比特幣的部分技術(主要是保護資料無法篡改的技術)抽離出來尋找新的應用,並且取了新名字「區塊鏈(block chain)」,也有人擴大區塊鏈的定義,把前面提到的交易識別確認、資料無法篡改、節點資料同步三種技術統稱為「區塊鏈」。 所以到底這三種技術是怎麼做的呢?
 

公開金鑰加密

公開金鑰加密(public key encryption) 的每一位使用者必須自行產生自己所 擁有的金鑰對(key pair), 包括一把「私有金鑰(private key)」與一把「公開金鑰(public key)」,加密與解密使用不同的金鑰,使用者必須秘密地保存自己的私有金鑰,並且在網路上發佈公開金鑰。公開金鑰可以用來加密,也可以用來驗證,驗證的流程如圖一所示,傳送端使用自己的「私有金鑰」對文件(明文)進行加密(簽署文件)產生密文再傳送到網路中,接收端使用傳送端的公開金鑰解密(確認簽署者)得到明文,如果可以解密代表確認文件真的是傳送端的某人傳送出來的,數位簽章就是使用這種方式來驗證文件的真偽。

 

 

交易識別確認

假設Alice 支付Bob金額10 btc購買一顆蘋果,則她的手機應用程式(比特幣電子錢包)使用Alice自己的私有金鑰將訊息加密,這個動作稱為「數位簽章(digital signature)」,想想這不就好像我們在交易文件上簽名一樣嗎?

接下來再將訊息傳送到節點A,節點A再使用Alice的公開金鑰將訊息解密,如圖二所示,如果真的可以解開代表這個訊息確認是由Alice發出來的,而且Alice也不可否認,因為只有 Alice 的公開金鑰能夠解開Alice私有金鑰加密過的訊息。

 

比特幣帳本

比特幣帳本是由一個一個的「區塊」連接而成的「鏈結」,因此這種技術又稱為「區塊鏈」,如圖三所示,每一個區塊記錄著付款人與收款人以及交易金額,每一個區塊都記錄了許多筆交易,區塊與區塊之間再鏈結起來,例如:區塊3 鏈結到區塊2,再鏈結到區塊1,最後再鏈結到區塊0。

值得一提的是,圖三畫出來的只是示意圖,實際上比特幣帳本並不是像Excel 一樣的表單,基本上比特幣是 一種虛擬電子貨幣,因此比特幣帳本其實就是一個電腦程式,裡面有許多欄位,如圖四所示,其中包括:

 



1.表頭(header)
→“previousblockhash”:前一個區塊的雜湊值(hash value)。
→“difficulty”:雜湊(hash)必須小於「困難指數(difficulty)」。
→“time”:代表這個區塊形成的時間,以unix作業系統格式表示。
→“nonce”:計算雜湊值所使用的參數。
→“merkleroot” :儲存「交易(trans- action)」的「摘要(summary)」。

2.交易 →“tx”:儲存「交易」的欄位,每一個區塊可以儲存多筆交易。

3.其他欄位
→“confirmations”:代表這個區塊已經被35561個節點(node) 確認過了!
→“height”:代表這個區塊在比特幣區塊鏈中的排序為第 277316個。

4. “hash”:利用雜湊演算法(hash algorithm)計算出雜湊值。

雜湊演算法雜湊演算法(hash algorithm)是一種從資料中建立「數位指紋(digital fingerprint)」的方法,可以將任何長度的原始資料轉換成一個長度較短的雜湊值,而且也很難由雜湊值反推原始資料,等於是把原始資料加密了一樣,某一段資料對應到某一個雜湊值,不同資料具有不同雜湊值,就好像不同人具有不同指紋一樣,因此稱為「數位指紋」。我們可以利用雜湊值來確認資料有沒有被篡改,同時因為很難由雜湊值反推原始資料,因此也很難篡改。……【更多內容請閱讀科學月刊第575期】