## :-: 元宇宙是世界的未來
本序列文章將記錄一個區塊鏈的開發過程,我們將開發一個完整版本的區塊鏈,軟件開發語言是Go語言。
首先聲明我的三個觀點,兩個與共識算法有關:
1、公鏈才是真正的區塊鏈,未來的世界屬于公鏈;
2、采用PoW共識算法,雖然效率不是那么高,但我認為,區塊鏈的世界一定是“慢世界”,只有“慢”,才有幸福,才有真的創新,而有創新的人生才是幸福的,也才有意義。試問,匆匆忙忙的人生有什么意義?
在開發過程中,我們將對區塊鏈涉及到的技術細節一一進行探討,也是屬于從零開始的探究性的理解和學習。
>本書源碼參考了github上多個開源的源碼,為遵循開源協議,本項目將一直開源。參考項目一一列舉如下(清單將不斷更新):
1、[https://github.com/Jeiwan/blockchain\_go](https://github.com/Jeiwan/blockchain_go),修正了里面的不少bug(無力吐槽。。。有些是邏輯錯誤,有些純屬功能缺陷,有些是注釋錯誤(注釋錯誤很可怕),可能作者也是參考了其他源碼編寫的,而且可能并沒有吃透所參考的源碼。我也對該項目提交了部分修訂)。
BTW,參考的源碼還是整體上比較優雅,不少值得學習的地方,說是the best practice也不為過,另外,配套的技術講解文章尤其見功力,對區塊鏈技術闡述簡明扼要,而且技術闡述與代碼相互印證,文字表達能力一流,可見作者對區塊鏈的理解之深。
2、[https://github.com/btcsuite/btcd](https://github.com/btcsuite/btcd),這是基于Go語言實現的一個完整的bitcoin。這是一個活躍的區塊鏈開源項目,貢獻者達127人(截止到2020年10月20日),遵循的版權協議是[copyfree](http://copyfree.org/):這是其介紹:btcd is an alternative full node bitcoin implementation written in Go (golang).This project is currently under active development and is in a Beta state. It is extremely stable and has been in production use since October 2013。
3、[https://github.com/stretchr/testify](https://github.com/stretchr/testify),這是一個開源的Go單元測試包。
4、[https://github.com/ethereum/go-ethereum/](https://github.com/ethereum/go-ethereum/),這是以太坊官方主要應用Go語言開發的以太坊,項目相當活躍,貢獻者高達547人,最新的release版本是1.9.23(截止到2020年10月21日)。
5、[https://github.com/pengzhaocheng16/simple_bitcoin_go](https://github.com/pengzhaocheng16/simple_bitcoin_go),作者在fork了上面第一個開源項目blockchain_go后,在參考以太坊的實現的基礎上,完善了blockchain_go的功能,主要是P2P功能。*
6、[https://github.com/libp2p/go-libp2p](https://github.com/libp2p/go-libp2p)。p2p是非常復雜的,我們將基于libp2p模塊來開發區塊鏈所需的p2p功能。
>此外,開發過程中還參考了bilibili上北大肖臻教授的公開課課程:《區塊鏈技術與應用》。肖老師在視頻課程上,以比特幣區塊鏈為例,對區塊鏈相關技術有較為詳盡的講述,更多告訴我們“為什么”的問題,講述深入淺出,可謂釋疑解惑之好課程。肖老師確是區塊鏈技術上受人尊敬的布道者,由衷欽佩之。
千里之行,始于足下,大廈的地基建設最費周章,今天的慢,是為了以后的快。這個區塊鏈項目,也是后面將要開發的“全球供需匹配區塊鏈”的一個基石。在這之后,我將另外新起一本書,也以序列文章出現,配套開發的代碼完成。
全球供需匹配區塊鏈的頂層設計歷經近3年斷斷續續編寫和修訂,已經初具雛形,目前還在繼續廣泛閱讀各種經濟、技術、哲學相關書籍,我也將在本項目結束后,做一個定稿,并公布出來,這之后,我將首先基于全球供需匹配區塊鏈的設計需要,以智能合約實現為目的,對項目的腳本語言進行擴展。所有的設計,都將落實到代碼上。
我將確保放到github中的源代碼都是有非常完備詳盡的注釋(盡量注釋到每一行),甚至涉及到Go語言的知識點也會解釋清楚,確保每一位閱讀者以及自己以后隨時翻看起來,都能一目了然。
***如果有blockchainer有興趣,可以和我聯系,一起加入并從頭打造一個區塊鏈(qq:785909868)。區塊鏈綜合了過往的不少技術,其中主要是密碼學相關技術、P2P網絡、虛擬機技術。全新開發一個區塊鏈,并不是一件工作量浩大到讓人卻步的工程,它涉及到的技術有限、代碼量也有限,而且Go提供了不少可靠的包使用(如libp2p等)。Go語言作為全新的語言,作為下一代的并發編程的C,吸取了包括動態語言在內的很多特性,嚴謹不失靈活,文法優雅,而且“代碼是什么,執行就是什么”。一句話:你值得加入和擁有。***
## :-: 能力有限,潛能無限;專注于興趣,追求無止境。
- 重要更新說明
- linechain發布
- linechain新版設計
- 引言一
- 引言二
- 引言三
- vs-code設置及開發環境設置
- BoltDB數據庫應用
- 關于Go語言、VS-code的一些Tips
- 區塊鏈的架構
- 網絡通信與區塊鏈
- 單元測試
- 比特幣腳本語言
- 關于區塊鏈的一些概念
- 區塊鏈組件
- 區塊鏈第一版:基本原型
- 區塊鏈第二版:增加工作量證明
- 區塊鏈第三版:持久化
- 區塊鏈第四版:交易
- 區塊鏈第五版:實現錢包
- 區塊鏈第六版:實現UTXO集
- 區塊鏈第七版:網絡
- 階段小結
- 區塊鏈第八版:P2P
- P2P網絡架構
- 區塊鏈網絡層
- P2P區塊鏈最簡體驗
- libp2p建立P2P網絡的關鍵概念
- 區塊鏈結構層設計與實現
- 用戶交互層設計與實現
- 網絡層設計與實現
- 建立節點發現機制
- 向區塊鏈網絡請求區塊信息
- 向區塊鏈網絡發布消息
- 運行區塊鏈
- LineChain
- 系統運行流程
- Multihash
- 區塊鏈網絡的節點發現機制深入探討
- DHT
- Bootstrap
- 連接到所有引導節點
- Advertise
- 搜索其它peers
- 連接到搜到的其它peers
- 區塊鏈網絡的消息訂發布-訂閱機制深入探討
- LineChain:適用于智能合約編程的腳本語言支持
- LineChain:解決分叉問題
- LineChain:多重簽名
- libp2p升級到v0.22版本
- 以太坊基礎
- 重溫以太坊的樹結構
- 世界狀態樹
- (智能合約)賬戶存儲樹
- 交易樹
- 交易收據樹
- 小結
- 以太坊的存儲結構
- 以太坊狀態數據庫
- MPT
- 以太坊POW共識算法
- 智能合約存儲
- Polygon Edge
- block結構
- transaction數據結構
- 數據結構小結
- 關于本區塊鏈的一些說明
- UML工具-PlantUML
- libp2p介紹
- JSON-RPC
- docker制作:啟動多個應用系統
- Dockerfile
- docker-entrypoint.sh
- supervisord.conf
- docker run
- nginx.conf
- docker基礎操作整理
- jupyter計算交互環境
- git技巧一
- git技巧二
- 使用github項目的最佳實踐
- windows下package管理工具