第【2】篇 區塊鏈到底是怎麼運行的?

本文我們從比特幣系統來講解區塊鏈是怎麼運行的,比特幣系統我們可以建立自己的賬號,可以交易,也可以挖礦,並且比特幣也支持幾種簡單的合約,首先我們要理解區塊鏈是一個分佈式的系統,他是去中心化的,比特幣系統可以自動運維,每個人都可以使用,而且記賬是公開的,比特幣系統可以自動保證數據的準確性。。。

那麼比特幣系統是怎麼運行的呢? 首先比特幣是一個系統,那麼他就可以運行在各種計算器上,他就可以對外提供服務,例如對外提供api與外包的程序進行交互信息,與交易所進行信息轉換等等。。。

1.p2p去中心化網絡

比特幣是一個全世界的開放網絡,只要你有服務器,就能加入這個網絡,成爲一個節點。每個節點都包含了整個區塊鏈(目前大概 100多 GB),並且節點之間時刻不停地在同步信息。

 

當你發生了一筆支付,你所在的節點就會把這筆交易告訴另一個節點,直至傳遍整個網絡。礦工從網上收集各種新發生的交易,將它們打包寫入區塊鏈。一旦寫入成功, 礦工所在節點的區塊鏈,就成爲最新版本,其他節點都會來複制新增的區塊,保證全網的區塊鏈都是一致的。

最後,你所在的節點也拿到了最新的區塊鏈,從而得知你早先的那筆交易,已經寫在裏面了,至此交易確認成功,比特幣就是通過這種點對點的機制保證了數據可以同步一致的,也就是說所有信息的交互是由p2p網絡同步完成的

2.共識機制    

對於區塊鏈來說,它沒有一箇中心主體在負責體系的運轉,賬本怎麼記?什麼賬本纔是大家確認的?諸如此類都需要由一個去中心化的機制來達成共識。

對於一個公鏈來說,它是否足夠安全,是否更有效率,共識機制是關鍵。共識機制設計好了,一是能夠保證網絡的安全,保證記賬的安全,免於遭受惡意攻擊;二是能夠讓社區很好的自運轉,特別是在如何激勵方面,是否有好的設計是自治社區能否進入良性循環的關鍵。

最後,越來越多的共識算法,除了保證安全之外,也會考慮到效率和公平。我們來看看,不同的共識算法各自的優劣之處,p2p網絡保證了數據的傳輸同步,共識保證了數據的正確安全

3.數據安全

首先,理解比特幣,必須理解非對稱加密

你可能聽說過這個詞,所謂非對稱加密,其實很簡單,就是加密和解密需要兩把鑰匙:一把公鑰和一把私鑰。

公鑰是公開的,任何人都可以獲取。私鑰是保密的,只有擁有者才能使用。他人使用你的公鑰加密信息,然後發送給你,你用私鑰解密,取出信息。反過來,你也可以用私鑰加密信息,別人用你的公鑰解開,從而證明這個信息確實是你發出的,且未被篡改,這叫做數字簽名。

現在請設想,如果公鑰加密的不是普通的信息,而是加密了一筆錢,發送給你,這會怎樣?

首先,你能解開加密包,取出裏面的錢,因爲私鑰在你手裏。其次,別人偷不走這筆錢,因爲他們沒有你的私鑰。因此,支付可以成功。

這就是比特幣(以及其他數字貨幣)的原理:非對稱加密保證了支付的可靠性。

由於支付的錢必須通過私鑰取出,所以你是誰並不重要,重要的是誰擁有私鑰。只有擁有了私鑰,才能取出支付給你的錢。

4.未花費交易

     比特幣中比特幣交未花費交易,除了創世塊中初始化的比特幣其他的所有比特幣都有輸入的,因爲比特幣的擁有者持有的比特幣是用自己的私鑰加密的,所以花費之前需要用自己的私鑰解密,比特幣擁有者擁有的幣是通過記錄的形式保存的,沒有中心化交易系統中類似額度的概率,我們看一下一筆交易的流轉實例圖:

5.數據儲存

    比特幣程序將數據存在了4個地方。

  • blocks/blk*.dat的文件中存儲了實際的塊數據,這些數據以網絡格式存儲。它們僅用於重新掃描錢包中丟失的交易,將這些交易重新組織到鏈的不同部分,並將數據塊提供給其他正在同步數據的節點。
  • blocks/index/*是一個levelDB數據庫,存儲着目前已知塊的元數據,這些元數據記錄所有已知的塊以及它們存儲在磁盤上的位置。沒有這些文件,查找一個塊將是非常慢的。
  • chainstate/*是一個levelDB數據庫,以緊湊的形式存儲所有當前未花費的交易以及它們的元數據。這裏的數據對於驗證新傳入的塊和交易是必要的。在理論上,這些數據可以從塊數據中重建,但是這需要很長時間。沒有這些數據也可以對數據進行驗證,但是需要現有塊數據進行掃面,這無疑是非常慢的。
  • blocks/rev*.dat中包含了“撤銷”數據,可以將區塊視爲鏈的“補丁”(它們消耗一些未花費的輸出並生成新的輸出),那麼這些撤銷數據將是反向補丁。如果需要回滾鏈,這些數據將是必須的。

比特幣程序從網絡中接受數據後,會將數據以.dat的形式轉儲到磁盤上。

一個塊文件大約爲128MB。每個塊文件會有一個對應的撤銷文件,比如文件blocks/blk1234.datblocks/recv1234.dat對應。

比特幣網絡的所有數據所有節點都是相同的,只有經過確認的數據纔會保存在數據文件中

交易流程

A向B發送了一筆交易,首先這筆交易被加密發送到網絡上,同步到其他節點中,也就是會被同步到很多節點的內存中,等待打包,節點對這些數據進行校驗打包,具有打包權力的礦工會得到挖礦獎勵,然後打包數據同步到區塊鏈節點中,這樣就完成了一筆交易,也就是區塊鏈系統完成了一詞這個流程的運行

 

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