最近一直沒更新博客了,一方面是在技術轉型,游戲行業的不景氣,不再將重心放在游戲開發了,一方面也是在積累與學習中(懶惰),缺乏動力。希望通過這次能堅持下去:)。言歸正傳,來記錄和總結下自己在區塊鏈開發方面的經驗。
區塊鏈的發展由第一代比特幣區塊鏈,到第二代以太坊智能合約的區塊鏈技術,再到現在第三代基於石墨烯的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。版權所有,歡迎保留原文鏈接進行轉載 😃
