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
中國將軍問題
在戰場上,有兩個將軍用通訊的方式,要討論該進攻還是撤退,訊息是透過信使傳遞,中皆有可能迷路、掉包、被假造,該如何約定一個協定,可以確保就算遇到這樣的問題,還是可以達成協定
拜占庭(將軍)問題
假設有 一組 將軍,各自統領著拜占庭軍隊的一部分,包圍了一個敵軍城市。將軍之間只能靠信使進行通訊。但為了攻占這個城市,他們必須就作戰計劃達成一致。 問題在於,一個或多個將軍已可能發生叛變,並試圖誤傳信息以破壞作戰計劃。
因此問題是:如何讓忠誠的將軍,達成行動一致性;以及,這支軍隊可存在多少已叛變的將軍而仍可正常地統一作戰?
拜占庭(將軍)問題
拜占庭問題之所以難解,在於任何時候系統中都可能存在多個提案
比特幣的區塊鍊網絡在設計時提出了創新的 PoW(Proof of Work) 算法思路。一個是限制一段時間內整個網絡中出現提案的個數(增加提案成本),另外一個是放寬對最終一致性確認的需求,約定好大家都確認並沿著已知最長的鏈進行拓寬。系統的最終確認是概率意義上的存在。這樣,即便有人試圖惡意破壞,也會付出很大的經濟代價(付出超過系統一半的算力)。
PoW
制一段時間內整個網絡中出現提案的個數(增加提案成本),另外一個是放寬對最終一致性確認的需求,約定好大家都確認並沿著已知最長的鏈進行拓寬。系統的最終確認是概率意義上的存在。這樣,即便有人試圖惡意破壞,也會付出很大的經濟代價(付出超過系統一半的算力)。
用經濟利益避免節點作惡
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)
節點
Resume presentation
區塊鏈入門 https://hackmd.io/p/ryBUHHXff#/
{"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":"[]"}