-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

以太坊智能合約開發實戰

( 簡體 字)
作者:唐盛彬類別:1. -> 程式設計 -> 區塊鏈
譯者:
出版社:機械工業出版社以太坊智能合約開發實戰 3dWoo書號: 50987
詢問書籍請說出此書號!

缺書
NT售價: 595

出版日:4/17/2019
頁數:466
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111623717
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

本書從區塊鏈的概念、原理、核心技術和應用四個方面,系統地介紹了以太坊區塊鏈開發的相關知識。其中,重點介紹了以太坊的相關概念和原理、以太坊客戶端Geth、以太坊常用智能合約開發工具、Solidity語言和智能合約開發等內容,并介紹了眾籌合約和代幣合約兩個項目實戰案例,可以讓讀者對智能合約開發的整體流程有一個全面的了解。另外,書中結合示例對web3.js的相關知識也做了詳細介紹,以幫助讀者更好地理解和利用以太坊的相關數據。
  本書共17章,分為4篇,涵蓋的主要內容有區塊鏈的概念、原理與底層技術;以太坊的相關概念與原理;以太坊相關協議;以太坊客戶端Geth;以太坊智能合約的其他常用工具與客戶端;Solidity語言的基本概念與數據類型;使用Solidity進行以太坊智能合約開發;通過web3.js與以太坊區塊鏈數據進行交互;眾籌智能合約與代幣智能合約項目實戰案例。
  本書內容豐富,講解通俗易懂,案例典型,實用性強,特別適合區塊鏈技術愛好者和智能合約開發的相關從業人員閱讀,也適合區塊鏈底層研究人員閱讀。另外,本書還適合區塊鏈培訓機構作為相關課程的培訓教材。
目錄:

第1篇 基礎理論與原理
第1章 與區塊鏈的第一次親密接觸2
1.1 什么是區塊鏈2
1.1.1 區塊鏈簡介2
1.1.2 區塊鏈的鏈式結構3
1.1.3 區塊鏈上的區塊常見數據4
1.2 工作量證明機制(PoW)6
1.2.1 區塊鏈遭遇的問題6
1.2.2 PoW模型8
1.2.3 PoW為什么能防止篡改9
1.3 權益證明機制(PoS)11
1.3.1 什么是PoS12
1.3.2 PoS的優勢與劣勢12
1.4 委托權益證明(DPoS)12
1.5 權威證明(PoA)13
1.6 區塊鏈的應用13
1.7 本章小結13
第2章 去中心化應用——DApp15
2.1 DApp簡介15
2.1.1 什么是DApp15
2.1.2 DApp網絡組建過程16
2.1.3 DApp的優點16
2.1.4 DApp存在的問題16
2.2 中心化與去中心化17
2.2.1 身份驗證17
2.2.2 通信17
2.2.3 數據交互17
2.2.4 系統維護18
2.3 DApp網絡與通信18
2.3.1 P2P網絡與WWW19
2.3.2 P2P網絡拓撲結構類型20
2.3.3 小結21
2.4 DApp貨幣與中心化數據交互22
2.4.1 DApp貨幣22
2.4.2 中心化應用獲取去中心化數據22
2.4.3 去中心化應用獲取中心化數據22
2.5 常見的DApp23
2.5.1 比特幣23
2.5.2 以太坊23
2.5.3 IPFS存儲系統23
第3章 比特幣那些事25
3.1 比特幣簡介25
3.1.1 比特幣公鑰與私鑰25
3.1.2 數字簽名26
3.2 橢圓曲線算法26
3.2.1 群26
3.2.2 橢圓曲線算法定義28
3.2.3 橢圓曲線幾何運算29
3.2.4 橢圓曲線算法的代碼實現30
3.2.5 橢圓曲線加密與簽名原理37
3.3 比特幣私鑰、公鑰與地址39
3.3.1 從私鑰到地址39
3.3.2 公鑰壓縮40
3.3.3 私鑰格式41
3.3.4 私鑰與安全41
3.4 比特幣交易44
3.4.1 交易簡介44
3.4.2 交易輸出44
3.4.3 交易輸入44
3.4.4 交易費45
3.4.5 付款至公鑰哈希(P2PKH)45
3.4.6 多重簽名與P2SH46
3.5 比特幣錢包46
3.5.1 錢包簡介46
3.5.2 生成助記詞47
3.5.3 從助記詞生成種子48
3.5.4 從種子生成HD錢包48
3.5.5 HD錢包密鑰路徑50
3.6 比特幣相關資源51
第4章 以太坊52
4.1 以太坊簡介52
4.1.1 什么是以太坊52
4.1.2 以太坊虛擬機(EVM)53
4.1.3 以太坊智能合約與高級語言53
4.1.4 以太幣單位54
4.1.5 以太坊發行版本與提案54
4.2 以太坊賬戶55
4.2.1 外部賬戶55
4.2.2 合約賬戶56
4.2.3 外部賬戶與合約賬戶的異同56
4.3 以太坊交易57
4.3.1 gas、gasPrice與gasLimit57
4.3.2 gasUsed與交易花費58
4.3.3 什么是以太坊交易與消息58
4.4 以太坊網絡59
4.4.1 以太坊網絡簡介59
4.4.2 以太坊與Kademlia59
4.4.3 以太坊客戶端61
4.5 挖礦62
4.5.1 什么是挖礦62
4.5.2 挖礦獎勵62
4.5.3 以太坊區塊63
4.6 GHOST協議64
4.6.1 區塊時間64
4.6.2 區塊分叉65
4.6.3 普通分叉帶來的問題66
4.6.4 GHOST協議的具體內容67
4.7 Ethash算法之DAG68
4.7.1 什么是DAG68
4.7.2 DAG生成過程69
4.7.3 為什么要使用DAG69
4.8 Ethash算法70
4.8.1 Ethash算法簡介70
4.8.2 Ethash算法流程70
4.9 本章小結71
第2篇 開發工具
第5章 智能合約開發常用工具74
5.1 Git簡介74
5.1.1 Git安裝74
5.1.2 Git常用命令75
5.1.3 Git資源推薦76
5.2 Node.js簡介76
5.2.1 什么是Node.js76
5.2.2 Node.js安裝77
5.3 NPM簡介78
5.3.1 npm config命令78
5.3.2 NPM與語義化版本80
5.3.3 npm install命令82
5.3.4 NPM鏡像83
5.3.5 NPM的其他常用命令84
5.4 webpack簡介85
5.4.1 認識webpack85
5.4.2 webpack首秀85
5.4.3 webpack 與webpack-dev-server87
5.4.4 webpack常用功能與配置90
5.4.5 webpack總結92
5.5 Postman簡介92
5.5.1 認識Postman93
5.5.2 Postman的簡單用法94
5.5.3 Postman腳本95
5.6 LevelDB簡介96
5.6.1 認識LevelDB96
5.6.2 LevelDB文件97
5.6.3 SST結構與數據查找99
第6章 以太坊私鏈神器——Ganache102
6.1 Ganache簡介102
6.1.1 什么是Ganache102
6.1.2 ganache-cli命令安裝103
6.1.3 Ganache圖形界面104
6.2 Ganache常見命令參數106
6.2.1 挖礦時間106
6.2.2 主機端口與網絡106
6.2.3 gas相關參數106
6.2.4 其他參數106
6.3 Ganache賬戶107
6.3.1 能多給我點錢嗎107
6.3.2 能多給我幾個賬戶嗎108
6.3.3 助記詞相關參數108
6.3.4 指定賬戶108
6.3.5 鎖定賬戶與解鎖109
6.4 Ganache與JavaScript109
6.4.1 在工程中引用Ganache的Provider109
6.4.2 在工程中啟動Ganache的Server110
6.4.3 配置工程中依賴的Ganache111
6.5 Ganache交易相關RPC方法112
6.5.1 eth_sendTransaction方法113
6.5.2 eth_getTransactionCount方法115
6.5.3 eth_getTransactionReceipt方法116
6.5.4 eth_getTransactionByHash方法116
6.5.5 交易相關的其他方法117
6.6 Ganache賬戶相關RPC方法117
6.6.1 eth_accounts方法118
6.6.2 eth_getBalance方法118
6.6.3 eth_coinbase方法119
6.7 Ganache區塊相關RPC方法119
6.7.1 eth_getBlockByHash方法119
6.7.2 eth_getBlockByNumber方法122
6.7.3 其他相關方法122
6.8 Ganache日志相關RPC方法123
6.8.1 eth_newFilter方法123
6.8.2 eth_getFilterLogs方法124
6.8.3 eth_getLogs方法125
6.8.4 其他關聯方法126
6.9 Ganache的其他RPC方法127
6.9.1 web3_clientVersion方法127
6.9.2 net_version方法127
6.9.3 eth_getCode方法128
6.9.4 eth_sign方法129
第7章 以太坊官方客戶端——Geth130
7.1 Geth簡介130
7.1.1 Geth是什么130
7.1.2 Geth安裝130
7.1.3 Geth相關目錄132
7.1.4 Geth相關工具134
7.2 Geth子命令134
7.2.1 Geth子命令概述135
7.2.2 Geth子命令之account136
7.2.3 Geth子命令之console與attach137
7.2.4 Geth子命令之copydb與removedb137
7.3 Geth啟動參數138
7.3.1 Geth數據同步模式138
7.3.2 Geth網絡相關參數138
7.3.3 Geth以太坊相關參數139
7.3.4 Geth RPC相關參數140
7.3.5 Geth挖礦相關參數141
7.3.6 Geth ethash算法參數142
7.3.7 Geth交易池配置142
7.3.8 Geth日志參數145
7.3.9 Geth的其他參數146
7.4 Geth啟動實例146
7.4.1 Geth啟動單個節點146
7.4.2 Geth啟動多節點組網148
7.5 Geth控制臺與管理接口149
7.5.1 admin模塊149
7.5.2 debug模塊150
7.5.3 miner模塊151
7.5.4 personal模塊152
7.5.5 txpool模塊153
7.6 keystore文件153
7.6.1 keystore文件簡介153
7.6.2 從密鑰到密鑰文件154
7.6.3 從密鑰到密鑰文件流程驗證155
第8章 以太坊錢包與瀏覽器158
8.1 MetaMask插件158
8.1.1 MetaMask簡介158
8.1.2 MetaMask安裝159
8.1.3 第一次使用MetaMask160
8.1.4 MetaMask的連接配置161
8.1.5 MetaMask的其他配置162
8.1.6 MetaMask賬戶管理163
8.1.7 MetaMask交易164
8.1.8 小結165
8.2 Ethereum Wallet錢包166
8.2.1 Ethereum Wallet簡介166
8.2.2 安裝Ethereum Wallet與Mist166
8.2.3 使用Ethereum Wallet169
8.3 Mist與Ethereum Wallet170
8.3.1 Ethereum Wallet與Mist的區別171
8.3.2 Mist的配置與使用171
8.3.3 小結172
8.4 MyEtherWallet網頁錢包172
8.4.1 MyEtherWallet簡介173
8.4.2 MyEtherWallet合約交互174
8.4.3 MyEtherWallet離線交易175
8.4.4 MyEtherWallet的其他功能177
第3篇 Solidity與智能合約開發
第9章 Solidity初遇180
9.1 Solidity簡介180
9.1.1 什么是Solidity180
9.1.2 智能合約示例181
9.1.3 Solidity編譯版本182
9.2 Solidity編輯器182
9.2.1 Sublime編輯器182
9.2.2 Atom編輯器185
9.2.3 IDEA編輯器187
9.3 Remix編輯器188
9.3.1 Remix簡介188
9.3.2 Remix文件管理189
9.3.3 Remix編輯面板與控制臺190
9.3.4 Remix編譯與運行面板191
9.3.5 Remix基本配置面板193
9.3.6 Remix分析配置面板194
9.4 Solidity常見概念196
9.4.1 狀態變量196
9.4.2 局部變量196
9.4.3 Solidity函數197
9.4.4 返回多值197
9.4.5 構造函數198
9.4.6 異常200
9.4.7 Solidity注釋與文檔201
9.5 Solidity運算符203
9.5.1 Solidity運算符簡介203
9.5.2 Solidity運算符注意事項204
9.6 Solidity控制結構205
9.6.1 控制結構簡介205
9.6.2 判斷語句205
9.6.3 for循環206
9.6.4 while與do…while循環206
9.6.5 continue與break207
9.6.6 三目運算符208
9.7 可見性修飾符209
9.7.1 public修飾符209
9.7.2 internal修飾符210
9.7.3 private修飾符213
9.7.4 external修飾符214
9.8 函數其他修飾符216
9.8.1 constant修飾符216
9.8.2 view修飾符217
9.8.3 pure修飾符217
第10章 Solidity數據類型219
10.1 數據類型簡介219
10.1.1 值類型219
10.1.2 引用類型220
10.1.3 小結221
10.2 Booleans類型221
10.2.1 Booleans類型簡介221
10.2.2 Booleans類型支持的運算符221
10.3 Integers類型223
10.3.1 Integers類型簡介223
10.3.2 Integers類型支持的運算符224
10.3.3 Integers整除問題225
10.4 定點數類型226
10.4.1 定點數類型簡介226
10.4.2 定點數類型支持的運算符227
10.5 字面量227
10.5.1 字符串字面量227
10.5.2 十六進制字面量229
10.5.3 有理數字面量230
10.6 Enum類型231
10.6.1 枚舉類型簡介231
10.6.2 枚舉類型實例231
10.7 mapping類型232
10.7.1 mapping類型簡介232
10.7.2 mapping類型實例232
10.8 struct類型233
第11章 Solidity數據類型進階235
11.1 Solidity固定大小字節數組235
11.1.1 固定大小字節數組類型235
11.1.2 固定大小字節數組支持的運算符236
11.1.3 固定大小字節數組的成員236
11.1.4 固定大小字節數組與字符串237
11.1.5 固定大小字節數組之間的轉換240
11.1.6 小結241
11.2 Solidity動態大小字節數組242
11.2.1 動態大小字節數組簡介242
11.2.2 創建動態大小字節數組242
11.2.3 動態大小字節數組成員243
11.2.4 字節數組間的轉換245
11.2.5 小結247
11.3 Solidity數組247
11.3.1 固定長度數組248
11.3.2 動態長度數組249
11.3.3 二維數組250
11.3.4 小結251
11.4 以太坊地址類型251
11.4.1 地址簡介252
11.4.2 transfer、send與balance254
11.4.3 call、callcode與delegatecall255
11.5 函數類型257
11.5.1 函數類型簡介258
11.5.2 函數簽名258
11.5.3 函數類型實例260
11.6 數據類型轉換262
11.6.1 隱式轉換262
11.6.2 顯式轉換263
11.6.3 var關鍵字264
11.7 delete運算符265
11.7.1 delete與常見類型265
11.7.2 delete與數組266
11.7.3 delete與mapping267
11.7.4 delete與struct267
11.8 本章小結268
第12章 Solidity開發智能合約270
12.1 智能合約簡介270
12.1.1 智能合約的概念270
12.1.2 EVM結構與數據271
12.1.3 智能合約執行271
12.2 事件與日志簡介272
12.2.1 事件簡介272
12.2.2 事件主題272
12.2.3 事件與日志274
12.3 Solidity中的單位后綴276
12.3.1 以太幣單位276
12.3.2 時間單位277
12.4 區塊與交易屬性279
12.4.1 區塊的相關屬性279
12.4.2 消息的相關屬性281
12.4.3 交易的相關屬性282
12.5 錯誤處理函數283
12.5.1 assert函數283
12.5.2 require函數283
12.5.3 revert函數284
12.6 數學與Hash函數285
12.6.1 數學運算函數285
12.6.2 Hash函數285
12.6.3 ecrecover函數286
12.7 ABI編碼與編碼函數287
12.7.1 ABI編碼簡介287
12.7.2 ABI編碼數據類型289
12.7.3 常見數據類型ABI編碼規則290
12.7.4 復雜類型ABI編碼規則292
12.7.5 ABI編碼實例295
12.8 特殊類型函數296
12.8.1 回退函數296
12.8.2 析構函數297
12.8.3 函數重載298
12.8.4 使用new創建合約函數調用299
第13章 Solidity開發智能合約進階303
13.1 Solidity數據位置303
13.1.1 什么是數據位置303
13.1.2 memory簡介304
13.1.3 storage簡介304
13.1.4 calldata簡介307
13.1.5 小結308
13.2 數據位置與賦值308
13.2.1 狀態變量賦值給局部storage變量308
13.2.2 狀態變量賦值給memory局部變量310
13.2.3 局部memory變量賦值給狀態變量310
13.2.4 狀態變量賦值狀態變量311
13.2.5 局部memory變量賦值給局部memory變量312
13.2.6 局部storage變量賦值給局部storage變量313
13.2.7 局部storage變量賦值給局部memory變量314
13.2.8 局部storage變量賦值給狀態變量315
13.2.9 小結316
13.3 函數修改器317
13.3.1 函數修改器簡單實例317
13.3.2 函數修改器復雜實例319
13.3.3 小結321
13.4 合約繼承324
13.4.1 繼承簡介324
13.4.2 super關鍵詞327
13.4.3 抽象合約328
13.4.4 接口合約328
13.5 Solidity庫329
13.5.1 Solidity庫簡介329
13.5.2 Solidity庫應用實例329
13.5.3 Solidity導入源文件330
13.5.4 using for語句331
13.6 Solidity編譯333
13.6.1 solc簡介333
13.6.2 solc編譯合約336
13.6.3 solc導入與庫338
13.6.4 solc.js簡介340
13.6.5 使用solc.js在項目中編譯單個合約340
13.6.6 使用solc.js在項目中編譯多個合約342
13.7 Solidity編碼風格344
13.7.1 命名風格344
13.7.2 控制結構344
13.7.3 函數相關風格345
13.7.4 其他部分346
第14章 通過web3.js與以太坊客戶端進行交互347
14.1 web3.js簡介347
14.1.1 web3.js概念347
14.1.2 web3.js原理348
14.1.3 web3.js模塊348
14.2 web3.js與以太坊節點348
14.2.1 HTTP方式348
14.2.2 IPC方式349
14.2.3 WebSocket方式350
14.3 web3.js工具的相關方法350
14.3.1 以太幣單位轉換方法351
14.3.2 十六進制、數字與字符串轉換351
14.3.3 填充字符與getStorageAt352
14.4 web3.js賬戶的相關方法354
14.4.1 獲取賬戶與賬戶余額354
14.4.2 創建賬戶355
14.4.3 解鎖賬戶356
14.4.4 賬戶的其他相關方法356
14.5 web3.js的ABI編碼方法357
14.5.1 函數簽名與事件簽名357
14.5.2 函數單參數編碼與解碼359
14.5.3 函數多參數編碼與解碼360
14.5.4 編碼函數調用360
14.5.5 解碼日志361
14.6 web3.js合約的相關方法362
14.6.1 創建與克隆合約362
14.6.2 合約部署deploy363
14.6.3 send函數與call函數369
14.6.4 estimateGas函數與encodeABI函數370
14.6.5 合約方法的調用370
14.6.6 合約事件的處理375
14.7 web3.js交易的相關方法380
14.7.1 簽名簡介380
14.7.2 簽名與交易381
14.7.3 發送交易384
14.7.4 簽名交易與發送簽名交易386
14.7.5 獲取交易的相關數據387
14.8 web3.js和IBAN的相關接口388
14.8.1 IBAN簡介389
14.8.2 BBAN、IBAN與地址390
14.8.3 IBAN的其他方法390
14.9 web3.js的其他方法391
14.9.1 訂閱事件391
14.9.2 網絡及ENS的相關方法392
14.9.3 與Swarm和Whisper交互的方法392
14.10 與Ethereum相關的JavaScript庫393
14.10.1 BigNumber.js庫393
14.10.2 ethjs-abi庫395
14.10.3 其他Ethereum庫399
第4篇 項目案例實戰
第15章 工程化項目開發利器——Truffle402
15.1 Truffle簡介402
15.1.1 Truffle的主要功能402
15.1.2 Truffle的安裝及其相關命令403
15.2 Truffle創建項目404
15.2.1 init命令405
15.2.2 unbox命令406
15.3 通過Truffle編譯項目408
15.3.1 前置條件與編譯408
15.3.2 Truffle編譯輸出409
15.3.3 Truffle編譯依賴410
15.4 Truffle配置文件411
15.4.1 網絡配置411
15.4.2 輸出目錄配置412
15.4.3 測試配置413
15.4.4 編譯配置413
15.4.5 包管理相關配置414
15.5 Truffle單元測試與部署415
15.5.1 使用JavaScript測試415
15.5.2 JavaScript測試交易417
15.5.3 使用Solidity測試419
15.5.4 合約部署419
15.6 Truffle的其他命令420
15.6.1 create命令420
15.6.2 包管理相關命令421
15.6.3 其他命令421
第16章 項目流程與眾籌實戰案例423
16.1 合約部分423
16.1.1 項目簡介423
16.1.2 初始化與合約目錄424
16.1.3 部署與測試腳本目錄424
16.2 眾籌合約425
16.2.1 Owned合約425
16.2.2 SafeMath合約426
16.2.3 Crowd合約427
16.3 合約的部署與使用429
16.3.1 本地部署與測試環境搭建429
16.3.2 本地部署與測試網絡配置429
16.3.3 本地部署430
16.3.4 本地測試430
16.3.5 Ropsten網絡測試部署431
16.4 項目的Web部分432
16.4.1 初始化Web項目432
16.4.2 webpack配置432
16.4.3 package.json配置433
16.4.4 運行Web項目434
第17章 以太坊代幣標準與ERC20代幣案例437
17.1 代幣簡介437
17.1.1 ERC20簡介437
17.1.2 ERC223簡介438
17.1.3 ERC721簡介438
17.2 ERC20標準接口簡介438
17.2.1 基本信息439
17.2.2 總額與余額439
17.2.3 轉賬與授權439
17.2.4 事件440
17.3 ERC20代幣實例440
17.3.1 查看以太坊上已有的Token440
17.3.2 創建Token441
17.3.3 查看和轉移Token443
17.4 擴展ERC20標準代幣448
17.4.1 銷毀代幣448
17.4.2 添加Token449
17.4.3 凍結與解凍賬戶449
17.4.4 買賣Token450
17.4.5 小結451
17.5 ERC20代幣擴展實例451
17.5.1 初始化項目451
17.5.2 添加三方庫合約452
17.5.3 代幣合約的邏輯實現460
17.5.4 代幣合約的部署465
序: