1. 程式人生 > >區塊鏈(一)--Bitcoin、Ethereum、Hyperledger

區塊鏈(一)--Bitcoin、Ethereum、Hyperledger

現在區塊鏈概念是炒的火熱,而這其中Bitcoin是功不可沒的。數字貨幣這個概念和前幾年大火的物聯網概念一樣都是上個世紀就已經被人提出了,到了現在才火了起來。

數字貨幣在計算機網路剛剛興起的時候就被人提出來了,也有人提出了很多實現的方案,但是都沒有被實現它們或多或少都存在一些問題,直到bitcoin的出現。可以說中本聰不是第一個提出數字貨幣概念的,但他是第一個讓數字貨幣從一個概念轉化為現實的,這一點功不可沒。

從事It行業的人對Bitcoin多少都會有一些瞭解,它自從2009年推出到現在已經經歷了8年的時間,經過驗證它是足夠好用的。Bitcoin最大的特點就是去中心化,同時區塊鏈做為其實現去中心化的關鍵性技術也被人們所熟知然後被爆炒.....

網上關於Bitcoin的介紹一抓一大把,我們這裡也給出一個比較正規的介紹網站,它裡面有現在各種火熱的區塊鏈專案的介紹點選開啟連結,建議大家繼續閱讀前可以簡單瞭解一下。好了前邊這些都是沒什麼營養的,我們來講一下乾貨,讓那些不瞭解區塊鏈的同志們對它有個直觀的認識。

-----------------------------------------------------------------------------------------------------------

作者預設你們已經對Bitcoin已經有所瞭解了

1.我們先以Bitcoin為契入點

挖礦:在Bitcoin架構中bit幣的來源有兩種,一種是通過交易進行獲得,還有一種就是通過挖礦獲得bit幣。所謂的挖礦是指礦工對一定數量的交易(大概在1500-2000之間它們被儲存在一個默克爾樹中)通過挖礦演算法(通過窮舉找到一個隨機數,該隨機數與區塊資料合併在一起可以計算出符合要求的hash值,比如說開頭10個0,現在使用的是hash演算法是sha-3),具體的流程要見上面的連結)最後的過程形成一個區塊的過程,其中挖礦的難度是可以動態調節的,保證在全網中每十分鐘挖出一塊。

每生成一個區塊(不僅僅是算出來了,還被新增到總鏈而且生效,Bitcoin中一個塊的生效過程是很漫長的,要在塊後面繼續新增六個塊後才算是生效)會獲得一定量的獎勵,而這個獎勵數根據Bitcoin的設計是會越來越少的,最後挖礦可能就沒有獎勵了,這種機制被稱為激勵機制。

我想第一次瞭解挖礦這個概念的同志們都會感覺很有意思,算算題就能掙錢(反正是計算機算),然而挖礦僅僅是為了獲得bit幣嗎?可能在投資者看來是這樣的,但挖礦的作用不只是這些,或者說這只是次要的作用。

挖礦的主要作用:Bitcoin通過挖礦保證了區塊鏈的關鍵性特性--不可篡改

這裡引出了一個很重要的概念:共識機制,因為是分散式的機制而且是去中心化的方式,所以不同的節點之間資料同步就很重要,而且要求要在存在惡意的攻擊情況下仍然能夠正常的執行。為了實現以上兩點,Bitcoin就採用了工作量證明機制(POW

我們接下來從一個攻擊者的角度說一下挖礦的重大作用:

<1>篡改交易

在Bitcoin中貨幣是承載在交易上的,每一個使用者有多少個bit幣是根據你交易記錄推測出來的。每一筆交易都有上一個擁有者的簽名,和上一筆交易的hash值,也就是說每一筆交易都是可追溯的。你要是想偽造一筆交易就要把前面的每一筆交易都篡改了,而交易都是記錄在塊上的,也就是說你要把包含這筆交易的塊和交易來源的塊全都改了。

<2>偽造交易

前面我們說了,每一筆交易都是有擁有者簽名的,每一個節點驗證交易的時候是進行簽名校驗,你如果盜取了人家賬號那就不說了,就不算是偽造交易了。還有一種方法就是你造一筆合法的交易,從它的來源開始造。。。那Bit幣從哪來?提交塊是可以獲取到bit幣,那麼我們可以偽造一個塊。

那麼Bitcoin是如何抵禦以上兩種方式的?

首先,挖礦演算法保證你計算出結果是很費力的,而驗證結果是很容易的,全世界的礦工一起挖礦,平均每十分鐘才能挖出一個塊,而篡改一筆交易有可能要從頭到尾重新算一遍,以現在Bitcoin裡區塊的數量,這個工作量實在是太大了!

其次,我們去偽造一個塊,那麼我們就要偽造塊裡面包含的交易,而這些交易都是要被簽名校驗的...,塊的hash值也是要被校驗的...,這他麼偽造一個塊基本不可能。

<3>分叉攻擊

以上兩種方法都不行,那我們換一個思路。在Bitcoin的世界裡存在這樣一種情況,由於網路延遲的原因,可能導致同時有兩個礦工同時公佈出正確結果,而且被其他節點認同了,這個時候就造成了分叉!


這樣就會將Bitcoin的世界割裂成兩個部分,一部分的礦工沿著N+1塊挖掘下去,一部分礦工沿著N‘+1挖掘下去,那麼最後採取優勝劣汰的原則,誰的鏈長就保留誰作為真正的主鏈,另一個分之鏈被淘汰了,上面的塊也被作廢了,而上面的交易自然也就失效了!老子好不容易花出去的錢又回來了.....

如果有惡意的攻擊者為了作廢你的交易,就在你交易所在的前一個塊挖,然後保證它的分支比你的分支增長的快就可以,這種攻擊卻是是有成功的可能性,不過前提是你要擁有很大的算量,足夠左右鏈的走勢。如果你的算量可以佔據全世界的51%,那麼你就可以說控制了Bitcoin,想廢誰就廢誰!這也就是傳說中的51%攻擊


中本聰用工作量證明這種機制實現了bitcoin對安全的需要,不得不說這個方法看似愚蠢但是非常的巧妙,但是不可複製!!!因為除了Bitcoin之外其他的數字貨幣想得到如此強大的算量支撐已經很難了,而且這也是對計算資源和能源的浪費。