區(qū)塊鏈大火,讓我等吃瓜群眾猝不及防。雖然網(wǎng)上文章鋪天蓋地,比如“一圖看懂”系列,但仍然雞同鴨講,莫衷一是,并不知其所以然,頂多知道是個同步賬本。作為一篇學習總結(jié),我希(盡)望(力)本文能作為一篇普及貼,也能讓其他人看懂。所以這里不會深入探討技術(shù)原理,大佬們請繞過。
比特幣是世界上第一個通過密碼學,而非中央銀行發(fā)行的電子加密貨幣。因為其發(fā)行總量固定,無中央銀行干預,讓許多”民主人士“認為這是極為先進的民主思想技術(shù)革命。然而去中心化的系統(tǒng)帶來了一些新問題:
沒有政府背書和資產(chǎn)擔保,貨幣信任、交易真實性成了問題。
每個人都有權(quán)了解這個世界在發(fā)生什么,信息一旦變化,所有數(shù)據(jù)庫需要同步更新,平等對稱。
沒有集中決策,為了信息對稱,如何達成共識,變成了難題。
三大問題“交易信任”、“數(shù)據(jù)對稱”、“共識達成”
解決辦法“非對稱加密”、“P2P網(wǎng)絡(luò)”、“共識機制”
中本聰用以上三種方法,構(gòu)架出了區(qū)塊鏈技術(shù)結(jié)構(gòu),讓比特幣的發(fā)行流通構(gòu)想得以實現(xiàn)。
比特幣(bitcoin)誕生于2008年的一篇論文《A Peer-to-Peer Electronic Cash System》并規(guī)定了一些基礎(chǔ)協(xié)議:
圖:比特幣協(xié)議特點
比特幣總量為2100萬枚
平均10分鐘誕生一個區(qū)塊。
被寫入?yún)^(qū)塊的交易按照手續(xù)費高低排優(yōu)先級
區(qū)塊的大小只有 1MB,一筆交易大概是500字節(jié)左右,因此一個區(qū)塊最多只能包含2000多筆交易。
挖到新區(qū)塊的礦工將獲得獎勵,一開始(2008年)是50個比特幣,然后每4年減半,目前(2018年)是12.5個比特幣
一筆交易確認需要等待6個區(qū)塊
比特幣網(wǎng)絡(luò)每10分鐘,最多只能處理2000多筆交易,換算一下,就是處理速度為3~7筆/秒。
也就是說,比特幣區(qū)塊鏈每秒最多只能處理7筆交易,要是交易數(shù)據(jù)再大點,可能連7筆都達不到。而支付寶一秒處理12萬筆交易。這本應在1秒處理的12萬筆交易,比特幣需要10小時。
每4年獎勵減半,那么到了2140年,礦工將得不到任何獎勵,比特幣的數(shù)量也將停止增加。這時,礦工的收益就完全依靠交易手續(xù)費了。
這些數(shù)據(jù)是怎么確定的,眾說紛紜。比如一個區(qū)塊鏈的大小是1MB,中本聰在設(shè)計之初也并未預料到會發(fā)展到今天的規(guī)模,其本身是一個構(gòu)想的實驗。很多數(shù)據(jù)并未驗證,甚至可以說是拍腦袋定的。
比特幣的基礎(chǔ)是加密學,如果不知道一筆錢從哪來,是誰的,誰敢拿它當貨幣呢?非對稱加密從技術(shù)上解決了可信性問題。這也是這一類數(shù)字憑證被稱為"加密貨幣"的原因。
所謂非對稱加密,其實很簡單:加密和解密需要一把公鑰和一把私鑰。
交易的第一件事就是你必須擁有自己的公鑰和私鑰(任何交易所開戶或錢包類網(wǎng)站都會給)。
圖:比特幣交易加密過程通俗版
驗證一筆交易是否有效,需要兩步:
1.FROM(誰發(fā)送的,包括兩部分)
Previous tx: 這筆錢的來源賬單的id, 驗證資金來源。
scriptSig: 這筆交易的簽名,就是把交易用私鑰做hash
2.TO(誰接受,包括兩部分)
Value: 要發(fā)多少
scriptPubKey: 接收方的公鑰,也就是比特幣地址
對于比特幣,錢不是支付給個人的,而是支付給某一個地址,沒有人知道,那些私鑰和地址背后的主人是誰——匿名性。
區(qū)塊鏈(blockchain)是比特幣使用的一種特殊的數(shù)據(jù)庫,是比特幣存在的基礎(chǔ)。任何人都可以架設(shè)服務器,加入?yún)^(qū)塊鏈網(wǎng)絡(luò),成為一個節(jié)點。
圖:區(qū)塊鏈結(jié)構(gòu)示意圖
區(qū)塊鏈由一個個區(qū)塊(block)組成。區(qū)塊很像數(shù)據(jù)庫的記錄,每次寫入數(shù)據(jù),就是創(chuàng)建一個區(qū)塊。每個區(qū)塊包含兩個部分,區(qū)塊頭和區(qū)塊體。
區(qū)塊頭(Head):記錄當前區(qū)塊的元信息。其中包含:
生成時間
上一個區(qū)塊的 Hash
區(qū)塊體的Hash
區(qū)塊體(Body):實際交易數(shù)據(jù)
其中比較重要的概念是“Hash”。所謂 Hash 是對任意內(nèi)容,計算出一個長度相同的特征值。而且保證,只要原始內(nèi)容不同,對應的 Hash 一定是不同的。比特幣區(qū)塊用的SHA256加密算法。
每個區(qū)塊的 Hash 都是不一樣的,通過 Hash 標識區(qū)塊。
如果區(qū)塊的內(nèi)容變了,它的 Hash 一定會改變。
圖:區(qū)塊結(jié)構(gòu)示意圖
“挖礦”指的是把網(wǎng)絡(luò)上待確認的交易寫入新區(qū)塊,并獲得比特幣獎勵的過程。
“礦工”是用GPU等硬件設(shè)備進行數(shù)據(jù)計算的一群人。正是這群人,把交易者的數(shù)據(jù)一筆一筆記入帳中。“挖礦”的機器叫“礦機”;成規(guī)模“挖礦”的場地叫“礦廠”。
回顧挖礦歷史,比特幣挖礦總共經(jīng)歷了以下五個時代:CPU(20MHash/s)→GPU(400MHash/s)→FPGA(25GHash/s)→ASIC(3.5THash/s)→大規(guī)模集群挖礦(3.5THash/s*X)。
圖:礦廠
“挖礦”道理其實很簡單,想要挖到新區(qū)塊必算出符合要求的哈希值。你可能會有一個疑問,計算一個哈希值為什么這么難?原來正確的哈希值是有一定要求的:
圖:515798號區(qū)塊信息
1.Difficulty
區(qū)塊頭包含一個難度系數(shù)(difficulty),這個值決定了計算 Hash 的難度。舉例來說,第515798個區(qū)塊的難度系數(shù)是 3462542391191.56,而第100000個區(qū)塊鏈難度可只有14484.162361。
2.Target
區(qū)塊鏈協(xié)議規(guī)定,使用一個常量除以難度系數(shù),可以得到目標值(target)。
Target = Targetmax/ Difficulty 顯然,難度系數(shù)越大,目標值就越小。
Hash 的有效性跟目標值密切相關(guān),只有小于目標值的Hash 才是有效的。這就是采礦如此之慢的根本原因。
3.Nonce
區(qū)塊頭里面還有一個 Nonce 值,記錄了 Hash 重算的次數(shù)。
第 515798 個區(qū)塊的 Nonce 值是213587466,即計算了 2.1 億次,才得到了一個有效的 Hash,該區(qū)塊才能加入?yún)^(qū)塊鏈。
4.難度系數(shù)的動態(tài)調(diào)節(jié)
實際上,新的區(qū)塊有時候幾分鐘就可能被算出來,有的可能需要幾小時。為了保證新區(qū)塊在10分鐘左右的時間內(nèi)產(chǎn)生,并且考慮到硬件設(shè)備的升級,中本聰將Difficulty每2016個區(qū)塊調(diào)整一次以保證新區(qū)塊平均產(chǎn)生時間在10分鐘。
圖:分叉示意圖
在挖礦的過程中,如果同時生成了兩個新區(qū)快,鏈接著同一個上級區(qū)塊,便形成了分叉。
如果發(fā)生這種狀況:認定率先達到6個新區(qū)塊的一條鏈為有效鏈(比特幣交易的六次確認)。即需要1小時左右。
一個很直觀的例子可以說明為何這種經(jīng)濟博弈模式:
超市付款需要排成一隊,可能有人不守規(guī)矩要插隊。超市管理員會檢查隊伍,認為最長的一條隊伍是合法的,并讓不合法的分叉隊伍重新排隊。只要大部分人不傻,就會自覺在最長的隊伍上排隊。
P2P網(wǎng)絡(luò)保證每個人的信息同步,任何人都可以成為一個節(jié)點。每個節(jié)點都包含了整個區(qū)塊鏈(目前100G),并且節(jié)點之間時刻不停的同步信息。
當你發(fā)生了一筆交易。你所在的節(jié)點就會把這筆交易告訴另一個節(jié)點,直到傳遍整個網(wǎng)絡(luò)?!暗V工”搜集各種新發(fā)生的交易,將他們寫入?yún)^(qū)塊鏈。一旦寫入成功,此“礦工”所在節(jié)點的區(qū)塊鏈就成了最新版本,其他節(jié)點會來復制新增的區(qū)塊,保證全網(wǎng)同步。
圖:P2P節(jié)點分布全球,每個節(jié)點信息一致
“挖礦”這種行為的本質(zhì)是尋求達到某一共識,再把信息寫入?yún)^(qū)塊的勞動。這種共識決策其實不只比特幣所使用的一種方法。
目前主流共識機制目前有:
POW(Proof of Work)、POS (Proof of Stake)、DPOS(Delegated Proof of Stake)
1.POW(Proof of Work)
一句話介紹:干的快,收的越多。
工作量證明協(xié)議。比特幣所用共識機制。它要求發(fā)起者進行一定量的運算,也就意味著需要消耗計算機一定的時間。
優(yōu)點:
1)算法簡單,容易實現(xiàn);
2)節(jié)點間無需交換額外的信息即可達成共識;
3)破壞系統(tǒng)需要投入極大的成本;
缺點:
1)浪費能源;
2)區(qū)塊的確認時間難以縮短;
3)新的區(qū)塊鏈必須找到一種不同的散列算法,否則就會面臨比特幣的算力攻擊;
4)容易產(chǎn)生分叉,需要等待多個確認;
5)永遠沒有最終性,需要檢查點機制來彌補最終性;
2.POS (Proof of Stake)
一句話介紹:持有越多,獲得越多。
權(quán)益證明,最早在 Peercoin 系統(tǒng)中被實現(xiàn),類似現(xiàn)實生活中的股東機制,擁有股份越多的人越容易獲取記賬權(quán)。在POW中,如果用戶花費2000美元購買硬件設(shè)備,當然會獲得兩倍算力來挖礦;同樣,在POS機制中投入兩倍的代幣作為押金,就有兩倍大的機會獲得產(chǎn)生新區(qū)塊的權(quán)利。
優(yōu)點:
在一定程度上縮短了共識達成的時間;
不再需要大量消耗能源挖礦。
缺點:
還是需要挖礦,本質(zhì)上沒有解決商業(yè)應用的痛點;
3.DPOS (Delegated Proof of Stake)
一句話介紹: 選出代表,高效運算
Dan Larimer發(fā)明的這種新共識算法被稱為股份授權(quán)證明機制(DPoS),應用于比特股和Steemit社區(qū)。
每個股東按其持股比例選定代表,每個股東將選票授予一名代表。獲票數(shù)最多的前100位代表加1位隨機代表按既定時間表輪流產(chǎn)生區(qū)塊。每名代表分配到一個時間段來生產(chǎn)區(qū)塊。所有的代表將收到等同于一個平均水平的區(qū)塊所含交易費的10%作為報酬。該模式可以每30秒產(chǎn)生一個新區(qū)塊,每次單人有序生產(chǎn)區(qū)塊在正常的網(wǎng)絡(luò)條件下區(qū)塊鏈分叉的可能性極其小,即使發(fā)生也可以在幾分鐘內(nèi)得到解決。
優(yōu)點:高效
缺點:整個共識機制還是依賴于代幣,很多商業(yè)應用是不需要代幣存在的。
為什么會有以太坊呢?它的創(chuàng)始人Vitalik Buterin在《以太坊白皮書》前言部分挑明:因為比特幣沒有賬戶狀態(tài)的概念;而且POW機制效能低,浪費大量時間和資源。而以太坊作為區(qū)塊鏈平臺將區(qū)塊鏈技術(shù)的發(fā)展帶入到 2.0 時代。
以太坊要實現(xiàn)的是一個內(nèi)置了編程語言(Solidity)的區(qū)塊鏈協(xié)議,那么理論上任何區(qū)塊鏈應用都可以用這門語言進行定義,運行于以太坊的區(qū)塊鏈協(xié)議之上(該協(xié)議的意義與互聯(lián)網(wǎng)時代的 TCP/IP 協(xié)議相似)。這使得區(qū)塊鏈應用開發(fā)者們高效快速地開發(fā)頂層應用,變?yōu)榭赡堋?/span>
以太坊涉及的問題非常多,很難一言蔽之。這里只對其地位和意義做簡要了解。如果感興趣可以登陸其官網(wǎng):https://www.ethereum.org/
ICO和其他電子加密貨幣
圖:火幣pro上市幣種
目前交易所上市的電子加密貨幣已經(jīng)不下1000種。那他們是什么?從哪來?什么是山寨幣,分叉幣,ICO?
山寨幣
是我們最初指除比特幣以外的加密貨幣。
分叉幣
是由主鏈分叉出來的新幣,比如比特幣BTC分叉的比特現(xiàn)金B(yǎng)CH。
ICO是Initial Coin Offering的簡稱
所有成功的數(shù)字貨幣以及區(qū)塊鏈項目無一不是社區(qū)項目。常見的ICO里,數(shù)字貨幣和區(qū)塊鏈項目向早期愛好者出售項目代幣。項目團隊通過ICO獲取技術(shù)開發(fā)和市場拓展資金;而項目愛好者通過ICO支持項目,同時也可在對應代幣進入交易市場后選擇交易退出。
可查的首個ICO來自于Mastercoin項目(現(xiàn)已更名為Omni),其在13年7月時在Bitcointalk(最大的比特幣和數(shù)字貨幣社區(qū)論壇)上宣布通過比特幣進行ICO眾籌,并生成對應的Mastercoin代幣并分發(fā)給到眾籌參與者。本質(zhì)上來說這次ICO是一種以物換物的行為,即參與者用比特幣換得Mastercoin項目里的代幣。一開始ICO只是數(shù)字貨幣愛好者的一種社區(qū)行為,隨著數(shù)字貨幣以及區(qū)塊鏈的不斷發(fā)展開始被越來越多人接受并參與。絕大部分ICO都是通過比特幣或其他數(shù)字貨幣進行的。
幾個著名的ICO案例:
- 2013年7月,Mastercoin(現(xiàn)更名為Omni):可查的最早ICO項目,通過meta-protocol拓展比特幣功能,募集5000 BTC。
- 2013年12月,NXT(未來幣):首個完整的PoS區(qū)塊鏈,曾經(jīng)神秘的開發(fā)者,持續(xù)發(fā)展的強大社區(qū)。ICO神話:募集21 BTC(是的你沒看錯,21BTC,約等于當時6000美元),市值峰值曾到達過1億美元。
- 2013年-2014年,Bitshares(比特股):曾經(jīng)的“數(shù)字資產(chǎn)二代幣三劍客”之一(另外兩個為NXT和CounterParty),國內(nèi)數(shù)字貨幣界口水之源,毀譽參半。其社區(qū)培養(yǎng)了國內(nèi)大量早期ICO以及數(shù)字資產(chǎn)愛好者。
- 2014年7月,Ethereum(以太坊):ICO時募集3萬余個比特幣曾創(chuàng)下紀錄。將智能合約理念推進到極致的區(qū)塊鏈項目,讓全世界重新認識區(qū)塊鏈公有鏈的項目。近兩年最成功的ICO,也是至今為止除比特幣以外市值最高的數(shù)字貨幣/區(qū)塊鏈項目。近期由于TheDAO事件影響晴雨不定。
- 2015年3月,F(xiàn)actom(公正通):雙代幣設(shè)計,首提存在性證明的區(qū)塊鏈商業(yè)化以及由此導出的基金會與公司雙機構(gòu)設(shè)置。
- 2016年3月,Lisk:以太坊挑戰(zhàn)者,利用側(cè)鏈的Dapp解決方案。
- 2016年5月,TheDAO:等值1.5億美元破世界紀錄的ICO眾籌,非典型ICO(其本身不是區(qū)塊鏈)。向世界大聲宣告智能合約時代到來后一個月即被黑客攻克,在歷史上刻下了深深的雙重驚嘆號 (該項目目前已經(jīng)失?。?。
- 2017年6月, EOS (Enterprise Operation System) :為商用分布式應用設(shè)計的一款區(qū)塊鏈操作系統(tǒng)。 創(chuàng)始人是比特股創(chuàng)始人、DPOS發(fā)明者Dan Larimer,已經(jīng)創(chuàng)造了一個新的ICO記錄——5天內(nèi)籌集了1.85億美元。它是以以太坊為募集基礎(chǔ)的代幣。
細心的觀眾可能已經(jīng)發(fā)現(xiàn),這套民主思想的技術(shù),似乎并沒有那么公平。如果你有足夠資本建立礦場,將會持有大量的比特幣(尤其前期難度不高)。資本逐漸慢慢聚攏到算力集中的少數(shù)礦場的手里,形成馬太效應,去中心化效應減弱。比如現(xiàn)在的比特大陸(一度接近51%的算力),郭宏才也是這樣挖礦起家?,F(xiàn)在挖礦已經(jīng)不是小散戶玩的起的游戲了。
比特幣的區(qū)塊大小為1M,如果比特幣交易越來越多,很多交易就不會在發(fā)生后的第一個區(qū)塊被打包和確認,可能要等好幾個區(qū)塊,甚至更久。比特幣交易的擁堵導致了轉(zhuǎn)賬速度變慢,手續(xù)費也越來越高。
中本聰曾提出了在比特幣容量不夠用的時候應該怎樣進行擴容。白皮書發(fā)布之后,他自己在社區(qū)留言的第一個問題,就指出了比特幣未來的擴容隱患。
區(qū)塊鏈技術(shù)性強,技術(shù)分支也越來越多,這里也只聊了九牛一毛。
從業(yè)務上看,應用卻已經(jīng)很多:網(wǎng)易星球、阿里的麻吉寶。然而目前給人的感覺都還是為了做區(qū)塊鏈而區(qū)塊鏈,需求的還沒有真正出現(xiàn)。目前德國、英國、日本等政府認可比特幣的價值,和此前加密貓的誕生,推著幣價一度走高。不過,區(qū)塊鏈和比特幣到底是鉆石還是郁金香,等待驗證還有很多。