比特幣是什麼?讓發明人中本聰的論文告訴你(上)

評論
REUTERS/Benoit Tessier
REUTERS/Benoit Tessier
評論

原文《Bitcoin: A Peer-to-Peer Electronic Cash System》,譯文《比特幣:端對端電子現金系統 I》刊登於 Medium,INSIDE 獲授權轉載。譯者林聖祐,準資科所學生,期盼能透過資料認識世界,用資料改變世界。

Photo credit: 林聖祐

隨著比特幣今年暴漲,開始看到有更多人對用區塊鏈技術實現的加密貨幣產生興趣,所以就趁著連假把比特幣發明人 -- 中本聰 於 2008 年發表的 比特幣白皮書 重新翻譯,提供給大家參考!此篇為論文的前半部分,下半部分在 下一篇

白皮書的內容為當初中本聰建構比特幣時的架構,現今的比特幣系統與白皮書有部分出入,詳情可參考 比特幣網站 及相關論壇。

若內容有任何錯誤或疑問,非常歡迎大家指正及回饋:)

《Bitcoin: A Peer-to-Peer Electronic Cash System》
— Satoshi Nakamoto

零、 摘要

完全以端對端(peer-to-peer)技術實現的電子現金系統允許線上支付可以不必透過金融機構而直接從某一方傳送。雖然 數位簽章(digital signature) 解決了部分的問題,但若需要信任的第三方才能避免雙重支付(double-spending)的話,這個系統就沒有價值了。我們提出了一個端對端的網路來解決雙重支付的問題,此網路透過以下方式對每一筆交易做 時間戳記(timestamp),也就是將每一筆交易 雜湊(hash) 到一個「基於雜湊的工作量證明」(hash-based-proof-work)組成的一條不斷延伸的鏈(chain)上,除非重新完成所有工作量證明,這些紀錄將不能被更改。最長的鏈不僅扮演了一連串目擊事件的證明,也證明了它來自於一個 CPU 運算能力很大的池。只要多數的 CPU 運算能力都由不會聯合攻擊網路的節點(node)所控制的話,誠實的節點就會產生一條最長且超越其他攻擊者的鏈。這個網路本身需要的基礎建設很少,訊息會依據最大努力原則(best effort basis)廣播出去,而節點可自由選擇離開或重新加入網路且接受最長的工作量證明所組成的鏈作為節點離開時所發生的交易事件之證明。

ㄧ、介紹

網際網路的商業應用幾乎都仰賴金融機構作為處理電子支付之信任的第三方。雖然系統在大多數情況下都能運作良好,但這類系統仍有以信任為基礎的模式這項固有的缺點。由於金融機構無法避免出面調解爭議,因此完全不可逆的交易並不真的可行。因為調解成本而提高的交易成本,將會限制最小的實際交易規模、限制了日常小額支付、失去為不可逆之服務進行的不可逆支付的能力進而造成更廣泛的成本。可逆性的服務讓信任的需求增加,商人必須更加警惕自己的客戶,因此會向他們索取完全不必要的個人資訊。一定比例的詐騙可以被接受為無法避免的。以上這些成本及支付的不確定性在使用實體貨幣時皆可避免,但透過一個缺乏第三方信任的溝通渠道進行支付的機制並不存在。

我們所需要的是一個以加密證明取代信任的電子支付系統,且允許任何達成共識的雙方能夠直接交易,而不需信任的第三方參與。計算不可逆(computaionally impractical to reverse)的交易可以避免賣方受騙,而常規性托管機制(routine escrow mechanisms)則可以輕易地讓買方被保護。在這篇論文中,我們透過一個端對端的分散式時間戳記伺服器去產生按時間排序的交易之計算證明進而解決了雙重支付的問題。只要誠實的節點能夠共同合作去控制比攻擊者族群更多的 CPU 運算能力,這個系統就會是安全的。

二、交易(Transactions)

我們定義一顆電子貨幣為一串數位簽章。每位擁有者為前一個交易及下一位擁有者的 公開金鑰(public key) 簽署一個雜湊的數位簽章,並將之加入一顆貨幣的尾端,透過上述的方式將貨幣發送給下一位擁有者。收款者可以透過檢查簽章(signature)來驗證該鏈的擁有者。

▲交易(Transactions)

這個過程的問題在於收款者無法驗證擁有者是否對這顆貨幣進行雙重支付。一般解法為導入一個信任的中央權威機構或是造幣廠來驗證每一筆交易,以防止雙重支付。在每一筆交易之後,貨幣必須送回造幣廠以發行新貨幣,且只有直接從造幣廠發行的貨幣才會被信任為沒有雙重支付。然而,這個解法的問題在於整個金錢系統的命運皆仰賴在像銀行一樣會經手每筆交易的造幣廠公司。我們需要一個方法讓收款者知道前一位擁有者並沒有簽署更早發生的交易,由於我們計較的是在此之前發生的交易,因此不用在意在此之後是否有雙重支付。證實交易存在的唯一方法是去意識到所有交易的發生,而在以造幣廠為基礎的模式中,造幣廠必須意識到所有交易並決定交易完成的先後順序。為了在沒有信任的第三方的之情況下達到目的,交易必須被公告,且我們需要一個讓所有參與者在他們接收的順序上達成共識的系統。收款者需要確保在交易期間絕大多數的節點都認同該交易是首次出現。

三、時間戳記伺服器(Timestamp Server)

我們提出的解法先由時間戳記伺服器說起。時間戳記伺服器會將由很多交易組成的區塊(block)所對應之雜湊加上時間戳記,並如同在報紙或 Usenet 中發送的方法將雜湊進行廣播。時間戳記證明了資料在進入雜湊時必然存在。每個時間戳記應將前一個時間戳記加入其雜湊中,之後的每一個時間戳記都和前一個時間戳記進行增強 (reinforce),而形成了一條鏈。

▲時間戳記伺服器(Timestamp Server)

四、 工作量證明(Proof-of-Work)

為了在端對端的基礎上去實現一個分散式時間戳記伺服器,我們需使用一個類似 Adam Back 提出的 Hashcash 技術的工作量證明系統,而非像報紙或 Usenet 的發送方法。工作量證明包括掃描一個數值,以 SHA-256 安全雜湊演算法(Secure Hash Algorithm)為例,雜湊值以一個或多個 0 開始。平均而言,隨著 0 的數目上升,所需之工作量將呈指數增加,且可藉由執行一次雜湊運算即完成驗證。

在我們的時間戳記網路中,我們藉由增加區塊中 nonce 的數量直到提供區塊所對應之雜湊足夠數量的 0 之 nounce 值被發現來完成工作量證明。一旦 CPU 的貢獻擴大到足以滿足工作量證明,除非重新完成一定的工作量否則該區塊無法被更改。當後來的區塊在此之後被鏈結上,若想更改區塊,則需要完成之後所有區塊的工作量。

▲工作量證明(Proof of Work)

工作量證明也解決了多數決代表的問題。如果多數是建立在一個 IP 位址對應一票的基礎上,則會被任何可以擁有許多 IP 者所推翻。工作量證明本質上是一個 CPU 對應一票。多數決代表為最長的鏈,因為最長的鏈包含了最大的工作量。如果大多數的 CPU 運算能力是由誠實的節點所控制,則此誠實的鏈將會成長為最快速且超越任何一條競爭者的鏈。若要修改先前的區塊,攻擊者必須重新完成該區塊及在它之後的所有區塊的工作量證明,並趕上且超越誠實節點之工作量。我們稍後會說明較慢的攻擊者趕上的機率會隨著之後的區塊增加而呈指數消減。

為了解決因硬體速度的增加及節點參與網路的程度起伏之問題,工作量證明的難度是由每小時平均產生之區塊數量而決定。如果區塊的產生越快速,則難度也會隨之增加。

五、網路(Network)

以下是網路運作的步驟:

  1. 新的交易會向所有節點廣播
  2. 每個節點會蒐集加入區塊的新交易
  3. 每個節點負責為其區塊找到一條夠困難的工作量證明
  4. 當節點找到工作量證明後,會向所有節點廣播
  5. 節點只有在節點中的所有交易為有效且尚未存在過時,才會接受區塊為有效的
  6. 節點會使用已接納之區塊的雜湊作為之前的雜湊來創造鏈上的新區塊,來表示接受該區塊

節點始終會將最長的鏈視為正確的且持續延長。若有兩個節點同時廣播兩個不同版本的新區塊,部分節點可能會先接收到其中一種。在這種情況下,節點會先處理先接收到的區塊,但也會保存另一條分支鏈以免它變成最長的鏈。當下一個工作量證明被發現且其中一條鏈被證實為較長的一條時,這樣的僵局會被打破,此時,原本在另一條分支鏈上工作的節點會轉而處理較長的這條鏈。

新交易的廣播並不一定要觸及所有節點,只要這些交易廣播到足夠多的節點,不久後這些交易就會被整合進一個區塊。區塊的廣播同樣可以容許漏掉訊息,若某個節點沒有接收到特定區塊,當這個節點接收到下一個區塊時,就會認知到它遺漏了一個區塊並可提出自己下載該區塊的請求。

六、 獎勵(Incentive)

按照慣例,區塊中的第一個交易較特別,因為它產生了一顆由該區塊建立者所擁有的新貨幣。這激勵了節點去支持整個網路,且在沒有中央權威機構發行貨幣的情況下,提供了初期貨幣流通的方法。新貨幣數量的穩定增加和礦工為了增加黃金流通而耗費資源去挖礦類似。而在我們的案例中,耗費的資源是 CPU 運算時間和消耗的電力。

獎勵也可以來自於交易手續費。交易的輸入值減掉輸出值即為交易的手續費,提供交易所在之區塊的獎勵。一旦既定數量的貨幣進入流通,獎勵機制就可以完全依靠交易手續費且能免於通貨膨脹。

獎勵機制也有助於鼓勵節點保持誠實。若有貪婪的攻擊者能夠裝備比所有誠實節點還要多的 CPU 運算能力,那麼他將面臨以下選擇:進行雙重支付的攻擊或是用於誠實工作來產生新貨幣,他將會發現遵循規則將是更有利可圖的,因為比起破壞系統及自身財產的合法性,遵守規則能夠使他擁有更多的電子貨幣。

此篇為比特幣論文的前半部分,由於此篇為筆者首次翻譯論文,若語句不通順及措詞不精準,煩請讀者包含及不吝指正!謝謝:)

延伸閱讀:


精選熱門好工作

Web UI視覺設計師

酷遊天國際旅行社股份有限公司
臺北市.台灣

獎勵 NT$20,000

專案經理-Project Manager

酷遊天國際旅行社股份有限公司
臺北市.台灣

獎勵 NT$20,000

Backend 工程師

Omlet Arcade 美商歐姆雷特
臺北市.台灣

獎勵 NT$20,000

評論