區塊鏈是什麼

區塊鏈其實就是一種很類似 linked list 的資料結構。它跟 linked list 一樣是透過一個個的節點串起來的,只是它把節點叫做區塊(block),所以叫做區塊鏈。

區塊鏈跟 linked list 最大的不同是,它並不是透過單純的位址指標來指向下一個節點,而是透過雜湊指標來指向上一個區塊的雜湊值。也就是說,區塊鏈的每一個區塊都具有驗證上一個區塊的能力。只要某個區塊的內容改變,就算是一個字而已,它的雜湊值也會完全改變,導致原本的下一個區塊驗證失敗(雜湊值不一致)。可以說,它就是一個具有自我驗證機制的 linked list。

分布式資料庫

當 linked list 能自我驗證資料完整性、變身成區塊鏈之後,就算我們把不同區塊分給不同人保管,也不必害怕會有人偷改區塊內容而不被人發現了。但如果有人寧願冒著被發現的風險也要竄改內容怎麼辦?很簡單,每次產生新的區塊的時候,都把這個區塊複製後發給不只一個人,這樣的話就算某個區塊被篡改,也還是會有原本的區塊的備份在別人手上。

換句話說,區塊鏈實質上實現了分布式資料庫。以往的資料庫多是由單一的人——不管是法人還是自然人——來負責維護。而客戶要使用資料庫的話,基本上只能信任資料庫維護者,這使持有資料庫的單位也同時具備了強大的權力。當它奪取客戶對資料的存取權限的時候,客戶還可以找政府等其它更大的中心化機構來強制取回自己的資料,但如果它直接把你的資料刪掉呢?

以區塊鏈為基礎的分布式資料庫從根本上解決了這種問題,因為它是設計成由全部的參與者共同持有的東西。在區塊鏈當中,每個人都是資料庫的使用者與提供者,所以也不需要有個中間人去維護資料庫。

其它特性

不可刪改,只能新增

因為它會維持自我完整性,所以寫進區塊鏈的資料基本上就不能再更動或刪改了,只能一直新增下去。

資料新增速度慢

由於每個新的區塊都需要發給數個參與者來做驗證,在區塊鏈上新增資料會比中心化的資料庫更花時間。少的話十分鐘,多的話兩三天都有。

參與者不需下載完整資料庫

當區塊鏈網路中有夠多人的時候,每個參與者只需要持有一部分的資料庫就能拼湊出很多分完整的資料庫了。

越多人越有效

區塊鏈的驗證是透過其它參與者來做的,所以越多人做驗證就使區塊鏈越不容易被篡改。