産品特色
編輯推薦
以實踐為基礎,從技術角度研究瞭區塊鏈的設計與實現,從代碼層麵詳細剖析瞭使用Node.js開發區塊鏈的技巧與*佳實踐。
圍繞區塊鏈、Node.js前後端開發、密碼學、P2P網絡、共識算法等進行全麵深入的講解,幫助讀者更深刻地理解Node.js區塊鏈開發!
內容簡介
本書力圖用*少的篇幅錶述豐富的內容,共分為五個部分,20多個章節,具體結構如下。
第一部分:瞭解區塊鏈,共4章。詳細講述瞭區塊鏈産品——加密貨幣的相關概念,用獨特的技術視角,把加密貨幣的基本技術要素串聯起來。
第二部分:Node.js入門指南,共4章。詳細介紹瞭Node.js入門知識,並通過一個具體項目,完成對Node.js在區塊鏈技術領域的調查和描述,整個章節也是項目架構設計必備的調研和技術選型階段,是本書*一個完整的實踐範例。
第三部分:源碼解讀,共9章。從架構設計的角度,層層剖析區塊鏈的設計原理,深刻解讀相關概念和技術。先從項目設計的角度詳細介紹瞭億書白皮書的核心內容,然後從項目入口程序齣發,介紹瞭億書項目的整體結構;之後分彆介紹瞭P2P網絡、加密解密、簽名和多重簽名、區塊鏈、共識機製等區塊鏈核心內容及其代碼實現。
第四部分:開發實踐,共9章。主要是對第二和第三部分的有益補充,把在這兩個部分齣現的技術難點抽取齣來,集中介紹。仍然以億書項目中涉及的實際項目為主,包含多個完整獨立的小項目,其中涉及函數式編程等編程方法論、aysnc的用法、命令行工具的開發、億書官方網站的開發、密碼學技術、時間戳和數據計算,以及測試技術。
第五部分:附錄。匯總瞭區塊鏈的相關概念、常見詞匯的中英文對照等內容。
作者簡介
硃誌文(網名imfly),區塊鏈技術專傢,全棧開發工程師,億書(Ebookchain)等多個開源項目的核心開發者,中國區塊鏈俱樂部主創者和發起人,區塊鏈技術的狂熱布道者,CSDN區塊鏈知識庫特邀編輯、博客專傢,多個區塊鏈項目的專傢顧問和天使投資人。你可以在億書官網找到他。
目錄
推薦序一
推薦序二
推薦序三
前言
第一部分 瞭解區塊鏈
第1章 加密貨幣就是貨幣 2
1.1 加密貨幣簡史 2
1.2 什麼是加密貨幣 3
1.3 加密貨幣就是貨幣 4
1.4 加密貨幣可靠嗎 4
1.5 總結 6
1.6 參考 6
第2章 區塊鏈,承載人類信用的基石 7
2.1 利益,現實世界的內在驅動力 7
2.2 信用,決定著利益轉移的方嚮 7
2.3 未來趨勢 9
2.4 應用場景 9
2.5 風險提示 11
2.6 總結 12
2.7 參考 12
第3章 共識機製,可編程的利益轉移規則 13
3.1 機製,左右産品走嚮的根源 13
3.2 PoW:工作量證明機製 14
3.3 PoS:股權證明機製 15
3.4 DPoS:授權股權證明機製 16
3.5 億書對DPoS機製的改進 17
3.6 總結 17
3.7 參考 18
第4章 區塊鏈架構設計 19
4.1 基本概念 19
4.2 架構圖 20
4.3 協議層 20
4.4 擴展層 22
4.5 應用層 22
4.6 編程實現 23
4.7 知識圖譜 25
4.8 總結 26
4.9 參考 27
第二部分 Node.js入門指南
第5章 Node.js在幣圈流行麼 30
5.1 Node.js在開源社區很流行 30
5.2 Node.js在幣圈也同樣流行 32
5.3 Github上前10個應用的簡介 34
5.4 結論 36
5.5 總結 36
5.6 參考 36
第6章 Node.js讓前端開發像子彈飛一樣 37
6.1 項目需求 37
6.2 技術選型 37
6.3 Node.js簡介 38
6.4 開發步驟 39
6.5 總結 51
6.6 參考 51
第7章 Node.js讓後颱開發像前端一樣簡單 53
7.1 需求 53
7.2 開發 54
7.3 總結 61
7.4 參考 62
第8章 你必須知道的幾個Node.js編碼習慣 63
8.1 一切都是數據流 63
8.2 事事皆迴調 65
8.3 異常要捕捉 67
8.4 總結 72
8.5 參考 73
第三部分 源碼解讀
第9章 億書,一個麵嚮未來的自齣版平颱 76
9.1 億書是什麼 76
9.2 使用場景 76
9.3 主要特點 77
9.4 核心功能 77
9.5 技術架構 78
9.6 總結 79
9.7 參考 79
第10章 入口程序app.js解讀 80
10.1 源碼與類圖 80
10.2 解讀 80
10.3 總結 86
第11章 一個精巧的P2P網絡實現 88
11.1 源碼、類圖與流程圖 88
11.2 解讀 89
11.3 總結 98
11.4 參考 98
第12章 加密和驗證 99
12.1 源碼、類圖與流程圖 99
12.2 概念 101
12.3 實踐 102
12.4 總結 104
12.5 參考 104
第13章 地址 105
13.1 源碼、類圖與流程圖 105
13.2 解讀 105
13.3 總結 115
13.4 參考 115
第14章 簽名和多重簽名 116
14.1 源碼 116
14.2 解讀 116
14.3 總結 125
第15章 交易 126
15.1 源碼與類圖 126
15.2 解讀 128
15.3 總結 141
15.4 參考 141
第16章 區塊鏈 142
16.1 源碼、類圖與流程圖 142
16.2 解讀 143
16.3 總結 162
16.4 參考 163
第17章 DPoS機製 164
第四部分 開發實踐
第18章 函數式編程入門經典 178
第19章 輕鬆從JavaScript文件生成UML類圖 199
第20章 命令行開發介紹 205
第21章 一張圖學會使用async組件進行異步流程控製 210
第22章 靜態網站開發全景掃描 216
第23章 開發通用的HTML組件 223
第24章 三張圖讓你全麵掌握加密解密技術 237
第25章 在時間和數據計算方麵應該注意的問題 244
第26章 測試 251
第五部分 附錄
附錄A 區塊鏈相關術語 260
附錄B 區塊鏈相關名詞 273
附錄C 關於區塊鏈俱樂部 280
後記 282
前言/序言
本書原名《Nodejs開發加密貨幣》,大部分已經通過網絡免費分享(網絡上仍有原文),正式齣版的時候改成瞭現在的名字,部分章節也做瞭調整。寫作本書的時候,“區塊鏈”這個稱呼並不流行,但討論的內容實際上就是區塊鏈技術。就在本書整理齣版的時候,國傢發布瞭《中國區塊鏈技術和應用發展白皮書》,整個社區也接納瞭“區塊鏈”這個稱謂,因此改為現在的名字。
“每一件與眾不同的絕世好東西,其實都是以無比寂寞的勤奮為前提的,要麼是血,要麼是汗,要麼是大把大把的曼妙青春好時光”。這是一位文筆非常好的朋友大學畢業後給我的留言。每每讀到這句話,總能被感動。後來,與那位朋友聊天,我說你真有纔,能把一句話說到人的內心深處,我若不是因為是男人,一定美美地哭一場。他一聽,十分感慨,告訴我他也是摘抄來的,還說隻有經曆過,纔能被感動。
工匠精神人人推崇,但不是人人都能做到,環境往往起到瞭很大的作用。還是我的那位朋友,剛畢業的時候,他去瞭某機關報社,最初當記者,待遇優厚,後來做編輯,自在逍遙。這中間,他還經常寫寫書,一年下來,僅僅版稅收入也非常可觀。但是,最近幾年好像不太好瞭,有一次聊天明顯感覺到他的消極,問他怎麼瞭,他說互聯網搶瞭他們的飯碗。我說,那你就搶迴來吧,化敵為友,藉助互聯網掙更多錢。他說試過瞭,沒那麼簡單,幾大文學網站,那麼多作者,真正掙到錢的沒有幾個。偶爾火起來瞭,大部分都被平颱分去瞭,有的甚至連版權都得不到。加之盜版猖獗,基本入不敷齣。
聽著他的話,我始終沉默,當初我也想不到齣路,時代變遷,誰都無法阻攔。但是,這兩年我有瞭方嚮,找到瞭可以徹底解決的辦法,這也是我堅持分享這本書的內在動力。軟件是給人用的,開發者首先想到的自然是身邊人,這是再正常不過的道理。這位朋友的問題就是億書誕生的初衷,沒有任何離奇的故事,都是滿滿的生活小節,這多少也有點工匠精神的情結吧。
當主動往版權保護和寫作分享發力的時候,資源就源源不斷地聚集到瞭我的麵前。億書,這個去中心化的版權保護和知識直銷係統(自齣版平颱)的操作過程大緻是這樣的:在經過一段時間的技術探索之後,2015年,我把關於打造電子書版權保護項目的想法在網上和盤托齣,吸引瞭很多小夥伴的關注,同時也證明瞭想法的可行性。接著,我用行動實踐電子書寫作和分享的全過程,並把億書這個項目的真實源碼作為分享的主要內容,邊分享邊開發,邊打造團隊,這中間提交瞭多個開源代碼(本書多個實例便是其中一部分)。讀者越來越多,團隊日益壯大,仍有很多小夥伴在瞭解、考察和熟悉中。接下來,待億書正式發布,就可以用億書(軟件)來繼續分享億書(源碼)瞭。這就像C/C++這樣的編程語言可以用來開發自己,開發者也是使用者,自身不斷循環完善。
億書,以價值傳播為目標,定位在協同創作和版權保護,從底層區塊鏈版權協議到頂層客戶端應用,完全自主開發,是國內少有的不依賴於比特幣、以太坊等國外第三方平颱的産品。新版産品提供瞭強大的擴展開發能力,基於億書可輕鬆開發很多類型的去中心化應用,比如數字資産管理、財務結算與審計、交易存證與監控、電子商務、視頻直播等。這仍然是從基礎需求起步,步步搭建積木的思路和過程,與我通過寫作本書體驗産品需求,然後發展億書的思路一樣。這是工程學的基礎,再厲害的天纔也無法逾越。
億書注定要成為價值傳播領導者,開啓數字齣版新時代。
這是本什麼樣的書?
億書是完全開放開源的項目,是一個完整的類比特幣的區塊鏈産品。本書基於該項目,完全以實用為目的,將開發實踐貫穿始終,內容涉及開發區塊鏈産品前端、後颱和桌麵應用的全過程。本書用開發的思維進行反復迭代,由淺入深,詳細介紹瞭區塊鏈技術相關理論知識、Node.js前後颱開發基礎知識、加密簽名技術、P2P網絡實現、共識算法等,能幫助初學者快速學習入門區塊鏈技術,深入掌握Node.js編程開發技術,幫助區塊鏈技術從業者、Web開發者更深刻地理解相關概念和技術實現。
想找到關於如何開發一款真正的區塊鏈産品(不隻是調用某款加密貨幣API)的圖書嗎?這可能是目前世界上第一本,也可能是唯一的一本。
想找到關於Node.js大型實踐項目的圖書嗎?這可能是世界上少有的一本,也可能找不到第二本。
想找到億書、Lisk等基於Crypti的分支項目的詳細開發文檔嗎?這一定是世界上唯一的一本。
想深刻瞭解區塊鏈的技術實現嗎?看看本書,對於區塊鏈、共識機製等各種概念的理解將會更加透徹。
想從事區塊鏈(無論是比特幣還是其他各類競爭幣)的開發嗎?Node.js一定是無法迴避的,這本書也必然無法錯過。
想瞭解比特幣的原理嗎?這本書不僅告訴你其原理是什麼,還會從技術的角度告訴你為什麼,無論你是做技術還是做管理,本書都值得參考。
本書麵嚮的讀者
開發人員。本書涉及前端、後颱的方方麵麵,無論是前端開發人員,還是後颱開發者都可以學習參考。
架構師。區塊鏈本身是分布式、雲計算的典範,本書詳細描述瞭一款區塊鏈産品的架構設計,他們可以通過本書學習掌握區塊鏈是如何基於P2P網絡構建復雜的自適應係統的。
高校學生、教師、科研人員等。本書內容在網絡上分享的過程中,已經有大學老師作為教參用在實際教學之中,本書從概念到代碼實現,理論與實踐結閤緊密,深入淺齣,適閤係統研究學習區塊鏈技術。
學習Node.js的讀者。本書介紹瞭Node.js入門知識,包含瞭Node.js的技術原理和使用技巧,是一個完整的Node.js使用案例,有一定JavaScript基礎的初中級讀者,通過本書可以更深入的學習提高使用Node.js編碼技能。
投資人,以及對比特幣等區塊鏈産品感興趣的普通用戶。本書力求語言樸實,書寫過程中盡量避免晦澀的技術術語,在具體的編碼之前,都要詳細介紹相關概念,因此投資人和普通讀者也可作為科普讀物,從技術層麵對加密貨幣等區塊鏈相關産品有更進一步的認識。
本書內容
本書力圖用最少的篇幅錶述更豐富的內容,共分為五個部分,具體結構如下。
第一部分:瞭解區塊鏈,共4章。詳細講述瞭區塊鏈産品——加密貨幣的相關概念,用獨特的技術視角,把加密貨幣的基本技術要素串聯起來,同時在文中自然引導讀者跳轉閱讀下麵各個部分,實現理論到實踐的過渡。
第二部分:Node.js入門指南,共4章。詳細介紹瞭Node.js入門知識,並通過一個具體項目完成對Node.js在區塊鏈技術領域的調查和描述,整個部分也是項目架構設計必備的調研和技術選型階段,是本書第一個完整的實踐範例。
第三部分:源碼解讀,共9章。從架構設計的角度,層層剖析區塊鏈的設計原理,深刻解讀相關概念和技術。從項目設計的角度謀篇,第9章詳細介紹瞭億書白皮書的核心內容,明確瞭項目的需求,教讀者如何著手研究區塊鏈産品;第10章從項目入口程序齣發,介紹瞭億書項目的整體結構;第11~17章分彆介紹瞭P2P網絡、加密解密、簽名和多重簽名、區塊鏈、共識機製等區塊鏈核心內容,並給齣瞭代碼實現。
第四部分:開發實踐,共9章。主要是對第二和第三部分的有益補充,把在這兩個部分齣現的技術難點抽取齣來,集中介紹。仍然以億書項目中涉及的實際項目為主,包含多個完整獨立的小項目。第18~19章主要介紹瞭函數式編程等編程方法論;第20章,介紹瞭命令行工具的開發(含開源實例);第21章總結瞭aysnc的用法,解決瞭Node.js迴調流程控製問題;第22~23章介紹瞭億書官方網站的開發,對市麵上的靜態網站進行瞭總結,通過兩個實例詳細介紹瞭客戶端的開發設計;第24章詳細介紹瞭密碼學技術;第25章介紹瞭時間戳、數據計算等更加細緻的優化內容;第26章介紹瞭測試技術。
第五部分:附錄。匯總瞭區塊鏈的相關概念、常見詞匯的中英文對照等內容。
本書的相關資源
本書分享的開源項目——億書,仍在持續開發中,因此,當您在閱讀本書源碼的時候,核心代碼庫已經做瞭比較大的修改。所以,我將本書分享的源碼鎖定在瞭一個固定的版本裏。有關億書的相關資源如下:
因水平所限,書中難免會有不足之處,為瞭方便大傢交流,也為瞭彌補可能齣現的不足,我在區塊鏈俱樂部論壇上與本書配套設置瞭一個勘誤版塊,也會定期迴答讀者的問題,歡迎大傢訪問,地址如下
實際上,億書和本書都是開源的産物。非常歡迎有誌於區塊鏈研發的小夥伴參與進來,共同進步。
緻謝
我是個極度不願意重復的人,所以纔會始終保持足夠的熱情來編寫軟件為自己服務。而寫文章恰恰需要反復推敲和修改,甚至推倒重來。自從2016年年初決定要撰寫和分享本書中的係列文章,並從中汲取區塊鏈的技術營養,我就做好瞭各種思想準備。為瞭防止退縮,我還在網絡上公開許下承諾。但讓我萬萬沒有想到的是,戰勝自己是如此艱巨。這段時間,我幾度放棄,又重新開始。
很慶幸的是,在這個過程中,有一幫小夥伴們始終陪伴、支持和鼓勵著我。
感謝科學技術文獻齣版社李沛副社長,他對知識傳播領域的獨到見解以及他推崇的“知識服務商”理念,讓我很受啓發。他受邀為本書作序,並給瞭我很多極為寶貴的意見和建議。“知識服務商”將會成為億書未來發展的重要理念。億書的新版本,從每一個細節都會體現這一思想,讓每一個使用億書的人從中受益,令知識的創造充滿動力。
感謝齣版社的編輯楊綉國老師,給瞭我極大的寬容和鼓勵,她極為認真地幫我梳理和策劃書的內容,協調各類資源。
感謝火幣網徐寶龍,我們在億書組織的區塊鏈茶座上相識,一見如故,成瞭好朋友。他專注區塊鏈行業,給我、給億書提供瞭很多寶貴的意見和幫助。他不僅聰明,還非常勤奮,居然在大年初一的晚上給我發來瞭他為本書撰寫的序言,讓我感動不已。
感謝CSDN技術社區的編輯們,這是一群充滿激情的活躍分子,在 @貓白 @紅月兩位編輯的帶領下,很快構建起多個開發技術知識庫,在社區引起瞭強烈反響。她們支持本書,還邀請我與她們一起構建瞭區塊鏈知識庫。
感謝巴比特論壇的幾個小夥伴。這些文章最先發布到巴比特論壇,巴比特的@長鋏、@miner、@等一輪殘月、@萌大大等,幾乎將這些文章篇篇都設為精華帖,跟蹤進展,給予極大的關注和支持。
感謝cnodejs.org社區。這些文章後來陸續在cnodejs.org上同步發布。因為共同的愛好,我與社區很多Node.js技術大咖(@i5ting @lc @Graper等)成瞭好友。他們對這些文章給予瞭充分的肯定和極大的支持,還主動幫我推薦和宣傳,讓我深受鼓舞。
感謝億書社區的小夥伴們,比如 @Tailor @火鼎 @珍惜 @一 @Mojie @cyio @zbinlin 等,他們不僅支持我,有的還給我提供瞭內容。當然,還有很多其他小夥伴,這裏就不一一列舉瞭。
最後,感謝我的愛人和我可愛的兒子,謝謝你們的陪伴。
Node.js區塊鏈開發 下載 mobi epub pdf txt 電子書