區塊鏈和比特幣初步瞭解

最近這幾天區塊鏈被再一次提到了風口,這次不一樣,xxx代言,xxx支持的,作爲一個IT人,應該瞭解下。而且不能太粗略。

 

一、先過一些基本概念

區塊鏈和比特幣

首先這是兩個概念,區塊鏈是技術範疇,比特幣更像金融範疇。區塊鏈是分佈式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。比特幣是一種P2P形式的虛擬的加密數字貨幣。

一句話:比特幣不是區塊鏈,它只是區塊鏈技術的一個具體應用。

 

中本聰

這裏要了解這個人,因爲這一切的起源就是他的一篇論文。比特幣(Bitcoin)的概念最初由中本聰在2008年11月1日提出,並於2009年1月3日正式誕生。比特幣就是根據中本聰的思路設計發佈的開源軟件以及建構其上的P2P網絡。

 

數字指紋

計算機存儲的信息是2進制的,任何信息,都可以轉化成2進制,那一串串二進制就可以稱爲數字指紋。但是會發現,這些二進制長短不一,且可以簡易解析出原始內容,我們需要利用一些算法加密並統一長度表示,於是有了hash(哈希算法)。可以將一串信息加密成固定長度的字符串,且不可逆向反推原始內容。

SHA算法(Secure Hash Algorithm)從1993年發佈,一直到2015年發佈第3代。比特幣用的是第2代算法,簡稱爲SHA-256算法,由這個算法生成的指紋長度固定爲256比特。

 

加密算法

對稱加密:加密的祕鑰和解密的祕鑰一樣。

非對稱加密:加密的祕鑰(私鑰)和解密的祕鑰(公鑰)不同。

看到一個例子,很好詮釋了非對稱加密:

基於一個規律:任意一個三位數字乘以91,得到的結果再乘以11,最終得到的結果一定是原始三位數寫兩遍。

那麼這個例子,私鑰就是91,公鑰就是11。或者反過來也一樣。解密方法就是乘以11的結果取後三位。

比如:

1、原始數據123,

2、通過私鑰加密123*91=11193

3、通過公鑰解密11193*11=123123,取後三位得到原始數據

 

橢圓曲線算法

比特幣採用的非對稱加密算法:“橢圓曲線算法”,簡稱爲ECC算法。記賬過程如下:

一個私鑰幾乎可以生成無數個不同的對應公鑰,也就意味着可以生成幾乎無數個不同的對應賬號。誰掌握了私鑰,誰就是賬號的主人。在比特幣網絡中,私鑰是動用賬號中比特幣的唯一憑證。

 

區塊鏈

可以理解成一個不可篡改的數據庫,本質是數據庫,只不過很難改動其中的內容。爲什麼?因爲這個數據庫記錄數據是通過“去中心化”的方式記錄的。傳統記賬方式,有一個總賬本,裏面記錄所有的來往,這樣萬一總賬本出問題,那記錄就沒了。去中心化就是這個總賬本是“分佈式”存在多個地方。如下圖,左側是中心化,右側是去中心。

 

區塊

區塊本質是一份一份數據,需要被記錄的數據。如何把這份數據記錄到網絡,就是挖礦。每一份數據被稱爲一個“區塊”,這些區塊每一個都有唯一的編號,在比特幣系統中,編號被稱爲高度(height),這些編號就是自然數1、2、3……一直往下排,不中斷、不重複。

 

第一個區塊

第一個區塊是由區塊鏈的發明人中本聰親自創建的,那是北京時間2009年1月4日,在芬蘭赫爾辛基的一臺小型服務器上,第一個區塊誕生了,這也被稱作“創世區塊”(genesis block)。在這個區塊上,包含的主要信息是:

區塊高度:0

The Times 03/Jan/2009 Chancellor on brinkof second bailout for banks

(譯文:《泰晤士報》2009年1月3日頭版文章標題:財政大臣面臨第二次爲銀行提供緊急救助的窘境)

“某賬號”獲得50比特幣獎勵

 

其他區塊格式

除去第一個,從第二個區塊開始,以後每個區塊就必須嚴格按照比特幣系統的規則來創建了,必須至少包含如下信息

1、前一個區塊的數字指紋(一個256位的二進制數,且前72位必須全部爲0)

2、固定信息

3、收到的交易記錄

4、一個隨機數(nonce)

通過1、2、3、4個條件作爲輸入,不停的HASH計算,最後得出一個新的區塊的數字指紋,同樣,需要是一個256位的二進制數,且前72位必須全部爲0。

 

挖礦

可以理解爲通過大量運算,生成有效比特幣的過程。

 

塊鏈

塊鏈是一個按時間順序排列的比特幣交易公共記錄。塊鏈由所有比特幣用戶共享。它被用來驗證比特幣交易的永久性並防止雙重消費。

 

二、再問一些問題

爲什麼記錄不可修改?

因爲每次節點生成是需要3個東西:

1、節點信息

2、上一個節點編號(HASH值)

3、算力

這裏關鍵是上一級HASH值,因爲HASH是不可逆的加密編碼方式,所以如果想僞造記錄,基本不可能,除非你把所有歷史記錄全部篡改,顯然不合算。

 

如何挖礦的?

在程序猿世界,應該是如何計算出節點值的。其實是依據3個條件,如下:

1、工作量證明函數

2、區塊

3、難度值

工作量證明(Proof Of Work,簡稱POW),簡單來講就是證明你完成了某一項工作。挖礦就是計算出工作量證明函數的解,其實就是不停的求HASH,輸入不同的n,計算hash(n),窮舉嘗試,直到符合條件的HASH值出現。

 

賬本如何同步?

比特幣網絡中的所有電腦都只認可唯一的一個賬本,任何一臺電腦在接入比特幣網絡時,首先要同步這個唯一的賬本。從相鄰的節點上獲取最新的賬本。

 

什麼是雙重支付/雙花支付/雙重消費?

這個問題其實是在電子貨幣之後產生的,傳統貨幣不存在這個問題,因爲你買東西,錢順手就給對方了。但是電子貨幣可能就有問題,你可以拿着電子貨幣先和A買了一個東西,信息同步需要時間,B還沒收到信息,這時候再和B買東西。這就是雙重消費。

如何避免呢?區塊鏈規定有一個主鏈,就是節點最多的那條鏈,比如,你和A交易產生一個分支,又和B交易,又產生一個分支。然後A、B各自給全網節點同步信息,然後發現太壞了,居然一個貨幣交易了兩次,只能有一個作廢了,就是51%的節點記錄認可的是合法的,另一個不合法。

 

比特幣網絡

“比特幣網絡”是按照比特幣P2P協議運行的一系列節點的集合。位於同一網絡中的每臺計算機都彼此對等,各個節點共同提供網絡服務,不存在任何“特殊”節點。

 

三、再講一些操作

比特幣網絡有哪些類型的節點

 

如何成爲一個節點

 

概念太多,一篇有點寫不完,下篇繼續吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章