弄明白區塊鏈是什麼?能幹什麼?

引言

最初接觸區塊鏈相關時,看了很多文章,真的是雲裡霧裡,不知所云,區塊鏈到底是什麼?能幹什麼?看半天還是沒明白,相信很多人都有類似的感覺。

區塊鏈是什麼?

區塊+鏈

對數據結構有印象的同學,應該腦子裡會浮現出現鏈表,是的,它們倆很像。

弄明白區塊鏈是什麼?能幹什麼?

弄明白區塊鏈是什麼?能幹什麼?

所以從這個角度講,區塊鏈本身這個詞就描述了它的數據結構屬性,它是拿來存數據的。

具體來講,一個區塊,包含區塊頭和區塊體,區塊頭包含了時間戳和上一個區塊的哈希等信息,區塊體則是一個交易列表,整個區塊進行哈希計算後生成自己的哈希,後面的區塊按同樣的方式包含了上一個區塊的哈希,這樣就把所有區塊串起來變成一條鏈。

由於每個區塊都包含了前一個區塊的哈希,如果想要篡改第3個區塊,那麼第3個區塊後面的區塊也要全部重新計算哈希全部篡改過去,這樣的結構保證了區塊鏈數據很難被篡改。

賬本

那區塊鏈一般拿來存什麼的?最常見的應用就是賬本,我們可以很容易的把區塊鏈的結構和賬本類比對應起來,一個區塊相當於賬本里的一頁,一頁的賬目流水相當於區塊中的交易列表,我們按時間順序記賬,唯一區別是,區塊鏈可以無限增長,賬本是有限的,用完就得換一本。所以區塊鏈也常常被稱為超級賬本,有些開源項目的名稱就會含有ledger這個詞。

去中心化

如果區塊鏈只是一種數據結構,那麼它就不會被那麼多人追捧了。上面提到區塊鏈數據很難被篡改,那只是很難,如果區塊鏈數據是中心化存儲的,那隻要對這個中心化存儲有控制權的人完全可以任意修改,區塊鏈的創新之處在於,它有很多去中心化的節點,每個節點上都有一條自己的鏈,不同節點通過同步,保證和網絡上別的節點上的鏈處於一致狀態,那些鏈狀態不正確的節點會被其它節點剔出網絡,這樣某些惡意個人或組織,想篡改數據就得控制網絡上大量的節點,這是非常非常困難,幾乎不可能的。

共識

聰明的同學可能會問,這麼多節點,每個節點上都有鏈,那誰來記賬,也就是誰來生成新的區塊呢?以誰的為準呢?這就引出了共識機制,以比特幣為例,每個節點都可以參與記賬,但比特幣網絡使用了叫POW工作量證明的共識機制,通俗講就是出一道有難度的數學計算題,第一個計算出來的節點獲得記賬權,然後這個節點把內存裡的交易按時間排序打包到區塊追加到自己的鏈上,同時廣播出去,別的節點這時只需同步即可,這個過程,比特幣也叫做挖礦。

智能合約

除了最常見的記賬應用,如果要應用在別的領域,能實現嗎?要修改底層實現嗎?不需要,區塊鏈2.0引入了智能合約,智能合約就是拿來在區塊鏈上擴展實現各種不同的應用,可以把智能合約當作區塊鏈上的二次開發語言,它可以定義業務對象的屬性,狀態,以及不同個體或組織對業務對象可以做哪些操作(即區塊中的交易),通過智能合約把業務合約化,自動化。

RSA

聰明的同學又問了,這鏈上的資產類業務對象,任何人都可以操作嗎?歸屬於誰的?繼續以比特幣為例,張三擁有100個比特幣,這100個比特幣怎麼確認是張三的,怎麼保證只能由張三花掉?這裡用到了RSA的公鑰和私鑰,100個比特幣在數據層面是一個input,input裡包含了張三的公鑰信息,100的數量,還有用張三公鑰生成的一個鎖定腳本,這個鎖定腳本只能用張三的私鑰去解鎖,這樣就保證了資產的歸屬和使用權。

總結

總結一下,區塊鏈的主要特徵:

  1. 分佈式的時間序列數據存儲(輕對象)
  2. 不可篡改
  3. 去中心化
  4. 開放
  5. 安全
  6. 可擴展

因此區塊鏈也被稱為下一代互聯網:可信的價值互聯網。

區塊鏈能幹什麼?

我們想象一下,現實世界中的各種資產對象,放到鏈上存儲和跟蹤,然後不同的個人和組織可以方便的在一個公共的可信網絡和存儲裡按照共同認可的規則互相協作,不同的企業,機構,組織之間的壁壘被打破,業務運作流轉更自動化,更高效,更可信。再想想我們當前的狀態:這個企業自個兒弄個系統,另外一個機構又弄一個系統,各自有各自的數據,誰也不知道對方數據到底有沒有被改過,再來系統對接,聯調,甚至跨國機構、組織,想想就覺得費勁。

學習資料

書籍
  • 精通比特幣
  • 區塊鏈技術及應用
開源項目
  • bitcoinj
  • ethereum
  • hyper ledger fabirc


分享到:


相關文章: