比特幣和拜占庭將軍問題
A. 拜占庭將軍很忙—《區塊鏈思維》第21塊
無論在鏈圈,還是在幣圈混,經常聽到一個名詞「拜占庭將軍問題」。
到底拜占庭是啥,拜占庭將軍怎麼啦,到處都被提及,這位將軍好忙啊!
先說拜占庭這個地方。很久很久以前的歐洲,建立在比中世紀還古老的時期,歷史上就是東羅馬帝國,跨越了千年的歷史期盼。
扯遠了,回到正題,什麼是拜占庭將軍問題。
拜占庭這個地方異常堅固,同時被十個獨立鄰邦環伺,分別有一位將軍,單獨攻城必敗,只有一半以上的將軍同時攻打才能破城。
十位將軍為了協調一致,在那個古老的時代,累死傳令兵,要麼飛鴿傳書(那時的歐洲比中國落後,好像沒有這個高速通信手段)。十位將軍相互通信一次就需要90次傳信,每位將軍都有各自的攻城計劃,要想達成統一就需要往復傳遞不知道多少次。
我們可以假設一個場景,一個桌子上坐著十位將軍,每個人各自說著自己的想法,同時聽其他九位的說法,但是信息的傳遞不是實時的,有快有慢,有早有晚。想明白了嗎?也就是說,這十位將軍如果想達成一致,理論上有可能,實際上他們的有生之年都實現不了,難怪拜占庭帝國經歷了千年也沒有被這十位將軍攻破。
中本聰這個神人,利用互聯網信息傳遞的及時性特點,引入時間戳可以明確知道「誰先說、誰後說」的特性,創造性地加入挖礦機制(就是用計算機算隨機數滿足一定難度才算成功)比拼各位將軍的智商來決定誰做本次進攻的統帥,使用非對稱加密保證信息傳輸的安全性等等手段融合到比特幣中,用實例說明自己破解了這個歷史難題「拜占庭將軍問題」。從而向世人證明解決60億人口的互信問題是有去中心化解決方案地。
幣圈和鏈圈的朋友很焦慮的另一個關鍵問題就是:這個圈子概念太TM多。除了這個「拜占庭將軍問題」,還有一個「拜占庭容錯」,這是什麼鬼?這兩個是一樣的嗎?這兩個是故意有一個被寫錯了嗎?還是說我的智商稅沒交夠?其實,你都說對了。
「拜占庭將軍問題」假設所有十個將軍都是好的,都想攻破拜占庭,只是達成共識很難,比特幣提供了好人達成共識的方案。
「拜占庭容錯」是說十個將軍可以很好地達成共識。但是,如果其中出了壞人,怎麼解決?
如果十個將軍中出現了壞人(叫叛徒也行),進攻計劃是否會永遠無法達成共識呢?
「拜占庭容錯」告訴大家,是可以達成地,並且,還能找出這些「叛徒」是誰。只是,10個將軍中叛徒的數量不能超過3個,超出了就無法「容錯」,也找不出這些叛徒是誰。對應的公式就是:3n+1。其中3n+1是將軍總數(區塊鏈的賬本/礦機總數),n是能夠「容錯」的「叛徒」(惡意記錯賬)總數。
對於十個將軍來說,最多容忍三個叛徒,多了就徹底沒戲啦。為了比特幣的容錯能力越來越強,就需要更多的節點,這樣才能容忍並找出更多的叛徒。懂了吧。
小結一下:拜占庭將軍問題是假設都是好人前提下如何達成共識,拜占庭容錯就是全網最多能夠容忍多少叛徒並且能找出他們。
請交智商稅到如下地址:
國稅BTC到Kcash:
地稅ETH及各種原生Token到 Imtoken:
不交稅的,祝你做「韭菜」一切順利 :D
B. 比特幣誰發明的
比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。
與大多數貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。P2P的去中心化特性與演算法本身可以確保無法通過大量製造比特幣來人為操控幣值。基於密碼學的設計可以使比特幣只能被真實的擁有者轉移或支付。這同樣確保了貨幣所有權與流通交易的匿名性。比特幣與其他虛擬貨幣最大的不同,是其總數量非常有限,具有極強的稀缺性。該貨幣系統曾在4年內只有不超過1050萬個,之後的總數量將被永久限制在2100萬個。
比特幣可以用來兌現,可以兌換成大多數國家的貨幣。使用者可以用比特幣購買一些虛擬物品,比如網路 游戲 當中的衣服、帽子、裝備等,只要有人接受,也可以使用比特幣購買現實生活當中的物品。[1][2]
西維吉尼亞州民主黨參議員喬·曼欽(Joe Manchin)2014年2月26日向美國聯邦政府多個監管部門發出公開信,希望有關機構能夠就比特幣鼓勵非法活動和擾亂金融秩序的現狀予以重視,並要求能盡快採取行動,以全面封殺該電子貨幣。[3]
2017年1月24日中午12:00起,中國三大比特幣平台正式開始收取交易費。[4]
中文名
比特幣
外文名
Bitcoin
種類
電子貨幣
流通平台
網路
概念創始人
中本聰
發展歷程 聽語音
2008年爆發全球金融危機,當時有人用「中本聰」的化名發表了一篇論文,描述了比特幣的模式。
共2張
比特幣
和法定貨幣相比,比特幣沒有一個集中的發行方,而是由網路節點的計算生成,誰都有可能參與製造比特幣,而且可以全世界流通,可以在任意一台接入互聯網的電腦上買賣,不管身處何方,任何人都可以挖掘、購買、出售或收取比特幣,並且在交易過程中外人無法辨認用戶身份信息。[2]2009年,不受央行和任何金融機構控制的比特幣誕生。[2]比特幣是一種「電子貨幣」,由計算機生成的一串串復雜代碼組成,新比特幣通過預設的程序製造,隨著比特幣總量的增加,新幣製造的速度減慢,直到2014年達到2100萬個的總量上限,被挖出的比特幣總量已經超過1200萬個。[2]
每當比特幣進入主流媒體的視野時,主流媒體總會請一些主流經濟學家分析一下比特幣。早先,這些分析總是集中在比特幣是不是騙局。而現如今的分析總是集中在比特幣能否成為未來的主流貨幣。而這其中爭論的焦點又往往集中在比特幣的通縮特性上。[5]
不少比特幣玩家是被比特幣的不能隨意增發所吸引的。和比特幣玩家的態度截然相反,經濟學家們對比特幣2100萬固定總量的態度兩極分化。[6]
凱恩斯學派的經濟學家們認為政府應該積極調控貨幣總量,用貨幣政策的松緊來為經濟適時的加油或者剎車。因此,他們認為比特幣固定總量貨幣犧牲了可調控性,而且更糟糕的是將不可避免地導致通貨緊縮,進而傷害整體經濟。奧地利學派經濟學家們的觀點卻截然相反,他們認為政府對貨幣的干預越少越好,貨幣總量的固定導致的通縮並沒什麼大不了的,甚至是 社會 進步的標志。
比特幣網路通過「挖礦」來生成新的比特幣。所謂「挖礦」實質上是用計算機解決一項復雜的數學問題,來保證比特幣網路分布式記賬系統的一致性。比特幣網路會自動調整數學問題的難度,讓整個網路約每10分鍾得到一個合格答案。隨後比特幣網路會新生成一定量的比特幣作為賞金,獎勵獲得答案的人。
2009年比特幣誕生的時候,每筆賞金是50個比特幣。誕生10分鍾後,第一批50個比特幣生成了,而此時的貨幣總量就是50。隨後比特幣就以約每10分鍾50個的速度增長。當總量達到1050萬時(2100萬的50%),賞金減半為25個。當總量達到1575萬(新產出525萬,即1050的50%)時,賞金再減半為12.5個。[7]
首先,根據其設計原理,比特幣的總量會持續增長,直至100多年後達到2100萬的那一天。但比特幣貨幣總量後期增長的速度會非常緩慢。事實上,87.5%的比特幣都將在頭12年內被「挖」出來。所以從貨幣總量上看,比特幣並不會達到固定量,其貨幣總量實質上是會不斷膨脹的,盡管速度越來越慢。因此看起來比特幣似乎是通脹貨幣才對。
然而判斷處於通貨緊縮還是膨脹,並不依據貨幣總量是減少還是增多,而是看整體物價水平是下跌還是上漲。整體物價上升即為通貨膨脹,反之則為通貨緊縮。長期看來,比特幣的發行機制決定了它的貨幣總量增長速度將遠低於 社會 財富的增長速度。
凱恩斯學派的經濟學家們認為,物價持續下跌會讓人們傾向於推遲消費,因為同樣一塊錢明天就能買到更多的東西。消費意願的降低又進一步導致了需求萎縮、商品滯銷,使物價變得更低,步入「通縮螺旋」的惡性循環。同樣,通縮貨幣哪怕不存入銀行本身也能升值(購買力越來越強),人們的投資意願也會升高, 社會 生產也會陷入低迷。[5]因此比特幣是一種具備通縮傾向的貨幣。比特幣經濟體中,以比特幣定價的商品價格將會持續下跌。[1]
比特幣是一種網路虛擬貨幣,數量有限,但是可以用來套現:可以兌換成大多數國家的貨幣。你可以使用比特幣購買一些虛擬的物品,比如網路 游戲 當中的衣服、帽子、裝備等,只要有人接受,你也可以使用比特幣購買現實生活當中的物品。[1][1]
2014年9月9日,美國電商巨頭eBay宣布,該公司旗下支付處理子公司Braintree將開始接受比特幣支付。該公司已與比特幣交易平台Coinbase達成合作,開始接受這種相對較新的支付手段。
雖然eBay市場交易平台和PayPal業務還不接受比特幣支付,但旅行房屋租賃社區Airbnb和租車服務Uber等Braintree客戶將可開始接受這種虛擬貨幣。Braintree的主要業務是面向企業提供支付處理軟體,該公司在去年被eBay以大約8億美元的價格收購。
2017年1月22日晚間,火幣網、比特幣中國與OKCoin幣行相繼在各自官網發布公告稱,為進一步抑制投機,防止價格劇烈波動,各平台將於2017年1月24日中午12:00起開始收取交易服務費,服務費按成交金額的0.2%固定費率收取,且主動成交和被動成交費率一致。[4]5月5日,OKCoin幣行網的最新數據顯示,比特幣的價格剛剛再度刷新 歷史 ,截止發稿前最高觸及9222點高位。[8]
創始人物 聽語音
2008年11月1日,一個自稱中本聰(Satoshi Nakamoto)的人在一個隱秘的密碼學評論組上貼出了一篇研討陳述,陳述了他對電子貨幣的新設想——比特幣就此面世,比特幣的首筆交易完成。比特幣用揭露散布總賬擺脫了第三方機構的制約,中本聰稱之為「區域鏈」。用戶樂於奉獻出CPU的運算能力,運轉一個特別的軟體來做一名「挖礦工」,這會構成一個網路共同來保持「區域鏈」。這個過程中,他們也會生成新貨幣。買賣也在這個網路上延伸,運轉這個軟體的電腦真相破解不可逆暗碼難題,這些難題包含好幾個買賣數據。第一個處理難題的「礦工」會得到50比特幣獎賞,相關買賣區域加入鏈條。跟著「礦工」數量的添加,每個迷題的艱難程度也隨之進步,這使每個買賣區的比特幣生產率保持約在10分鍾一枚。
京都大學數學教授望月新一
2009年,中本聰設計出了一種數字貨幣,即比特幣,風風火火的比特幣市場起了又落,而其創始人「中本聰」的身份一直都是個謎,關於「比特幣之父」的傳聞牽涉到從美國國家安全局到金融專家,也給比特幣罩上了神秘光環。
據外媒報道稱,計算機科學家TedNelson周日在網路上發布視頻稱,他已經確定出,比特幣的創始人是京都大學數學教授望月新一(ShinichiMochizuki)。比特幣的創始人一直以來使用的都是中本聰(SatoshiNakamoto)的假名,互聯網領域也對其真實身份展開了大量推測。納爾遜發布視頻稱,他已確定望月新一就是比特幣的真正創始人。[9]
望月新一2013年因為證明ABC猜想而名聲大噪。他高中時就讀於菲利普埃克塞特學院,後者是美國最具聲望的高中之一,僅僅兩年後就畢業。望月新一16歲進入美國普林斯頓大學,22歲時以博士身份離校,33歲就成為正教授,這么年輕就獲得正教授職稱在學術界極為罕見。這個數學界的巨星可能已經攻破了該領域最為重要的難題之一。
中本聰本人在互聯網上留下的個人資料很少,尤其是近幾年幾乎完全銷聲匿跡,因此其身世也變成了一個迷。2014年3月7日,當比特幣創始人多利安·P·中本聰被找到的新聞傳出後,迅速成為互聯網上最吸引人的消息。
與外界揣測其可能是個虛構的名字不同,「中本聰」是個真實的名字,他是一名64歲的日裔美國人,他喜歡收集火車模型,曾供職大企業和美國軍方,從事機密工作。在過去的40年中,中本聰從不在生活中用他的真名。根據美國洛杉磯地方法院1973年的檔案,在他23歲從加州州立理工大學畢業時,將自己的名字改為了多利安·普倫蒂斯·中本聰(DorianPrenticeSatoshiNakamoto)。從那時起,他不再使用「聰」這個名字,而用多利安·中本S(DorianS.Nakamoto)作為簽名。[9]
產生原理 聽語音
從比特幣的本質說起,比特幣的本質其實就是一堆復雜演算法所生成的特解。特解是指方程組所能得到無限個(其實比特幣是有限個)解中的一組。而每一個特解都能解開方程並且是唯一的。[10]以人民幣來比喻的話,比特幣就是人民幣的序列號,你知道了某張鈔票上的序列號,你就擁有了這張鈔票。而挖礦的過程就是通過龐大的計算量不斷的去尋求這個方程組的特解,這個方程組被設計成了只有 2100 萬個特解,所以比特幣的上限就是 2100 萬。[10]
瘋狂漲勢
要挖掘比特幣可以下載專用的比特幣運算工具,然後注冊各種合作網站,把注冊來的用戶名和密碼填入計算程序中,再點擊運算就正式開始。[11]完成Bitcoin客戶端安裝後,可以直接獲得一個Bitcoin地址,當別人付錢的時候,只需要自己把地址貼給別人,就能通過同樣的客戶端進行付款。在安裝好比特幣客戶端後,它將會分配一個私有密鑰和一個公開密鑰。需要備份你包含私有密鑰的錢包數據,才能保證財產不丟失。如果不幸完全格式化硬碟,個人的比特幣將會完全丟失。
貨幣特徵 聽語音
去中心化:比特幣是第一種分布式的虛擬貨幣,整個網路由用戶構成,沒有中央銀行。去中心化是比特幣安全與自由的保證 。
全世界流通:比特幣可以在任意一台接入互聯網的電腦上管理。不管身處何方,任何人都可以挖掘、購買、出售或收取比特幣。
專屬所有權:操控比特幣需要私鑰,它可以被隔離保存在任何存儲介質。除了用戶自己之外無人可以獲取。
低交易費用:可以免費匯出比特幣,但最終對每筆交易將收取約1比特分的交易費以確保交易更快執行。
無隱藏成本:作為由A到B的支付手段,比特幣沒有繁瑣的額度與手續限制。知道對方比特幣地址就可以進行支付。
跨平台挖掘:用戶可以在眾多平台上發掘不同硬體的計算能力。
優點
完全去處中心化,沒有發行機構,也就不可能操縱發行數量。其發行與流通,是通過開源的p2p演算法實現。
匿名、免稅、免監管。
健壯性。比特幣完全依賴p2p網路,無發行中心,所以外部無法關閉它。比特幣價格可能波動、崩盤,多國政府可能宣布它非法,但比特幣和比特幣龐大的p2p網路不會消失。
無國界、跨境。跨國匯款,會經過層層外匯管制機構,而且交易記錄會被多方記錄在案。但如果用比特幣交易,直接輸入數字地址,點一下滑鼠,等待p2p網路確認交易後,大量資金就過去了。不經過任何管控機構,也不會留下任何跨境交易記錄。
山寨者難於生存。由於比特幣演算法是完全開源的,誰都可以下載到源碼,修改些參數,重新編譯下,就能創造一種新的p2p貨幣。但這些山寨貨幣很脆弱,極易遭到51%攻擊。任何個人或組織,只要控制一種p2p貨幣網路51%的運算能力,就可以隨意操縱交易、幣值,這會對p2p貨幣構成毀滅性打擊。很多山寨幣,就是死在了這一環節上。而比特幣網路已經足夠健壯,想要控制比特幣網路51%的運算力,所需要的cpu/gpu數量將是一個天文數字。
缺點
交易平台的脆弱性。比特幣網路很健壯,但比特幣交易平台很脆弱。交易平台通常是一個網站,而網站會遭到黑客攻擊,或者遭到主管部門的關閉。
交易確認時間長。比特幣錢包初次安裝時,會消耗大量時間下載 歷史 交易數據塊。而比特幣交易時,為了確認數據准確性,會消耗一些時間,與p2p網路進行交互,得到全網確認後,交易才算完成。
價格波動極大。由於大量炒家介入,導致比特幣兌換現金的價格如過山車一般起伏。使得比特幣更適合投機,而不是匿名交易。
大眾對原理不理解,以及傳統金融從業人員的抵制。活躍網民了解p2p網路的原理,知道比特幣無法人為操縱和控制。但大眾並不理解,很多人甚至無法分清比特幣和Q幣的區別。「沒有發行者」是比特幣的優點,但在傳統金融從業人員看來,「沒有發行者」的貨幣毫無價值。[12]
貨幣交易 聽語音
購買方法
用戶可以買到比特幣,同時還可以使用計算機依照演算法進行大量的運算來「開采」比特幣。在用戶「開采」比特幣時,需要用電腦搜尋64位的數字就行,然後通過反復解謎密與其他淘金者相互競爭,為比特幣網路提供所需的數字,如果用戶的電腦成功地創造出一組數字,那麼就將會獲得25個比特幣。
由於比特幣系統採用了分散化編程,所以在每10分鍾內只能獲得25個比特幣,而到2140年,流通的比特幣上限將會達到2100萬。換句話說,比特幣系統是能夠實現自給自足的,通過編碼來抵禦通脹,並防止他人對這些代碼進行破壞。
交易方式
比特幣是類似電子郵件的電子現金,交易雙方需要類似電子郵箱的「比特幣錢包」和類似電郵地址的「比特幣地址」。和收發電子郵件一樣,匯款方通過電腦或智能手機,按收款方地址將比特幣直接付給對方。下列表格,列出了免費下載比特幣錢包和地址的部分網站。
比特幣地址是大約33位長的、由字母和數字構成的一串字元,總是由1或者3開頭,例如""。比特幣軟體可以自動生成地址,生成地址時也不需要聯網交換信息,可以離線進行[2]。可用的比特幣地址超過2個。形象地說,全世界約有2粒沙, 如果每一粒沙中有一個地球,那麼比特幣地址總數遠遠超過所有這些「地球」上的所有的沙子的數量。
比特幣地址和私鑰是成對出現的,他們的關系就像銀行卡號和密碼。比特幣地址就像銀行卡號一樣用來記錄你在該地址上存有多少比特幣。你可以隨意的生成比特幣地址來存放比特幣。每個比特幣地址在生成時,都會有一個相對應的該地址的私鑰被生成出來。這個私鑰可以證明你對該地址上的比特幣具有所有權。我們可以簡單的把比特幣地址理解成為銀行卡號,該地址的私鑰理解成為所對應銀行卡號的密碼。只有你在知道銀行密碼的情況下才能使用銀行卡號上的錢。所以,在使用比特幣錢包時請保存好你的地址和私鑰。
比特幣的交易數據被打包到一個「數據塊」或「區塊」(block)中後,交易就算初步確認了。當區塊鏈接到前一個區塊之後,交易會得到進一步的確認。在連續得到6個區塊確認之後,這筆交易基本上就不可逆轉地得到確認了。比特幣對等網路將所有的交易 歷史 都儲存在「區塊鏈」(blockchain)中。區塊鏈在持續延長,而且新區塊一旦加入到區塊鏈中,就不會再被移走。區塊鏈實際上是一群分散的用戶端節點,並由所有參與者組成的分布式資料庫,是對所有比特幣交易 歷史 的記錄 。 中本聰預計,當數據量增大之後,用戶端希望這些數據並不全部儲存自己的節點中。為了實現這一目標,他採用引入散列函數機制。這樣用戶端將能夠自動剔除掉那些自己永遠用不到的部分,比方說極為早期的一些比特幣交易記錄。
消費方式
許多面向 科技 玩家的網站,已經開始接受比特幣交易。包括Mtgox,BTCChina之類的網站,以及淘寶某些商店,甚至能接受比特幣兌換美元、歐元等服務。毫無疑問,比特幣已經成為真正的流通貨幣,而非騰訊Q幣那樣的虛擬貨幣。國外已經有專門的比特幣第三方支付公司,類似國內的支付寶,可以提供API介面服務。
可以用錢來買比特幣,也可以當采礦者,「開采」它們用電腦搜尋64位的數字就行。通過用電腦反復解密,與其他的淘金者競爭,為比特幣網路提供所需的數字。如果電腦能夠成功地創造出一組數字,就會獲得25個比特幣。比特幣是分散化的,需要在每個單位計算時間內創造固定數量比特幣是每10分鍾內可獲得25個比特幣。到2140年,流通的比特幣上限將達到2100萬。換句話說,比特幣體制是可以自給自足的,譯成編碼可抵禦通脹,防止他人搞破壞。
支付案例
在被投資者瘋狂追逐的同時,比特幣已經在現實中被個別商家接受。北京一家餐館開啟了比特幣支付。這家位於朝陽大悅城的餐館稱,該店從2013年11月底開始接受比特幣支付。消費者在用餐結束時,把一定數量的比特幣轉賬到該店賬戶,即可完成支付,整個過程類似於銀行轉賬。該餐館曾以0.13個比特幣結算了一筆650元的餐費。[13]
2014年1月,Overstock開始接受比特幣,成為首家接受比特幣的大型網路零售商。[14]
比特幣是由中本聰創造的,(幾乎可以肯定)是一個化名,迄今為止,還沒有人能夠確切地將比特幣與一個真實的人或一群人聯系起來。中本聰於2011年從互聯網上消失,幾乎沒有留下他們可能是誰的線索。多年來,許多人都公開宣稱自己是Satoshi,但都沒有以無可爭議的事實支持這一說法。
在一個早期的比特幣論壇上,Satoshi說他們在2007年開始研究比特幣,比第一個區塊被開采早了兩年。2009年1月3日,比特幣區塊鏈的第一個區塊——創世紀區塊被開采。中本聰是創世紀區塊的開采者,收到了第一批投入流通的50枚比特幣。然而,第一個方塊的獎勵是無法支付的,因為在代碼中創世紀方塊的表達方式有點奇怪。BitMEX研究發表了一份對比特幣早期開採的分析,並得出結論認為「有人」開采了70萬枚比特幣。盡管許多人認為這是Satoshi,但官方仍未證實。
人們只能想像,如果他們的身份被曝光,中本聰會獲得什麼樣的名聲,更不用說他們將收集的巨額財富了(盡管佐藤似乎沒有花掉他們應該開採的任何硬幣)。隨著時間的推移,已經有很多人聲稱自己是Satoshi,而其他人則被強加了這種說法。
虛假索賠
聲稱自己是Satoshi的最著名的例子之一是克雷格·賴特,澳大利亞學者。早在2015年,萊特就多次試圖向公眾展示他是比特幣發明者的無可爭議的證據,但直到今天他都沒有成功。事實上,他的「證據」被證明是偽造的。
為什麼Satoshi必須匿名
中本聰,世界上第一個分散貨幣的創造者,可以說應該保持匿名,因為他們創造的本質。在創建了一個沒有失敗中心點的協議之後,中本聰可能已經意識到,保持匿名可能會消除比特幣可能存在的最後一個失敗中心點:創建它的人。去除可能與比特幣的出現相關聯的單一身份,就去除了任何可能影響比特幣社區的政治、規則或決策的單一面孔。
不管Satoshi是誰,他們無疑是我們這個時代的天才。比特幣協議在所有合適的地方提供了經濟激勵,為拜占庭將軍的問題提供了一個特殊的解決方案。中本聰運用密碼學、數學、博弈論和經濟學的概念,創造了一種設計精美的——也是世界上第一種——數字稀缺資產——比特幣。
比特幣的發明者是一位日本人,名叫中本聰,在2009年1月3日,世界上第一批比特幣誕生, 數字貨幣也正式誕生,數字貨幣直到2013年年底價格才飛速上漲,從前期的10美元左右一下漲高到九百多美元,在2016年,比特幣熱度才真正起來,價格一路飆升,被稱為「數字黃金」。 比特幣為什麼這么值錢呢?
1、挖礦難度大,比特幣挖礦需要進行特定的運算,運算時間成本很高,前期的物質投入也非常大。
2、比特幣帶有貨幣屬性以及被市場信任,比特幣的加密演算法難以破解,保證了其唯一性。
3、比特幣交易市場透明度高,市場價格都是公開透明的,在虛擬數字貨中流通和交易方便快捷。
4、有一些國家的認可,國家對比特幣,數字貨幣出台的一些政策無疑都會刺激比特幣價格上漲。
物以稀為貴,比特幣比較稀有,目前比較幣的開采難度很高,供求關系的影響,市場上供不應求的局面等等,這些無疑對價格上漲產生了很大作用。對於在交易平台購買比特幣賺取差價的朋友需要謹慎。
比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。在2009年由日本人中本聰提出比特幣這一概念,比特幣從始發到現在價格已經高的難以想像,比特幣為什麼那麼值錢了?
下面來簡單的說說。
比特幣挖礦機通過運行一種特殊的程序,運行結束後就可以獲得類似任務獎勵的比特幣。現在比特幣的產量是很低的,每天大約產出3600個新幣,數量有限;比特幣挖礦價格高,自從比特幣火熱後,專業挖礦機從價格低的一萬元左右,現在價格貴的超過三十萬,前期設備投入就需要很大財力;挖礦時間長,比特幣挖礦就是經過特定的復雜運算,消耗額時間非常長;比特幣挖礦機消耗大,除了有自身的損耗以外,還會消耗大量用電,特幣全球挖礦機日耗電量可達1.88億千瓦時,相當於中國日發電量的百分之一。比特幣數量目前還在不斷增加,有機構評估,在2019年比特幣挖礦耗電量將會超過美國的耗電量。
比特幣的價格一直都是媒體比較關系的,這里提醒大家,比特幣價格漲的快,下落也會很快,風險高,想要購買比特幣賺錢的朋友一定要謹慎加入。
沉寂多日的比特幣借「勒索」病毒卷土重來,並開啟似曾相識的暴走模式。這種被稱作「數字黃金」的虛擬貨幣,8年間暴漲300萬倍,連中國大媽都進場了。有人認為這是一個擊鼓傳花式的 游戲 ,有人堅信比特幣會成為稀缺資產,更有人說它會是在 歷史 長河中閃光的一個節點,而多數人不求甚解,只是驚嘆於又一輪的財富大爆發。
愛必投認為究竟是誰創造了比特幣?關於比特幣的發明者一直沒有定論,普遍的說法是日本人「中本聰」(Satoshi Nakamoto)。2009年1月3日,世界上第一批比特幣被「挖」出,這種由一個代號為「中本聰」的人設計的數字貨幣正式誕生,而自那一刻起已有15個人先後被懷疑是「中本聰」。2014年美國權威媒體揭露,本名為「中本聰」的日裔美國物理學家,就是傳說的「比特幣之父」,但這位老教授堅決否認。圖為罕見現身的中本聰被媒體圍攻,不斷遮擋鏡頭,並否認與比特幣存在任何聯系。
2016年5月,澳大利亞工程師、企業家克雷格·懷特(Craig Wright)公開表明他就是比特幣的創造者——中本聰。但僅過了幾天,懷特本人就「投降」了,發表道歉信稱「拿不出關鍵證據」證明自己。盡管中本聰被提名為2016年諾貝爾經濟學獎候選人,但他的真實面紗還未被完全揭開。圖片:BBC (來自:騰訊圖片)
而跟比特幣扯上關系後,克雷格·懷特就被警方盯住了。圖為澳大利亞聯邦警方與稅務人員搜查了懷特的住所與辦公地點,後者的比特幣相關業務存在稅務方面問題。據媒體報道,神秘人物「中本聰」手握100多萬個比特幣,按照目前每個15000元人民幣來算,他的身價超過150億人民幣。而按照最初的嚴格設計,比特幣的總量被限制在2100萬枚,目前已有1400萬枚左右被開采出來。圖片:路透社
中本聰,不知他真身
C. 比特幣機制研究
現今世界的電子支付系統已經十分發達,我們平時的各種消費基本上在支付寶和微信上都可以輕松解決。但是無論是支付寶、微信,其實本質上都依賴於一個中心化的金融系統,即使在大多數情況這個系統運行得很好,但是由於信任模型的存在,還是會存在著仲裁糾紛,有仲裁糾紛就意味著不存在 不可撤銷的交易 ,這樣對於 不可撤銷的服務 來說,一定比例的欺詐是不可避免的。在比特幣出來之前,不存在一個 不引入中心化的可信任方 就能解決在通信通道上支付的方案。
比特幣的強大之處就在於:它是一個基於密碼學原理而不是依賴於中心化機構的電子支付系統,它能夠允許任何有交易意願的雙方能直接交易而不需要一個可信任的第三方。交易在數學計算上的不可撤銷將保護 提供不可撤銷服務 的商家不被欺詐,而用來保護買家的 程序化合約機制 也比較容易實現。
假設網路中有A, B ,C三個人。
A付給B 1比特幣 ,B付給C 2比特幣 ,C付給A 3比特幣 。
如下圖所示:
為了刺激比特幣系統中的用戶進行記賬,記賬是有獎勵的。獎勵來源主要有兩方面:
比特幣中每一筆交易都會有手續費,手續費會給記賬者
記賬會有打包區塊的獎勵,中本聰在08年設計的方案是: 每10分鍾打一個包,每打一個包獎勵50個比特幣,每4年單次打包的獎勵數減半,即4年後每打一個包獎勵25個比特幣,再過四年後就獎勵12.5個比特幣... 這樣我們其實可以算出比特幣的總量:
要說明打包的記錄以誰為準的問題,我們需要引入一個知名的 拜占庭將軍問題 (Byzantine failures)。拜占庭將軍問題是由萊斯利·蘭伯特提出的點對點通信中的基本問題。含義是在存在消息丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。
假設有9個互相遠離的將軍包圍了拜占庭帝國,除非有5個及以上的將軍一起攻打,拜占庭帝國才能被打下來。而這9個將軍之間是互不信任的,他們並不知道這其中是否有叛徒,那麼如何通過遠距離協商來讓他們贏取戰斗呢?
口頭協議有3個默認規則:
1.每個信息都能夠被准確接收
2.接收者知道是誰發送給他的
3.誰沒有發送消息大家都知道
4.接受者不知道轉發信息的轉發者是誰
將軍們遵循口頭規則的話,那就是下面的場景:將軍1對其他8個將軍發送了信息,然後將軍2~9將消息進行轉達(廣播),每個將軍都是消息的接受者和轉發者,這樣一輪下來,總共就會有9×8=72次發送。這樣將軍就可以根據自己手中的信息,選擇多數人的投票結果行動即可,這個時候即便有間諜,因為少數服從多數的原則,只要大部分將軍同意攻打拜占庭,自己就去行動。
這個方案有很多缺點:
1.首先是發送量大,9個將軍之間要發送72次,隨著節點數的增加,工作量呈現幾何增長。
2.再者是無法找出誰是叛徒,因為是口頭協議,接受者不知道轉發信息的轉發者是誰,每個將軍手裡的數據僅僅只是一個數量的對比:
這里我們假設有3個叛徒,在一種最極端的情況下即叛徒轉發信息時總是篡改為「不進攻」,那麼我們最壞的結果就如上圖所示。將軍1根據手裡的信息可以推出要進攻的結論,卻無法獲知將軍裡面誰是叛徒。
這樣我們就有了方案二:書面協議。
書面協議即將軍在接受到信息後可以進行簽字,並且大家都能夠識別出這個簽字是否是本人,換種說法就是如果有人篡改簽字大家可以知道。書面協議相對比口頭協議就是增加了一個認證機制,所有的消息都有記錄。一旦發現有人所給出的信息不一致,就是追查間諜。
有了書面協議,那麼將軍1手裡的信息就是這樣的:
可以很明顯得看出,在最壞的一種情況——叛徒總是轉發「不進攻」的消息之下,將軍7、8、9是團隊里的叛徒。
這個方案解決了口頭協議里歷史信息不可追溯的問題,但是在發送量方面並沒有做到任何改進。
在我們的示例中,比特幣系統里的每個用戶發起了一筆交易,都會通過自己的私鑰進行簽名,用數學公式表示就是:
所以之前的區塊就變成了這樣:
這樣每一筆交易都由交易發起者通過私鑰進行數字簽名,由於私鑰是不公開的,所以交易信息也就無法被偽造了。
如書面協議末尾所說的那樣,書面協議未能解決信息交流過多的問題。當比特幣系統中存在上千萬節點的時候,如果要互相廣播驗證,請求響應的次數那將是一個非常龐大的數字,顯然勢必會造成網路擁堵、節點處理變慢。為了解決這個問題,中本聰乾脆讓整個10分鍾出一個區塊,這個區塊由誰來打包發出呢?這里就採用了工作量證明機制(PoW)。工作量證明,說白了就是解一個數學題,誰先解出來數學題,誰就能有打包區塊的權力。換在拜占庭將軍的例子中就是,誰先做出數學題,誰就成為將軍們裡面的總司令,其他將軍聽從他發號的命令。
首先,礦工會將區塊頭所佔用的128位元組的字元串進行兩次sha256求值,即:
這樣求得一個值Hash,將其與目標值相比對,如果符合條件,則視為工作量證明成功。
工作量證明成功的條件寫在了區塊鏈頭部的 難度數 欄位,它要求了最後進行兩次sha256運算的Hash值必須小於定下的目標值;如果不是的話,那就改變區塊頭的 隨機數 (nonce),通過一次次地重復計算檢驗,直到符合條件為止。
此外, 比特幣有自己的一套難度控制系統,使得比特幣系統要在全網不同的算力條件下,都保持10分鍾生成一個區塊的速率。這也就意味著:難度值必須根據全網算力的變化進行調整。難度調整的策略是由最新2016個區塊的花費時長與期望時長(期望時長為20160分鍾即兩周,是按每10分鍾一個區塊的產生速率計算出的總時長)比較得出的,根據實際時長與期望時長的比值,進行相應調整(或變難或變易)。也就是說,如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。
PoW其實在比特幣中是做了以下的三件事情。
這樣可以防止一台高性能機器同時跑上萬個節點,因為每完成一個工作都要有足夠的算力。
有經濟獎勵就會加速整個系統的去中心化,也鼓勵大家不要去作惡,要積極地按照協議本來的執行方式去執行。(所以說,無幣區塊鏈其實是不可行的,無幣區塊鏈一定導致中心化。)
也就是說,每個節點都不能以自身硬體條件去控制出快速度。現在的比特幣上平均10分鍾出一個塊,性能再好的機器也無法打破這個規則,這就能夠保證 區塊鏈是可以收斂到共同的主鏈上的 ,也就是我們所說的共識。
綜上,共識只是PoW三個作用中的一點,事實上PoW設計的作用有點至少有這么三種。
默克爾樹的概念其實很簡單,如圖所示
這樣,我們區塊的結構就大致完整了,這里分成了區塊頭和區塊體兩部分。
區塊鏈的每個節點,都保存著區塊鏈從創世到現在的每一區塊,即每一筆交易都被保存在節點上,現在已經有幾百個GB了。
每當比特幣系統中有一筆新的交易生成,就會將新交易廣播到所有的節點。每個節點都把新交易收集起來,並生成對應的默克爾根,拼接完區塊頭後,就開始調整區塊頭里的隨機數值,然後就開始算數學題
將算出的result和網路中的目標值進行比對,如果是結果是小於的話,就全網廣播答案。其他礦工收到了這個信息後,就會立馬放下手裡的運算,開始下一個區塊的計算。
舉個例子,當前A節點在挖38936個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第38936個區塊(前一個區塊為38935)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。
整個流程就像下一張圖所展示的這樣:
簡單來說,雙花問題是一筆錢重復花了兩次。具體來講,雙花問題可分為兩種情況:
1.同一筆錢被多次使用;
2.一筆錢只被使用過一次,但是通過黑客攻擊或造假等方式,將這筆錢復制了一份,再次使用。
在我們生活的數字系統中,由於數據的可復制性,使得系統可能存在同一筆數字資產因不當操作被重復使用的情況,為了解決雙花問題,日常生活中是依賴於第三方的信任機構的。這類機構對數據進行中心化管理,並通過實時修改賬戶余額的方法來防止雙重支付的出現。而作為去中心化的點對點價值傳輸系統,比特幣通過UTXO、時間戳等技術的整合來解決雙花問題。
UTXO的英文全稱是 unspent transaction outputs ,意為 未使用的交易輸出 。UTXO是一種有別於傳統記賬方式的新的記賬模型。
銀行里傳統的記賬方式是基於賬戶的,主要是記錄某個用戶的賬戶余額。而UTXO的交易方式,是基於交易本身的,甚至沒有賬戶的概念。在UTXO的記賬機制里,除了貨幣發行外,所有的資金來源都必須來自於前面某一個或幾個交易。任何一筆的交易總量必須等於交易輸出總量。UTXO的記賬機制使得比特幣網路中的每一筆轉賬,都能夠追溯到它前面一筆交易。
比特幣的挖礦節點獲得新區塊的挖礦獎勵,比如 12.5 個比特幣,這時,它的錢包地址得到的就是一個 UTXO,即這個新區塊的幣基交易(也稱創幣交易)的輸出。幣基交易是一個特殊的交易,它沒有輸入,只有輸出。
當甲要把一筆比特幣轉給乙時,這個過程是把甲的錢包地址中之前的一個 UTXO,用私鑰進行簽名,發送到乙的地址。這個過程是一個新的交易,而乙得到的是一個新的 UTXO。
這就是為什麼有人說在這個世界上根本沒有比特幣,只有 UTXO,你的地址中的比特幣是指沒花掉的交易輸出。
以Alice向Bob進行轉賬的過程舉例的話:
UTXO 與我們熟悉的賬戶概念的差別很大。我們日常接觸最多的是賬戶,比如,我在銀行開設一個賬戶,賬戶里的余額就是我的錢。
但在比特幣網路中沒有賬戶的概念,你可以有多個錢包地址,每個錢包地址中都有著多個 UTXO,你的錢是所有這些地址中的 UTXO 加起來的總和。
中本聰發明比特幣的目標是創建一個點對點的電子現金,UTXO 的設計正可以看成是借鑒了現金的思路:我們可能在這個口袋裡裝點現金,在那個櫃子角落裡放點現金,在這種情況下不存在一個賬戶,你放在各處的現金加起來就是你所有的錢。
採用 UTXO 設計還有一個技術上的理由,這種特別的數據結構可以讓雙重花費更容易驗證。對比一下:
D. 五分鍾了解共識機制
五分鍾了解共識機制
什麼是共識機制?
「共識機制是區塊鏈的靈魂。」這是業內經常能聽到的一句話,共識機制在區塊鏈中的地位可想而知。那麼到底什麼是共識機制呢?我們不妨從拜占庭將軍問題說起。
拜占庭位於如今的土耳其的伊斯坦布爾,是東羅馬帝國的首都。由於當時拜占庭羅馬帝國國土遼闊,為了防禦目的,每個軍隊都分隔很遠,將軍與將軍之間只能靠信差傳消息。在戰爭的時候,拜占庭軍隊內所有將軍和副官必須達成一致的共識,決定是否有贏的機會才去攻打敵人的陣營。但是,在軍隊內有可能存有叛徒和敵軍的間諜,左右將軍們的決定又擾亂整體軍隊的秩序。在進行共識時,結果並不代表大多數人的意見。這時候,在已知有成員謀反的情況下,其餘忠誠的將軍在不受叛徒的影響下如何達成一致的協議,拜占庭問題就此形成。
拜占庭將軍問題是一個協議問題,拜占庭帝國軍隊的將軍們必須全體一致的決定是否攻擊某一支敵軍。問題是這些將軍在地理上是分隔開來的,並且將軍中存在叛徒。叛徒可以任意行動以達到以下目標:欺騙某些將軍採取進攻行動;促成一個不是所有將軍都同意的決定,如當將軍們不希望進攻時促成進攻行動;或者迷惑某些將軍,使他們無法做出決定。如果叛徒達到了這些目的之一,則任何攻擊行動的結果都是註定要失敗的,只有完全達成一致的努力才能獲得勝利。
而這個問題該如何解決?中本聰的理念給出了一個比較好的答案:不能讓所有人都有資格發信息,而是給發信息設置了一個條件:「工作量」,將軍們同時做一道計算題,誰先算完,誰才能獲得給其他小國發信息的資格。而其他小國在收到信息後,必須採用加密技術進行簽字蓋戳,以確認身份。然後再繼續做題,做對題的再繼續發消息……對這種先後順序達成共識的演算法,就是共識機制。
共識機制的作用
區塊鏈作為一種按時間順序存儲數據的數據結構,可支持不同的共識機制。在區塊鏈上,每個人都會有一份記錄鏈上所有交易的賬本,鏈上產生一筆新的交易時,每個人接收到這個信息的時間是不一樣的,有些想要干壞事的人就有可能在這時發布一些錯誤的信息,這時就需要一個人把所有人接收到的信息進行驗證,最後公布最正確的信息。
共識機制是區塊鏈技術的重要組件。它就像一本法典,維系著區塊鏈世界的正常運轉,使得區塊鏈技術自帶改善世界的光芒,也是讓區塊鏈得以被全世界逐步接受和認可的最大幕後功臣,它讓互聯網、陌生人之間,在沒有第三方作為信用背書的情況下發生的一切交易變成可能,它賦予了機械的代碼以人性和溫度。
共識機制的類別
目前的共識機制主要有POW、POS、DPOS、PBFT、dBFT、Pool驗證池。
POW,就是人們熟悉的比特幣挖礦,通過計算出一個滿足規則的隨機數,即獲得本次記賬權,發出本輪需要記錄的數據,全網其它節點驗證後一起存儲。可實現完全去中心化,節點自由進出。乾的越多,收的越多。
POS,權益證明,POW的一種升級共識機制,根據每個節點所佔代幣的比例和時間,以此等比例的挖礦難度,從而加快找隨機數的速度。持有越多,獲得越多
DPOS,股份授權證明機制,類似於董事會投票,持幣者投出一定數量的節點,代理他們進行驗證和記賬。
PBFT ,Practical Byzantine Fault Tolerance,實用拜占庭容錯演算法,是一種狀態機副本復制演算法,即服務作為狀態機進行建模,狀態機在分布式系統的不同節點進行副本復制,每個狀態機的副本都保存了服務的狀態,同時也實現了服務的操作。
dBFT,delegated BFT 授權拜占庭容錯演算法,由權益來選出記賬人,然後記賬人之間通過拜占庭容錯演算法來達成共識。
Pool驗證池,基於傳統的分布式一致性技術建立,並輔之以數據驗證機制,是目前區塊鏈中廣泛使用的一種共識機制。Pool驗證池不需要依賴代幣就可以工作,在成熟的分布式一致性演算法(Pasox、Raft)基礎之上,可以實現秒級共識驗證,更適合有多方參與的多中心商業模式。
現有共識機制存在問題
目前現有的共識機制都不算完美,在一些實際應用場景弊端很多。
A、計算能力浪費
在工作量證明機制POW中,猜數字最快的通常是電腦計算能力強的。超強的計算能級僅用來猜數字,實在是浪費。
B、權益向頂層集中
在權益證明機制POS中,token的余額越多的人獲得公示信息的概率越高,公示人會得到一定的token作為獎勵,如此持有token多的人會越來越多,少的人越來越少。
C、作惡成本低下
在靠算力與權益的的多少來獲得公示信息的權利的模式當中,當算力和權益向少數人集中之後,這些少數人如果想要做一些違反規則的事情是輕而易舉的;在PBFT中,由所有人投票,如果一個沒有任何token余額的人想要搗亂,那他幾乎是完全沒有利益損失。
D、對於真正的去中心化構成威脅
在工作量證明機制中,計算能力越強,獲得記錄權利的概率就越高。如果有人把很多人集中在一起來猜數字,把好多電腦的算力加在一起來用,那這些抱團的人就會更容易獲得公示信息的權利,發展到最後可能公示權就直接掌握在這些人手裡。
在權益證明機制POS中,權益越大的人獲得記錄權利的概率越高,而記錄的人就會有獎勵token ,這樣一來這些人就會越來越富有,貧富差距就會越來越大。持有token少的人幾乎都沒有話語權了。權利掌握在少數人手中,這有違區塊鏈去中心化理念。
E. 比特幣因為什麼可以被稱為主流幣
拜占庭將軍問題
在討論比特幣為什麼會被稱為主流幣之前先看一個有趣的問題,這個問題的名字叫做拜占庭將軍問題。
這個問題是由萊斯利·蘭伯特提出的點對點通信的基本問題。
為什麼會被稱為拜占庭將軍問題呢?有兩大歷史淵源。
一、拜占庭位於如今土耳其的伊斯坦布爾,是東羅馬帝國的首都,由於羅馬帝國當時土地遼闊,每個軍隊都相隔較遠,信息傳遞全靠信差。而在戰爭時拜占庭的所有將軍必須達成是否攻擊的共識,這樣才能贏得戰爭。但是因為有叛徒和間諜的存在就會擾亂秩序,使得難以形成正確的共識。拜占庭將軍問題就這樣形成了。
二、Leslie Lamport(2013 年的圖靈講得主)用來為描述分布式系統一致性問題(Distributed Consensus)在論文中抽象出來一個著名的例子。
Leslie Lamport在20頁的文章中舉了一個具體的例子來描述什麼是拜占庭將軍問題,拜占庭排出了10支部隊去圍攻一個城池,10支部隊由10個將軍帶領,分布在城池的四周靠通信兵傳遞信息,由於敵人實力強悍,必須要6隊或以上的人馬同時發起進攻才能贏得戰爭。如何保證至少6支軍隊可以同時發起進攻。
從字面上看起來似乎不是一個很難的問題,其實際解決起來卻沒那麼容易,在中本聰提出比特幣網路概念之前這個問題一直就沒有得到較好的解決。
為什麼這么難解決呢?
因為信息傳遞是分散的,並且其中還可能存在間諜叛徒搗亂。
先不考慮有叛徒和間諜的情況,光10個將軍想要統一一個發動進攻的時間都很難,舉例:每一個將軍都有著自己的進攻想法,想要統一一個進攻時間就要將自己的想法讓通信兵傳達給剩餘的9位將軍,並詢問是否同意在這個時間發起進攻,又由於路途遠近的不同,收到的提議的時間都不同,這樣就很容易形成一個混亂的局面。
如果再加上叛徒和間諜就更可怕了,叛徒和間諜可以向不同的將軍發出不同的提案,或者同意多個將軍的進攻提案。
這樣來看這個問題是不是就極其復雜了。
其實拜占庭將軍問題,就是要解決分散的人們在沒有一個中心化指揮時,如何達成共識的問題。
那中本聰如何成功解決拜占庭將軍問題的呢?
POW工作量證明
中本聰提出用工作量證明的方法解決這個問題。
POW工作量證明通過增加信息發送的成本,降低節點發送信息的速率,保證在一個時間只有很少的節點進行信息的傳遞,並且信息的傳遞附上簽名的辦法很好的解決了拜占庭將軍問題。
那工作量證明是什麼呢?其實際就是一個散列函數,當你輸入一個任意值X進入這個函數進行運算,會對應得到H(X)的結果,但當你稍微變動一下X,H(X)就會發生巨大的變化 , 也就是說理論上你無法在得知H(X)的情況下反推出X的結果,想要算出X唯一的辦法就是窮舉運算,也就是我們常說的一個一個帶進去試 。 由於這個運算量很大,而運算的過程就是工作的過程。
哈希函數
前面說到的散列函數實際上就是哈希函數,只是翻譯不同哈希是Hash的音譯。
其實在比特幣網路的整體架構中,哈希函數到處都有體現,整個網路的運行就是圍繞中哈希函數展開的。
比特幣在記賬時,使用哈希函數對記錄的數據進行哈希,數據哈希可以帶來一下好處,首先信息變短並且原始信息被隱藏,其次有了標識和驗證信息的辦法。
下面用一個大概流程進行展示。
區塊鏈在記賬時先把正常的信息進行Hash,會得到一個Hash值。
1.Hash(序號0、記賬時間、交易記錄) = 123456ABC
賬頁的信息和Hash值組合就構成了一個完整的區塊。
在記下一頁賬時,將上一個區塊的Hash值和當前的賬頁信息一同Hash。
2.Hash(上一個Hash值、序號1、記賬時間、交易記錄) = 654321CBA
這樣第二個區塊不僅包含自己區塊的信息還間接包含了前一個區塊的信息。
礦工在挖礦時,實際上就是在計算Hash函數。之後會專門寫一篇文章來講解挖礦的過程。
在確定數字貨幣所有權方面,其實也是經過兩次Hash從私鑰得到了地址,這個地址平常我們打幣使用的地址。誰擁有私鑰誰就可以進行交易,私鑰就是你唯一的資產憑證,所以一定要保管好自己的私鑰。
為什麼比特幣可以被稱為主流幣呢?不是因為它漲幅有多麼驚人,市值有多高,而是因為它的出現解決了許多問題,給人們提供了一種全新的點對點電子分布式網路架構。
F. 拜占庭容錯和PBFT共識演算法
實用的拜占庭容錯演算法
BFT 是區塊鏈共識演算法中,需要解決的一個核心問題。比特幣的POW,eos的dpos,以及共識演算法pos,這些公鏈演算法,解決的是共識節點眾多情況下的bft問題。
拜占庭將軍問題。也稱為拜占庭容錯。
用來描述分布式系統一致性問題。
背景如下:
拜占庭帝國想要進攻一個強大的敵人,為此派出了10支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵禦5支常規拜占庭軍隊的同時襲擊。這10支軍隊在分開的包圍狀態下同時攻擊。他們任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊(一半以上)同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通信兵騎馬相互通信來協商進攻意向及進攻時間。困擾這些將軍的問題是,他們不確定他們中是否有叛徒,叛徒可能擅自變更進攻意向或者進攻時間。在這種狀態下,拜占庭將軍們才能保證有多於6支軍隊在同一時間一起發起進攻,從而贏取戰斗?
單從上面的說明可能無法理解這個問題的復雜性,我們來簡單分析一下:
先看在沒有叛徒情況下,假如一個將軍A提一個進攻提議(如:明日下午1點進攻,你願意加入嗎?)由通信兵通信分別告訴其他的將軍,如果幸運中的幸運,他收到了其他6位將軍以上的同意,發起進攻。如果不幸,其他的將軍也在此時發出不同的進攻提議(如:明日下午2點、3點進攻,你願意加入嗎?),由於時間上的差異,不同的將軍收到(並認可)的進攻提議可能是不一樣的,這是可能出現A提議有3個支持者,B提議有4個支持者,C提議有2個支持者等等。
再加一點復雜性,在有叛徒情況下,一個叛徒會向不同的將軍發出不同的進攻提議(通知A明日下午1點進攻, 通知B明日下午2點進攻等等),一個叛徒也會可能同意多個進攻提議(即同意下午1點進攻又同意下午2點進攻)。
叛徒發送前後不一致的進攻提議,被稱為「拜占庭錯誤」,而能夠處理拜占庭錯誤的這種容錯性稱為「Byzantine fault tolerance」,簡稱為BFT。
使用密碼學演算法保證節點之間的消息傳送是不可篡改的, 通過下面的演算法我們可以保證A將軍收到B將軍發來的消息確實是B將軍本人的真實請求 。
我們採用的是哈希函數(散列演算法)SHA256 -- 從數據(byte)值中創建獨一無二的hash值,並壓縮成摘要,將數據格式固定下來。通過這個摘要與個人私鑰生成Digital Signature 和個人公鑰Public-key certificate,接收方驗證簽名和摘要,如果是通過驗證,即證明摘要內容沒有經過篡改。
pbft容忍無效或者惡意節點數量 e 。為了保證整個系統可以正常運作,需要有2f+1個正常節點,系統的總結點數為 :3f+1。即pbft演算法容忍小於1/3的惡意或者無效節點。 原因見節點作惡的極端情況
pbft是一種狀態機副本復制演算法,所有副本在一個view輪換過程中操作,哪些是主節點(進攻的提議者的大將軍們,輪流當)通過view中其他節點(其他將軍)賦予的編號和節點數集合來確定,即:主節點p=v mod |R| 。 v:view編號,|R|節點個數,p:主節點編號。 關於狀態機復制演算法、view change的意義(主要是防止主節點作惡),主節點詳見論文。
基於拜占庭將軍問題,PBFT演算法一致性的確保主要分為這三個階段:預准備(pre-prepare)、准備(prepare)和確認(commit)。流程如下圖所示:
[圖片上傳失敗...(image-e3329d-1562488133052)]
首先解釋一下上面各個符號表達的意思:
下面結合上圖,詳細說一下PBFT的步驟:
根據上述流程,在 N ≥ 3F + 1 的情況下一致性是可能解決, N為總計算機數,F為有問題的計算機總數 。
下面所有的校驗流程略去對消息內容、簽名和身份的驗證,即已經保證了節點之間消息傳播是不可篡改的
上述演算法中,比較重要的一個點是view change,為了能恢復之前的請求,每一個副本節點收到消息之後或者發送消息的時候都會記錄消息到本地的log記錄中。當執行請求後,副本節點需要把之前該請求的記錄消息清除掉。最簡單的做法是在reply消息後,在執行一次當前狀態的共識同步,但是為了節省資源,一般在多條請求K後執行一次狀態同步。這個狀態同步就是checkpoint消息。
為了節省內存,系統需要一種將日誌中的 無異議消息記錄 刪除的機制。為了保證系統的安全性,副本節點在刪除自己的消息日誌前,需要確保至少 f+1 個正常副本節點執行了消息對應的請求,並且可以在視圖變更時向其他副本節點證明。另外,如果一些副本節點錯過部分消息,但是這些消息已經被所有正常副本節點刪除了,這就需要通過 傳輸部分或者全部服務狀態實現該副本節點的同步 。因此,副本節點同樣需要證明狀態的正確性。
在每一個操作執行後都生成這樣的證明是非常消耗資源的。因此,證明過程只有在請求序號可以被某個常數(比如100)整除的時候才會周期性地進行。我們將這些請求執行後得到的狀態稱作 檢查點(checkpoint) ,並且將具有證明的檢查點稱作 穩定檢查點(stable checkpoint) 。
上述情況是理想情況,實際上當副本節點i向其他節點發出checkpoint消息之後,其他節點還沒有完成K條請求的相互共識,所以不會立即對i的請求作出響應。其他節點會按照自己的處理步驟和順序,向前行進和共識。但是此時i發出的checkpoint沒有形成stable,為了防止i太快,超過自己太多,於是被便會設置一個高水位H=h+L,其中L就是我們指定允許的高度差,等於checkpoint周期處理數K的整數倍,可以設置為L=2K。當副本節點i處理請求超過高水位H時,副本節點即使接受到請求也會視為非法請求。等待stable checkpoint發生變化,再繼續向前推進處理。
如果主節點作惡,它可能會給不同的請求編上相同的序號,或者不去分配序號,或者讓相鄰請求的序號不連續。備份節點(備份主節點)應當有職責來主動檢查這些序號的合法性。如果主節點掉線或者作惡不廣播客戶端的請求,客戶端設置超時機制,超時的話,向所有副本節點廣播請求消息。副本節點檢測出主節點或者下線,發起view change流程。
我們在上面講到,當網路中有F台有問題的計算機時,至少需要3F+1台計算機才能保證一致性問題的解決,我們在這里討論一下原因。
我們可以考慮:由於有F個節點為故障或被攻擊的節點,故我們只能從N-F個節點中進行判斷。但是由於非同步傳輸,故當收到N-F個消息後,並不能確定後面是否有新的消息。(有可能是目前收到的N-F個節點的消息中存在被攻擊的節點發來的消息,而好的節點的消息由於非同步傳輸還沒有被收到。)
我們考慮最壞的情況,即剩下F個都是好的節點,收到的中有F個被攻擊的節點,故我們需要使得收到的中好節點的數量 (N-F)-F 大於被攻擊節點的數量 F ,於是有 N-2F>F ,即 N>3F ,所以N的最小整數為 N=3F+1 。
pbft是需要參與認證的節點進行的。所以一個完整的共識演算法包括DPOS+PBFT。其速度是可以達到1500tps左右的。
參考文獻:
https://mathpretty.com/9602.html
https://blog.csdn.net/jfkidear/article/details/81275974
Practical Byzantine Fault Tolerance
Miguel Castro and Barbara Liskov Laboratory for Computer Science, Massachusetts Institute of Technology, 545 Technology Square, Cambridge, MA 02139 castro,liskov @lcs .mit.e
https://www.jianshu.com/p/fb5edf031afd 部分論文翻譯
G. 拜占庭問題與共識演算法
「拜占庭將軍問題」(Byzantine Generals Problem)是一個經典難題,這個難題是這樣描述的:拜占庭是東羅馬帝國的首都,它的軍隊分成多個師,每個師都由一個將軍統領。這些將軍通過信使進行交流,來達成一個共同作戰方案,有些將軍可能是叛徒,想故意破壞這個過程,這會造成那些忠誠的將軍也無法達成一個統一的作戰計劃。這個難題在於如何讓那些忠誠的將軍在這樣的情況下達成統一作戰方案,而避免那些叛徒對作戰方案的誤導。
在點對點、分布式的區塊鏈中,常常用拜占庭問題來比喻節點如何達成共識的問題。將軍即對應著一個個節點,達成統一作戰方案即達成共識,正確的打包與驗證區塊數據,防止惡意節點(叛徒將軍)破壞區塊鏈的運行。
顧名思義,就是能夠解決拜占庭問題,使各個節點達成共識,解決共識問題的各種機制也被稱為共識演算法。在各種各樣的共識演算法中,又一直存在一個「不可能三角」的難題,這三角是指「安全性」、「去中心化」和「速度」,也就是說難以同時保證速度、安全性和去中心化程度,三者之間往往會顧此失彼。
現在各種共識演算法算起來有好幾十種,計算機界也一直處於研究階段,並沒有說哪種演算法已經完美。
下面盤點一下講解pBET和POW兩種演算法,以及它們的「安全性」、「去中心化」和「速度」如何。
實用拜占庭容錯是一種較早的共識演算法。pBFT的一個原則,就是少數服從多數。節點通過在相互傳遞有關決策的消息,誰的決策贊同的人數多,就採用誰的。所以在這個系統中,安全性隨著誠實節點的數量而增加。誠實節點同意正確的決策,拒絕惡意節點的錯誤決策,只要惡意節點的數量少於總數的1/3,就能保證達成共識。
達成共識可以簡化為四步:
pBFT 使用投票機制以循環方式選舉領導節點。
領導者發起決策並將其廣播給輔助節點。
所有節點,包括領導節點和輔助節點,都發送響應。
當 ⅔ + 1 個節點發送相同的響應時,該響應被認為是有效的。
如果領導者有惡意行為,它可以被大多數節點刪除。
按少數服從多數的原則。那按理來說,只要惡意節點的數量少於1/2就夠了啊,那麼為什麼PBFT演算法的容錯數量要滿足惡意節點的數量少於總數的1/3呢?
因為 PBFT 演算法的除了需要支持容錯故障節點之外,還需要支持容錯作惡節點。假設集群節點數為 N,有問題的節點為 f。有問題的節點中,可以既是故障節點,也可以是作惡節點,或者只是故障節點或者只是作惡節點。那麼會產生以下兩種極端情況:
(1)這f 個有問題節點既是故障節點,又是作惡節點,那麼根據少數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,正確節點的數量就會比故障節點數量多,那麼集群就能達成共識,即總節點數為f+(f+1)=n,也就是說這種情況支持的最大容錯節點數量是 (n-1)/2。
(2)故障節點和作惡節點都是不同的節點。那麼就會有 f 個作惡節點和 f 個故障節點,當發現節點是作惡節點後,會被集群排除在外,剩下 f 個故障節點,那麼根據少數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,確節點的數量就會比故障節點數量多,那麼集群就能達成共識。所以,所有類型的節點數量加起來就是 f+1 個正常節點,f個故障節點和f個作惡節點,即 3f+1=n。
結合上述兩種情況,因此PBFT演算法支持的最大容錯節點數量是(n-1)/3,即少於1/3。
pBFT的優缺點
pBFT 系統不需要高計算資源或大量能源來運行。pBFT 在節點少的時候可以快速達成共識,因為所有節點都在不斷地相互通信。一旦節點就決策達成一致,交易就完成了。
然而,pBFT的缺點也很明顯:頻繁的通信使它只能在節點數量有限的網路中正常工作。隨著每個新節點加入網路,通信開銷呈指數增長,響應所需的時間也隨之增加。
pBFT 網路也容易受到女巫(Sybil)攻擊,女巫就是惡意黑客製造的不同節點,黑客可以控制多個節點,使其超過1/3,那系統將無法達成正確的共識。
從不可能三角的角度來看,由此可見pBFT在節點少的時候速度快,但安全性差,去中心化低;節點多了又會導致速度很慢。
中本聰設計了POW共識機制來解決上面pBFT這個經典共識的可擴展性問題。
上面說到,pBFT通過不斷廣播然後計算節點的消息數,時間花費過長。POW是怎麼做的:我不要計算節點數是否超過2/3,我直接選一個節點,按它的決策,其他節點全部同步它的決策。這樣就省去在全節點通信然後計算節點數的費時操作。
那麼,對於哪個節點來打包區塊,那就很重要,萬一是惡意節點呢?必須對打包的節點進行要求,哪個節點有權力進行打包呢?那就是解決復雜的數學問題,俗稱挖kuang。節點必須花費大量算力和電費來爭取某次打包區塊的權力。這樣的成本就限制了黑客的女巫攻擊。
如果打包區塊的權力真的被黑客搶到了,那可能會有什麼問題?
(1)竊取冰糖橙
黑客能夠竊取屬於另一個用戶,不受她控制的地址里的冰糖橙嗎?答案是否定的。即使這一輪是由黑客打包區塊鏈上的下一個區塊,她也不可能竊取別人的比特幣。這么做的話,黑客需要發起一筆有效的交易來轉移比特幣到自己的地址。這就要求黑客偽造比特幣擁有者的簽名,然而如果數字簽名機制是安全的,她是無法辦到的。只要背後的密碼學基礎是牢靠的,她就無法輕易竊取比特幣。
(2)拒絕服務攻擊
讓我們來考慮另一種攻擊。假設黑客不喜歡叫鮑勃的某個用戶,黑客可以決定她不把鮑勃發起的任何交易放進她所提議的區塊里。換言之,她拒絕提供服務給鮑勃。盡管這是黑客可以開展的有效的攻擊,但幸好這不過是個小問題。如果鮑勃的交易沒有被放進黑客所打包的下一個區塊,鮑勃只要等到下一個誠實節點發起區塊的時候,他的交易記錄就會被放進這個區塊里。所以這其實也不算是一個有效的攻擊。
也就是說,黑客花費重大成本取得的打包,但並不能起到有效的攻擊。由於對惡意節點進行懲罰、對誠實節點進行獎勵這樣的機制下,共識就達成了。
盡管有所改進,POW也引入了其他問題。工作量證明需要所有節點解決復雜的數學問題,這會消耗大量的能源,就是大家所熟知的挖kuang耗費電力。並且解決復雜的數學問題的時間也要求不短,10分鍾左右。
從不可能三角的角度來看,POW去中心化高,安全性高,但速度還是慢,但至少已經不會像pBFT那樣由於節點多導致花費時間呈指數增長。
共識演算法各式各樣,冰糖橙的POW並不是真正去解決分布式共識問題,它不能完美的套用到其他場景。但它在貨幣系統的這個特定場景下解決了冰糖橙的共識問題。POW在冰糖橙里運行得非常好。
H. 比特幣的價值到底在哪方面
還是稀缺性吧
I. 區塊鏈技術的六大核心演算法
區塊鏈技術的六大核心演算法
區塊鏈核心演算法一:拜占庭協定
拜占庭的故事大概是這么說的:拜占庭帝國擁有巨大的財富,周圍10個鄰邦垂誕已久,但拜占庭高牆聳立,固若金湯,沒有一個單獨的鄰邦能夠成功入侵。任何單個鄰邦入侵的都會失敗,同時也有可能自身被其他9個鄰邦入侵。拜占庭帝國防禦能力如此之強,至少要有十個鄰邦中的一半以上同時進攻,才有可能攻破。然而,如果其中的一個或者幾個鄰邦本身答應好一起進攻,但實際過程出現背叛,那麼入侵者可能都會被殲滅。於是每一方都小心行事,不敢輕易相信鄰國。這就是拜占庭將軍問題。
在這個分布式網路里:每個將軍都有一份實時與其他將軍同步的消息賬本。賬本里有每個將軍的簽名都是可以驗證身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些將軍。盡管有消息不一致的,只要超過半數同意進攻,少數服從多數,共識達成。
由此,在一個分布式的系統中,盡管有壞人,壞人可以做任意事情(不受protocol限制),比如不響應、發送錯誤信息、對不同節點發送不同決定、不同錯誤節點聯合起來干壞事等等。但是,只要大多數人是好人,就完全有可能去中心化地實現共識
區塊鏈核心演算法二:非對稱加密技術
在上述拜占庭協定中,如果10個將軍中的幾個同時發起消息,勢必會造成系統的混亂,造成各說各的攻擊時間方案,行動難以一致。誰都可以發起進攻的信息,但由誰來發出呢?其實這只要加入一個成本就可以了,即:一段時間內只有一個節點可以傳播信息。當某個節點發出統一進攻的消息後,各個節點收到發起者的消息必須簽名蓋章,確認各自的身份。
在如今看來,非對稱加密技術完全可以解決這個簽名問題。非對稱加密演算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經常聽到的」公鑰」和」私鑰」。公鑰和私鑰一般成對出現, 如果消息使用公鑰加密,那麼需要該公鑰對應的私鑰才能解密; 同樣,如果消息使用私鑰加密,那麼需要該私鑰對應的公鑰才能解密。
區塊鏈核心演算法三:容錯問題
我們假設在此網路中,消息可能會丟失、損壞、延遲、重復發送,並且接受的順序與發送的順序不一致。此外,節點的行為可以是任意的:可以隨時加入、退出網路,可以丟棄消息、偽造消息、停止工作等,還可能發生各種人為或非人為的故障。我們的演算法對由共識節點組成的共識系統,提供的容錯能力,這種容錯能力同時包含安全性和可用性,並適用於任何網路環境。
區塊鏈核心演算法四:Paxos 演算法(一致性演算法)
Paxos演算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。一個典型的場景是,在一個分布式資料庫系統中,如果各節點的初始狀態一致,每個節點都執行相同的操作序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個「一致性演算法」以保證每個節點看到的指令一致。一個通用的一致性演算法可以應用在許多場景中,是分布式計算中的重要問題。節點通信存在兩種模型:共享內存和消息傳遞。Paxos演算法就是一種基於消息傳遞模型的一致性演算法。
區塊鏈核心演算法五:共識機制
區塊鏈共識演算法主要是工作量證明和權益證明。拿比特幣來說,其實從技術角度來看可以把PoW看做重復使用的Hashcash,生成工作量證明在概率上來說是一個隨機的過程。開采新的機密貨幣,生成區塊時,必須得到所有參與者的同意,那礦工必須得到區塊中所有數據的PoW工作證明。與此同時礦工還要時時觀察調整這項工作的難度,因為對網路要求是平均每10分鍾生成一個區塊。
區塊鏈核心演算法六:分布式存儲
分布式存儲是一種數據存儲技術,通過網路使用每台機器上的磁碟空間,並將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在網路中的各個角落。所以,分布式存儲技術並不是每台電腦都存放完整的數據,而是把數據切割後存放在不同的電腦里。就像存放100個雞蛋,不是放在同一個籃子里,而是分開放在不同的地方,加起來的總和是100個。