〇、背景陳述:
已經對區塊鏈領域的學習研究了一段時間。總體來說,前期主要是圍繞bitcoin架構及其源碼學習的,但對這個領域的技術開發還是不太熟悉。為了使自己對區塊鏈領域有一個系統的學習和技術錘鍊,特此總結了如下技術開發路線,來逐漸充實自己的區塊鏈開發知識體系。
這篇博文主要是對之後的技術開發路線做一個清晰的規劃。
對於一個古典互連網人如何進入區塊鏈呢?我覺得比較現實的有兩種姿勢。
一種是信仰,說實話,當前階段不炒幣來做區塊鏈特別是公鏈的人,那真的需要信仰啊,公鏈要技術上能投入實用,要把生態建立起來需要很長的過程,能耐住性子,經曆創業九死一生,那不是信仰又是什麼呢?這樣的人值得尊敬,因為他們推動了真正的技術進步。
另一種是實用,深圳前不久開出了第一張基於區塊鏈的發票,現在要想做聯盟鏈相關 的項目,其實真的機會很多,技術也相對的成熟,做做項目養家糊口很實際啊,這裡區塊鏈跟其它技術沒什麼兩樣。
作為一名比較務實的技術開發人員,為了謀生而將主要精力放在Hyperledger Fabric(聯盟鏈)的開發上,是一個比較穩健的選擇。但是對於區塊鏈的鼻祖——比特幣的學習,我認為又是不可或缺的。比特幣相當於公鏈,相對於以太坊來說,比特幣是屬於比較早期的區塊鏈。我們學習比特幣主要在於對區塊鏈的經典技術原理有一個較全面的認識和積累。
而之所以不選擇以太坊,主要是我認為以太坊作為一個系統比較複雜的公鏈系統,其技術仍舊不太穩定、仍處於不斷完善之中。Solidity編寫智能合約,其底層也存在很多漏洞,所以學習該技術還是存在一些風險的。不過感興趣的開發人員,可以學習下以太坊技術的原理及相關架構,也會受益良多。
所以下邊,我針對公鏈-比特幣及聯盟鏈-Hyperledger Fabric提出自己的技術學習路線。
一、公鏈-比特幣的學習:
學習目標:主要針對比特幣的相關技術進行學習研究,對其原理及實現方法全面掌握
1. 深入學習比特幣的白皮書。對其技術及原理有全面的瞭解,並針對其中提到的技術進行深入學習。
2. 搭建測試網路,對比特幣系統進行測試。
3. 比特幣源碼學習。比特幣源碼有多個版本,開始自己看了一部分的C版,但是後來的Hyperledger Fabric要用到GO語言寫鏈碼(智能合約)。所以準備之後學習GO版本源碼。對其技術架構及技術實現,進行深入學習,並完全掌握!
完成以上目標,我覺得對於經典的區塊鏈系統學習已經夠了。
二、聯盟鏈-Hyperledger Fabric學習:
學習目標:掌握其技術架構和對核心模組的理解;掌握智能合約編寫;對官方提供的學習執行個體進行深入學習並掌握;掌握應用的技術開發;其中用到的工具語言最好能夠做到精通!
1.工具語言的學習:
1)go語言,Fabric、docker等多是基於go語言開發。Bitcoin現在也有了go語言版源碼。所以掌握該語言,能夠協助我們閱讀這些技術的源碼,還可以協助我們進行智能合約開發。GO語言有簡潔,快速,安全,並行,有趣,開源,支援泛型程式設計,記憶體管理,數組安全,編譯迅速等特點。有點語言基礎,很容易掌握。
我用了一天時間對該語言的基礎語言進行了快速學習,基本上就對這門語言有了瞭解。之後肯定是需要深入學習的,我們可以藉助Github上一些技術文檔進行學習。爭取精通這門語言。
2)Java、Node.js、Python等。這些語言主要是在開發應用程式時,對chaincode(鏈碼/智能合約)進行調用,而且都有與之匹配的SDK。所以語言可以自己選擇。因為很多應用是基於Web端的,所以Node.js用得較多。當然如果僅僅做測試及學習,並不是完全為了商業項目,已掌握的Python與Java也是不錯的選擇。
2.Hyperledger架構及核心模組學習:
1)仔細閱讀白皮書。瞭解其技術原理;其中的關鍵術語也要深入理解掌握。
2)對Fabric核心模組進行學習。
3)核心源碼學習。這是我們技術實現提升、能夠深入理解其技術實現的關鍵。
3.技術開發學習:
1)chaincode學習。學習編寫智能合約。多讀源碼、多練習。
2)應用開發。主要是通過自己其他語言工具調用智能合約進行技術開發。Fabric模組的Grpc介面可以被任何語言調用。但是如果一切從底層開始實現的話,這樣的開發效率是非常低的。目前 Hyperledger項目組已提供的基於Nodejs、Java、Go、Python這四種語言的SDK,這些SDK對Fabric常用操作進行了封裝,已大大簡化了開發工作。
4.相關項目源碼學習:
已經學會了上述開發流程,我們最好在Github上尋找些開源項目進行學習並提升。
三、公鏈-以太坊的學習:
學習目標:這部分的學習,我認為對於我們想從事聯盟鏈開發的技術人員來說,主要是為了瞭解其技術架構、對其核心模組有一個大概瞭解,以助於我們對於整個區塊鏈技術的瞭解。我覺得做到這個地步就夠了。
【時間倉促,如有錯誤,歡迎指正! || 歡迎一起學習交流, 請在評論區留言!】
【本作品採用知識共用署名-非商業性使用-相同方式共用 4.0 國際許可協議進行許可。】
【請聯絡博主,同意後務必註明出處:http://www.cnblogs.com/X-knight/】