區塊鏈 && 以太坊
超入門
By Kyle Mo
webui-webui-69584f67df-xg6td
webui-pdf-email-scheduler-66867958c-dlgmc
webui-pdf-email-worker-6bd8965b45-62hrz
WebUI API
webui-pdf-email-webui-86cf64b594-dv2dz
區塊鏈是什麼?
區塊鏈 !== 比特幣
可以先這麼認知區塊鏈
- 去中心化
- 資料不可篡改
- 分散式帳本,記錄著所有交易紀錄
比特幣
2008年,由“中本聰”發布比特幣白皮書
中本聰是誰?
一個人?
一個組織?
有許多人自稱中本聰,如今仍沒有結果
(除非有個人出現,並且可以用第一個創世區塊來轉帳,就可以證明身份)
比特幣
- 基於區塊鏈技術的去中心化虛擬貨幣
- 唯一的功能: 讓全世界任兩個人的交易可以即時發生(不用兌換外幣等繁瑣過程)
- 稱作第一代區塊鏈
- 安全漏洞
- 交易速度慢(全球每秒7筆交易
- 限制總量2100萬顆
- 挖礦機制
- SHA-256雜湊演算法
區塊 && 鏈 && 節點 &&網絡
交易 Transaction
區塊鏈是一個分散式帳本,是由一筆一筆交易組成,對區塊鏈上的資料產生改變都算是一個交易(Transaction),而多筆交易會包含在一個區塊裡,而無數個包含交易的區塊串連再一起則行成區塊鏈。
區塊組成
一個區塊有以下幾個重要元素(當然不只這些):
- Prev Hash
- Nonce
- Data(Tx)
- Hash
- TimeStamp
區塊生命週期
挖礦
還記得前面提到區塊中會有一個 Nonce 嗎?
它就像是 counter ,礦工會迭代 Nonce 的值,看誰先讓區塊的 Hash 值前面出現4個0,即為挖礦成功,區塊成功上鏈,挖礦成功的礦工獲得挖礦獎勵。
讓我們用簡單一點的方式來理解(實際上沒有那麼簡單)
區塊驗證範例
節點
在區塊鏈分散式帳本的系統中,節點(node)是提供、 維護「共同總帳」的單位 ,不同的節點之間以網狀的方式相互連結,成為獨立自主的電腦網路,這個概念我們也可以稱之為「去中心化」。
節點
整個區塊鏈就像是一個共享的分散式總帳,由多個參與的運算節點來共同維護,每個節點也各自擁有一份完整的帳本備份(完整個區塊鏈資料),而其中的每個區塊,就像是帳本的其中一頁,記錄好幾筆不同的交易資訊,這些紀錄都無法經由其中一個節點來竄改。
節點
Geth
從比較常見的例子來說,還記得紅極一時的 BitTorrent (BT),它伴隨了當年仍是窮學生的時光,我們用它來抓一些大型檔案,它的特色是若下載同一檔案的人越多,下載該檔案的速度越快,因為在下載檔案的同時,我們也變成了傳遞這個檔案的節點。所以當我們執行 Geth 之後,本機就會開始去下載區塊鏈的資料,就會變成以太坊網路中的一個節點。
錢包 Wallet
錢包
主要由公鑰與私鑰組成,公鑰相對於 email,是對外公開的,私鑰相對於密碼,擁有私鑰才能對該錢包做操作。
公鑰
私鑰
對稱式加密
非對稱式加密
錢包種類
區塊鏈錢包有分很多種,像是是否有網路連線,保持網路連線的錢包稱「熱錢包」,而只有在使用時才會連線其他時間處於離線狀態的錢包稱為「冷錢包」。在交易所系統下的錢包稱為「中心化錢包」,建立在交易所系統上,由交易所統一管理,假設交易所網站關閉,存在交易所的加密資產也無法取回,中心化錢包是全部錢包中最危險的一個。
區塊鏈專有名詞
- ICO
- 三角悖論
- 51%攻擊
- 女巫攻擊
- 雙重支付
- 礦池
- 軟硬分岔
- 共識算法
ICO
三角悖論
比特幣與乙太坊的選擇就是安全與去中心化(放棄效能)
51%攻擊
當全世界的節點超過一半都是壞人,就有足夠算力可以竄改交易
(發生機率極低)
女巫攻擊
女巫攻擊(Sybil Attack), 是一種在線網路安全系統威脅,是指個人試圖通過創建多個帳户身份,
多個節點或電腦坐標從而控制網絡。
這原理跟創建多個個人社交媒體帳户一樣的- 簡單。
避免方式:提高創造節點的成本,要達成女巫攻擊幾乎要花費天價
雙重支付(雙花攻擊)
礦池 Pool
一群算力沒那麼強的人聚集成一個礦池,提升挖礦成功的機率,得到的挖礦獎勵再等分給礦池的礦工。
軟硬分岔
硬分岔:
- 舊版不承認新版
- 新版遵循舊版規則延伸
- 通常是非常大的變化
ex: 以太坊經典 && 以太坊
軟分岔:
- 舊版承認新版
- 新版遵循舊版規則延伸
- 通常是版本的升級
共識算法
以太坊 Ethereum
-
去中心化應用程式 Dapp
-
以太幣
-
以太虛擬機 Ethereum Virtual Machine
-
智能合約
-
第二代區塊鏈
如何與以太坊互動?
一般人與開發者: MetaMask
開發者: Web3 API
Ganache
truffle
Tool
Solidity程式語言撰寫,語法類似 JavaScript,懂 Ts 的人更能輕易上手,可以把它想成前後端架構的資料庫(當然不能真的這樣想),當我們要對乙太坊的資料
做變動都需要透過合約
來達成。
智能合約
智能合約
contract
ABI
Bytecode
compile
instance
deploy
專案 demo
deck
By oldmo860617
deck
- 346