EOS原始碼學習系列

weixin_34146805發表於2018-03-11

我為啥要學習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
  • plugin: 外掛篇
  • libraries: 功能庫篇
    • 實現了eos業務功能元件。
  • contracts: 合約篇
    • 提供了一些合約樣例。

這樣分的好處是,文章組織與EOS軟體架構保持同構,一個篇章主要集中在EOS架構的一個層面進行分析和討論,同時,讀者能夠快速找到對應的原始碼。對於EOS的軟體架構概況會在程式篇結合例子進行介紹。

等後續篇章和子文章豐富起來,和加深對EOS理解後,可以就個別主題打包文章集合,進一步貫穿分析討論。

值得一提的是,寫這個系列順序是按照我的興趣和關注點優先,如果有希望提高優先順序的歡迎在評論區留言。另外,文中認識理解有誤或爭議的地方,懇請讀者多指正,謝謝。

相關文章