第一行代碼——以太坊

第一行代碼——以太坊

《第一行代碼——以太坊》是2018年水利水電出版社出版的圖書,作者是李寧。

基本介紹

  • 中文名:第一行代碼——以太坊
  • 作者:李寧
  • 出版時間:2018年09月
  • 出版社:水利水電出版社
  • ISBN:9787517067979
  • 類別:程式設計教材教輔
  • 定價:¥68.00
  • 開本:16 開
  • 裝幀:平裝
編輯推薦,內容簡介,作者簡介,目錄,

編輯推薦

●骨灰級大牛: 51CTO學院金牌講師、CSDN、51CTO部落格專家、寧哥教育創始人、著名碼農李寧親著
●超級學習資源:實打實贈送價值698元JavaScript視頻課程 本書視頻課 全套實驗軟體 全書案例源碼 一對一解答 不定期驚喜
●全棧知識一站搞定:區塊鏈、以太坊、智慧型契約、DApp,從概念到實戰,一站搞定。
●成就感十足:從入門到精通,從理論到實戰,一點一例,輕鬆上手,學習驚喜不斷。

內容簡介

本書是一本區塊鏈開發技術圖書。本書立足實戰,深入淺出地從零開始講解以太坊及相關技術,包括區塊鏈的基礎概念和理論、利用以太坊創建私有區塊鏈、編寫智慧型契約、挖礦、Web3.js API、Solidity語言、Truffle框架、Ganache測試節點等技術。本書力求通俗易懂,實例豐富,步驟詳細。為了幫助讀者鞏固基礎知識,本書*後還配有兩個綜合案例分別實現以太坊在金融領域(發布代幣)和非金融領域(DApp)的套用。
本書適合於區塊鏈技術的學習者及從業者使用。

作者簡介

●歐瑞科技創始人&CEO,寧哥教育創始人&教學總監
51CTO學院金牌講師(已錄製超過1000小時的視頻課程),
●51CTO、CSDN、CNBLOG部落格專家。
●超過15年的企業內訓經驗和開發實戰經驗,曾任國內著名軟體公司項目經理,●目前主要從事區塊鏈、比特幣、人工智慧、大數據、Python、JavaScript、Java、C 、編譯器等技術的研究和開發,現在正在帶領團隊開發支持區塊鏈的跨平台開發系統。
●曾出版超過30多本開發技術暢銷書。
●深厚的一線項目開發功力加上多年的培訓講師經歷,成店堂了李寧老師風趣幽默,條理清晰、通俗易懂、深入淺出、實戰性強的授課特點。他的課程,經常能夠讓學生舉一反三,發散學生的思維,並指引學生髮掘適合自己的學習方法。

目錄

前言
第1章 區塊鏈的基本概念與套用場景
1.1 基本概念1
1.1.1 去中心化套用(DApp) 1
1.1.2 DApp的內部貨幣2
1.1.3 比特幣 2
1.1.4 工作量證明(PoW) 3
1.1.5 股權證明(PoS) 4
1.1.6 51%攻擊 4
1.1.7 以太坊 4
1.1.8 超級賬本項目 5
1.2 區塊鏈的套用場景 5
1.2.1 金融領域6
1.2.2 徵信管理7
1.2.3 資源共享7
1.2.4 物聯網 8
1.2.5 其他領域8
1.3 小結 9
第2章 創建第一個區塊鏈
2.1 以太坊(Ethereum)開發環境搭建 10
2.2 使用geth命令創建以太坊賬戶 13
2.3 刪除以太坊賬戶 15
2.4 gethJavaScript控制台 16
2.5 建立私有區塊鏈與挖礦 18
2.6 小結 21
第3章 智慧型契約基礎
3.1 基礎知識22
3.1.1 Solidity語言概述23
3.1.2 用Solidity語言開發智慧型契約 23
3.1.3 使用Remix運行智慧型契約 24
3.2 編寫和測試智慧型契約 27
3.2.1 安裝本地Remix環境(Windows、Mac OS X和Linux) 27
3.2.2 安裝testrpc28
3.2.3 使用testrpc測試智慧型契約 29
3.2.4 IntellijIDEA Solidity外掛程式 33
3.2.5 將Solidity編譯工具與Intellij IDEA集成 36
3.3 其他智慧型契約IDE 38
3.3.1 VisualStudio擴展 38
3.3.2 VisualStudio Code擴展 40
3.3.3 SublimeText外掛程式 42
3.4 Solidity工具 42
3.4.1 SolidityREPL 42
3.4.2 solgraph43
3.5 小結 45
第4章 以太坊節點與挖礦
4.1 什麼是Web3.js46
4.2 安裝Web3.js47
4.3 連線testrpc節點 48
4.4 連線geth節點 49
4.5 HttpProvider與IPCProvider 51
4.6 發布與調用智慧型契約 53
4.6.1 編譯智慧型契約 53
4.6.2 創建以太坊賬戶 54
4.6.3 用Web3.jsAPI發布智慧型契約 54
4.6.4 挖礦與掙錢56
4.6.5 重新發布智慧型契約 57
4.7 自動編譯智慧型契約 60
4.8 小結 64
第5章 以太坊中的Web技術
5.1 Node.js入門 65
5.1.1 使用Node.jsREPL 66
5.1.2 執行JavaScript腳本檔案 66
5.1.3 Node.jsIDE(WebStorm) 67
5.1.4 在WebStorm中編寫Node.js程式 68
5.2 Express入門 70
5.2.1 安裝express模組 70
5.2.2 使用express模組 72
5.2.3 用WebStorm創建Express工程 74
5.2.4 為Express工程添加路由 76
5.2.5 使用Handlebars模板 78
5.3 通過Web方式調用智慧型契約 78
5.3.1 在Web頁面中調用智慧型契約 79
5.3.2 在服務端(Node.js)調用智慧型契約 84
5.3.3 通過AJAX方式異步調用智慧型契約 88
5.4 小結 90
第6章 Web3.js API詳解
6.1 基礎知識91
6.1.1 Web3.js簡介 91
6.1.2 Web3.js開發環境搭建 92
6.2 Web3 API 93
6.2.1 設定和獲取Provider93
6.2.2 重置狀態94
6.2.3 獲取字元串的SHA3哈希碼 94
6.2.4 將值轉換為十六進制字元串 95
6.2.5 十六進制與ASCII互相轉換 97
6.2.6 十六進制與十進制互相轉換 98
6.2.7 將數值或十六進制字元串轉換為BigNumber 98
6.2.8 使用BigNumber99
6.2.9 單位轉換101
6.2.10 核對賬戶地址是否有效 103
6.3 Web3.ethAPI 104
6.3.1 獲取和設定默認賬戶 104
6.3.2 獲取和設定默認區塊 104
6.3.3 獲取區塊的同步狀態 105
6.3.4 捕捉區塊同步狀態 106
6.3.5 獲取礦工地址 107
6.3.6 檢測當前節點是否在挖礦 108
6.3.7 獲取以太坊燃料(gas)的平均價格 109
6.3.8 獲取以太坊節點中的賬號地址 109
6.3.9 獲取區塊編號 110
6.3.10 獲取賬戶的餘額 112
6.3.11 獲取地址某一個位置存儲的值 113
6.3.12 獲取指定地址中的代碼 113
6.3.13 獲取區塊信息 114
6.3.14 獲取區塊中包含的交易數 116
6.3.15 獲取交易數據 117
6.3.16 獲取交易憑證 118
6.3.17 獲取賬戶傳送的交易數 120
6.3.18 向以太坊網路傳送交易 120
6.3.19 傳送簽名交易 122
6.3.20 用賬戶對數據進行簽名 123
6.3.21 執行以太坊虛擬機中的代碼 124
6.3.22 預估交易消耗的gas數 124
6.3.23 如何設定gas、gasLimit和gasPrice 125
6.4 小結128
第7章 Solidity語言詳解(一)
7.1 Solidity語言簡介129
7.2 Solidity語言基礎130
7.2.1 編譯器版本指令(pragma) 130
7.2.2 導入其他Solidity原始碼
檔案(import) 132
7.2.3 用Web3.jsAPI發布多個智慧型契約 136
7.2.4 用Web3.jsAPI編譯多個智慧型契約 140
7.2.5 注釋142
7.3 值類型142
7.3.1 布爾類型(bool) 143
7.3.2 整數類型(int/uint) 144
7.3.3 浮點數(fixed) 145
7.3.4 地址類型(address) 145
7.3.5 獲取餘額(balance)與轉賬(transfer) 146
7.3.6 另一種轉賬的方式(send) 149
7.3.7 固定長度的位元組序列 150
7.4 引用類型152
7.4.1 數據存儲位置 152
7.4.2 可變長度的位元組序列(bytes) 153
7.4.3 字元串(string)類型 154
7.4.4 使用bytes連線字元串 156
7.4.5 使用第三方庫連線字元串 158
7.4.6 枚舉類型(enum) 159
7.4.7 函式類型(function) 161
7.4.8 數組164
7.4.9 結構體(struct) 168
7.5 映射(mapping) 170
7.6 小結172
第8章 Solidity語言詳解(二)
8.1 表達式與控制結構 173
8.1.1 函式參數與函式返回值 173
8.1.2 控制結構176
8.1.3 調用其他契約中的函式 179
8.1.4 函式的命名參數 181
8.1.5 通過new關鍵字創建契約對象 182
8.1.6 函式多返回值解構和元組賦值 184
8.1.7 變數聲明和作用域 185
8.1.8 錯誤處理186
8.2 計量單位與全局變數 187
8.2.1 以太計量單位 187
8.2.2 時間計量單位 189
8.2.3 block變數190
8.2.4 msg變數191
8.2.5 其他全局變數和函式 193
8.3 智慧型契約194
8.3.1 函式和狀態變數訪問許可權 194
8.3.2 getter函式195
8.3.3 自定義修飾符(modifier) 197
8.3.4 常量201
8.3.5 view函式202
8.3.6 pure函式204
8.3.7 fallback函式205
8.3.8 函式重載206
8.3.9 事件207
8.3.10 契約繼承210
8.3.11 契約構造函式 211
8.3.12 抽象契約211
8.3.13 接口213
8.4 小結214
第9章 Truffle與Ganache實戰
9.1 Truffle基礎215
9.1.1 安裝Truffle215
9.1.2 創建Truffle工程 216
9.1.3 Truffle工程的結構216
9.1.4 在Truffle工程中創建自己的契約 217
9.1.5 編譯契約218
9.1.6 部署契約219
9.1.7 測試契約219
9.2 以太坊客戶端 220
9.2.1 Truffle內置以太坊客戶端 220
9.2.2 Ganache概述221
9.2.3 安裝Ganache221
9.2.4 用Truffle在Ganache上發布契約 222
9.3 Truffle高級套用224
9.3.1 用Solidity編寫測試代碼 224
9.3.2 用JavaScript編寫測試代碼 227
9.3.3 捕捉事件和異常 228
9.3.4 使用truffle-contractAPI調用
契約函式 231
9.3.5 寫Truffle擴展腳本 232
9.4 小結234
第10章 項目實戰:在以太坊上發行數字資產
10.1 數字資產原理 236
10.2 代幣契約239
10.2.1 ERC20Token接口 239
10.2.2 編寫代幣契約 242
10.2.3 測試代幣契約中的函式 245
10.2.4 測試代幣契約中的事件 247
10.3 在以太坊上發布和使用代幣 248
10.3.1 如何將代幣契約部署在以太坊上 249
10.3.2 安裝MetaMask擴展 250
10.3.3 創建以太坊賬戶 251
10.3.4 免費申請無限量的以太(ether) 254
10.3.5 在以太坊上部署代幣契約 257
10.3.6 代幣交易260
10.4 用Web3.jsAPI完成Titans幣的轉賬 265
10.5 以太幣和以太坊代幣的區別 269
10.6 網際網路的未來:DApp 270
10.7 小結271
第11章 項目實戰:支持以太坊的小程式版雲筆記
11.1 項目功能概述 272
11.2 微信小程式基礎 273
11.2.1 搭建小程式開發環境 273
11.2.2 創建小程式項目 275
11.3 雲筆記智慧型契約 277
11.3.1 編寫和測試雲筆記智慧型契約 277
11.3.2 將CloudNoteService契約部署到以太坊網路上 279
11.4 用Note.js和Express開發小程式服務端程式 281
11.4.1 編寫調用CloudNoteService契約函式的Database類 281
11.4.2 測試Database類 289
11.4.3 為服務添加集中式存儲功能 291
11.4.4 添加為小程式服務端路由 294
11.5 開發雲筆記客戶端 296
11.5.1 設計雲筆記主頁面 296
11.5.2 實現雲筆記主頁面的邏輯代碼 298
11.5.3 設計添加雲筆記頁面 300
11.5.4 實現添加雲筆記頁面的邏輯代碼 302
11.5.5 設計雲筆記列表頁面 304
11.5.6 實現雲筆記列表頁面的邏輯代碼 305
11.5.7 設計雲筆記編輯頁面 307
11.5.8 實現雲筆記編輯頁面的邏輯代碼 309
11.6 小結310

熱門詞條

聯絡我們