區塊鏈初學者指南

程式設計師的那些事_發表於2018-02-11

區塊鏈初學者指南

我並不明白為什麼人們會覺得要理解區塊鏈會有點難,而我也想知道為什麼自己並沒有。那是在 2013 年,我第一次聽說有比特幣這個東西(是的,知道的太晚啦)。我窮得連一個都買不起,看到這兒你也許已經對此文無愛了。後來,我想要去了解一下它所依賴的底層技術,也就區塊鏈。 不過因為太忙了,所以遲遲沒有開始(那就並不存在什麼 開始不開始了)。

區塊鏈初學者指南

那麼這個 “區塊鏈”到底是什麼呢?

其實是兩個東西:一個是區塊一個是鏈。說玄虛一點,就是一鏈子的區塊。因為它是存在於計算機中的東西,所以我們可以釐定它的一個物理形態是啥樣子的,就是數字資訊被分成一個一個區塊然後把這些區塊連結起來。舉個例子,下圖中的方塊,每一個都表示一個國家,而且每一個都包含了對應國家的城市名稱。

區塊鏈初學者指南

等等,其實還有更多東西來著。這裡的每一個方塊都一個叫做雜湊的東西。一個雜湊就是一串字元 (比如 “1hi515AHA5H” )。雜湊是根據方塊裡面所包含的資訊來得到的。 U.S.A 的方塊擁有 New York, Los Angeles, 還有 Chicago 這幾個城市,所以它的雜湊就是像 “NYLAC” 的東西了 (技術上其實遠非如此,但你理會精要就行了)。

區塊鏈初學者指南

每一個接續的方塊都會包含前一個方塊的雜湊,所以這個就是(強制性的)將它們綁到一起的紐帶。如果有人擅自篡改了第一個方塊,加入了城市 Boston,那麼新的雜湊就會是 “NYLACB”,然而後面接續的 India 這個方塊已經存著的雜湊還是 “NYLAC”,這種不匹配就會把鏈條打斷。所以雜湊的目的就是確保沒有人可以篡改區塊。

那如果有人修改了一個方塊的內容,然後把後面的接續方塊的雜湊也一併更新會如何呢? 這也是有可能的,不過有一件事情我還沒有告訴你。區塊鏈的資料並不只是存在於僅僅一臺計算機裡面。一臺計算機裡面的區塊鏈資料並不能騙到人,因為它會被複制到網路中每一個使用者的計算機裡面去。如果你加入了一個區塊鏈網路,那麼你的計算機就會去下載這些區塊資料,如果有人篡改了他擁有的版本,整個網路也會考慮佔多數的人的計算機上所擁有的版本才是正確的。

還有一件事,在一個區塊鏈網路中,不僅是資料,就連整個系統的程式都被複制到了所有的電腦中。大多數網際網路應用都是集中話的,比如 Facebook,她的資料和程式都被放在了她的伺服器上,你的計算機會從 Facebook 的伺服器上獲取到你一個人需要知道的資訊。但在區塊鏈的世界理,就沒有存在於中心的東西,它依賴的是使用者的計算機來容納自己的程式。是的,這就意味著,如果整個區塊鏈網路中的每一臺電腦都關機了,那麼這個區塊鏈系統就死翹翹了。

公共區塊鏈

區塊鏈初學者指南

這是不是就意味著區塊鏈系統其實就是由一群心懷善意自願讓他們的計算機保持執行的人來組成的呢? 還有這些防篡改的區塊是用來幹嘛的呢?

區塊鏈網路的功效不勝列舉。比特幣是一種資料貨幣和一個支付系統。它所有的防篡改區塊中所儲存的就是全部交易的分類賬。那些貢獻了他們自己的計算機的人被稱為礦工。系統會給他們提供比特幣作為獎勵。

Ethereum 有意向附加功能。它可以承載你的程式碼,從頭開始發展出一個區塊鏈系統,而要構建一個屬於你自己的系統也許會非常地困難(記住這得看有人為你犧牲他們的計算機執行能力才行哦)。Ethereum 就維護著這些耗損巨大的運算能力,而你則需要為這些計算消耗買單。

區塊鏈應用並不非得是支付系統或者加密貨幣。它可以任何東西,像是一個社交網路,一個像 LiveEdu 這樣的學習平臺,等等。

私有區塊鏈

區塊鏈初學者指南

Bitcoin, Ethereum 等等這些都是公共區塊鏈的例子,任何人都可以成為其中的一分子。那如果我們想要有一個私有的區塊鏈網路該如何呢?有些人想要一個私有的區塊鏈是想幹嘛呢?那就來瞧瞧下面的故事吧。

Mark 和 Sara

Mark 已經五個月沒交房租了,當 Sara 找他要的時候,他就說晚點會給她。她付不起律師費,而法院強制執行訴訟就需要8個月甚至一年,所以唯一的選擇就是去說服 Mark。

Joe 的生意

Joe 是一個商人,他經常要跟不同的公司做生意。幾個月之前他和一家零售商簽了一份合同,儘管合同條款都已經履約了,可零售商確拒絕付款。這幫人利用法律制度中的漏洞來遊說 Joe,想以此達到少付錢的目的。Joe 在這以前就是有這方面經驗的,在某些情況下,他會找法院求助,但這樣做所耗費的時間和金錢卻要損失他自己的利潤。

我們該如何幫助 Sara 和 Joe 呢?

我們是不是能在其它地方解決這個問題呢? 在 Sara 遇到的這種情況中,我們需要讓 Mark  按月支付房租,這其實就是一個基於時間的觸發機制。你的日曆程式使用這樣的觸發器來給你提供預設事件的通知。

在 Joe 遇到的場景中,一旦合約中的條款都滿足了,當事人就得付款,這其實就是一個基於條件的觸發機制。你想想上次從 Amazon 買電子書的時候,是不是得先確認付款了,Amazon 才會把電子書發給你?

重點是,計算機程式會始終如一的執行諸如此類的指令。當你點選著這篇文章,向下滾動,諸如這類的操作,它也會照著執行不誤。為了能幫助到 Sara ,我們需要將合同的條款轉變成程式碼。

Sara 和 Mark 之間所訂立的智慧合同的虛擬碼

可是我們在哪兒部署這些程式碼呢? 它就應該被部署到所有參與者的計算機上。Sara 的還有 Mark 的銀行都會是這一個私有區塊鏈網路的一部分。Joe 和 Sara 會簽署一份編碼的協議(也就是智慧合同),然後這份協議會被分發到網路中去,Mark 的和 Sara 的銀行都會有一份拷貝。在每個月的 30 號,當時鍾跳動到 12 點整,協議好的金額就會從 Mark 的賬戶轉移到 Sara 的賬戶上去。Joe 也開始使用智慧合同來強制讓他的客戶支付協議好的貨款。

Sara 高興了,因為她再也不用去煩心 Mark 會不會如約付房租了。Joe 也高興,因為他也不用找法院要說法了,省下這些精力,他可以繼續發展自己的生意了。

私有區塊鏈只限於業務中涉及到的相關各方,因此 Joe 不會是 Sara 和 Mark 所屬區塊鏈網路的一部分。

前行之路

區塊鏈初學者指南

現在你對此已經有點概念了,也許應該嘗試一下 edX 上的課程(免費的哦),它會教你怎麼在區塊鏈上構建應用。

相關文章