我為啥要學習EOS源碼
正所謂不忘初心方得始終,在開始這個系列前,先簡單聊聊為啥我要學習EOS源碼吧。
首先,一直以來我對比特幣和區塊鏈還是蠻感興趣的,不過大多認知都止步于科普文章/書籍和白皮書,這對于將"show me the code"常掛在嘴邊的碼農來說顯然是不夠的,要想深刻理解運用區塊鏈必須要深入學習源碼。
其次,目前EOS作為最被廣泛看好的區塊鏈3.0方案之一,被寄予了解決區塊鏈擴容等問題的期望,但是網上關于EOS的技術文章大多停留在白皮書搬運(各種概念的炒作)和運行樣例程序的淺層次階段,這類文章已經比較豐富了。對于真正有志于參與區塊鏈開發實踐的讀者來說,源碼級別的學習經驗分享更具有參考價值。
最后,EOS目前還處于發展的非常早期階段,還沒正式上線主網,還有大量的輪子需要被制造出來,熟悉了解源代碼是參與社區建設的基本門檻。
源碼學習系列概要
由于這個系列開始的時候EOS release了Dawn2.x版本并且上線了測試網絡,這個應該是能夠比較穩定運行的版本,所以這個系列先專注于Daw2.x分支的分析,后續新的feature上線文檔后再另開系列分析,Github上項目分支在https://github.com/EOSIO/eos/tree/dawn-2.x。
由于我也是邊學習源碼邊寫這個系列,分享我的學習過程,所以系列的組織結構上可能會有一定的變動。
為了方便,系列大體上參考源碼組織結構,主要分為四個篇章,對應源碼中四個一級目錄:
- program: 程序篇
- eos的應用程序,最主要的包括運行節點實例
eosd
,與eosd交互的命令行工具eosc
,單獨的錢包應用eos-walletd
,以及其他開發測試工具。 - EOS源碼學習:程序篇(一)eosd
- eos的應用程序,最主要的包括運行節點實例
- plugin: 插件篇
-
eosd
應用程序采用插件化設計,最主要的功能設計成接口統一的plugin,應用程序根據配置加載需要的插件,第三方開發者也可以開發擴展plugin支持新功能。 - EOS源碼學習:石墨烯引擎 & EOS插件機制
-
- libraries: 功能庫篇
- 實現了eos業務功能組件。
- contracts: 合約篇
- 提供了一些合約樣例。
這樣分的好處是,文章組織與EOS軟件架構保持同構,一個篇章主要集中在EOS架構的一個層面進行分析和討論,同時,讀者能夠快速找到對應的源碼。對于EOS的軟件架構概況會在程序篇結合例子進行介紹。
等后續篇章和子文章豐富起來,和加深對EOS理解后,可以就個別主題打包文章集合,進一步貫穿分析討論。
值得一提的是,寫這個系列順序是按照我的興趣和關注點優先,如果有希望提高優先級的歡迎在評論區留言。另外,文中認識理解有誤或爭議的地方,懇請讀者多指正,謝謝。