EOS原始碼學習系列
我為啥要學習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理解後,可以就個別主題打包文章集合,進一步貫穿分析討論。
值得一提的是,寫這個系列順序是按照我的興趣和關注點優先,如果有希望提高優先順序的歡迎在評論區留言。另外,文中認識理解有誤或爭議的地方,懇請讀者多指正,謝謝。
相關文章
- EOS原始碼分析(2)EOS執行原始碼
- underscorejs原始碼學習系列(未完,更新中)JS原始碼
- EOS原始碼分析(6)Token原始碼
- Java併發包原始碼學習系列:同步元件CountDownLatch原始碼解析Java原始碼元件CountDownLatch
- Java併發包原始碼學習系列:同步元件CyclicBarrier原始碼解析Java原始碼元件
- Java併發包原始碼學習系列:同步元件Semaphore原始碼解析Java原始碼元件
- EOS原始碼分析(1)安裝原始碼
- EOS原始碼分析(3)案例分析原始碼
- EOS原始碼分析(4)錢包原始碼
- EOS原始碼分析(5)賬號原始碼
- 0原始碼基礎學習Spring原始碼系列(一)——Bean注入流程原始碼SpringBean
- Java併發包原始碼學習系列:執行緒池ThreadPoolExecutor原始碼解析Java原始碼執行緒thread
- Java併發包原始碼學習系列:JDK1.8的ConcurrentHashMap原始碼解析Java原始碼JDKHashMap
- Java併發包原始碼學習系列:執行緒池ScheduledThreadPoolExecutor原始碼解析Java原始碼執行緒thread
- 原始碼學習原始碼
- Spring5.0原始碼學習系列之事務管理概述Spring原始碼
- Flutter筆記——幀繪製系列之一(原始碼學習)Flutter筆記原始碼
- Spring5.0原始碼學習系列之淺談BeanFactory建立Spring原始碼Bean
- Netty原始碼學習系列之5-NioEventLoop的run方法Netty原始碼OOP
- Netty原始碼學習系列之4-ServerBootstrap的bind方法Netty原始碼Serverboot
- Flume學習系列(六)---- Logger Sink原始碼解讀與自定原始碼
- Spring5.0原始碼學習系列之Spring AOP簡述Spring原始碼
- EOS原始碼分析(7)目錄結構原始碼
- fishhook原始碼學習Hook原始碼
- MMKV原始碼學習原始碼
- vue原始碼學習Vue原始碼
- 【原始碼學習】ThreadLocal原始碼thread
- EventBus原始碼學習原始碼
- ObjectMapper原始碼學習ObjectAPP原始碼
- express原始碼學習Express原始碼
- go原始碼學習Go原始碼
- 學習HashMap原始碼HashMap原始碼
- Java併發包原始碼學習系列:阻塞佇列實現之ArrayBlockingQueue原始碼解析Java原始碼佇列BloC
- Java併發包原始碼學習系列:阻塞佇列實現之LinkedBlockingQueue原始碼解析Java原始碼佇列BloC
- Java併發包原始碼學習系列:阻塞佇列實現之PriorityBlockingQueue原始碼解析Java原始碼佇列BloC
- Java併發包原始碼學習系列:阻塞佇列實現之SynchronousQueue原始碼解析Java原始碼佇列
- Java併發包原始碼學習系列:阻塞佇列實現之LinkedBlockingDeque原始碼解析Java原始碼佇列BloC
- Java併發包原始碼學習系列:阻塞佇列實現之LinkedTransferQueue原始碼解析Java原始碼佇列