區塊鏈入門 === https://hackmd.io/p/ryBUHHXff#/ ---- <img src="https://i.imgur.com/7px5IND.png" style="width:200px;height:200px;border-radius:50%"/> ### [李家安](https://www.facebook.com/calee0219) ##### 交大資工 大三 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)網路系統。 * 沒有中央服務器 * 所有節點共同維護帳本 * 透過<span style="color:red">**挖礦**</span>來獲取比特幣。 ---- ### 比特幣是要解決什麼問題 ? * 雙重支付 (雙花) * 不可竄改 * 錢的真實性,非偽造 - 利用基於密碼學的<span style="color:green">**數位簽章**</span> * 以往<span style="color:red">**中心化銀行**</span>的存在,容易遭受駭客攻擊 * 分佈式計算的難題 - 拜占庭將軍問題 ---- ![](https://i.imgur.com/dE9hN1g.png =600x400) ---- ### Time line - 1983 [ecash](http://www.hit.bme.hu/~buttyan/courses/BMEVIHIM219/2009/Chaum.BlindSigForPayment.1982.PDF),首個匿名化的數字加密貨幣,非分散式 - 1997 [Hashcash](http://en.wikipedia.org/wiki/Hashcash),解決郵件系統中 DoS 攻擊問題,首次提出 PoW - 1998 [B-money](http://www.weidai.com/bmoney.txt),將 PoW 引入數字貨幣生成過程中,首個面向去中心化設計的數字貨幣,未能實現 - 2008/10/31 [Bitcoin](https://bitcoin.org/zh_TW/): 化名 Satoshi Nakamoto (中本聪),提出: A Peer-to-Peer Electronic Cash System - 2009 Bitcoin 公開代碼,1/3 正式生成[創世區塊](https://blockchain.info/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f) ---- - 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 誕生](https://moneroblocks.info/search/1) - 2015/7/30: Ethereum [創世區塊](https://etherscan.io/block/0) - 2016/10/28: [z-cash 上線](https://explorer.zcha.in/blocks/00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08) ---- - 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 走勢](https://i.imgur.com/9ihQrjC.png) --- ## [拜占庭問題](https://yeasy.gitbooks.io/blockchain_guide/content/distribute_system/bft.html) ---- ### 中國將軍問題 - 在戰場上,有兩個將軍用通訊的方式,要討論該進攻還是撤退,訊息是透過信使傳遞,中皆有可能迷路、掉包、被假造,該如何約定一個協定,可以確保就算遇到這樣的問題,還是可以達成協定 ---- ### 拜占庭(將軍)問題 - 假設有**一組**將軍,各自統領著拜占庭軍隊的一部分,包圍了一個敵軍城市。將軍之間只能靠信使進行通訊。但為了攻占這個城市,他們必須就作戰計劃達成一致。 問題在於,一個或多個將軍已可能發生叛變,並試圖誤傳信息以破壞作戰計劃。 - 因此問題是:如何讓忠誠的將軍,達成行動一致性;以及,這支軍隊可存在多少已叛變的將軍而仍可正常地統一作戰? ---- ### 拜占庭(將軍)問題 - 拜占庭問題之所以難解,在於任何時候系統中都可能存在多個提案 - 比特幣的區塊鍊網絡在設計時提出了創新的 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 ---- ![](https://upload.wikimedia.org/wikipedia/commons/d/da/Hash_function.svg) ---- ### 密碼 (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 簽章 - 簽名時,文件與私鑰簽章一起送出 - 驗證時,用公鑰還原簽章,看看還原解果是否與文件相符合 - ![](http://www.tsnien.idv.tw/Security_WebBook/Security_%E6%8F%92%E5%9C%96/%E5%9C%96%207-1.png) ---- ### 橢圓曲線 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$ ---- ![](https://i.imgur.com/nT8sxsu.png =650x) --- ## 區塊鏈細節 ---- ### 私鑰、公鑰、地址、錢包 - 交易雙方、礦工 需要 (才能收錢啊 XDD) - 錢包是內涵 私鑰、公鑰、地址 的應用程序 (非必要) - Base58Check ---- ### 挖礦是什麼 ? * HASH(要存的value+要猜的nounce),要符合條件 * 解決數學上的難題(SHA-256),以太幣為 SHA-3 * 同時驗證交易 * 由系統給予挖礦者比特幣當作獎勵 * 動態調整難度 * 平均每10分鐘會有新的區塊出現 ,以太幣大約15秒 ---- ### POW (Proof Of Work) 工作量證明 * 共識決演算法 * 非中本聰首創 * 決定區塊鍊產生分叉(fork),要跟隨哪條鏈。 ---- ### Transcation (Tx 交易) * 分成輸入和輸出 * 每筆的輸入都是之前的輸出 * 可以有多個輸入和多個輸出。 * 通常輸入的總和會大於輸出,中間的差額為給礦工的手續費。 * 通常越高手續費的交易會越快被驗證 * 沒辦法退款 ,只可以進行反向交易 * <span style="color:red">支出者</span>用<span style="color:red">私鑰</span>對輸入進行數位簽章 * 支出者用<span style="color:red">接受者</span>的<span style="color:red">公鑰</span>包裝輸出 ---- ### Transcation Example ![](https://i.imgur.com/geUD8Eu.png =600x400) ---- ![](https://i.imgur.com/JJAayIb.jpg =600x400) ---- ![](https://i.imgur.com/l2ig9sB.png =600x400) ---- ![](https://i.imgur.com/FlrEoSg.png =600x400) ---- ![](https://i.imgur.com/Mfa6jqn.png =600x400) ---- ![](https://i.imgur.com/JDr5zTc.png =600x400) ---- ### 如何避免被竄改 * 每個區塊都會跟前一個區塊有關,行成一條鍊。 * 因此更改一個區塊,之後的區塊也要跟著修改 * 交易被收入區塊,過了60分鐘通常就會認為已經無法竄改,即6個區塊的時間。 ---- ### 交易竄改和深度的關係 #### 越<span style="color:red">深</span>的區塊越難竄改 ![](https://i.imgur.com/ddlIwXx.png =600x400) 如果改277316 , 277317 和277318 都要有對應的修改。 ---- ![](https://i.imgur.com/LPRRQgB.png) ---- ### 隱密性 每筆的交易都是<span style="color:red">公開</span>,且網路上有多份相同的帳本,這樣何來的隱密性呢? * 一個人可以持有多個公開地址。 * 只要別把錢換成現實貨幣,沒人可以知道這個地址是誰所擁有的。 * 因此近年勒索軟體又開始復甦,也是因為比特幣(或模仿幣)。 --- ### 區塊鏈的更多應用 - bitcoin script - ethereum smart contract - ICO - telegram / Steemit - 詐欺 (X - ... --- ## 挖礦 ---- ### 需要 - 挖況軟體 (nicehash, geth, xmr-stack, RDD) - 地址 - 硬體 (PC, 顯卡, cpu) ---- ### 礦池 - http://minexmr.com/ - https://zcash.flypool.org - https://whl-tw.gpumine.org/ - https://eth-tw.gpumine.org/ ---- ### 節點 ![](https://i.imgur.com/FKrwpvB.png =400x) ---- ### 買幣(投資) - 認識的人 - [Maicoin](https://www.maicoin.com/) - [BitoEX](https://www.bitoex.com) - [Bitexc](https://www.bitexc.com/) - ... ---- ### 資訊 - [BLOCKCHAIN](https://blockchain.info/) - [Etherscan](https://etherscan.io/) - XXX explorer --- ## 參考資料 - wiki - mastering in bitcoin - [Merkle Tree](https://www.cnblogs.com/fengzhiwu/p/5524324.html) - 比特币开发者指南 - 区块链技术指南 - 區塊鏈開發指南 - [理解區塊鏈,不能不知道密碼學](https://www.hbrtaiwan.com/article_content_AR0007296.html) - [區塊鏈如何運作](https://medium.com/@benzwjian/%E5%8D%80%E5%A1%8A%E9%8F%88%E5%A6%82%E4%BD%95%E9%81%8B%E4%BD%9C-b7c8d4131a0e) - 國網中心 葉羅堯 博士 - [其他資源](https://hackmd.io/c/HyecE78AZW/https%3A%2F%2Fhackmd.io%2FGYJg7AHAhsCMCmBaAnCCATRAWEAGArIlLurogGwJgDMI8E1ywuQA)
{"metaMigratedAt":"2023-06-14T15:12:44.638Z","metaMigratedFrom":"YAML","title":"區塊鏈入門","breaks":true,"lang":"zh-tw","dir":"ltr","robots":"index, follow","GA":"UA-100433652-1","disqus":"calee","contributors":"[]"}
    1607 views