科技大補帖
eLearning

數位黃金比特幣
2020.11.01

作者∕曲建仲

 

誕生僅八年的比特幣(bitcoin)坐實了「數位黃金」之名,於 2017 年 10 月 20 日漲到歷史新高 5,932 美元,價值已超越貨幣史中地位悠久的黃金。如果我們把每 1 比特幣對照每 1 盎司黃金,則比特幣比黃金還要貴了幾倍,真的是大勝黃金,雖然這樣的對比喻有點奇怪,但是所有的媒體都是這麼形容的。每次聽到比特幣,總會提到區塊鏈,到底什麼是比特幣?什麼又是區塊鏈(block chain)?而區塊鏈是「區塊(block)」了什麼?又「鏈(chain)」了什麼呢?

 

比特幣的起源

比特幣的發明人中本聰(Satoshi,筆名,其真實姓名目前尚無定論)在 2008 年發表了一篇名為「比特幣:一種對等式電子現金系統(Bitcoin: A Peer-to-Peer Electronic Cash System)」的論文,提出了稱為「比特幣」的電子貨幣及其演算法,由於比特幣不適合即時大量的小額交易,而且比特幣在法規上存有疑義難以被主管機關接受,因此有人將比特幣的部分技術抽離出來尋找新的應用,並且取了新名字「區塊鏈」,是此名稱的由來。由於區塊鏈是源自於比特幣,因此要了解什麼是區塊鏈,就必須先從什麼是比特幣談起。

假設 Satoshi 創造比特幣與比特幣帳本(BTC ledger)並且給自己 50 btc,他想要用 20 btc 向 Alice 購買一本書籍,並且記錄在比特幣帳本內,如圖一所示,Alice 第一次聽過有這種東西,她好奇的問 Satoshi:「這個叫什麼幣的聽起來好酷,但是我要怎麼用它來和別人買東西呢?」

 

▲圖一:Satoshi 創造比特幣與比特幣帳本,並且向 Alice 購買一本書籍。(資料來源:杜宏毅博士,Block Chain 的前世今生與未來,臺灣網路認證公司)

 

Satoshi 告訴 Alice:這個很簡單,妳可以用同樣的方法,支付 Bob 金額 10 btc 購買一顆蘋果,並且也記錄在我的比特幣帳本內,如圖二所示。既然比特幣真的可以買到東西,因此 Alice 很開心的收下了這種第一次聽過的虛擬貨幣。

 

▲圖二:Alice 支付 Bob 金額 10 btc 購買一顆蘋果。(資料來源:杜宏毅博士,Block Chain 的前世今生與未來,臺灣網路認證公司)

 

後來 Alice 與 Bob 想想,不對呀!我們彼此之間的交易帳本都儲存在 Satoshi 的電腦裡,都是他說了算,我們有什麼保障呢?聽到了這樣的質疑,Satoshi 說:沒關係,那我把比特幣帳本複製給你們,如圖三所示,讓你們手上也有一份,這樣就可以了吧!

 

▲圖三:Satoshi 把比特幣帳本複製給 Alice 和 Bob。(資料來源:杜宏毅博士,Block Chain 的前世今生與未來,臺灣網路認證公司)

 

但是這樣真的就沒有問題了嗎?

1. 將比特幣帳本複製給所有使用者,那電腦記憶體要多少才夠?

2. 每一筆交易都要通知所有使用者,那網路的反應夠快嗎?

3. 使用者未必熟悉電腦操作,如何使用電腦進行交易?

 

比特幣的運作方式

為了解決最後的幾個問題,Satoshi用這樣的方式來處理,如圖四所示:

 

▲圖四:比特幣的運作方式。(資料來源:杜宏毅博士,Block Chain 的前世今生與未來,臺灣網路認證公司)

 

1. 由 Satoshi 發起建位第一個節點(Node),節點是指伺服器(Server)以及伺服器內安裝的「節點軟體(Node soware)」與「比特幣帳本(BTC ledger)」。

2. 號召網際網路上熟悉電腦操作的自願者在世界各地建立節點,同時在伺服器(server)內安裝節點軟體與比特幣帳本。

3. 節點與節點之間經由「對等式網路連線(peer to peer network connection)」軟體進行資料交換。

4. 使用者安裝手機應用程式(APP)「比特幣電子錢包(BTC wallet)」,並且以手機付款與收款,使用非常簡單。

5. 手機應用程式將交易內容回傳至節點,節點再將交易內容「溢散傳遞(propagating)」給所有的節點。

 

因此在比特幣的生態系裡,所有的節點是由網際網路上熟悉電腦操作的自願者在世界各地建立,節點是指伺服器以及伺服器內安裝的「節點軟體(Node soware)」與「比特幣帳本」。使用者安裝手機應用程式「比特幣電子錢包(BTC wallet)」,並且以手機付款與收款,資料經由網路傳送給節點,再以溢散傳遞的方式傳遞給所有的節點,最後使全世界的節點內比特幣帳本是同步的。

 

比特幣與現有銀行體系的差異

如果我們將比特幣的生態系比喻為現在的銀行體系,那網際網路上的節點就好像各家銀行的分行一樣,唯一的不同是在目前的銀行體系裡,世界各國都有中央銀行來管理各家銀行,屬於「集中式拓撲(centralized topology)」,而比特幣的生態系沒有中央銀行這樣的角色,而是由分散在世界各地的節點互相溝通自主管理,屬於「分散式拓撲(distributed topology)」,也有人稱為「非集中式拓撲(decentralized topology)」。

其實我們靜下來想想,如果世界上真的有一個大帳本,可以記錄每一個人所有的資產與每一筆交易,而且大家都信任這個帳本,我們平常使用的紙鈔根本就是多餘的東西,其實現在我們常用的悠遊卡、ApplePay 這種電子貨幣就可以取代紙鈔,唯一的不同是目前我們所使用的電子貨幣,仍然是在現有的銀行體系裡運作,中央銀行與各家銀行仍然是主角,屬於集中式拓撲,與比特幣的分散式拓撲不同,這是兩者之間最大的差異。

 

比特幣的問題

前面的方法看起來似乎可行,但是仍然隱藏了許多問題,例如:

1. Alice 支付 Bob 金額 10 btc 購買一顆蘋果,我們如何確認這個購買的訊息真的是 Alice 發送出來的?另外,如果隔天 Alice 後悔了,否認她曾經做過這件事怎麼辦?最常發生這種事情的就是早期投資人經由電話向證券公司的營業員下單買股票,結果收盤股票跌了,這個時候投資人否認曾經打過這通電話,為了解決這個問題,證券公司只有用電話錄音,但是在虛疑的電子世界裡沒辦法錄音,那麼要用什麼方法讓「使用者不可否認」呢?

2. 比特幣帳本是儲存在網路上熟悉電腦操作的自願者所架設的節點(伺服器)內,這是很重要的東西,就好像銀行裡的帳本一樣,這麼重要的東西,我們如何信任這些熟悉電腦操作的自願者不會去篡改呢?

3. 比特幣的節點是散佈在整個網路的世界裡,當使用者進行交易改變了某一個節點的比特幣帳本,必須把這個改變通知散佈在世界各地的節點,要如何把這個改變通知散佈在世界各地的節點呢?

 

比特幣的三大特性

上面提到的三個問題,也就是比特幣的三大特性,我們簡單說明如下:

1. 交易識別確認:使用公開金鑰驗證機制,確認這筆交易的真實性,使用者不可否認,而且是屬於「可驗證的匿名制」,保留貨幣交易的特性。

2. 資料無法篡改:使用「區塊」與「鏈結」確保交易資料無法篡改。其中「區塊」主要是利用計算「條件雜湊(conditional hash)」很不容

易來保護資料,而「鏈結」主要是區塊與區塊之間利用「前區塊雜湊(previous block hash)」鏈結起來,由於篡改區塊內的交易資料已經很困難,區塊與區塊之間又被鏈結起來,等於篡改一個區塊要把所有的區塊都一起篡改,因此在合理的時間內根本不可能。

3. 節點資料同步:使用「工作量證明(Proof of Work, POW)」達成收斂同步,由於比特幣使用「分散式拓撲」,因此保留總困難度高的分支,刪除總困難度低的分支最後達成節點資料同步。

 

比特幣就是結合了上面三種技術而形成的虛擬貨幣,常然一定有其他人想到用類似的技術發展其他的虛擬貨幣,因此才有微軟、英特爾與摩根大通結盟打造「以太坊(ethereum)」提出的「以太幣(ethercoin)」,以及前 Google 工程師 Charles Lee 創造的「萊特幣(litecoin)」等新的虛擬貨幣問市,目前市面上流通的虛擬貨幣大約有十種之多。

 

 

⇠上一篇:網路安全技術與比特幣

顛覆金融業的區塊鏈:下一篇⇢