比特幣是什么?

(轉載自阮一峰老師博客,目的只是自己收藏新技術知識,并非用于任何商業用途)比特幣(bitcoin)誕生于2008年的一篇論文

一個署名為中本聰的人,提出了革命性的構想:讓我們創造一種不受政府或其他任何人控制的貨幣!這個想法堪稱瘋狂:一串數字,背后沒有任何資產支持,也沒有任何人負責,你把它當作錢付給對方,怎么會有人愿意接受?

但是,狂想居然變成了現實。隨后的幾年,在全世界無數愛好者的支持下,比特幣網絡運行起來了,越來越多的人和資本參與,星星之火,終成燎原。剛剛過去的2017年,比特幣迎來了爆發式的增長,從年初的1000美元,最高漲到了2萬美元,全世界都為之震動,上到政府,下到普通百姓都在關注。事實就是比特幣已經并將繼續改變世界。

新聞媒體往往只關注它的火爆表現,忽視或者無法回答一些基本的問題。

比特幣的原理是什么?

為什么這個無人管理的體系可以成功運作?

比特幣交易的流程是怎么回事?

它與區塊鏈又是什么關系?

下面,我嘗試回答這些問題,希望幫助大家理解比特幣。拋開技術細節,還是很容易解釋的。

有一點說明,本文只討論技術問題,不涉及如何投資比特幣,更不會預測價格走勢。事實上,我也不知道,如果我知道怎么發財,可能就不會在這里寫博客了。

一、非對稱加密

首先,理解比特幣,必須理解非對稱加密

你可能聽說過這個詞,所謂非對稱加密,其實很簡單,就是加密和解密需要兩把鑰匙:一把公鑰和一把私鑰。

公鑰是公開的,任何人都可以獲取。私鑰是保密的,只有擁有者才能使用。他人使用你的公鑰加密信息,然后發送給你,你用私鑰解密,取出信息。反過來,你也可以用私鑰加密信息,別人用你的公鑰解開,從而證明這個信息確實是你發出的,且未被篡改,這叫做數字簽名(更詳細的介紹請看《什么是數字簽名》)。

現在請設想,如果公鑰加密的不是普通的信息,而是加密了一筆錢,發送給你,這會怎樣?

首先,你能解開加密包,取出里面的錢,因為私鑰在你手里。其次,別人偷不走這筆錢,因為他們沒有你的私鑰。因此,支付可以成功。

這就是比特幣(以及其他數字貨幣)的原理:非對稱加密保證了支付的可靠性。

由于支付的錢必須通過私鑰取出,所以你是誰并不重要,重要的是誰擁有私鑰。只有擁有了私鑰,才能取出支付給你的錢。(事實上,真實的交易流程稍有不同,私鑰保證的不是取出支付給你的錢,而是保證只有你能把這些屬于你的錢支付出去,詳見后文。)

二、比特幣錢包

對于比特幣來說,錢不是支付給個人的,而是支付給某一把私鑰。這就是交易匿名性的根本原因,因為沒有人知道,那些私鑰背后的主人是誰。

所以,比特幣交易的第一件事,就是你必須擁有自己的公鑰和私鑰。

你去網上那些比特幣交易所開戶,它們會讓你首先生成一個比特幣錢包(wallet)。這個錢包不是用來存放比特幣,而是存放你的公鑰和私鑰。軟件會幫你生成這兩把鑰匙,然后放在錢包里面。

根據協議,公鑰的長度是512位。這個長度不太方便傳播,因此協議又規定,要為公鑰生成一個160位的指紋。所謂指紋,就是一個比較短的、易于傳播的哈希值。160位是二進制,寫成十六進制,大約是26到35個字符,比如 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2。這個字符串就叫做錢包的地址,它是唯一的,即每個錢包的地址肯定都是不一樣的。

你向別人收錢時,只要告訴對方你的錢包地址即可,對方向這個地址付款。由于你是這個地址的擁有者,所以你會收到這筆錢。

由于你是否擁有某個錢包地址,是由私鑰證明的(具體的證明方法稍后介紹),所以一定要保護好私鑰。這是極其重要的,如果你的私鑰被偷了,你的比特幣也就等于沒了,因為他人可以冒用你的身份了,把錢包里面的錢都轉走。

同樣的,你向他人支付比特幣,千萬不能寫錯他人的錢包地址,否則你的比特幣就支付到了另一個不同的人了。

三、交易過程

下面,我把整個流程串起來,看看比特幣如何完成一筆交易。

一筆交易就是一個地址的比特幣,轉移到另一個地址。由于比特幣的交易記錄全部都是公開的,哪個地址擁有多少比特幣,都是可以查到的。因此,支付方是否擁有足夠的比特幣,完成這筆交易,這是可以輕易驗證的。

問題出在怎么防止其他人,冒用你的名義申報交易。舉例來說,有人申報了一筆交易:地址 A 向地址 B 支付10個比特幣。我怎么知道這個申報是真的,申報人就是地址 A 的主人?

比特幣協議規定,申報交易的時候,除了交易金額,轉出比特幣的一方還必須提供以下數據。

上一筆交易的 Hash(你從哪里得到這些比特幣)

本次交易雙方的地址

支付方的公鑰

支付方的私鑰生成的數字簽名

驗證這筆交易是否屬實,需要三步。

第一步,找到上一筆交易,確認支付方的比特幣來源。

第二步,算出支付方公鑰的指紋,確認與支付方的地址一致,從而保證公鑰屬實。

第三步,使用公鑰去解開數字簽名,保證私鑰屬實。

經過上面三步,就可以認定這筆交易是真實的。

四、交易確認與區塊鏈

確認交易的真實性以后,交易還不算完成。交易數據必須寫入數據庫,才算成立,對方才能真正收到錢。

比特幣使用的是一種特殊的數據庫,叫做區塊鏈(blockchain),詳細的介紹請看《區塊鏈入門教程》。本文只討論交易如何寫入區塊鏈。

首先,所有的交易數據都會傳送到礦工那里。礦工負責把這些交易寫入區塊鏈。

根據比特幣協議,一個區塊的大小最大是 1MB,而一筆交易大概是500字節左右,因此一個區塊最多可以包含2000多筆交易。礦工負責把這2000多筆交易打包在一起,組成一個區塊,然后計算這個區塊的 Hash。

計算 Hash 的過程叫做采礦,這需要大量的計算。礦工之間也在競爭,誰先算出 Hash,誰就能第一個添加新區塊進入區塊鏈,從而享受這個區塊的全部收益,而其他礦工將一無所獲。

一筆交易一旦寫入了區塊鏈,就無法反悔了。這里需要建立一個觀念:比特幣不存放在錢包或其他別的地方,而是只存在于區塊鏈上面。區塊鏈記載了你參與的每一筆交易,你得到過多少比特幣,你又支付了多少比特幣,因此可以算出來你擁有多少資產。

五、礦工的收益

交易的確認離不開礦工。為什么有人愿意做礦工呢?

比特幣協議規定,挖到新區塊的礦工將獲得獎勵,一開始(2008年)是50個比特幣,然后每4年減半,目前(2018年)是12.5個比特幣。這也是比特幣的供給增加機制,流通中新增的比特幣都是這樣誕生的。

你可能看出來了,每4年獎勵減半,那么到了2140年,礦工將得不到任何獎勵,比特幣的數量也將停止增加。這時,礦工的收益就完全依靠交易手續費了。

所謂交易手續費,就是礦工可以從每筆交易抽成,具體的金額由支付方自愿決定。你完全可以一毛不拔,一分錢也不給礦工,但是那樣的話,你的交易就會沒人處理,遲遲無法寫入區塊鏈,得到確認。礦工們總是優先處理手續費最高的交易。

目前由于交易數量猛增,手續費已經水漲船高,一個區塊2000多筆交易的手續費總額可以達到3~10個比特幣。如果你的手續費給低了,很可能過了一個星期,交易還沒確認。

一個區塊的獎勵金12.5個比特幣,再加上手續費,收益是相當可觀的。按照目前的價格,可以達到100萬~200萬人民幣。想想看,運氣好的話,幾分鐘就能挖到一個區塊,拿到這樣一大筆錢,怪不得人們對挖礦趨之若鶩。

六、區塊的擴容

《區塊鏈入門教程》說過,比特幣協議規定,平均10分鐘誕生一個區塊。區塊的大小只有 1MB,最多只能包含2000多筆交易。也就是說,比特幣網絡每10分鐘,最多只能處理2000多筆交易,換算一下,就是處理速度為3~5筆/秒。

全世界的比特幣交易這么多,可是區塊鏈每秒最多只能處理5筆,這已經成為制約比特幣發展的一個瓶頸。

很早就有人呼吁,改革比特幣協議,提升處理速度。這件事在2017年8月有了一點眉目,當時區塊鏈發生了一次分叉,誕生了一個新協議,稱為?Bitcoin Cash(簡稱 BCH)。這種新貨幣其他方面都與比特幣一致,就是每個區塊的大小從 1MB 增加到了 8MB,因此處理速度提升了8倍,手續費也低得多。該協議是對原有區塊鏈的分叉,因此當時持有比特幣的人,等于一人獲贈了一份同樣數量的 BCH。

BCH 等于創造了一種新貨幣,還有人提議,原始比特幣的區塊大小提升到 2MB,這稱為?SegWit2x?。這個建議原定于2017年11月實施,但是最后一刻由于缺乏共識,就被取消了,目前還在討論中。

七、點對點網絡

比特幣是一個全世界的開放網絡,只要你有服務器,就能加入這個網絡,成為一個節點。每個節點都包含了整個區塊鏈(目前大概 100多 GB),并且節點之間時刻不停地在同步信息。

當你發生了一筆支付,你所在的節點就會把這筆交易告訴另一個節點,直至傳遍整個網絡。礦工從網上收集各種新發生的交易,將它們打包寫入區塊鏈。一旦寫入成功, 礦工所在節點的區塊鏈,就成為最新版本,其他節點都會來復制新增的區塊,保證全網的區塊鏈都是一致的。

最后,你所在的節點也拿到了最新的區塊鏈,從而得知你早先的那筆交易,已經寫在里面了,至此交易確認成功。

八、還有一個問題

寫到這里,我就介紹完了比特幣的基本知識,希望你已經明白了比特幣是怎么回事。但是還有一個根本的問題,我沒有回答:比特幣的本質到底是什么?

說到底,比特幣只是區塊鏈的一條記錄,是憑空生成的,為什么可以當錢用?舉例來說,礦工獲得12.5個比特幣的獎勵,其實就是區塊鏈有一個記錄:"xxx地址獲得12.5個比特幣"。正是這行記錄,導致該礦工獲得了大筆金錢。如果區塊鏈突然增加了一條記錄,記載你的地址獲得了1000個比特幣,你就真的會有1000個比特幣。這到底是為什么?

這篇文章已經夠長了,這個問題就留到下次再談,歡迎關注本系列的最后一篇文章《加密貨幣的本質》

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,106評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,441評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,211評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,736評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,475評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,834評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,829評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,009評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,559評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,306評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,516評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,038評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,728評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,132評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,443評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,249評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,484評論 2 379