隻漲不跌的比特幣到底是什麼?

在一步一步發明發明比特幣之前,解釋幾個直觀的認知:

我們常說的比特幣,是加密貨幣(Cryptocurrency)的一種,而加密貨幣實現去中心化的最關鍵的技術是區塊鏈。

有些地方可能把加密貨幣又稱為數字貨幣(或稱電子貨幣),但實際上,加密貨幣是數字貨幣的子集,同為子集的還有虛擬貨幣(如Q幣),加密貨幣的稱謂要更加專業。

加密貨幣一定具有下列三個特點:

  • 去中心的清算

  • 分佈式的記賬

  • 離散化的支付

為瞭實現這些特點,需要使用到區塊鏈技術這裡的區塊鏈技術是一個很廣義的范疇,它包含瞭密碼學,算法等很多不同的內容,其中最精彩的點子,可算是工作量證明 = 共識瞭。

還有另一個層次更高的角度:從解決拜占庭將軍問題的角度入手來分析和科普【區塊鏈技術】,我覺得這個角度更加接近於區塊鏈哲學的本質,畢竟,比特幣具有價值屬性和交易屬性,和金融有緊密的聯系,但是區塊鏈是一種分佈式存儲系統,若僅僅從比特幣(代幣)的角度來解釋,非常片面。

畢竟,比特幣,就是分佈式去中心化共識記錄系統中的一個字段。

一步一步發明比特幣

第一個用戶需求 – 賬本和電子簽名的由來

第一個用戶需求描述瞭中心化清算系統幾個關鍵內容的由來,隻對區塊鏈感興趣的讀者可以跳過

經濟體的蓬勃發展離不開交易。在交易過程中,人們早已發現使用一般等價物(如金銀)十分麻煩,發明瞭紙幣(最早的來自中國,北宋時代四川地區的紙幣交子的清算體系,是生產力發展的必然產物,最終的目標是提高生產效率),現如今,人們發現,攜帶現金也很麻煩

這是第一個基本用戶需求:擺脫現金進行交易帶來的不便

【解決辦法】幾個用戶使用公共賬本記錄轉賬記錄,月底結算,賬本公開,每個人都可以修改,也就是說可以在上面添加新行(一筆交易),如小明轉賬給小紅10塊錢

產生的問題1:身份問題

在這個賬本條目上我們無法確認交易雙方小明和小紅是否是本人,可能出現偽造(逍遙法外電影中的偽造支票)

【解決辦法】使用電子簽名,即公鑰 – 私鑰對記住,電子簽名被發明的核心目的是希望在電子文檔也能有一個類似與現實中個人筆跡的簽名,目的一定是:確認寫這個簽名的人是本人,即身份確認(驗證)私鑰顧名思義,也叫做密鑰,是你本人需要需要妥善保管和保存的


[Math Processing Error]
Sign(信息,)=電子簽名

Sign在這裡是一個函數,可以理解為一連串計算(變換),這一連串計算有一個特點,就是輸入值隻要改變一點點,輸出就會完全改變。信息和私鑰一起,可以得到一個電子簽名。並且這個電子簽名不能被輕易的復制到其他信息裡,原因是因為每一個電子簽名都和這一段信息有關聯。


[Math Processing Error]
Verify(信息,電子簽名,公鑰)=真/假


在進行驗證的時候,Verify也是一個函數,輸入值是信息,電子簽名,公鑰,輸出是一個True or False,來判斷這個電子簽名是真的還是假的。

這個時候可能有人就要問瞭,這個電子簽名我難道不能試出來嗎?很不幸,這是一個有256bit的1/0字符串,可能性是2的256次方,2的10次方是1024,我隻能告訴你這麼多瞭。

解釋完電子簽名,我們來看看實例。小明使用自己的私鑰加上小明轉給小紅10塊錢這段話通過Sign函數生成一個簽名(256位),把簽名放在這條轉賬信息的後面,通過之前的講解,這個簽名就能保證小明已經過目瞭,並且說:“這真的是我小明,不用懷疑瞭!肯定是我”

直觀結果是,我們可以利用密碼學的手段,隻要有對應人的數字簽名,我們保證小明和小紅的身份能被100%確認真實。

但是這個解決方案有一個小漏洞:可以復制同一行信息來偽造交易記錄,解決的辦法是添加一個這筆交易獨有的信息(比如時間戳)

產生的問題2:欠債跑路問題

如果小明在此時賬戶上已經沒有足夠的餘額進行支付,就會出現超支問題

【解決辦法】添加餘額記錄,此時就不可避免的需要一個中間擔保人(國傢?信譽機構?銀行?)為小明進行餘額擔保

一個大傢都遵守的協議

此時,現代金融體系的框架基本建立完畢,協議內容是

  • 任何人都可以在賬本上添加新行

  • 固定時間間隔時用真金白銀進行清算

  • 隻有有簽名的交易是有效的

  • 中間擔保的人保證不可超支

此時發現一個很有趣的發現,這個比較嚴謹的協議有一個特點:如果所有人都按照這個協議來辦事,我們可以用任何形式的東西來代替人民幣瞭,換句話說,就是我根本不關心你在賬本上添加的新行的交易內容是什麼,可以是任何東西。

利用這個提出需求再解決問題的過程,強化一個認知:貨幣 =交易記錄(賬本),即貨幣的本質是交易記錄,在這背後,有一個前提是,貨幣的另一個本質是一種共識,我們都信任它有價值的共識。

第二個用戶需求:賬本放在哪裡?

傳統的(現在的)解決方案當時是,使用中心代理-銀行,來存放賬本既然是第二個用戶需求,那肯定就是因為現在的解決方案大傢都不滿意

核心需求:去中心化

中心化的痛點大致可以說幾點:

  • 銀行效率低下,一筆跨國轉賬的等待時間較長

  • 銀行金融體系因部分準備金制度等等方便的規則,能抬升杠桿,產生金融泡沫,進一步誘發金融危機

  • 私有財產神聖不可侵犯是精英與平民,剝削與被剝削者幾個世紀以來博弈的風暴中心

當然還有很多沒有提到(比如好處,控制經濟發展速度,調控供需平衡等),總之,是一種一直飽受詬病的清算方式,此時,中本聰在2009年橫空出世,他提出瞭一種全新的清算方法,並且真正解決瞭陌生人間信用的問題!接下來就是真正的一步一步的發明比特幣瞭。

如何實現分佈記賬(去中心化)

為瞭去中心化,我們可以反其道而行之:每個用戶保存賬本,分佈記賬。用戶產生一筆交易就將這筆交易廣播到到網絡上所有的節點上,這樣不就完美的去中心化瞭?隻要是明眼人都能發現,太天真的,這個方法行不通。若行不通,那就把行不通的原因總結出來

遇到問題,總結不可行的原因,尋找解決方案。這是整個人類不前進的核心最小單位

問題核心

如何讓所有人都同意這個新賬本?如何保持這些賬本同步?有一筆交易發生時,如何讓其他人都聽到並相信這一筆交易呢?

這些問題才是真正的核心:是否能在協議(辦法,規則)中添加幾行,找到辦法,來決定是否接受交易,並確定交易順序,使你可以放心的相信,世界上遵守同一協議的所有人手上的賬本都和你的一模一樣呢?(問題描述值得品讀,隻有抽象出問題才能更好的去尋找解決方案)

【解決方案】

解決的思路是:哪個賬本的計算工作量大,就信任哪個賬本。換個角度來說是【讓交易欺詐和賬本不一的情形的計算力成本高到不能接受甚至完全不可行】。那問題就來瞭,到底什麼是【計算工作量】,賬本怎麼可能有計算工作量呢?這裡思維跳躍會大一些,需要一些耐心,慢慢來。

規定,允許世界上的每一個人建造區塊。每一個新建區塊的人(找到瞭這個特殊數字 – SHA256值有30個零)都能獲得獎勵,對於新建區塊的這部分人(礦工)來說

  • 沒有發送者信息,不需要簽名

  • 每一個新區塊都會給整個幣種增加新的虛擬(加密)貨幣

  • 新建區塊的過程又被稱為“挖礦”:需要大量工作量並且可以向整個經濟體註入新的貨幣

  • 挖礦的工作是:接受交易信息,建造區塊,把區塊廣播出去,然後得到新的錢作為獎勵

  • 對每個礦工來說,每個區塊就像一個小彩票,所有人都在拼命快速猜數字,直到有一個幸運兒找到瞭一個特殊數字,使得整個區塊的哈希值開頭有許多個零,就能得到獎勵。我記得有一個知乎答主給瞭一個形象的比喻,區塊鏈就像一個擁有貌美如花女兒(區塊)的國王,有很多的青年翹首以盼,而國王的方法是出瞭一道很難得題目讓所有的青年計算(學習改變人生),誰算的快(在計算哈希值過程也可能是運氣好)就能抱得美人歸

  • 對於想用這個系統來收付款的用戶來說,他們不需要收聽所有的交易,而隻要收聽礦工們廣播出來的區塊,然後更新到自己保存的區塊鏈中就可以瞭

51%算力-共識攻擊

這裡有一個小漏洞,因為網絡的延遲或者有人在篡改區塊鏈等因素,你作為一個收聽網絡廣播的用戶,如果同時接受到兩條不同的區塊鏈怎麼辦?其中的交易信息發生瞭沖突

註:區塊鏈本身就是最終的大賬本,發生交易的唯一方法就是把你的交易加入到大賬本上。具體來說,就是讓礦工把你的交易記錄加入它新挖到的區塊中,並把這個區塊鏈接到區塊鏈上。鏈表的紐帶,當然就是工作量證明

對於上面的問題,用戶的解決方案也比較簡單:即,隻保留最長的且難度系數最高的,也就是包含的工作量最大的那一條

這裡有一個Trick,即所謂信任工作量最大不僅僅是出【一道難題】,還通過等待多個區塊的產生引入世界上所有礦工之間的博弈(吃瓜群眾,坐看大戲,誰厲害我選誰,你們盡管鬥)

個人觀點:區塊鏈的Idea最核心的創新就是從技術上把信任和貪婪畫瞭等號。因為貪婪(希望去競爭建立區塊的建立和交易費)所以信任(全網算力越大,用戶越放心),這句話甚至帶上瞭些許哲學和傳奇的色彩對於用戶來說,是這樣一種情景。

其中的原因是,你可以假設Alice希望篡改一個交易信息,那麼就意味著Alice需要不斷的通過計算維護這個區塊鏈瞭。

也就是說每一次有新的區塊鏈產生,Alice都需要不斷的搶到這個彩票,理論上來說,他至少必須擁有全網51%以上的算力才能做到這一點,更多的,隨著用戶等待區塊的增加,這個難度,冪次上升,在7-8個區塊鏈產生後,概率上來講,就是絕對信任此時

  • 我們用數字簽名保證瞭不能偽造交易記錄

  • 用區塊鏈及工作量證明保證瞭不能篡改其中的信息

這兩點,就完成瞭:證明區塊鏈的每一條交易記錄都是可信的這一終極目標。

私信小編,免費獲得更多軟件測試學習資料~~~

David: