區(qū)塊鏈這么火熱,快來看看這篇區(qū)塊鏈初學(xué)者指南
我并不明白為什么人們會覺得要理解區(qū)塊鏈會有點難,而我也想知道為什么自己并沒有。那是在 2013 年,我***次聽說有比特幣這個東西(是的,知道的太晚啦)。我窮得連一個都買不起,看到這兒你也許已經(jīng)對此文無愛了。后來,我想要去了解一下它所依賴的底層技術(shù),也就區(qū)塊鏈。 不過因為太忙了,所以遲遲沒有開始(那就并不存在什么 開始不開始了)。
那么這個 “區(qū)塊鏈”到底是什么呢?
其實是兩個東西:一個是區(qū)塊一個是鏈。說玄虛一點,就是一鏈子的區(qū)塊。因為它是存在于計算機(jī)中的東西,所以我們可以厘定它的一個物理形態(tài)是啥樣子的,就是數(shù)字信息被分成一個一個區(qū)塊然后把這些區(qū)塊鏈接起來。舉個例子,下圖中的方塊,每一個都表示一個國家,而且每一個都包含了對應(yīng)國家的城市名稱。
等等,其實還有更多東西來著。這里的每一個方塊都一個叫做哈希的東西。一個哈希就是一串字符 (比如 “1hi51***HA5H” )。哈希是根據(jù)方塊里面所包含的信息來得到的。 U.S.A 的方塊擁有 New York, Los Angeles, 還有 Chicago 這幾個城市,所以它的哈希就是像 “NYLAC” 的東西了 (技術(shù)上其實遠(yuǎn)非如此,但你理會精要就行了)。
每一個接續(xù)的方塊都會包含前一個方塊的哈希,所以這個就是(強(qiáng)制性的)將它們綁到一起的紐帶。如果有人擅自篡改了***個方塊,加入了城市 Boston,那么新的哈希就會是 “NYLACB”,然而后面接續(xù)的 India 這個方塊已經(jīng)存著的哈希還是 “NYLAC”,這種不匹配就會把鏈條打斷。所以哈希的目的就是確保沒有人可以篡改區(qū)塊。
那如果有人修改了一個方塊的內(nèi)容,然后把后面的接續(xù)方塊的哈希也一并更新會如何呢? 這也是有可能的,不過有一件事情我還沒有告訴你。區(qū)塊鏈的數(shù)據(jù)并不只是存在于僅僅一臺計算機(jī)里面。一臺計算機(jī)里面的區(qū)塊鏈數(shù)據(jù)并不能騙到人,因為它會被復(fù)制到網(wǎng)絡(luò)中每一個用戶的計算機(jī)里面去。
如果你加入了一個區(qū)塊鏈網(wǎng)絡(luò),那么你的計算機(jī)就會去下載這些區(qū)塊數(shù)據(jù),如果有人篡改了他擁有的版本,整個網(wǎng)絡(luò)也會考慮占多數(shù)的人的計算機(jī)上所擁有的版本才是正確的。
還有一件事,在一個區(qū)塊鏈網(wǎng)絡(luò)中,不僅是數(shù)據(jù),就連整個系統(tǒng)的程序都被復(fù)制到了所有的電腦中。大多數(shù)互聯(lián)網(wǎng)應(yīng)用都是集中化的,比如 Facebook,它的數(shù)據(jù)和程序都被放在了它的服務(wù)器上,你的計算機(jī)會從 Facebook 的服務(wù)器上獲取到你一個人需要知道的信息。但在區(qū)塊鏈的世界理,就沒有存在于中心的東西,它依賴的是用戶的計算機(jī)來容納自己的程序。是的,這就意味著,如果整個區(qū)塊鏈網(wǎng)絡(luò)中的每一臺電腦都關(guān)機(jī)了,那么這個區(qū)塊鏈系統(tǒng)就死翹翹了。
公共區(qū)塊鏈
這是不是就意味著區(qū)塊鏈系統(tǒng)其實就是由一群心懷善意自愿讓他們的計算機(jī)保持運行的人來組成的呢? 還有這些防篡改的區(qū)塊是用來干嘛的呢?
區(qū)塊鏈網(wǎng)絡(luò)的功效不勝枚舉。比特幣是一種數(shù)據(jù)貨幣和一個支付系統(tǒng)。它所有的防篡改區(qū)塊中所保存的就是全部交易的分類賬。那些貢獻(xiàn)了他們自己的計算機(jī)的人被稱為礦工。系統(tǒng)會給他們提供比特幣作為獎勵。
Ethereum 有意向附加功能。它可以承載你的代碼,從頭開始發(fā)展出一個區(qū)塊鏈系統(tǒng),而要構(gòu)建一個屬于你自己的系統(tǒng)也許會非常地困難(記住這得看有人為你犧牲他們的計算機(jī)運行能力才行哦)。Ethereum 就維護(hù)著這些耗損巨大的運算能力,而你則需要為這些計算消耗買單。
區(qū)塊鏈應(yīng)用并不非得是支付系統(tǒng)或者加密貨幣。它可以任何東西,像是一個社交網(wǎng)絡(luò),一個像 LiveEdu 這樣的學(xué)習(xí)平臺,等等。
私有區(qū)塊鏈
Bitcoin, Ethereum 等等這些都是公共區(qū)塊鏈的例子,任何人都可以成為其中的一分子。那如果我們想要有一個私有的區(qū)塊鏈網(wǎng)絡(luò)該如何呢?有些人想要一個私有的區(qū)塊鏈?zhǔn)窍敫陕锬??那就來瞧瞧下面的故事吧?/p>
Mark 和 Sara
Mark 已經(jīng)五個月沒交房租了,當(dāng) Sara 找他要的時候,他就說晚點會給她。她付不起律師費,而法院強(qiáng)制執(zhí)行訴訟就需要8個月甚至一年,所以***的選擇就是去說服 Mark。
Joe 的生意
Joe 是一個商人,他經(jīng)常要跟不同的公司做生意。幾個月之前他和一家零售商簽了一份合同,盡管合同條款都已經(jīng)履約了,可零售商確拒絕付款。這幫人利用法律制度中的漏洞來游說 Joe,想以此達(dá)到少付錢的目的。Joe 在這以前就是有這方面經(jīng)驗的,在某些情況下,他會找法院求助,但這樣做所耗費的時間和金錢卻要損失他自己的利潤。
我們該如何幫助 Sara 和 Joe 呢?
我們是不是能在其它地方解決這個問題呢? 在 Sara 遇到的這種情況中,我們需要讓 Mark 按月支付房租,這其實就是一個基于時間的觸發(fā)機(jī)制。你的日歷程序使用這樣的觸發(fā)器來給你提供預(yù)設(shè)事件的通知。
在 Joe 遇到的場景中,一旦合約中的條款都滿足了,當(dāng)事人就得付款,這其實就是一個基于條件的觸發(fā)機(jī)制。你想想上次從 Amazon 買電子書的時候,是不是得先確認(rèn)付款了,Amazon 才會把電子書發(fā)給你?
重點是,計算機(jī)程序會始終如一的執(zhí)行諸如此類的指令。當(dāng)你點擊著這篇文章,向下滾動,諸如這類的操作,它也會照著執(zhí)行不誤。為了能幫助到 Sara ,我們需要將合同的條款轉(zhuǎn)變成代碼。
Sara 和 Mark 之間所訂立的智能合同的偽代碼
可是我們在哪兒部署這些代碼呢? 它就應(yīng)該被部署到所有參與者的計算機(jī)上。Sara 的還有 Mark 的銀行都會是這一個私有區(qū)塊鏈網(wǎng)絡(luò)的一部分。Joe 和 Sara 會簽署一份編碼的協(xié)議(也就是智能合同),然后這份協(xié)議會被分發(fā)到網(wǎng)絡(luò)中去,Mark 的和 Sara 的銀行都會有一份拷貝。
在每個月的 30 號,當(dāng)時鐘跳動到 12 點整,協(xié)議好的金額就會從 Mark 的賬戶轉(zhuǎn)移到 Sara 的賬戶上去。Joe 也開始使用智能合同來強(qiáng)制讓他的客戶支付協(xié)議好的貨款。
Sara 高興了,因為她再也不用去煩心 Mark 會不會如約付房租了。Joe 也高興,因為他也不用找法院要說法了,省下這些精力,他可以繼續(xù)發(fā)展自己的生意了。
私有區(qū)塊鏈只限于業(yè)務(wù)中涉及到的相關(guān)各方,因此 Joe 不會是 Sara 和 Mark 所屬區(qū)塊鏈網(wǎng)絡(luò)的一部分。
前行之路
現(xiàn)在你對此已經(jīng)有點概念了,也許應(yīng)該嘗試一下 edX 上的課程(免費的哦):https://www.edx.org/course/blockchain-business-introduction-linuxfoundationx-lfs171x,它會教你怎么在區(qū)塊鏈上構(gòu)建應(yīng)用。
原文鏈接:https://hackernoon.com/a-beginners-guide-to-blockchain-d04266844e7