555萬元起BMW新車狂傲上市 贊助
2021-04-20 09:50:02PChome書店

區塊鏈生存指南:帶你用Python寫出區塊鏈!(iT邦幫忙鐵人賽系列書)


區塊鏈生存指南:帶你用Python寫出區塊鏈!(iT邦幫忙鐵人賽系列書)
作者:李耕銘 出版社:博碩文化 出版日期:2021-03-05 00:00:00

<內容簡介>

一本手把手教你用Python刻出區塊鏈的技術書,想了解區塊鏈背後的原理?就從挽起袖子寫程式開始!

手把手教學:你也可以寫出跑得動的區塊鏈!
實用密碼學:Merkle Tree、非對稱加密、零知識證明是怎麼做的?
共識與分岔:暫時性分岔、軟分岔、硬分岔有甚麼區分?
礦工的世界:扣塊攻擊怎麼做?機槍池的原理是甚麼?

本書內容改編自第 11 屆iT 邦幫忙鐵人賽的Blockchain 組冠軍系列文章,也是第一本從技術角度出發,透過實地撰寫區塊鏈開始談背後所應用到的相關知識。在完整復刻出區塊鏈後,更能了解到區塊鏈世界裡常聽到的幾個專有名詞:女巫攻擊、共識演算法、軟分岔與硬分岔、工作量證明、非對稱加密的由來。
“What I cannot create, I do not understand” - Richard Feynman

五大重點:
1.用 Python 從頭打造區塊鏈
本書重點在於從復刻出區塊鏈開始,帶你逐步了解開設錢包、發起並簽署交易、節點廣播的功能是如何被實作出來的,並透過實作過程中的細節來了解到區塊鏈背後需要哪些知識。

2.密碼學初探
虛擬貨幣之所以常被稱為加密貨幣就是因為應用了大量的密碼學,也是因為密碼學我們才能夠在茫茫的網路世界中確認彼此的身分!

3.聊聊挖礦的兩三事
帶你實地加入礦工們的世界,來看看礦工與礦池間又有哪些鉤心鬥角的方式!

4.P2P網路入門
在去中心化的世界中,我們如何知道彼此的身分?又如何形塑出一樣的共識?在求取共識的過程中,分岔又是怎麼形成的?

5.淺談現實中的區塊鏈:BTC與Ethereum
現在最知名的兩大公鏈莫過於比特幣(BTC)與乙太坊(ETH)了!除了講述區塊鏈的原理之外,本書最後也會帶你解析與走過比特幣與乙太坊的發展歷程與架構。

本書範例檔下載網址:
https://github.com/lkm543/Blockchain_Survival_Guide

★目錄:

Chapter 01 前言:區塊鏈的誕生
1-1 用共識來信任
1-2 你的錢不是你的錢
1-3 Be your own bank
1-4 本書的架構

Chapter 02 打造一個簡易的區塊鏈
2-1 定義格式與架構
→交易的組成
→區塊鏈架構
2-2 產生創世塊與挖掘新區塊
→產生雜湊值(Hash)
→產生創世塊(genesis block)
→放置交易紀錄至新區塊中
→挖掘新區塊
→現在遇到的問題
2-3 難度調整與確認雜湊鏈
→調整挖掘難度
→計算帳戶餘額
→確認雜湊值是否正確
→測試一下
→目前的問題
2-4 公、私鑰與簽章
→非對稱式加密
→一個交易經過了哪些步驟?
→利用 RSA 加密產生公、私鑰與地址
→利用產生的公私鑰簽章後發送交易
→試著跑起整個鏈並發起交易
→目前的問題
2-5 節點與使用者的溝通
→前置作業
→Socket
→Thread
→Bitcoin 中的 Socket 與 Thread
→節點與客戶端的功能
→產生錢包地址與公私鑰
→初始化交易
→簽章交易
→控制流程
→實際操作
→查詢餘額
→發起交易
→確認是否有收到
2-6 節點間的同步與廣播
→節點的建置
→接受並判別訊息
→接收並驗證廣播的區塊
→如果廣播的區塊驗證通過,改挖掘下一塊
→挖掘到新區塊,廣播給其他節點
→執行我們的區塊鏈與雙節點
→現實中的網路
→網路的延遲
→節點不全然可信(reliable)
→完成簡易的區塊鏈了!

Chapter 03 密碼學初探
3-1 名詞簡介
→編碼
→亂碼
→Big5與UTF-8
→編碼的其他應用
→壓縮
→無失真壓縮
→失真壓縮
→霍夫曼(Hoffman) 編碼
→雜湊
→雜湊在區塊鏈上的功能
→雜湊的其他功能
→雜湊表(Hash Table)
→自製一個簡單的雜湊函數
→加密
→Kerckhoffs's principle(柯克霍夫原則)
3-2 古典加密
→Caesar 加密
→Monoalphabetic 加密
→Vigen?re Cipher aka Polyalphabetic 加密
→One-Time Pad(一次性密碼本)
→Rail-Fence Ciphers(柵欄加密法)
3-3 現代加密? XOR 與 SPN 加密
→稍微現代一點的加密
→XOR Cipher
→Substitution-Permutation Network(SPN)
→SPN 演算法實作
→XOR Cipher
→S-boxes(替換盒)
→P-boxes(排列盒)
→加密:重複 XOR Cipher → S-boxes → P-boxes 的步驟
→解密:把加密的過程倒置過來
→測試一下加解密
→SPN 有滿足 Diffusion 跟 Confusion 嗎?
→SPN 與區塊鏈
→Feistel Cipher
→串流加密 vs 區塊加密
→串流加密
→區塊加密
→Electronic codebook(ECB)
→重放攻擊
→Cipher-block chaining(CBC)
→區塊鏈上的重放攻擊
→現代加密標準
→Data Encryption Standard(DES)
→Triple DES(3DES)
→Advanced Encryption Standard 加密(AES)
→Rijndael 演算法
→編碼、壓縮、雜湊、加密的比較
3-4 Merkle Tree
→為什麼不直接連接(concatenation)所有交易再 Hash?
→Merkle Tree 如何驗證交易
→Second preimage attack
→Bitcoin 中的 Merkle Tree
→Full Node
→SPV(Simplified Payment Verification) Node
3-5 非對稱加密與數位簽章
→對稱與非對稱加密
→對稱式加密
→非對稱式加密
→RSA 加密
→RSA 公私鑰的產生
→RSA 加密
→RSA 解密
→要如何攻擊RSA ?
→橢圓公式(Elliptic Curve Cryptography,ECC)
→橢圓公式概論
→橢圓公式的加法定理
→橢圓公式的離散
→橢圓公式的不可逆
3-6 零知識證明
→沒有隱私的交易
→零知識證明(Zero-Knowledge Proofs)
→同態隱藏(Homomorphic Hidings)
→zk-SNARKs
→犯罪者的溫床
→幾種匿蹤性貨幣

Chapter 04 關於挖礦的兩三事
4-1 原理應用與礦池
→挖礦
→原生的挖礦
→挖礦方式演變
→挖礦硬體
4-2 抗ASIC 演算法
→Bitcoin 被 ASIC 攻陷
→用CPU 挖能挖多少?
→ASIC 帶來極度中心化的疑慮
→Ethereum 如何對抗 ASIC
→Dagger-Hashimoto 演算法
→有向無環圖(Directed Acyclic Graph,DAG)
→Hashimoto 演算法
→Dagger-Hashimoto
→其他種抗 ASIC 演算法
→究竟有沒有必要對抗 ASIC?
4-3 挖礦實戰
→如何開始挖礦
→選擇幣種/ 演算法
→ASIC 挖礦
→GPU 挖礦
→Nicehash 挖礦
→Ethereum 的算力預估
→選擇硬體
→CPU、RAM、SSD、網路
→主機板
→電源供應器(PSU)
→GPU
→選擇作業系統
→選擇挖礦軟體
→實際畫面
4-4 礦工間的戰爭
→壓低成本(電費)
→硬體調校
→契約用電與時間電價
→增加挖礦期望值
→挖空塊
→跳跳池
→跳跳池
→扣塊攻擊

Chapter 05 P2P 網路
5-1 網路架構種類
→傳統的網路架構
→Peer to Peer(P2P)網路
→P2P 網路的難題
→工作的分配
→P2P 網路的分類
→P2P 與區塊鏈
5-2 共識?拜占庭將軍問題
→拜占庭將軍問題
→拜占庭將軍問題與區塊鏈
→拜占庭容錯(BFT)演算法
→證明拜占庭容錯機制
→實用拜占庭容錯(PBFT)
→共識的形成與岔開
5-3 共識未能形成的插曲:暫時性分岔
→暫時性分岔(Temporary Fork)
→Bitcoin 中的最長鏈機制
→Ethereum 中的叔塊(Uncle block) 機制
→叔塊如何被定義
→如何計算叔塊獎勵
→叔塊對整體礦工的利益是好的嗎?
→51% 攻擊
5-4 共識未能形成的插曲:軟分岔與硬分岔
→升級之路上的岔路口
→從社群提案到接受
→BIP(Bitcoin Improvement Proposals)
→EIP(Ethereum Improvement Proposals)
→軟分岔(Soft Fork)
→硬分岔(Hard Fork)
→IFO(Initail Fork Offering)
→歷史上知名的硬分岔
→ETC 的分岔
→BCH 的分岔

Chapter 06 現實中的區塊鏈
6-1 區塊鏈與代幣的發展
→區塊鏈10、20、30
→區塊鏈10 ? Bitcoin
→區塊鏈20 ? Ethereum
→區塊鏈30 ? IOTA?
→區塊鏈上代幣的實務發展
6-2 Bitcoin 與 Ethereum 的交易架構
→Bitcoin 的 UTXO 架構
→UTXO 如何預防雙花攻擊
→UTXO 的優點
→Ethereum 的 Account 架構
→Account 架構如何預防雙花攻擊
→Input Data
→Account 架構的優點
6-3 Bitcoin 的發展與路線之爭
→多重簽名
→隔離驗證(Segregated Witness,Segwit)
→閃電網路(Lightning Network)
6-4 用 Command Line 操作 Bitcoin
→操作 Bitcoin
→圖形化介面
→Bitcoin-core
→環境設定
→啟動與停止
→挖掘新區塊
→發起交易
→手動簽發一筆交易
→查詢 UTXO
→初始化一筆交易
→簽署這筆交易
→多重簽名
6-5 Ethereum 的 EVM 與智能合約
→圖靈完備性
→Ethereum Virtual Machine(EVM)
→Ethereum 的 Gas 機制
→智能合約(Smart Contract)
→Decentralized Application(DAPP)
6-6 基礎智能合約語法
→開發環境與使用
→合約架構
→變數型別
→運算子
→函式撰寫
→常用 contract/library
→智能合約範例
6-7 智能合約的使用與操作
→智能合約
→網頁與 Ethereum 的互動
→Metamask
→Web3js
→初始化並連接節點
→取得錢包餘額
→匯款
→使用智能合約

Chapter 07 踏入虛擬貨幣
7-1 相關媒體
→區塊客
→區塊勢
7-2 購置虛擬貨幣
→代購商
→國內交易所
→國外交易所
→冷錢包
7-3 常見交易方式
7-4 區塊鏈不可能三角
7-5 USDT 是泡沫嗎?

<作者簡介>

李耕銘
電機所畢業後目前不務正業地在台大資工訓練班擔任講師,平時喜歡教學、寫文章、研究基礎科學,幾年前誤打誤撞地踏入區塊鏈的世界,從個人挖礦、開設礦場、寫智能合約都參與過。
現在養了五隻貓,努力過每一天掙罐頭錢。
本書也是作者在資工訓練班開設區塊鏈課程的參考教材。
https://bit.ly/2MINgA7
Email:lkm543@gmail.com