歡迎光臨
每天分享高質量文章

加密貨幣的本質

(點選上方公眾號,可快速關註)


作者:阮一峰

www.ruanyifeng.com/blog/2018/01/cryptocurrency-tutorial.html


去年,比特幣暴漲,其他幣也像雨後春筍一樣冒出來,已經有1000多種了。

很多人都在問,加密貨幣(cryptocurrency)的時代,真的來臨了嗎?將來會不會人類不再使用美元、人民幣,改用加密貨幣?那麼多品種,我應該使用哪一種幣?要不要現在就去投資一些?

這些問題的答案,我也想知道,就花了很多時間查閱資料、研究協議。前兩周發表的《區塊鏈入門教程》比特幣入門教程,是我的學習心得。但是,那兩篇教程主要介紹基本概念、探討協議的可行性,沒回答一個根本的問題:加密貨幣到底是什麼?

下麵就是我對這個問題的思考。閱讀之前,如果你已經瞭解區塊鏈和比特幣,那很好;如果不瞭解,也沒關係,本文不涉及技術,只討論最基本的原理。

一、錢是什麼?

我們都知道,人民幣是錢,美元是錢,金銀財寶是錢。我問一個問題,它們為什麼能成為錢?

你可能回答,因為它們有價值,或者是價值的代表。但是,有價值的東西多了,為什麼只有這些品種成為了錢?

答案很容易想到,因為人們普遍相信(認同)它們的價值,其他東西的價值難以得到普通認同,無法成為錢。比如,郵票的價值就沒有普遍的認同,除了集郵愛好者,其他地方都不能當錢用。一般來說,認同的人越多,這種錢的通用性就越高。

我曾經去俄羅斯旅行,當地貨幣是盧布。可是,一旦離開俄國,沒人相信它的購買力,所以盧布離開俄國就沒用了。相反,全世界人民都相信美元的價值,所以全世界都能用。我用美元付賬的時候,我發現那些俄國人都很滿意。

所以,錢的本質,或者說貨幣的本質,就是它的可信性。它必須使人們相信,它是有價值的,然後才能成為錢,才能被收藏和支付。

二、可信性

為什麼錢必須是可信的?因為對方必須相信它的價值,否則你沒法支付出去。那麼,接下來的問題就是,可信的東西是否就是錢?

我的回答是 Yes。一樣東西能否成為錢,只取決於人們是否相信它的價值,至於它是不是真的有價值,根本不重要。

如果馬雲在一張紙條上寫”這張紙條價值10000元”,下麵簽了他的名,並且附上防偽標記。你說這紙條是錢嗎?我跟你保證,這就是錢,你用來支付,人們都會接受,馬雲等同於發行了一種新的紙幣。

比特幣也是如此,它是什麼,其實不太重要。重要的是,它必須保證自己是可信的,這樣才能讓足夠的人相信它的價值,然後才能成為錢。

三、比特幣的可信性

比特幣要解決的核心問題,就是創造一種可信的數字憑證。由於這種憑證可信,所以能夠當做貨幣。

比特幣的技術基礎是加密學,因為只有加密學才能保證它的可信性。一旦加密被破解,它就沒法當作貨幣了。這也是這一類數字憑證被稱為”加密貨幣”的原因。

技術人員對比特幣感興趣,還有一個重要原因。任何需要可靠的數字憑證的場合,也許都可以用到這種技術。

四、比特幣的特點

比特幣有三個特點,就是因為做到了這三點,所以它可信,能夠當作錢。

首先,它不會被(輕易)偷走。或者反過來說,它使得你無法去偷別人,你只能花你自己的錢。因為必須要有別人的私鑰,才能取出他的錢。正常情況下,你拿不到別人的私鑰。

其次,它無法偽造。每一個比特幣都能追溯來源,而所有比特幣都來源於礦工獲得的獎勵。礦工只有新建區塊,才能獲得獎勵,這是很難的事情,所以無法偽造比特幣。

最後,它無法大批生成。原因跟上一條一樣,比特幣的發行速度是穩定的,現在每10分鐘新增12.5個,然後每四年減半,最終停止增長。因此不會像紙幣那樣,政府濫發導致通貨膨脹。

五、比特幣有物體嗎?

由於後面要提到的原因,比特幣不可能擁有物體,沒法做到”從口袋裡掏出一個幣”這種場景,交易都必須透過網際網路完成。

你可能會說,錢都有物體,怎麼可能存在無形的錢呢?答案正好相反,錢就應該是無形的,那些物體的錢其實是對物質材料的浪費,由於技術不夠發達,不得不做成物體。

我小時候買東西,都必須用現金,否則沒法證明,自己擁有購買力。只有透過物體的錢,才能保證對方確實收到了錢。如果銀行業發達,就不用現金了,可以使用信用卡。支付的時候,對方抄一下信用卡號碼,查詢銀行”這個賬戶有錢嗎”。銀行回答有錢,OK,成交。

但是,網際網路使得物體的信用卡也不需要了。如果存在一個開放的中央記賬系統,任何人都可以查詢,你把錢劃到老闆的賬戶,老闆查詢一下,發現收到了,交易自動成交,整個過程都是無形的,還需要什麼信用卡呢?

這個中央記賬系統已經實現了,就叫做區塊鏈。

六、區塊鏈的作用

區塊鏈就是一個資料庫,記載了所有的交易,用作中央記賬系統。

每筆交易的核心,就是一句話,比如”張三向李四轉移了1個比特幣”。為了證明這句話可信,張三為它加上了數字簽名。任何人都可以用張三的公鑰,證明這確實是張三本人的行為。另一方面,其他人無法偽造張三的數字簽名,所以不可能偽造這筆交易。

礦工們收到這句話,首先驗證數字簽名的可信性,然後驗證張三確實擁有這些比特幣(每一筆交易都有上一筆交易的編號,用來查詢比特幣的來源)。驗證透過以後,就著手把這句話寫入區塊鏈了。一旦寫入區塊鏈,所有人就都可以查詢到,因此這筆比特幣就被認為,從張三轉移到了李四。

區塊鏈的作用就是把這句話永久儲存下來了,讓任何人都可以檢視,並且任何人(包括張三本人在內)都無法再修改了。

貨幣是什麼?其實就是這句話。這一句話就完成了一次支付。我們平時用人民幣支付,其實只是用紙幣表達這條資訊。如果每個人都可以實時寫入/讀取中央記賬系統(區塊鏈),那麼完全可以不攜帶貨幣。

七、雙重支出

前面說過,交易不可能被偽造。但是,由於每一筆交易都是一串二進位制訊號,因此可能被覆制。舉例來說,”張三向李四轉移了1個比特幣”這句話,可能被其他人複製,也可能被張三自己複製,提交到區塊鏈。

如果這句話被兩次寫入區塊鏈,就意味著張三可以把同一筆錢花掉兩次。但是,第二次寫入的時候,查詢區塊鏈可以發現張三已經把這筆錢花掉了,從而認定這是不合法的交易,不能寫入區塊鏈。因此,複製交易是不可能的。

比較麻煩的是另一種情況,就是張三把同一筆錢付給兩個人。他先向區塊鏈提交一個交易”張三向李四轉移了1個比特幣”,然後又提交了另一個交易”張三向王五轉移了1個比特幣”。這兩個交易都可能被認為是真實的交易,從而進入區塊鏈。因此,必須有辦法防止出現這種情況。

情況一:同一個礦工收到了這兩個交易。那麼他會察覺到,它們不可能同時成立,因此選擇其中的一筆寫入區塊鏈。

情況二:礦工 A 收到了第一筆交易,礦工 B 收到了第二筆交易,他們各自都會認定這是合法的交易,分別把這兩筆交易寫入了兩個區塊,這時區塊鏈就出現了分叉。

比特幣協議規定,分叉點之後最先達到6個區塊的那個分支,被認定為正式的區塊鏈,其他分支都將被放棄。由於區塊的生成速度由計算能力決定,所以到底哪一筆交易最後會被寫入區塊鏈,完全由它所在的分支能吸引多少計算能力決定。隱藏的邏輯是,如果大多數人(計算能力)選擇相信某一筆交易,那麼它就應該是真的。

綜上所述,雙重支出不可能發生。因為中央記賬系統總有辦法發現,你把同一筆錢花了兩遍。但是,這也說明瞭比特幣的一個代價,就是交易不能實時確認,必須等待至少一個小時。

八、參考連結

  • How the Bitcoin protocol actually works, by Michael Nielsen


本系列


《區塊鏈入門教程》

比特幣入門教程

覺得本文有幫助?請分享給更多人

關註「演演算法愛好者」,修煉程式設計內功

贊(0)

分享創造快樂