本書分為基礎(chǔ)篇、安卓篇和蘋果篇;A(chǔ)部分講解開發(fā)以太坊錢包App所涉及的技術(shù)理論基礎(chǔ)知識(shí);區(qū)塊鏈概念及其關(guān)鍵技術(shù),包括分布式數(shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)傳輸、共識(shí)機(jī)制、密碼學(xué)、分布式賬本等;數(shù)字錢包理論原理與技術(shù)發(fā)展;DApp與數(shù)字錢包的關(guān)系。
安卓篇講解Android Studio開發(fā)工具,Java原生App開發(fā)技術(shù),常用Java開源庫OkHttp、Retrofit、RxJava和Dagger,Java密碼學(xué)框架JCA/JCE的使用方法,以太坊Java開源庫Web3j的使用,以及對(duì)Trust Wallet錢包Android版App項(xiàng)目架構(gòu)及核心功能代碼進(jìn)行全面分析等。
蘋果篇講解Xcode開發(fā)工具,Swift原生App開發(fā)技術(shù),常用iOS開源庫BigInt、APIKit、Moya、R.swift、CryptoSwift和JSONRPCKit,iOS加密庫Common Crypto和Security庫的使用方法,基于JSONRPC方式的Web3開發(fā),以及對(duì)Trust Wallet錢包iOS版App項(xiàng)目架構(gòu)及核心功能代碼進(jìn)行全面分析等。
本書適合所有軟件開發(fā)者及技術(shù)管理人員閱讀,特別是對(duì)區(qū)塊鏈或數(shù)字貨幣技術(shù)感興趣、準(zhǔn)備開發(fā)數(shù)字錢包的技術(shù)人員;尤其適合準(zhǔn)備開展以太坊錢包開發(fā)工作的技術(shù)人員閱讀。
你是一個(gè)投資者,聽說數(shù)字貨幣不錯(cuò),比特幣從幾分錢漲到幾萬塊,以太幣從18元漲到9 000多元;聽說EOS更牛,但卻不知道如何下手,眼看著別人隨手投個(gè)幾萬元,轉(zhuǎn)眼變成幾千萬元,心里很著急,卻不知道該怎么辦……數(shù)字貨幣到底是什么,它到底放在哪里?
你是一個(gè)公司老板,市場(chǎng)上大家都用起了區(qū)塊鏈的名字,大家都在鏈改,或者正在上鏈。聽說有用主鏈的、有用側(cè)鏈的、有用代幣的、還有用超級(jí)賬本的甚至還有用空氣幣的,到底哪家好,琢磨了很長(zhǎng)時(shí)間,還是不知道如何選擇。
你是一個(gè)公司的技術(shù)總監(jiān)或者高層,本想守著各種傳統(tǒng)開發(fā)技術(shù),如Java、Python、JavaScript、Nodejs、前端后端、大數(shù)據(jù)、云計(jì)算或人工智能等,拿著高薪過幾年安穩(wěn)生活。突然有一天老板發(fā)微信給你,說要搞鏈改,說超級(jí)賬本好像不錯(cuò),是個(gè)大趨勢(shì),還要能夠發(fā)幣,必須覆蓋智慧城市、物流溯源,要求趕緊給出方案,盡快開發(fā)出來,你頓時(shí)感覺剛剛安穩(wěn)幾天的好日子貌似又要結(jié)束了。
你是一個(gè)程序員,聽說區(qū)塊鏈堪比蒸汽機(jī)革命,好比當(dāng)時(shí)發(fā)明電的影響力,又勝過互聯(lián)網(wǎng)的產(chǎn)生,甚至要顛覆現(xiàn)有的互聯(lián)網(wǎng);區(qū)塊鏈工資高福利棒,想學(xué)習(xí)區(qū)塊鏈技術(shù)。于是你逛遍各技術(shù)論壇和微信群,一會(huì)兒區(qū)塊鏈1.0,一會(huì)兒區(qū)塊鏈2.0,一會(huì)兒認(rèn)為數(shù)字貨幣存在于電腦上別人偷不走,一會(huì)兒又認(rèn)為數(shù)字貨幣存在共享賬本中大家可以一起修改,最后還是沒搞清楚什么叫數(shù)字錢包。
事實(shí)上,目前對(duì)于一個(gè)對(duì)數(shù)字貨幣或區(qū)塊鏈一無所知的人,想要進(jìn)入所謂的“幣圈”或者“鏈圈”并非易事。就算是從事計(jì)算機(jī)網(wǎng)絡(luò)軟件技術(shù)相關(guān)的工作人員,也很難掌握相應(yīng)的工具概念等知識(shí),更別說非技術(shù)人員了。
這主要是因?yàn)閿?shù)字貨幣及區(qū)塊鏈技術(shù)所使用的底層技術(shù),包括分布式存儲(chǔ)、P2P通信、共識(shí)機(jī)制、密碼學(xué),甚至是智能合約虛擬機(jī),都是很復(fù)雜的軟件工程技術(shù)。
對(duì)于很多已經(jīng)進(jìn)入該圈的人,他本身對(duì)這個(gè)圈子的相關(guān)技術(shù)工具或概念也只是一知半解,想依靠熟人帶著進(jìn)入這個(gè)圈子,也不是很靠譜。所以也有圈內(nèi)人士提出,要想進(jìn)入“幣圈”或者“鏈圈”,就多參加大會(huì),多加微信群,多參與活動(dòng)。這樣可以通過多渠道對(duì)相應(yīng)的概念及工具進(jìn)行相互驗(yàn)證,就算錯(cuò)了,也是大家一起錯(cuò)。
最開始接觸數(shù)字貨幣的人,可能會(huì)先從私募開始,大家說這個(gè)鏈很好,那個(gè)幣很好,漲個(gè)100倍都不是事。所謂的資金盤,往往買了什么幣都不知道,被騙了才知道空氣幣和正宗的數(shù)字貨幣是不一樣的。
雖然聽說過交易所,但是據(jù)說需要翻墻,連App都不知道到哪里去下載,就是交易所也要經(jīng)過層層關(guān)卡才能夠接觸到;最后好不容易從交易所購買了一些數(shù)字貨幣,例如比特幣、以太幣或EOS柚子等,看著數(shù)字貨幣大幅度地漲跌,行情好的話賬面上能賺一點(diǎn)差價(jià),行情不好的話賬面是虧損狀態(tài)。如果投入太多,承擔(dān)不了風(fēng)險(xiǎn),還需要考慮賣出數(shù)字貨幣;如果一不小心數(shù)字貨幣所在的交易所跑路了,網(wǎng)站也停了,App也用不了了,投入的錢就會(huì)化為烏有。
經(jīng)過多次實(shí)戰(zhàn)的慘痛教訓(xùn),終于知道了數(shù)字錢包,還知道了如何分辨錢包地址,可以把交易所的數(shù)字貨幣提出來存到錢包里去,防止交易所跑路;于是下載了一個(gè)數(shù)字錢包,把自己在交易所買的數(shù)字貨幣提現(xiàn)到自己的數(shù)字錢包里。但是,有一天手機(jī)壞了,于是在新買的手機(jī)重新安裝數(shù)字錢包,這時(shí)可怕的事情發(fā)生了,數(shù)字錢包的數(shù)字貨幣不見了!啊,原來沒有進(jìn)行錢包備份,天啊,錢包是需要備份的!
看到這里,您是否覺得需要一本專業(yè)而且實(shí)用的技術(shù)參考書,來幫您理清眾多的問題,并找到正確的答案和方向?
通過閱讀本書,大家可以了解以太坊App錢包相關(guān)的技術(shù)問題。包括數(shù)字錢包是什么,區(qū)塊鏈為什么必須要用到數(shù)字錢包?區(qū)塊鏈?zhǔn)鞘裁,它是怎么產(chǎn)生的,解決了什么問題,它的技術(shù)原理是什么?為什么有了比特幣,還會(huì)出現(xiàn)以太幣,以太幣解決了什么問題?以太坊的數(shù)字錢包有什么特別;DApp又是什么,數(shù)字錢包是一個(gè)DApp嗎?DApp必須要用到數(shù)字錢包嗎?
最后本書將直接通過實(shí)戰(zhàn)開發(fā)Android和iOS錢包App,進(jìn)一步讓大家對(duì)數(shù)字錢包增進(jìn)了解,從技術(shù)層面有更深的理解。
本書希望能說明兩個(gè)問題:
對(duì)于最終用戶來說,數(shù)字錢包在區(qū)塊鏈中其實(shí)是最重要的一個(gè)工具;
對(duì)于技術(shù)開發(fā)人員來說,數(shù)字錢包是貫穿所有開發(fā)過程的一個(gè)極其重要的技術(shù)功能
謝躍書:北京大學(xué)軟件工程碩士。資深Java開發(fā)專家,有豐富的企業(yè)級(jí)應(yīng)用、APP及Web項(xiàng)目的開發(fā)經(jīng)驗(yàn);在爬蟲、加密及數(shù)字證書技術(shù)方面有多篇發(fā)明專利;擁有十余年供應(yīng)鏈管理、金融、物聯(lián)網(wǎng)等行業(yè)大型系統(tǒng)軟件開發(fā)經(jīng)驗(yàn);專注區(qū)塊鏈錢包及應(yīng)用開發(fā)。
鄭敦莊:北京交通大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè),全棧開發(fā)人員,精通多種語言,對(duì)量化交易、人工智能深度學(xué)習(xí)各類算法有深入研究。
基礎(chǔ)篇
第1章區(qū)塊鏈2
1.1區(qū)塊鏈簡(jiǎn)介2
1.2比特幣的背景與起源2
1.3比特幣的誕生與發(fā)展2
1.4區(qū)塊鏈的發(fā)展3
1.5區(qū)塊鏈定義4
1.6分布式數(shù)據(jù)存儲(chǔ)4
1.7點(diǎn)對(duì)點(diǎn)傳輸5
1.8密碼學(xué)6
1.9共識(shí)機(jī)制15
1.10分布式賬本17
第2章以太坊24
2.1簡(jiǎn)介24
2.2誕生歷史26
2.3發(fā)展計(jì)劃27
2.4客戶端29
2.5Web3 API30
2.6賬戶45
2.7交易48
2.8區(qū)塊51
2.9智能合約53
2.10代幣55
第3章數(shù)字錢包57
3.1錢包簡(jiǎn)介57
3.2錢包分類57
3.3輕錢包的興起59
3.4錢包基本原理60
3.5錢包技術(shù)發(fā)展61
3.6以太坊錢包App66
第4章DApp72
4.1DApp簡(jiǎn)介72
4.2DApp輕錢包73
4.3DApp發(fā)展現(xiàn)況74
4.4DApp生態(tài)系統(tǒng)76
4.5DApp開發(fā)技術(shù)78
4.6DApp功能結(jié)構(gòu)82
4.7DApp與App82
安卓篇
第5章Android Studio86
5.1Android簡(jiǎn)介86
5.2Android Studio89
5.3Android SDK92
5.4第一個(gè)App94
5.5項(xiàng)目結(jié)構(gòu)97
5.6打包與發(fā)布101
第6章Android開發(fā)技術(shù)105
6.1開發(fā)技術(shù)簡(jiǎn)介105
6.2應(yīng)用架構(gòu)106
6.3Java開發(fā)語言108
6.4其他開發(fā)語言119
第7章Android開源庫121
7.1OkHttp121
7.2Retrofit123
7.3RxJava127
7.4Dagger133
第8章JCA/JCE開發(fā)135
8.1技術(shù)簡(jiǎn)介135
8.2對(duì)稱加密138
8.3MD消息摘要140
8.4MAC消息認(rèn)證141
8.5非對(duì)稱加密143
8.6數(shù)字簽名147
8.7密鑰生成153
第9章Web3j開發(fā)156
9.1Web3j簡(jiǎn)介156
9.2Android適用性157
9.3賬戶160
9.4交易163
9.5智能合約170
9.6代幣174
9.7區(qū)塊180
第10章Android錢包項(xiàng)目184
10.1開源軟件介紹184
10.2錢包開源項(xiàng)目185
10.3項(xiàng)目概況186
10.4功能架構(gòu)191
10.5導(dǎo)入錢包199
10.6導(dǎo)出錢包209
10.7創(chuàng)建錢包211
10.8發(fā)起交易215
10.9交易記錄222
10.10賬戶查詢227
10.11DApp瀏覽器230
蘋果篇
第11章Xcode238
11.1IDE簡(jiǎn)介238
11.2版本特性238
11.3安裝與配置240
11.4開發(fā)介紹242
11.5創(chuàng)建iOS項(xiàng)目247
11.6打包與上架249
第12章iOS開發(fā)252
12.1Swift簡(jiǎn)介252
12.2開發(fā)文檔254
12.3基本數(shù)據(jù)類型258
12.4特殊數(shù)據(jù)類型259
12.5其他開發(fā)語言261
第13章iOS開源庫264
13.1BigInt264
13.2APIKit268
13.3Moya271
13.4R.swift274
13.5CryptoSwift277
13.6JSONRPCKit283
第14章iOS加密庫290
14.1加密庫介紹290
14.2接口簡(jiǎn)介290
14.3對(duì)稱加密293
14.4MD消息摘要300
14.5MAC消息認(rèn)證301
14.6非對(duì)稱加密303
14.7數(shù)字簽名308
14.8密鑰生成309
第15章Web3 iOS312
15.1Web3簡(jiǎn)介312
15.2Web3接口312
15.3賬戶320
15.4交易322
15.5智能合約325
15.6代幣327
15.7區(qū)塊331
第16章iOS錢包項(xiàng)目334
16.1項(xiàng)目概況334
16.2功能架構(gòu)340
16.3創(chuàng)建錢包360
16.4導(dǎo)入錢包364
16.5導(dǎo)出錢包368
16.6發(fā)起交易371
16.7交易記錄374
16.8賬戶查詢375
16.9DApp瀏覽器381
第17章附錄384
17.1Android國內(nèi)各大應(yīng)用商店384
17.2ERC20標(biāo)準(zhǔn)智能合約388
參考文獻(xiàn)396