99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀區(qū)塊鏈?zhǔn)鞘裁矗绾魏?jiǎn)單易懂地介紹區(qū)塊鏈
區(qū)塊鏈?zhǔn)鞘裁?,如何?jiǎn)單易懂地介紹區(qū)塊鏈
2018-04-15
收藏

區(qū)塊鏈?zhǔn)鞘裁矗绾魏?jiǎn)單易懂地介紹區(qū)塊鏈

本文將以極其通俗的方式,對(duì)區(qū)塊鏈進(jìn)行展開講解。

先擺結(jié)論,區(qū)塊鏈的顛覆在人們找到了一個(gè)低成本解決信任問(wèn)題的方案。

但凡需要解決彼此陌生互不信任的個(gè)體之間的信任問(wèn)題的地方都可以使用區(qū)塊鏈技術(shù)。

不少回答舉例不懂TCP/IP照樣打王者榮耀,照樣淘寶購(gòu)物,道理沒錯(cuò),區(qū)塊鏈技術(shù)確實(shí)很復(fù)雜,未來(lái)的區(qū)塊鏈技術(shù)非專業(yè)人士確實(shí)相當(dāng)難完全理解。但是為了體會(huì)區(qū)塊鏈的魅力,我們可以了解最簡(jiǎn)單的區(qū)塊鏈技術(shù)版本,就是號(hào)稱區(qū)塊鏈1.0的比特幣。因?yàn)檗D(zhuǎn)賬系統(tǒng)是最直接需要彼此不信任的個(gè)體之間解決信任問(wèn)題的應(yīng)用場(chǎng)景,了解了比特幣,也就能一窺區(qū)塊鏈在解決信任問(wèn)題中的魅力,也就能理解未來(lái)可能落地的應(yīng)用場(chǎng)景。因此本回答以講解比特幣來(lái)盡量幫助大家理解區(qū)塊鏈技術(shù)。

二、比特幣的誕生

話說(shuō)2008年,正值美國(guó)金融危機(jī)肆虐全球,美國(guó)央行帶頭量化寬松,就是瘋狂印鈔票,然后把這些綠色紙片片借給大家,讓大家去消費(fèi)投資,讓經(jīng)濟(jì)這潭水活起來(lái)。不難想象,經(jīng)濟(jì)體里錢突然多了起來(lái),我們的錢是不是就不值錢了?原來(lái)經(jīng)濟(jì)體總共有一萬(wàn)塊錢,你的一塊錢值多少錢,如果央行多印了一萬(wàn)塊錢,簡(jiǎn)單理解是不是你一塊錢的購(gòu)買力就縮水一半?這就是所謂的通貨膨脹。

央行所擁有的這種發(fā)行紙幣的權(quán)力、這種任性,掌握了經(jīng)濟(jì)體的生殺大權(quán)、更掌控了我們私房錢的實(shí)際價(jià)值,這令互聯(lián)網(wǎng)極客很不滿,他們不喜歡這種中心權(quán)力,他們喜歡互聯(lián)網(wǎng)這種去中心化的機(jī)構(gòu),他們想用互聯(lián)網(wǎng)技術(shù)來(lái)顛覆目前的中心化貨幣、甚至顛覆整個(gè)世界。于是乎,中本聰橫空出世,一篇奇文誕生了比特幣。

讓我們?cè)俾犅犓恼碌拿郑築itcoin:A Peer-to-Peer Electronic Cash System。先了解一下,啥叫個(gè)Peer-to-Peer。Peer啥意思,Peer就是對(duì)等的人,大家都是對(duì)等的、是身份相同的,咱們直接Peer-to-Peer,不要經(jīng)過(guò)任何中間實(shí)體,咱們直接對(duì)話、直接操作,這就是Peer-to-Peer,根本就不要中介、不需要中心,此所謂P2P技術(shù)(對(duì)等計(jì)算)。其實(shí),我倒覺將P2P理解為person-to-person更加直觀,就是我們作為一個(gè)人、做為平等的人,咱就直接對(duì)話,person-to-person,不要任何中介,這樣就不會(huì)有任何中心,大家都在互相person-to-person。簡(jiǎn)而言之,在 P2P技術(shù)中,網(wǎng)絡(luò)中的參與者既是服務(wù)器(Server),又是客戶(Client),既是資源提供者,又是資源獲取者。

我們中國(guó)習(xí)慣上將Peer-to-Peer 翻譯成“點(diǎn)對(duì)點(diǎn)”,仿佛是point-to-point一般,多少有些歪曲。如此一來(lái),中本聰?shù)拇笞骶头g成了《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》,這個(gè)系統(tǒng)的目的就是要去中心化。那我們看看中心和點(diǎn)對(duì)點(diǎn)有什么區(qū)別呢?我們現(xiàn)有的支付體系是中心化的,體現(xiàn)在兩個(gè)方面:第一,貨幣政策是由各個(gè)國(guó)家中央銀行規(guī)定的,這就導(dǎo)致了可能的貨幣濫發(fā),中本聰想要建立一個(gè)沒有中心機(jī)構(gòu)、并且規(guī)則明確的貨幣供應(yīng)方式;第二,現(xiàn)有的支付體系是中心化的,比如說(shuō)在淘寶上購(gòu)物,錢是打進(jìn)支付寶的,當(dāng)我們收貨以后錢再由支付寶打入賣家賬戶。支付寶所扮演的就是中心化的機(jī)構(gòu),因?yàn)橘I家與賣家彼此的不信任,必須要一個(gè)中心化的機(jī)構(gòu)來(lái)扮演信用中心,大家都與信任中心發(fā)生聯(lián)系,陌生人的買賣就實(shí)現(xiàn)了,淘寶成功了。但是這樣做有兩個(gè)缺點(diǎn):一是信任中心權(quán)力越來(lái)越大,如果馬云異想天開、給自己的支付寶賬戶多添幾個(gè)零,我們能知道嗎?二是,這些信用中心是要收費(fèi)的,我們要為這種信用提供費(fèi)用。中本聰想要建立的支付體系,就是要克服上述這些弊病,所以比特幣網(wǎng)絡(luò)最重要的特點(diǎn)就是:去中心化、公開透明,從技術(shù)上解決點(diǎn)對(duì)點(diǎn)的信任問(wèn)題;并且將比特幣的總量恒定在2100萬(wàn)枚,從而避免可能的通脹。

三、比特幣的轉(zhuǎn)賬

去中心化,意味著陌生人之間的轉(zhuǎn)賬支付是直接進(jìn)行的,沒有第三方提供信用擔(dān)保,這怎么可能呢?nothing is impossible,中本聰就設(shè)計(jì)出來(lái)了,當(dāng)然技術(shù)上很復(fù)雜。我們這里先打個(gè)比方介紹一下,感受一下這根蔥的厲害。

比如Alice要向Bob轉(zhuǎn)賬,注意兩人互相不認(rèn)識(shí),毫無(wú)信任感,那如何直接轉(zhuǎn)賬呢?在我們目前的具有中心的網(wǎng)絡(luò)下,Alice向Bob轉(zhuǎn)賬100元,銀行收到Alice請(qǐng)求,并檢查Alice賬戶余額,如果大于100,便減少100,同時(shí)Bob賬戶增加100余額。所有人的賬戶都是非公開的,權(quán)力掌握在中心機(jī)構(gòu)手中。但在本聰?shù)脑O(shè)計(jì)中,在一個(gè)去中心化的網(wǎng)絡(luò)中,每一個(gè)用戶自己都有一個(gè)賬本,這個(gè)賬本記錄了從第一枚比特幣誕生以來(lái)的所有交易記錄,Alice要向Bob轉(zhuǎn)賬5個(gè)btc,會(huì)在村口喊一句“Alice要轉(zhuǎn)賬5btc給Bob”,村口居民張三聽到Alice的聲音,掏出自己的小本子,檢驗(yàn)了一下Alice的賬戶,發(fā)現(xiàn)Alice有5個(gè)btc,便寫下Alice向Bob轉(zhuǎn)賬5個(gè)btc。同時(shí)也喊出“Alice要轉(zhuǎn)賬5btc給Bob”,這樣村民一傳十十傳百,直到每個(gè)村民都把這筆交易記錄在自己的賬本上。這樣,每一個(gè)村民的賬本都是一樣的,這就是所謂的去中心化賬本。在去中心化的網(wǎng)絡(luò)中,剛才說(shuō)的各個(gè)村民就是體系中的各個(gè)節(jié)點(diǎn)。這個(gè)去中心化的體系中每個(gè)節(jié)點(diǎn)的賬本都是一樣的,所以它幾乎不可能摧毀。傳統(tǒng)網(wǎng)路中,如果銀行體系被破壞了,那么大家的賬目就混亂了。但是在比特幣網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)都明確的記錄了本聰開比特幣以來(lái)的所有賬目,即使節(jié)點(diǎn)幾乎都炸毀了,只要還剩一個(gè)節(jié)點(diǎn)、就可以還原出所有記錄,除非瞬間摧毀整個(gè)互聯(lián)網(wǎng)。

我們要記住,在去中心化網(wǎng)絡(luò)中,所有人都是不可信任的,這是我們的前提,上述例子中,居民自發(fā)記賬,有沒有可能記錯(cuò)呢?當(dāng)然可能,張三如果跟Alice有仇,給人家肆意篡改,到時(shí)候我們?cè)撓嘈拍膫€(gè)賬本呢?在大家都不互相信任的體系如何做到這點(diǎn)呢?首先要做的是要先驗(yàn)證這條消息是不是Alice本人發(fā)出的,這里用的辦法就是簽名,Alice廣播這條信息的時(shí)候要在信息下簽個(gè)名,當(dāng)然網(wǎng)絡(luò)上要數(shù)字簽名了,大家收到這個(gè)信息以后要對(duì)照一下字跡,發(fā)現(xiàn)確實(shí)是Alice發(fā)送的,就承認(rèn)這條信息是真的,驗(yàn)證數(shù)字簽名的算法叫橢圓曲線數(shù)字簽名算法,是一種非對(duì)稱加密算法。

非對(duì)稱加密算法,聽著都很可怕,這里只能舉個(gè)例子,聽聽氣質(zhì),聽完氣質(zhì)長(zhǎng)精神。什么叫非對(duì)稱加密呢?那要先明白啥叫對(duì)稱加密。在傳統(tǒng)的對(duì)稱加密過(guò)程中,比如我要傳遞一個(gè)秘密數(shù)字給佐爾格,加密方式就是給這個(gè)數(shù)字加上33。當(dāng)然佐爾格要知道這個(gè)加密方式,當(dāng)他看到寫著223這個(gè)數(shù)字的紙條的時(shí)候,他就會(huì)用223減去33,等于190。這個(gè)190就是我想傳遞給佐爾格的數(shù)字;佐爾格看后非常震驚,馬上通過(guò)秘密渠道告知斯大林:德軍要用動(dòng)用190個(gè)師閃擊蘇聯(lián)。

這種加密方式的關(guān)鍵在于、雙方要實(shí)現(xiàn)約定加密方式,但如果事先無(wú)法約定怎么辦,或者這種加密方式被敵方所竊取或者所破解了怎么辦?這就是我們?cè)诤芏嗾檻?zhàn)片里的情景,一旦密碼本丟失,整套密碼系統(tǒng)就完蛋了。

那么,有沒有一種辦法,即使對(duì)方知道了加密方式也破解不了信息?這個(gè)可以有,這就是非對(duì)稱加密。

你知道了我的加密方式,竟然都破解不了我的信息,這個(gè)非對(duì)稱加密要滿足如下條件:有一個(gè)解密方式A與加密方式B,我要傳遞信息M,使用加密方式B進(jìn)行運(yùn)算,得到加密信息X=F(M,B),這個(gè)過(guò)程的好處在于,即使你知道我的加密方式B和加密后得到的信息X,你依然無(wú)法算出我的原始信息M,而原始信息M=F(X,A),即原始信息必須使用解密方式A算出。這里的A稱為私鑰,B稱為公鑰——意思就是私人密鑰和公開密鑰,比如特工小孫需要接受情報(bào),他大可以放心的把公鑰在網(wǎng)絡(luò)上公布,任何想要給他發(fā)送信息的人只要按照公鑰B的方式進(jìn)行加密,得到加密信息X,小孫只需要對(duì)X使用自己的私鑰解密即可,這樣就避免了對(duì)稱加密中加密方式的傳遞和破解問(wèn)題,只要小孫保管好自己的私鑰,這個(gè)體系幾乎很完美,但是大家基本沒聽懂,對(duì)吧?

所以這里必須要舉一個(gè)例子,一個(gè)非常簡(jiǎn)化的例子,簡(jiǎn)直就是一個(gè)小游戲、小魔術(shù)。大家提提神,我們一起小游戲。你現(xiàn)在隨便想一個(gè)三位數(shù),但你別告訴我,因?yàn)榕卤慌匀寺犚?,你加密后告訴我,你把你想好的這個(gè)三位數(shù)乘以91,然后告訴我最后三位就行了;然后呢?然后我就知道你想的那個(gè)三位數(shù)是多少了,辦法很簡(jiǎn)單,就是我把你告訴我的最后三位再乘以11,所得到數(shù)字的最后三位就是你想的數(shù)字。

那我們?cè)囈幌拢俣阆牒玫臄?shù)字是321,想把這個(gè)數(shù)字加密后告訴我,于是你用91乘以321,等于29211,然后你告訴我最后三位是211,隨后我用211乘以11,得到數(shù)字2321,這個(gè)數(shù)字的最后三位不正是你想告訴我的321嗎?哇塞,好神奇。

或許有朋友覺得,是不是碰巧了啊。你321這個(gè)數(shù)字太特殊了啊。Ok,我們?cè)賮?lái)一次。這回你想好的三位數(shù)是598,然后你乘以91,這個(gè)乘以91就是公鑰;598乘以91=54418,其最后三位是418,所以你把418告訴了我。于是我拿出了我的私鑰11,乘以418,得到了數(shù)字4598,其最后三位是598,不正是你真正想要給我傳遞的598嗎?我乘以11就是解密的過(guò)程。此所謂:公鑰加密、私鑰解密。就算別人偷聽到了你秘密告訴我的418、并且也知道這是經(jīng)過(guò)公鑰加密的——也就是乘以91了,但他只要不知道我的私鑰、也就是不知道乘以11,那他看著418照樣無(wú)法解密,只能看著418干瞪眼,無(wú)法破解出598這個(gè)真正信息。

這就是非對(duì)稱加密的牛逼之處——“公鑰加密,私鑰破解”,而傳統(tǒng)的對(duì)稱加密就是加密和破解用的是同樣的密鑰,而非對(duì)稱用的兩套密鑰——“公鑰加密,私鑰破解”。

此時(shí)此刻,估計(jì)有盆友覺得震驚了,為什么我一乘11,直接就解密了呢?因?yàn)?1乘以11等于1001,任何三位數(shù)乘以1001的后三位就是三位數(shù)本身。

大家注意,剛才這個(gè)例子只是一個(gè)極其簡(jiǎn)單的非對(duì)稱加密。人家比特幣所用的非對(duì)稱加密那是相當(dāng)?shù)膹?fù)雜,叫什么橢圓曲線數(shù)字簽名算法。我們?cè)趧偛诺睦永锩妫覀冎徽f(shuō)了單向的公鑰加密、私鑰解密,比特幣世界里的橢圓曲線算法更神奇,不但有公鑰加密、私鑰解密,還有私鑰加密、公鑰解密,私鑰可以推出公鑰,但公鑰推不出私鑰。有了這點(diǎn)公鑰和私鑰的概念,我們可以講述一下比特幣系統(tǒng)下Alice向Bob轉(zhuǎn)賬的過(guò)程。

你作為一個(gè)比特幣的用戶,自然會(huì)有一個(gè)錢包,這個(gè)錢包下面可以生成一大堆的地址和對(duì)應(yīng)的密碼,由用戶自主選擇一個(gè),甚至每一筆交易都使用一個(gè)新的公鑰(當(dāng)然只能是收款),這樣可以避免任何人對(duì)你的追查,如果你頻繁使用一個(gè)公鑰,這些交易記錄大家還可以推出一些有限信息,比如頻繁程度,額度大小等,可以對(duì)你的財(cái)富做一些推測(cè),你的隱私會(huì)受到威脅。在比特幣的世界里我們把錢包里的地址叫公鑰,把對(duì)應(yīng)的密碼叫私鑰。我們可以簡(jiǎn)單理解公鑰就是我們銀行卡賬號(hào),私鑰就是銀行卡密碼。我們每一個(gè)人在比特幣世界里可以有茫茫多的銀行卡,而且每張銀行卡并不與你本人任何身份信息綁定,這就是比特幣的匿名性。任何人只要有這個(gè)私鑰,也就是密碼,就可以操縱對(duì)應(yīng)銀行卡,也就是公鑰里的比特幣。

現(xiàn)在Alice要向Bob轉(zhuǎn)賬5btc,Alice會(huì)把這條信息用自己的私鑰加密并發(fā)送到Bob的地址,也就是Bob的公鑰,其實(shí)就是Alice先使用Bob的公鑰加密一層信息,把這條加密后的信息再使用Alice自己的私鑰加密一層,這時(shí)信息已經(jīng)被加密了兩層,一層是Bob公鑰,一層是Alice私鑰。大家收到這條信息以后,會(huì)用Alice的公鑰來(lái)驗(yàn)證加密信息是不是Alice發(fā)送的,其實(shí)就是用公鑰解密了Alice這層信息,從而驗(yàn)證了這條信息確實(shí)來(lái)自于Alice,但是這條信息還使用了Bob的公鑰加密,Bob再用自己的私鑰對(duì)這條信息進(jìn)行解密,也就是用自己的密碼打開了銀行賬號(hào),也就是用自己的私鑰打開了自己的公鑰。

理論上如果你找到了一個(gè)私鑰,那么你就是可以操縱其余額的,因?yàn)樗借€是可以推出對(duì)應(yīng)的公鑰的,然后你就可以像上述一樣對(duì)這個(gè)地址的記錄進(jìn)行數(shù)字簽名,相當(dāng)于就掌握了這個(gè)地址。反過(guò)來(lái)說(shuō),如果你的私鑰丟了,那這個(gè)地址上的整個(gè)錢也就消失了,你想申訴?申訴個(gè)nothing,整個(gè)比特幣世界是去中心化的,就沒有中心機(jī)構(gòu)可以申訴。

早期有很多用戶不知道其中厲害,還將私鑰保存在電腦里,結(jié)果被黑客入侵,私鑰被盜,其中的比特幣就全沒了。所以,千萬(wàn)不要把私鑰存在聯(lián)網(wǎng)的電腦,可以寫在紙上,再把紙放在鞋墊下面,這樣不但安全、還能增高。或許有人擔(dān)心,既然私鑰是隨機(jī)生成的,那么有沒有可能大家生成了相同的私鑰呢?有可能,nothing is impossible,但這種可能性有多小呢?小到了只有零可以與其媲美,所以大家不用擔(dān)心私鑰重合的問(wèn)題。

現(xiàn)在要談另一個(gè)重要問(wèn)題,就是如何驗(yàn)證廣播信息的真實(shí)性。也就是Alice廣播說(shuō)她要給Bob轉(zhuǎn)5個(gè)幣,但有可能她在騙人,因?yàn)樗挥?個(gè)幣,怎么能給Bob轉(zhuǎn)5個(gè)?對(duì)呀,如何確認(rèn)Alice的話是真的呢?以下我會(huì)把Alice當(dāng)做你來(lái)說(shuō),這樣你更有感覺、更有feeling。

如果要是有中心機(jī)構(gòu)銀行,那就好辦了,就只要統(tǒng)計(jì)你的余額就好了;而比特幣只儲(chǔ)存交易記錄,只驗(yàn)證這筆交易中涉及比特幣的來(lái)源與去向,并不是對(duì)于你的余額進(jìn)行檢驗(yàn)。比如你要轉(zhuǎn)賬兩枚比特幣,這兩枚的編號(hào)分別是1和2;系統(tǒng)并不關(guān)心你總共有多少枚比特幣,而是檢驗(yàn)編號(hào)1的比特幣上次發(fā)送到了你的公鑰,而且并沒有再被發(fā)送出去,那這個(gè)比特幣就可以被轉(zhuǎn)賬發(fā)送出去;編號(hào)2也同理,如果你只轉(zhuǎn)賬2btc,那么系統(tǒng)到此就判定結(jié)束了,如果你需要轉(zhuǎn)賬3枚,那么你就必須再援引一個(gè)btc的交易記錄,我們說(shuō)過(guò),它記錄了比特幣誕生以來(lái)的所有交易記錄,每一項(xiàng)資產(chǎn)和交易記錄都是公開可查的!這就是公開透明的特點(diǎn)。別忘了,我們是與陌生人打交道,時(shí)時(shí)刻刻都是不信任。

事實(shí)上,Alice傳達(dá)的信息中:我要給Bob轉(zhuǎn)賬5個(gè)btc。這5個(gè)btc都是有編號(hào)的,我們可以查這5個(gè)btc上一次是從哪里轉(zhuǎn)到Alice這里的?這5個(gè)幣有沒有從Alice這里轉(zhuǎn)走?如果都滿足,那就表明Alice可以轉(zhuǎn)走這5個(gè)幣。所以比特幣是一種去中心化的賬本大家聽出點(diǎn)意思了吧,比特幣世界算你的余額,是算從你這個(gè)賬戶誕生開始每一筆收支,加減到現(xiàn)在你的正值,由于每一筆交易都是全網(wǎng)驗(yàn)證過(guò)的,每一筆交易的比特幣都是有來(lái)龍去脈的,所以可以說(shuō)它是相當(dāng)安全的。當(dāng)你在電腦上下載比特幣客戶端的時(shí)候,系統(tǒng)會(huì)一次性的下載所有交易記錄,而且會(huì)驗(yàn)證一遍,一般需要一天一夜的時(shí)間,好麻煩啊;不過(guò)只要驗(yàn)證一次、就一勞永逸了。

四、比特幣的制造:區(qū)塊鏈與挖礦

大家聽到這里,比特幣轉(zhuǎn)賬的方式有了大體的感覺。大家此刻心中一定憋了一個(gè)問(wèn)題、大問(wèn)題,貨幣是各國(guó)央行發(fā)行的,而比特幣是去中心化的,那誰(shuí)來(lái)發(fā)行比特幣呢?也就是說(shuō),比特幣是怎么創(chuàng)造出來(lái)的。比特幣是挖出來(lái)的,使勁在網(wǎng)絡(luò)里挖,就能挖出金礦比特幣,簡(jiǎn)稱“挖礦”。挖礦,這當(dāng)然是很形象的說(shuō)法,到底啥是個(gè)挖礦呢?這里就必須要引入我們的主題概念——區(qū)塊鏈。

在比特幣的世界里,每時(shí)每刻,都會(huì)發(fā)生很多比類似Alice轉(zhuǎn)賬Bob的交易,把每十分鐘內(nèi)的交易記錄打包在一起,就叫區(qū)塊——block。把比特幣一誕生就開始的所有交易記錄都鏈接起來(lái),也就是把這些區(qū)塊連接起來(lái),就構(gòu)成了區(qū)塊鏈——Block chain。那比特幣怎么產(chǎn)生的呢?沒有比特幣,你交易個(gè)nothing,估計(jì)有人都急了。別急,馬上到關(guān)鍵所在了。

卻說(shuō)每十分鐘的交易信息被打包記錄,這就是一個(gè)區(qū)塊;整個(gè)網(wǎng)絡(luò)上的電腦都在搶奪這個(gè)區(qū)塊的記賬權(quán)利,誰(shuí)搶到這個(gè)記賬的權(quán)利,誰(shuí)就可以獲得這個(gè)區(qū)塊創(chuàng)造出來(lái)的比特幣。2009年,中本聰創(chuàng)造了第一個(gè)區(qū)塊,被稱為“創(chuàng)世區(qū)塊”,其本人就獲得了第一個(gè)區(qū)塊獎(jiǎng)勵(lì)的50枚比特幣,這也是比特幣世界的第一筆交易記錄,永遠(yuǎn)載入這個(gè)區(qū)塊里。(每一枚比特幣都是追根溯源有據(jù)可查的)。

所謂挖礦,就是搶奪記賬權(quán)利,從而獲得獎(jiǎng)勵(lì),獎(jiǎng)勵(lì)就是比特幣。為什么會(huì)有人不停的挖,因?yàn)楸忍貛攀澜缋锩渴昼娚梢粋€(gè)區(qū)塊,哪個(gè)電腦搶到了記賬權(quán)、構(gòu)建了這個(gè)區(qū)塊,哪個(gè)電腦就獲得該區(qū)塊的獎(jiǎng)勵(lì),這就是挖礦。既然可以不停的挖,那比特幣這種虛擬礦產(chǎn)就是“取之不盡用之不竭”的嘍?NO,絕非如此,比特幣的數(shù)量是有最高限額的——2100萬(wàn)枚比特幣。所以比特幣這種礦是越挖越少,中本聰設(shè)計(jì)的特別妙,就是每個(gè)區(qū)塊的獎(jiǎng)勵(lì)每四年減半。我們剛說(shuō)了,中本聰造出第一個(gè)區(qū)塊的時(shí)候、獲得50枚的獎(jiǎng)勵(lì),四年后,就是到了2013年、獎(jiǎng)勵(lì)就減半了,2017年再次減半。所以當(dāng)下每個(gè)區(qū)塊的獎(jiǎng)勵(lì)是12.5枚比特幣,等到了2140年比特幣產(chǎn)量就將趨于0,從而將比特幣的總量恒定在2100萬(wàn)枚。截止目前,網(wǎng)絡(luò)世界已經(jīng)創(chuàng)造出1500w枚比特幣。

簡(jiǎn)而言之,挖礦就是搶奪生成區(qū)塊的權(quán)利、搶奪記賬的權(quán)力,也就是搶奪為全網(wǎng)服務(wù)的權(quán)力。一旦搶到這個(gè)權(quán)利,所獎(jiǎng)勵(lì)的比特幣就寫在得到的區(qū)塊上,然后系統(tǒng)告知整個(gè)區(qū)塊鏈的所有節(jié)點(diǎn),獲得全網(wǎng)確認(rèn)后,這個(gè)區(qū)塊便成為合法的新增區(qū)塊,整個(gè)區(qū)塊鏈又多了一個(gè)區(qū)塊。

現(xiàn)在大家關(guān)心的是,既然那么多電腦都爭(zhēng)奪記賬權(quán),那系統(tǒng)是如何決定誰(shuí)來(lái)記賬的呢?中本聰真的很本聰,他的設(shè)計(jì)是出一道很難的數(shù)學(xué)題,誰(shuí)最先算出來(lái),誰(shuí)就創(chuàng)立了這個(gè)區(qū)塊,誰(shuí)就獲得獎(jiǎng)勵(lì)。這可不是一般的數(shù)學(xué)題,是一種很傻很傻的數(shù)學(xué)題,名字叫hash算法。

這個(gè)hash算法聽著很harsh,這會(huì)兒先打住,我們?cè)倩仡櫼幌聞偛诺母拍睿倮^續(xù)。

五、公鑰 私鑰 錢包 比特幣之間的關(guān)系

剛才說(shuō)到比特幣世界里的公鑰和私鑰。公鑰就是地址,私鑰是密碼。公鑰就是銀行卡賬號(hào),私鑰就是銀行卡密碼。所謂錢包就是一種電腦軟件,它可以幫你生成一系列配套的私鑰公鑰,你可以隨意選擇一個(gè)公鑰作為收款地址,并且使用配套的私鑰繼續(xù)使用它。比特幣只有交易記錄,所以你的每一個(gè)公鑰上所謂的余額就是賬本上顯示的誰(shuí)向這個(gè)地址轉(zhuǎn)賬了,私鑰作為密碼的作用就是可以援引這個(gè)公鑰的交易記錄并對(duì)其簽名。一個(gè)公鑰,如果沒有私鑰與之配套,那就不能對(duì)這個(gè)公鑰進(jìn)行簽名,也就無(wú)法發(fā)送從這個(gè)公鑰向外轉(zhuǎn)賬的交易記錄了。

比特幣的公鑰是公開的,任何人都可以查看關(guān)于這個(gè)公鑰的所有交易記錄。也就可以知道這個(gè)公鑰有多少“余額”;每一枚比特幣原則上是可以跟隨其交易記錄一直向上追索的。不過(guò)這是這比較麻煩的,因?yàn)楸忍貛诺淖钚挝皇?0的-8次方,這個(gè)最小單位還有個(gè)名字——聰,中本聰?shù)穆?。比特幣的單位如此小,一枚比特幣可能是很多更小?shù)字組成的,比如是0.005 、0.78、0.215之和,所以其來(lái)源可能會(huì)非常細(xì)小,但所有交易記錄都擺在這里,誰(shuí)想去追蹤這些所有的細(xì)分的來(lái)源都沒有問(wèn)題。舉個(gè)具體的例子,你的某一枚比特幣并非是一個(gè)人給你轉(zhuǎn)過(guò)來(lái)的,可能是三個(gè)人給你轉(zhuǎn)的,比如張三給你轉(zhuǎn)了0.3個(gè)比特幣,李四轉(zhuǎn)了0.5個(gè)比特幣,王二麻子轉(zhuǎn)了0.2個(gè)比特幣,然后這三者湊成在一起、形成了你手頭的這一枚比特幣,這些交易記錄都是公開的,任何人都是可以檢索的。甚至你還可以檢索張三轉(zhuǎn)來(lái)的那0.3個(gè)比特幣是誰(shuí)給他的,反正是可以一直向前追,最終追到中本聰?shù)膭?chuàng)始區(qū)塊。

六、比特幣——賬本而已

這里必須要明確指出,在比特幣世界里是沒有實(shí)體存在,沒有那種類似于鈔票這種實(shí)體的存在,有人在網(wǎng)頁(yè)看到了比特幣的樣子、跟金幣似的,那是忽悠人的。比特幣——無(wú)影無(wú)形,我們可以將之想象一個(gè)賬本,系統(tǒng)里每個(gè)節(jié)點(diǎn)都有的賬本。這個(gè)賬本記錄了從創(chuàng)世到現(xiàn)在的轉(zhuǎn)賬記錄而已,你的所謂財(cái)富其實(shí)就是每個(gè)條目一條一條的累計(jì)。賬本的第一條是:創(chuàng)世區(qū)塊,比特幣系統(tǒng)轉(zhuǎn)賬給中本聰50btc。你說(shuō)中本聰收到任何實(shí)體的money了嗎?完全沒有!但是在比特幣系統(tǒng)里,中本聰已經(jīng)在賬目上擁有了50個(gè)比特幣,以后中本聰想要給別人轉(zhuǎn)賬,他就可以援引一下這條交易記錄,證明自己接受過(guò)50個(gè)比特幣,然后再寫一條交易記錄要把這個(gè)轉(zhuǎn)給誰(shuí)。明白了嗎?整個(gè)比特幣系統(tǒng)就是一個(gè)賬本,沒有任何實(shí)體支撐。

就好比小朋友之間拿一個(gè)本子寫上Alice給Bob5枚可愛幣,Bob給Alice玩一會(huì)游戲機(jī)。明天Bob又寫上我付給Alice5枚可愛幣,借她漫畫書看一看。這中間沒有任何所謂的可愛幣,但是Alice和Bob煞有介事的寫在賬本上,而且二人都當(dāng)真的時(shí)候,這可愛幣就成真了。比如我們假設(shè)Bob賬目上富裕5個(gè)可愛幣,有一天Bob看上了同桌Tom的一根棒棒糖,但是Bob并沒有現(xiàn)金支付。他就對(duì)Tom說(shuō),能不能把這根棒棒糖給我,我在小本子上給你記賬5個(gè)可愛幣。Tom說(shuō)你有病吧?你拿個(gè)本子神叨叨的給我記錄一下我就給你糖吃?Bob說(shuō),你別看這記一下,這條記錄表明你就擁有了我的五個(gè)可愛幣,你可以去找Alice借漫畫游戲機(jī),不信你去試試。Tom將信將疑的答應(yīng)了,隨后帶著小本子去找Alice,在上面記錄一條Tom轉(zhuǎn)賬5可愛幣給Alice。Alice欣然同意,并借給Tom游戲機(jī)玩了一天。第二天Tom對(duì)Bob說(shuō),太神奇了!你這可愛幣還有嗎,能不能再跟我換一點(diǎn)?Bob呵呵一笑,這可愛幣,看不見摸不著,就在這個(gè)帳本里。而且很遺憾,我并不能偽造,我收到的可愛幣必須是別人寫記錄給我的!Tom小朋友并沒有見到所謂的可愛幣,但他似乎感受到了那個(gè)賬本的魔力,好像真的就有像棒棒糖形狀的可愛幣藏在其中。

是的,比特幣就有這個(gè)魔力,雖然只是個(gè)賬本,但仿佛就是一枚一枚的金幣。好了,大家現(xiàn)在應(yīng)該已經(jīng)理解了,比特幣就是一個(gè)去中心化的記賬,而且是公開透明的賬本,任何隨時(shí)都可以查賬。

七、比特幣轉(zhuǎn)賬——簽名認(rèn)證:hash算法

關(guān)于比特幣的轉(zhuǎn)賬的問(wèn)題,我們先前已經(jīng)說(shuō)過(guò),但很粗略,尤其是在簽名認(rèn)證這個(gè)點(diǎn)上,幾乎是一嘴帶過(guò),現(xiàn)在好好說(shuō)一說(shuō)。

比特幣是如何轉(zhuǎn)賬的呢?我們還是以Alice向Bob轉(zhuǎn)賬5個(gè)btc為例,Alice需要聲明一下她要轉(zhuǎn)賬的這筆錢是哪來(lái)的,比特幣其實(shí)沒有余額的概念、只是一堆交易記錄,首要需要聲明要轉(zhuǎn)賬的五個(gè)btc是哪里來(lái)的、是誰(shuí)轉(zhuǎn)給你的。那里Alice可以胡亂聲明嗎?不行,因?yàn)樗暶鞯倪@些交易記錄都會(huì)被檢驗(yàn),系統(tǒng)會(huì)自動(dòng)對(duì)之進(jìn)行核對(duì),一旦發(fā)現(xiàn)有沖突就會(huì)拒絕這個(gè)聲明。假設(shè)這5個(gè)btc分別來(lái)自兩筆交易,張三轉(zhuǎn)賬2btc給Alice,李四轉(zhuǎn)賬3btc給Alice。然后Alice要寫明,我將這5個(gè)btc轉(zhuǎn)賬給Bob。交易其實(shí)就算完成了。但是其它節(jié)點(diǎn)要對(duì)這個(gè)交易做兩點(diǎn)驗(yàn)證:其一、這條信息是否Alice是所發(fā),其二、Alice所聲明的交易記錄是否為真。后者比較容易,就是系統(tǒng)的自動(dòng)核對(duì)。但前者如何進(jìn)行?

現(xiàn)在就是要好好講講:如何驗(yàn)證信息是否為Alice本人所發(fā)的。不妨想想生活中我們使用信用卡也需要簽名來(lái)確認(rèn)是否為本人所使用一樣,這里需要的是數(shù)字簽名。具體流程是結(jié)合了第一集提到的的非對(duì)稱加密和hash算法的。

這個(gè)hash算法是只能驗(yàn)證不能求解,什么意思?我們舉個(gè)簡(jiǎn)單的例子,體會(huì)一下hash算法的精神;比如根號(hào)17202這個(gè)數(shù)的后幾位小數(shù)是9291430,系統(tǒng)只發(fā)送9291430這個(gè)數(shù),有沒有可能猜到是哪個(gè)數(shù)的開平方后的后幾位小數(shù)呢?這就太難了。但也有辦法,那就是窮舉法,一個(gè)數(shù)一個(gè)數(shù)去嘗試,說(shuō)個(gè)最笨的方式,你就從1開始嘗試,最后終于嘗試到了17202,驚喜地發(fā)現(xiàn),這位仁兄、的開根號(hào)、的后幾位、就是9291430,然后你就很激動(dòng)地告訴大家:這個(gè)數(shù)就是17202。大家一算果然是,你好牛啊,你是花魁啊!

咋樣,這就是hash算法,它的加密規(guī)則是公開的,就是將原本的數(shù)字開根號(hào)取后幾位小數(shù),但你很難靠這幾位小數(shù)推測(cè)出來(lái)原本的數(shù)字,唯一的方案就是暴力破解、窮舉法,最終可以將原本的數(shù)字驗(yàn)證出來(lái),這就叫hash算法。注意,剛才只是說(shuō)的一個(gè)簡(jiǎn)單的例子,真正的hash肯定是很harsh的,是很復(fù)雜的,但都是這個(gè)氣質(zhì)。

現(xiàn)在我們把hash算法這個(gè)過(guò)程抽象為h(),我們要加密的信息記為M1,則hash值為h(M1)。我們知道hash值是不能反推出來(lái)的,而且也不存在說(shuō)另外一條信息M2,使得h(M2)=h(M1)。

Alice向Bob轉(zhuǎn)賬這個(gè)過(guò)程中,Alice要需要發(fā)送兩部分內(nèi)容:一是援引的之前的交易記錄,二是此番Alice要向Bob轉(zhuǎn)賬的交易記錄,此兩者構(gòu)成了Alice要向Bob發(fā)送的整體信息,我們將之記做M1,可以想象這些信息都已經(jīng)數(shù)字化了,即便Alice和Bob這兩個(gè)人也是以公鑰或者說(shuō)是地址來(lái)代替的,雙方都是匿名的嘛;我們只是為了表達(dá)方便,才直接說(shuō)成Alice和Bob,其實(shí)是Alice用她這個(gè)地址給Bob的那個(gè)地址轉(zhuǎn)賬。

如果Alice只發(fā)送這個(gè)整體信息M1,別人怎么確定就是Alice發(fā)送的呢?這一切必須要獲得比特幣世界所有人的認(rèn)可啊。所以Alice在發(fā)送M1之前,還要對(duì)之簽名。怎么簽?簽什么?那就是Alice要對(duì)整體信息M1 hash一下,你就可以簡(jiǎn)單地認(rèn)為、對(duì)M1進(jìn)行了開根號(hào),然后得到最后三位是369,也就是h(M1)=369。然后我們以第一集所講的91×11為例,Alice私鑰為11,公鑰為91。那么Alice就會(huì)把這個(gè)h(M1),也就是369乘上11的后三位059,連同信息本身發(fā)送出去。這就是Alice完成了數(shù)字簽名。

Alice周圍各個(gè)節(jié)點(diǎn)收到信息以后呢?首先使用Alice的公鑰也就是91對(duì)這個(gè)059進(jìn)行解密,也就是059×91=5369,取后三位還原出信息為369。然后再對(duì)Alice發(fā)送的原文信息M1進(jìn)行hash,發(fā)現(xiàn)結(jié)果也為369,這不就驗(yàn)證成功了嗎?這信息的確是Alice所發(fā)送的。

再略微展開一下,這里使用了跟Alice私鑰配對(duì)的公鑰,因?yàn)橹挥信鋵?duì)的公鑰私鑰才能解密,所以這個(gè)解密成功表明了確實(shí)是Alice發(fā)送的信息;其次,對(duì)Alice發(fā)送的原文進(jìn)行了hash計(jì)算,發(fā)現(xiàn)也是369,也說(shuō)明了Alice發(fā)送的信息沒有被別人篡改。所以這些從哪里轉(zhuǎn)來(lái)的又轉(zhuǎn)到哪里去的信息確確實(shí)實(shí)是Alice發(fā)送的,然后大家再核對(duì)這些交易記錄跟已有的賬本是否沖突;如果不沖突,我們就確認(rèn)了這條交易記錄。即Alice的地址向Bob地址轉(zhuǎn)賬5btc這個(gè)記錄有效。等到Bob想要花掉這5個(gè)btc時(shí)候,他就需要援引這條交易記錄,同時(shí)對(duì)內(nèi)容進(jìn)行hash,再用這個(gè)公鑰地址配對(duì)的私鑰進(jìn)行簽名,同時(shí)發(fā)送信息,周而復(fù)始,妙不可言。中本聰,你是大蔥中最聰明的那根蔥。

現(xiàn)在我要把剛才的驗(yàn)證過(guò)程再簡(jiǎn)單地梳理一下:ALICE在發(fā)送整體信息M1之前,先對(duì)M1進(jìn)行了hash,發(fā)現(xiàn)結(jié)果是369,于是用私鑰處理了369,也就是乘以11,將后三位059連同信息本身發(fā)送出去。這就是Alice完成了數(shù)字簽名。Alice周圍各個(gè)節(jié)點(diǎn)收到信息以后,先用Alice的公鑰也就是91對(duì)這個(gè)059進(jìn)行解密,即就是059×91=5369. 又發(fā)現(xiàn)將Alice原文信息M1進(jìn)行hash,發(fā)現(xiàn)結(jié)果也是369,從而確認(rèn)這天信息的確是ALICE發(fā)送的。你們說(shuō)妙不妙,眾妙之門,此門最妙。

八、區(qū)塊、hash、挖礦

好了,明白了轉(zhuǎn)賬過(guò)程,我們要進(jìn)一步講解區(qū)塊、區(qū)塊鏈,只有這樣我們才能真正明白“挖礦”的原理,了解比特幣是如何創(chuàng)造出來(lái)的。

我們先前是這樣簡(jiǎn)單描繪的:在比特幣的世界里,每時(shí)每刻都會(huì)發(fā)生很多類似Alice轉(zhuǎn)賬Bob的交易,我們把每十分鐘內(nèi)的交易記錄,就叫做區(qū)塊。把比特幣一誕生就開始的所有交易記錄都鏈接起來(lái),也就是把這些區(qū)塊連接起來(lái),就構(gòu)成了區(qū)塊鏈——Block chain。整個(gè)網(wǎng)絡(luò)上的電腦都在搶奪新生區(qū)塊的記賬權(quán)利,誰(shuí)搶到這個(gè)記賬的權(quán)利,誰(shuí)就可以獲得這個(gè)區(qū)塊創(chuàng)造出來(lái)的比特幣?,F(xiàn)在要對(duì)此深入解讀。

我們可以這樣想象,每一個(gè)區(qū)塊就是一個(gè)塊、一個(gè)方方的區(qū)塊;每個(gè)區(qū)塊都有自己的標(biāo)記、也就是有自己ID。這個(gè)ID可不是隨便定的,而是整個(gè)區(qū)塊的hash值,也就是將這個(gè)區(qū)塊的所有信息hash之后所得的那個(gè)數(shù)字,這個(gè)hash值是唯一的,并且與此區(qū)塊綁定;

每個(gè)區(qū)塊的第一層是上一個(gè)區(qū)塊的hash值,表明這個(gè)區(qū)塊排在上個(gè)區(qū)塊后面,然后中間層是這一個(gè)區(qū)塊的交易記錄,底層是一個(gè)隨機(jī)數(shù)。一到三層的內(nèi)容會(huì)生成區(qū)塊的hash值,即本區(qū)塊的id。所謂挖礦,就是去猜底層的隨機(jī)數(shù),一旦才對(duì)了隨機(jī)數(shù),也就解出來(lái)這個(gè)區(qū)塊的hash值。為什么呢?因?yàn)楸緟^(qū)塊的前兩層信息是公開已知的,而只有底層隨機(jī)數(shù)是不公開的,所以誰(shuí)猜到了隨機(jī)數(shù),也就可以解出本層的hash值。

那這個(gè)隨機(jī)數(shù)又是怎么猜的呢?是用暴傻方式猜的,又暴力又傻逼的方式,此所謂窮舉暴力嘗試法。就是各位礦工一個(gè)數(shù)字一個(gè)數(shù)字地試,直到有人到率先找到第一個(gè)符合這個(gè)規(guī)則的hash值。簡(jiǎn)單地說(shuō),就是新區(qū)塊的hash值已被網(wǎng)絡(luò)所確定,而礦工在不斷計(jì)算、并核對(duì),一旦哪位算對(duì)了,網(wǎng)絡(luò)就給予確認(rèn),然后獎(jiǎng)勵(lì)他比特幣。更確切地說(shuō),是網(wǎng)絡(luò)事先定下了一個(gè)規(guī)則、一個(gè)公開的規(guī)則,比如說(shuō):要求這個(gè)hash值前面有15個(gè)0開頭,哪個(gè)礦工率先找到第一個(gè)符合這個(gè)規(guī)則的隨機(jī)數(shù)、就算猜出了這個(gè)hash值,他就會(huì)向全網(wǎng)廣播“各位挖礦的labor們,你們不用算了,我算出來(lái)了,這個(gè)隨機(jī)數(shù)是xx,這個(gè)hash值是xxx”,正在埋頭苦干的礦工們一驗(yàn)算,發(fā)現(xiàn)這貨算出來(lái)的hash值果然滿足規(guī)則,嘴里嘟囔了一句shit,趕緊把這個(gè)hash值作為本區(qū)塊的表示,并在這個(gè)區(qū)塊的基礎(chǔ)上繼續(xù)計(jì)算下一個(gè)區(qū)塊的hash值,心中默念:下回就該我搶先一次了。

由于hash值是這個(gè)區(qū)塊的唯一標(biāo)識(shí),而且隨意更改一點(diǎn)信息就會(huì)顯著改變這個(gè)hash值,所以比特幣世界的歷史交易記錄是不可能被篡改的。具體來(lái)說(shuō),每一個(gè)區(qū)塊的hash值=上一個(gè)區(qū)塊hash值 本區(qū)塊的交易記錄+本區(qū)塊的隨機(jī)數(shù)。如果我們篡改了交易記錄,這個(gè)hash值就會(huì)改變,這就不被認(rèn)證,就不允許了。所以一旦生成一個(gè)區(qū)塊,其配套的hash值成為唯一標(biāo)識(shí),且不可更改。

估計(jì)很多朋友更關(guān)心區(qū)塊底層的隨機(jī)數(shù),那到底起了一個(gè)什么作用。首先當(dāng)然是讓礦工去猜去計(jì)算、去暴力嘗試,另外它還起到一個(gè)作用,就是去平衡算力,從而保證是平均每10分鐘產(chǎn)生一個(gè)區(qū)塊。如果礦工的設(shè)備變得先進(jìn)了,引進(jìn)了什么阿爾法狗呀、貓呀的都來(lái)了,那全網(wǎng)算力就提高了;那怎么辦?很簡(jiǎn)單,就會(huì)增大隨機(jī)數(shù)的難度,還是能平衡在每10分鐘左右產(chǎn)生一個(gè)區(qū)塊。比如,本來(lái)系統(tǒng)要求hash值前面有15個(gè)0開頭,但如果算力上升,系統(tǒng)就要求尋找hash值開頭必須有20個(gè)0,難度就陡然加大了;反正是不能讓你上房揭瓦,好好挖礦,就是10分鐘一個(gè)區(qū)塊。

九、區(qū)塊鏈的形成及小總結(jié)

我們從頭梳理一下比特幣的運(yùn)行過(guò)程。2009年1月3日,中本聰創(chuàng)立了比特幣系統(tǒng),當(dāng)時(shí)全網(wǎng)沒有算力,只有他在挖礦,所以很順利,它計(jì)算出了滿足第一個(gè)區(qū)塊hash條件的隨機(jī)數(shù),并計(jì)算出了此區(qū)塊的hash值,同時(shí)得到這個(gè)區(qū)塊的獎(jiǎng)勵(lì),50個(gè)btc。

最初幾個(gè)月,幾乎沒人來(lái)參與,漸漸地人一點(diǎn)點(diǎn)的變多,每個(gè)時(shí)刻開始有交易產(chǎn)生,隨著全網(wǎng)算力的提升,系統(tǒng)要平衡hash值的計(jì)算難度,為了保證有人記錄10min左右的交易記錄,因?yàn)?0分鐘的交易記錄不多不少剛剛好。如果hash值太簡(jiǎn)單,一秒鐘就被人破解出來(lái),所生成區(qū)塊的交易記錄就存儲(chǔ)得太少;反之,如果計(jì)算難度太大,那每個(gè)區(qū)塊需要打包的交易記錄又太多,所以就要用合適隨機(jī)數(shù)難度、將之平衡到十分鐘一個(gè)區(qū)塊。

現(xiàn)在,這個(gè)系統(tǒng)有一定的礦工維系這記賬的責(zé)任,有一定的玩家有日常的交易需求,礦工們開始辛勤的挖礦即不斷嘗試每個(gè)區(qū)塊的隨機(jī)數(shù)直到嘗試出來(lái)符合當(dāng)前hash值規(guī)則所要求的hash值,當(dāng)嘗試出一個(gè)隨機(jī)數(shù)并成功時(shí),會(huì)馬上向全網(wǎng)廣播“我成功啦,我得到獎(jiǎng)勵(lì)了,兄弟們趕緊在我后頭繼續(xù)挖啊”,大家會(huì)將他公布的隨機(jī)數(shù)進(jìn)行驗(yàn)證,發(fā)現(xiàn)基于這個(gè)隨機(jī)數(shù)所求得的hash值確實(shí)所要求的hash值規(guī)則,那大家就認(rèn)可了,并這個(gè)區(qū)塊的標(biāo)題就定為這個(gè)hash值?;谶@個(gè)hash值,大家再去奮力計(jì)算一個(gè)區(qū)塊的hash值,如此go on and on,區(qū)塊鏈就形成了。

區(qū)塊鏈,它到底是怎么鏈在一起的呢?難道一個(gè)區(qū)塊和一個(gè)區(qū)塊之間真有一條鏈子嗎?是這樣的,區(qū)塊就是每10min的交易記錄,區(qū)塊鏈就是區(qū)塊連接起來(lái)的整體,這就記錄了所有的交易信息,所以中本聰09年的那個(gè)區(qū)塊叫創(chuàng)世區(qū)塊。每個(gè)區(qū)塊所包含的信息是:上一個(gè)區(qū)塊hash值(表明連接關(guān)系) 本區(qū)塊的hash值(id) 本區(qū)塊交易記錄 本區(qū)塊隨機(jī)值(用以調(diào)整本區(qū)塊hash值難度)。

這下子大家明白了,區(qū)塊之間為什么能鏈起來(lái),就是因?yàn)槊總€(gè)區(qū)塊都包含了上一個(gè)區(qū)塊的hash值,那當(dāng)然就鏈接了起來(lái),仿佛區(qū)塊在排隊(duì),一個(gè)跟著一個(gè),誰(shuí)也別插隊(duì)。這也保證了,誰(shuí)也無(wú)法篡改交易記錄,因?yàn)橐坏└膮^(qū)塊內(nèi)容,會(huì)改變此區(qū)塊hash值,導(dǎo)致鏈接關(guān)系發(fā)生混亂了,那就會(huì)被大家所發(fā)現(xiàn)。注意,hash值對(duì)初值極其敏感,隨意修改一點(diǎn)點(diǎn)就會(huì)造成完全迥異的hash值,會(huì)產(chǎn)生混沌,發(fā)生蝴蝶效應(yīng)。誰(shuí)敢篡改,就會(huì)飛蝴蝶,蝴蝶一飛,系統(tǒng)發(fā)生大地震,誰(shuí)人不知呢?

如下圖就是區(qū)塊鏈,其中省略了交易記錄和隨機(jī)值

FIG1這個(gè)圖是一個(gè)block的樣子

FIG2

有了這個(gè)區(qū)塊鏈,意味著網(wǎng)絡(luò)的每一個(gè)節(jié)點(diǎn)都存儲(chǔ)了本聰開創(chuàng)比特幣以來(lái)的所有交易記錄,每一條信息誰(shuí)都可以查。這個(gè)系統(tǒng)可真是太棒了。但它有沒有漏洞呢?還真有,nothing is perfect。

十、雙花問(wèn)題

這個(gè)漏洞就是雙花,double spending,不是double flower。

既然有人在搶著記賬、記好的賬本又不能篡改,我們還可以驗(yàn)證每條消息的真?zhèn)?,這似乎很完美了啊,但為何還有什么double spending呢?我們舉例說(shuō)明之。

比如我只有5個(gè)比特幣,我先向老張轉(zhuǎn)賬5btc,同時(shí)再向老趙轉(zhuǎn)賬5btc。這就是雙花,我把5個(gè)比特幣化了兩次。這就是所謂的雙花問(wèn)題,這是一種詐騙行為,如何預(yù)防?

正常情況下,一定是先有一條信息被大家打包,然后第二條信息由于與第一條信息沖突而無(wú)效。但是,我如果是同時(shí)雙花的,也就是一邊廣播:我向老張轉(zhuǎn)賬5btc,與此同時(shí)又廣播:我向老趙轉(zhuǎn)賬5btc。這樣,就會(huì)有兩個(gè)礦工分別打包了這兩筆記錄,這就叫做分叉,即同時(shí)有兩個(gè)區(qū)塊生成了。如果要真是如此,大家都去雙花了,5個(gè)比特幣能化兩次5個(gè)比特幣,豈不就亂套了,比特幣系統(tǒng)成了騙子橫行的世界了。

比特幣的規(guī)則是只有最長(zhǎng)的區(qū)塊鏈得到確認(rèn),最長(zhǎng)的區(qū)塊鏈才會(huì)有挖礦獎(jiǎng)勵(lì)。所以正常大家都會(huì)切換到長(zhǎng)鏈上挖礦而將短鏈廢棄掉,這樣就會(huì)有一筆交易作廢了。所以一般轉(zhuǎn)賬之后比特幣網(wǎng)絡(luò)建議大家等到一個(gè)區(qū)塊確認(rèn)了,此時(shí)再發(fā)貨就比較安全。

我們?cè)僖訟lice給Bob轉(zhuǎn)賬來(lái)說(shuō)明。假設(shè)Alice只有5個(gè)比特幣,但她有兩個(gè)地址,地址1和地址2,她先用地址1向Bob支付5個(gè)比特幣去購(gòu)買一杯咖啡,與此同時(shí),Alice又用地址1給自己的地址2轉(zhuǎn)賬了這五個(gè)比特幣,必須注意,一定是同時(shí)、非常的同時(shí)。如果Alice得逞了,她就等于白喝了一杯咖啡。她可以得逞嗎?假設(shè)Alice是很強(qiáng),她能讓這兩筆交易同時(shí)打包在兩個(gè)區(qū)塊,Bob看到一個(gè)區(qū)塊確認(rèn)了,就給發(fā)送咖啡了。這時(shí)候,Alice為了讓Bob這筆轉(zhuǎn)賬失效,就必須讓包含轉(zhuǎn)賬給自己地址那條交易記錄的區(qū)塊成為主鏈,那么她就要在那個(gè)區(qū)塊后面不斷的生成區(qū)塊使這條鏈越來(lái)越長(zhǎng)。Alice要實(shí)現(xiàn)雙花,其實(shí)很不容易,她必須要實(shí)現(xiàn)雙花所形成的兩個(gè)鏈條都不廢掉,一直要堅(jiān)持到拿到Bob的咖啡為止。因?yàn)槿魏斡幸粭l區(qū)塊鏈廢了、就意味著雙花也就不存在了。比如給自己轉(zhuǎn)賬的那條鏈?zhǔn)Я?,那就意味這Alice真就正轉(zhuǎn)賬給Bob了。如果給Bob轉(zhuǎn)賬的那條鏈接廢了,Bob沒收到btc也就不會(huì)提供服務(wù)、不會(huì)給Alice發(fā)送咖啡。所以Alice策略應(yīng)該是先讓Bob那條鏈成為主鏈,這樣Bob就發(fā)貨了;Alice一看Bob發(fā)貨,于是開始努力加長(zhǎng)給自己轉(zhuǎn)賬的那條鏈,一旦鏈條長(zhǎng)度超過(guò)了Bob那條鏈,給自己轉(zhuǎn)賬的就成了主鏈,從而廢掉了Bob那條鏈,這意味著Bob的交易記錄作廢,也就是Bob最終沒有拿到比特幣。

Bob若想萬(wàn)無(wú)一失,就不能急著發(fā)貨,要等到自己的鏈條足夠長(zhǎng)的時(shí)候才發(fā)貨。一般來(lái)說(shuō)再等上六個(gè)區(qū)塊的形成,就已經(jīng)很保險(xiǎn)了。Alice想廢掉已經(jīng)又加長(zhǎng)了六個(gè)區(qū)塊的長(zhǎng)鏈,就必須自己加長(zhǎng)自己的短鏈,來(lái)超越那個(gè)長(zhǎng)鏈。為什么非要自己加上呢?因?yàn)榈V工都會(huì)在長(zhǎng)鏈上挖礦,只有最長(zhǎng)的區(qū)塊鏈才能得到確認(rèn),才會(huì)有挖礦獎(jiǎng)勵(lì)。Alice要憑一己之力,讓自己的短鏈超過(guò)長(zhǎng)鏈,有肯能嗎?nothing is impossible。雙花is possible,但前提是Alice的計(jì)算能力強(qiáng)大無(wú)比,因?yàn)閰^(qū)塊由誰(shuí)所生成,決定于誰(shuí)最先算出Hash值,也就是要決定于算力——計(jì)算的能力。

如果Alice掌握了全網(wǎng)51%的算力,那么她有51%的概率搶奪到下一個(gè)區(qū)塊的記賬權(quán),當(dāng)她在對(duì)自己有利的那個(gè)區(qū)塊后繼續(xù)生成區(qū)塊的時(shí)候,她就會(huì)讓Bob收不到那5個(gè)btc,這就是所謂的“51%攻擊”。這似乎是可行的?但是,Bob聽了我們的節(jié)目,他變聰明了,他不是等一個(gè)區(qū)塊就發(fā)貨,而是等了六個(gè)區(qū)塊的確認(rèn)才發(fā)貨,因?yàn)橐呀?jīng)生成了六個(gè)區(qū)塊,那這一定是主鏈,關(guān)鍵是礦工也都相信這是主鏈,所以都會(huì)在這個(gè)鏈上繼續(xù)挖礦來(lái)獲得獎(jiǎng)勵(lì)。

Alice為了使Bob的這筆轉(zhuǎn)賬失效,她必須在對(duì)自己有利的那個(gè)鏈上連續(xù)生成區(qū)塊而且趕上主鏈。與全網(wǎng)斗爭(zhēng)搶奪記賬權(quán)連續(xù)六次,如果算力一般這幾乎不可能,如果算力超強(qiáng)倒是有可能實(shí)現(xiàn)。不過(guò)如果Alice只為了喝一杯咖啡就如此消耗巨額算力成本似乎不值得??赡馨l(fā)動(dòng)雙花攻擊的原因是大額轉(zhuǎn)賬,但是我們可以發(fā)現(xiàn),只要區(qū)塊鏈越靠后,安全性越高,比如我等這個(gè)區(qū)塊鏈確認(rèn)了10次,那么想要追上主鏈就必須連續(xù)搶奪十次記賬權(quán),這個(gè)難度是幾何級(jí)數(shù)上升的。一般而言六次就已經(jīng)很安全了,所以比特幣系統(tǒng)也認(rèn)為一筆交易如果確認(rèn)了六次就算有效了。由于每一個(gè)區(qū)塊是十分鐘生成,確認(rèn)六個(gè)區(qū)塊也就是一個(gè)小時(shí),相比于普通幾秒到賬的銀行轉(zhuǎn)賬,這個(gè)確實(shí)慢了好多。

我們對(duì)雙花問(wèn)題再說(shuō)一遍。Alice先有目的的向網(wǎng)絡(luò)兩邊散布兩條交易記錄(當(dāng)然是網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的兩邊而不是地理結(jié)構(gòu)的兩邊),當(dāng)兩個(gè)區(qū)塊2與2a都形成了以后,Bob覺得交易記錄被確認(rèn),開始發(fā)貨,此時(shí)Alice為了讓這條信息失效,必須在對(duì)自己轉(zhuǎn)賬的那個(gè)鏈上開始搶奪記賬權(quán)力,每一個(gè)區(qū)塊的生成必須基于上一個(gè)區(qū)塊的hash值(回顧一下?lián)寠Z記賬權(quán)力就是暴力嘗試隨機(jī)數(shù)算出復(fù)合規(guī)律的hash值),所以Alice就要連續(xù)搶奪若干次直到對(duì)她有利的這條鏈成為主鏈,使得向Bob轉(zhuǎn)賬的鏈條成為短鏈,所有短鏈上的交易信息返回待打包的池子,挖礦挖出的比特幣也會(huì)返回,也就是吃進(jìn)去的比特幣再要吐出來(lái)。也就是說(shuō),一旦對(duì)Alice獲得了coffee,然后又將對(duì)自己有利的鏈條長(zhǎng)度、超過(guò)向Bob轉(zhuǎn)賬的鏈條,那么Bob所獲得的5btc就會(huì)被收回,也即是這個(gè)交易記錄作廢了因?yàn)楸忍貛乓?guī)則只對(duì)最長(zhǎng)鏈挖礦有獎(jiǎng)勵(lì)。

但是如果Bob等了六個(gè)區(qū)塊后、依然處于長(zhǎng)鏈狀態(tài),然后再發(fā)貨就沒有問(wèn)題了,因?yàn)槿W(wǎng)算力都會(huì)集中在長(zhǎng)鏈,一旦長(zhǎng)鏈至少有6個(gè)區(qū)塊的領(lǐng)先,Alice再想要追趕這個(gè)長(zhǎng)鏈、以便讓這些交易記錄作廢就會(huì)非常非常難。即便Alice神通廣大到掌握了全網(wǎng)51%的算力,搶奪記賬權(quán)的幾率就是51%,連續(xù)六次都成功的概率就是0.51^6=1.7%,這就是所謂51%攻擊,如果僅僅掌握三成算力,那么這個(gè)概率就是0.07%了。

FIG3

十一、2140年后,記賬沒有獎(jiǎng)勵(lì)了,系統(tǒng)如何進(jìn)行

反正是,雙花這個(gè)漏洞可以通過(guò)交易的等待來(lái)阻止。但比特幣系統(tǒng)似乎還有一個(gè)漏洞,就是到了2140年,比特幣的總量已經(jīng)到達(dá)了事先規(guī)定的上線——2100萬(wàn)枚,那么搶奪到記賬權(quán)也沒有比特幣可以獎(jiǎng)勵(lì)了,那誰(shuí)還會(huì)去記賬呢?這個(gè)本聰早就想到了。到那時(shí),比特幣世界的每一筆交易就需要交一定的手續(xù)費(fèi),交給誰(shuí)呢?交給了搶奪區(qū)塊記賬權(quán)的人。也就是說(shuō),挖礦從過(guò)去的獲得比特幣的獎(jiǎng)勵(lì),變成了獲取交易的手續(xù)費(fèi),所以照樣有礦工去挖礦。

現(xiàn)在大家都清楚了,所謂比特幣挖礦,實(shí)質(zhì)就是中本聰巧妙地設(shè)計(jì)了一個(gè)激勵(lì)機(jī)制,給維護(hù)這個(gè)去中心網(wǎng)絡(luò)的人的獎(jiǎng)勵(lì),同時(shí)也解決了貨幣如何分配的問(wèn)題,因?yàn)槊總€(gè)人都有挖礦的權(quán)力,至少?gòu)睦碚撋线@是相對(duì)平等的說(shuō)法,人人都有機(jī)會(huì)去挖礦,去獲得比特幣。

十二、區(qū)塊鏈技術(shù)引領(lǐng)未來(lái)

到現(xiàn)在為之我們基本講述完了比特幣的前世今生。不得不承認(rèn),比特幣的技術(shù)構(gòu)想很美,像一個(gè)沒有強(qiáng)權(quán),沒有管制完全自由的新世界。尤其是去中心化的賬本,資產(chǎn)公開透明可查的性質(zhì),吸引了大批人開始關(guān)注比特幣的底層技術(shù)——區(qū)塊鏈技術(shù)。在一個(gè)去中心化網(wǎng)絡(luò)里,相互不信任的節(jié)點(diǎn)之間,誰(shuí)能解決信任問(wèn)題呢?區(qū)塊鏈技術(shù)可以解決。

區(qū)塊鏈技術(shù)就是我們運(yùn)行比特幣的這套系統(tǒng),大家明白這種氣質(zhì)就好,就是一個(gè)資產(chǎn)公開透明可查的、匿名的、去中心化的記錄,是一個(gè)無(wú)法作弊的網(wǎng)絡(luò)運(yùn)行協(xié)議。光聽字面意思大家有點(diǎn)迷惑?又公開透明又匿名,這好矛盾??!這里非常不矛盾,在區(qū)塊鏈或比特幣世界的玩家,每個(gè)人的身份是匿名的,你可以有多重身份、也就是有多個(gè)公鑰、也就是有多個(gè)地址,這就很好地保障了你的匿名性,人家只知道你的地址,但根本不知道你是誰(shuí),你只有一個(gè),但一個(gè)你可以有很多地址。你的匿名性雖然很好,但區(qū)塊鏈的游戲規(guī)則卻讓你無(wú)法作假,你在其上的每筆交易都是公開透明的、無(wú)法作弊的。此所謂又匿名、有公開透明。這個(gè)公開透明和匿名共同保障了去中心化的信仰——freedom自由!一個(gè)完全沒有壓力、又公平的自由世界。

正因?yàn)槿绱耍m然很多業(yè)界人士不看好比特幣、但非??春脜^(qū)塊鏈技術(shù),各個(gè)國(guó)家央行紛紛成立區(qū)塊鏈技術(shù)的研究所,華爾街的大銀行也都開始涉足區(qū)塊鏈技術(shù)的創(chuàng)業(yè)與投資項(xiàng)目,可以說(shuō)是風(fēng)頭最盛的金融科技項(xiàng)目了。

中本聰發(fā)明的比特幣系統(tǒng)其實(shí)就是發(fā)明了區(qū)塊鏈技術(shù),可以認(rèn)為比特幣是區(qū)塊鏈技術(shù)的1.0版本,或者說(shuō)支付系統(tǒng)非常適合區(qū)塊鏈技術(shù)的應(yīng)用。區(qū)塊鏈的2.0版本是智能合約,電腦里的合約使用程序編寫的,這種合約不能作假,執(zhí)行明確。而傳統(tǒng)合約一般需要第三方公正,而且自然語(yǔ)言存在模糊性,才有各種機(jī)構(gòu)的司法解釋和律師的必要,同時(shí)很難保證執(zhí)行力度,很多官司贏了的人也很難得到履約。智能合約就很大程度解決了這個(gè)問(wèn)題,規(guī)則清晰,強(qiáng)制執(zhí)行,智能合約是一種圖靈完備語(yǔ)言,它可以構(gòu)建任何一套符號(hào)系統(tǒng)來(lái)規(guī)定任何一項(xiàng)合約,而且這項(xiàng)合約同比特幣一樣是存在于整個(gè)peer-to-peer網(wǎng)絡(luò)里的,我們不需要誰(shuí)來(lái)保證這個(gè)合約是否履約,也不用擔(dān)心第三方機(jī)構(gòu)出現(xiàn)問(wèn)題。合約一旦簽訂就會(huì)像比特幣一樣全網(wǎng)公正,而且合約規(guī)定的資產(chǎn)都像比特幣一樣是可以追索來(lái)源與去向的,執(zhí)行的機(jī)構(gòu)則是冷冰冰的機(jī)器與電腦,規(guī)則明確。

比如你準(zhǔn)備和隔壁老王賭球,老王發(fā)誓中國(guó)隊(duì)進(jìn)不了世界杯,如果進(jìn)世界杯老王給你100萬(wàn),沒進(jìn)世界杯你給老王一萬(wàn)。但是你害怕老王耍賴,為了進(jìn)行賭局,很可能需要找一個(gè)第三方機(jī)構(gòu),兩邊都把錢打進(jìn)第三方,由第三方托管,金融行業(yè)很多時(shí)候就是干這個(gè)中間人行業(yè)的。問(wèn)題是中間人不是沒有代價(jià)的,一方面,比如一百萬(wàn)的賭局,中間人抽1%就是一萬(wàn)塊錢啊!或者中間人直接來(lái)個(gè)卷包會(huì),帶著賭資跑了。如果有智能合約,兩邊都將錢打入指定賬戶,然后電腦根據(jù)人民日?qǐng)?bào)的信息來(lái)自動(dòng)執(zhí)行,兩邊都沒有賴賬的可能。同時(shí)這個(gè)合約就像比特幣的交易信息一樣,無(wú)法篡改,全網(wǎng)備份,無(wú)法銷毀。

簽訂合約這件事有多重要呢?這太重要了,看看整個(gè)世界最掙錢的幾個(gè)行業(yè),律師,保險(xiǎn),銀行等等,這些行業(yè)公司的大樓一般也都占據(jù)了最豪華的商業(yè)CBD,是什么讓他們這么賺錢呢?信用!包括金融行業(yè)里的子行業(yè)——信托,其英文就是trust,很多時(shí)候都在干我們上述中間人的職能,人們把錢給保險(xiǎn)公司本質(zhì)上就是對(duì)這個(gè)保險(xiǎn)公司的trust,這就是你對(duì)大機(jī)構(gòu)信任所付出的溢價(jià)。如果智能合約普及開來(lái),我們就無(wú)需為這種信任付費(fèi),我們買賣股票,存貸款,一紙合約不需要第三方發(fā)起,不需要監(jiān)管機(jī)構(gòu)解釋、背書等等增信工作。我們只需要在peer-to-peer的網(wǎng)絡(luò)里發(fā)起,只要有人愿意與你簽訂,那么這個(gè)合約就是有效的并且是清晰且可以被執(zhí)行的。

大家想象,光在金融領(lǐng)域的信任就催生了這么富有的產(chǎn)業(yè),那整個(gè)人類社會(huì)的信任問(wèn)題擁有多大的市場(chǎng)?如果區(qū)塊鏈技術(shù)能夠解決這些信任問(wèn)題,那人類社會(huì)將會(huì)發(fā)生多么巨大的改變,真是不敢想。

所以區(qū)塊鏈技術(shù)最開始解決的是支付問(wèn)題,隨后的智能合約也即是2.0版本大家都能想到的就是未來(lái)應(yīng)用在金融行業(yè)各個(gè)領(lǐng)域上,而且這個(gè)可以說(shuō)是最接近落地的項(xiàng)目了。幾乎金融行業(yè)所有需要中間人的信任問(wèn)題,比如交易所,比如傳統(tǒng)機(jī)構(gòu)扮演的中間信用增級(jí)服務(wù),都是可以被區(qū)塊鏈技術(shù)取代的。比如我們熟悉的支付寶解決淘寶買賣服務(wù),就是買家與賣家的互不信任轉(zhuǎn)化為大家對(duì)支付寶這個(gè)中心機(jī)構(gòu)的信任,商業(yè)銀行很多中間業(yè)務(wù)比如信用證,都是在解決類似的問(wèn)題,這些都幾乎肯定會(huì)被區(qū)塊鏈技術(shù)革命。

到了區(qū)塊鏈技術(shù)的3.0版本,我們可以暢想一下所有需要解決彼此陌生互不信任的個(gè)體之間的信任問(wèn)題的地方都可以使用區(qū)塊鏈技術(shù)。

首先區(qū)塊鏈技術(shù)的不可篡改,可以追查的特性,非常適合存在性證明。現(xiàn)實(shí)生活中我們經(jīng)常會(huì)遇到房產(chǎn)證明,個(gè)人學(xué)歷證明等等信息證明問(wèn)題,區(qū)塊鏈的不可篡改特性完美解決這個(gè)問(wèn)題。每個(gè)人的身份標(biāo)識(shí)一旦被全網(wǎng)公證,那么這個(gè)信息就是可以追查,可以證明的,目前這方面應(yīng)用已經(jīng)有不少創(chuàng)業(yè)項(xiàng)目了。

其次,政府可以用于投票,同樣利用了匿名,不可篡改,全網(wǎng)公證的特點(diǎn)。澳大利亞政府正在落地這個(gè)項(xiàng)目。

最后,所有的去中心化系統(tǒng),比如共享經(jīng)濟(jì),如共享單車,共享租車,共享公寓等等,都是非常適合結(jié)合區(qū)塊鏈技術(shù)的,對(duì)于每一樣共享產(chǎn)品的歷史信息都可查,很契合解決陌生人之間共享的信任問(wèn)題。

其實(shí),區(qū)塊鏈這個(gè)底層技術(shù)未來(lái)到底能解決多少問(wèn)題,是一個(gè)人類想象力的問(wèn)題,我堅(jiān)信,還是那句話,但凡涉及到解決彼此陌生互不信任的個(gè)體之間的信任問(wèn)題的地方都可以使用區(qū)塊鏈技術(shù)。


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }