本系列內容包含:基本概念及原理、密碼學、共識演算法、錢包及節點原理、挖礦原理及實現。
1. 概述
區塊鏈是一個資訊科技領域的術語。從本質上講,它是一個共享資料庫,或稱之為公共賬本,其每一個區塊記錄一段時間內產生的轉賬等一些其他資訊。
與傳統賬本的區別是,無論有沒有新的交易產生,有沒有新的帳目產生,區塊都會按照約定的時間去出塊,這就是區塊的產生。如果這段時間沒有新的交易產生,那產生的就是我們所謂的空塊。
同時,絕大多數區塊鏈專案都會對區塊加一個大小的限制,也就是說單個區塊可以記錄的最大資訊的容量。
舉個例子,比特幣的區塊大小是1M,所以BTC的每個區塊中最多能記錄大約3000筆的交易。如果礦工想打包更多的交易,那就不得不提高區塊的上限。
2. 基本特點
第一個特點,匿名性。所有的數字貨幣都沒有署名,大家可以看下下面這張圖。
這是一張比特幣的一個區塊的交易資訊,我們可以看左側的都是轉出的地址,以及對這個地址轉出的金額。右側是轉入地址,以及這個地址接收到的比特幣金額。
我們拿第1筆交易來看,這筆交易意思是:地址 bc1q…syad 轉出了0.05718823個BTC,這些BTC分別轉到了,右側的兩個地址,第一個地址 386U…8mg8 接收到了0.00005663個BTC;第二個地址 bc1q…mkuy 接收到了0.05706003個BTC。
大家可以看到,所有的記錄資訊中,只有地址和數量,不包含任何個人資訊。也就是說從這個地址中無法找到地址所有者的任何資訊,因此比特幣也一直深受黑市和駭客們的歡迎。
數字資產的所有權,也就是地址對應的私鑰,擁有了私鑰就擁有了這個地址上的數字資產。反之,如果丟失了這個私鑰,也就永遠的無法找回這部分數字資產。
第二個特點,不可篡改。簡單來說,就是說所有已經上鍊的交易不能被更改。
在生活中大家接觸最多的是資料庫,資料庫最基本的操作是增刪改查,其中刪除和修改就是對資料庫中已有記錄的資訊進行變更。為了避免資料損壞,防止資料庫被惡意修改,運維經常需要對資料庫進行一個備份。
而區塊鏈的特點是其上面的資料是不可篡改的,這個不可篡改主要有兩點來保證。
第一點,所有每個區塊都透過區塊頭中的雜湊,與前面的區塊緊緊的繫結在一起。
在這樣的設計下,單純修改一個區塊是沒有意義的,因為所有區塊都是連在一起的。假如第一個區塊被修改了,那這個區塊後面的所有區塊都無法找到它的潛入區塊。
因為把這個區塊的一個交易修改以後,整個區塊的雜湊就改變了,要想後面的區塊都連起來,就必須把後面所有的區塊都重新再產生一遍,這是幾乎不可能的。難度非常非常大,這個難度為什麼大我們後面會展開來說。
第二點,所有的節點都儲存了完整的區塊資料。
如果僅僅更改其中一個節點,或者其中一部分節點的資料,也不能改變全網的狀態。因為全網中還有其他更多的節點是不被控制的,任何人無法去修改這些節點的資料。
透過這兩點,保證了鏈上資料的不可更改。
第三個特點,去中心化。去中心化就是沒有中心,所有節點的功能都是一樣的,都是平等的,裡面的資料也是完全一樣的。
即每個節點都有一個完整的賬本,每個賬本中都記錄了從創始區塊(高度為0的區塊)到現在所有的資訊。
而我們一般接觸到的傳統金融系統,是分級保管的,每級僅保管了本級以下的資料。例如,省級的分行不會保管其他省分行的資料。
假設北京的分行需要訪問上海分行的資料,他必須向上級,例如總行,去申請資料訪問的授權。
第四點,可追溯。可追溯的意思是,任何人可以很容易的查詢每一筆交易的所有流向。因為每一個節點都有整個系統的全部資料,同時所有的交易和區塊都是嚴格繫結在一起的
3. 非絕對性
需要注意的是,這四個特點也不是完全絕對的。
首先說匿名性和可追溯性之間就有一定的矛盾性。因為現在數字貨幣的交易基本是透過中心化的交易所或者場外的一些OTC交易來完成的。而目前絕大多數的交易所都需要對使用者進行實名認證,這就導致了匿名性的失效。
比如著名的門頭溝事件,經過其中一些受損失的投資人的努力,他們丟失的BTC已經找回來了一部分。
雖然剛開始門頭溝丟失的BTC中間經過不斷的轉換地址,但最終彙總到了後面的幾個地址。受損人透過不斷查詢,最後透過這些地址成功找到了當時攻擊交易所的這個人,也追回了當時丟失的BTC,這也體現了區塊鏈的可追溯性。
第二,不可篡改的不絕對性。區塊鏈專案中講的最多的是共識,如果所有節點對某一件事都達成了共識,那麼這件事就可以實施,比如說修改已經確認的資料。
比較典型的一個例子是以太坊的The DAO事件,當年The DAO使用以太幣來眾籌,結果超過1200萬個以太幣被駭客盜取,以太坊創始人提出設想,透過硬分叉使得駭客利用漏洞轉出交易的區塊失效,以此找回丟失的以太幣。
當時有約450萬以太幣參與投票,超過90%的以太坊算力支援硬分叉,因此以太坊硬分叉成功。這樣分叉產生的新鏈是以太坊ETH,舊鏈是以太經典ETC。
最後再說一下去中心化。其實現在越來越多的區塊鏈專案開始推出超級節點,社羣參與治理的模式,而超級節點比普通節點具有更多的權利和功能。
比如EOS的超級節點,經過超級節點間的集體仲裁可以鎖定,某個使用者的賬戶。
其它鏈中的一些超級節點,一般會作為礦工的一部分,參與區塊鏈的共識。而普通節點僅僅只能作為賬本的保管者,保管和驗證區塊的有效性和完整性。
下期預告:區塊鏈進階原理