changed 7 years ago
Published Linked with GitHub

區塊鏈入門

https://hackmd.io/p/ryBUHHXff#/


李家安

交大資工 大三

calee@cs.nctu.edu.tw

  • NCTU CSCC TA
  • 網路安全策進會

Outline

  • 區塊鏈簡史
  • 拜占庭問題
  • hash & Crypto
  • 數位簽章
  • 簡介橢圓曲線
  • 區塊鏈細節
  • ethereum / bitcoin

區塊鏈簡史


$$

  • What is money
  • Why need money
  • How to define money
  • Who can create money

區塊鏈是

  • 自治
  • 可追溯
  • 數字貨幣
  • 分散式賬本
  • 分佈式的點對點(P2P)網路系統。
  • 沒有中央服務器
  • 所有節點共同維護帳本
  • 透過挖礦來獲取比特幣。

比特幣是要解決什麼問題 ?

  • 雙重支付 (雙花)
  • 不可竄改
  • 錢的真實性,非偽造 - 利用基於密碼學的數位簽章
  • 以往中心化銀行的存在,容易遭受駭客攻擊
  • 分佈式計算的難題 - 拜占庭將軍問題


Time line

  • 1983 ecash,首個匿名化的數字加密貨幣,非分散式
  • 1997 Hashcash,解決郵件系統中 DoS 攻擊問題,首次提出 PoW
  • 1998 B-money,將 PoW 引入數字貨幣生成過程中,首個面向去中心化設計的數字貨幣,未能實現
  • 2008/10/31 Bitcoin: 化名 Satoshi Nakamoto (中本聪),提出: A Peer-to-Peer Electronic Cash System
  • 2009 Bitcoin 公開代碼,1/3 正式生成創世區塊

  • 2009/10/31: 第一個區塊鏈交易所出現
  • 2010/5/22: 第一比實體 Bitcoin 交易,用 10,000 BTC 買一塊 pizza
  • 2011/2/9: 1 BTC = 1 USD
  • 2013/11/28: 1 BTC = 1000 USD
  • 2013/12: Ethereum 白皮書
  • 2014/4/18: XMR 誕生
  • 2015/7/30: Ethereum 創世區塊
  • 2016/10/28: z-cash 上線

  • 2017/4/1: 日本宣布 bitcoin 為合法貨幣
  • 2017/5/4: 1 BTC = 1,500 USD
  • 2017/8/2: Bitcoin 硬分叉,Core / Cash
  • 2017/7: Ethereum DOA 事件硬分叉,ETH / ETC
  • 2017/9/2: 1 BTC = 5,000 USD
  • 2017/9/15: 中國封殺 bitcoin,關閉所有中國交易所
  • 2017/12/1: 1 BTC = 10,000 USD

Bitcoin 走勢


拜占庭問題


中國將軍問題

  • 在戰場上,有兩個將軍用通訊的方式,要討論該進攻還是撤退,訊息是透過信使傳遞,中皆有可能迷路、掉包、被假造,該如何約定一個協定,可以確保就算遇到這樣的問題,還是可以達成協定

拜占庭(將軍)問題

  • 假設有一組將軍,各自統領著拜占庭軍隊的一部分,包圍了一個敵軍城市。將軍之間只能靠信使進行通訊。但為了攻占這個城市,他們必須就作戰計劃達成一致。 問題在於,一個或多個將軍已可能發生叛變,並試圖誤傳信息以破壞作戰計劃。
  • 因此問題是:如何讓忠誠的將軍,達成行動一致性;以及,這支軍隊可存在多少已叛變的將軍而仍可正常地統一作戰?

拜占庭(將軍)問題

  • 拜占庭問題之所以難解,在於任何時候系統中都可能存在多個提案
  • 比特幣的區塊鍊網絡在設計時提出了創新的 PoW(Proof of Work) 算法思路。一個是限制一段時間內整個網絡中出現提案的個數(增加提案成本),另外一個是放寬對最終一致性確認的需求,約定好大家都確認並沿著已知最長的鏈進行拓寬。系統的最終確認是概率意義上的存在。這樣,即便有人試圖惡意破壞,也會付出很大的經濟代價(付出超過系統一半的算力)。

PoW

  • 制一段時間內整個網絡中出現提案的個數(增加提案成本),另外一個是放寬對最終一致性確認的需求,約定好大家都確認並沿著已知最長的鏈進行拓寬。系統的最終確認是概率意義上的存在。這樣,即便有人試圖惡意破壞,也會付出很大的經濟代價(付出超過系統一半的算力)。
  • 用經濟利益避免節點作惡

Hash & Crypto


hash function (雜湊)

  • 單方向的 function (不可回推)
  • hash 結果不同,原來的元素一定不同
  • collision (碰撞)
  • ex. mod 2, mod 10, mod 7
  • 常見有:md5, sha-256, sha-512, sha-3,
  • 應用:checksum、MAC、hash table、資料壓縮
  • http://temp.crypo.com/index.htm


密碼 (crypto)

  • crypto != hash,要可以還原
  • 對稱式加密
  • 非對稱式加密

對稱式

  • 加密與解密用同一把 key
  • 速度比較快
  • ex. 凱薩加密

非對稱式

  • 加密與解密用不同把 key
  • (RSA) 有任一把 key (p) 都無法推出另一把 key (q)
  • (ECC) 公鑰無法推出私鑰
  • 用一把 key (p) 可以,也只可以,由另一把 key (q) 解密
  • 定一其中一個是 public key,送給全世界,另一個是 private key 自己保管
  • ex. RSA, ECC

數位簽章

  • public key 加密,private key 簽章
  • 簽名時,文件與私鑰簽章一起送出
  • 驗證時,用公鑰還原簽章,看看還原解果是否與文件相符合

橢圓曲線 ECC

  • 公鑰 = 私鑰 * G
  • G: 生成點,bitcoin 的生成點是固定的
  • secp256k1 標準的橢圓曲線
  • \(y^2=(x^3+7)\) over \(F_p\)
  • \(y^2\mod p = (x^3+7)\mod p\)
  • \(p = 2^{256}-2^{32}-2^9-2^8-2^7-2^6-2^4-1\)
  • 無窮點對 (0)
  • 加法定義\(P_1=P_2+P_3\)
  • \(K=k*G\)


區塊鏈細節


私鑰、公鑰、地址、錢包

  • 交易雙方、礦工 需要 (才能收錢啊 XDD)
  • 錢包是內涵 私鑰、公鑰、地址 的應用程序 (非必要)
  • Base58Check

挖礦是什麼 ?

  • HASH(要存的value+要猜的nounce),要符合條件
  • 解決數學上的難題(SHA-256),以太幣為 SHA-3
  • 同時驗證交易
  • 由系統給予挖礦者比特幣當作獎勵
  • 動態調整難度
  • 平均每10分鐘會有新的區塊出現 ,以太幣大約15秒

POW (Proof Of Work) 工作量證明

  • 共識決演算法
  • 非中本聰首創
  • 決定區塊鍊產生分叉(fork),要跟隨哪條鏈。

Transcation (Tx 交易)

  • 分成輸入和輸出
  • 每筆的輸入都是之前的輸出
  • 可以有多個輸入和多個輸出。
  • 通常輸入的總和會大於輸出,中間的差額為給礦工的手續費。
  • 通常越高手續費的交易會越快被驗證
  • 沒辦法退款 ,只可以進行反向交易
  • 支出者私鑰對輸入進行數位簽章
  • 支出者用接受者公鑰包裝輸出

Transcation Example







如何避免被竄改

  • 每個區塊都會跟前一個區塊有關,行成一條鍊。
  • 因此更改一個區塊,之後的區塊也要跟著修改
  • 交易被收入區塊,過了60分鐘通常就會認為已經無法竄改,即6個區塊的時間。

交易竄改和深度的關係

的區塊越難竄改


如果改277316 , 277317 和277318 都要有對應的修改。



隱密性

每筆的交易都是公開,且網路上有多份相同的帳本,這樣何來的隱密性呢?

  • 一個人可以持有多個公開地址。
  • 只要別把錢換成現實貨幣,沒人可以知道這個地址是誰所擁有的。
  • 因此近年勒索軟體又開始復甦,也是因為比特幣(或模仿幣)。

區塊鏈的更多應用

  • bitcoin script
  • ethereum smart contract
  • ICO
  • telegram / Steemit
  • 詐欺 (X

挖礦


需要

  • 挖況軟體 (nicehash, geth, xmr-stack, RDD)
  • 地址
  • 硬體 (PC, 顯卡, cpu)

礦池


節點


買幣(投資)


資訊


參考資料

Select a repo