1. 程式人生 > >區塊鏈開發(1)基本概念

區塊鏈開發(1)基本概念

最近一直沒更新部落格了,一方面是在技術轉型,遊戲行業的不景氣,不再將重心放在遊戲開發了,一方面也是在積累與學習中(懶惰),缺乏動力。希望通過這次能堅持下去:)。言歸正傳,來記錄和總結下自己在區塊鏈開發方面的經驗。

區塊鏈的發展由第一代比特幣區塊鏈,到第二代以太坊智慧合約的區塊鏈技術,再到現在第三代基於石墨烯的EOS區塊鏈。其中,涉及到的知識面之廣,概念繁多,本篇作為開篇,主要來梳理下其中常見概念的含義,結合個人的理解,不涉及相關技術與操作演示(期待後續),也會不定期更新。如有任何你覺得不對的地方或給你造成了誤導,歡迎討論與指正。

1. 區塊鏈技術

  • 鏈式資料結構,每個區塊的頭部都儲存著指向上一個節點的雜湊值,依次相連。
  • 基於P2P網路,分散式節點共識演算法來維護和更新資料,來保證資料的"不可篡改"。
  • 利用密碼學原理,來保證資料傳輸、訪問的安全。
  • 自動化指令碼(智慧合約)來可程式設計和操作資料。
  • 本質是去中心化的資料庫,最終要解決的是網際網路傳輸中的信任問題。

2. 去中心化

  • 整個網路由每個節點共同參與,共同維護,不依賴中央處理節點,每個節點都是中心。
  • 資料的儲存與更新是分散式的,不需要中介與信任結構背書。

3. 私有鏈、公有鏈與聯盟鏈

私有鏈:

  • 參與節點的資格有限且可控、讀取與寫入受限。
  • 弱中心化,解決"隊友"(機構內)間的信任問題。

公有鏈:

  • 開放的,任何人都可以讀取鏈上的資料、參與交易。
  • 完全去中心化的,鏈上資料不受任何人或機構篡改。
  • 通過獎勵代幣機制來鼓勵參與者競爭記賬權。
  • 解決"人類"(所有人)不可信問題。

聯盟鏈:

  • 由多個機構間共同參與、維護、管理,鏈上資料只允許系統內的機構讀寫、交易。
  • 部分去中心化,每個機構執行一個或多個節點。
  • 解決"組織"(機構間)不可信問題。

4. 挖礦

  • 競爭記賬權,對一段時間內的網路中的交易進行確認,並記錄在區塊鏈上的過程。
  • 原理是重複計算區塊頭的雜湊值,不斷修改隨機數nonce值,直到算出與難度目標值匹配。從而,會產生一個區塊(每個區塊都對應一個賬單)。
  • 通常算力越高,計算雜湊值的速度越快,挖礦成功的概率越大。

5. 智慧合約

  • 一個可以自動執行的計算機程式(程式碼)。 將現實世界中的合同進行數字化而定義的"承諾",以及合約方執行這些"承諾"的協議。
  • 合約由一組程式碼(合約的函式)和資料(合約的狀態)組成,執行在虛擬機器上。
  • 用於處理交易雙方之間的交易行為(接收、儲存、傳送等)。
  • 一旦合約被部署,就不能被更改。

6. 錢包

  • 控制使用者的訪問許可權。
  • 管理數字貨幣地址、金鑰。
  • 跟蹤餘額、建立交易和簽名交易。

7. 公私鑰

  • 非對稱加密演算法。兩個金鑰,一個是公開金鑰,一個是私有金鑰,公鑰和私鑰成對出現。
  • 一個用作加密,一個用作解密。
  • 私鑰可以推倒出公鑰。

8. 共識演算法

共識:

  • 分散式系統中,大部分節點對某個"提案"達成一致性的機制。

拜占庭容錯:

  • 概念:網路通訊可靠,允許存在少數節點作惡場景(訊息可能被偽造)下的一致性達成問題。
  • POW:工作量證明機制。根據每個節點的計算力來決定,誰得算力強,誰就可獲得記賬權。
  • POS:股權證明機制。根據每個節點具有的資源來決定,誰投入的資源多,誰就可以獲得記賬權。
  • DPOS:代理股權證明機制。選舉出n個記賬節點,在節點中提案者提交的提案被這些記賬節點投票決定。

非拜占庭容錯:

  • 概念: 分散式的系統中存在故障,但不存在惡意節點的場景(即可能訊息丟失或重複,但無錯誤訊息)下的共識達成問題。

9. 雜湊演算法與數字簽名

雜湊演算法:

  • 概念:將任意長度的二進位制值(明文)對映為較短的固定長度的二進位制值(hash值)。不同的明文很難對映為相同的雜湊值(雜湊值也稱為指紋或摘要)。
  • MD5:對映為32位16進位制數字。
  • SHA-1:對映為40位16進位制數字。
  • SHA-256: 對映為64位16進位制數字。
  • SHA-512:對映為128位16進位制數字。

數字簽名:

  • 由數字摘要和非對稱加密技術組成。
  • 原理:
    1. 將明文用接收方公鑰進行加密,得到密文。
    2. 用傳送方私鑰對明文進行雜湊後得到的資訊摘要進行加密,得到傳送方簽名。
    3. 將密文和簽名一起傳送給接收方。
    4. 接收方用私鑰對接接收到的密文進行解密,得到原來的明文。
    5. 用傳送方公鑰對接收到的簽名進行解密,得到明文的雜湊值,即資訊摘要。
    6. 對明文進行雜湊與簽名解密算出的雜湊值對比,一致則原文沒有被篡改。

10. P2P網路

  • 無中心伺服器,網路健壯,高容錯。
  • 共享使用者的頻寬、儲存空間和計算能力。
  • 使用者節點越多,速度越快。

11. 數字貨幣與Token

數字貨幣:

  • 一般指基於區塊鏈技術和加密演算法產生的一種數字化資產,也常稱為"加密貨幣"。
  • 可用於真實的商品和服務交易。

Token:

  • 基於區塊鏈(例如:以太坊ERC20,EOS等)發行的一種自定義貨幣,也稱為代幣。

12. ERC20與ERC721

ERC20:

  • 以太坊定義的一套自定義貨幣的API介面標準。

ERC721:

  • 同樣是基於以太坊,與ERC20不同的是,ERC721定義的代幣具有不可替代的、唯一性。

13. Gas Price與Gas Limit

以太坊在執行交易、轉賬,部署智慧合約等操作時,需要花費Gas費用。Gas費用的計算為:
Gas = Gas Price * Gas Limit + Value

  • Gas Price:指使用者願意花費每個Gas單位的價錢,單位是Gwei。即:價格單位。
  • Gas Limit:指使用者願意為執行某個操作花費的最大Gas量(最少21000),即:數量單位。

暫時先總結到這裡,後面會不定期更新其它區塊鏈開發中的相關概念,下一篇暫定為以太坊私鏈的搭建。如果覺得本篇對你有幫助,歡迎點贊支援。如果覺得本篇中有任何異議的地方,也歡迎留言與我討論。

作者:AlphaGL。版權所有,歡迎保留原文連結進行轉載 :)