區塊鏈開發(1)基本概念
阿新 • • 發佈:2018-11-19
最近一直沒更新部落格了,一方面是在技術轉型,遊戲行業的不景氣,不再將重心放在遊戲開發了,一方面也是在積累與學習中(懶惰),缺乏動力。希望通過這次能堅持下去:)。言歸正傳,來記錄和總結下自己在區塊鏈開發方面的經驗。
區塊鏈的發展由第一代比特幣區塊鏈,到第二代以太坊智慧合約的區塊鏈技術,再到現在第三代基於石墨烯的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進位制數字。
數字簽名:
- 由數字摘要和非對稱加密技術組成。
- 原理:
- 將明文用接收方公鑰進行加密,得到密文。
- 用傳送方私鑰對明文進行雜湊後得到的資訊摘要進行加密,得到傳送方簽名。
- 將密文和簽名一起傳送給接收方。
- 接收方用私鑰對接接收到的密文進行解密,得到原來的明文。
- 用傳送方公鑰對接收到的簽名進行解密,得到明文的雜湊值,即資訊摘要。
- 對明文進行雜湊與簽名解密算出的雜湊值對比,一致則原文沒有被篡改。
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。版權所有,歡迎保留原文連結進行轉載 :)