Nic Lin
區塊鏈懂不懂
👋HELLO👋
Happy new year and nice to meet you 😁
Nic Lin
• BitoEX 幣託開發⼯程師
• OTCBTC 場外交易所開發⼯程師
Job title 乃⾝外之物
最近收到 Junior developer 應徵的履歷
Junior full stack developer?
🤔
技術⽇新⽉異,頭銜也是
依邏輯推斷,在不久的未來
也許我們會看到
• Junior CTO
• Junior Site Reliability Engineering
• Junior Senior Developer
Junior CEO
單引號的速度是雙引號 2 倍
因為你要多按⼀個 shift 才能打出雙引號 “
區塊鏈不夯了嗎?
其實各國政府都在做⼀些新的嘗試,例如就在「昨天」
全台灣律師證書已於 2020年 1 ⽉ 1 號上區塊鏈
https://lawyerbc.moj.gov.tw/
區塊鏈懂不懂
區塊鏈懂不懂
不懂
對區塊鏈的印象?
在區塊鏈之前我們先聊聊貨幣
貨幣是什麼?
1.
2.
3.
交易媒介
計價單位
價值儲存
1.
2.
3.
4.
以物易物
共識貨幣
貴⾦屬
法幣(紙幣)
法幣⼜和經濟學派有關係
奧地利經濟學派
• 遵守⾦本位原則
• 法幣是黃⾦的替代品,不應該超印
• 建立沒有通貨膨脹的社會
凱恩斯經濟學派
• 通貨膨脹是常態
• 政府舉債⽀出可以促進經濟
通過連續的通貨膨脹,政府可以秘密地、不為⼈知地剝奪⼈⺠的財富
在使多數⼈貧窮的過程中,使少數⼈暴富
-凱恩斯
數位貨幣⾰命
比特幣的出現
• 2009 年
• 限制總量 2100 萬顆
• 獎勵因⾼度遞減
• 挖礦機制
• SHA-256 雜湊演算法
發明者中本聰,⾄今沒⼈知道他的真實⾝份
但⾃稱中本聰的⼈倒是⼀堆
https://www.zhihu.com/question/19982269
誰能預料到七年時間,從披薩到帝寶
那麼,我要如何開⼾呢?
區塊鏈原理(錢包)
區塊鏈原理(錢包)
只要有算法公式就可以隨機產⽣⼀個錢包
錢包地址是公鑰
⽽能操作錢包的是和其配對的私鑰
只要有私鑰,就可以推出公鑰(錢包地址)
那麼有沒有辦法透過公鑰
逆向推出私鑰的值呢? 在我們有⽣之年...
應該滿難的
無論輸入幾個字
得到的結果都是 256 位的 2 進制字串
SHA-256 加密算法
https://emn178.github.io/online-tools/sha256.html
因為輸入的範圍無窮盡
要找到相同匹配的輸出相對困難
SHA-256 加密算法
想找到某地址的密鑰,需窮盡所有字、數字組合,機率⼤概
2^256
SHA-256 加密算法
11579208923731619542357098500868
7907853269984665640564039457584007913129639936 次
SHA-256 加密算法
運算時間
以 Geforce 1080 Ti 顯卡,11.3 算⼒來跑,每個 hash 要跑 3000 次
以每秒鐘 3766666666 個哈希的速度來運算
SHA-256 加密算法
地球上所有的⼈⼀起算,總和時間比地球存在時間還長
所以說錢包私鑰被盜,通常都是透過其他⼿法,很難是「被破解」
• ⼿機、電腦被開後⾨
• ⾃⼰告訴別⼈密碼都怎麼備份
• 存在雲端結果密碼是 password
區塊鏈⽣命週期
區塊鏈原理
區塊鏈就是⼀本帳本
礦⼯們負責驗證交易並記錄帳本
每個區塊緊跟著上⼀個區塊,環環相扣
區塊⽣命週期
區塊⽣命週期
1. 使⽤者發起⼀筆交易
2. 該使⽤者透過私鑰簽署交易,並廣播
3. 節點收到新交易時,會放到池⼦裡等候驗證
4. 各礦⼯節點會在池⼦裡依照⼿續費⾼低進⾏優先打包,開始計算 nonce
5. 成功找到,廣播後獲得獎勵
6. 其他節點放棄計算,同步新的區塊並持續重複以上事情
區塊⽣命週期
1. 使⽤者發起⼀筆交易
2. 該使⽤者透過私鑰簽署交易,並廣播
3. 節點收到新交易時,會放到池⼦裡等候驗證
4. 各礦⼯節點會在池⼦裡依照⼿續費⾼低進⾏優先打包,開始計算 nonce
5. 成功找到,廣播後獲得獎勵
6. 其他節點放棄計算,同步新的區塊並持續重複以上事情
區塊⽣命週期
1. 使⽤者發起⼀筆交易
2. 該使⽤者透過私鑰簽署交易,並廣播
3. 節點收到新交易時,會放到池⼦裡等候驗證
4. 各礦⼯節點會在池⼦裡依照⼿續費⾼低進⾏優先打包,開始計算 nonce
5. 成功找到,廣播後獲得獎勵
6. 其他節點放棄計算,同步新的區塊並持續重複以上事情
區塊⽣命週期
1. 使⽤者發起⼀筆交易
2. 該使⽤者透過私鑰簽署交易,並廣播
3. 節點收到新交易時,會放到池⼦裡等候驗證
4. 各礦⼯節點會在池⼦裡依照⼿續費⾼低進⾏優先打包,開始計算 nonce
5. 成功找到,廣播後獲得獎勵
6. 其他節點放棄計算,同步新的區塊並持續重複以上事情
區塊⽣命週期
1. 使⽤者發起⼀筆交易
2. 該使⽤者透過私鑰簽署交易,並廣播
3. 節點收到新交易時,會放到池⼦裡等候驗證
4. 各礦⼯節點會在池⼦裡依照⼿續費⾼低進⾏優先打包,開始計算 nonce
5. 成功找到,廣播後獲得獎勵
6. 其他節點放棄計算,同步新的區塊並持續重複以上事情
區塊⽣命週期
1. 使⽤者發起⼀筆交易
2. 該使⽤者透過私鑰簽署交易,並廣播
3. 節點收到新交易時,會放到池⼦裡等候驗證
4. 各礦⼯節點會在池⼦裡依照⼿續費⾼低進⾏優先打包,開始計算 nonce
5. 成功找到,廣播後獲得獎勵
6. 其他節點放棄計算,同步新的區塊並持續重複以上事情
挖礦原理⽰範
https://andersbrownworth.com/blockchain/blockchain
nonce = number once
使⽤⼀次的隨機數
51%攻擊
只有在長度最長的交易區塊交易才算數
51%攻擊
假設原本 Block A 轉帳給⼩明要繳學費
51%攻擊
但 Block E ⾺上改寫交易,把學費挪⽤去買 iphone,⽽且迅速挖出兩個區塊
51%攻擊
學費區塊瞬間失效
51%攻擊
基本上只要算的夠快就可以發動攻擊
所以區塊入帳都會確認 confirm 數量達到⼀定數字才安全
51%攻擊
假設有 10% 的壞礦⼯嘗試攻擊
2 次 confirm 確認,壞礦⼯成功率 5.6%
6 次 confirm 確認,壞礦⼯成功率 0.05%
51%攻擊
假設有 40% 的壞礦⼯嘗試攻擊
6 次 confirm 確認,壞礦⼯成功率 50%
51%攻擊
51%攻擊
也就是說,掌握 51% 的算⼒,就可以改寫帳本結果
51%攻擊
51% 算⼒代價太⾼,就算你都開雲服務,規格最⾼
基本上是天價
51%攻擊
區塊分叉
⼀致放棄原有的區塊,改走新規則
區塊分叉
舊有和新的都有⽀持者,分別繼續運⾏
區塊分叉
2016年 - 以太坊 ethereum 的⼀個知名項⽬
The DAO 被⿊客攻擊
損失⼤約 6000萬美元的以太幣 ETH
區塊分叉
當時以太坊團隊就通過硬分叉的⽅式"追回"(回溯)
被盜資產,從⽽令以太坊硬分叉出兩條鏈,原來
的鏈 ETC(ethereum classic)以及新的鏈(ETH)
重放攻擊
重放攻擊最佳的案例就是以太坊硬分叉的時候。
以太坊硬分叉出現了ETH和ETC兩條鏈
兩條鏈上的交易數據結構是完全⼀樣的
因此⼀筆交易在ETH上是有效的, 那它在ETC上同樣會被接受
如何透過區塊鏈賺錢
如何透過區塊鏈賺錢
• 投資交易
• 成為礦⼯
• 成為⼯程師
• 犯罪
挖礦設備
• CPU
• GPU
• ASIC
ASIC 效率太好,業餘礦⼯根本挖不贏
其他像是 ETH 還是有防 ASIC 化
ASIC 礦機專⽤晶片,不挖礦就沒⽤
但 CPU GPU 還可以拿來打電動
現在個⼈想挖礦太晚了,挖礦不在像早期業餘礦⼯也能賺
搬磚
利⽤兩家以上的交易所價差,進⾏機器⼈⾃動搬磚
單向搬磚
A 交易所 USDT 價格 30 元
B 交易所 USDT 價格 31 元
那麼我就可以在 A 買 USDT 去 B 賣
(記得要扣掉兩家的交易⼿續費,才是你的獲利)
三⾓套利搬磚
先鎖定⽬標,假設要賺 ETH
我們看到以下報價
ETH/USD 250
BTC/USD 7000
ETH/BTC 0.03
三⾓套利搬磚
1. 從 ETH/BTC 買入 1 個 ETH 花費 0.03 BTC
2. 從 ETH/USD 賣出 1 ETH 得到 250 USD
3. 從 BTC/USD 買入 0.03 BTC 只要花費 7000 x 0.03 =210 USD
4. 250 - 210 USD 中間的 40 USD 就是獲利部分
⾃動交易機器⼈
網格交易,⾃動低買⾼賣
透過 API 與網格策略,在⼀定區間範圍內,逢低買入,逢⾼賣出
https://reurl.cc/EKDnEA
⾃動交易機器⼈
⾃動交易機器⼈
只要不是⾃⼰寫的機器⼈
都要將 API 交易鑰匙交出去
可能有被盜的風險
投資
ICO (Initial Coin Offering)
⾸次代幣發⾏
指區塊鏈項⽬⽅⾸次向公眾發⾏代幣
募集比特幣、以太坊等主流加密貨幣以獲得項⽬運作的經費。
2017 年 ICO 之亂
遍地開花,隨便⼀個 idea 發個代幣就被暴投
甚⾄最後有幫忙代寫智能合約發代幣的服務跟教學
投資
IFO(Initial Fork Offerings)
⾸次分叉發⾏
指通過分叉比特幣或以太坊等主流加密貨幣⽣成新的代幣後⾸次發⾏
可謂是「站在巨⼈的肩膀上發幣」。
有些 IFO 會預挖代幣,⾃⼰先把鏈跑起來,因為難度低所以偷挖起來
也因為分叉會將算⼒外移,所以有的礦⼯會⾃動判斷簡單的算⼒去挖
前⾯提到礦⼯多出塊難度⾼,所以 IFO 單機版沒難度
投資
STO (Security Token Offering)
安全代幣發⾏,也叫證券化代幣發⾏
指在確定的監管框架下,按照法律法規,⾏政規章的要求
進⾏合法合規的代幣公開發⾏,是ICO的升級版
逐漸往合法合規走,但聽起來靠譜通常都不賺錢
合法合規就是⼀條漫長且政府也要分⼀杯羹的路
投資
IEO(Initial Exchange Offerings)
⾸次交易發⾏
指以交易所為核⼼發⾏代幣;代幣跳過ICO這步
直接上線交易所。 此種募資⽅式基於交易所的背書
結果現在⼀堆服務還有代架交易所系統
經營⼀間虛擬貨幣交易所成本是非常⾼的
交易所⽀援主鏈的幣種,必須 24H 不間斷爬訊息跟同步全節點
是⼀筆相當可觀的費⽤
投資總結
1. Holder 買了放著
2. 機器⼈量化交易
3. 成為早期投資者 (ICO、IFO、STO、IEO)
區塊鏈應⽤
區塊鏈應⽤
花錢儲存⼀個無法被串改湮滅的訊息
https://etherscan.io/tx/0xb1ed364e4333aae1da4a901d5231244ba6a35f9421d4607f7cb90d60bf45578a
區塊鏈應⽤
炒貓咪
https://www.cryptokitties.co/catalogue/latest-cattributes
麥塊
https://www.cryptovoxels.com/
區塊鏈應⽤
老鼠會遊戲
區塊鏈應⽤
1. 區塊鏈 90% 專案不佳
2. ICO 專案超過 50% 都失敗
3. 說好投資礦機,時間到⼈就跑了
4. 什麼冰島上有礦場,缺錢投資礦機,虎爛的
區塊鏈詐騙
虛擬貨幣儲存與交易
錢包種類
• 交易所錢包
• 網⾴錢包
• 紙錢包
• 軟體錢包
• 硬體錢包
Maicoin
https://www.maicoin.com/
幣託 BitoEX
https://www.bitoex.com/
錢包服務的代買代賣
網站報價決定購買或販售價格
1. 通常購買時價格較⾼
2. 賣出時價格較低
虛擬貨幣交易所
Bitfinex
https://www.bitfinex.com/
Binance 幣安
https://www.binance.com/tw
Poloniex
https://poloniex.com/
MAX
https://max.maicoin.com/
幣託 BitoPro
https://www.bitopro.com/
哪⼀個好⽤?
我們再看⼀次⾃我介紹
Nic Lin
• BitoEX 幣託 開發⼯程師
• OTCBTC 場外交易所開發⼯程師
交易所
1. ⾃⾏掛單,由交易所戳合交易
2. 通常有較多交易對可以玩
3. 通常⽀援 API 程式交易
4. 衍⽣性⾦融服務(槓桿、借貸)
虛擬貨幣錢包
網⾴錢包
https://www.myetherwallet.com/
紙錢包
就是把助記詞或密鑰寫在紙上保管
印下來藏好
軟體錢包
https://electrum.org/
軟體錢包
硬體錢包
能夠實體隔離私鑰和網際網路,私鑰存在獨立離線硬體。
硬體錢包
能夠實體隔離私鑰和網際網路,私鑰存在獨立離線硬體。
⼩⼼被拆封過
拿到請重置
常⾒錢包名詞
• 熱錢包:私鑰暴露於連網環境中。

• 冷錢包:鑰匙無法由連網取得。

• 硬體錢包:將私鑰儲存在特製硬體設備,使⽤時交易需在硬體
內部進⾏交易簽署才送出

• 紙錢包:將私鑰QRCODE印出,需要時後再讀入

• 交易所錢包:需要帳號密碼登入網⾴,錢包私鑰掌握在交易所
⼿中,最⽅便也最低安全性。
常⾒錢包名詞
• 熱錢包:私鑰暴露於連網環境中。

• 冷錢包:鑰匙無法由連網取得。

• 硬體錢包:將私鑰儲存在特製硬體設備,使⽤時交易需在硬體
內部進⾏交易簽署才送出

• 紙錢包:將私鑰QRCODE印出,需要時後再讀入

• 交易所錢包:需要帳號密碼登入網⾴,錢包私鑰掌握在交易所
⼿中,最⽅便也最低安全性。
常⾒錢包名詞
• 熱錢包:私鑰暴露於連網環境中。

• 冷錢包:鑰匙無法由連網取得。

• 硬體錢包:將私鑰儲存在特製硬體設備,使⽤時交易需在硬體
內部進⾏交易簽署才送出

• 紙錢包:將私鑰QRCODE印出,需要時後再讀入

• 交易所錢包:需要帳號密碼登入網⾴,錢包私鑰掌握在交易所
⼿中,最⽅便也最低安全性。
常⾒錢包名詞
• 熱錢包:私鑰暴露於連網環境中。

• 冷錢包:鑰匙無法由連網取得。

• 硬體錢包:將私鑰儲存在特製硬體設備,使⽤時交易需在硬體
內部進⾏交易簽署才送出

• 紙錢包:將私鑰QRCODE印出,需要時後再讀入

• 交易所錢包:需要帳號密碼登入網⾴,錢包私鑰掌握在交易所
⼿中,最⽅便也最低安全性。
常⾒錢包名詞
• 熱錢包:私鑰暴露於連網環境中。

• 冷錢包:鑰匙無法由連網取得。

• 硬體錢包:將私鑰儲存在特製硬體設備,使⽤時交易需在硬體
內部進⾏交易簽署才送出

• 紙錢包:將私鑰QRCODE印出,需要時後再讀入

• 交易所錢包:需要帳號密碼登入網⾴,錢包私鑰掌握在交易所
⼿中,最⽅便也最低安全性。
• 交易所錢包
• 網⾴錢包
• 紙錢包
• 軟體錢包
• 硬體錢包
錢包種類
不安全
安全
錢包差異
• 交易所錢包
• 網⾴錢包
• 紙錢包
• 軟體錢包
• 硬體錢包
便利
不便利
錢包差異
• 交易所錢包
• 網⾴錢包
• 紙錢包
• 軟體錢包
• 硬體錢包
如何去交易所偷錢
1.
2.
3.
軟體漏洞
社交⼯程
暴⼒破解
軟體漏洞
除非你是⾼⼿⾃⼰挖,不然就是定時上 CVE 去找已知漏洞
社交⼯程
透過 Email 釣⿂
打電話去客服套出 OOXX
暴⼒破解
假設已知 aaa@gmail.com 在某交易所是⽤⼾
⽤程式⾃動猜密碼,拿個常⾒密碼詞庫⼀個⼀個試
通常所謂駭入都是組合技
1. 看到某帳號常常發相關的⽂,懷疑是交易所內部⼈員,找到他的 EMAIL
2. 拿 EMAIL 去掃最近流出的帳密外洩包,結果找到密碼
3. 不是登入他的交易所,是去登看看類似 github 有沒有團隊的 CODE
4. 從 CODE 裡⾯分析程式架構跟伺服器訊息
5. 摸進伺服器,修改⾃⼰在站上資料
6. 把錢安然轉走
通常所謂駭入都是組合技
1. 看到某帳號常常發相關的⽂,懷疑是交易所內部⼈員,找到他的 EMAIL
2. 拿 EMAIL 去掃最近流出的帳密外洩包,結果找到密碼
3. 不是登入他的交易所,是去登看看類似 github 有沒有團隊的 CODE
4. 從 CODE 裡⾯分析程式架構跟伺服器訊息
5. 摸進伺服器,修改⾃⼰在站上資料
6. 把錢安然轉走
通常所謂駭入都是組合技
1. 看到某帳號常常發相關的⽂,懷疑是交易所內部⼈員,找到他的 EMAIL
2. 拿 EMAIL 去掃最近流出的帳密外洩包,結果找到密碼
3. 不是登入他的交易所,是去登看看類似 github 有沒有團隊的 CODE
4. 從 CODE 裡⾯分析程式架構跟伺服器訊息
5. 摸進伺服器,修改⾃⼰在站上資料
6. 把錢安然轉走
通常所謂駭入都是組合技
1. 看到某帳號常常發相關的⽂,懷疑是交易所內部⼈員,找到他的 EMAIL
2. 拿 EMAIL 去掃最近流出的帳密外洩包,結果找到密碼
3. 不是登入他的交易所,是去登看看類似 github 有沒有團隊的 CODE
4. 從 CODE 裡⾯分析程式架構跟伺服器訊息
5. 摸進伺服器,修改⾃⼰在站上資料
6. 把錢安然轉走
通常所謂駭入都是組合技
1. 看到某帳號常常發相關的⽂,懷疑是交易所內部⼈員,找到他的 EMAIL
2. 拿 EMAIL 去掃最近流出的帳密外洩包,結果找到密碼
3. 不是登入他的交易所,是去登看看類似 github 有沒有團隊的 CODE
4. 從 CODE 裡⾯分析程式架構跟伺服器訊息
5. 摸進伺服器,修改⾃⼰在站上資料
6. 把錢安然轉走
通常所謂駭入都是組合技
1. 看到某帳號常常發相關的⽂,懷疑是交易所內部⼈員,找到他的 EMAIL
2. 拿 EMAIL 去掃最近流出的帳密外洩包,結果找到密碼
3. 不是登入他的交易所,是去登看看類似 github 有沒有團隊的 CODE
4. 從 CODE 裡⾯分析程式架構跟伺服器訊息
5. 摸進伺服器,修改⾃⼰在站上資料
6. 把錢安然轉走
故事通常不會那麼順利,但差不多就是這樣
別講的好像我常常去偷錢
我是寫風控系統的⼯程師,瞭解⼀些可能發⽣的事情是很正常的
區塊鏈⼯作機會
先瞭解交易所都再做什麼,才知道缺哪些⼈才
錢包分配
1. 量產後分配
2. 私鑰加密
爬鏈
帳本更新全節點時,我們要不斷去監聽是否有我們家錢包的動態
資⾦⽔位控管
1. ⽤⼾的錢會往熱錢包集中
2. 熱錢包會將⼀部份的錢挪動⾄冷錢包隔離
風險控制系統
交易規則,防⽌洗錢或詐騙
需要將規則寫成程式碼去判斷
資訊安全
交易所是駭客最喜歡的地⽅
以前到處駭只為了成就感跟證明實⼒
現在駭進去還可以實現財富⾃由
智能合約開發
• 發幣
• 做區塊鏈遊戲
• 錢包⽔位⾃動搬移
產品開發
網站、APP 開發
研發功能讓顧客使⽤,例如「借貸」、「槓桿」、「交易比賽」
爬鏈:錢包⼯程師
風控:後端⼯程師
資安:資安架構師 / DevOps / MIS
產品:前端⼯程師、後端⼯程師、APP⼯程師
智能合約:區塊鏈⼯程師
交易所⼯程結構
⽬前台灣交易所常⽤程式語⾔
1. 後端: Ruby / Go / …
2. 前端: React / Vue
3. APP: React Native
4. 合約: solidity
基本上不管是寫 APP 還是 WEB
通常有技術加上對該領域的熱忱
都能讓你有機會加入該公司
在這裡⾯,智能合約⼯程師通常是最少的
1. 以現況來說需求不⾼
2. 幾乎不允許犯錯
3. 較不容易培育
4. 學習成本⾼
通常開發智能合約在部署以前,都會請類似顧問的⼈來看
產業變化很快,需要不斷追尋新知
我兩年前的玩 ICO 賺錢現在不虧錢就要偷笑了
總結
1. 從貨幣到虛擬貨幣
2. 公鑰和私鑰正是所謂錢包
3. 區塊鏈⽣命週期及挖礦、攻擊、分叉
4. 區塊鏈投資機會
5. 如何去交易所偷錢
6. 區塊鏈⼯作機會
區塊鏈懂不懂
區塊鏈懂不懂
有點懂
如果⽤區塊鏈選總統⼤選
1. 不可竄改
2. 在家或國外躺著投票
3. 公開透明
4. 匿名性⾼
5. 不⽤去投票所監督開票會不會亂喊
優點
1. 政府外包寫的有 Bug 結果被竄改
2. 區塊容量有限,交易速度太慢
3. 區塊鏈誰來主導上線,是否可信
4. 長者不會使⽤
5. 偷到別⼈的私鑰就可以投票
6. 政府發的私鑰如果對應名字,最後也會知道是誰投誰
7. 無法⾏使「被遺忘權」
缺點
還是乖乖出⾨投票唄 🚶
facebook.com/bboyceo
github.com/niclin
blog.niclin.tw
Q&A

區塊鏈懂不懂 (2020/01/02 快樂學程式)