我為啥要學習EOS源碼
正所謂不忘初心方得始終菲盾,在開始這個系列前曹质,先簡單聊聊為啥我要學習EOS源碼吧。
首先是尖,一直以來我對比特幣和區(qū)塊鏈還是蠻感興趣的,不過大多認知都止步于科普文章/書籍和白皮書泥耀,這對于將"show me the code"常掛在嘴邊的碼農(nóng)來說顯然是不夠的饺汹,要想深刻理解運用區(qū)塊鏈必須要深入學習源碼。
其次痰催,目前EOS作為最被廣泛看好的區(qū)塊鏈3.0方案之一兜辞,被寄予了解決區(qū)塊鏈擴容等問題的期望,但是網(wǎng)上關(guān)于EOS的技術(shù)文章大多停留在白皮書搬運(各種概念的炒作)和運行樣例程序的淺層次階段夸溶,這類文章已經(jīng)比較豐富了逸吵。對于真正有志于參與區(qū)塊鏈開發(fā)實踐的讀者來說,源碼級別的學習經(jīng)驗分享更具有參考價值缝裁。
最后扫皱,EOS目前還處于發(fā)展的非常早期階段,還沒正式上線主網(wǎng)捷绑,還有大量的輪子需要被制造出來韩脑,熟悉了解源代碼是參與社區(qū)建設(shè)的基本門檻。
源碼學習系列概要
由于這個系列開始的時候EOS release了Dawn2.x版本并且上線了測試網(wǎng)絡(luò)粹污,這個應(yīng)該是能夠比較穩(wěn)定運行的版本段多,所以這個系列先專注于Daw2.x分支的分析,后續(xù)新的feature上線文檔后再另開系列分析壮吩,Github上項目分支在https://github.com/EOSIO/eos/tree/dawn-2.x进苍。
由于我也是邊學習源碼邊寫這個系列,分享我的學習過程鸭叙,所以系列的組織結(jié)構(gòu)上可能會有一定的變動觉啊。
為了方便,系列大體上參考源碼組織結(jié)構(gòu)递雀,主要分為四個篇章柄延,對應(yīng)源碼中四個一級目錄:
- program: 程序篇
- eos的應(yīng)用程序,最主要的包括運行節(jié)點實例
eosd
,與eosd交互的命令行工具eosc
搜吧,單獨的錢包應(yīng)用eos-walletd
市俊,以及其他開發(fā)測試工具。 - EOS源碼學習:程序篇(一)eosd
- eos的應(yīng)用程序,最主要的包括運行節(jié)點實例
- plugin: 插件篇
-
eosd
應(yīng)用程序采用插件化設(shè)計滤奈,最主要的功能設(shè)計成接口統(tǒng)一的plugin摆昧,應(yīng)用程序根據(jù)配置加載需要的插件,第三方開發(fā)者也可以開發(fā)擴展plugin支持新功能蜒程。 - EOS源碼學習:石墨烯引擎 & EOS插件機制
-
- libraries: 功能庫篇
- 實現(xiàn)了eos業(yè)務(wù)功能組件绅你。
- contracts: 合約篇
- 提供了一些合約樣例。
這樣分的好處是昭躺,文章組織與EOS軟件架構(gòu)保持同構(gòu)忌锯,一個篇章主要集中在EOS架構(gòu)的一個層面進行分析和討論,同時领炫,讀者能夠快速找到對應(yīng)的源碼偶垮。對于EOS的軟件架構(gòu)概況會在程序篇結(jié)合例子進行介紹。
等后續(xù)篇章和子文章豐富起來帝洪,和加深對EOS理解后似舵,可以就個別主題打包文章集合,進一步貫穿分析討論葱峡。
值得一提的是砚哗,寫這個系列順序是按照我的興趣和關(guān)注點優(yōu)先,如果有希望提高優(yōu)先級的歡迎在評論區(qū)留言砰奕。另外蛛芥,文中認識理解有誤或爭議的地方,懇請讀者多指正脆淹,謝謝常空。