
0人評分過此書
不當礦工當老闆:自己動手開發區塊鏈應用業務
本書收錄於此書展...
區塊鏈技術一網打盡區塊鏈和比特幣概要、各種密碼學原理、零知識證明、以太坊和智慧合約、 Solidity語言入門及進階、實戰各種智慧合約以及DAPP、以太坊錢包開發大礦潮時代來臨,你是否有買不到硬體,或是硬體貴森森的困擾?不如趁現在一次把區塊鏈技術弄懂,讓你在挖礦時,能更清楚自己的下一步,在以太坊規則不斷修改的今天,除了利用虛擬貨幣投資致富,更可以利用區塊鏈的原理,跨出礦工或投資的舒適區,開發出自己的應用,甚至建立自己的貨幣。 不當礦工當老闆,從了解區塊鏈、比特幣、加密方法、智慧合約、進一步熟悉Solidity語言,利用Web界面和Vue.js,開發出自己的應用、錢包、智慧合約等。 區塊鏈大潮來襲,加上量子電腦的崛起,整個人類經濟金融體系將面臨天翻地覆的改變,掌握更多核心技術,才能渡過風暴,甚至找到更多的財務自由的機會。 本書特色 ●故事引人入勝複雜深奧的區塊鏈技術概念,透過生動有趣的故事講解,立刻融會貫通。 ●Solidity由淺入深、完整講解智慧合約語言Solidity兩大篇章,涵蓋入門及進階,迅速脫離新手村。 ●ERC標準一次搞懂 ERC165、ERC1820、ERC777、ERC20……,ERC大家族集結,一次解決。 ●豐富的程式碼、圖表範例解說本書內含豐富的程式碼以及圖表,吸收快、有成效,學習事半功倍! 本書技術內容 ●區塊鏈和比特幣概要 ●各種密碼學原理 ●零知識證明 ●以太坊和智慧合約 ●Solidity語言入門及進階 ●實戰各種智慧合約 ●實戰DAPP ●以太坊錢包開發
-
01 區塊鏈概要
-
1.1 區塊鏈誕生之前
-
1.2 區塊鏈的誕生標示──比特幣
-
1.3 比特幣之後的區塊鏈
-
1.3.1 比特幣與區塊鏈的分離
-
1.3.2 智慧合約
-
-
1.4 分散式系統
-
1.5 什麼是區塊鏈
-
1.6 代幣是什麼
-
1.7 什麼是區塊
-
1.7.1 區塊是怎麼產生的
-
1.7.2 區塊生成時間
-
-
1.8 區塊鏈的硬分叉
-
1.9 區塊鏈的去中心化
-
1.10 區塊鏈的主要種類
-
1.10.1 公鏈(public blockchain)
-
1.10.2 私鏈(private blockchain)
-
1.10.3 聯盟鏈(consortium blockchain)
-
-
1.11 加密貨幣
-
1.12 智慧合約(smart contract)
-
1.12.1 什麼是智慧合約
-
1.12.2 智慧合約的實現方式
-
-
1.13 區塊鏈應用
-
1.13.1 金融服務
-
1.13.2 遊戲
-
1.13.3 數位資產
-
1.13.4 供應鏈管理
-
1.13.5 其他
-
-
1.14 比特幣的歷史
-
1.14.1 比特幣前傳
-
1.14.2 比特幣面世
-
1.14.3 比特幣發展中的主要事件
-
-
1.15 比特幣的設計取捨
-
1.15.1 區塊鏈
-
1.15.2 共識演算法
-
1.15.3 比特幣中的交易
-
1.15.4 比特幣的供應模式
-
1.15.5 去中心化與中心化
-
1.15.6 可替換性
-
-
-
02 密碼學基礎
-
2.1 密碼學發展歷史
-
2.1.1 密碼學發展的三個階段
-
2.1.2 近代密碼學的開端
-
2.1.3 區塊鏈去中心化金鑰共用
-
-
2.2 密碼系統
-
2.2.1 定義
-
2.2.2 對稱加密
-
2.2.3 非對稱加密
-
-
2.3 區塊鏈常用密碼學知識
-
2.3.1 Hash(雜湊)演算法
-
2.3.2 RSA演算法
-
2.3.3 默克爾樹
-
2.3.4 數位簽章
-
2.3.5 零知識證明和Zcash
-
-
2.4 加密貨幣
-
2.4.1 什麼是加密貨幣
-
2.4.2 熱門加密貨幣
-
2.4.3 運作方式
-
2.4.4 加密貨幣的安全性
-
-
2.5 加密經濟學
-
2.5.1 貨幣的功能
-
2.5.2 貨幣的屬性
-
2.5.3 貨幣的種類
-
2.5.4 Fiat 貨幣
-
2.5.5 比特幣有貨幣屬性嗎
-
2.5.6 加密貨幣經濟的未來
-
-
2.6 比特幣中的密碼學
-
2.6.1 比特幣中的雜湊處理
-
2.6.2 比特幣中的公開金鑰加密
-
2.6.3 比特幣中的錢包和數位簽章
-
-
-
03 零知識證明
-
3.1 拋磚引玉:初識零知識證明
-
3.1.1 為什麼會有零知識證明?
-
3.1.2 簡述零知識證明在區塊鏈中的應用
-
-
3.2 零知識證明使用場景案例
-
3.2.1 場景一:萬聖節糖果
-
3.2.2 場景二:洞穴
-
3.2.3 場景三:數獨挑戰
-
3.2.4 場景四:一個「真實世界中」的案例
-
-
3.3 零知識證明的應用發展
-
3.3.1 區塊鏈擴充的挑戰
-
3.3.2 ZK Sync 的承諾:免信任、保密、快速
-
3.3.3 RedShift:透明的通用SNARK
-
-
3.4 libsnark 開放原始碼實踐簡介
-
3.5 術語介紹
-
-
04 進入以太坊世界
-
4.1 以太坊概述
-
4.2 智慧合約
-
4.3 帳戶
-
4.4 以太幣的單位
-
4.5 以太坊虛擬機器(EVM)
-
4.6 以太坊用戶端
-
4.6.1 geth 安裝
-
4.6.2 geth 使用
-
-
4.7 以太坊錢包
-
4.8 以太坊交易
-
4.8.1 價值傳遞
-
4.8.2 創建智慧合約
-
4.8.3 呼叫合約方法
-
-
4.9 以太坊網路
-
4.9.1 主網網路(Mainnet)
-
4.9.2 測試網路(Testnet)
-
4.9.3 私有網路、開發者模式
-
4.9.4 模擬區塊鏈網路
-
-
4.10 以太坊歷史回顧
-
4.10.1 奧林匹克(Olympic)
-
4.10.2 邊疆(Frontier)
-
4.10.3 家園(Homestead)
-
4.10.4 DAO 分叉
-
4.10.5 拜占庭(Byzantium)
-
4.10.6 君士坦丁堡(Constantinople)
-
4.10.7 伊斯坦堡(Istanbul)
-
4.10.8 以太坊2.0
-
-
-
05 探索智慧合約
-
5.1 Remix IDE
-
5.2 MetaMask
-
5.2.1 安裝MetaMask
-
5.2.2 設定MetaMask 帳號
-
5.2.3 為帳號充值以太幣
-
-
5.3 合約編寫
-
5.4 合約編譯
-
5.5 合約部署及運行
-
5.5.1 部署JavaScript VM
-
5.5.2 部署到以太坊網路
-
-
5.6 合約內容
-
5.6.1 編譯器版本宣告
-
5.6.2 定義合約
-
5.6.3 狀態變數
-
5.6.4 合約函數
-
-
-
06 Solidity語言基礎
-
6.1 Solidity資料類型
-
6.1.1 數值類型
-
6.1.2 整數
-
6.1.3 地址類型
-
6.1.4 合約類型
-
6.1.5 函數類型
-
6.1.6 參考類型
-
6.1.7 陣列
-
6.1.8 映射
-
6.1.9 結構
-
-
6.2 合約
-
6.2.1 可見性
-
6.2.2 建構函數
-
6.2.3 使用new創建合約
-
6.2.4 constant狀態常數
-
6.2.5 immutable不可變數
-
6.2.6 視圖函數
-
6.2.7 純函數
-
6.2.8 存取器函數(getter)
-
6.2.9 receive函數(接收函數)
-
6.2.10 fallback函數(回覆函數)
-
6.2.11 函數修改器
-
6.2.12 函數多載(Function Overloading)
-
6.2.13 函數返回多個值
-
6.2.14 事件
-
-
6.3 錯誤處理及異常
-
6.3.1 錯誤處理函數
-
6.3.2 require還是assert?
-
6.3.3 try/catch
-
-
-
07 Solidity進階
-
7.1 合約繼承
-
7.1.1 多重繼承
-
7.1.2 基礎類別建構函數
-
7.1.3 抽象合約
-
7.1.4 函數重新定義(overriding)
-
-
7.2 介面
-
7.3 函數庫
-
7.3.1 內嵌函數庫
-
7.3.2 程式庫
-
7.3.3 Using for
-
-
7.4 應用程式二進位介面(ABI)
-
7.4.1 ABI編碼
-
7.4.2 函數選擇器
-
7.4.3 參數編碼
-
7.4.4 ABI介面描述
-
-
7.5 Solidity全域API
-
7.5.1 區塊和交易屬性API
-
7.5.2 ABI編碼及解碼函數API
-
7.5.3 數學和密碼學函數API
-
-
7.6 使用內聯組合語言
-
7.6.1 組合語言基礎概念
-
7.6.2 Solidity 中引入組合語言
-
7.6.3 組合語言變數定義與設定值
-
7.6.4 組合語言中的區塊和作用域
-
7.6.5 組合語言中存取變數
-
7.6.6 for迴圈
-
7.6.7 if判斷敘述
-
7.6.8 組合語言Switch敘述
-
7.6.9 組合語言函數
-
7.6.10 元組
-
7.6.11 組合語言缺點
-
-
-
08 智慧合約實戰
-
8.1 OpenZeppelin
-
8.2 SafeMath安全算數運算
-
8.3 地址工具
-
8.4 ERC165介面發現
-
8.5 ERC20代幣
-
8.6 ERC777功能型代幣
-
8.6.1 ERC1820介面登錄檔
-
8.6.2 ERC777標準
-
8.6.3 ERC777實現
-
8.6.4 實現鉤子函數
-
-
8.7 ERC721
-
8.7.1 ERC721代幣規範
-
8.7.2 ERC721實現
-
-
8.8 簡單的支付通道
-
8.8.1 創建支付通道智慧合約
-
8.8.2 支付簽名
-
-
-
09 去中心化DAPP實戰
-
9.1 什麼是DAPP
-
9.2 Web3.js
-
9.2.1 Web3.js簡介
-
9.2.2 引入Web3.js
-
9.2.3 用web3.js跟合約互動
-
-
9.3 DAPP開發工具
-
9.3.1 Truffle
-
9.3.2 Ganache
-
-
9.4 DAPP投票應用
-
9.4.1 投票應用需求
-
9.4.2 創建專案
-
9.4.3 編寫智慧合約
-
9.4.4 合約編譯及部署
-
9.4.5 合約部署
-
9.4.6 執行部署
-
9.4.7 合約測試
-
9.4.8 編寫應用前端
-
9.4.9 前端與合約互動
-
9.4.10 運行DAPP
-
9.4.11 部署到公網伺服器
-
-
9.5 使用Vue.js開發眾籌DAPP
-
9.5.1 Vue.js簡介
-
9.5.2 眾籌需求分析
-
9.5.3 實現眾籌合約
-
9.5.4 合約部署
-
9.5.5 眾籌Web介面實現
-
9.5.6 與眾籌合約互動
-
9.5.7 DAPP運行
-
9.5.8 DAPP發佈
-
-
9.6 後台監聽合約事件
-
9.6.1 Node.js及Express簡介
-
9.6.2 常駐服務監聽合約事件
-
9.6.3 MySQL資料庫環境準備
-
9.6.4 創建資料庫及表
-
9.6.5 監聽資料入庫
-
9.6.6 為前端提供眾籌記錄
-
-
9.7 DAPP去中心化儲存
-
9.7.1 IPFS協定
-
9.7.2 IPFS安裝
-
9.7.3 IPFS初始化
-
9.7.4 上傳檔案到IPFS
-
9.7.5 上傳目錄到IPFS
-
-
9.8 Embark框架
-
9.8.1 Embark概述
-
9.8.2 Embark安裝
-
-
9.9 Embark 重新定義投票DAPP
-
9.9.1 創建Embark專案
-
9.9.2 Embark專案結構
-
9.9.3 編寫合約及部署
-
9.9.4 Embark DashBoard
-
9.9.5 Embark Cockpit
-
9.9.6 Embark Artifacts
-
9.9.7 前端index.html
-
9.9.8 使用Artifacts 與合約互動
-
9.9.9 Embark部署
-
-
-
10 以太坊錢包開發
-
10.1 數位錢包基礎
-
10.2 錢包相關提案
-
10.2.1 BIP32分層推導
-
10.2.2 金鑰路徑及BIP44
-
10.2.3 BIP39
-
10.2.4 生成助記詞
-
10.2.5 用助記詞推導出種子
-
-
10.3 錢包功能
-
10.4 創建錢包帳號
-
10.4.1 隨機數為私密金鑰創建帳號
-
10.4.2 助記詞創建帳號
-
-
10.5 匯入帳號
-
10.5.1 keystore檔案
-
10.5.2 匯出和匯入keystore
-
-
10.6 獲取錢包餘額
-
10.6.1 連接以太坊網路
-
10.6.2 查詢餘額
-
-
10.7 發送交易
-
10.7.1 構造交易
-
10.7.2 交易簽名
-
10.7.3 發送交易
-
10.7.4 Ethers.js發送交易
-
-
10.8 交易ERC20代幣
-
10.8.1 構造合約物件
-
10.8.2 獲取代幣餘額
-
10.8.2 轉移代幣
-
-
- 出版地 : 臺灣
- 語言 : 繁體中文
- DOI : 10.978.9860776/607
評分與評論
請登入後再留言與評分